ADELIA |
VADELIA |
SADELIA |
WADELIA |
|
(I/B) |
(I/B) (C/S) |
(B) (S) |
(I/B) (C/S) |
Paragraphe d'utilisation
Tous
Syntaxe
CONV_DONNEES donneesAConvertir formatOrig donneesConverties formatDest
donneesAConvertir |
Þ |
<variable alpha> | <variable image> | <variable classe> | *FICHIER_SOURCE(NomFichier) |
NomFichier |
Þ |
<variable alpha> | <constante alpha> |
formatOrig |
Þ |
<variable alpha | constante alpha> | rien |
donneesConverties |
Þ |
<variable alpha> | <variable image> | <variable classe> | *FICHIER_DEST(NomFichier) |
NomFichier |
Þ |
<variable alpha> | <constante alpha> |
formatDest |
Þ |
<variable alpha | constante alpha> | rien |
Description
L'instruction CONV_DONNEES permet de convertir le format des données contenues dans le paramètre donneesAConvertir.
Le paramètre formatOrig définit le format d'origine des données. Il est obligatoire lorsque la donnée d'origine n'est pas une variable de type classe sinon il ne doit pas être indiqué.
Le paramètre formatDest définit le format dans lequel les données doivent être converties. Il est obligatoire lorsque la donnée de destination n'est pas une variable de type classe sinon il ne doit pas être indiqué.
Le paramètre donneesConverties reçoit en retour les données converties.
Le paramètre donneesAConvertir contient les données à convertir.
Lorsque *FICHIER_SOURCE est indiqué, donneesAConvertir doit contenir le nom du fichier à convertir.
Dans le cas contraire, il contient les données à convertir, soit dans une variable alpha, soit dans une variable image.
Le paramètre formatOrig définit le format d'origine des données.
Les valeurs possibles sont :
'JSON' => Format JSON
'JSON(*WITH_ROOT | rien)'
Le mot-clé *WITH_ROOT est valable seulement lorsque l'on souhaite désérialiser la donnée Json en classe.
S'il est indiqué, la conversion s'attend à avoir l'attribut racine dans la donnée Json.
Sinon une exception est levée.
'XML' => Format XML
'XML(suiteOptionsXml)'
SuiteOptionsXml => optionXml |
optionXml, suiteOptionsXml
optionXml =>
<suitePathsBalises> |
*ARRAY=<suitePathsBalises> |
*IGNORE_EMPTY_ARRAY |
*ALPHA=< suitePathsAlpha>
suitePathsBalises : lorsqu'il est précédé du mot clé *ARRAY ou lorsqu'il n'est précédé d'aucun mot clé, indique les arborescences (séparées par une virgule) des balises que l'on souhaite sérialiser en tableau JSON. Lorsqu'il est précédé du mot clé *ALPHA, il indique les arborescences des balises que l'on souhaite convertir systématiquement en valeur alphanumérique (même si la valeur correspond à une valeur numérique).
Par défaut, on tente de convertir chaque valeur d'abord en numérique puis en décimale et en booléen. Si aucune conversion n'est possible le type de la valeur est alphanumérique.
Chaque arborescence doit commencer par le caractère "/".
L'option *ARRAY s'applique uniquement pour les balises contenant un seul élément. Les balises contenant plusieurs éléments sont naturellement converties en tableau JSON.
(par exemple : "XML(/LES_PERSONNES/Personnes)" ).
L'option *IGNORE_EMPTY_ARRAY doit être utilisée avec *ARRAY et permet d'obtenir des tableaux JSON vides :
"node":[]
Sans cette option, une balise XML vide convertie avec l'option *ARRAY génère le nœud JSON "node":[""]
Le paramètre donneesAConvertir reçoit en retour les données dans leur nouveau format.
Lorsque *FICHIER_DEST est indiqué, les données sont stockées dans un fichier. Dans le cas contraire, elles sont stockées dans une variable de type alpha ou image.
Le paramètre formatDest définit le format de conversion.
Les valeurs possibles sont :
- 'JSON' => Format JSON
- 'JSON(optionJson)
optionJson =>
< suiteNomsNoeuds > | *WITH_ROOT
suiteNomsNoeuds : format JSON où il est indiqué les noms des nœuds (séparés par une virgule) correspondant à une collection JSON d'éléments qu'on veut rendre anonyme en JSON.
Pour indiquer le nœud racine, il est possible d'utiliser la valeur spéciale *ROOT (par exemple : 'JSON(*ROOT , Personnes)' )
*WITH_ROOT : lorsque la donnée d'origine est une classe, ce mot-clé indique que l'on souhaite prendre en compte l'attribut racine lors de la sérialisation.
- 'XML' => Format XML
Remarques : lorsque l'on souhaite convertir les données au format XML et que les données converties sont contenues dans un fichier, l'encodage est forcé en UTF-8.
Lorsque les données à convertir sont contenues dans une variable alphanumérique, elles doivent être dans la page de code de la plateforme courante.
Lorsque les données converties sont contenues dans une variable alphanumérique, elles sont encodées dans la page de code de la plateforme courante.
Il est possible de tester le mot réservé *CODE_RETOUR après l'exécution de l'instruction.
Si l'opération s'est bien déroulée, *CODE_RETOUR renvoie *NORMAL.
Voici les différents résultats :
-1 : Paramètres invalides.
-2 : Erreur à la lecture du fichier contenant les données à convertir.
-3 : Erreur à l'écriture du fichier contenant les données converties.
-4 : Erreur à la lecture du champ image contenant les données à convertir.
-5 : Les formats de conversion spécifiés ne sont pas corrects.
-6 : Erreur lors de la sérialisation de la classe en donnée JSON.
-7 : Erreur lors de la désérialisation de la donnée JSON.
1 : Erreur interne.
2 : Erreur lors de l'analyse des données XML.
3 : Erreur lors de l'analyse des données JSON.
4 : Erreur lors de la conversion de caractères UTF8 en EBCDIC ou UCS2 (AS400).
5 : Le nom d'un élément de la donnée JSON en entrée n'est pas valide.
Exemple 1 :
CONV_DONNEES *FICHIER_SOURCE('c:\doc\personnes.xml') 'XML' *FICHIER_DEST('c:\doc\personnes.json') 'JSON'
Exemple 2 :
Alpha(250) DATA_ORIG
IMAGE DATA_DEST
DATA_ORIG = '{"LES_PERSONNES":{"Personnes":[{"Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"},{"Nom":"DOLA","Prenom":"Laura","DateNaissance":"1990-11-01"}]}}'
CONV_DONNEES DATA_ORIG 'JSON' DATA_DEST 'XML'
Rend DATA_DEST avec la valeur <?xml version="1.0" encoding="UTF-8" standalone="yes"?><LES_PERSONNES> <Personnes><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance></Personnes> <Personnes><Nom>DOLA</Nom><Prenom>Laura</Prenom><DateNaissance>1990-11-01</DateNaissance></Personnes></LES_PERSONNES>
Exemple 3 :
DATA_ORIG =' <?xml version="1.0" encoding="UTF-8" ?><LES_PERSONNES> <Personnes><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance> </Personnes> <Personnes><Nom>DOLA</Nom><Prenom>Laura</Prenom><DateNaissance>1990-11-01</DateNaissance></Personnes></LES_PERSONNES>
CONV_DONNEES DATA_ORIG 'XML' DATA_DEST 'JSON'
Rend DATA_DEST avec la valeur '{"LES_PERSONNES":{"Personnes":[{"Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"},{"Nom":"DOLA","Prenom":"Laura","DateNaissance":"1990-11-01"}]}}'
Exemple 4 :
DATA_ORIG =' <?xml version="1.0" encoding="UTF-8" ?><LES_PERSONNES> <Personnes><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance> </Personnes> <Personnes><Nom>DOLA</Nom><Prenom>Laura</Prenom><DateNaissance>1990-11-01</DateNaissance></Personnes></LES_PERSONNES>
CONV_DONNEES DATA_ORIG 'XML' DATA_DEST 'JSON(*ROOT, Personnes)'
Rend DATA_DEST avec la valeur '[{"Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"}, {"Nom":"DOLA","Prenom":"Laura","DateNaissance":"1990-11-01"}]
Exemple 5 :
DATA_ORIG =' <?xml version="1.0" encoding="UTF-8" ?><LES_PERSONNES> <Personnes><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance> </Personnes></LES_PERSONNES>'
CONV_DONNEES DATA_ORIG 'XML (*ARRAY=/LES_PERSONNES/Personnes) ' DATA_DEST 'JSON'
Rend DATA_DEST avec la valeur ' {"LES_PERSONNES":{"Personnes":[{"Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"}]}}'
Exemple 6 :
DATA_ORIG ='<?xml version="1.0" encoding="UTF-8" ?><LES_PERSONNES> <Personnes></Personnes></LES_PERSONNES>'
CONV_DONNEES DATA_ORIG 'XML (*IGNORE_EMPTY_ARRAY, *ARRAY=/LES_PERSONNES/Personnes) ' DATA_DEST 'JSON'
Rend DATA_DEST avec la valeur ' {"LES_PERSONNES":{"Personnes":[]}} '
Exemple 7 :
DATA_ORIG ='<?xml version="1.0" encoding="UTF-8" ?><LES_SALARIES> <Salaries><Matricule>52413</Matricule><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance></Salaries></LES_SALARIES> '
CONV_DONNEES DATA_ORIG 'XML(*ALPHA=/LES_SALARIES/Salaries/Matricule) ' DATA_DEST 'JSON'
Rend DATA_DEST avec la valeur '{"LES_SALARIES":{"Salaries":{"Matricule":"52413","Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"}}}'
Exemple 8 :
DATA_ORIG ='<?xml version="1.0" encoding="UTF-8" ?><LES_SALARIES> <Salaries><Matricule>52413</Matricule><Nom>RONDO</Nom><Prenom>Paul</Prenom><DateNaissance>1980-10-30</DateNaissance></Salaries></LES_SALARIES> '
CONV_DONNEES DATA_ORIG 'XML(*ARRAY=/LES_SALARIES/Salaries, *ALPHA=/LES_SALARIES/Salaries/Matricule) ' DATA_DEST 'JSON'
Rend DATA_DEST avec la valeur ' {"LES_SALARIES":{"Salaries":[{"Matricule":"52413","Nom":"RONDO","Prenom":"Paul","DateNaissance":"1980-10-30"}]}} '