terça-feira, 29 de dezembro de 2009

Função Modulo 10, para Progress(Datasul), muito usada para calculo de digitos verificadores.


function modulo_10 returns int (valor_calculo as char):

def var i as int.
def var j as int.
def var k as int.
def var count-num as int.
def var vl-num as int.
def var fator as int.
def var soma as int.
def var divide as int.
def var digito as int.

count-num = length(string(valor_calculo)).
j = count-num.
k = 2.
fator = 0.
soma = 0.

do i = 1 to count-num:

vl-num = int(substring(string(valor_calculo), j, 1)).

fator = k * vl-num.

if length(string(fator), "CHARACTER") = 2 then
soma = soma + int(substring(string(fator), 1, 1)) + int(substring(string(fator), 2, 1)).
else
soma = soma + fator.

if k = 2 then
k = 1.
else
k = k + 1.

j = j - 1.

end.

divide = soma modulo 10.
digito = 10 - divide.

/*Observação: se o dígito for igual a 10, será assumido o valor 0*/
if digito = 10 then
digito = 0.

return digito.

end function.

Nenhum comentário:

Postar um comentário