Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Hallo 2

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.

Hallo 3

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.

Hallo 4

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.

HOMEWORK 2 COBOL

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.
    
    
    


Compile and Execute COBOL Online

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.

HW03YM

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.

Gavin Hooper HW02GH

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.

asn1cobol

/∗
∗ 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.

HW01BH

IDENTIFICATION DIVISION.
PROGRAM-ID. HMW01BH.
AUTHOR BRIAN HAMIL.
PROCEDURE DIVISION.
DISPLAY 'I love to code and Hello World is such a boring first message so I thought I
would expand on it.'.
STOP RUN.

HW01CF

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.

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.