All pastes #1096749 Raw Edit

exercise 1

public text v1 · immutable
#1096749 ·published 2008-08-09 11:10 UTC
rendered paste body
       IDENTIFICATION DIVISION.
       PROGRAM-ID. CWAGE.
       AUTHOR. ALVIN LADDARAN.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       INPUT-OUTPUT SECTION.
         FILE-CONTROL.
         SELECT EMPFILE ASSIGN TO "ACLIN1"
            ORGANIZATION IS LINE SEQUENTIAL
            FILE STATUS IS EMPStat.
         SELECT PAYLIST ASSIGN TO "PAYLIST"
            ORGANIZATION IS LINE SEQUENTIAL
            FILE STATUS IS PAYStat.

       DATA DIVISION.
       FILE SECTION.
       FD EMPFILE.
       01 EMPREC.
           10 EMP-NUM       PIC X(20).
           10 HRS-WORK      PIC 99.
           10 HRLY-RATE     PIC 999V99.
           10 FILLER        PIC X(8) VALUE SPACES.

       FD PAYLIST.
       01 PAYREC.
           10 PAY-EMP-NUM   PIC X(20).
           10 PAY-WKLY-WAGE PIC 9(7)V99.
           10 FILLER        PIC X(11) VALUE SPACES.

       WORKING-STORAGE SECTION.
       01 WORK-AREA.
           10 WS-HRS-WORK   PIC 99.
           10 WS-HRLY-RATE  PIC 999V99.
           10 EndOfFile     PIC XXX.
           10 EMPStat       PIC XX.
           10 PAYStat       PIC XX.

       PROCEDURE DIVISION.
       000-ProgramBegin.
           PERFORM 100-INIT.
           PERFORM 200-PROCESS.
           PERFORM 900-ENDBLOCK.
       000-EXIT.

       200-PROCESS.
           PERFORM WITH TEST AFTER UNTIL EndOfFile = "SET"
              IF HRS-WORK IS NUMERIC AND HRLY-RATE IS NUMERIC
                  MOVE EMP-NUM TO PAY-EMP-NUM
                  MOVE HRS-WORK TO WS-HRS-WORK
                  MOVE HRLY-RATE TO WS-HRLY-RATE
                  COMPUTE PAY-WKLY-WAGE = WS-HRS-WORK * WS-HRLY-RATE
                  WRITE PAYREC
              END-IF
              PERFORM 800-PAYChecking
              READ EMPFILE
                 AT END PERFORM 900-EOFPerform
              END-READ
           END-PERFORM.
       200-EXIT.

       800-EMPChecking.
           IF EMPStat = "00" THEN
              CONTINUE
           ELSE
              PERFORM 850-ERROR-DISPLAY
              DISPLAY "the input file.)"
              PERFORM 900-ENDBLOCK
           END-IF.
       800-EMPChecking-EXIT.

       800-PAYChecking.
           IF PAYStat = "00" THEN
              CONTINUE
           ELSE
              PERFORM 850-ERROR-DISPLAY
              DISPLAY "the output file.)"
              PERFORM 900-ENDBLOCK
           END-IF.
       800-PAYChecking-EXIT.

       800-EMPTY-INPUT.
           MOVE "SET" TO EndOfFile.
           DISPLAY "   The input file was empty.".
           DISPLAY "The program will terminate now.".
           PERFORM 900-ENDBLOCK.
       800-EMPTY-INPUT-END.

       850-ERROR-DISPLAY.
           DISPLAY "An error has occurred.".
           DISPLAY "Please check your disk and input files".
           DISPLAY "for possible problems.".
           DISPLAY "(Hint: the error was triggered by ".
       850-EXIT.

       100-INIT.
           MOVE "OFF" TO EndOfFile.

           OPEN INPUT EMPFILE.
           PERFORM 800-EMPChecking.
           OPEN OUTPUT PAYLIST.
           PERFORM 800-PAYChecking.

           READ EMPFILE
              PERFORM 800-EMPChecking
              AT END PERFORM 800-EMPTY-INPUT
           END-READ.
       100-EXIT.

       900-EOFPerform.
           MOVE "SET" TO EndOfFile.
           DISPLAY "The program has finished executing.".
       900-EOF-EXIT.

       900-ENDBLOCK.
           CLOSE EMPFILE, PAYLIST.
           STOP RUN.
       900-ENDBLOCK-EXIT.