1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Modelo Fonte Código EAN

Discussão em 'Outros/Diversos' iniciado por willians.ambrosio, Julho 24, 2015.

  1. willians.ambrosio

    willians.ambrosio Sem Pontuação

    Pessoal como não achei nada na net sobre um código ean 13 em progress, resolvi postar esse modelo para ajudar quando alguém precisar.
    /* ------------ Códigos EAN para testar o último numero é o digito verificador
    7896645900026
    7898908141016
    7893946087173
    7897186015095
    7891060886139
    7898132132019
    7506195185568
    ------------- */
    DEFINE VARIABLE deEAN AS DECIMAL NO-UNDO.
    DEFINE VARIABLE cEAN AS CHARACTER NO-UNDO.
    DEFINE VARIABLE lSeqPar AS LOGICAL NO-UNDO.
    DEFINE VARIABLE iPosicao AS INTEGER NO-UNDO.
    DEFINE VARIABLE iSomaPar AS INTEGER NO-UNDO.
    DEFINE VARIABLE iSomaImpar AS INTEGER NO-UNDO.
    DEFINE VARIABLE iTotalSoma AS INTEGER NO-UNDO.
    DEFINE VARIABLE iDigVerificador AS INTEGER NO-UNDO.
    DEFINE VARIABLE iDifTotalSoma AS INTEGER NO-UNDO.

    /* Código EAN com 12 posições */
    ASSIGN deEAN = 789664590002
    /* Converter para tratar como string */
    cEAN = STRING(deEAN)
    /* Seta posição inicial do código EAN */
    lSeqPar = NO.

    /* Percorrer string para somar as posições par e impar */
    REPEAT iPosicao = 1 TO 12:

    IF lSeqPar THEN
    ASSIGN iSomaPar = iSomaPar + INT(SUBSTRING(cEAN,iPosicao,1))
    lSeqPar = NO.
    ELSE
    ASSIGN iSomaImpar = iSomaImpar + INT(SUBSTRING(cEAN,iPosicao,1))
    lSeqPar = YES.
    END.
    /* Pegar o total das somas das posições pares e multiplicar por 3 */
    ASSIGN iSomaPar = (iSomaPar * 3)
    /* Totalizar os resultados pares e impares */
    iTotalSoma = iSomaImpar + iSomaPar
    /* Variavel Auxiliar para localizar o digito verificador */
    iDifTotalSoma = iTotalSoma
    iDigVerificador = 0.

    /* Verifica se o digito é multiplo de 10 */
    IF (iTotalSoma MOD 10) <> 0 THEN
    DO:
    /* Caso não seja então ir adicionando até encontrar o multiplo de 10 */
    REPEAT:

    ASSIGN iDifTotalSoma = iDifTotalSoma + 1
    iDigVerificador = iDigVerificador + 1.

    IF (iDifTotalSoma MOD 10) = 0 THEN
    LEAVE.
    END.
    END.

    MESSAGE
    /* "iSomaPar " iSomaPar SKIP */
    /* "iSomaImpar " iSomaImpar SKIP */
    /* "iTotalSoma " iTotalSoma SKIP */
    "iDigVerificador " iDigVerificador
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

Compartilhe esta Página