Numero di conto bancario di base

Il BBAN (Basic Bank Account Number) o RIB (estratto conto bancario in Francia) o anche un modello di assegno ( Québec ) è una serie di numeri emessi dalla banca e che indica in modo univoco un conto bancario nazionale. Viene dato a un debitore o a un creditore allo scopo di effettuare bonifici o addebiti diretti da questo conto. Questi elementi sono spesso presenti sugli assegni (libretto degli assegni).

Sostituzione del RIB con l'IBAN

In Francia

La nozione di RIB è stata ufficialmente abolita con il passaggio al formato SEPA . Tuttavia, questo termine è ancora ampiamente utilizzato per designare l' IBAN ( International Bank Account Number) che identifica un conto internazionale . Oggi, i conti bancari francesi hanno un estratto conto che include: IBAN, RIB e BIC . In Europa l'IBAN è sufficiente per gestire le operazioni bancarie SEPA (addebito diretto e bonifico).

In Francia, l'IBAN è riportato sull'estratto conto del conto in questione.

Legislazione

La normativa SEPA rende impossibile l'utilizzo del RIB per le operazioni bancarie, essendo l'IBAN necessario e sufficiente. I bonifici e gli addebiti nazionali ed europei sono soggetti alle stesse commissioni e agli stessi diritti e obblighi. È anche possibile utilizzare l'IBAN di un altro paese europeo nel proprio paese.

Gli istituti di credito (BNP, Société Générale, Crédit Agricole, ecc.), gli istituti di pagamento (Nickel, ad esempio) e gli istituti di moneta elettronica (Paypal, Treezor, ecc.) hanno il potere di emettere IBAN.

Composizione

Composizione di BBAN
Da 3 a 12 posizioni da 8 a 20 posizioni
IID BANDIRE

Non ha più di 30 posizioni. Ogni paese è responsabile della definizione del formato del proprio BBAN.

Esempi

B = codice banca (5 cifre), G = codice filiale (5 cifre), C = numero di conto (11 cifre e/o lettere), K = chiave RIB (2 cifre comprese tra 01 e 97)B = codice banca (3 cifre), C = numero di conto (7 cifre), KK = BBBCCCCCCC modulo 97 (se uguale a 0, KK = 97)B = codice bancario (8 cifre), C = numero di conto (10 cifre. Se inferiore, completare a sinistra con 0) Nota: il numero di conto tedesco (C) contiene una chiave di controllo, ma la sua posizione e il suo calcolo differiscono da una banca all'altra. Esistono oltre 100 diversi metodi di calcolo chiave in Germania (fonte: de: Kontonummer )

Tasto RIB

Chiave = 97 - ([banca, cassiere, concatenazione di conti] * 100 modulo 97). Questa chiave è simile a quella del numero di previdenza sociale francese, con la differenza che non viene centuplicata. Se il conto contiene lettere (banche francesi Banque Postale e Crédit lyonnais), sostituire la lettera con il suo indice da 1 a 9 dell'alfabeto ( ecc.), lasciando un salto tra R e S ( ).

Calcolo della chiave RIB in Java

