> //Recebe uma string e codifica para o Code 128-C
> //Utilizado pelos correios
> //Para se ler um código de Barras usando o padrão 128-C é preciso
> primeiro passar por uma codificação
> //Para utilizar este código precisa da fonte Bcode128.ttf
> //Este código eu peguei na página
> http://www.fpress.com/revista/Num9905/Barras.htm que foi feito em
> FOXPRO e converti para VB
>
> Variáveis declaradas
> -lcCheck C(20)
> -lcRet C(20)
> -lcStart C(20)
> -lcStop C(20)
> -lnl N(10)
> -tcString C(8)
>
> Rules
> -parm(&tcString,&lcRet);
>
> Codigo
>
> &lcStart = chr(105 + 32)
> &lcStop = chr(106 + 32)
> &lnCheckSum = ASC(&lcStart) - 32
>
> &lcRet = TRIM(&tcString)
> &lnLong = LEN(&lcRet)
> //*--- Verifica se a string é PAR - para isso eu pego a tamanho
da
> string e utilizo a função MOD que me retorna 0 ou 1
> // "0" quer dizer que ele é par e "1" quer dizer que é impar
> // se For impar eu completo com ZEROS A ESQUERDA
> IF MOD(&lnLong,2) <> 0
> &lcRet = "0" + &lcRet
> &lnLong = LEN(&lcRet)
> ENDIF
>
> //*--- Converto os caracteres para a Tabela ASCII....Pego em
> pares...
> &lcCar = ""
> FOR &lnI = 1 TO &lnLong STEP 2
> &lcCar = &lcCar + CHR(VAL(substr(&lcRet,&lnI,2)) + 32)
> ENDFOR
> &lcRet = &lcCar
> &lnLong = LEN(&lcRet)
>
> FOR &lnI = 1 TO &lnLong
> &lnAsc = ASC(substr(&lcRet,&lnI,1)) - 32
> &lnCheckSum = &lnCheckSum + (&lnAsc * &lnI)
> ENDFOR
> &lcCheck = CHR(MOD(&lnCheckSum,103) + 32)
> &lcRet = &lcStart + &lcRet + &lcCheck + &lcStop
> //*--- Este é para tirar os espaços e os caracteres inválidos
> &lcRet = STRTRAN(&lcRet, CHR(32), CHR(232))
> &lcRet = STRTRAN(&lcRet, CHR(127), CHR(192))
> //*---
>