IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

Conversion caractère spécial


Sujet :

Cobol

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 181
    Points : 79
    Points
    79
    Par défaut Conversion caractère spécial
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSPECT MEMOCOM OF W-BAC00309D REPLACING ALL  "X'8C'"
                                                                   BY        "'oe'"
    J'ai essayé aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSPECT MEMOCOM OF W-BAC00309D CONVERTING  "X'8C'"
                                                                      TO "'oe'"
    mais c'est KO aussi.

    Est ce que quelqu'un peut me dire quoi faire ou bien me donner une piste?

    Merci par avance

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    INSPECT TXT9 REPLACING ALL X"8C" BY "?".

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 181
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    INSPECT TXT9 REPLACING ALL X"8C" BY "?".
    Oui tu as raison c'est un problème que j'ai rencontré.
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSPECT MEMOCOM OF W-BAC00309D CONVERTING    X"04" 
                                           TO    X"9C"
    Mais ça me donne un autre caractère autre que "œ" voulu, sachant que selon le site http://shop.alterlinks.com/ascii-tab...etendue-fr.php et http://www.conseil-creation.com/info...exadecimal.php, l'Hexa de "œ" est bel et bien "9C".

    Je ne sais pas si L'AS400 a un autre codage.

    Est ce que vous avez une piste pour moi?

    Merci d'avance.

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 181
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    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.
    Merci pour ton aide.

    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion caractère spécial en ascii
    Par L-F-an dans le forum Qt
    Réponses: 9
    Dernier message: 30/03/2010, 11h44
  2. Réponses: 2
    Dernier message: 06/11/2005, 11h11
  3. Conversion caractères accentué
    Par Goliath722 dans le forum C++
    Réponses: 1
    Dernier message: 28/12/2004, 00h41
  4. Pb masquer caractère spécial
    Par cosminutza dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/11/2004, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo