IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

Explication gestion fichier par Cobol


Sujet :

Cobol

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  3. #3
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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 ?

  4. #4
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  5. #5
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    Par défaut
    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)

  6. #6
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  7. #7
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    Par défaut
    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 ?

  8. #8
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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

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

    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.

  9. #9
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    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

    .

  10. #10
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  11. #11
    Membre éclairé Avatar de Peut-êtreUneRéponse
    Homme Profil pro
    IT Specialist - IBM Z
    Inscrit en
    Décembre 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : IT Specialist - IBM Z
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 548
    Points : 801
    Points
    801
    Par défaut
    Roumf!!! Je retire

  12. #12
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Peut-êtreUneRéponse Voir le message
    Roumf!!! Je retire
    Pas la peine ... Avec Enterprise COBOL for z/OS :

    COMPUTATIONAL or COMP
    This is the equivalent of BINARY. The COMPUTATIONAL phrase is synonymous with BINARY.
    Source :
    Enterprise COBOL for z/OS
    Language Reference

  13. #13
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    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.

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  15. #15
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    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 ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2009, 15h23
  2. [PC] Gestion de fichier en Cobol
    Par pat45 dans le forum Cobol
    Réponses: 4
    Dernier message: 24/11/2006, 07h26
  3. Gestion de fichier par fopen
    Par clampin dans le forum C
    Réponses: 3
    Dernier message: 02/10/2006, 21h51
  4. Gestion accès au fichier par utilisateur
    Par Invité dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2006, 13h26
  5. pb gestion de fichier par un package
    Par scorbo dans le forum Modules
    Réponses: 4
    Dernier message: 11/04/2006, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo