[COBOL] suppression de 0 à l'édition

Fermé
didiche - Modifié par aquarelle le 8/07/2011 à 10:18
 didiche - 12 juil. 2011 à 06:56
Bonjour,

J'ai un problème pour éditer une zones sans les zero devant.
Voilà,
Une zone pic X(25) à mettre dans une zone 9(7)V99. (par exemple 0000002,50)
Jusque là ça marche.
Ensuite pour éditer cette zone 9(7)V99 dans Z(6)9V99, ça ne marche plus car j'obtiens :
2<0,5 (ou quelque chose comme cela je ne sais plus).
Comment est-ce que je dois faire?
merci.
JG


A voir également:

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
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.
0
Bonjour,

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
0
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
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.
0
Merci,
J'essaie lundi et je te redis.
0
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
OK, à Lundi,
0
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
0
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
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Merci, je vais essayer.
0