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 :

Lecture Fichier Séquentiel


Sujet :

Cobol

  1. #41
    Invité
    Invité(e)
    Par défaut
    Ah d'accord, je vois ce que vous voulez dire, mais du coup est ce qu'il faut recréer un compteur ?

  2. #42
    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 Alxandr Voir le message
    Ah d'accord, je vois ce que vous voulez dire, mais du coup est ce qu'il faut recréer un compteur ?
    Mais non. Pourquoi donc voulez vous recréer un compteur ?

  3. #43
    Invité
    Invité(e)
    Par défaut
    Pour dire que si le nombre qu'il a entré est égal au compteur, alors on affiche ce mot.

  4. #44
    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 Alxandr Voir le message
    Pour dire que si le nombre qu'il a entré est égal au compteur, alors on affiche ce mot.
    Ah je crois voir votre problème ... Ce que vous écrivez aurait eu du sens si vous étiez resté sur une recherche séquentielle sur le fichier. Mais vous êtes parti sur une autre méthode, à savoir chargement dans un tableau puis accès direct.
    Par contre ne mélangez pas les deux façons de faire.

    Il suffit donc de valoriser l'indice du tableau à la valeur du nombre entré.

    On peut même faire l'économie de l'indice du tableau puisque en fait le nombre saisi peut faire l'affaire, mais bon c'est du détail.

  5. #45
    Invité
    Invité(e)
    Par défaut
    Il suffirait donc de faire COMPUTE WCPT = WNBR + 1 ?

  6. #46
    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 Alxandr Voir le message
    Il suffirait donc de faire COMPUTE WCPT = WNBR + 1 ?
    On y est presque ... Mais pourquoi " +1 " ?

  7. #47
    Invité
    Invité(e)
    Par défaut
    Ah non, il faudrait juste faire WCPT = WNBR ?

  8. #48
    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 Alxandr Voir le message
    Ah non, il faudrait juste faire WCPT = WNBR ?
    Il me semble oui ...

  9. #49
    Invité
    Invité(e)
    Par défaut
    D'accord je vous remercie de votre réponse
    Cependant quand j'exécute le code ci dessous :
    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
    SAISIE.
               move 0 to WNBR
               COMPUTE WCPT = WNBR
    000290     perform until WNBR = 99 OR WCPT < 1 OR WCPT > 26
    000300         display
    000310          " Donner un nombre de 01 à 26 ou 99 pour terminer : "
    000320         accept WNBR
    000330         if WNBR not = 99
    000340            if WNBR = 0 or WNBR > 26
    000350               display "Erreur saisie, nombre hors limites"
    000360            else if WNBR not = 99 
                           if WCPT = WNBR
                           display "Mot trouvé : "
                           TMOT(WCPT) " de type : " TTYPE(WCPT)
               END-PERFORM.
               EXIT.
    Il m'affiche ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Donner un nombre de 01 Ó 26 ou 99 pour terminer : 
    2
     Donner un nombre de 01 Ó 26 ou 99 pour terminer : 
    2
    Mot trouvÚ : un Test de type : Nom Commun
     Donner un nombre de 01 Ó 26 ou 99 pour terminer :
    En effet, il m'affiche le mot en question 1 fois sur deux.

  10. #50
    Invité
    Invité(e)
    Par défaut
    J'ai fait une erreur d'étourderie, merci pour tout ça fonctionne

  11. #51
    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.

    Bon ça a l'air d'avancer, quelques remarques cependant :
    - La condition de fin de la saisie du nombre doit être uniquement WNBR = 99 et non < 1 ou > 26
    - Inutile de répéter else if WNBR not = 99
    - l'opérateur doit frapper le 0 précédent les nombres à un seul chiffre sous la forme 01, 02, 03, etc.... le compilateur ne sait pas faire le cadrage automatiquement lors de la saisie d'un nombre non formatée, ou alors il faut passer par la fonction NUMVAL.

    Voilà ce que cela donnerait avec cet 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    000010 Identification Division.
    000020 Program-Id. ALXANDR2-CBL.
    000030 Author. H.JAIDANE.
    000040 Environment Division.
    000050 Configuration Section.
    000060 Source-Computer. IBM-PS2.
    000070 Object-Computer. IBM-PS2.
    000080 Special-Names.
    000090 Input-Output Section.
    000100 File-Control.
    000110     Select FICHIER assign "FICHMOTS.TXT"
    000120            organization line sequential.
    000130*
    000140 Data Division.
    000150 File Section.
    000160*
    000170 FD  FICHIER.
    000180 01  LIGNE-MOT.
    000190     03 FMOT   pic X(25).
    000200     03 FTYPE  pic X(10).
    000210*
    000220 Working-Storage Section.
    000230 77  WCPT    pic 99.
    000240 77  WNBR    pic 99.
    000250 77  WFF     pic 9 value 0.
    000260 01  TAB-MOTS.
    000270     03 LIG-MOT occurs 26.
    000280        05 TMOT   pic X(25).
    000290        05 TTYPE  pic X(10).
    000300 Procedure Division.
    000310 CHARGEMENT-FICHIER.
    000320     open input FICHIER.
    000330     move 0 to WCPT.
    000340     move 0 to WFF.
    000350     move spaces to TAB-MOTS.
    000360     perform until WFF = 1 or WCPT = 26
    000370        read FICHIER
    000380           at end move 1 to WFF
    000390           not at end
    000400              add 1 to WCPT
    000410              move FMOT to TMOT(WCPT)
    000420              move FTYPE to TTYPE(WCPT)
    000430              Display "Chargé : " FMOT " / " FTYPE " en " WCPT.
    000440
    000450     close FICHIER.
    000460 SAISIE.
    000470     move 0 to WNBR
    000480     perform until WNBR = 99
    000490         display
    000500          " Donner un nombre de 01 à 26 ou 99 pour terminer : "
    000510         accept WNBR
    000520         if WNBR not = 99
    000530            if WNBR = 0 or WNBR > 26
    000540               display "Erreur saisie, nombre hors limites"
    000550            else display
    000560                  "Mot " WNBR " : " TMOT(WNBR) " / " TTYPE(WNBR).
    000570
    000580     stop run.

  12. #52
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je remercie pour toutes vos réponses cela fonctionne maintenant
    Petite question, cependant comment pourrait-on afficher le dernier caractère du mot, sachant que le mot saisi est variable ?

  13. #53
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par Alxandr Voir le message
    Bonjour,

    Je remercie pour toutes vos réponses cela fonctionne maintenant
    Petite question, cependant comment pourrait-on afficher le dernier caractère du mot, sachant que le mot saisi est variable ?
    Il faudrait faire une boucle qui part du dernier caractère de ta variable et qui décrémente pour détecter le premier caractère différent de space.
    Il est aussi possible de passer par un tableau avec une variable en X(1) dont le nombre d'occurrences correspond à ta taille de champ.

  14. #54
    Invité
    Invité(e)
    Par défaut
    D'accord je vais regarder ça merci

  15. #55
    Invité
    Invité(e)
    Par défaut
    Après réflexion, je n'ai pas d'idée concernant l’affichage du caractère en fin de mot.

  16. #56
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Sans penser COBOL tu peux déjà nous présenter un algorithme.

  17. #57
    Invité
    Invité(e)
    Par défaut
    Bonsoir à tous,

    Désolé de vous répondre aussi tardivement mais je viens de réussir, merci à tous pour vos réponses

  18. #58
    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.
    Félicitations

    Il est d'usage et dans l'intérêt de la communauté des développeurs de partager la solution trouvée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Lecture de fichier séquentiel
    Par LimaceSpidée dans le forum Général Python
    Réponses: 2
    Dernier message: 09/06/2010, 11h15
  2. [Fichiers séquentiels] compatibilité Delphi <-> C++
    Par soccersoft dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2004, 10h56
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    Réponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

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