- Code: Select all Expand view
FUNCTION HallaDC(cBanco,cOficina,cCuenta) // cBanco -> CODIGO DEL BANCO (4 Caracteres)
LOCAL aVals := {1,2,4,8,5,10,9,7,3,6} // cOficina -> CODIGO OFICINA (4 Caracteres)
LOCAL nCont,nTot,nRest1,nRest2 // cCuenta -> CODIGO CUENTA (10 Caracteres)
LOCAL cCod := "00"+cBanco+cOficina
nTot := 0
FOR nCont =1 TO 10
nTot += ( VAL(SUBSTR(cCod,nCont,1)) * aVals[nCont] )
NEXT
nRest1 := 11 - (nTot % 11) // COMPLEMENTO A 11
nRest1 := IF(nRest1=11,0,IF(nRest1=10,1,nRest1))
cCod := cCuenta
nTot := 0
FOR nCont =1 TO 10
nTot += ( VAL(SUBSTR(cCod,nCont,1)) * aVals[nCont] )
NEXT
nRest2 := 11 - (nTot % 11) // COMPLEMENTO A 11
nRest2 := IF(nRest2=11,0,IF(nRest2=10,1,nRest2))
RETURN ( ALLTRIM(STR(nRest1))+ALLTRIM(STR(nRest2)) ) // DEVUELVE EL DC (2 Carateres)
Muy sencillo. Espero que os sirva
Un saludo