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 :

Problème lecture de fichier


Sujet :

Cobol

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut Problème lecture de fichier
    Bonjour, je suis étudiant en informatique. J'ai un cour de cobol ou je comprend en général mais récemment j'ai un problème dans un exercice. On vient de commencer les fichiers indexer..

    J'ai quelque problème minime (je crois)

    1) Dans mon 1er programme je ne comprend pas pourquoi je peux rentrer 2X la même clef primaire.. :/

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
           program-id. fichierseq1.
           environment division.
           configuration section.
    
           input-output section.
           file-control.   
           
           select Ftennis assign to "C:\Users\Jordan\Desktop\Tennis.dat"
               organization is indexed
               access random
                   record key joueurID
                   alternate record key nom with duplicates.
                           
           DATA DIVISION.
           FILE SECTION.
    
           fd Ftennis.
               01 enrJoueur.   
                   02  joueurID pic x(6).
    		       02  nom pic a(10).
    		       02  nationalite pic a(2).
                   02  score pic 99.
           
                  
           WORKING-STORAGE SECTION.
               
               77 choix pic a. 
               77 menu pic x.
               77 i pic x.
               
           PROCEDURE DIVISION.
           principal.
           
           move 9 to menu.
           display " --> 0. quitter".
           display " --> 1. Ajouter un joueur".
    	   
           accept menu.
           
           if menu = 1 perform ajouter.     
           if menu = 0 perform quitter.
    	   
          ***************_Ajout_De_Joueur_************** 
           ajouter.
               perform ouvertureOUTPUT.
               perform saisir.
    	       perform ecriture.          
               perform continuerAjout.
               perform fermeture.
               
           ouvertureOUTPUT.
             open output Ftennis.
                                                    
           saisir.  
               display "identifiant (6 caractères)".
               accept joueurID.
               display "nom (10 caractères)".
               accept nom.
               display "nationalité (2 caractères)".
               accept nationalite.
             
               perform with test after until  (score >= 0 and score <= 100)
                   display "score (entre 0 et 100 compris)"
                   accept score
    	       end-perform.
             
    		 
           ecriture.
               write enrJoueur   
                   invalid key display "joueur deja enregistree."
                   not invalid key  display "ok."    
               end-write.
             
           continuerAjout.    
               display "voulez-vous ajouté un autre joueur? (o/n)"
               accept choix.
               if choix = "o" perform saisir
               else perform quitter
               end-if.
    		 
           fermeture.  
               close Ftennis.  
    
               
          **************_Quitter_Programme_************** 
           quitter.
               stop run.
    2) Dans le second programme Pourquoi est-ce que il se crash et ferme.
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
           program-id. fichierseq1.
           environment division.
           configuration section.
    
           input-output section.
           file-control.   
           
           select Ftennis assign to "C:\Users\Jordan\Desktop\Tennis.dat"
               organization is indexed
               access random
                   record key joueurID
                   alternate record key nom with duplicates.
                           
           DATA DIVISION.
           FILE SECTION.
    
           fd Ftennis.
               01 enrJoueur.   
                   02  joueurID pic x(6).
    		       02  nom pic a(10).
    		       02  nationalite pic a(2).
                   02  score pic 99.
           
                  
           WORKING-STORAGE SECTION.
               
               77 choix pic a. 
               77 menu pic x.
               77 i pic x.
               
           PROCEDURE DIVISION.
           principal.
           
           move 9 to menu.
           display " --> 0. quitter"
    	   display " --> 1. Afficher les informations d'un joueur par son ID"
    	   
           accept menu.
           
           if menu = 1 perform clefPrimaire.     
           if menu = 0 perform quitter.
    	   
          
          **************_Clef_Primaire_**************
           
           clefPrimaire.
               perform ouvertureINPUT.
               perform saisirId.
               perform lireId.
               perform fermeture.
               perform continuerLireId.
               
           ouvertureINPUT.
               open input Ftennis.
               
           saisirId.
               display "Identifiant du joueur (6 caractères)".
               accept joueurID.
               
           lireId.
               read Ftennis
                   invalid key display "Joueur inexistant"
                   not invalid key perform afficheJoueur
               end-read.
               accept i.
           
           afficheJoueur.
               display "****************************".
               display "* Identifiant:  " joueurID "     *".
               display "* nom:          " nom             " *".
               display "* nationalitée: " nationalite     "         *".
               display "* score:        " score           "         *".
               display "****************************".
           
           fermeture.
               close Ftennis.
               
           continuerLireId.
               display "voulez-vous rechercher un autre joueur? (o/n)"
               accept choix.
               if choix = "o" perform clefPrimaire
               else perform principal
               end-if.
    
               
          **************_Quitter_Programme_************** 
           quitter.
               stop run.
    Merci d'avance

  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
    Citation Envoyé par Linquisiteur Voir le message
    Bonjour, ...
    Bonjour.

    1) Dans mon 1er programme je ne comprend pas pourquoi je peux rentrer 2X la même clef primaire.. :/
    Explique un peu, où ? dans quelles lignes ? comment ?

    2) Dans le second programme Pourquoi est-ce que il se crash et ferme.
    Dites nous où et dans quelles conditions ?
    J'ai compilé les 2 programmes sous MF 4.5 et ils ont l'air de fonctionner +/- correctement. Ils sont très mal structurés et contiennent des erreurs de logique et de traitement.

    Merci d'avance
    Cordialement.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    Merci,

    Pour le programme 1, Lorsque j'ajoute une clef primaire (identifiant)
    je veux que le programme m'avertisse que la clef existe déjà et donc de ne pas faire l'enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           ecriture.
               write enrJoueur   
                   invalid key display "joueur deja enregistree."
                   not invalid key  display "ok."    
               end-write.
    Le "invalid key" ne fonctionne pas.

    Dans le second programme si je recherche une clef autre que la dernière entrée je ne la trouve pas

    exemple:

    joueurID: 999999 (clef primaire)
    autres data (nom, nationalite, score)

    joueurID: 888888
    autres data

    joueurID: 777777
    autres data

    Seul la dernière clef entré (777777) et les datas qui vont avec sont possible a retrouver ( la recherche des autres clef fini par "Joueur inexistant" et seul 777777 affiche)



    Merci encore

  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
    En effet, tu auras toujours uniquement le dernier enregistrement saisi. Ton problème vient du fait que tu ouvres ton fichier en Output à chaque fois que tu veux ajouter un enregistrement dans le fichier par le premier programme. Cet open ouput supprimera et créera le fichier à chaque fois qu'il est exécuté, vérifie le en affichant le contenu du fichier "tennis.dat".
    - évite de mettre les open/close dans les boucles perform, on le fait une seule fois dans le programme, au début pour l'open et à la fin pour le close. Sauf si les traitements l'exigent.
    - remplace l'open output par un open extend ou un open i-o, ce dernier open te permettra d'ailleurs de vérifier l'existence d'un joueur (par un read ... invalid) avant de saisir ses autres données et d'essayer de l'écrire.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 95
    Points : 41
    Points
    41
    Par défaut
    Merci beaucoup. J'ai continuer mon tp (recherche par clef secondaire) et réussi à tout faire fonctionner
    Un grand merci encore

Discussions similaires

  1. [NASM] Petits problèmes lecture de fichier
    Par Jaronimo dans le forum Assembleur
    Réponses: 1
    Dernier message: 01/05/2008, 14h56
  2. [XPATH] problème lecture dans fichier XML
    Par DiamonDonald dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/02/2008, 09h57
  3. Problème lecture gros fichier texte
    Par UnnamedBoy dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 22/02/2008, 11h13
  4. problème lecture seule fichier image
    Par Damien69 dans le forum Langage
    Réponses: 1
    Dernier message: 23/03/2007, 16h53
  5. problème lecture de fichier
    Par nico33410 dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2006, 20h01

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