public int getRibKey(String rib) { StringBuilder extendedRib = new StringBuilder(rib.length()); for (char currentChar : rib.toCharArray()) { //Works on base 36 int currentCharValue = Character.digit(currentChar, Character.MAX_RADIX); //Convert character to simple digit extendedRib.append(currentCharValue<10?currentCharValue:(currentCharValue + (int) StrictMath.pow(2,(currentCharValue-10)/9))%10); } BigDecimal extendedRibInt = new BigDecimal(extendedRib.toString()); return 97- extendedRibInt.multiply(new BigDecimal(100)).toBigInteger().mod(new BigDecimal(97).toBigInteger()).intValue(); }

Il libretto degli assegni

L'estratto conto bancario, sul libretto degli assegni, è composto da:

  • l' International Banking Account Number ( IBAN ), numero di conto secondo lo standard internazionale ISO n° 13616
  • il Bank Identification Code ( BIC ), identificativo dell'istituto finanziario (la banca) secondo lo standard internazionale ISO n°9362
  • il nome e l'indirizzo del titolare del conto, alla data di costituzione del libretto degli assegni (gli assegni restano validi dopo il trasloco)
  • il nome dell'istituto finanziario (la banca ) e dello sportello di domiciliazione (lo sportello bancario )

Verifica del RIB

Algoritmo

La validità di un RIB viene calcolata utilizzando la relativa chiave.

Il primo passo è sostituire le lettere presenti con dei numeri per facilitare il calcolo.

Tabella di trasformazione dei caratteri
Personaggio Figura che rappresenta
0 0
1, A, J 1
2, B, K, S 2
3, C, L, T 3
4, D, M, U 4
5, E, N, V 5
6, FA, O, W 6
7, G, P, X 7
8, H, Q, Y 8
9, I, R, Z 9

Per fare la trasformazione, tutto quello che devi fare è andare in base 36 (base 10 + 26 lettere) e applicare il seguente calcolo a ciascun carattere (trasformato in un numero CurrentCharValue ) quindi sostituire quello selezionato con il numero dato:


Il passaggio successivo (facoltativo) è quello di scomporre il codice e moltiplicare ogni parte per una costante e sommarla. Infine, il codice è corretto se il numero ottenuto (o per semplice concatenazione delle nostre diverse parti, o per decomposizione) è congruente a 0 modulo 97.

Controllo della RIB in C#

La funzione check_rib restituisce true o false a seconda della validità delle informazioni.

Codice sorgente in C# private static Regex regex_rib; /// <summary> /// Vérifie la validité d'un RIB /// </summary> /// <param name="rib">Le RIB à vérifier</param> /// <returns>true si le RIB est valide, false sinon</returns> public static bool IsValidRib(string rib) { // Suppression des espaces et tirets string tmp = rib.Replace(" ", "").Replace("-", ""); // Vérification du format BBBBBGGGGGCCCCCCCCCCCKK // B : banque // G : guichet // C : numéro de compte // K : clé RIB if (regex_rib == null) { regex_rib = new Regex(@"(?<B>\d{5})(?<G>\d{5})(?<C>\w{11})(?<K>\d{2})", RegexOptions.Compiled); } Match m = regex_rib.Match(tmp); if (!m.Success) return false; // Extraction des composants string b_s = m.Groups["B"].Value; string g_s = m.Groups["G"].Value; string c_s = m.Groups["C"].Value; string k_s = m.Groups["K"].Value; // Remplacement des lettres par des chiffres dans le numéro de compte StringBuilder sb = new StringBuilder(); foreach (char ch in c_s.ToUpper()) { if (char.IsDigit(ch)) sb.Append(ch); else sb.Append(RibLetterToDigit(ch)); } c_s = sb.ToString(); // Séparation du numéro de compte pour tenir sur 32bits string d_s = c_s.Substring(0, 6); c_s = c_s.Substring(6, 5); // Calcul de la clé RIB int b = int.Parse(b_s); int g = int.Parse(g_s); int d = int.Parse(d_s); int c = int.Parse(c_s); int k = int.Parse(k_s); int calculatedKey = 97 - ((89 * b + 15 * g + 76 * d + 3 * c) % 97); return (k == calculatedKey); } /// <summary> /// Convertit une lettre d'un RIB en un chiffre selon la table suivante : /// 1 2 3 4 5 6 7 8 9 /// A B C D E F G H I /// J K L M N O P Q R /// _ S T U V W X Y Z /// </summary> /// <param name="letter">La lettre à convertir</param> /// <returns>Le chiffre de remplacement</returns> public static char RibLetterToDigit(char letter) { if (letter >= 'A' && letter <= 'I') { return (char)(letter - 'A' + '1'); } else if (letter >= 'J' && letter <= 'R') { return (char)(letter - 'J' + '1'); } else if (letter >= 'S' && letter <= 'Z') { return (char)(letter - 'S' + '2'); } else throw new ArgumentOutOfRangeException("Le caractère à convertir doit être une lettre majuscule dans la plage A-Z"); }

Algoritmo chiave RIB | sviluppare.com

 

Controllo del RIB in Java

import java.math.BigDecimal; public class Validation{ public boolean checkRib(String rib) { StringBuilder extendedRib = new StringBuilder(rib.length()); for (char currentChar : rib.toCharArray()) { int intValue; if ('0' <= currentChar && currentChar <= '9') { intValue = currentChar - '0'; } else if ('A' <= currentChar && currentChar <= 'I') { intValue = currentChar - 'A' + 1; } else if ('J' <= currentChar && currentChar <= 'R') { intValue = currentChar - 'J' + 1; } else if ('S' <= currentChar && currentChar <= 'Z') { intValue = currentChar - 'S' + 2; } else { return false; } extendedRib.append(intValue); } return new BigDecimal(extendedRib.toString()).remainder(new BigDecimal(97)).intValue() == 0; } }

Controllo del RIB in Perl

Con:

  • $ cbank: codice bancario
  • $ cguichet: codice del contatore
  • $ nocompte: numero di conto
  • $ clerib: chiave di costola
use Math::BigInt; my %letter_substitution = ("A" => 1, "B" => 2, "C" => 3, "D" => 4, "E" => 5, "F" => 6, "G" => 7, "H" => 8, "I" => 9, "J" => 1, "K" => 2, "L" => 3, "M" => 4, "N" => 5, "O" => 6, "P" => 7, "Q" => 8, "R" => 9, "S" => 2, "T" => 3, "U" => 4, "V" => 5, "W" => 6, "X" => 7, "Y" => 8, "Z" => 9); my $tabcompte = ""; my $len = length($nocompte); return 0 if ($len != 11); for (my $i = 0; $i < $len; $i++) { my $car = substr($nocompte, $i, 1); if ($car !~ m/^\d$/) { my $b = $letter_substitution{uc($car)}; my $c = ( $b + 2**(($b - 10)/9) ) % 10; $tabcompte .= $c; } else { $tabcompte .= $car; } } my $int = "$cbanque$cguichet$tabcompte$clerib"; return (length($int) >= 21 && Math::BigInt->new($int)->bmod(97) == 0) ? 1 : 0;

Verifica RIB in PHP

La funzione check_rib restituisce true o false a seconda della validità delle informazioni.

function check_rib($cbanque, $cguichet, $nocompte, $clerib) { $tabcompte = ""; $len = strlen($nocompte); if ($len != 11) { return false; } for ($i = 0; $i < $len; $i++) { $car = substr($nocompte, $i, 1); if (!is_numeric($car)) { $c = ord($car) - (ord('A') - 1); $b = (($c + pow ( 2, ($c - 10) / 9 )) % 10) + (($c > 18 && $c < 25) ? 1 : 0); $tabcompte .= $b; } else { $tabcompte .= $car; } } $int = $cbanque . $cguichet . $tabcompte . $clerib; return (strlen($int) >= 21 && bcmod($int, 97) == 0); }

Controllo del RIB in Python

def check_rib(rib): if len(rib) != 23: return False _RIB_MAP = { 'A':'1', 'B':'2', 'C':'3', 'D':'4', 'E':'5', 'F':'6', 'G':'7', 'H':'8', 'I':'9', 'J':'1', 'K':'2', 'L':'3', 'M':'4', 'N':'5', 'O':'6', 'P':'7', 'Q':'8', 'R':'9', 'S':'2', 'T':'3', 'U':'4', 'V':'5', 'W':'6', 'X':'7', 'Y':'8', 'Z':'9', } values = "".join(_RIB_MAP.get(char.upper(), char) for char in rib) if not values.isdigit(): return False bankcode = int(values[:5]) counter = int(values[5:10]) account = int(values[10:21]) key = int(values[21:]) return (bankcode*89 + counter*15 + account*3 + key) % 97 == 0

Verifica del RIB in Ruby

Con:

  • rib: il RIB completo senza spazio per passare al metodo.
def rib?(rib) bank, office, account, key = rib.match(/^(\d{5})(\d{5})([[:alnum:]]{11})(\d{2})$/).captures account = account.each_char.inject('') do |sum, char| char = char.to_i 36 sum += ((char + 2 ** ((char - 10)/9)).to_i % 10).to_s end result = bank + office + account + key result.size >= 21 && result.to_i % 97 == 0 rescue # Le RIB n’est pas valide false end

Controllo della RIB in SQL

Questo controllo serve per convalidare l'inserimento da parte dell'utente, che fornisce informazioni sull'esecuzione della query SQL sui codici Banca , Filiale e numero di conto , oppure per chiedergli di inserire una nuova voce.

select Saisie.* ,97-mod(Banque*89+Guichet*15+Compte*3,97) CleRIB from (select substr(lpad(&Banque,5,'0'),1,5) Banque ,substr(lpad(&Guichet,5,'0'),1,5) Guichet ,translate(upper(substr(lpad('&Compte',11,'0'),1,11)) ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ' , 12345678912345678923456789 ) Compte from dual ) Saisie;

Verifica del RIB in SQL per Oracle

Questo controllo permette di controllare un gran numero di RIB, in una tabella RIB_payment

CREATE TABLE ( rib_id NUMBER(10) , rib_banque VARCHAR2(12) CONSTRAINT rib_banque_nn_payment NOT NULL NOT NULL , rib_guichet VARCHAR2(12) CONSTRAINT rib_guichet_nn_payment NOT NULL , rib_compte VARCHAR2(20) CONSTRAINT rib_compte_nn_payment NOT NULL , rib_cle VARCHAR2(3) , rib_saisie_date DATE DEFAULT SYSDATE CONSTRAINT rib_saisie_date_nn_payment NOT NULL , person_id VARCHAR2(10)/*titulaire, personne morale ou physique*/ CONSTRAINT rib_person_id_nn_payment NOT NULL , CONSTRAINT rib_person_id_uk_payment UNIQUE (person_id) )

preventivamente, e in connessione con una tabella di persone (persone fisiche o giuridiche).

SELECT IBAN, MOD( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE( REPLACE( substr(IBAN,5,length(IBAN))||substr(IBAN,1,4) ,'A','10'),'B','11'),'C','12'),'D','13'),'E','14') ,'F','15'),'G','16'),'H','17'),'I','18'),'J','19') ,'K','20'),'L','21'),'M','22'),'N','23'),'O','24') ,'P','25'),'Q','26'),'R','27'),'S','28'),'T','29') ,'U','30'),'V','31'),'W','32'),'X','33'),'Y','34') ,'Z','35') ,' ','') ,97) IBAN_modulo FROM COMPTE

