mastintin wrote:
聽 聽 聽 聽 聽 聽 if(CC_iban<10){
聽 聽 聽 聽 聽 聽 CC_iban = "0" + CC_iban;
聽 聽 聽 聽 聽 聽 }
Mastintin,
S贸lo te falta incluir el IF que te marc贸 que sucede cuando al calcular el digito de control, tiene solo un d铆gito. Por lo dem谩s, coincide con el c贸digo que uso y que est谩 comprobado, salvo que yo incluyo la variable PAIS, para poder adeudar recibos a otros paises distinto que ESPA脩A.
Tambien son importantes convertir la cadena IBAN a num茅rico, porque sino, al dividir por 97, dar铆a error e incluir los INT, porque en caso contrario, al sumar las cadenas, Harbour incluye el punto decimal y los decimales por defecto.
FUNCTION fIban( cPais, cBanco, cSucursal, cDC, cCuenta)
local nIban, cIban, nMod, nContador, cPais2:=''
// comprueba ccc es correcto
IF !CCC (cBanco, cSucursal, cDC, cCuenta)
聽 聽MsgInfo ("CCC incorrecto.")
聽 聽// devuelve cadena vacia por error CCC
聽 聽RETURN ' '
ENDIF聽 聽聽 聽 聽 聽
聽 聽
聽 FOR ncontador = 1 TO 2
聽 聽 聽 IF ASC(SUBSTR(cPais, ncontador, 1)) >= 65
聽 聽 聽 聽 聽 聽cPais2 += STR( (ASC(UPPER(SUBSTR(cPais, ncontador, 1)))-55), 2, 0)
聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 cPais2 += SUBSTR(cPais, ncontador, 1)
聽 聽 聽 ENDIF
聽 NEXT聽
聽 cIban := cBanco + cSucursal
聽 nMod := INT ( VAL(cIban) % 97)
聽 cIban := LTRIM(STR(nMod,3,0))+cDC+SUBS(cCuenta,1,2)
聽 nMod := INT ( VAL(cIban) % 97)
聽 cIban := LTRIM(STR(nMod,3,0))+SUBS(cCuenta,3) + cPais2 + "00"
聽 nMod := INT ( VAL(cIban) % 97 )
聽 nIban := INT ( 98 - ( VAL(cIban) % 97) )
聽 return cPais + STRZERO( nIban, 2)+cBanco+cSucursal+cDC+cCuenta