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 :

Compréhension exacte du READ fichier AT END


Sujet :

Cobol

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut Compréhension exacte du READ fichier AT END
    Bonjour à tous,

    je suis en train d 'analyser un code source d'un gros programme de gestion de paie en cobol, je tombe souvent sur l'instruction de lecture d'un fichier ; pour info je n'ai pas d'accès à la DATA DIVISION (verrouillée ) donc je n'ai aucune visibilité sur la structure du fichier à lire , mais j'ai l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    READ  ME-FICHIER
                         AT END    
           MOVE  HIGH-VALUE  TO  ME00  ME99
           MOVE  '1'  TO  ME-CFIN
                     NOT  AT END  
           ADD    1   TO  ME-CTRELU
        END-READ.
    je dispose d'un outil de couverture du code , qui permet de voir quelles instructions ont été exécutée (affichées en vert) et celles non exécutées (affichées en rouge) , et justement sur ce bloc , ce qui vient derrière le NOT AT END qui reste en rouge , on m’explique que la raison est que le fichier ME EST VIDE ;

    Je ne comprends pas le fonctionnement du" read at end ....... not at end " , est il possible de m'expliquer? si on arrive pas à la fin du fichier voudrait il dire que le fichier est impérativement vide?

    Merci beaucoup



  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.

    Pour te répondre de façon plus appropriée et plus précise,il nous manque le compilateur et l'OS que tu ne nous as pas donnés.
    Cependant, et indépendamment de ton outil de couverture du code, le AT END est exécuté quand il n'y a plus d'enregistrements disponibles dans le fichier lors de l'exécution d'une lecture séquentielle dans le mode d'accès SEQUENTIAL ou DYNAMIC (READ NEXT, PRIOR, LAST, FIRST). Le NOT AT END est juste la condition contraire.
    Maintenant, si le fichier est vide, à l'OPEN on peut tester le statut du fichier pour le savoir. Si on ne le fait pas, l'indicateur de "disponibilité d'un enregistrement suivant" est mis à "false" et le traitement continue. A la première lecture séquentielle, on tombe dans le AT END.
    C'est le cas de la plupart des compilateurs courants sur la plupart des OS. Il se peut que dans certains cas de figures, le programme s'arrête à l'OPEN si le fichier est vide et qu'il n'y a pas de traitement d'erreurs prévu.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 59
    Points : 62
    Points
    62
    Par défaut
    Ton aide m'a été très précieuse , j'ai très bien compris !

    Sinon je ne saurait pas te dire pour l'OS et le compilateur , je bosse sur le code en aval via un coutil web affichant le code des blocs ... j'ai même pas accès à la data division

    En tout cas merci encore

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Maintenant, si le fichier est vide, à l'OPEN on peut tester le statut du fichier pour le savoir. Si on ne le fait pas, l'indicateur de "disponibilité d'un enregistrement suivant" est mis à "false" et le traitement continue.
    Bonjour,

    Il y a coquille : la fin de fichier, représentée par la valeur de File-Status 10, n'est pas détectée à l'ouverture, mais seulement lors de la lecture
    Pour un fichier vide c'est donc la 1ère lecture qui renverra cette valeur de file-status.

  5. #5
    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.

    Il me semble l'avoir vu pour un compilo quelconque, je ne sais plus lequel mais tant pis. Au temps pour moi, tu as tout à fait raison. Mille excuses pour cette erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lire la ligne exact d'un fichier?
    Par xXO--Hades--OXx dans le forum Android
    Réponses: 2
    Dernier message: 31/01/2011, 15h40
  2. Commande Seek et Read (Fichier Binaire)
    Par DelphiBug dans le forum Débuter
    Réponses: 0
    Dernier message: 10/05/2009, 04h17
  3. Connaître la durée exacte d'un fichier MP3
    Par rambc dans le forum Programmation multimédia/Jeux
    Réponses: 4
    Dernier message: 22/03/2009, 14h19
  4. while read fichier en paramètre
    Par pinocchio dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 06/08/2008, 22h21
  5. [XSL] Copie exacte d'un fichier
    Par hobotalker dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 09/08/2007, 16h13

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