;-)
Public Function modulo_10(sOrigem As String) As String
' Função para cálculo do dígito de auto conferência
Dim iK As Integer ' Contador
Dim iValor As Integer ' Variável para acumular valor
Dim iDigito As Integer ' Variável para o conteúdo de cada posição
iValor = 0
For iK = Len(sOrigem) To 1 Step -2 ' Inicia o laço começando da direita para a esquerda pulando 2 posições
iDigito = (Val(sOrigem) \ (10 ^ (Len(sOrigem) - iK))) Mod 10
If (iDigito * 2) >= 10 Then ' Se a multiplicação for maior ou igual a dez, soma-se os dígitos separadamente
iValor = iValor + (((iDigito * 2) \ 10) + (iDigito * 2) Mod 10)
Else ' Senão, multiplica-se e soma-se ao total
iValor = iValor + (iDigito * 2)
End If
If (iK - 1) <= Len(sOrigem) Then
' Se não ultrapassar otamanho da string, soma-se ao total
iDigito = (Val(sOrigem) \ (10 ^ (Len(sOrigem) - (iK - 1)))) Mod 10
iValor = iValor + iDigito
End If
Next iK
modulo_10 = Trim(Str((10 - IIf((iValor Mod 10) = 0, 10, (iValor Mod 10)))))
' Retorna o DAC
End Function

Nenhum comentário:
Postar um comentário