Fórum erro ao executar calculo na SP #60024
23/07/2008
0
Estou com um problema pequei essa SP na net so q nao consigo encontrar o erro, todo CNPJ q coloco retorna somente falso, onde sera q esta o erro??? agradeco t++
CREATE PROCEDURE VALIDACGC (STR varchar(14))
returns(CGC CHAR(1) –variável que será retornada)
AS
declare variable I integer;
declare variable J integer;
declare variable X integer;
declare variable Y integer;
declare variable D1 integer;
declare variable D2 integer;
declare variable FATOR integer;
declare variable CALCULADO char(2);
declare variable DIGITADO char(2);
begin
-- Preparação para cálculo do D1
I=strlen(STR); --tamanho da string
X=I-2;
J=1; FATOR=2; D1=0;
while (J<=I-2)do
begin
/*
substrlen(STR,X,1)=pegar a partir da posição X, 1 caracter
cast(substrlen(STR,X,1)as integer)= converte para inteiro
*/
D1=D1+cast(substrlen(STR,X,1)as integer)*FATOR;
J=J+1; X=X-1; FATOR=FATOR+1;
end
D1=11-(mod(D1,11));
if (D1>=10) then D1=0;
--Preparação para cálculo do D2
J=3; D2=0; Y=I-2;
while (J<=I)do
begin
D2=D2+cast(substrlen(STR,Y,1)as integer)*J;
J=J+1; Y=Y-1;
end
D2=D2+D1*2;
D2=11-(mod(D2,11));
if (D2>=10) then D2=0;
--Preparação para validação do CGC
CALCULADO=cast(D1 as char)||cast(D2 as char); --concatenar os D1 e D2
DIGITADO=substrlen(STR,13,1)||substrlen(STR,14,1); --concatenar o dig. do CPF
--Comparar os dois
if (CALCULADO=DIGITADO) then CGC=´V´;
else CGC=´F´;
suspend;
end
CREATE PROCEDURE VALIDACGC (STR varchar(14))
returns(CGC CHAR(1) –variável que será retornada)
AS
declare variable I integer;
declare variable J integer;
declare variable X integer;
declare variable Y integer;
declare variable D1 integer;
declare variable D2 integer;
declare variable FATOR integer;
declare variable CALCULADO char(2);
declare variable DIGITADO char(2);
begin
-- Preparação para cálculo do D1
I=strlen(STR); --tamanho da string
X=I-2;
J=1; FATOR=2; D1=0;
while (J<=I-2)do
begin
/*
substrlen(STR,X,1)=pegar a partir da posição X, 1 caracter
cast(substrlen(STR,X,1)as integer)= converte para inteiro
*/
D1=D1+cast(substrlen(STR,X,1)as integer)*FATOR;
J=J+1; X=X-1; FATOR=FATOR+1;
end
D1=11-(mod(D1,11));
if (D1>=10) then D1=0;
--Preparação para cálculo do D2
J=3; D2=0; Y=I-2;
while (J<=I)do
begin
D2=D2+cast(substrlen(STR,Y,1)as integer)*J;
J=J+1; Y=Y-1;
end
D2=D2+D1*2;
D2=11-(mod(D2,11));
if (D2>=10) then D2=0;
--Preparação para validação do CGC
CALCULADO=cast(D1 as char)||cast(D2 as char); --concatenar os D1 e D2
DIGITADO=substrlen(STR,13,1)||substrlen(STR,14,1); --concatenar o dig. do CPF
--Comparar os dois
if (CALCULADO=DIGITADO) then CGC=´V´;
else CGC=´F´;
suspend;
end
Eltontlms
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)