All pastes #747570 Raw Edit

Untitled

public text v1 · immutable
·published 2007-10-24 04:12 UTC
rendered paste body
------ Sample Input ------
01 +123456789 Alex
02 -123456789 Dave
03 +023456789 Brett
04 -023456789 Ryan


------ My Code ------
      *-----------------------------------------------------------------
       IDENTIFICATION DIVISION.
      *-----------------------------------------------------------------

       PROGRAM-ID. PROGRAM5.
       AUTHOR.     MICHAELLUSTFIELD.

      *-----------------------------------------------------------------
      * GENERATES A SIMPLE REPORT FROM A DATA FILE
      *-----------------------------------------------------------------

      *-----------------------------------------------------------------
       ENVIRONMENT DIVISION.
      *-----------------------------------------------------------------

      *--------------------------------
       INPUT-OUTPUT SECTION.
      *--------------------------------

       FILE-CONTROL.
           SELECT INPUT-FILE ASSIGN TO
               'C:\COBOL\Pgm5byMichaelLustfield\Pgm5Input.txt'
               ORGANIZATION IS LINE SEQUENTIAL.

           SELECT OUTPUT-FILE ASSIGN TO
               'C:\COBOL\Pgm5byMichaelLustfield\Pgm5Output.doc'
               ORGANIZATION IS LINE SEQUENTIAL.

      *-----------------------------------------------------------------
       DATA DIVISION.
      *-----------------------------------------------------------------

      *                                |--------------------------------
      *                                |       INPUT FILE
      *                                |--------------------------------

       FD  INPUT-FILE.
       01  INPUT-RECORDS.
           05  RECORD-IR               PIC 99.
           05                          PIC X.
           05  NUMBER-IR               PIC S99999999V99.
           05                          PIC X.
           05  NAME-IR                 PIC X.

      *                                |--------------------------------
      *                                |       OUTPUT FILE
      *                                |--------------------------------

       FD  OUTPUT-FILE.
       01  REPORT-RECORD               PIC X(60).

      *-----------------------------------------------------------------
       WORKING-STORAGE SECTION.
      *-----------------------------------------------------------------

      *                                |--------------------------------
      *                                |       REPORT VARIABLES
      *                                |--------------------------------

       01  DETAIL-LINE.
           05  RECORD-NUMBER-DL        PIC 9(02).
           05  NUMBERS-DL.
               10  NUMBER1-DL              PIC $$,$$$,$$9.99+.
               10  NUMBER2-DL              PIC ZZZ,ZZZ,ZZ9CR.
               10  NUMBER3-DL              PIC Z,ZZZ,ZZ9.99-.
               10  NUMBER4-DL              PIC ---,---,--9.9.
           05  WORDS1-DL                   PIC X(04).
           05  WORDS2-DL                   PIC X/X0XXXXXX.

       01  LINES-COUNTER               PIC 9(02)   VALUE 00.

       01  PAGES-COUNTER               PIC 9(02)   VALUE 01.

       01  PAGES-LINES.
           05  COMMENT-PL              PIC X(05)   VALUE 'Page '.
           05  COUNTED-PL              PIC Z9      VALUE 01.

      *                                |--------------------------------
      *                                |       REPORT TIME
      *                                |--------------------------------

       01  REPORT-DATE-TIME.
           05  YEAR-RDT                PIC X(04).
           05  MONTH-RDT               PIC X(02).
           05  DAY-RDT                 PIC X(02).
           05  HOUR-RDT                PIC X(02).
           05  MINUTE-RDT              PIC X(02).
           05  SECOND-RDT              PIC X(02).
           05  HUND-SEC-RDT            PIC X(02).
           05  GMTO-RDT                PIC X(05).

      *                                |--------------------------------
      *                                |       REPORT CONSTANTS
      *                                |--------------------------------

       01  REPORT-HEADING              PIC X(39)
           VALUE   'Program 5 Output by Michael Lustfield'.

       01  REPORT-DATE.
           05  COMMENT-RD              PIC X(07)   VALUE 'DATE: '.
           05  MONTH-RD                PIC X(02)/.
           05  DAY-RD                  PIC X(02)/.
           05  YEAR-RD                 PIC X(04).

       01  REPORT-TIME.
           05  COMMENT-RT              PIC X(07)   VALUE 'TIME: '.
           05  HOUR-RT                 PIC X(02).
           05  COLON-RT                PIC X(01)   VALUE ':'.
           05  MINUTE-RT               PIC X(02).

       01  DASH-LINE                   PIC X(60)
           VALUE   '--------------------------------------------'.

      *                                |--------------------------------
      *                                |       TEMPORARY STORAGE
      *                                |--------------------------------

       01  WORDS1.
           05                          PIC X(02).
           05  LETTERS-W1              PIC X(04).
           05                          PIC X(02).

      *                                |--------------------------------
      *                                |       FLAGS
      *                                |--------------------------------

       01  EOF-FLAG                    PIC X(05)   VALUE 'FALSE'.

      *-----------------------------------------------------------------
       PROCEDURE DIVISION.
      *-----------------------------------------------------------------

      *--------------------------------
       100-MAIN-MODULE.
      *--------------------------------

           PERFORM 800-INITIALIZATION

           PERFORM UNTIL EOF-FLAG = 'TRUE'
               READ INPUT-FILE
                   AT END
                       MOVE 'TRUE' TO EOF-FLAG
                   NOT AT END
                       PERFORM 200-PROCESS-RECORD
               END-READ
           END-PERFORM

           PERFORM 900-TERMINATION

           STOP RUN.

      *--------------------------------
       200-PROCESS-RECORD.
      *--------------------------------

           IF LINES-COUNTER < 19
               THEN
                   PERFORM 220-WRITE-RECORD
               ELSE
                   PERFORM 230-WRITE-PAGE-BREAK
                   PERFORM 220-WRITE-RECORD
           END-IF.

      *--------------------------------
       210-WRITE-HEADING.
      *--------------------------------

           MOVE PAGES-COUNTER TO COUNTED-PL

           IF PAGES-COUNTER > 1
               THEN
                   WRITE REPORT-RECORD FROM REPORT-HEADING AFTER PAGE
               ELSE
                   WRITE REPORT-RECORD FROM REPORT-HEADING AFTER 0
           END-IF

           WRITE REPORT-RECORD FROM REPORT-DATE AFTER 1
           WRITE REPORT-RECORD FROM REPORT-TIME AFTER 1
           WRITE REPORT-RECORD FROM PAGES-LINES AFTER 1
           WRITE REPORT-RECORD FROM DASH-LINE AFTER 3

           MOVE 7 TO LINES-COUNTER.

      *--------------------------------
       220-WRITE-RECORD.
      *--------------------------------


           MOVE RECORD-IR  TO RECORD-NUMBER-DL
           MOVE NUMBER-IR  TO NUMBER1-DL
           MOVE NUMBER-IR  TO NUMBER2-DL
           MOVE NUMBER-IR  TO NUMBER3-DL
           MOVE NUMBER-IR  TO NUMBER4-DL
           MOVE NAME-IR    TO WORDS1-DL
           MOVE NAME-IR    TO WORDS1
           MOVE LETTERS-W1 TO WORDS2-DL

           WRITE REPORT-RECORD FROM DETAIL-LINE AFTER 1

           ADD 1 TO LINES-COUNTER.

      *--------------------------------
       230-WRITE-PAGE-BREAK.
      *--------------------------------

           ADD 1 TO PAGES-COUNTER

           WRITE REPORT-RECORD FROM DASH-LINE AFTER 1

           PERFORM 210-WRITE-HEADING.


      *--------------------------------
       800-INITIALIZATION.
      *--------------------------------

           OPEN INPUT  INPUT-FILE
                OUTPUT OUTPUT-FILE

           MOVE FUNCTION CURRENT-DATE TO REPORT-DATE-TIME

           MOVE MONTH-RDT  TO MONTH-RD
           MOVE DAY-RDT    TO DAY-RD
           MOVE YEAR-RDT   TO YEAR-RD

           MOVE HOUR-RDT   TO HOUR-RT
           MOVE MINUTE-RDT TO MINUTE-RT

           PERFORM 210-WRITE-HEADING.

      *--------------------------------
       900-TERMINATION.
      *--------------------------------

           WRITE REPORT-RECORD FROM DASH-LINE

           CLOSE INPUT-FILE
                 OUTPUT-FILE.