create Function BigStringModulo
    (@BigNumString varchar(500),
    @Divisor int)
returns int
as
--blindman, 1/18/2005
--Returns the Modulo value of a large number expressed as a string
--value.
--Does not verify that the string is a valid number!
--The original use of this function was in verfying checkdigits of
--barcode values which exceed the maximum digits allowed by SQL
--Server's BIGINT datatype.
 
--TestVariables
-- declare @BigNumString varchar(500)
-- declare @Divisor int
-- set @BigNumString = '97000000000001'
-- set @Divisor = 2
begin
declare @WorkingString as varchar(500)
declare @CalcString as varchar(7)
set @WorkingString = @BigNumString
set @CalcString = left(@WorkingString, 7)
while (@CalcString > @Divisor) or len(@WorkingString) > len(@Divisor)
begin
    set @WorkingString = right(@WorkingString, len(@WorkingString)                              - len(@CalcString))
    set @WorkingString = cast((@CalcString % @Divisor) as varchar)
                         + @WorkingString
    set @CalcString = left(@WorkingString, 7)
end
--select cast(@CalcString as int)
return cast(@CalcString as int)
end