La richiesta controlla l'IBAN (puoi facilmente costruirlo dal RIB).

Verifica del RIB in VBA

Questo codice funziona in Excel, l'abbreviazione "VBE" è la contrazione di VBA per Excel.

Codice sorgente in VBA o VBE

Queste funzioni servono per verificare la validità di un RIB

Function Mod97(Numero As String) As Integer ' Calcule le modulo 97 du numéro donné Dim Nro As String Dim a As Variant, b As Variant, c As Variant, d As Variant, e As Variant, div97 As Variant Nro = Numero a = 0 b = 0 c = 0 e = Right(Nro, 6) d = Mid(Nro, Len(Nro) - 11, 6) Select Case Len(Nro) Case 13 To 20 c = CDbl(Mid(Nro, 1, Len(Nro) - 12)) Case 21 To 28 c = CDbl(Mid(Nro, Len(Nro) - 19, 8)) If Len(Nro) <> 20 Then b = CDbl(Mid(Nro, 1, Len(Nro) - 20)) Case 29 To 38 c = CDbl(Mid(Nro, Len(Nro) - 19, 8)) b = CDbl(Mid(Nro, Len(Nro) - 27, 8)) a = CDbl(Mid(Nro, 1, Len(Nro) - 28)) Case Else Mod97 = 0 Exit Function End Select div97 = Int((a * 93 + b * 73 + c * 50 + d * 27 + e Mod 97) / 97) Mod97 = (a * 93 + b * 73 + c * 50 + d * 27 + e Mod 97) - div97 * 97 End Function Function ControleRib(cbanque As String, cguichet As String, nocompte As String, clerib As String) Const transforme = "12345678912345678923456789" Dim tabcompte As String, lg As Long, i As Long, car As String, c As Integer, rib_int As String tabcompte = "" lg = Len(nocompte) If lg <> 11 Then ControleRib = False Else For i = 1 To lg car = Mid(nocompte, i, 1) If Not IsNumeric(car) Then c = asc(car) - (asc("A") - 1) tabcompte = tabcompte & Mid(transforme, c, 1) Else tabcompte = tabcompte & car End If Next i rib_int = cbanque & cguichet & tabcompte & clerib ControleRib = (Len(rib_int) >= 21) And (Mod97(rib_int) = 0) End If End Function

