ANNEXES
ANNEXE 1
RELEVÉS D'IDENTITÉ OPÉRATEUR
1. Constitution du RIO
Le RIO est un code à douze caractères comprenant quatre champs et défini comme suit :
- le champ « OO » est un champ codé sur deux caractères numériques identifiant l'opérateur donneur ou son délégataire technique (39) ;
- le champ « Q » est un champ codé sur un caractère alphanumérique correspondant à la qualité de l'abonné ou de l'éditeur de services à valeur ajoutée ;
- le champ « RRRRRR » est un champ codé sur six caractères alphanumériques constituant une référence propre au contrat associé au numéro pour l'opérateur donneur, qui permet à l'opérateur commercial de vérifier lors de la réception d'une demande de portabilité sortante que celle-ci provient bien d'une démarche du client auquel l'exploitant a fourni le RIO ;
- le champ « CCC » est un champ codé sur trois caractères alphanumériques constituant une clé permettant de vérifier la cohérence entre le numéro de l'abonné ou de l'éditeur de services à valeur ajoutée et les trois premiers champs du RIO.
Les champs « OO » et « RRRRRR » sont codés à l'aide de caractères alphanumériques. Le champ « CCC » peut avoir comme valeur, en plus des caractères alphanumériques, le caractère + . Le champ « Q » peut prendre comme valeur « E » ou « P » pour une ligne mobile, « F », « G », « M », « N », « R », « S », « T », « U », « V », « W », « X », « Y » ou « Z » pour une ligne fixe (40), « A » pour un numéro spécial.
Le champ « CCC » est une clé de vérification calculée à l'aide d'un algorithme qui est spécifié ci-après.
2. Précisions sur les règles en vigueur concernant la création des RIO
2.1. Algorithme de calcul du champ CCC
L'algorithme ci-dessous décrit comment calculer le champ « CCC » d'un RIO à partir des champs « OO », « Q », « RRRRRR » tels que décrits dans la section supra de la présente annexe et du numéro de téléphone, qui peut être sur 10, 13 ou 14 chiffres, de l'utilisateur final (« numero »).
chaîne CCC = fonction(chaîne OO, chaîne Q, chaîne RRRRRR, chaîne numero)
{
# Déclaration de variables
chaîne concaténation = concaténer(OO, Q, RRRRRR, numero) ;
chaîne ordre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+" ;
entier a = 0 ;
entier b = 0 ;
entier c = 0 ;
entier position ;
chaîne caractère ;
# Algorithme de calcul
pour i = 0 à longueur(concaténation) - 1 faire
caractère = concaténation[i] ; #ie caractère de concaténation
position = ordre.position(caractere) ; #position de caractère dans la chaîne ordre
a = (a + position) % 37 ; #reste de la division euclidienne de (a + position) par 37
b = (2 × b + position) % 37 ;
c = (4 × c + position) % 37 ;
fin faire
CCC = concaténer(ordre[a], ordre[b], ordre[c]) ;
}
2.2. Algorithme de calcul du champ RRRRRR pour un accès VGAST
Dans le cadre spécifique d'une offre VGAST, le champ « RRRRRR » du RIO est défini par l'algorithme ci-après à partir du code VIA identifiant la référence de l'accès.
chaîne RRRRRR = fonction(chaîne codeVIA)
{
chaîne chronoVIA = sous-chaîne(codeVIA, 5) ; #codeVIA sans les 6 premiers caractères
chaîne ordre = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+" ;
entier a = 0 ;
entier b = 0 ;
entier c = 0 ;
entier d = 0 ;
entier e = 0 ;
entier f = 0 ;
entier position ;
chaîne caractère ;
pour i = 0 à longueur(chronoVIA) - 1 faire
caractère = chronoVIA[i] ; #ie caractère de chronoVIA
position = ordre.position(caractere) ; #position de caractère dans la chaîne ordre
a = (a + position) % 37 ; #reste de la division euclidienne de (a + position) par 37
b = ( 2 × b + position) % 37 ;
c = ( 4 × c + position) % 37 ;
d = ( 8 × d + position) % 37 ;
e = (16 × e + position) % 37 ;
f = (32 × f + position) % 37 ;
fin faire
RRRRRR = concaténer(ordre[a], ordre[b], ordre[c] ordre[d], ordre[e], ordre[f]) ;
}
(39) L'opérateur technique effectuant ce processus pour le compte de l'opérateur de l'utilisateur.
(40) La valeur « V » est cependant réservée pour les numéros utilisés dans le cadre de l'offre de gros d'Orange VGAST.