Newsgroup: it.comp.lang.vo-clipper
Titolo: CODICI ABI CAB X IBAN

Salve
     Con l'anno nuovo sembra che ci sia esigenza di conoscere per
bonifici e quant'altro IBAN( IT-CHECK_DIGIT-CIN-ABI-CAB-CC) mi
chiedevo se qualcuno di voi ha questi benedetti codici e se
gentilmente me li potete inviare.
     P.S. sono debitore di un caffè per l'aiuto datomi.
 
l'account-amm...@cover-vernici.it
Ciao Luigi

 gentilmente me li potete inviare.
Non ho capito di quali codici hai bisogno. IT è fisso (almeno per l'italia). 
ABI-CAB-CC sono specifici di ogni conto. Gli unici che si possono calcolare 
sono CIN e CHECK_DIGIT. Ti serve di sapere come si calcolano?
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
The EMG Music page:         
http://www.emagsoftware.it/emgmusic
 

Ciao
     Uso un archivio incompleto ed aggiornato se ricordo bene marzo
2004; incompleto perchè ci sono solo i codici  ABI e CAB che sono
quelli che servono per le riba oltre chiaramente la corrispondente
banca e suo indirizzo.
     Sarei grato se potessi aggiornare l'archivio includendo gli altri
codici che servono per le altre disposizioni di bonifico e cosi via...
     Se hai un archivio aggiornato/più recente ti ringrazio
anticipatamente se me lo invii...
     A Proposito come si calcolano il CIN e il CHECK_DIGIT ?
Ti ringrazio anticipatamente.
Ciao Luigi

 A Proposito come si calcolano il CIN e il CHECK_DIGIT ?
FUNCTION CIN( cAbi, cCab, cCon )
    LOCAL aPari := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 }
    LOCAL aDisp := { 1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 
6, 8, 12, 14, 16, 10, 22, 25, 24, 23, 27, 28, 26 }
    LOCAL cNume := "0123456789"
    LOCAL cLett := "ABCDEFGHIJKLMNOPQRSTUVWXYZ-. "
    LOCAL cCod := UPPER( cAbi + cCab + cCon )
    LOCAL nSomma := 0
    LOCAL i, n
    FOR i = 1 TO LEN( cCod )
        n = AT( SUBSTR( cCod, i, 1 ), cNume )
        IF n = 0
            n = AT( SUBSTR( cCod, i, 1 ), cLett )
        ENDIF
        IF i % 2 = 0
            nSomma += aPari[ n ]
        ELSE
            nSomma += aDisp[ n ]
        ENDIF
    NEXT
    RETURN SUBSTR( cLett, ( nSomma + 1 ) % 26, 1 )
FUNCTION IBAN( cPae, cCin, cAbi, cCab, cCon )
    LOCAL cChk := IBANCHK( cPae + "00" + cCin + cAbi + cCab + cCon )
    RETURN cPae + cChk + cCin + cAbi + cCab + cCon
FUNCTION IBANCHK( cIba )
    LOCAL cGru, cRes := ""
    LOCAL i
    cIba = SUBSTR( cIba, 5 ) + LEFT( cIba, 4 )
    cIba = IBANNUM( cIba )
    FOR i = 1 TO LEN( cIba ) STEP 8
        cGru = cRes + SUBSTR( cIba, i, 8 )
        cRes = NTRIM( INT( VAL( cGru ) % 97 ) )
    NEXT
    RETURN STRZERO( ( 98 - VAL( cRes ) ) % 97, 2 )
FUNCTION IBANNUM( cIba )
    LOCAL cTmp := cIba
    LOCAL cChr
    LOCAL i
    cIba = ""
    FOR i = 1 TO LEN( cTmp )
        cChr = SUBSTR( cTmp, i, 1 )
        IF ISDIGIT( cChr )
            cIba += cChr
        ELSE
            cIba += NTRIM( ASC( cChr ) - ASC( "A" ) + 10 )
        ENDIF
    NEXT
    RETURN cIba


Ciao EMG
       Ti ringrazio per le funzioni, ammetto la mia ignoranza :
Pensavo che fossero dei campi standard quando poi sono calcolati in
base ai codici abi cab cc, e questo è il motivo per cui non ho fatto
alcuna ricerca sulla rete se non per la ricerca dei codici stessi.
Ciao Luigi De Palma