È necessario inserire queste due funzioni in un modulo nell'editor visual basic (EXCEL o ACCESS) e chiamare da:

1. Eccellere:

=ControleRib(A1, A2, A3, A4)

Dove A1, A2, A3 e A4 devono contenere i 4 valori che compongono il RIB (RIB_Banque, RIB_Guichet, RIB_Compte, RIB_Cle)

2. Accesso:

If ControleRib(RIB_Banque, RIB_Guichet, RIB_Compte, RIB_Cle) Then TESTRIB = "RIB CORRECT" MsgBox " RIB EST CORRECT", vbInformation, "VERIF RIB" Else TESTRIB = "RIB ERRONE" MsgBox " LE RIB EST ERRONE", vbCritical, "VERIF RIB" End If

Dove RIB_Banque, RIB_Guichet, RIB_Compte, RIB_Cle sono i nomi delle zone di testo che devono contenere la RIB e TESTRIB è il nome della zona di testo che dovrà visualizzare il risultato del test.

 

Verifica del RIB in VB.NET

Private Function textetochiffre(ByVal numero As String) As Integer If IsNumeric(numero) = False Then numero = Asc(numero) - 55 End If Return Math.Floor((numero + Math.Pow(2, (numero - 10) / 9)) Mod 10) End Function Private Function verifierrib(ByVal plainrib As String) Dim rib As String = "" For i = 0 To plainrib.Count - 1 rib = rib & textetochiffre(plainrib.Substring(i, 1)) Next Dim banknote As String = rib.Substring(0, 5) Dim guichet As String = rib.Substring(5, 5) Dim compte As String = rib.Substring(10, 11) Dim clerib As String = rib.Substring(21, 2) Dim result As Integer = (banknote * 89 + guichet * 15 + compte * 3 + clerib) Mod 97 If result = 0 Then Return True Else Return False End If End Function

