martes, 10 de agosto de 2010

Procedimiento: Cálculo Dígito de Control


Cálculo dígito de control

Teniendo en cuenta que sabemos el código de banco, código de sucursal y numero de cuenta bancaria, este procedimiento nos devolverá el numero de dígito de control:

proc DigitoDeControl(xbanco$=4,xsucursal$=4,xcuenta$=10) : $=2
DCL ctr#(10) ; testigo de control
DCL cadena1$=10 ; cadena para c lculo (entidad+oficina)
DCL suma1%
DCL suma2%
DCL modulo1%,digito1$=1
DCL modulo2%,digito2$=1
DCL xDigitoControl$=2
ENDLOC
CTR(01)=01 :: CTR(02)=02 :: CTR(03)=04 :: CTR(04)=08 :: CTR(05)=05
CTR(06)=10 :: CTR(07)=09 :: CTR(08)=07 :: CTR(09)=03 :: CTR(10)=06
cadena1="00"+xbanco+xsucursal
suma1=0 :: suma2=0
FOR contador=1 TO 10
suma1=suma1+ctr(contador)*CONV(SUBSTR(cadena1,contador,1))
suma2=suma2+ctr(contador)*CONV(SUBSTR(xcuenta,contador,1))
NEXT contador
modulo1=11-CONV(INT(MOD(CONV(suma1),11)))
modulo2=11-CONV(INT(MOD(CONV(suma2),11)))
IF modulo1=10 : modulo1=1
IF modulo1=11 : modulo1=0
IF modulo2=10 : modulo2=1
IF modulo2=11 : modulo2=0
digito1=CONV(modulo1)
digito2=CONV(modulo2)
xDigitoControl=Digito1+Digito2
EXIT (xDigitoControl)
endproc

Sintaxix:

DigitoControl=DigitoDeControl("2100","1000","1234567890")




1 comentario: