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!
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.