Conversione da RIB a IBAN

Algoritmo

  1. Creare un IBAN temporaneo, composto dal prefisso del paese: FR per la Francia, seguito da "00" e dal "codice RIB"
  2. Sposta i primi 4 caratteri dell'IBAN a destra del numero.
  3. Converti le lettere in numeri, secondo il principio "A" è uguale a "10" ... "Z" è uguale a "35".
  4. Calcola modulo 97 e sottrai il resto da 98. Se il risultato ha una sola cifra, inserisci uno zero iniziale.

Inserire il risultato così ottenuto alla posizione 3 dell'IBAN provvisorio creato al passo 1.

Converti RIB in IBAN in C#

public static string GetIban(string codebanque, string codeGuichet, string numerocompte, string cle) { const string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var tmp = (codebanque + codeGuichet + numerocompte + cle + "FR00").ToUpper(); foreach (var c in tmp.Where(char.IsLetter)) { tmp = tmp.Replace(c.ToString(CultureInfo.InvariantCulture), (alphabet.IndexOf(c) + 10).ToString(CultureInfo.InvariantCulture)); } var ibanKey = (98 - (System.Numerics.BigInteger.Parse(tmp) % 97)).ToString(CultureInfo.InvariantCulture); return "FR" + ((ibanKey.Length == 1) ? "0" : "") + ibanKey + codebanque + codeGuichet + numerocompte + cle; }

Converti RIB in IBAN in Java

