Reads records from the student file, counts the total number of student records and the number of records for females and males, and prints the results in a short report.
>>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. StudentNumbersReport .
AUTHOR. Michael Coughlan.
*>INPUT The student record file Students.dat Records in this file
*> are sequenced on ascending Student Number.
*>OUTPUT Shows the number of student records in the file and the
*> number of records for males and females.
*>PROCESSING For each record read;
*> Adds one to the TotalStudents count
*> IF the Gender is Male adds one to TotalMales
*> IF the Gender is Female adds one to TotalFemales
*> At end of file writes the results to the report file.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT StudentFile ASSIGN TO "STUDENTS.dat"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT ReportFile ASSIGN TO "STUDENTS.rpt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD StudentFile.
01 StudentDetails.
88 EndOfStudentFile VALUE HIGH-VALUES.
02 StudentId PIC 9(7).
02 StudentName.
03 Surname PIC X(8).
03 Initials PIC XX.
02 DateOfBirth.
03 YOBirth PIC 9(4).
03 MOBirth PIC 9(2).
03 DOBirth PIC 9(2).
02 CourseCode PIC X(4).
02 Gender PIC X.
88 Male VALUE "M", "m".
FD ReportFile.
01 PrintLine PIC X(40).
WORKING-STORAGE SECTION.
01 HeadingLine PIC X(21) VALUE " Record Count Report".
01 StudentTotalLine.
02 FILLER PIC X(17) VALUE "Total Students = ".
02 PrnStudentCount PIC Z,ZZ9.
01 MaleTotalLine.
02 FILLER PIC X(17) VALUE "Total Males = ".
02 PrnMaleCount PIC Z,ZZ9.
01 FemaleTotalLine.
02 FILLER PIC X(17) VALUE "Total Females = ".
02 PrnFemaleCount PIC Z,ZZ9.
01 WorkTotals.
02 StudentCount PIC 9(4) VALUE ZERO.
02 MaleCount PIC 9(4) VALUE ZERO.
02 FemaleCount PIC 9(4) VALUE ZERO.
PROCEDURE DIVISION.
Begin.
OPEN INPUT StudentFile
OPEN OUTPUT ReportFile
READ StudentFile
AT END SET EndOfStudentFile TO TRUE
END-READ
PERFORM UNTIL EndOfStudentFile
ADD 1 TO StudentCount
IF Male ADD 1 TO MaleCount
ELSE ADD 1 TO FemaleCount
END-IF
READ StudentFile
AT END SET EndOfStudentFile TO TRUE
END-READ
END-PERFORM
PERFORM PrintReportLines
CLOSE StudentFile, ReportFile
STOP RUN.
PrintReportLines.
MOVE StudentCount TO PrnStudentCount
MOVE MaleCount TO PrnMaleCount
MOVE FemaleCount TO PrnFemaleCount
WRITE PrintLine FROM HeadingLine
AFTER ADVANCING PAGE
WRITE PrintLine FROM StudentTotalLine
AFTER ADVANCING 2 LINES
WRITE PrintLine FROM MaleTotalLine
AFTER ADVANCING 2 LINES
WRITE PrintLine FROM FemaleTotalLine
AFTER ADVANCING 2 LINES.
Sample output
Record Count Report Total Students = 32 Total Males = 18 Total Females = 14