Liste via sous fichiers avec option

BoTTom |
       IDENTIFICATION DIVISION.
 
       PROGRAM-ID. CBLI07.
 
       ENVIRONMENT DIVISION.
 
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-AS400.
       OBJECT-COMPUTER. IBM-AS400.
       SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
 
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT ECRAN ASSIGN TO WORKSTATION-DSPI09-SI
           ORGANIZATION TRANSACTION ACCESS DYNAMIC
           RELATIVE KEY IS RANG FILE STATUS IS ETAT.
 
           SELECT FICH1L1 ASSIGN TO DATABASE-FICH1L1
           ORGANIZATION INDEXED ACCESS DYNAMIC
           RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
           WITH DUPLICATES.
 
           SELECT FICH2P1 ASSIGN TO DATABASE-FICH2P1
           ORGANIZATION INDEXED ACCESS RANDOM
           RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
           WITH DUPLICATES.
 
       DATA DIVISION.
 
       FILE SECTION.
       FD  ECRAN.
       01  BUFFER PIC X(38).
       FD  FICH1L1.
       01  enreg1.
           COPY DDS-FICH1F1 OF FICH1L1.
       FD  FICH2P1.
       01  enreg2.
           COPY DDS-FICH2F1 OF FICH2P1.
 
       WORKING-STORAGE SECTION.
 
       01  TINDIC.
           05 IND OCCURS 99 PIC 1 INDICATOR 01.
       01  F1I.


|
           COPY DDS-F1-I OF DSPI09.
       01  SFLIO.
           COPY DDS-SFL  OF DSPI09.
       01  CTLO.
           COPY DDS-CTL-O OF DSPI09.
       77  ERREUR PIC XXX VALUE "NON".
       77  RANG PIC 9999.
       77  FLAGEOF PIC X.
               88 EOF value "O".
       77  FLAGEOSFL PIC X.
               88 EOSFL value "O".
       77  ETAT PIC XX.
      *===========================================
       PROCEDURE DIVISION.
      *===========================================
 
           OPEN INPUT FICH2P1 FICH1L1 I-O ECRAN.
           WRITE BUFFER FORMAT "TITRE".
           WRITE BUFFER FORMAT "F1".
           READ ECRAN INTO F1-I FORMAT "F1" INDIC TINDIC.
           PERFORM UNTIL IND(03) = B"1"
                   PERFORM TRAITEMENT
                   WRITE BUFFER FORMAT "F1" INDIC TINDIC
                   READ ECRAN INTO F1-I FORMAT "F1" INDIC TINDIC
           END-PERFORM.
           CLOSE FICH1L1 FICH2P1 ECRAN.
           STOP RUN.
 
       TRAITEMENT.
           MOVE CODE OF F1-I TO CODE OF FICH2F1.
           READ FICH2P1
           INVALID KEY
              MOVE B"1" TO IND(50)
           NOT INVALID KEY
             MOVE CODE OF F1-I TO CODE OF FICH1F1
             START FICH1L1 KEY IS EQUAL TO CODE OF FICH1F1
                          INVALID KEY
                           MOVE B"1" TO IND(50)
                          NOT INVALID KEY
                           PERFORM SOUSFICHIER
             END-START
           END-READ.
       SOUSFICHIER.
           PERFORM RAZ.


|
           READ FICH1L1 NEXT AT END SET EOF TO TRUE.
             PERFORM UNTIL EOF OR
                         CODE OF FICH1F1 NOT = CODE OF F1-I
               PERFORM ECRSOUSFICHIER
               READ FICH1L1 NEXT AT END SET EOF TO TRUE END-READ
             END-PERFORM.
           MOVE CORR FICH2F1 TO CTL-O.
           WRITE BUFFER FORMAT "PIED".
 
           PERFORM WITH TEST AFTER UNTIL IND(12) = B"1"
             WRITE BUFFER FROM CTL-O FORMAT "CTL" INDIC TINDIC
             READ ECRAN FORMAT "CTL" INDIC TINDIC
             PERFORM SFLMODIF
           END-PERFORM.
       RAZ.
           MOVE "N" TO FLAGEOF.
           MOVE ZERO TO RANG.
           MOVE B"0" TO IND(30) IND(31).
           WRITE BUFFER FROM CTL-O FORMAT "CTL" INDIC TINDIC.
           MOVE B"1" TO IND(31).
       ECRSOUSFICHIER.
             MOVE CORR FICH1F1 TO SFL.
             ADD 1 TO RANG.
             MOVE B"1" TO IND(30).
             WRITE SUBFILE BUFFER FROM SFL FORMAT "SFL".
       SFLMODIF.
           MOVE "N" TO FLAGEOSFL.
           READ SUBFILE ECRAN NEXT MODIFIED INTO SFL FORMAT "SFL"
                                   AT END SET EOSFL TO TRUE .
           PERFORM UNTIL EOSFL
           EVALUATE OPTION
                    WHEN "2"
                         CALL "CBLOP2" USING CLE OF SFL
                              ON OVERFLOW DISPLAY
                                 "APPEL CBLOP2 EN ERREUR"
                         END-CALL
                    WHEN "5"
                         CALL "CBLOP5" USING CLE OF SFL
                              ON OVERFLOW DISPLAY
                                 "APPEL CBLOP5 EN ERREUR"
                         END-CALL
                END-EVALUATE
           MOVE SPACES TO OPTION
           REWRITE SUBFILE BUFFER FROM SFL FORMAT "SFL"


|
           READ SUBFILE ECRAN NEXT MODIFIED INTO SFL FORMAT "SFL"
                                   AT END SET EOSFL TO TRUE END-READ
           END-PERFORM.




©AF400