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
| INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT Inp ASSIGN TO "Fichier.seq"
ORGANIZATION IS SEQUENTIAL;
ACCESS MODE IS SEQUENTIAL.
SELECT Tmp ASSIGN TO "Fichier.tmp"
SELECT Out ASSIGN TO "Fichier.out"
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
DATA DIVISION.
FILE SELECTION.
FD Inp.
01 Inp-Rec.
02 Numid PIC X(10).
02 Adresse PIC X(20).
02 Campus PIC X(10).
02 Loyer PIC 9(4).
02 Matricule PIC 9(6).
SD Tmp.
01 Tmp-Rec.
02 Numid PIC X(10).
02 Adresse PIC X(20).
02 Campus PIC X(10).
02 Loyer PIC 9(4).
02 Matricule PIC 9(6).
FD Out.
01 Out-Rec.
02 Numid PIC X(10).
02 Adresse PIC X(20).
02 Campus PIC X(10).
02 Loyer PIC 9(4).
02 Matricule PIC 9(6).
WORKING-STORAGE SECTION.
01 Dsp-Rec
02 Numid PIC X(10).
02 FILLER PIC X, VALUE ",".
02 Adresse PIC X(20).
02 FILLER PIC X, VALUE ",".
02 Campus PIC X(10).
02 FILLER PIC X, VALUE ",".
02 Loyer PIC 9(4).
02 FILLER PIC X, VALUE ",".
02 Matricule PIC 9(6).
77 FILLER PICTURE 9.
88 Valid VALUE IS 1.
88 Existe VALUE IS 1.
88 Fini VALUE IS 1.
PROCEDURE DIVISION.
00-Main.
SORT Tmp ON ASCENDING KEY Matricule IN Tmp-Rec,
USING Inp, GIVING Out.
OPEN INPUT Out.
PERFORM 01-Range, UNTIL Valid.
PERFORM 01-Init, UNTIL Existe.
PERFORM 01-Body THRU 01-Init, WITH TEST BEFORE, UNTIL Fini.
CLOSE Inp.
STOP RUN.
01-Range.
DISPLAY "Entrez le matricule minimale".
ACCEPT Debut.
DISPLAY "Entrez le matricule maximale".
ACCEPT Fin.
IF Debut <= Fin
THEN
SET Valid TO TRUE
END-IF.
01-Init.
START Out, KEY = Debut
INVALID KEY
ADD 1 TO Debut
NOT INVALID KEY
MOVE TRUE TO Existe
END-START.
01-Body.
MOVE CORRESPONDING Out-Rec TO Dsp-Rec.
DISPLAY Dsp-Rec.
01-Proc.
READ Out NEXT RECORD;
IF Matricule > Fin
THEN
MOVE TRUE TO FINI
END-IF.
AT END SET Fini TO TRUE;
//NOT AT END SET Fini TO FALSE;
END-READ.
END PROGRAM Affichage. |
Partager