Encore un problème COBOL

OLBI -  
 olbi -
Bonsoir,

J'ai un petit probleme lorsque j'encode un nombre dans une screen section. Je suis a chaque fois obligé de deleter tous l'espace avant de pouvoir encoder dans le champ.
J'execute le programme sous DOS.

exemple : MONTANT : _ _ _._ _ eur je ne sais pas encode de suite je dois faire delete avant.

JE PENSE QUE LE PROBLEME PROVIENT DE LA FACON DONT LE NOMBRE EST ENCODE. EN EFFET DANS LE PIC X ON COMMENCE DE GAUCHE VERS LA DROITE TANDIS QUE POUR LES PIC 9 ON VA DE DROITE A GAUCHE.
EST-CE QUE ON PEUT INVERSER LE SENS D4ENCODAGE. SI OUI, COMMENT ?

MERRRRCI
Merci pour
votre aide.
A voir également:

4 réponses

HOOK Messages postés 353 Statut Membre 63
 
Salut,

Je pensais pas trouver du Cobol ici ! Bon, explique moi un peu mieux les choses. Tu programmes dans quel environnement et avec quelle version de Cobol ?
Tu ne peux gèrer le cadrage d'une chaine de caractères que dans une zone en PIC X (en complétant avec des blancs). Mais je ne dois pas t'apprendre grand chose. J'attends donc des infos supplémentaires sur le contexte.

A+

HooK ~ "Un autre monde est possible, si..."
l'on passe à l'Attac !... ;o)
0
olbi
 
je programme avec le compilateur CA-realia II workbench version 3.0.59 sous l'environement windows XP . j'execute le programme sous DOS. Comme je disais plus haut pour chaque champ numerique dans une screen section je dois presser la touche delete au tant de fois que le nombre de position.
Un simple accept montant ( avec montant declarer en niveau 77 avec une pic 9(4) par exemple fonctionne par contre si je fais dans la screen section ceci:

01 scr.
02 montant-scr line 2 col 3 pic 9(4) using montant

procedure division.

accept montant-scr.

ca plante!!!!

Un grand merci de vous interresser à mon probleme!!!.
0
HOOK Messages postés 353 Statut Membre 63
 
Je ne vais peut-être pas t'apporter la solution exacte. En fait, cette version de Cobol doit être trés spécifique au type d'environnement dans lequel tu bosses. Moi, j'ai longtemps fait du Cobol sur gros systèmes IBM. Je vais donc te proposer plutôt quelques idées.
Pour que ça plante aussi sec, c'est probablement parce que l'accept récupère une valeur non numérique et "tente" de la mettre dans le PIC 9(4). Comment est définie physiquement ta zone de saisie et le masque d'écran gére-t-il le complément des zones non entièrement saisies (des fois qu'il mettrait du "space" dans les positions de gauche pour cadrer le montant à droite).

Tu devrais modifier ton prog en faisant l'accept dans une zone alphanumérique pour voir son contenu par un outil de debuggage. Si tu n'en dispose pas, teste ta zone alpha bestialement :
IF ZONE-ALPHA NOT NUMERIC
PERFORM routine-abandon
END-IF.
Tiens moi au courant. En ce moment, j'ai un peu de temps libre...
Bon courage !

HooK ~ "Un autre monde est possible, si..."
l'on passe à l'Attac !... ;o)
0
olbi
 
un grand merci déjà mais ce que je ne comprend c'est que la donnée que j'introduis est bien numérique c'est un montant.
Mais je vais quand meme tester.
Une petit question: PEUT ON FAIRE UN MOVE D'UN ALPHANUMERIC VERS UN NUMERIQUE? si la donnee alphanumerique est bien numerique grace au test.?

ps: je suis encore aux études en informatique et je connais pas des masses de langage de programmation mais que me conseilleriez vous comme langage qui se rapproche le plus du cobol pour faire des programmes avec une gestion d'écran?
MERCI Olbi
0
HOOK Messages postés 353 Statut Membre 63
 
Et bien, à vrai dire, à part le cobol... je connais rien d'autre ! Et oui, j'ai commencé l'info en 1981. A cette époque, la micro n'existait pratiquement qu'à l'état de prototype (ça existait mais c'était guère plus évolué qu'une calculette !) et il y avait peu de langages évolués. Cobol se taillait déjà la part du lion en info de gestion depuis presque une dizaine d'années. Et malgré sa mort 1000 fois annoncée, il doit bien tourner encore quelques millions de programmes en Cobol de part le monde ! Donc, je ne connais que le Cobol ! Evidemment, il faut savoir plus que ça. Mais c'est une autre histoire. Et une question de temps. Ceci dit, pour faire du transactionnel, à moins de développer encore pour des écrans 3270 (équivalent des écrans des terminaux passifs d'antant), il existe des langages et des méthodes bien plus adaptés aux outils de travail d'aujourd'hui. Je te conseille vivement de faire un tour dans la base de connaissance de CCM (http://www.commentcamarche.net/faq/) qui t'en apprendra de façon bien plus pertinente que mes discours !
Pour répondre à ta question : Oui, on peut faire un move d'une zone alphanum dans une zone numérique si l'on s'est assuré de sa numéricité. Il existe des moyens de forcer la numéricité d'une zone de saisie lors de la définition du masque d'écran. Toutefois, comme on peut toujours entrer des caractères spéciaux... vaut mieux faire le contrôle (il suffit de se batir une fois un petit algo réutilisable).
Si tu as besoin encore d'aide, il faudra me donner d'avantage de précisions sur l'environnement dans lequel tu travailles et sur l'appli que tu développes, même si c'est dans le cadre d'études ou d'un stage. Si tu peux, investis plutôt dans les nouvelles technologies. C'est un secteur nettement plus ouvert en terme de débouchés. J'espère avoir encore assez de disponibilité pour te filer un coup de main.
Courage !

HooK ~ "Un autre monde est possible, si..."
l'on passe à l'Attac !... ;o)
0
HOOK Messages postés 353 Statut Membre 63
 
La meilleure source d'info sur COBOL dans ses différents environnements est encore :
http://www-306.ibm.com/software/awdtools/awdt-products.html
Des heures et des heures de lecture passionnante... ;-)

HooK ~ "Un autre monde est possible, si..."
l'on passe à l'Attac !... ;o)
0
olbi
 
Un grand merci pour votre patience et vos explications.

OLBI.
0