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 :

move pic X dans S9(x)V9(y) COMP-3


Sujet :

Cobol

  1. #1
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    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
    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.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                compute varnum = function numval(varalphanum).
    Sinon, tu peux faire ceci, mais le format doit être adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    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
    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
    La fonction NUMVAL existe dans z/OS Enterprise Cobol 4.1, voir ce post : http://www.developpez.net/forums/d64...s/#post3803611

  5. #5
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    Par défaut
    Merci,
    j'espère que j'ai la bonne version !

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    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
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    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
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    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
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    Par défaut
    Etant donné que ma variable finale est signée est-ce que je peux faire un REDEFINE X22 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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
    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
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    Par défaut
    Merci beaucoup !

  12. #12
    Membre habitué
    Homme Profil pro
    Retraité ex-Développeur Grands Systèmes IBM
    Inscrit en
    Août 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 74
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par pucelapin Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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 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 habitué
    Homme Profil pro
    Retraité ex-Développeur Grands Systèmes IBM
    Inscrit en
    Août 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 74
    Points : 133
    Points
    133
    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
    Nouveau Candidat au Club
    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 : 1
    Points
    1
    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 ...

Discussions similaires

  1. Problème de pic 16f84a dans mplabx et xc8
    Par Math2012 dans le forum MPLAB
    Réponses: 0
    Dernier message: 17/06/2014, 21h26
  2. Réponses: 4
    Dernier message: 14/10/2011, 21h17
  3. [RID] Pic-nic dans le parc du château de Versailles
    Par BiM dans le forum La taverne du Club : Humour et divers
    Réponses: 207
    Dernier message: 22/08/2007, 15h23
  4. demande info de la fonction move dans un module
    Par lechtifred dans le forum Access
    Réponses: 1
    Dernier message: 01/05/2006, 15h04
  5. algorithme detection de pics dans une courbe
    Par bfb dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 31/03/2006, 11h08

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