|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre du Club
![]() Inscription : février 2006 Messages : 153 ![]() |
Bonsoir ,
Je pratique depuis peu sur le Cobol , j'ai un peu du mal à comprendre comment ce langage travaille sur la gestion des fichiers ( buffer etc ) Par exemple dans un fichier comme ceci Code :
Code :
Code :
Je trouve cela étrange , pourtant j'ai compté les caractères pour chaque ligne du fichier de l'enregistrement et cette structure devrait être bonne comparé à la première. Je signale que ce fichier est en line sequential et je suis sous windows 7 Merci pour toutes explications. |
||||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Bonjour.
Tel que tu le présentes, ça semble en effet un peu bizarroïde. Pour en avoir le coeur net, fais nous un dump brut de ton fichier pour que l'on voie réellement comment les données sont stockées ainsi que ces vides après le nom. En mode console, passe la commande TYPE nom_fichier sur disque, ou par le programme Cobol, fais un DISPLAY de tout l'enregistrement (enr-vac). Je soupçonne ta date d'être en usage comp-3 et non en display. |
|
|
00
|
|
|
#3 | |||
|
Membre du Club
![]() Inscription : février 2006 Messages : 153 ![]() |
J'ai bien sûr fait un display de enr-vac et pour la première cela se passe bien , mais pour la deuxième non , à l'affichage la date n'est pas respecté sur 4 positions.
Pour le type il m'affiche la même chose Code :
Citation:
|
|||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
COMP-3, abréviation de COMPUTATIONAL-3, est un format de stockage interne des données numériques pour minimiser (diviser presque par deux) l'espace mémoire occupé. Il fait partie du noyau Cobol depuis l'ANS 74. Il peut être connu dans certains compilateurs sous d'autres noms : packed, condensed ou même computational tout court.
Ta date qui tient dans la 1ère description sur 7 caractères numériques peut, justement, tenir sur 4 octets en comp-3. - indique nous ton compilateur, - donne nous le résultat de la commande TYPE ou mets ton fichier en pièce jointe. - donne nous le résultat du display de tout l'enregistrement, ET NON ZONE PAR ZONE. |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
En ouvrant le fichier VAC.DAT par npp ou word, j'ai trouvé des caractères de tabulation mélangés avec des espaces, bein Cobol n'aime pas trop ça : il faudrait que tu réorganises les données dans le fichier pour coller pile à ta description en complétant éventuellement par des espaces à la fin des zones alphanumériques et des zéros au début des zones numériques. Pas de tabulations, sinon il faudrait les considérer comme des caractères à part entière et les prévoir dans ta description, mais ça ne donne jamais le résultat escompté. Les tabulations donnent un effet visuel trompeur. Il faut utiliser des éditeurs de texte permettant une taille constante des caractères sans formatage.
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : février 2006 Messages : 153 ![]() |
En effet , tu confirmes ce que je pensais , ce n'est pas un fichier que j'ai crée mais que j'ai reçu pour un exercice , je pensais que le problème venait de moi...
J'ai aussi remarqué cela avec notepad++ mais je pensais pas que ma prof ce trompait Merci pour ton aide Hédhili Jaïdane Une dernière chose , quand on crée un fichier séquentiel texte, faut-il mieux le faire à l'aide d'un programme ? ou le créer dans un éditeur et faire attention au caractère comme les tabulations etc qui sont invisibles ? Est-ce que ce fichier crée avec une des deux méthodes sera portable sur un autre pc ? compilateur etc ? |
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() ![]() |
Citation:
Citation:
Citation:
Pas de soucis pour la portabilité entre pc, OS et compilos tant qu'il s'agit de fichiers texte non formatés, parfois quelques problèmes avec des codes pages différents mais pas plus. Ce n'est pas le cas parfois avec les fichiers indexés, il faudrait y faire attention. Passer par les fichiers séquentiels et re-indexer. |
|||
|
|
00
|
|
|
#9 | |
|
Membre chevronné
![]() Guillaume VENTREz/OS Technical Leader Inscription : décembre 2006 Messages : 514 ![]() |
Léger rectificatif, à ma connaissance :
Citation:
S9 à S9(4) COMP --> 2 octets S9(5) à S9(9) COMP --> 4 octets S9(10) à S9(18) COMP --> 8 octets .
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★ |
|
|
10
|
|
|
#10 | |
|
Membre Expert
![]() ![]() |
Une petite IBMrie :
Citation:
|
|
|
|
10
|
|
|
#11 |
|
Membre chevronné
![]() Guillaume VENTREz/OS Technical Leader Inscription : décembre 2006 Messages : 514 ![]() |
Roumf!!! Je retire
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★ |
|
00
|
|
|
#12 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
|
|
|
10
|
|
|
#13 |
|
Membre Expert
![]() ![]() |
Bonjour.
Bonjour Guillaume, bonjour François. En effet il n'y a rien à retirer et il ne faudrait pas s'inquiéter de cette IBMrie introduite sur L'AS/400 (et les machines suivantes). On a toujours su que COMPUTATIONAL est du binaire, sauf que son altesse l'AS/400 travaille par défaut en comp-3 sur les nombres, IBM a eu l'intelligence suprême de considérer sur cette machine, le computational comme du comp-3, et ce par défaut, jusqu'à l'apparition dans les versions récentes de l'ILE Cobol (V5R1) de l'option COMPASBIN soit disant pour des soucis de portabilité et de compatibilité avec les mainframes. ... Et il a fallu se casser les dents là dessus pour s'en rendre compte. |
|
|
10
|
|
|
#14 | |||||||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 1 ![]() |
Il suffit juste de remplacer nom pic x(10) par nom pic x(13)
Citation:
|
|||||||
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com