public static String getIBAN(String codebanque, String codeGuichet, String numerocompte, String cle) { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String tmp = codebanque + codeGuichet + numerocompte + cle + "FR00"; tmp = tmp.toUpperCase(); for (char c : tmp.toCharArray()) { if (Character.isLetter(c)) { tmp = tmp .replaceAll(String.valueOf(c), String.valueOf(alphabet.indexOf(c) + 10)); } } String ibanKey = String.valueOf(new BigDecimal(98).subtract(new BigDecimal(tmp).remainder((new BigDecimal(97))))); if (ibanKey.length() == 1) { ibanKey = "0" + ibanKey; } return "FR" + ibanKey + codebanque + codeGuichet + numerocompte + cle; }

Conversione di RIB in IBAN in Perl

use bigint; sub rib_to_iban { my ($rib) = @_; my @letter = ('0'..'9','A'..'Z'); my $iban = ""; foreach my $char(split(//,"${rib}FR00")) { my ($index) = grep { $letter[$_] eq $char } (0 .. @letter-1); $iban .= $index; } my $key = 98 - ($iban % 97); return sprintf("FR%.2d%s" ,$key, $rib); }

Converti RIB in IBAN in PHP

function Rib2Iban($codebanque,$codeguichet,$numerocompte,$cle){ $charConversion = array("A" => "10","B" => "11","C" => "12","D" => "13","E" => "14","F" => "15","G" => "16","H" => "17", "I" => "18","J" => "19","K" => "20","L" => "21","M" => "22","N" => "23","O" => "24","P" => "25","Q" => "26", "R" => "27","S" => "28","T" => "29","U" => "30","V" => "31","W" => "32","X" => "33","Y" => "34","Z" => "35"); $tmpiban = strtr(strtoupper($codebanque.$codeguichet.$numerocompte.$cle)."FR00",$charConversion); // Soustraction du modulo 97 de l'IBAN temporaire à 98 $cleiban = strval(98 - intval(bcmod($tmpiban,"97"))); if (strlen($cleiban) == 1) $cleiban = "0".$cleiban; return "FR".$cleiban.$codebanque.$codeguichet.$numerocompte.$cle; }

Conversione di RIB in IBAN in Python

Con:

  • rib: il RIB completo senza spazio per passare al metodo.
def rib_to_iban(rib): tmp_iban = int("".join(str(int(c,36)) for c in rib+"FR00")) key = 98 - (tmp_iban % 97) return "FR%.2d%s" % (key, rib)

Converti RIB in IBAN in Ruby

Con:

  • rib: il RIB completo senza spazio per passare al metodo.
def rib_to_iban(rib) tmp_iban = "#{rib}FR00".each_char.map { |char| char.to_i(36).to_s }.join.to_i key = 98 - (tmp_iban % 97) "FR%.2d%s" % [key, rib] end

Conversione di RIB in IBAN in SQL

Conversione di RIB in IBAN in SQL Server 2008 R2 (Microsoft)

-- Creates an IBAN (International Bank Account Number) from a BBAN (Basic Bank Account Number) and BIC (Bank Identifier Code) -- SQL 2008 R2 -- Tested on several SEPA countries CREATE FUNCTION [dbo].[SQL_F_BBAN_IBAN] (@bban varchar(30), @bic varchar(11)) RETURNS varchar(40) AS -- Creates an IBAN (International Bank Account Number) from a BBAN (Basic Bank Account Number) and BIC (Bank Identifier Code) -- In : BBAN, BIC -- Returns : IBAN BEGIN declare @bbanwk varchar(60), @country char(2), @bbannbp int, @bbanp varchar(9), @pos smallint, @mod int, @i smallint, @keyiban char(2), @iban varchar(40) -- Get the country code from the BIC set @country = substring(@bic, 5, 2) -- Place it at the end of BBAN set @bbanwk = @bban + @country + '00' -- Replace any letters with their numeric value (code ASCII - 55) while isnumeric(@bbanwk+'e0') = 0 BEGIN set @pos = (select patindex('%[^0-9]%',@bbanwk)) set @bbanwk = (select replace(@bbanwk,substring(@bbanwk,@pos,1),ascii(substring(@bbanwk,@pos,1))-55)) END -- Split the BBAN into parts of 9 numbers max (because too long for SQL data type INT) and calculate MOD 97 of each part -- suppose to add 1 iteration each 4 iteration, so init @i = 0 and not 1 for some case. set @bbannbp = ceiling(len(@bbanwk) / 9.0) set @pos = 10 set @i = 0 set @bbanp = left(@bbanwk, 9) while @i <= @bbannbp BEGIN set @mod = cast(@bbanp as int) % 97 -- Put the result at the beginning of the next group set @bbanp = cast(@mod as varchar) + substring(@bbanwk, @pos, 7) set @i = @i + 1 set @pos = @pos + 7 END -- IBAN key 2 characters set @keyiban = right('00' + cast((98 - @mod) as varchar), 2) set @iban = @country + @keyiban + @bban RETURN @iban END GO

Conversione di RIB in IBAN in SQL per Oracle

FUNCTION SO_F_RIB_IBAN(pi_va_rib IN VARCHAR2) RETURN VARCHAR2 IS l_i_loop INTEGER; l_va_return VARCHAR2(40); l_n_clee INTEGER; BEGIN l_va_return := UPPER(pi_va_rib) || 'FR00'; -- Transformation de A-Z en 10-35 FOR l_i_loop IN 0 .. 25 LOOP l_va_return := REPLACE(l_va_return, CHR(65+l_i_loop), (10+l_i_loop)); END LOOP; -- Soustraction du modulo 97 de l'IBAN temporaire à 98 l_n_clee := (98 - MOD(l_va_return,97)); -- Retourne l'iban RETURN 'FR' || TRIM(TO_CHAR(l_n_clee, '00')) || UPPER(pi_va_rib); END SO_F_RIB_IBAN;

Converti RIB in IBAN in VBA

Questo codice funziona in Excel, l'abbreviazione "VBE" è la contrazione di VBA per Excel.

Conversione di RIB in IBAN in VB.NET

Public Function GetIBAN(rib As String) As String rib = rib.Replace(" ", "") Dim tmpIBAN As New StringBuilder() For Each c As Char In (rib + "FR00").ToUpper() Dim v As Integer = Asc(c) + If(c >= "A"c, -Asc("A") + 10, -Asc("0")) tmpIBAN.Append(v) Next Dim tmpIBANString As String = tmpIBAN.ToString() Dim checksum As Integer = 0 For Each c In tmpIBANString checksum *= 10 checksum += Integer.Parse(c) checksum = checksum Mod 97 Next Dim ibanKey As String = (98 - checksum).ToString() Return "FR" + Right("0" & ibanKey, 2) + rib End Function

Conversione di RIB in IBAN in JavaScript

function GetIban(codeBanque, codeGuichet, numCompte, cleRib) { var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var tmp = ""; tmp = "" + String(codeBanque) + String(codeGuichet) + String(numCompte) + String(cleRib) + "FR00"; tmp = tmp.toUpperCase(); tmp = tmp.split(""); for (var i = 0; i < tmp.length; i++) { if (alphabet.indexOf(tmp[i]) != -1) { tmp[i] = String(alphabet.indexOf(tmp[i]) + 10); } } tmp = tmp.join(""); var moduloRemainder = parseInt(tmp % 97, 10); var ibanKey = (98 - moduloRemainder).toString(); if (ibanKey.length == 1) { ibanKey = "0" + ibanKey; } return "FR" + ibanKey + codeBanque + codeGuichet + numCompte + cleRib; };

Articoli Correlati

Riferimenti

  1. “  Addebiti diretti: il conto corrente cede il passo agli standard SEPA  ” , su Le Monde.fr ,1 ° agosto 2014(consultato il 9 gennaio 2020 )
  2. "  REGOLAMENTO (UE) N. 260/2012 DEL PARLAMENTO EUROPEO E DEL CONSIGLIO  "
  3. "  Articolo R351-5 del codice monetario  "
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">