Validar Cpf, Cnpj

Discussão em 'Progress 4GL' iniciado por lunho, Abril 5, 2012.

  1. lunho

    lunho Membro Participativo

    Tarde galera.
    Alguem sabe de uma include ou procedure pra validar CPF E CNPJ.
    não uso Datasul, é desenvolvimento próprio na empresa.
    Abraço e Feliz Páscoa a Todos!
  2. felix

    felix Membro Participativo

    Boa Tarde,

    Tente o codigo abaixo e veja se te ajuda:

    define output parameter calculadigito as character.
    define output parameter calculado as character.
    define input parameter cgc as character.

    define variable l as integer initial 0.
    define variable n as character.
    define variable i as integer initial 0.
    define variable s as integer initial 0.
    define variable p as integer initial 0.
    define variable d as character.
    define variable dc as integer initial 0.

    b-calc:
    repeat on endkey undo b-calc, retry b-calc:

    l = length (cgc).

    if l = 14 then
    do:
    n = substring (cgc,1,(l - 2)).
    calculadigito = substring (cgc,(l - 1),l).
    calculado = "".
    s = 0.
    p = 2.
    do i = length(n) to 1 by -1:
    d = substring (n,i,1).
    s = (p * integer (d) + s).
    p = p + 1.
    if p > 9 then p = 2.
    end.
    dc = (s modulo 11) * -1 + 11.
    if dc > 9 then dc = 0.
    calculado = string(calculado) + string(dc).
    n = n + string(dc).
    s = 0.
    p = 2.
    do i = length(n) to 1 by -1:
    d = substring (n,i,1).
    s = (p * integer (d) + s).
    p = p + 1.
    if p > 9 then p = 2.
    end.
    dc = (s modulo 11) * -1 + 11.
    if dc > 9 then dc = 0.
    calculado = string(calculado) + string(dc).
    end.
    else
    if l = 11 then
    do:
    /* CALCULO DO CPF */
    n = substring (cgc,1,(l - 2)).
    calculadigito = substring (cgc,(l - 1),l).
    calculado = "".
    s = 0.
    p = 2.
    do i = length(n) to 1 by -1:
    d = substring (n,i,1).
    s = (p * integer (d) + s).
    p = p + 1.
    end.
    dc = (s modulo 11) * -1 + 11.
    if dc > 9 then dc = 0.
    calculado = string(calculado) + string(dc).
    n = n + string(dc).
    s = 0.
    p = 2.
    do i = length(n) to 1 by -1:
    d = substring (n,i,1).
    s = (p * integer (d) + s).
    p = p + 1.
    end.
    dc = (s modulo 11) * -1 + 11.
    if dc > 9 then dc = 0.
    calculado = string(calculado) + string(dc).
    end.
    else
    do:
    calculado ="0".
    calculadigito ="1".
    pause 2 message "CGC ou CPF devem conter 14 ou 11 digitos".
    end.

    leave.
    end.
  3. jdchaves

    jdchaves Membro Participativo

  4. lunho

    lunho Membro Participativo

    Valeu pelas respostas !

Compartilhe esta Página