Que tal uma funcao que verifica os dois?
Segue:
Os parametros são: 1) O número que deseja veriricar (númerico).
2) CGC ou CPF (numerico 1 e 2
respectivamente).
Retorna TRUE se o dígito está correto.
FALSE se o dígito esta incorreto ou se o conteúdo passado é
zero.
Global Declararions
Constants
User
Number: Tipo_CGC = 1
Number: Tipo_CPF = 2
.
.
.
Internal Functions
Function: Valida_CGCPF
Parameters
Number: pnCGCPF
Number: pnTipo
Local variables
Number: lnCont
Number: lnCont2
Number: lnSomaDV
Number: lnMult
Number: lnSize
String: lsDig
String: lsDg
String: lsCGCPF
Actions
If pnCGCPF = 0
Return FALSE
If pnTipo = Tipo_CGC
Set lnSize = 14
Else
Set lnSize = 11
Set lsDig = ''
Set lsCGCPF = SalNumberToStrX( pnCGCPF, 0 )
Set lsCGCPF = SalStrRepeatX( '0', lnSize - SalStrLength(
lsCGCPF ) ) || lsCGCPF
Set lsDg = SalStrRightX( lsCGCPF, 2 )
Set lsCGCPF = SalStrLeftX( lsCGCPF, lnSize - 2 )
Set lnCont2 = 01
While lnCont2 <= 2
Set lnMult = 1
Set lnSomaDV = 0
Set lnCont = SalStrLength( lsCGCPF ) + SalStrLength( lsDig )
While lnCont >= 1
If pnTipo = Tipo_CGC AND lnMult = 9
Set lnMult = 1
Set lnMult = lnMult + 1
Set lnSomaDV = lnSomaDV + ( SalStrToNumber(
SalStrMidX( lsCGCPF || lsDig, lnCont - 1, 1 ) ) * lnMult )
Set lnCont = lnCont - 1
Set lsDig = lsDig || SalStrRightX( SalNumberToStrX(
SalNumberMod( lnSomaDV * 10, 11 ), 0 ), 1 )
Set lnCont2 = lnCont2 + 1
Return lsDig = lsDg
[]'s Pexinho!!!
==============================================
Lista de Centura SQLWindows
Administrador : [EMAIL PROTECTED]
[ http://www.centuraexplorer.com ]
Para sair desta lista mande mensagem para:
[EMAIL PROTECTED] sem nada no Subject e
com o comando a seguir no corpo da msg:
"unsubscribe sqlwin" (sem as aspas)
==============================================