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 :

[PC-XP-PerCobol]Lecture séquentielle fichier avec en-tête


Sujet :

Cobol

  1. #1
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut [PC-XP-PerCobol]Lecture séquentielle fichier avec en-tête
    Bonjour,

    J'ai un fichier de jeux d'essai de ce type :


    CECI EST LE FICHIER FICHIER.TXT
    9999 999999 999 X(50) A XX
    001 000020 499 DESCRIPTION1 E 01
    002 000499 000 DESCRIPTION2 E 03
    004 001034 376 DESCRIPTION3 R 02
    005 001377 000 DESCRIPTION4 O E1
    010 025100 017 DESCRIPTION5 E E2
    015 000807 307 DESCRIPTION6 E E4
    020 000613 113 DESCRIPTION7 E 02
    021 015070 417 DESCRIPTION8 R 04
    025 001807 000 DESCRIPTION9 O E6
    ------------------------------------------------------------------------
    Une ligne vide, une ligne avec du texte, une ligne m'indiquant les champs

    Tout ça, je n'en ai pas besoin et j'aimerai pouvoir les "sauter"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
               FD MON-FILE-DECLARATION.
                 01 MA-STRUCTURE.
                   02 CHAMP1 PIC 999.
                   02 CHAMP2 PIC 9(6).
                   02 CHAMP3 PIC 999.
                   02 CHAMP4 PIC X(50).
                   02 CHAMP5 PIC A.
                   02 CHAMP6 PIC XX.
    J'ai testé une simple lecture séquentielle avec une succession de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           READ MON-FILE-DECLARATION INTO MA-STRUCTURE
             AT END MOVE "V" TO W-FINFICHIER
           END-READ
    Mais ça ne fonctionne pas.

    J'aurais pensé qu'il m'aurait au moins affiché mon fichier avec les "lignes parasites"
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  2. #2
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    bonjour,

    Quelle est l'erreur ?
    Comment lance tu ton test (JCL ?) ?
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    L'erreur c'est de lire directement dans un champ structuré. Lis dans un filler intermédiaire(un vulgaire PIC X de la longueur de ton fichier), et passe outre tes 2 premiers enregs. A partir du troisieme, MOVE du FILLER dans MA-STRUCTURE, et ça devrait passer. C'est de l'urbanisme standard.

    Après, pour les conditions, tu peux passer les 2 premiers en dur, ou vérifier que CHAMP1 est NUMERIC

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bonjour,

    L'erreur est qu'aucun affichage ne se fait correctement à cause de l'entête...
    Enfin, aucun affichage d'un enregistrement complet du fichier.


    Je teste le tout dans un petit programme que j'ai fait qui permet de lire un fichier séquentiel.
    Le programme fonctionne parfaitement sur un fichier où les enregistrements sont mit bout à bout sur la même ligne
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Le plus simple dans ce genre de situation est de laisser la FD en générique de ce type :

    FD monfichier.
    01 F-Monfichier pic X(80).

    Ensuite en WS tu déclares la structure de ton fichier :

    01 Struct-monfichier
    05 ...

    Pour lire en procédure :
    READ monfichier into Struct-monfichier.

    Ceci dit, je crains que la différence de taille d'enregistrement soit mal perçue par Cobol.
    Exemple de programme :
    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
    27
    28
    29
    30
    31
    32
           IDENTIFICATION DIVISION.
            PROGRAM-ID. test3.
            AUTHOR. Pralinor.
           ENVIRONMENT DIVISION. 
            CONFIGURATION SECTION.
            INPUT-OUTPUT SECTION.
             FILE-CONTROL.
               SELECT Fichier assign to 'FE'.
               
            DATA DIVISION.
             FILE SECTION. 
              FD fichier.
               01  fichier-ENR pic x(80).  
                                    
            WORKING-STORAGE SECTION.
               01  R-Fic-enr.
                   05  struct1  pic x(40).
                   05  filler   pic x.
                   05  struct2  pic x(39).
    
    
           PROCEDURE DIVISION.
           Debut.
               open input fichier.
           lecture.    
               read fichier into r-fic-enr
                      at end go to fin.
               display r-fic-enr.      
               go to lecture. 
           fin.    
               close fichier.
               stop run.
    Un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    ma ligne
    0121212421 012154 024545
    024154512 45245 1545
     152452 5451
    Et la sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >> Program BEGIN :  test3                                                       
    
    ma ligne
    0121212421 012154 024545
    024154512 45245 1545
     152452 5451
    fin normale test3
    Voilà ^__^

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    L'erreur c'est de lire directement dans un champ structuré. Lis dans un filler intermédiaire(un vulgaire PIC X de la longueur de ton fichier), et passe outre tes 2 premiers enregs. A partir du troisieme, MOVE du FILLER dans MA-STRUCTURE, et ça devrait passer. C'est de l'urbanisme standard.

    Après, pour les conditions, tu peux passer les 2 premiers en dur, ou vérifier que CHAMP1 est NUMERIC
    Je croyais que le FILLER ne permettait aucune interaction O.o

    Pour moi, il s'agissait d'un tampon poubelle...


    --------

    Si j'ai comprit vos propositions (el_slapper et pralinor), je dois donc faire une structure de la taille d'un enregistrement puis, tant que je n'ai pas un numérique dans la première zone, je continue à lire (pour passer la ligne vide et la ligne descriptive)

    Ensuite je n'aurais plus qu'à faire une lecture normal du reste en passant du tampon FD à une structure en WS


    C'est bien ça ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Filler c'est un mot clé qui signifie : zone sans nom. Globalement, il te proposait de faire :

    FD Fichier.
    01 FICHIER-ENR.
    05 FILLER pic X(80).

    Globalement pour ta lecture tout dépend si les premières lignes sont fixes ou non (on retrouve ces lignes systématiquement). Si oui, tu fais :
    Read MonFichier.
    Read Monfichier.
    Read Monfichier.

    Et tu passes au traitement.
    Sinon, il faut avoir un moyen infaillible de distinguer les lignes. Or la ligne 3 contenant du numérique (9999), tu risques d'avoir des problèmes

    Pour ta structure, déclare là comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    01 MA-STRUCTURE.
                   02 CHAMP1 PIC 999.
                   02 FILLER PIC X.
                   02 CHAMP2 PIC 9(6).
                   02 FILLLER PIC X.
                   02 CHAMP3 PIC 999.
                   02 FILLLER PIC X.
                   02 CHAMP4 PIC X(50).
                   02 FILLLER PIC X.
                   02 CHAMP5 PIC A.
                   02 FILLLER PIC X.
                   02 CHAMP6 PIC XX.
    Vu que visiblement tu as des espaces entre tes champs.

    Voili voilu.

  8. #8
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    J'ai pensé à ceci :

    cobol_source.zip

    Mais comme vous pourrez le voir, le comportement attendu n'est pas le bon...

    Je ne comprends pas encor pourquoi.
    Je continue à chercher :3
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    On écrit en-tête, entête, c'est quand on est entêté

    Quand tu fais un read, le into sert à faire pointer vers autre chose que la FD. Dans ton cas un read F-avion est suffisant, cobol sait bien qu'il doit mettre dans avion ^_^
    N'oublie pas de mettre un point à chaque fin de paragraphe, là tu as de la chance le compilateur ne dit rien... J'en connais qui vont râler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    000550 DEBUT.
    000560     PERFORM AFFICHAGE-ENTETE
    000570     PERFORM OUVERTURE-FICHIER
    000580     PERFORM BOUCLE-D-AFFICHAGE
    000590     PERFORM FIN-PROGRAMME
                   . <-- Au moins un point !
    000600 FIN.
    L'instruction "exit" ne sert à rien, elle est juste là pour dire au compilateur : je te fais ce paragraphe, MAIS il est vide.

    Je ne sais pas comment ton compilateur va réagir face à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    02 F-CODAV PIC XXX.
    PERFORM UNTIL F-CODAV IS NUMERIC
    Je pense que l'un de tes problèmes peut venir du fait que visiblement ta première ligne commence directe par un CR/LF, si bien qu'il est possible que ta variable F-CODAV soit initialisé à low-value et que ce compilateur considère low-value comme 000 et donc du numérique...
    Pour vérifier ça commence par mettre disons "abcdef" dans la première ligne du fichier et vois ce que ça donne. Si ça passe, tu as la réponse

    Mais sinon, c'est par plaisir que tu fais du Cobol ?

  10. #10
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Oui et non ^^

    Je fais du COBOL car mon père m'en parlait souvent quand j'étais plus jeune vu que c'est son outil de tous les jours...

    J'aime bien

    Et puis je fais une des rares formations qui proposent encor d'apprendre ce langage en France :3

    Et justement, notre professeur nous a dit que le point n'était pas obligatoire car un paragraphe se termine par un point OU là où commence un autre paragraphe.

    Pour le READ FICHIER INTO... C'est comme ça que je l'ai apprit, c'était pour m'assurer que ça aille où je le voulais et puis j'avais lu d'un cours sur le net que s'il y avait plusieurs sources (file section) dans le programme, qu'il était préférable de faire ainsi afin d'éviter toute ambiguïté.

    Pour le EXIT, je sais que ça veut dire qu'il n'y a rien dans le paragraphe mais alors que j'ai commencé à lire un peu partout pour apprendre le COBOL (on avançait... lentement en cours) j'ai vu qu'il y avait cette possibilité pour structurer les paragraphes...

    Au moins je sais où est le début et où est la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PERFORM UNTIL F-CODAV IS NUMERIC AND F-AVION IS NOT LOW-VALUE
                 DISPLAY "["F-CODAV"]"
                   AT LINE 20 COLUMN 10 WITH BLANK LINE
                 ACCEPT W-TEMP
                   AT LINE 21 COLUMN 10 WITH BLANK LINE
                 READ FAVION INTO F-AVION
                   AT END MOVE "V" TO W-FINFICHIER
                 END-READ
               END-PERFORM
    J'ai voulu tester ceci mais le compilateur n'en veut pas
    Syntax Error at unexpected reserved word (at LOW-VALUES) lireListeAvion.CBL line 109
    Il n'apprécie pas la comparaison avec low-value

    Sinon, j'ai testé avec un abcdef

    Il m'affiche
    bcd
    %%vide%% * 11 // Le nombre de ligne que j'ai après la première
    --- // En boucle, indéfiniment, ce qui correspond à la dernière ligne
    J'ai donc rajouté la ligne

    Lorsqu'il atteint la fin du fichier.
    En ce cas, il ne m'affiche qu'une fois les trois trais d'union et me termine mon programme ^^

    Pourquoi m'afficher des blancs ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  11. #11
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    J'ai supprimé le abcdef de la première ligne.

    Ensuite, j'ai modifié l'affichage comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
               MOVE 1 TO W-LIGNE
               PERFORM UNTIL F-CODAV IS NUMERIC
                 READ FAVION INTO F-AVION
                   AT END MOVE "V" TO W-FINFICHIER
                   GO TO FIN-PROGRAMME
                 END-READ
                 DISPLAY "["F-AVION"]"
                   AT LINE W-LIGNE COLUMN 01 WITH BLANK LINE
                 ADD 2 TO W-LIGNE
                 ACCEPT W-TEMP
                   AT LINE 23 COLUMN 10 WITH BLANK LINE
               END-PERFORM
    Mais j'obtiens un résultat plus qu'étrange...


    Mon F-AVION semble... Diminuer en taille
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Ton problème doit venir depuis le début de CR/LF... J'ai la curieuse impression que cobol ne reconnait pas la fin de fichier.

    Ta déclaration est de 1+3+68 = 72.
    Ton fichier fait 71 de taille. Donc déjà change ta déclaration en FILLEr de 67.

    ah oui pour ton LOW-VALUE...
    Numeric est une class Cobol.
    Low-Value un mnemonic.
    Il faut tester :

    truc not = low-value, pas truc is not low-value.

    En out cas, je dormirai moins con ce soir, maintenant que je sais qu'il existe encore UNE formation Cobol en France

  13. #13
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Moi aussi je m'endormirai en ayant apprit des choses

    Et non, j'ai un espace en fin d'enregistrement donc c'est bien 72

    (merci pour le LOW-VALUE )
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Je vois 2 solutions :

    1 - Tu supprimes le CR de ton fichier en entrée via n'importe quel éditeur de texte.

    2- Tu augmentes la tailles de ta FD, tu passes le filler à 80.

    Si tu utilises un quelconque compilateur qui s'amuse à faire du C avec des bibliothèques Unix, le problème doit être là, il doit juste vouloir son LF Unix et le CR DOS il ne doit pas aimer...

  15. #15
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Je vais tester de passer le filler à 80 mais pourquoi cette valeur ?

    mon compilateur est PerCobol.

    Ce compilateur passe par la JVM pour compiler
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    C'est un problème typique d'unix vers dos ou vice-versa.
    Dans le monde IBM on dispose de fichier de taille fixe défini. Pas de le monde DOS/UNIX. Dans le monde DOS/Unix on dispose d'une fin de ligne. Sous dos la séquence 0D 0A en héxa, sous Unix 0A.

    Si tu prends un fichier DOS et que tu le tournes sous UNIX, Unix considère le OD comme un caractère et voit sa fin de fichier en 0A.
    Pour éviter les écueils, il te suffit de définir une ligne plus longue que ce que tu as réellement.
    Le 80 ne t'en fait pas, sous IBM une ligne (qui correspond à une taille de carte perforée) fait 80 de long, donc en règle général, je mets des fillers à 80

  17. #17
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Citation Envoyé par Pralinor Voir le message
    Tu augmentes la tailles de ta FD, tu passes le filler à 80.
    Fait

    Mais... Résultat non concluant :/
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  18. #18
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Je n'aime pas ça mais bon...

    J'ai supprimé la première ligne avec le CR seul...

    Ca fonctionne comme il faut.



    Pas fan de la solution...

    Tant pis :3

    Merci beaucoup pour ton aide
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Par défaut
    Ah oui,
    je ne veux pas faire mon chieur, mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
               MOVE 1 TO W-LIGNE
               PERFORM UNTIL F-CODAV IS NUMERIC
                 READ FAVION INTO F-AVION
                   AT END MOVE "V" TO W-FINFICHIER
                   GO TO FIN-PROGRAMME
                 END-READ
                 DISPLAY "["F-AVION"]"
                   AT LINE W-LIGNE COLUMN 01 WITH BLANK LINE
                 ADD 2 TO W-LIGNE
                 ACCEPT W-TEMP
                   AT LINE 23 COLUMN 10 WITH BLANK LINE
               END-PERFORM
    Tester un truc non initialisé ce n'est pas des plus "génial". Tu as 2 façon de t'en tirer :

    1- façon oldschool, tu fais un premier read avant la boucle :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
               READ FAVION INTO F-AVION
               PERFORM UNTIL F-CODAV IS NUMERIC
                 READ FAVION INTO F-AVION
                 ...
    END-PERFORM
    2- façon élégante : En algorithmique il y a 3 types de boucle : Tant que...faire, Faire... tant que et pour, généralement codé dans des boucles Do While, While/do, For.
    En Cobol, ces 3 boucles existent et se codent par un... PERFORM ^_^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
               PERFORM WITH TEST AFTER 
                         UNTIL F-CODAV IS NUMERIC
                 READ FAVION INTO F-AVION
                 ...
    END-PERFORM
    Avec ça ton test est effectué APRES avoir effectué la boucle perform une fois ^___^

  20. #20
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Notre professeur a tenté de nous habituer à faire une ouverture/lecture car il n'est pas fan des Répéter ^^

    Normalement je ne fais pas ce genre d'oublis :s

    Merci
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

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

Discussions similaires

  1. quelques soucis de lecture de fichiers avec fscanf
    Par monsieurab dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 05/11/2008, 15h28
  2. Lecture de fichier avec fread.Taille limitée?
    Par cheveche4 dans le forum C
    Réponses: 5
    Dernier message: 15/06/2007, 15h56
  3. lecture de fichier avec comparaison
    Par idsec dans le forum Web
    Réponses: 1
    Dernier message: 25/04/2007, 18h25
  4. lecture de fichier avec ftplib
    Par yggdrazil dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 14/10/2006, 22h47
  5. [LG]Lecture de fichier avec une adresse internet
    Par forbin dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2005, 20h00

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