Algoritmia - Digito de chequeo

 
Vista:

Digito de chequeo

Publicado por Jorge Hernan Giraldo Velez (1 intervención) el 19/07/2001 22:48:52
Necesito calcular el numero de chequeo de un nit o rut... la estrucutura es la siguiente:

455899456 X

este valor X es el que deso calcular, se supone que es ql que me permite verificar que el numero (455899456) del nit o rut esta bien digitado.

Mil gracias.
JH
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Digito de chequeo

Publicado por Ing. Fabian Charris D (1 intervención) el 20/07/2001 00:30:25
La sgte es una rutina de dig. de chequeo hecha en PL/SQL (Oracle)
Nota: Ignora la funcion PUNTO, solo valida que no existan letras en el nit.

FUNCTION digito (nit_actual in varchar2) RETURN char IS
i number;
j number;
acum number(16);
dig number;
p number;
pesos char(24);
long number;
digito char(1);
BEGIN
if nit_actual is not null then
if punto(nit_actual) then
acum:=0;
pesos:='030713171923293741434753';
long:=length(nit_actual);
For i in 1..long loop
j := 2*i-1;
p := nvl(to_number(substr(pesos,j,2)),1);
j := long-i+1;
dig := to_number(substr(nit_actual,j,1));
acum := acum + dig*p;
End Loop;
acum:=acum mod 11;
if (acum != 0 and acum != 1) then
acum:=11-acum;
end if;
digito:=to_char(acum);
return(digito);
else
return('*');
end if;
else
return('*');
end if;
End;

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar