Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 15 sur 15
  1. #1
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut move pic X dans S9(x)V9(y) COMP-3

    Bonjour,
    Je dois mettre une variable en PIC X(08) (format x.xxxxxx ou xx.xxxxx) dans une variable en PIC S9(2)V9(5) USAGE COMP-3.
    J'ai essayé de faire des move avec plein de variables intermédiaires :
    PIC S9(007) COMP-3.
    PIC S9(2)V9(5) .
    PIC 9(007).

    Mais à chaque fois le move de ma variable intermédiaire dans le S9(2)V9(5) USAGE COMP-3 me donne zéro.

    Auriez-vous une idée?

    Merci

  2. #2
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 868
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 868
    Points : 3 254
    Points
    3 254

    Par défaut

    Bonjour.

    Il faudrait nous indiquer ton compilateur, sa version et ton OS.

    1) Tu peux utiliser fonction NUMVAL si tu l'as et ça résout le problème des deux formats possibles de ton pic x(8). varnum peut être en comp-3, ça ne dérange pas.
    Code :
    1
    2
                compute varnum = function numval(varalphanum).
    Sinon, tu peux faire ceci, mais le format doit être adapté :
    Code :
    1
    2
    3
    4
    5
           01  X1    pic x(8) VALUE "12.34567".                                     
           01  X11 REDEFINES X1 PIC 99.9(5).                                        
           01  X2    pic 99V9(5) COMP-3.                                            
               MOVE X11 TO X2.

  3. #3
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Merci beaucoup,
    J'utilise le mainframe d'IBM mais je n'ai pas les infos que tu me demandes sous le nez, j'essaierai ta solution au boulot lundi, au moins ça me donne de l’espoir je me suis cassée les dents dessus pendant des heures !

  4. #4
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 868
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 868
    Points : 3 254
    Points
    3 254

    Par défaut

    La fonction NUMVAL existe dans z/OS Enterprise Cobol 4.1, voir ce post : http://www.developpez.net/forums/d64...s/#post3803611

  5. #5
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Merci,
    j'espère que j'ai la bonne version !

  6. #6
    Membre Expert

    Homme Profil pro François Durand
    Ingénieur Exploitation Mainframe
    Inscrit en
    octobre 2005
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Nom : Homme François Durand
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Exploitation Mainframe
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 222
    Points : 2 097
    Points
    2 097

    Par défaut

    Citation Envoyé par pucelapin Voir le message
    Merci beaucoup,
    J'utilise le mainframe d'IBM mais je n'ai pas les infos que tu me demandes sous le nez ...
    La version du compilateur est donnée dans la ligne d'en-tête (la première ligne) de la liste de compilation ...

  7. #7
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    J'avais pris mon compte-rendu de compil, c'est ca?
    1 J E S 2 J O B L O G -- S Y S T E M M U T 0 -- N O D E C A C G D U

    Merci de votre aide.

  8. #8
    Membre Expert

    Homme Profil pro François Durand
    Ingénieur Exploitation Mainframe
    Inscrit en
    octobre 2005
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Nom : Homme François Durand
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Exploitation Mainframe
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 222
    Points : 2 097
    Points
    2 097

    Par défaut

    Citation Envoyé par pucelapin Voir le message
    J'avais pris mon compte-rendu de compil, c'est ca?
    1 J E S 2 J O B L O G -- S Y S T E M M U T 0 -- N O D E C A C G D U
    Non ça c'est le compte-rendu JES2. De mémoire, la liste de compilation devrait se trouver dans le fichier SYSPRINT ou peut-être SYSOUT ...

  9. #9
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Etant donné que ma variable finale est signée est-ce que je peux faire un REDEFINE X22 ?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    01  X1    pic x(8) VALUE "12.34567".                                     
    01  X11 REDEFINES X1 PIC 99.9(5).                                        
    01  X2    pic 99V9(5) COMP-3.                                            
    01  X22 REDEFINES X2 PIC S99V9(5) COMP-3.
    
    MOVE X11 TO X2.
    MOVE X22 TO ma variable finale.

    Merci

  10. #10
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 868
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 868
    Points : 3 254
    Points
    3 254

    Par défaut

    Pas besoin. A la limite tu définis X2 en signé pic S99v9(5) et encore ce n'est pas nécessaire, la conversion se fera d'elle même. Tu peux envoyer le X11 ou le résultat de la fonction NUMVAL directement dans ta variable quelque soit son type numérique et son signe.

  11. #11
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Merci beaucoup !

  12. #12
    Membre du Club
    Homme Profil pro Jean
    Développeur Grands Systèmes IBM
    Inscrit en
    août 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Grands Systèmes IBM

    Informations forums :
    Inscription : août 2008
    Messages : 42
    Points : 44
    Points
    44

    Par défaut

    Citation Envoyé par pucelapin Voir le message
    ...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    01  X1    pic x(8) VALUE "12.34567".                                     
    01  X11 REDEFINES X1 PIC 99.9(5).                                        
    01  X2    pic 99V9(5) COMP-3.                                            
    01  X22 REDEFINES X2 PIC S99V9(5) COMP-3.
    
    MOVE X11 TO X2.
    MOVE X22 TO ma variable finale.
    Le contenu de la zone X1 est l'équivalent d'un "Picture d'édition" format qui ne peut servir qu'à l'édition (un cul de sac, quoi !)
    Si tu as "1234567" dans un PIC x(7). par contre là le X11 en REDEFINES passe à la compilation sans erreur ce qui ne doit pas être le cas de l'exemple ci-dessus il doit au moins y avoir un Warning.
    Dans ce cas un MOVE X11 TO X2 ou X22 doit fonctionner, en principe un COMP-3 ou PACKED DECIMAL à toujours un quartet supplémentaire en fin pour y loger le signe.
    Pour information la virgule dans un format numérique DISPLAY ou PIC 9(n)V9(m) n'apparait pas dans la zone qui est de n+m octets. Seul le signe peut apparaitre sous forme de la transformation du dernier chiffre.
    En codage EBCDIC le chiffres sont codés de "F0" à "F9" le "F" est remplacé par "C" pour un nombre positif et par "D" pour une valeur négative.
    @+, j'espère que ça peut d'aider

  13. #13
    Expert Confirmé
    Homme Profil pro Hédhili Jaïdane
    Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    juin 2007
    Messages
    1 868
    Détails du profil
    Informations personnelles :
    Nom : Homme Hédhili Jaïdane
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juin 2007
    Messages : 1 868
    Points : 3 254
    Points
    3 254

    Par défaut

    Citation Envoyé par Jean GVE Voir le message
    Le contenu de la zone X1 est l'équivalent d'un "Picture d'édition" format qui ne peut servir qu'à l'édition (un cul de sac, quoi !)
    ...
    Le MOVE d'un numérique édité dans tout autre catégorie de donnée, à l'exception de l'alphabétique, est autorisé sur toutes les plateformes IBM y compris les mainframes depuis le VS Cobol II. Le petit exemple que j'ai donné est vérifié sous ILE Cobol for AS/400 (et suivants) et s'applique au S/36

    Citation Envoyé par VS Cobol II Application Programming Langage Reference
    De-editing allows moving a numeric-edited data item into a numeric or
    numeric-edited receiver. The compiler accomplishes this by first
    establishing the unedited value of the numeric-edited item (this value
    can be signed), then moving the unedited numeric value to the
    receiving numeric or numeric-edited data item.

  14. #14
    Membre du Club
    Homme Profil pro Jean
    Développeur Grands Systèmes IBM
    Inscrit en
    août 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Grands Systèmes IBM

    Informations forums :
    Inscription : août 2008
    Messages : 42
    Points : 44
    Points
    44

    Par défaut

    Bonjour,
    Tu as raison Jaïdane.
    Personnellement, j'évite de parler des particularités propre à IBM cette possibilité n'étant pas dans la norme ANSI85.
    Et quand on utilise (quand c'est vraiment plus pratique, quasiment indispensable) ces particularités ou possibilités apportés par normes récentes, il faut penser à mettre un commentaire pour attirer l'attention en cas d'un éventuel portable (ou pour une maintenance faite par un vieux grigou comme moi ).
    Pour les débutants il est préférable d'utiliser une programmation qui fonctionne sur toutes les plates-formes. Pour convertir une chaine avec un "point décimal", mieux vaut utiliser la fonction NUMVAL comme signalé au dessus.
    @+

  15. #15
    Invité de passage
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par Jean GVE Voir le message
    Pour les débutants il est préférable d'utiliser une programmation qui fonctionne sur toutes les plates-formes.
    @+
    Je suis bien d'accord

    Citation Envoyé par Jean GVE Voir le message
    Pour convertir une chaine avec un "point décimal", mieux vaut utiliser la fonction NUMVAL comme signalé au dessus.
    @+
    Je n'ai pas la bonne version pour l'utiliser

    Merci de votre aide, j'ai l'habitude de développer en pl sql et on n'a pas tous ces problèmes ...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •