Search code examples
printingcobol

COBOL Title/Spacing Issues


This is an assignment for my CS 370 class. I am having some issues getting my HEADING 3 & HEADING 4 to line up properly. I'm sure it is something small and stupid that I am not seeing. I am a complete beginner in the language and this is our first assignment so I am walking into this blind. I have attached the image of what the output looks like and what it is supposed to look like.

Current Output

Correct Output

Here is my code.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROGRAM1.
       AUTHOR. KJONES.
      ****************************************************************
      * Program1 produces a TRUCK INVENTORY REPORT listing the current
      * inventory for all three trucks. Listing the truck ID, employee
      * ID, item ID, quantity in stock, purchase price, and selling
      * price.
      * ******
      * INPUT:
      *     The PIZZA FILE contains the following data in
      *     each record:
      *           1. TRUCK ID
      *           2. EMPLOYEE ID
      *           3. DRIVERS FIRST NAME & LAST NAME
      *           4. NUMBER IN STOCK
      *           5. PURCHASE PRICE
      *           6. SELL PRICE
      * ******
      * OUTPUT:
      ****************************************************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. PC.
       OBJECT-COMPUTER. PC.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT PIZZA-FILE
                ASSIGN TO "PIZZA.TXT"
                ORGANIZATION IS LINE SEQUENTIAL.
           SELECT INVENTORY-FILE
                ASSIGN TO PRINTER "TRUCK-INVENTORY".

       DATA DIVISION.
       FILE SECTION.

       FD  PIZZA-FILE
           RECORD CONTAINS 80 CHARACTERS.

       01 ROLLING-PIZZA-RECORD.
           05  TRUCK-ID-IN           PIC X(5).
           05  EMPLOYEE-ID-IN        PIC X(4).
           05  EMPLOYEE-NAME-IN      PIC X(20).
           05  ITEM-ID-IN            PIC AA.
           05  NUM-IN-STOCK-IN       PIC 9(3).
           05  PURCH-PRICE-IN        PIC 9(3).
           05  SELL-PRICE-IN         PIC 9(3).
           05  FILLER                PIC X(40).

       FD  INVENTORY-FILE
           RECORD CONTAINS 80 CHARACTERS.

       01  REPORT-RECORD             PIC X(80).

       WORKING-STORAGE SECTION.
       01  FLAGS-N-SWITCHES.
           05  EOF-FLAG              PIC X     VALUE ' '.
               88  NO-MORE-DATA                VALUE 'N'.

       01  REPORT-FIELDS.
           05  PROPER-SPACING          PIC S9        VALUE +3.

       01  WS-WORK-AREAS.
           05  ARE-THERE-MORE-RECORDS    PIC X(3) VALUE 'YES'.

      *********************  OUTPUT AREA  ****************************

       01  HEADING-ONE.
           05                        PIC X(2)  VALUE SPACES.
           05  H1-DATE               PIC 9999/99/99.
           05                        PIC X(23) VALUE SPACES.
           05                        PIC X(32) VALUE 'ROLLING PIZZA'.
           05                        PIC X(12) VALUE 'KJJ'.

       01  HEADING-TWO.
           05                        PIC X(33) VALUE SPACES.
           05                        PIC X(46) VALUE
                                            'INVENTORY REPORT'.

       01  HEADING-THREE.
           05                        PIC X(5)  VALUE SPACES.
           05                        PIC X(10) VALUE 'TRUCK'.
           05                        PIC X(13) VALUE 'EMPLOYEE'.
           05                        PIC X(9)  VALUE 'ITEM'.
           05                        PIC X(11) VALUE 'NUM IN'.
           05                        PIC X(13) VALUE 'PURCHASE'.
           05                        PIC X(18) VALUE 'SELLING'.

       01  HEADING-FOUR.
           05                        PIC X(6)  VALUE SPACES.
           05                        PIC X(12) VALUE 'ID'.
           05                        PIC X(11) VALUE 'ID'.
           05                        PIC X(8)  VALUE 'ID'.
           05                        PIC X(12) VALUE 'STOCK'.
           05                        PIC X(13) VALUE 'PRICE'.
           05                        PIC X(17) VALUE 'PRICE'.

       01  DETAIL-LINE.
           05                        PIC X(5)  VALUE SPACES.
           05 DL-TRK-ID              PIC X(12).
           05 DL-EMP-ID              PIC X(12).
           05 DL-ITM-ID              PIC AA.
           05 FILLER                 PIC X(7) VALUE SPACES.
           05 DL-IN-STK              PIC 999.
           05 FILLER                 PIC X(9) VALUE SPACES.
           05 DL-PURCH-PRCE          PIC 999.
           05 FILLER                 PIC X(10) VALUE SPACES.
           05 DL-SELL-PRCE           PIC 999.

       PROCEDURE DIVISION.

       100-MAIN-MODULE.

           PERFORM 125-HOUSEKEEPING-ROUTINE
           PERFORM 175-READ-RECORDS
           PERFORM 200-PROCESS-RTN
           PERFORM 325-CLOSE-PROGRAM
           .

       125-HOUSEKEEPING-ROUTINE.

           OPEN INPUT PIZZA-FILE
               OUTPUT INVENTORY-FILE
           ACCEPT H1-DATE FROM DATE YYYYMMDD
           PERFORM 150-HEADER-ROUTINE
           .

       150-HEADER-ROUTINE.

           WRITE REPORT-RECORD FROM HEADING-ONE
                AFTER ADVANCING PAGE
           MOVE 2 TO PROPER-SPACING
           MOVE HEADING-TWO TO REPORT-RECORD
           PERFORM 300-WRITE-A-LINE
           WRITE REPORT-RECORD FROM HEADING-THREE
           WRITE REPORT-RECORD FROM HEADING-FOUR
           MOVE 3 TO PROPER-SPACING
           .

       175-READ-RECORDS.

           PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO'
                 READ PIZZA-FILE
                    AT END
                        MOVE 'NO' TO ARE-THERE-MORE-RECORDS
                    NOT AT END
                        PERFORM 200-PROCESS-RTN
                 END-READ
           END-PERFORM
           .

       200-PROCESS-RTN.

           MOVE TRUCK-ID-IN TO DL-TRK-ID
           MOVE EMPLOYEE-ID-IN TO DL-EMP-ID
           MOVE ITEM-ID-IN TO DL-ITM-ID
           MOVE NUM-IN-STOCK-IN TO DL-IN-STK
           MOVE PURCH-PRICE-IN TO DL-PURCH-PRCE
           MOVE SELL-PRICE-IN TO DL-SELL-PRCE

           MOVE DETAIL-LINE TO REPORT-RECORD

           WRITE REPORT-RECORD AFTER
             ADVANCING 1 LINE
           .



       300-WRITE-A-LINE.

           WRITE REPORT-RECORD
               AFTER ADVANCING PROPER-SPACING
           .

       325-CLOSE-PROGRAM.

           CLOSE PIZZA-FILE
           CLOSE INVENTORY-FILE

           STOP RUN
           .

Solution

  • Changing 150-HEADER-ROUTINE to:

           150-HEADER-ROUTINE.
    
               WRITE REPORT-RECORD FROM HEADING-ONE
                    AFTER ADVANCING PAGE
               WRITE REPORT-RECORD FROM HEADING-TWO
                    AFTER ADVANCING 2 LINES
               WRITE REPORT-RECORD FROM HEADING-THREE
                    AFTER ADVANCING 3 LINES
               WRITE REPORT-RECORD FROM HEADING-FOUR
                    AFTER ADVANCING 1 LINE
               WRITE REPORT-RECORD FROM SPACE
                    AFTER ADVANCING 1 LINE
               .
    

    Will give the following order of lines for output.

    HEADING-ONE
    blank
    HEADING-TWO
    blank
    blank
    HEADING-THREE
    HEADING-FOUR
    blank
    DETAIL
    DETAIL
    . . .
    

    Note that 300-WRITE-A-LINE was only used once, is not needed and the paragraph may be removed; along with:

           01  REPORT-FIELDS.
               05  PROPER-SPACING          PIC S9        VALUE +3.