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

AS/400 Discussion :

Convertion d'un caractère lors d'un CPYF


Sujet :

AS/400

  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 Convertion d'un caractère lors d'un CPYF
    Bonjour,

    Je suis entrain de modifier un CL (sous AS/400), le problème que je rencontre c'est lors d'un CPYF du premier enregistrement d'un fichier, une conversion d'un caractere alphanumérique se fait automatiquement en numérique à tort.

    Est ce que queqlu'un peut me dire SVP comment je peux faire pour ne plus avoir cette convertion.

    voila la commande que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CPYF       FROMFILE(&BIB/&FIL) TOFILE(FICH2) + 
                 MBROPT(*REPLACE) TORCD(1) +         
                 FMTOPT(*NOCHK)
    Merci à vous par avance

  2. #2
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Bonjour,

    Il y a peut-être une différence de ccsid entre le 2 fichiers.
    A voir et me revenir.

    larry57

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Tu utilises *NOCHK.
    Vérifies si DSPFFD des deux fichiers donne les mêmes zones avec les mêmes longueurs

  4. #4
    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
    Non les deux fichiers n'ont pas la même description, le fichier source a une seule zone où il y'a tout l'enregistrement, alors que le fichier destination a deux zones la première sur 8 et la deuxième sur 15.

    normalement le fichier source doit etre numérique, mais pour tester le cas d'un fichier mal renseigné j'ai mis dans l'enregistrement du fichier source 5396A.

    après le passage du traitement je trouve que le caractère A est changé avec la valeur 1 quand j'ai mis X la valeur dans le fichier destination est 7, après le passage de commande CPYF.

    voila la description de la zone concernée du fichier destination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NUMADH         5          COLHDG('NUMÉRO ADH')
    Merci à vous

  5. #5
    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.

    - Assure toi que les deux fichiers ont le même CCSID (DSPFD, DSPFFD).
    - si tu tes deux fichiers ont leurs deux structures superposées, il n'y a pas de problèmes avec le *NOCHK
    - important : comment as tu vu le caractère alpha se changer en numérique ? par une lecture par un programme, DFU ou par un affichage DSPPFM ?

    Je soupçonne une conversion forcée lors de la lecture du 2è fichier et non lors du CPYF, parce que ta zone, ou une zone intermédiaire, est déclarée en numérique.

    Edit :
    - tu parles de 8 et 15 et là on voit du 5.
    - A=x"C1" et X=x"E7" d'où le 1 et le 7

  6. #6
    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.

    - Assure toi que les deux fichiers ont le même CCSID (DSPFD, DSPFFD).
    - si tu tes deux fichiers ont leurs deux structures superposées, il n'y a pas de problèmes avec le *NOCHK
    - important : comment as tu vu le caractère alpha se changer en numérique ? par une lecture par un programme, DFU ou par un affichage DSPPFM ?

    Je soupçonne une conversion forcée lors de la lecture du 2è fichier et non lors du CPYF, parce que ta zone, ou une zone intermédiaire, est déclarée en numérique.

    Edit :
    - tu parles de 8 et 15 et là on voit du 5.
    - A=x"C1" et X=x"E7" d'où le 1 et le 7
    Comment je peux vérifier s'ils ont le même CCSID ou non?
    j'ai vu la conversion se faire comme suit:
    je vérifie la valeur de l'enregistrement du fichier source elle est a 5396X et après le CPYF je vérifie le fichier destinantion, la valeur est 53967.

    la zone qui reçoit la valeur converti est déclarée comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NUMADH         5S 0       COLHDG('NUMERO ADH')
    tu as raison pour la le 8 et le 15 j'ai fais une erreur il est déclaré sur 5 et non sur 8.

  7. #7
    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
    Citation Envoyé par nsqualli Voir le message
    Comment je peux vérifier s'ils ont le même CCSID ou non?
    Par DSPFD ou DSPFFD
    j'ai vu la conversion se faire comme suit:
    je vérifie la valeur de l'enregistrement du fichier source elle est a 5396X et après le CPYF je vérifie le fichier destinantion, la valeur est 53967.

    la zone qui reçoit la valeur converti est déclarée comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NUMADH         5S 0       COLHDG('NUMERO ADH')
    tu as raison pour la le 8 et le 15 j'ai fais une erreur il est déclaré sur 5 et non sur 8.
    - Tu vois que ta zone est du numérique signé
    - Par quel moyen tu as vérifié ?
    - Pour vérifier le bon contenu des fichier, il faudrait éviter tout autre moyen que le dump normal sans laisser la possibilité à tout type de conversion : tu le fais par DSPPFM.

  8. #8
    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
    Par DSPFD ou DSPFFD

    - Tu vois que ta zone est du numérique signé
    - Par quel moyen tu as vérifié ?
    - Pour vérifier le bon contenu des fichier, il faudrait éviter tout autre moyen que le dump normal sans laisser la possibilité à tout type de conversion : tu le fais par DSPPFM.
    Tu as raison avec le DSPPFM même dans le fichier de destination j'ai le X.

    comment je peux faire pour regler ce problème?

  9. #9
    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
    Citation Envoyé par nsqualli Voir le message
    Tu as raison avec le DSPPFM même dans le fichier de destination j'ai le X.

    comment je peux faire pour regler ce problème?
    Très bien.

    Par le même moyen que tu as utilisé quand tu vu la conversion se faire, donc ça sera par un programme RPG ou Cobol en copiant le fichier. Je pense que CPYF ne le fera pas, il se plantera sur la zone numérique.

    MAIS MAIS ce n'est pas la bonne solution. Tu as bien commencé, alors finis bien. Puisque c'est un fichier entrant, donc tu fais un petit programme de contrôle des données entrantes avant de les prendre en charge et rejeter les données erronées ou tout le lot

  10. #10
    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
    Très bien.

    Par le même moyen que tu as utilisé quand tu vu la conversion se faire, donc ça sera par un programme RPG ou Cobol en copiant le fichier. Je pense que CPYF ne le fera pas, il se plantera sur la zone numérique.

    MAIS MAIS ce n'est pas la bonne solution. Tu as bien commencé, alors finis bien. Puisque c'est un fichier entrant, donc tu fais un petit programme de contrôle des données entrantes avant de les prendre en charge et rejeter les données erronées ou tout le lot
    j'aurai aimer que ça plante et comme ça je peux gérer ce plantage, le problème c'est que ça ne plante pas le traitement continu normalement et à la fin j'ai une édition avec la valeur numérique.

  11. #11
    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
    Citation Envoyé par nsqualli Voir le message
    j'aurai aimer que ça plante et comme ça je peux gérer ce plantage, le problème c'est que ça ne plante pas le traitement continu normalement et à la fin j'ai une édition avec la valeur numérique.
    - le CPYF avec *NOCHK ne plantera pas.
    - un 2è CPYF du 2è fichier dans un 3è fichier avec la même description mais avec *MAP *DROP, je pense qu'il va planter. Si c'est ce plantage que tu veux, ok.
    - mais dans le processus que tu utilises, moi je verrais un petit contrôle de la numéricité de cette zone et des autres données attendues

  12. #12
    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
    - le CPYF avec *NOCHK ne plantera pas.
    - un 2è CPYF du 2è fichier dans un 3è fichier avec la même description mais avec *MAP *DROP, je pense qu'il va planter. Si c'est ce plantage que tu veux, ok.
    - mais dans le processus que tu utilises, moi je verrais un petit contrôle de la numéricité de cette zone et des autres données attendues
    D'accord, merci beaucoup pour ton aide.
    je vais essayer de générer le plantage et si ça ne marche pas j'opterai pour la deuxième solution.
    Merci encore

  13. #13
    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
    Citation Envoyé par nsqualli Voir le message
    D'accord, merci beaucoup pour ton aide.
    je vais essayer de générer le plantage et si ça ne marche pas j'opterai pour la deuxième solution.
    Merci encore
    Pas de quoi, tiens nous au courant.

  14. #14
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Re-bonjour,

    Si tu veux faire une gestion des erreurs dans ton programme si tu utilises le RPG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Monitor;
    ton code
    on-error *all;
    Endmon;
    Larry57

  15. #15
    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
    Ce que j'ai fais en fin de compte c'est de modifier la description du fichier de destination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    R ENTF                                          
      NUMADH         5S 0       COLHDG('NUMERO ADH')  -- ligne supprimée
      NUMADH         5A         COLHDG('NUMERO ADH')
    comme ça lors de l'édition (qui ne se fait qu'on cas d'un problème), j'ai le Numéro d'adhérent avec une valeur alphanumérique.
    du coup le gestionnaire peut voir la cause du problème.

    Merci à vous tous pour votre aide.

    PS: c'est hors sujet, mais je suis débutant avec le langage de commande CL sous AS400 (je travaille surtout avec du cobol, et avant je travaillais avec le langage JCL sous MVS) et je ne trouve pas de documentation en français, si quelqu'un a une documentation détaillée en français, merci de ma la fournir.

    Merci à tout le monde par avance.

  16. #16
    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 larry57 Voir le message
    Re-bonjour,

    Si tu veux faire une gestion des erreurs dans ton programme si tu utilises le RPG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Monitor;
    ton code
    on-error *all;
    Endmon;
    Larry57
    Non j'utilise COBOL, merci quand même pour ton aide.

  17. #17
    Membre averti
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Points : 355
    Points
    355
    Par défaut
    Il y a les redbook IBM, mais c'est en anglais.
    Rares sont les docs en français.

    Ton bonheur ici http://publib.boulder.ibm.com/infoce...printingme.htm

    larry57

  18. #18
    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
    Citation Envoyé par Hédhili Jaïdane Voir le message
    ...
    - un 2è CPYF du 2è fichier dans un 3è fichier avec la même description mais avec *MAP *DROP, je pense qu'il va planter. Si c'est ce plantage que tu veux, ok.
    Rectif : ce plantage n'aura lieu que si le caractère alpha à convertir contient autre chose que des digits de 0 à 9 dans ses derniers 4 bits.

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

Discussions similaires

  1. Problème de caractères lors d'importation de bdd
    Par ferdi67 dans le forum Outils
    Réponses: 1
    Dernier message: 28/08/2006, 22h28
  2. [MySQL] problème de caractères lors de la récupération des données
    Par lecail65 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/08/2006, 16h45
  3. Compteur de caractères lors d'un saut de ligne
    Par blueman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/06/2006, 10h08
  4. [Windows XP] Pb d'encodage de caractères lors de l'import
    Par Celeri dans le forum Installation
    Réponses: 5
    Dernier message: 19/06/2006, 23h13

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