|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : avril 2006 Messages : 181 ![]() |
Bonjour à tous,
Je travaille avec cobol sous AS400. apparemment le système n'accepte pas le caractère spécial 'œ'. Quand mon composant reçoit une chaine de caractère avec ce dernier, il plante et il ferme la session sur laquelle je travaille. j'ai essayé de faire le code ci-dessous pour remedier à ça mais c'est KO, rien ne se fait: Code :
Code :
Est ce que quelqu'un peut me dire quoi faire ou bien me donner une piste? Merci par avance |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
Bonjour.
1- Les chaines de caractères de l'INSPECT doivent avoir la même longueur, donc tu ne peux remplacer X"8C" que par un seul caractère, sinon il te faudrait un peu de traitement de texte spécifique surtout que le nombre des occurances peut être variable et surement indéterminé à l'avance. 2- L'INSPECT s'écrirait plutôt comme ceci par exemple: Code :
INSPECT TXT9 REPLACING ALL X"8C" BY "?". |
|
|
00
|
|
|
#3 | |||
|
Membre du Club
![]() Inscription : avril 2006 Messages : 181 ![]() |
Citation:
ce que j'ai fais c'est que lors de l'exécution avec l'instruction DSPHEX Var, j'ai trouvé la valeur Hexadécimal que mon composant reçoit, est c'est 04, du coup j'ai essayé le code ci-dessous: Code :
Je ne sais pas si L'AS400 a un autre codage. Est ce que vous avez une piste pour moi? Merci d'avance. |
|||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
Il y a toujours cette histoire de CCSID (code page grosso modo) et ses problèmes de conversion EBCDIC/ASCII et des caractères affichables /imprimables.
Le CCSID est indiqué à plusieurs endroits de l'AS/400, Valeur Système, profil, job, fichiers DB, fichiers écrans et imprimantes, etc.. sans parler du code langue et pays... c'est un peu le bazar quoi. Bien situer le problème et essayer de lui trouver une solution acceptable. Pour ton cas, si on ne trouve une solution pour placer le "œ", il faudrait se rabattre sur le "oe" par une solution de traitement de texte en remplaçant le x"04" par "oe". Ce n'est pas compliqué dans une boucle ou un perform en redéfinissant le texte comme un tableau de n occurrences d'un caractère ou en utilisant la reference modified. |
|
|
00
|
|
|
#5 | |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 181 ![]() |
Citation:
Nous avons opté pour une solution très basique pour eviter le plantage. Cette solution consiste à remplacer le caractère E dans l'O par un espace. Merci encore une fois |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com