Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Cobol
Cobol Forum d'entraide sur la programmation en langage Cobol
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/11/2011, 23h20   #1
Membre du Club
 
Inscription : février 2006
Messages : 153
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 153
Points : 54
Points : 54
Par défaut Explication gestion fichier par Cobol

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
AP1ABDEL	0315204
AP1ALFRED       0701106
AP1DELPORTE	0801208
AP1DUBOIS	0215202
AP2AUGUSTE	0701106
AP2DEMON	1001304
AP2MARTIN	1015205
AP2BEDOUIN	0415107
AP3MAURICE	0901204
AP3STAVE	0115106
FE1BOUDIN	0815204
FE1THOMAS	0601205
FE1VIRAN	0615104
FE2CALNOT	0715202
FE2PETRIN	0601201
FE2SARDIN	0901110
FE2SIMON	1101204
HT1KIM	        0305104
HT1LOUMIN	0601202
HT1NADINE	0401104
HT2COLIN	2112202
HT2PICASSO	0601108
HT3MANON	0701203
HT3LESCAUT	0415104
HT3TREMOIS	0515303
Avec une structure ainsi
Code :
1
2
3
4
5
6
7
8
9
10
       FD vac_logique.
       01 enr-vac.
          02 cle-tri.
            04 formule   pic x(2).
              88 fin value "fi".
            04 categorie pic 9.
            04 nom      pic x(10).
          02 date-deb   pic 9999999.
          02 nb-sem     pic 9.
          02 nb-pers    pic 99.
Si je fais ainsi , le programme respect la date en 4 chiffres et nb-sem , nb-pers aussi , mais si je fais comme ceci

Code :
1
2
3
4
5
6
7
8
9
10
       FD vac_logique.
       01 enr-vac.
          02 cle-tri.
            04 formule   pic x(2).
              88 fin value "fi".
            04 categorie pic 9.
            04 nom      pic x(10).
          02 date-deb   pic 9(4).
          02 nb-sem     pic 9.
          02 nb-pers    pic 99.
ma date n'est plus sur 4 positions à la lecture et le nb-sem n'est pas celui que je veux ?
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.
Johnny P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 08h39   #2
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 10h26   #3
Membre du Club
 
Inscription : février 2006
Messages : 153
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 153
Points : 54
Points : 54
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
AP1ABDEL	0315204
AP1ALFRED       0701106
AP1DELPORTE	0801208
AP1DUBOIS	0215202
AP2AUGUSTE	0701106
AP2DEMON	1001304
AP2MARTIN	1015205
AP2BEDOUIN	0415107
AP3MAURICE	0901204
AP3STAVE	0115106
FE1BOUDIN	0815204
FE1THOMAS	0601205
FE1VIRAN	0615104
FE2CALNOT	0715202
FE2PETRIN	0601201
FE2SARDIN	0901110
FE2SIMON	1101204
HT1KIM	        0305104
HT1LOUMIN	0601202
HT1NADINE	0401104
HT2COLIN	2112202
HT2PICASSO	0601108
HT3MANON	0701203
HT3LESCAUT	0415104
HT3TREMOIS	0515303
Citation:
Je soupçonne ta date d'être en usage comp-3 et non en display.
Je ne connais pas ce que c'est et dans mon cours je vois pas de comp-3 c'est un format spécial ?
Johnny P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 13h07   #4
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 13h27   #5
Membre du Club
 
Inscription : février 2006
Messages : 153
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 153
Points : 54
Points : 54
Net Express
VAC.zip
Quand je fais un display de l'enregistrement entier j'ai cela , pour la structure avec date-deb en 9(4)
Johnny P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 14h25   #6
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 14h41   #7
Membre du Club
 
Inscription : février 2006
Messages : 153
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 153
Points : 54
Points : 54
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 , j'ai passé des heures à comprendre le pourquoi du comment.

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 ?
Johnny P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 15h01   #8
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
Citation:
Envoyé par Johnny P. Voir le message
....mais je pensais pas que ma prof se trompait , j'ai passé des heures à comprendre le pourquoi du comment.
Tout le monde peut se tromper et ça peut être fait exprès pour cela vous un bon exercice de recherche

Citation:
Merci pour ton aide Hédhili Jaïdane
Pas de quoi et je serai là tant que je peux.

Citation:
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 ?
Pour un fichier texte non indexé, peu importe la méthode pourvu que l'on prévoie tout l'espace nécessaire pour toutes les données, sans tabulation, sans aucun type de formatage, sans balises, et tutti quanti. Ne prévoir que ce qui est décrit dans la structure. Sauf le caractère CR/LF qu'il faudrait penser à mettre en fin d'enregistrement. (line sequential obligatoire pour certains compilos).

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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 23h20   #9
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Léger rectificatif, à ma connaissance :

