RPG (3 et 4, free), CL, SQL, etc...
mousse79
Messages : 4 Enregistré le : lun. 27 avr. 2015, 13:26:17
Localisation : Suisse
Message
par mousse79 » mar. 28 avr. 2015, 07:38:25
Bonjour à toutes et à tous,
J'aurais besoin de votre aide pour savoir comment traiter des zones graphique dans un RPG.
Je dois alimenter un fichier d'un logiciel tiers dont toutes les zones contenant des informations alphanumériques sont de type graphique codées avec un CCSID 1147 différent de celui mon système.
Voici la définition des zones vu par un DSPFFD :
Le CCSID est bien 1147 car je suis obligé de passé par un profil spécial (avec les CCSID 1147) pour visualiser les données par QRY ou alors faire un CHGJOB CCSID(1147) sur une session normal de mon système (qui lui est en 65535).
A noter que lorsque je rentre le nom du fichier dans QRY il me donne le message suivant :
File CLI in XXXTEST may have DBCS data or text
cmasse
Site Admin
Messages : 813 Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :
Message
par cmasse » mar. 28 avr. 2015, 08:44:17
Bonjour,
ce que je vois du DSPFFD n'est pas le CCSID 1147 (qui est le latin-9, soit Français avec EURO) mais le 1200, qui est Unicode (exactement UTF-16)
Quel le CCSID du job ? la val. système QCCSID ?
si c'est 65535, DB2 ne peut pas convertir.
si c'est 297 (ou 1147), il peut convertir dans la limite du jeu de caractère (alphabet occidental vs Chinois). quels sont les caractères stockés ?
Christian Massé (Volubis.fr)
mousse79
Messages : 4 Enregistré le : lun. 27 avr. 2015, 13:26:17
Localisation : Suisse
Message
par mousse79 » mar. 28 avr. 2015, 09:44:19
Bonjour,
Le CCSID du système est le suivant :
Celui du profil livré par la société tiers et qui permet de visualiser les données est le suivant :
De plus lorsque je veux changer le CCSID de mon job en 1200 voilà le message que j'obtiens.
CHGJOB CCSID(1200)
Valeur 1200 de CCSID incorrecte.
Les données stockés dans ces zones graphiques sont des données alphanumériques comme un libellé,un nom ou un prénom.
cmasse
Site Admin
Messages : 813 Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :
Message
par cmasse » mar. 28 avr. 2015, 11:01:17
si les caractères stockés sont occidentaux, la conversion doit pouvoir être réalisée.
C'est automatique avec SQL, avec RPG-IV depuis la V6R10 si le CCSID est connu au moment de la compilation.
Sinon %CHAR() et %UCS2() font la conversion
http://www-01.ibm.com/support/knowledge ... tm?lang=fr
Christian Massé (Volubis.fr)
mousse79
Messages : 4 Enregistré le : lun. 27 avr. 2015, 13:26:17
Localisation : Suisse
Message
par mousse79 » mar. 28 avr. 2015, 12:49:43
Je viens d'essayer avec le %UCS2 et voici ce que j'obtiens à la compilation lorsque je précise le CCSID 1147 dans la carte H.
mousse79
Messages : 4 Enregistré le : lun. 27 avr. 2015, 13:26:17
Localisation : Suisse
Message
par mousse79 » mar. 28 avr. 2015, 14:02:05
Bonjour,
J'ai supprimer l'information de la carte H et codé comme suit dans le programme :
/free
eval CE1 = %UCS2('8');
eval CE2 = %UCS2('1');
eval LIB = %UCS2(#LIB9);
/end-free
Cela fonctionne parfaitement.
Un grand merci à tous.
Buffalo
Messages : 1 Enregistré le : mer. 21 oct. 2015, 03:45:30
Message
par Buffalo » mer. 21 oct. 2015, 13:29:13
cmasse a écrit : si les caractères stockés sont occidentaux, la conversion doit pouvoir être réalisée.
C'est automatique avec SQL, avec RPG-IV depuis la V6R10 si le CCSID est connu au moment de la compilation.
Sinon %CHAR() et %UCS2() font la conversion
http://www-01.ibm.com/support/knowledge ... tm?lang=fr
je suis dans le même cas, merci pour les précisions!