Sei sulla pagina 1di 3

IDENTIFICATION DIVISION.

PROGRAM-ID. BATCH7.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SEQ-INFILE ASSIGN TO "input.dat"
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS IN-STATUS.
SELECT SEQ-OUTFILE ASSIGN TO "output.dat"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD SEQ-INFILE
RECORD CONTAINS 100 CHARACTERS
BLOCK CONTAINS 10 RECORDS
RECORDING MODE IS F.
01 IN-REC.
02 FNAME PIC X(8).
02 LNAME PIC X(11).
02 GRADE PIC X(1).
02 FILLER PIC X(7).
02 GENDER PIC X(1).
02 FILLER PIC X(4).
02 SCHOOL PIC X(48).
FD SEQ-OUTFILE
RECORD CONTAINS 100 CHARACTERS
BLOCK CONTAINS 10 RECORDS
RECORDING MODE IS F.
01 OUT-REC.
02 F1.
03 F2.
04 F3 PIC X(8).
04 F4 PIC X(12).
03 F8.
04 F5.
05 F9 PIC X(10).
05 F10 PIC X(10).
04 F6 PIC X(20).
04 F7 PIC X(20).
WORKING-STORAGE SECTION.
77 IN-STATUS PIC X(2).
01 TABLE1.
02 WS-SCHOOL OCCURS 2 TIMES.
03 WS-SCHOOL1 PIC X(48).
03 WS-GRADE OCCURS 3 TIMES.
04 WS-GRADE1 PIC X(1).
04 WS-STUDENT OCCURS 48 TIMES.
05 WS-FNAME PIC X(8).
05 WS-LNAME PIC X(11).
05 WS-GENDER PIC X(1).
*77 IN-STATUS PIC X(2).
77 COUNTER PIC 9(4) VALUE 0.
77 COUNTER1 PIC 9(4) VALUE 1.
77 C PIC 9(4) VALUE 1.
77 D PIC X(4) VALUE 'DATE'.
*77 G PIC X(5) VALUE 'GRADE'.
77 G1 PIC 9(1).
77 E PIC 9(4) VALUE 1.
77 F PIC 9(4) VALUE 1.
77 I PIC 9(4) VALUE 1.
77 J PIC 9(4) VALUE 1.
77 K PIC 9(4) VALUE 1.
77 D PIC 9(5) VALUE 1.
77 S PIC X(70) VALUE ALL SPACES.
77 T PIC X(80) VALUE ALL '*'.
01 ARRAY OCCURS 999 TIMES.
05 AFNAME PIC X(8).
05 ALNAME PIC X(11).
05 AGRADE PIC X(1).
05 AGENDER PIC X(1).
05 ASCHOOL PIC X(48).
PROCEDURE DIVISION.
PARA.
OPEN INPUT SEQ-INFILE.
OPEN OUTPUT SEQ-OUTFILE.
* PERFORM PARA1 UNTIL IN-STATUS = 10.
* DISPLAY ASCHOOL(2).
* CLOSE SEQ-INFILE.
PERFORM PARA2.
* DISPLAY COUNTER.
* STOP RUN.
* OPEN INPUT SEQ-INFILE.
* PERFORM PARA2 UNTIL IN-STATUS = 10.
*MOVING ALL RECORDS TO AN ARRAY.
*PARA1.
* READ SEQ-INFILE.
* MOVE FNAME TO AFNAME(C).
* MOVE LNAME TO ALNAME(C).
* MOVE GRADE TO AGRADE(C).
* MOVE GENDER TO AGENDER(C).
* MOVE SCHOOL TO ASCHOOL(C).
* COMPUTE C = C + 1.
PARA2.
* OPEN INPUT SEQ-INFILE.
READ SEQ-INFILE.
MOVE SCHOOL TO WS-SCHOOL1(I).
MOVE GRADE TO WS-GRADE1(I J).
CLOSE SEQ-INFILE.
OPEN INPUT SEQ-INFILE.
PERFORM PARA4 3 TIMES.
* PERFORM PARA4 UNTIL IN-STATUS = 10.
STOP RUN.
*COUNTING THE NO. OF SCHOOLS.
*PARA3.
* IF ASCHOOL(E) = ASCHOOL(F)
* COMPUTE F = F + 1
* PERFORM PARA3
* ELSE
* MOVE ASCHOOL(E) TO WS-SCHOOL1(I)
* COMPUTE COUNTER = COUNTER + 1
* MOVE F TO E
* PERFORM PARA3 UNTIL IN-STATUS = 10.
PARA3.
* MOVE GRADE1(I J) TO GRADE1(I J).
COMPUTE I = I + 1.
MOVE 1 TO J.
MOVE 1 TO K.
MOVE SCHOOL TO WS-SCHOOL1(I).
MOVE GRADE TO WS-GRADE1(I J).
PARA5.
COMPUTE J = J + 1.
MOVE 1 TO K.
* COMPUTE K = K + 1.
MOVE GRADE TO WS-GRADE1(I J).

PARA4.
READ SEQ-INFILE.
MOVE T TO F1.
WRITE OUT-REC.
MOVE S TO F1.
IF SCHOOL NOT EQUAL WS-SCHOOL1(I)
PERFORM PARA3
* MOVE SCHOOL TO WS-SCHOOL1(I).
MOVE WS-SCHOOL1(I) TO F5.
MOVE 'DATE' TO F7.
WRITE OUT-REC.
MOVE S TO F1.
WRITE OUT-REC.
IF GRADE NOT EQUAL WS-GRADE1(I J)
PERFORM PARA5.
* MOVE GRADE TO WS-GRADE1(I J).
MOVE 'GRADE' TO F3.
MOVE WS-GRADE1(I J) TO F4.
MOVE S TO F8.
WRITE OUT-REC.
MOVE T TO F1.
WRITE OUT-REC.
MOVE FNAME TO WS-FNAME(I J K).
MOVE LNAME TO WS-LNAME(I J K).
MOVE GENDER TO WS-GENDER(I J K).
MOVE WS-FNAME(I J K) TO F2.
MOVE WS-LNAME(I J K) TO F5.
MOVE WS-GENDER(I J K) TO F6.
MOVE S TO F7.
WRITE OUT-REC.
COMPUTE K = K + 1.
* PERFORM PARA4 2 TIMES.

Potrebbero piacerti anche