A voir également:
- Pic z cobol
- Code ascii de a à z - Guide
- Pic collage gratuit - Télécharger - Photo & Graphisme
- Cpu z download - Télécharger - Informations & Diagnostic
- Sorigny tours pic - Forum Windows
- Z-library - Accueil - Services en ligne
5 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
Modifié par cchristian le 8/07/2011 à 11:31
Modifié par cchristian le 8/07/2011 à 11:31
Bonjour,
La PICTURE d'édition (Z(6)9V99) doit probablement être définie avec une virgule Z(6)9,99 (ou un point suivant la clause DECIMAL POINT du paragraphe SPECIAL-NAMES) plutôt qu'avec une marque décimale virtuelle (V)
Cordialement.
Cchristian.
La PICTURE d'édition (Z(6)9V99) doit probablement être définie avec une virgule Z(6)9,99 (ou un point suivant la clause DECIMAL POINT du paragraphe SPECIAL-NAMES) plutôt qu'avec une marque décimale virtuelle (V)
Cordialement.
Cchristian.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
Modifié par cchristian le 12/07/2011 à 12:38
Modifié par cchristian le 12/07/2011 à 12:38
Une zone pic X(25) à mettre dans une zone 9(7)V99. (par exemple 0000002,50)
Jusque là ça marche.
Je pense que le problème est lié au fait que tu déplaces du PIC X... dans du PIC 9V... et qui plus est du X(25) (je te rappelle au passage que le COBOL n'accepte que 18 chiffres en virgule fixe pour une zone numérique. Je présume qu'il y a troncature à gauche de la zone réceptrice de la valeur X(25). C'est d'ailleurs étonnant que le compilateur n'ait pas réagi.
Si tu peux redéfinir ta zone émettrice de X(25) et SI tu es certain qu'elle est emplie au moins dans ses 9 dernières positions par des chiffres (0 à 9) essaie cela :
01 ZONE-EMET PIC X(25).
01 RED-ZONE-EMET REDEFINES ZONE-EMET.
05 FILLER PIC X(16).
05 ZONE-NUM PIC 9(07)V99.
Tu déplaces ensuite ZONE-NUM dans la zone réceptrice PIC 9(7)V99.
MOVE ZONE-NUM TO ZONE-RECEPT.
Cordialement.
Cchristian.
Jusque là ça marche.
Je pense que le problème est lié au fait que tu déplaces du PIC X... dans du PIC 9V... et qui plus est du X(25) (je te rappelle au passage que le COBOL n'accepte que 18 chiffres en virgule fixe pour une zone numérique. Je présume qu'il y a troncature à gauche de la zone réceptrice de la valeur X(25). C'est d'ailleurs étonnant que le compilateur n'ait pas réagi.
Si tu peux redéfinir ta zone émettrice de X(25) et SI tu es certain qu'elle est emplie au moins dans ses 9 dernières positions par des chiffres (0 à 9) essaie cela :
01 ZONE-EMET PIC X(25).
01 RED-ZONE-EMET REDEFINES ZONE-EMET.
05 FILLER PIC X(16).
05 ZONE-NUM PIC 9(07)V99.
Tu déplaces ensuite ZONE-NUM dans la zone réceptrice PIC 9(7)V99.
MOVE ZONE-NUM TO ZONE-RECEPT.
Cordialement.
Cchristian.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
8 juil. 2011 à 19:17
8 juil. 2011 à 19:17
OK, à Lundi,
Bonjour,
Eh bien zut ça ne marche pas, je ne comprends pas.
J'ai essayé l'exemple que tu m'as donné, et c'est comme si ( c'est même ça), la zone numérique se met dans le pic x(16)???
Du coup ma zone en sortie est zéro!
Quand tu dis "Tu déplaces ensuite ZONE-NUM dans la zone réceptrice PIC 9(7)V99' tu veux dire dans la zone ZZZZZZ9,99 (ZONE-RECEPT)? C'est bien ça?
Voilà
Merci
Eh bien zut ça ne marche pas, je ne comprends pas.
J'ai essayé l'exemple que tu m'as donné, et c'est comme si ( c'est même ça), la zone numérique se met dans le pic x(16)???
Du coup ma zone en sortie est zéro!
Quand tu dis "Tu déplaces ensuite ZONE-NUM dans la zone réceptrice PIC 9(7)V99' tu veux dire dans la zone ZZZZZZ9,99 (ZONE-RECEPT)? C'est bien ça?
Voilà
Merci
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
12 juil. 2011 à 03:08
12 juil. 2011 à 03:08
Bonsoir,
Voici une solution testée du problème qui fonctionne chez moi :
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCOB.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 ZONE-EMET PIC X(25) VALUE '0123456789012345678901234'.
01 RED-ZONE-EMET REDEFINES ZONE-EMET.
05 FILLER1 PIC X(16).
05 ZONE-NUM PIC 9(07)V99.
01 ZONE-RECEPT PIC ZZZZZZ9,99.
PROCEDURE DIVISION.
DEBUT.
MOVE ZONE-NUM TO ZONE-RECEPT
DISPLAY ' ZONE-RECEPT : ', ZONE-RECEPT UPON CONSOLE.
* Le résultat est: 6789012,34
MOVE " (15 espaces)0000012346" TO ZONE-EMET.
MOVE ZONE-NUM TO ZONE-RECEPT
DISPLAY ' ZONE-RECEPT : ', ZONE-RECEPT UPON CONSOLE.
* Le résultat est: 123,46.
STOP RUN.
END-PGM.
Voici une solution testée du problème qui fonctionne chez moi :
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCOB.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 ZONE-EMET PIC X(25) VALUE '0123456789012345678901234'.
01 RED-ZONE-EMET REDEFINES ZONE-EMET.
05 FILLER1 PIC X(16).
05 ZONE-NUM PIC 9(07)V99.
01 ZONE-RECEPT PIC ZZZZZZ9,99.
PROCEDURE DIVISION.
DEBUT.
MOVE ZONE-NUM TO ZONE-RECEPT
DISPLAY ' ZONE-RECEPT : ', ZONE-RECEPT UPON CONSOLE.
* Le résultat est: 6789012,34
MOVE " (15 espaces)0000012346" TO ZONE-EMET.
MOVE ZONE-NUM TO ZONE-RECEPT
DISPLAY ' ZONE-RECEPT : ', ZONE-RECEPT UPON CONSOLE.
* Le résultat est: 123,46.
STOP RUN.
END-PGM.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
8 juil. 2011 à 14:25
J'ai effectivement mis Special-Names. Decimal point is comma.
Ma picture d'édition est bien Z(6)9,99 (au lieu de V) mais ça marche pas , ça me met ce que je disais.
Donc je ne comprends pas . Je dois mal programmer à un moment donné je ne sais pas.
Peux-tu me mettre un modèle de programmation?
Merci
Cordialement