IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NAME PIC A(30). 01 WS-ID PIC 9(5) VALUE '12345'. PROCEDURE DIVISION. A000-FIRST-PARA. DISPLAY 'Hello World'. MOVE 'TutorialsPoint' TO WS-NAME. DISPLAY "My name is : "WS-NAME. DISPLAY "My ID is : "WS-ID. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC S9(3)V9(2). 01 WS-NUM2 PIC PPP999. 01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45. 01 WS-NAME PIC A(6) VALUE 'ABCDEF'. 01 WS-ID PIC X(5) VALUE 'A121$'. PROCEDURE DIVISION. DISPLAY "WS-NUM1 : "WS-NUM1. DISPLAY "WS-NUM2 : "WS-NUM2. DISPLAY "WS-NUM3 : "WS-NUM3. DISPLAY "WS-NAME : "WS-NAME. DISPLAY "WS-ID : "WS-ID. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 99V9 VALUE IS 3.5. 01 WS-NAME PIC A(6) VALUE 'ABCD'. 01 WS-ID PIC 99 VALUE ZERO. PROCEDURE DIVISION. DISPLAY "WS-NUM1 : "WS-NUM1. DISPLAY "WS-NAME : "WS-NAME. DISPLAY "WS-ID : "WS-ID. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW02JS. AUTHOR Jacob Steiner DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-YY PICTURE 9(02). 05 EMP-PAY-MM PICTURE 9(02). 05 EMP-PAY-DD PICTURE 9(02). 05 EMP-NUMBER PICTURE X(03). 05 EMP-LAST-NAME PICTURE X(07). 05 EMP-FIRST-NAME PIC X(05). 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X(01). 88 HOURLY VALUE 'H'. 88 SALARY VALUE 'S'. 05 EMP-POSITION PIC X(01). 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 GROSS-PAY PIC 999V99. PROCEDURE DIVISION. DISPLAY 'PAYROLL HW02JS FOR Jacob Steiner'. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. DISPLAY 'WHOLE INPUT RECORD: ' EMPLOYEE-RECORD-IN. DISPLAY 'PAY DATE: ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER: ' EMP-NUMBER. DISPLAY ' HOURS: ' HOURS-WORKED. DISPLAY ' PAY RATE: ' PAY-RATE. DISPLAY ' POSITION: ' EMP-POSITION. DISPLAY ' PAY TYPE: ' EMP-PAY-TYPE. COMPUTE GROSS-PAY = HOURS-WORKED * PAY-RATE. DISPLAY 'EXTRA CREDIT: '. DISPLAY ' GROSS PAY: ' GROSS-PAY. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR Jacob Steiner'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW01FN. AUTHOR. DANIELLE WILLIAMS. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROFESSOR-NAME PICTURE X(08) VALUE 'Williams'. 01 WS-COURSE-SCORE PICTURE 9(03) VALUE 68. 01 WS-PASSING-SCORE PICTURE 9(02) VALUE 70. 01 WS-POINTS-UNDER-PASSING PICTURE 9(02) VALUE 0. PROCEDURE DIVISION. DISPLAY 'Hello, Professor ' WS-PROFESSOR-NAME ' Here'. ACCEPT WS-COURSE-SCORE. IF WS-COURSE-SCORE >= WS-PASSING-SCORE DISPLAY 'You Passed the Course with a score of: ' WS-COURSE-SCORE ELSE DISPLAY 'Oh-no...Your Score of ' WS-COURSE-SCORE ' did not pass' DISPLAY 'A score below ' WS-PASSING-SCORE ' is a failing grade' COMPUTE WS-POINTS-UNDER-PASSING = WS-PASSING-SCORE - WS-COURSE-SCORE DISPLAY 'You needed ' WS-POINTS-UNDER-PASSING ' more points to pass' DISPLAY 'Please insert 3 more credits and try again...'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW03YM. AUTHOR. YIMENG MA DATA DIVISION. WORKING-STORAGE SECTION. 01 PROGRAM-DATE. 10 PROGRAM-DATE-YY PIC X(02). 10 PROGRAM-DATE-MM PIC X(02). 10 PROGRAM-DATE-DD PIC X(02). 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(02). 10 EMP-PAY-MM PIC X(02). 10 EMP-PAY-DD PIC X(02). 05 EMP-NUMBER PIC X(03). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 99V99. 05 PAY-RATE PIC 99V99. 05 EMP-PAY-TYPE PIC X. 88 HOURLY-PAY VALUE 'H'. 88 SALARY-PAY VALUE 'S'. 05 EMP-POSITION PIC X. 88 PROGRAMMER VALUE 'P'. 88 ACCOUNTANT VALUE 'A'. 88 MANAGER VALUE 'M'. 88 INTERN VALUE 'I'. 88 TESTER VALUE 'T'. 05 EMP-GROSS-OUT PIC 9(04)V99. 05 EMP-OVERTIME-HOURS-OUT PIC 9(02). 05 EMP-OVERTIME-OUT PIC 9(04)V99. 05 EMP-TAXES-OUT PIC 9(04)V99. 05 EMP-NET-OUT PIC 9(04)V99. 05 FILLER PIC X(10). 01 EMP-TAX-RATE PIC V99. 01 EMPLOYEE-PAY-TOTALS. 05 EMP-GROSS-PAY PIC 9(04)V99. 05 EMP-NET-PAY PIC 9(04)V99. 05 EMP-TAXES PIC 9(04)V99. 01 PROGRAM-TOTALS. 05 FILE-RECORD PIC 9(02). 05 TOTAL-GROSS-PAY PIC 9(04)V99. 05 TOTAL-TAXES PIC 9(04)V99. 05 TOTAL-NET-PAY PIC 9(04)V99. PROCEDURE DIVISION. DISPLAY 'PAYROLL HW03FL FOR YIMENG MA'. ACCEPT PROGRAM-DATE DISPLAY 'PROGRAM BEGINS : ' PROGRAM-DATE-MM '/' PROGRAM-DATE-DD '/' PROGRAM-DATE-YY SET EMP-TAX-RATE TO .32 ACCEPT EMPLOYEE-RECORD-IN. COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE. COMPUTE EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE. COMPUTE EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY. DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. ACCEPT EMPLOYEE-RECORD-IN. COMPUTE EMP-GROSS-PAY = HOURS-WORKED * PAY-RATE. COMPUTE EMP-TAXES = EMP-GROSS-PAY * EMP-TAX-RATE. COMPUTE EMP-NET-PAY = EMP-GROSS-PAY - EMP-TAXES. DISPLAY 'PAY DATE : ' EMP-PAY-MM '/' EMP-PAY-DD '/' EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME: ' EMP-LAST-NAME ', ' EMP-FIRST-NAME. DISPLAY ' NUMBER : ' EMP-NUMBER. DISPLAY ' HOURS : ' HOURS-WORKED. DISPLAY ' PAY RATE : ' PAY-RATE. DISPLAY ' POSITION : ' EMP-POSITION. DISPLAY ' PAY TYPE : ' EMP-PAY-TYPE. DISPLAY ' GROSS PAY: ' EMP-GROSS-PAY. DISPLAY ' TAXES : ' EMP-TAXES. DISPLAY ' NET PAY : ' EMP-NET-PAY. DISPLAY '--'. COMPUTE TOTAL-GROSS-PAY = EMP-GROSS-PAY + EMP-GROSS-PAY. COMPUTE TOTAL-TAXES = EMP-TAXES + EMP-TAXES. COMPUTE TOTAL-NET-PAY = EMP-NET-PAY + EMP-NET-PAY. DISPLAY 'FILE TOTALS:'. DISPLAY ' RECORDS : 2' DISPLAY ' GROSS : ' TOTAL-GROSS-PAY. DISPLAY ' TAXES : ' TOTAL-TAXES. DISPLAY ' NET : ' TOTAL-NET-PAY. DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR YIMENG MA'. STOP RUN.
IDENTIFICATION DIVISION. PROGRAM-ID. HW02GH. AUTHOR. GAVIN HOOPER. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD-IN. 05 EMP-PAY-DATE-IN. 10 EMP-PAY-YY PIC X(2). 10 EMP-PAY-MM PIC X(2). 10 EMP-PAY-DD PIC X(2). 05 EMP-NUMBER PIC X(3). 05 EMP-NAME. 10 EMP-LAST-NAME PIC X(15). 10 EMP-FIRST-NAME PIC X(10). 05 HOURS-WORKED PIC 99V9(2). 05 PAY-RATE PIC 99V9(2). 05 EMP-PAY-TYPE PIC X(1). 88 HOURLY VALUE'H'. 88 SALARY VALUE'S'. 05 EMP-POSITION PIC X(1). 88 PROGRAMMER VALUE'P'. 88 ACCOUNTANT VALUE'A'. 88 MANAGER VALUE'M'. 88 INTERN VALUE'I'. 88 TESTER VALUE'T'. PROCEDURE DIVISION. ACCEPT EMPLOYEE-RECORD-IN. DISPLAY 'PAYROLL HW02GH FOR GAVIN HOOPER'. DISPLAY '--'. DISPLAY 'WHOLE INPUT RECORD: ' EMPLOYEE-RECORD-IN DISPLAY 'PAY DATE : ' EMP-PAY-MM'/'EMP-PAY-DD'/'EMP-PAY-YY. DISPLAY 'EMPLOYEE NAME : ' EMP-LAST-NAME', ' EMP-FIRST-NAME DISPLAY ' NUMBER: ' EMP-NUMBER DISPLAY ' HOURS: ' HOURS-WORKED DISPLAY ' PAY RATE: ' PAY-RATE DISPLAY ' POSITION: ' EMP-PAY-TYPE DISPLAY ' PAY TYPE: ' EMP-POSITION DISPLAY '--'. DISPLAY 'END OF PROGRAM FOR GAVIN HOOPER'. STOP RUN.
/∗ ∗ CSCI3180 Principles of Programming Languages ∗ ∗ --- Declaration --- ∗ ∗ I declare that the assignment here submitted is original except for source ∗ material explicitly acknowledged. I also acknowledge that I am aware of ∗ University policy and regulations on honesty in academic work, and of the ∗ disciplinary guidelines and procedures applicable to breaches of such policy ∗ and regulations, as contained in the website ∗ https://www.cuhk.edu.hk/policy/academichonesty/ ∗ ∗ Assignment 1 ∗ Name : Wang Ruo Ning ∗ Student ID : 1155061935 ∗ Email Addr : [email protected] ∗/ IDENTIFICATION DIVISION. PROGRAM-ID. atd. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEES ASSIGN TO 'employees.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT ATTENDANCE ASSIGN TO 'attendance.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT MONTHLY ASSIGN TO 'monthly-attendancecob.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT SUMMARY ASSIGN TO 'summarycob.txt' ORGANIZATION IS LINE SEQUENTIAL. SELECT SORTFILE ASSIGN TO 'sort.txt' ORGANIZATION IS LINE SEQUENTIAL. DATA DIVITION. FILE SECTION. FD EMPLOYEES. 01 EMPLOYEE-RECORD. 05 ID PIC 9(4). 05 XING PIC X(10). 05 MING PIC X(20). 05 GENDER PIC X(1). 05 BIRTHDATE. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 05 DATE2. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 05 DEPARTMENT PIC X(3). 05 NUMBERS PIC 9(6). FD ATTENDANCE. 01 ATTENDANCERIQI-RECORD. 05 YEAR PIC 9(4). 05 FILLER1 PIC X(1). 05 MONTH PIC 9(2). 05 FILLER2 PIC X(1). 05 RI PIC 9(2). 01 ATTENDANCE-RECORD. 05 ID PIC 9(4). 05 ARRIVEORLEAVE PIC X(6). 05 SHIJIAN. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 10 FILLER3 PIC X(1). 10 HOUR PIC 9(2). 10 FILLER4 PIC X(1). 10 MINUTE PIC 9(2). FD MONTHLY. 01 MONTHLYRIQI-RECORD. 05 YEAR PIC 9(4). 05 FILLER PIC X(1). 05 MONTH PIC 9(2). 01 MONTHATTENDANCE-RECORD. 05 ID PIC 9(4). 05 YI PIC 9(3). 05 ER PIC 9(3). 05 SAN PIC 9(3). FD SUMMARY. 01 SUMMARYTITLE PIC X(24). 01 SUMMARYRIQI PIC X(24). 01 SUMMARYHEADER-RECORD. O5 STAFFID PIC X(41). 05 DEPARTMENTSTATUS PIC X(17). 01 LARGEFILLER PIC X(62). 01 DAYATTENDANCE-RECORD. 05 ID PIC 9(9). 05 XING PIC X(11). 05 MING PIC X(21). 05 DEPARMENT PIC X(11). 05 STATUS PIC X(10). 01 PRESENCES-RECORD. 05 WORDS PIC X(19). 05 SHUZI PIC Z(04)9. 01 ABSENCES-RECORD. 05 WORDS PIC X(18). 05 SHUZI PIC Z(04)9. 01 LATEARRIVALS-RECORD. 05 WORDS PIC X(24). 05 SHUZI PIC Z(04)9. 01 SUSPICIOUSRECORDS-RECORD. 05 WORDS PIC X(29). 05 SHUZI PIC Z(04)9. SD ATTENDANCE. 01 ATTENDANCERIQI-RECORD. 05 YEAR PIC 9(4). 05 FILLER1 PIC X(1). 05 MONTH PIC 9(2). 05 FILLER2 PIC X(1). 05 RI PIC 9(2). 01 ATTENDANCE-RECORD. 05 ID PIC 9(4). 05 ARRIVEORLEAVE PIC X(6). 05 SHIJIAN. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 10 FILLER3 PIC X(1). 10 HOUR PIC 9(2). 10 FILLER4 PIC X(1). 10 MINUTE PIC 9(2). WORKING-STORAGE SECTION. 01 WS-EMPLOYEE-RECORD. 05 ID PIC 9(4). 05 XING PIC X(10). 05 MING PIC X(20). 05 GENDER PIC X(1). 05 BIRTHDATE. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 05 DATE2. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 05 DEPARTMENT PIC X(3). 05 NUMBERS PIC 9(6). 01 WS-ATTENDANCE-RECORD. 05 ID PIC 9(4). 05 ARRIVEORLEAVE PIC X(6). 05 SHIJIAN. 10 YEAR PIC 9(4). 10 FILLER1 PIC X(1). 10 MONTH PIC 9(2). 10 FILLER2 PIC X(1). 10 RI PIC 9(2). 10 FILLER3 PIC X(1). 10 HOUR PIC 9(2). 10 FILLER4 PIC X(1). 10 MINUTE PIC 9(2). 01 WS-ATTENDANCERIQI-RECORD 05 YEAR PIC 9(4). 05 FILLER1 PIC X(1). 05 MONTH PIC 9(2). 05 FILLER2 PIC X(1). 05 RI PIC 9(2). 01 HOUR1 PIC 9(2) VALUE ZERO. 01 HOUR2 PIC 9(2) VALUE ZERO. 01 MINUTE1 PIC 9(2) VALUE ZERO. 02 MINUTE2 PIC 9(2) VALUE ZERO. 01 PRESENCES PIC 9(5) VALUE ZERO. 01 ABSENCES PIC 9(5) VALUE ZERO. 01 LATE PIC 9(5) VALUE ZERO. 01 SUS PIC 9(5) VALUE ZERO. 01 TIMECALCULATION PIC 9(4) VALUE ZERO. 01 RIQI1-RECORD. 05 RIQITITLE PIC X(15) VALUE 'Date: Janurary'. 05 RIQI PIC 9(2). 05 FILLER PIC X(3) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI2-RECORD. 05 RIQITITLE PIC X(15) VALUE 'Date: February'. 05 RIQI PIC 9(2). 05 FILLER PIC X(3) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI3-RECORD. 05 RIQITITLE PIC X(12) VALUE 'Date: March'. 05 RIQI PIC 9(2). 05 FILLER PIC X(6) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI4-RECORD. 05 RIQITITLE PIC X(12) VALUE 'Date: April'. 05 RIQI PIC 9(2). 05 FILLER PIC X(6) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI5-RECORD. 05 RIQITITLE PIC X(10) VALUE 'Date: May'. 05 RIQI PIC 9(2). 05 FILLER PIC X(8) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI6-RECORD. 05 RIQITITLE PIC X(11) VALUE 'Date: June'. 05 RIQI PIC 9(2). 05 FILLER PIC X(7) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI7-RECORD. 05 RIQITITLE PIC X(11) VALUE 'Date: July'. 05 RIQI PIC 9(2). 05 FILLER PIC X(7) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI8-RECORD. 05 RIQITITLE PIC X(13) VALUE 'Date: August'. 05 RIQI PIC 9(2). 05 FILLER PIC X(5) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI9-RECORD. 05 RIQITITLE PIC X(16) VALUE 'Date: September'. 05 RIQI PIC 9(2). 05 FILLER PIC X(2) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI10-RECORD. 05 RIQITITLE PIC X(14) VALUE 'Date: October'. 05 RIQI PIC 9(2). 05 FILLER PIC X(4) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI11-RECORD. 05 RIQITITLE PIC X(15) VALUE 'Date: November'. 05 RIQI PIC 9(2). 05 FILLER PIC X(3) VALUE ','. 05 YEAR PIC 9(4). 01 RIQI12-RECORD. 05 RIQITITLE PIC X(15) VALUE 'Date: December'. 05 RIQI PIC 9(2). 05 FILLER PIC X(3) VALUE ','. 05 YEAR PIC 9(4). 01 WRITEMONTHLY1 PIC 9 VALUE ZERO. 01 WRITEMONTHLY2 PIC 9 VALUE ZERO. 01 STRSTATUS PIC X(10). 01 LATENUMBER PIC 9(3) VALUE ZERO. 01 OVERNUMBER PIC 9(3) VALUE ZERO. PROCEDURE DIVISION. MAIN-PARAGRAPH. PERFORM READATTENDANCE-PARAGRAPH END-PERFORM. PERFORM WRITESUMMARY1-PARAGRAPH END-PERFORM. IF RI OF WS-ATTENDANCERIQI-RECORD = '01' PERFORM WRITEMONTHLY1-1-PARAGRAPH *INPUT WRITE TITLE END-PERFORM END-IF. SORT ATTENDANCE ON ASCENDING KEY ID OF ATTENDANCE-RECORD INPUT PROCEDURE SORTINPUT OUTPUT PROCEDURE SORTOUTPUT. OPEN INPUT EMPLOYEES. PERFORM UNTIL END-OF-FILE READ EMPLOYEES INTO WS-ENPLOYEE-RECORD END-READ. PERFORM READSORTFILE-PARAGRAPH END-PERFORM. PERFORM WRITESUMMARY2-PARAGRAPH END-PERFORM. IF RI OF WS-ATTENDANCERIQI-RECORD > '01' IF WRITEMONTHLY1 = WRITEMONTHLY2 PERFORM WRITEMONTHLY2-2-PARAGRAPH *I-O WRITE BODY END-PERFORM END-IF END-IF. IF RI OF WS-ATTENDANCERIQI-RECORD = '01' IF WRITEMONTHLY1 = WRITEMONTHLY2 PERFORM WRITEMONTHLY1-2-PARAGRAPH *EXTEND WRITE BODY END-PERFORM END-IF END-IF. PERFORM CLEAR-PARAGRAPH. END-PERFORM. END-PERFORM. CLOSE EMPLOYEES. PERFORM WRITESUMMARY3-PARAGRAPH END-PERFORM. STOP RUN. SORTINPUT. READ ATTENDANCE-RECORD. PERFORM UNTIL END-OF-FILE RELEASE ATTENDANCE-RECORD END-PERFORM. SORTOUTPUT PERFORM UNTIL END-OF-FILE RETURN ATTENDANCE INTO WS-ATTENDANCE-RECORD END-RETURN END-PERFORM. READATTENDANCE-PARAGRAPH. OPEN INPUT ATTENDANCE. READ ATTENDANCE INTO WS-ATTENDANCERIQI-RECORD END-READ. CLOSE ATTENDANCE. READSORTFILE-PARAGRAPH. OPEN INPUT SORTFILE. PERFORM UNTIL ID OF WS-ATTENDANCE-RECORD > ID OF WS-EMPLOYEE-RECORD READ SORTFILE INTO WS-ATTENDANCE-RECORD IF ID OF WS-ATTENDANCE-RECORD = ID OF WS-EMPLOYEE-RECORD AND YEAR OF SHIJIAN OF WS-ATTENDANCE-RECORD = YEAR OF WS-ATTENDANCERIQI-RECORD AND MONTH OF SHIJIAN OF WS-ATTENDANCE-RECORD = MONTH OF WS-ATTENDANCERIQI-RECORD AND RI OF SHIJIAN OF WS-ATTENDANCE-RECORD = RI OF WS-ATTENDANCERIQI-RECORD IF ARRIVEORLEAVE OF WS-ATTENDANCE-RECORD = 'ARRIVE' AND WRITEMONTHLY1 = 0 MOVE HOUR OF SHIJIAN OF WS-ARRENDANCE-RECORD TO HOUR1 MOVE MINUTE OF SHIJIAN OF WS-ARRENDANCE-RECORD TO MINUTE1 MOVE 1 TO WRITEMONTHLY1 END-IF IF ARRIVEORLEAVE OF WS-ATTENDANCE-RECORD = 'LEAVE' AND WRITEMONTHLY2 = 0 MOVE HOUR OF SHIJIAN OF WS-ARRENDANCE-RECORD TO HOUR2 MOVE MINUTE OF SHIJIAN OF WS-ARRENDANCE-RECORD TO MINUTE1 MOVE 1 TO WRITEMONTHLY2 END-IF END-IF. END-READ. END-PERFORM. CLOSE SORTFILE. WRITESUMMARY1-PARAGRAPH. OPEN OUTPUT SUMMARY MOVE 'Daily Attendance Summary' TO SUMMARYTITLE. WRITE SUMMARYTITLE. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 01 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI2-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI2-RECORD MOVE RIQI1-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 02 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI2-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI2-RECORD MOVE RIQI2-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 03 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI3-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI3-RECORD MOVE RIQI3-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 04 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI4-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI4-RECORD MOVE RIQI4-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 05 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI5-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI5-RECORD MOVE RIQI5-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 06 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI6-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI6-RECORD MOVE RIQI6-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 07 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI7-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI7-RECORD MOVE RIQI7-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 08 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI8-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI8-RECORD MOVE RIQI8-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 09 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI9-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI9-RECORD MOVE RIQI9-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 10 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI10-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI10-RECORD MOVE RIQI10-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 11 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI11-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI11-RECORD MOVE RIQI11-RECORD TO SUMMARYRIQI END-IF. IF MONTH OF WS-ATTENDANCERIQI-RECORD = 12 MOVE RI OF WS-ATTENDANCERIQI-RECORD TO RIQI OF RIQI12-RECORD MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF RIQI12-RECORD MOVE RIQI12-RECORD TO SUMMARYRIQI END-IF. WRITE SUMMARYRIQI. WRITE 'Staff-ID Name' TO STAFFID OF SUMMARYHEADER. WRITE 'Department Status' TO DEPARTMENTSTATUS OF SUMMARYHEADER. WRITE SUMMARYHEADER. WRITE '--------------------------------------------------------------' TO LARGEFILLER. WRITE LARGEFILLER. CLOSE SUMMARY. WRITESUMMARY2-PARAGRAPH. OPEN EXTEND SUMMARY. MOVE ID OF WS-EMPLOYEE-RECORD TO ID OF DAYATTENDANCE-RECORD. MOVE XING OF WS-EMPLOYEE-RECORD TO XING OF DAYATTENDANCE-RECORD. MOVE MING OF WS-EMPLOYEE-RECORD TO MING OF DAYATTENDANCE-RECORD. MOVE DEPARMENT OF WS-EMPLOYEE-RECORD TO DEPARTMENT OF DAYATTENDANCE-RECORD. IF WRITEMONTHLY1 = 0 AND WRITEMONTHLY2 = 0 MOVE 'ABSENCE' TO STATUS OF DAYATTENDANCE-RECORD MOVE 'ABSENCE' TO STRSTATUS ADD 1 TO ABSENCES END-IF IF HOUR1 >= 10 AND MINUTE1 >= 15 MOVE 'LATE' TO STATUS OF DAYATTENDANCE-RECORD MOVE 'LATE' TO STRSTATUS ADD 1 TO LATE END-IF. IF HOUR1 < 10 OR (HOUR1 >= 10 AND MINUTE1 < 15) MOVE 'PRESENCE' TO STATUS OF DAYATTENDANCE-RECORD MOVE 'PRESENCE' TO STRSTATUS ADD 1 TO PRESENCES END-IF. IF WRITEMONTHLY1 NOT = WRITEMONTHLY2 MOVE 'SUSPICIOUS' TO STATUS OF DAYATTENDANCE-RECORD MOVE 'SUSPICIOUS' TO STRSTATUS ADD 1 TO SUS END-IF. WRITE DAYATTENDANCE-RECORD. CLOSE SUMMARY. WRITESUMMARY3-PARAGRAPH. OPEN EXTEND SUMMARY. WRITE LARGEFILLER. MOVE 'Number of Presences:' TO WORDS OF PRESENCES-RECORD. MOVE PRESENCES TO SHUZI OF PRESENCES-RECORD. WRITE PRESENCES-RECORD. MOVE 'Number of Absences:' TO WORDS OF ABSENCES-RECORD. MOVE ABSENCES TO SHUZI OF ABSENCES-RECORD. WRITE ABSENCES-RECORD. MOVE 'Number of Late Arribals:' TO WORDS OF LATEARRIVALS-RECORD. MOVE LATE TO SHUZI OF LATEARRIVALS-RECORD. WRITE LATEARRIVALS-RECORD. MOVE 'Number of Suspicious Records:' TO WORDS OF SUSPICIOUSRECORDS-RECORD. MOVE SUS TO SHUZI OF SUSPICIOUSRECORDS-RECORD. WRITE SUSPICIOUSRECORDS-RECORD. CLOSE SUMMARY. WRITEMONTHLY1-1-PARAGRAPH. OPEN INPUT MONTHLY. MOVE YEAR OF WS-ATTENDANCERIQI-RECORD TO YEAR OF MONTHLYRIQI-RECORD. MOVE '-' TO FILLER OF RIQI-RECORD. MOVE MONTH OF WS-ATTENDANCERIQI-RECORD TO MONTH OF MONTHLYRIQI-RECORD. WRITE MONTHLYRIQI-RECORD. CLOSE MONTHLY. WRITEMONTHLY1-2-PARAGRAPH. OPEN EXTEND MONTHLY. MOVE ID OF WS-EMPLOYEE-RECORD TO ID OF MONTHATTENDANCE-RECORD. IF STRSTATUS = 'ABSENCE' MOVE '001' TO YI OF MONTHATTENDANCE-RECORD. MOVE '000' TO ER OF MONTHATTENDANCE-RECORD. MOVE '000' TO SAN OF MONTHATTENDANCE-RECORD. END-IF. IF STRSTATUS = 'PRESENCE' OR 'LATE' MOVE '000' TO YI OF MONTHATTENDANCE-RECORD. PERFORM COMPUTEER-PARAGRAPH. END-PERFORM. MOVE LATENUMBER TO ER OF MONTHATTENDANCE-RECORD. PERFORM COMPUTESAN-PARAGRAPH. MOVE OVERNUMBER TO SAN OF MONTHATTENDANCE-RECORD. END-IF. CLOSE MONTHLY. COMPUTEER-PARAGRAPH. IF HOUR1 >=10 ADD HOUR1 TO LATENUMBER GIVING LATENUMBER SUBTRACT 10 FROM LATENUMBER GIVING LATENUMBER MULTIPLY 60 BY LATENUMBER GIVING LATENUMBER ADD MINUTE1 TO LATENUMBER DIVIDE LATENUMBER BY 15 GIVING LATENUMER END-IF. COMPUTESAN-PARAGRAPH IF HOUR2 > 17 ADD HOUR2 TO OVERNUMBER GIVING OVERNUMBER SUBSTRACT 17 FROM OVERNUMBER GIVING OVERNUMBER END-IF. CLEAR-PARAGRAPH. MOVE '0' TO HOUR1. MOVE '0' TO HOUR2. MOVE '0' TO MINUTE1. MOVE '0' TO MINUTE2. MOVE '0' TO WRITEMONTHLY1. MOVE '0' TO WRITEMONTHLY2. MOVE '0' TO LATENUMEBR. MOVE '0' TO OVERNUMBER. WRITEMONTHLY2-2-PARAGRAPH. OPEN I-O MONTHLY. READ MONTHLY. END-READ. PERFORM UNTIL ID OF MONTHATTENDANCE-RECORD > ID OF WS-EMPLOYEE-RECORD. READ MONTHLY. IF ID OF MONTHATTENDANCE-RECORD = ID OF WS-EMPLOYEE-RECORD. IF STRSTATUS = 'ABSENCE' ADD '1' TO YI OF MONTHATTENDANCE-RECORD. END-IF IF STRSTATUS = 'PRESENCE' OR 'LATE' PERFORM COMPUTEER-PARAGRAPH. END-PERFORM. ADD LATENUMBER TO ER OF MONTHATTENDANCE-RECORD. PERFORM COMPUTESAN-PARAGRAPH. END-PERFORM. ADD OVERNUMBER TO SAN OF MONTHATTENDANCE-RECORD. END-IF END-IF. END-READ. END-PERFORM. CLOSE MONTHLY.
IDENTIFICATION DIVISION. PROGRAM-ID. HW01CF. AUTHOR. CIARRA FITTER. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROFESSOR-NAME PICTURE X(08) VALUE 'Lovelace'. 01 WS-COURSE-SCORE PICTURE 9(03) VALUE 68. 01 WS-PASSING-SCORE PICTURE 9(02) VALUE 70. 01 WS-POINTS-UNDER-PASSING PICTURE 9(02) VALUE 0. PROCEDURE DIVISION. DISPLAY 'Hello, Professor ' WS-PROFESSOR-NAME ' Here'. ACCEPT WS-COURSE-SCORE. IF WS-COURSE-SCORE >= WS-PASSING-SCORE DISPLAY 'You passed the course with a score of: ' WS-COURSE-SCORE ELSE DISPLAY 'Oh-no...Your score of ' WS-COURSE-SCORE ' Did not pass' DISPLAY 'A score below ' WS-PASSING-SCORE ' is a failing grade' COMPUTE WS-POINTS-UNDER-PASSING = WS-PASSING-SCORE - WS-COURSE-SCORE DISPLAY 'You needed ' WS-POINTS-UNDER-PASSING ' more points to pass' DISPLAY 'Please insert 3 more credits and try again.... ' STOP RUN.
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more