;-)
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