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-Windows/Percobol] Je trouve un enregistrement dans un fichier qui n'existe pas


Sujet :

Cobol

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Résolu - [PC-Windows/Percobol] enregistrement dans un fichier qui n'existe pas
    Bonjour à tous,

    Actuellement étudiant, je dois faire un programme Cobol qui gère un aérodrome pour pour mon projet.

    Le but du code suivant est la gestion des pilotes (ajout/suppression/modification).

    J'ai un problème lors de l'ajout des pilotes.
    Une fois un pilote créé, il faut lui assigné un type d'appareil.
    Si le type existe, alors on met a jour le fichier de correspondance.
    S'il n'existe pas, on ajoute le type dans le fichier gérant les types, et on fait la mise à jour de la table.

    Mon problème vient au moment ou je vérifie l'existence du type dans le fichier ftyp.dat. (dans le paragraphe AJOUTYPE)
    Dans tous les cas l'enregistrement est trouvé, et ce, même si le fichier n'exite pas.

    Voici le code du sous programme qui gère la gestion des pilotes :

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    000100 IDENTIFICATION DIVISION.
    000200 PROGRAM-ID. F3.
           
           ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
           SELECT FPILOT ASSIGN TO "fpilot.dat"
               ORGANIZATION INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY F-PIL-NUMPIL.
           SELECT FVISIT ASSIGN TO "fvisit.dat"
               ORGANIZATION INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY F-VIS-NUMVISIT.
           SELECT FTYP ASSIGN TO "ftyp.dat"
               ORGANIZATION INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY F-TYP-NUMTYP.
           SELECT FTABL ASSIGN TO "ftabl.dat"
               ORGANIZATION INDEXED
               ACCESS MODE IS RANDOM
               RECORD KEY TABL
               ALTERNATE RECORD KEY F-TAB-CODPIL WITH DUPLICATES
               ALTERNATE RECORD KEY F-TAB-CODTYP WITH DUPLICATES.
           
           DATA DIVISION.
           FILE SECTION.
           FD FPILOT.
           01 PILOTE.
               02 F-PIL-NUMPIL PIC 999.
               02 F-PIL-NOM PIC X(20).
               02 F-PIL-PRENOM PIC X(10).
               02 F-PIL-ADRESSE PIC X(50).
               02 F-PIL-NBHVOL PIC 9(6).
               02 F-PIL-ETATPIL PIC AAA.
           FD FVISIT.
           01 VISITE.
               02 F-VIS-NUMVISIT PIC 999.
               02 F-VIS-DATEVISIT PIC X(10).
               02 F-VIS-RESULTAT PIC A.
               02 F-VIS-TYPVISIT PIC A.
               02 F-VIS-CODOBJ PIC 999. 
           FD FTYP.
           01 TYPAVION.
               02 F-TYP-NUMTYP PIC XX.
               02 F-TYP-DESIGN PIC X(20).
               02 F-TYP-TARIF PIC 9(3)V99. 
           FD FTABL.
           01 TABL.
               02 F-TAB-CODPIL PIC 999.
               02 F-TAB-CODTYP PIC XX.
           
    
           
           WORKING-STORAGE SECTION.
          * Variables générales
           77 W-ENDPROG PIC X.
           77 W-VALID PIC X.
           77 W-CHOICE PIC X.
    
           77 W-TEST PIC X.
           77 W-I PIC 99.
           77 W-ATTENTE PIC X.
           
          * Variables liées à l'ajout de pilotes
           77 W-REP PIC X.
           77 W-VALIDREP PIC X.
           77 W-CPTESSAISREP PIC 9.
           77 W-EXIT PIC X.
           77 W-ENDFPIL PIC X.
           77 W-DERNUMVISIT PIC 999.
           77 W-TYPAPP PIC XX.
           77 W-TYPETROUVE PIC X.
           
          * Variables définissant les paramètres d'affichage de la fenêtre    
           77 W-LIGNEERREUR PIC 99 VALUE 21.
           77 W-LIGNEINVITE PIC 99 VALUE 22.
           77 W-LIGNECHOIX  PIC 99 VALUE 23.
           
           
           
           PROCEDURE DIVISION.
           
           INIT.
           
          * ouverture des fichiers
           OPEN INPUT-OUTPUT FPILOT
           OPEN INPUT-OUTPUT FVISIT
           OPEN INPUT-OUTPUT FTYP
           OPEN INPUT-OUTPUT FTABL
           
          * Il est nécessaire de faire l'initialisation dans le INIT
          * en effet, en cas de nouvelle appel du programme, les varables
          * garde la valeur qu'elles avaient à la fin de l'appel précédent
            
           MOVE "F" TO W-ENDPROG
           MOVE "U" TO W-VALID
           MOVE "0" TO W-CHOICE
           
           PERFORM UNTIL W-ENDPROG = "V"
               CALL "AFF-FENETRE" USING "Mise à jour pilotes"
               CANCEL "AFF-FENETRE"
               MOVE "U" TO W-VALID
               PERFORM AFF-MENU UNTIL W-VALID = "V"
                   EVALUATE W-CHOICE 
                        WHEN "1"
                              PERFORM AJOUTPIL
                        WHEN "2"
                            PERFORM MODIFPIL 
                        WHEN "3"  
                            PERFORM SUPPRPIL
                        WHEN "Q"
                            MOVE "V" TO W-ENDPROG
                        WHEN OTHER  
                            DISPLAY " Comportement anormal ! 011 " 
                                AT 0502 WITH BLANK SCREEN
                   END-EVALUATE                     
           END-PERFORM
           
          * fermeture des fichiers
           CLOSE FPILOT
           CLOSE FVISIT
           CLOSE FTYP
           CLOSE FTABL
           EXIT PROGRAM.
           
           
           
          * ------------------------------------ *
          * PROCEDURES DE LA GESTION DES PILOTES *
          * ------------------------------------ *
    
          
           AJOUTPIL. 
           
               MOVE "N" TO W-REP
               MOVE 0 TO W-CPTESSAISREP
               MOVE "F" TO W-EXIT       
               
               PERFORM UNTIL W-REP = "O" OR W-EXIT = "V"
               
                   MOVE "U" TO W-VALIDREP
                    
                   CALL "AFF-FENETRE" USING "Mise à jour pilotes"
                   CANCEL "AFF-FENETRE"
               
                   DISPLAY "---    AJOUT D'UN PILOTE     ---" AT 0624
                   PERFORM AJOUTSAISIE
                     
                   PERFORM UNTIL W-VALIDREP = "V" OR W-EXIT = "V"
                    
                       DISPLAY "Valider ? (O/N)" AT LINE W-LIGNEINVITE 
                                                 AT COLUMN 02
                       IF W-VALIDREP = "F" THEN
                       DISPLAY "Le choix est incorrect"
                                                 AT LINE W-LIGNEERREUR
                                                 AT COLUMN 02
                       END-IF
                    
          *            Saisie et vérification de la validité du choix 
                       DISPLAY "Choix : " AT LINE W-LIGNECHOIX AT COLUMN 02
                       ACCEPT W-REP AT LINE W-LIGNECHOIX AT COLUMN 10
                       IF W-REP = "O" OR W-REP = "N" THEN
                           MOVE "V" TO W-VALIDREP
                       ELSE
                           COMPUTE W-CPTESSAISREP = W-CPTESSAISREP + 1
                           MOVE "F" TO W-VALIDREP   
                           IF W-CPTESSAISREP = 3 THEN
                               MOVE 0 TO W-CPTESSAISREP
                               MOVE "V" TO W-EXIT
                           END-IF
                       END-IF
                    
                   END-PERFORM               
               END-PERFORM
               
          *    Traitement de l'ajout
               IF W-REP = "O" THEN
                    REWRITE PILOTE
                    MOVE "ARL" TO F-PIL-ETATPIL
                    PERFORM AJOUTVISIT
                    PERFORM AJOUTYPE
               END-IF.
               
               
          * gerer la table des correspondances
          
          
           AJOUTSAISIE.
               DISPLAY "NUMERO :" AT 0810
               DISPLAY "NOM : " AT 0910
               DISPLAY "PRENOM : " AT 1010
               DISPLAY "ADRESSE :" AT 1110
               DISPLAY "NOMBRE HEURE VOL : " AT 1210
               ACCEPT F-PIL-NUMPIL AT 0830    
               ACCEPT F-PIL-NOM AT 0930
               ACCEPT F-PIL-PRENOM AT 1030
               ACCEPT F-PIL-ADRESSE AT 1130
               ACCEPT F-PIL-NBHVOL AT 1230.
               
           AJOUTVISIT.
               MOVE "F" TO W-ENDFPIL          
               READ FVISIT NEXT
                   AT END MOVE "V" TO W-ENDFPIL
               END-READ
               IF W-ENDFPIL = "V" THEN
                   MOVE F-VIS-NUMVISIT TO W-DERNUMVISIT
                   COMPUTE W-DERNUMVISIT = W-DERNUMVISIT + 1
               END-IF
     
               MOVE W-DERNUMVISIT TO F-VIS-NUMVISIT
               MOVE FUNCTION Current-Date(1:8) TO F-VIS-DATEVISIT
               MOVE 1 TO F-VIS-RESULTAT
               MOVE "P" TO F-VIS-TYPVISIT
               MOVE F-PIL-NUMPIL TO F-VIS-CODOBJ
               WRITE VISITE.
               
           AJOUTYPE.
               CALL "AFF-FENETRE" USING "Mise à jour pilotes"
               CANCEL "AFF-FENETRE"
               
               DISPLAY "---    AJOUT D'UN PILOTE     ---" AT 0624
               DISPLAY "---    ->  gestion des type  ---" AT 0724
               
               DISPLAY "Entrer un type d'appareil SVP : " AT 1020
               ACCEPT W-TYPAPP AT 1060
               
          *    recherche si W-TYPAPP existe
               MOVE "U" TO W-TYPETROUVE
    
               MOVE W-TYPAPP TO F-TYP-NUMTYP
               READ FTYP
                   INVALID KEY MOVE "F" TO W-TYPETROUVE
                   NOT INVALID KEY MOVE "V" TO W-TYPETROUVE
               END-READ
               
               DISPLAY "w-typetrouve : " W-TYPETROUVE
               
               IF W-TYPETROUVE = "V" THEN
                   MOVE F-PIL-NUMPIL TO F-TAB-CODPIL
                   MOVE W-TYPAPP TO F-TAB-CODTYP
                   WRITE TABL               
                   DISPLAY "Mise à jour de la table"
                           " de correspondance effectuée" AT 1220
               ELSE
                   DISPLAY "Ce type n'existe pas, il sera créé" AT 1220
                   PERFORM CREATYPE
               END-IF
               
               DISPLAY "Appuyez sur entrer pour continuer"
                   AT LINE W-LIGNECHOIX AT COLUMN 02
               ACCEPT W-REP AT LINE W-LIGNECHOIX AT COLUMN 10.
                   
           CREATYPE.
               CALL "AFF-FENETRE" USING "Mise à jour pilotes"
               CANCEL "AFF-FENETRE"
               
               DISPLAY "---    AJOUT D'UN PILOTE     ---" AT 0624
               DISPLAY "---    ->  gestion des type  ---" AT 0724
               DISPLAY "---         ajout d'un type  ---" AT 0824
               
           
           MODIFPIL.
               CALL "AFF-FENETRE" USING "Mise à jour pilotes"
               CANCEL "AFF-FENETRE"
               DISPLAY "---   MODIFIER D'UN PILOTE   ---" AT 0624
               ACCEPT W-REP
           
           SUPPRPIL.
               CALL "AFF-FENETRE" USING "Mise à jour pilotes"
               CANCEL "AFF-FENETRE"
               DISPLAY "--- SUPPRESSION D'UN PILOTE  ---" AT 0624
               ACCEPT W-REP
               
               
           AFF-MENU.
               DISPLAY "MENU" AT 0638
               DISPLAY "Ajouter un pilote              1" AT 0824
               DISPLAY "Modifier un pilote             2" AT 0924
               DISPLAY "Supprimer un pilote            3" AT 1024
               DISPLAY "Revenir au menu principal      Q" AT 1624
               
               DISPLAY "Que voulez-vous faire ?" AT LINE W-LIGNEINVITE 
                                                 AT COLUMN 02
               IF W-VALID = "F" THEN
                   DISPLAY "Le choix est incorrect"
                       AT LINE W-LIGNEERREUR AT COLUMN 02
               END-IF
       
               DISPLAY "Choix : " AT LINE W-LIGNECHOIX AT COLUMN 02
               ACCEPT W-CHOICE AT LINE W-LIGNECHOIX AT COLUMN 10
               IF W-CHOICE = "1" OR W-CHOICE = "2" 
                                 OR W-CHOICE = "3" 
                                 OR W-CHOICE = "Q" THEN
                   MOVE "V" TO W-VALID
               ELSE
                   MOVE "F" TO W-VALID     
               END-IF
    Voici le code du programme principale :
    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
    90
    91
    92
    93
    94
    95
    96
    97
    000100 IDENTIFICATION DIVISION.
    000200 PROGRAM-ID. Principal.
           
           ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
           
           DATA DIVISION.
           
           WORKING-STORAGE SECTION.
          *Variables 
           77 W-FINPROG PIC X VALUE "F".
           77 W-VALIDE PIC X VALUE "U".
           77 W-CHOIX PIC X VALUE "0".
           77 W-TEST PIC X.
           77 W-CPTESSAIS PIC 9.
           
          *Variable contenant une date AAMMJJ 
           01 W-DATEJOUR.
              03 AA PIC 99.
              03 MM PIC 99.
              03 JJ PIC 99.
              
          *Variables définissant les paramètres d'affichage de la fenêtre    
           77 W-LIGNEERREUR PIC 99 VALUE 21.
           77 W-LIGNEINVITE PIC 99 VALUE 22.
           77 W-LIGNECHOIX  PIC 99 VALUE 23.
           
           
           PROCEDURE DIVISION.
           
          *Paragraphe principal du logiciel de gestion de l'aéroclub.
           MAIN.
           
           PERFORM UNTIL W-FINPROG = "V"
               MOVE "U" TO W-VALIDE
               MOVE 0 TO W-CPTESSAIS
               PERFORM AFF-MENU UNTIL W-VALIDE = "V" OR W-CPTESSAIS > 2
               EVALUATE W-CHOIX 
                    WHEN "0"
                       CALL "F0"
                    WHEN "1"
                       CALL "F1"
                    WHEN "2"
                       CALL "F2"
                    WHEN "3"  
                       CALL "F3"
                    WHEN "4"  
                       CALL "F4"
                    WHEN "5"
                       CALL "F5"
                    WHEN "6"
                       CALL "F6"
                    WHEN "7"
                       CALL "F7"
                    WHEN "Q"
                       MOVE "V" TO W-FINPROG
                    WHEN OTHER  
                       DISPLAY " Fin du programme : Le choix a été "
                               "incorrect 3 fois de suite " 
                               AT 0502 WITH BLANK SCREEN
                       MOVE "V" TO W-FINPROG       
               END-EVALUATE
           END-PERFORM
           STOP RUN.
           
          *Application de la charte graphique déterminée dans le sujet 
           AFF-MENU.
           CALL "AFF-FENETRE" USING "Fonction principale".
         
           DISPLAY "MENU" AT 0638
           DISPLAY "Liste visites à faire          0" AT 0824
           DISPLAY "Dépôt de plan de vol           1" AT 0924
           DISPLAY "Enregistrement vols            2" AT 1024
           DISPLAY "Mise à jour pilotes            3" AT 1124
           DISPLAY "Mise à jour avions             4" AT 1224
           DISPLAY "Récapitulatifs avions          5" AT 1324   
           DISPLAY "Récapitulatifs pilotes         6" AT 1424
           DISPLAY "Facturation pilotes            7" AT 1524
           DISPLAY "Quitter                        Q" AT 1624
               
           DISPLAY "Que voulez-vous faire ?" AT LINE W-LIGNEINVITE 
                                              AT COLUMN 02
               IF W-VALIDE = "F" THEN
                    DISPLAY "Le choix est incorrect"
                        AT LINE W-LIGNEERREUR AT COLUMN 02
               END-IF
           
          *Saisie et vérification de la validité du choix 
           DISPLAY "Choix : " AT LINE W-LIGNECHOIX AT COLUMN 02.
           ACCEPT W-CHOIX AT LINE W-LIGNECHOIX AT COLUMN 10.
           IF (W-CHOIX >= 0 AND W-CHOIX <=7) OR W-CHOIX = "Q" THEN
               MOVE "V" TO W-VALIDE
           ELSE
               COMPUTE W-CPTESSAIS = W-CPTESSAIS + 1
               MOVE "F" TO W-VALIDE     
           END-IF.
    et enfin, le code de la procèdure d'affichage AFF-FENETRE, qui ne sert qu'à faire joli :

    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
    000100 IDENTIFICATION DIVISION.
    000200 PROGRAM-ID. AFF-FENETRE.
           
           ENVIRONMENT DIVISION.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
           
           DATA DIVISION.
           
           WORKING-STORAGE SECTION.
          *Variable contenant une date AAMMJJ 
           01 W-DATEJOUR.
              03 AA PIC 99.
              03 MM PIC 99.
              03 JJ PIC 99.
              
           77 W-NOMFONCTION PIC X(30).
           
           LINKAGE SECTION.
          *Paramètre du sous programme : le nom de la fonction à afficher en haut à droite
           01 P-NOMFONCTION PIC X(30). 
           
           PROCEDURE DIVISION USING P-NOMFONCTION.
           
           INIT.
           
          *Pour éviter de voir des morceaux d'ancien paramètres, on fait subir
          *un prétraitement au paramètre. Sans ces lignes, on pourrait avoir
          *comme affichage : "Plan de volest" pour "Plan de vol".
           MOVE SPACES TO W-NOMFONCTION.
           MOVE P-NOMFONCTION TO W-NOMFONCTION.
           MOVE SPACES TO P-NOMFONCTION.
           
          *Récupération de date sous la forme JJ/MM/AAAA
           ACCEPT W-DATEJOUR FROM DATE. 
           
          *Barre de titre 
           DISPLAY "------------------------------------------------------",
                   "--------------------------"
               AT 0101 WITH BLANK SCREEN
           DISPLAY "Aujourd'hui : ",JJ,"/",MM,"/",AA
               AT 0306
           DISPLAY "AEROCLUB" AT 0336
           DISPLAY W-NOMFONCTION AT 0355
           DISPLAY "------------------------------------------------------",
                   "--------------------------"
               AT 0401
               
          *Délimitation de la dernière zone : erreur, invite et choix     
           DISPLAY "------------------------------------------------------",
                   "--------------------------"
               AT 1901
               
           EXIT PROGRAM.
           END PROGRAM AFF-FENETRE.
    Merci d'avance pour votre aide.

  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.

    Tu veux bien préciser ton OS et ton compilateur et le mettre en tag devant le titre de la discussion.

    - Je n'ai pas trouvé où tu écris le fichier des types quand un type n'existe pas.
    - Il me semble me souvenir de ce genre de problème en Cobol/2 et MF. Le compilateur semble mal gérer l'existence ou non des fichiers à l'OPEN. Il faudrait déclarer et tester le FILE STATUS après l'OPEN si tu veux gérer l'existence des fichiers. Exemple :
    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
    000240 File-Control.
    000250*
    000260     Select PARAMS assign disk REPERT of PARAMS-ID
    000270                 File status STATUT of PARAMS-ID.
    000400*
    000410     Select REFER assign disk REPERT of REFER-ID
    000420                 Organization INDEXED
    000430                 Access DYNAMIC
    000440                 Record key CLE of REFER-RCD
    000450                 File status STATUT of REFER-ID.
    000460*
    001090 01  PARAMS-ID.                                                       *
    001100     03 STATUT    Pic xx.                                             *
    001110     03 REPERT    Pic x(10) value "PARAMS.DAT".                       *
    001120     03 EXIST     Pic x.                                              *
    001230*                                                                     *
    0001510*
    001520 Procedure Division.
    005660 DIVERS SECTION.
    005730 DIVERS3.
    001550     Open Input PARAMS.
    001560     if STATUT of PARAMS-ID not = 00
    000000        move "PARAMETRES" to ERRFILE
    001570        display ERROUV
    001580                STATUT of PARAMS-ID " = "
    001590                REPERT of PARAMS-ID
    002530        ..../...
    001920     STRING REPERT of PARAMS-RCD Delimited by space
    001930            "\" delimited by size
    001940            "REF" delimited by size
    001950            SOCIETE of PARAMS-RCD Delimited by space
    001960            INDICATIF of PARAMS-RCD Delimited by space
    001970            ".DAT" delimited by size
    001980       Into REPERT of REFER-ID.
    001990*
    002460     Open Input REFER
    002470     if STATUT of REFER-ID not = 00
    000000        move "REFERENCES" to ERRFILE
    001570        display ERROUV
    002490        display STATUT of REFER-ID 
    002500        display REPERT of REFER-ID
    002530        ..../...
    Pour créer un fichier à vide, il suffit de l'ouvrir en OUTPUT et le fermer tout de suite après.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci de ta réponse,

    Je viens de changer le sujet du topic en y ajoutant OS/compilateur.
    Je suis sous Windows avec Percobol & LegacyJ.

    En ce qui concerne les bugs que je rencontre, les portions de codes visées sont en gras dans le premier code que j'ai mis (celui gérant les pilotes).

  4. #4
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    un petit lien trouvé récemment qui donne la liste des file-status

    http://membres.lycos.fr/mvstut/filestat.htm

    très utile. Permet de gérer très finement les soucis de fichier.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  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
    Citation Envoyé par Neutrinos Voir le message
    Merci de ta réponse,

    Je viens de changer le sujet du topic en y ajoutant OS/compilateur.
    Je suis sous Windows avec Percobol & LegacyJ.
    Ok, c'est bon
    En ce qui concerne les bugs que je rencontre, les portions de codes visées sont en gras dans le premier code que j'ai mis (celui gérant les pilotes).
    Désolé, je me suis mal exprimé. J'ai bien vu en détail les 3 progs mais je n'ai pas trouvé où tu écris le fichier des types, j'ai vu tous les WRITE sauf le WRITE TYPAVION ? Il faudrait peut être que j'aille voir mon ophtalmo.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    J'ai bien vu en détail les 3 progs mais je n'ai pas trouvé où tu écris le fichier des types, j'ai vu tous les WRITE sauf le WRITE TYPAVION ? Il faudrait peut être que j'aille voir mon ophtalmo.
    Je ne fais pas encore l'écriture, le problème vient juste du fait que des enregistrements qui n'existent pas soit trouvés

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je viens de résoudre mon problème en fait sait une ouverture de chaque fichier en OUTPUT et en les refermant tout de suite avant de les réouvrir en INPUT-OUTPUT.

    C'est sale, mais ça marche.

    Merci à tous pour votre aide.

  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 Neutrinos Voir le message
    Je viens de résoudre mon problème en fait sait une ouverture de chaque fichier en OUTPUT et en les refermant tout de suite avant de les réouvrir en INPUT-OUTPUT.

    C'est sale, mais ça marche.

    Merci à tous pour votre aide.
    Bonjour.

    AMHA pour les fichiers dits "permanents", pilotes, types avions, visites, et pour tous les autres que tu vas faire, tu écris des petits programmes qui les créent une fois pour toutes par une ouverture et une fermeture immédiate et tu enlèves cette procédure des programmes de traitement.

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

Discussions similaires

  1. Vbscript trouve un fichier qui n existe pas
    Par mimi270188 dans le forum VBScript
    Réponses: 7
    Dernier message: 26/02/2014, 05h59
  2. Réponses: 4
    Dernier message: 18/12/2012, 11h56
  3. [LG]Enregistrements dans un fichier
    Par ticoude dans le forum Langage
    Réponses: 1
    Dernier message: 26/11/2004, 18h33
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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