|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
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 |
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
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 :
Code :
|
||||
|
|
20
|
|
|
#3 |
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
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 ! |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
La fonction NUMVAL existe dans z/OS Enterprise Cobol 4.1, voir ce post : http://www.developpez.net/forums/d64...s/#post3803611
|
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
Merci,
j'espère que j'ai la bonne version ! |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 165 ![]() |
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
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. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 165 ![]() |
|
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
Etant donné que ma variable finale est signée est-ce que je peux faire un REDEFINE X22 ?
Code :
Merci |
||
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
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.
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
Merci beaucoup !
|
|
|
00
|
|
|
#12 | |||
|
Membre du Club
![]() Jean Développeur Grands Systèmes IBM Inscription : août 2008 Messages : 37 ![]() |
Citation:
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 |
|||
|
|
00
|
|
|
#13 | ||
|
Expert Confirmé
![]() Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol Inscription : juin 2007 Messages : 1 783 ![]() |
Citation:
Citation:
|
||
|
|
10
|
|
|
#14 |
|
Membre du Club
![]() Jean Développeur Grands Systèmes IBM Inscription : août 2008 Messages : 37 ![]() |
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. @+ |
|
|
00
|
|
|
#15 | ||
|
Invité de passage
![]() Développeur COBOL Inscription : juin 2012 Messages : 7 ![]() |
Citation:
Citation:
Merci de votre aide, j'ai l'habitude de développer en pl sql et on n'a pas tous ces problèmes ... |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com