Citation:
Envoyé par Hédhili Jaïdane Voir le message
COMP-3 [...] Il peut être connu dans certains compilateurs sous d'autres noms : packed, condensed ou même computational tout court.
Computational tout court = COMP = BINARY <> COMP-3
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 ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2011, 11h41   #10
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
Une petite IBMrie :
Citation:
Envoyé par Extrait de WebSphere Development Studio ILE COBOL Language Reference Version 5 SC09-2539-05
For the ILE COBOL compiler, the COMPUTATIONAL phrase is synonymous with
- USAGE COMP-4(Binary), if option COMPASBIN is specified
- Otherwise, PACKED-DECIMAL.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/11/2011, 13h46   #11
Membre chevronné
 
Avatar de Peut-êtreUneRéponse
 
Homme Guillaume VENTRE
z/OS Technical Leader
Inscription : décembre 2006
Messages : 514
Détails du profil
Informations personnelles :
Nom : Homme Guillaume VENTRE
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : z/OS Technical Leader
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2006
Messages : 514
Points : 617
Points : 617
Roumf!!! Je retire
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★
Peut-êtreUneRéponse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 22h42   #12
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Citation:
Envoyé par Peut-êtreUneRéponse Voir le message
Roumf!!! Je retire
Pas la peine ... Avec Enterprise COBOL for z/OS :

Citation:
COMPUTATIONAL or COMP
This is the equivalent of BINARY. The COMPUTATIONAL phrase is synonymous with BINARY.
Source :
Enterprise COBOL for z/OS
Language Reference
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2011, 12h27   #13
Membre Expert
 
Avatar de Hédhili Jaïdane
 
Homme Hédhili Jaïdane
Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol
Inscription : juin 2007
Messages : 1 668
Détails du profil
Informations personnelles :
Nom : Homme Hédhili Jaïdane
Localisation : Tunisie

Informations professionnelles :
Activité : Consultant/Assistant/Formateur/Développeur Indépendant AS/400 Cobol

Informations forums :
Inscription : juin 2007
Messages : 1 668
Points : 2 167
Points : 2 167
Envoyer un message via Skype™ à Hédhili Jaïdane
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.
__________________

Hédhili Jaïdane est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 00h18   #14
Invité de passage
 
Inscription : mai 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 1
Points : 1
Points : 1
Il suffit juste de remplacer nom pic x(10) par nom pic x(13)
Citation:
Envoyé par Johnny P. Voir le message
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
AP1ABDEL	0315204
AP1ALFRED       0701106
AP1DELPORTE	0801208
AP1DUBOIS	0215202
AP2AUGUSTE	0701106
AP2DEMON	1001304
AP2MARTIN	1015205
AP2BEDOUIN	0415107
AP3MAURICE	0901204
AP3STAVE	0115106
FE1BOUDIN	0815204
FE1THOMAS	0601205
FE1VIRAN	0615104
FE2CALNOT	0715202
FE2PETRIN	0601201
FE2SARDIN	0901110
FE2SIMON	1101204
HT1KIM	        0305104
HT1LOUMIN	0601202
HT1NADINE	0401104
HT2COLIN	2112202
HT2PICASSO	0601108
HT3MANON	0701203
HT3LESCAUT	0415104
HT3TREMOIS	0515303
Avec une structure ainsi
Code :
1
2
3
4
5
6
7
8
9
10
       FD vac_logique.
       01 enr-vac.
          02 cle-tri.
            04 formule   pic x(2).
              88 fin value "fi".
            04 categorie pic 9.
            04 nom      pic x(10).
          02 date-deb   pic 9999999.
          02 nb-sem     pic 9.
          02 nb-pers    pic 99.
Si je fais ainsi , le programme respect la date en 4 chiffres et nb-sem , nb-pers aussi , mais si je fais comme ceci

Code :
1
2
3
4
5
6
7
8
9
10
       FD vac_logique.
       01 enr-vac.
          02 cle-tri.
            04 formule   pic x(2).
              88 fin value "fi".
            04 categorie pic 9.
            04 nom      pic x(10).
          02 date-deb   pic 9(4).
          02 nb-sem     pic 9.
          02 nb-pers    pic 99.
ma date n'est plus sur 4 positions à la lecture et le nb-sem n'est pas celui que je veux ?
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.
dehbaoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 05h52   #15
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 096
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 096
Points : 1 704
Points : 1 704
Citation:
Envoyé par dehbaoui Voir le message
Il suffit juste de remplacer nom pic x(10) par nom pic x(13)
Pas sûr que cela suffise non ... le problème d'origine venait de la présence de caractères de tabulation dans le fichier en entrée ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h17.


 
 
 
 
Partenaires

Hébergement Web