Suppress Leading Zeros in COBOL

20,224

In W-S

       05 FORMATTED-INTEGER          PIC Z(04)9.
       05 FORMATTED-CURRENCY         PIC Z(08)9.99.

in 700

   DISPLAY 'Total Payroll Recs : ' PAYROLL-COUNT.

becomes

   MOVE PAYROLL-COUNT TO FORMATTED-INTEGER.
   DISPLAY 'Total Payroll Recs : ' FORMATTED-INTEGER.

and follow the bouncing ball for the other display items.

MOVE TO /DISPLAY FORMATTED-CURRENCY if that's appropriate.

(and of course, identifier names are your choice). Also your choice to use a PIC of Z(02),Z(03),Z(02)9.99. if you want thousand-separator commas.

BTW - you call 700 twice - once at end-of-file, then again from the mainline. This will give you the display twice and probably an error too, sice you will be attempting to close a closed file.

Share:
20,224
user3407345
Author by

user3407345

Updated on July 09, 2022

Comments

  • user3407345
    user3407345 over 1 year

    I have tried looking this up online but I can't find anything that matches my situation. I need to suppress the leading zeros in the output but I can't get it working correctly. The number I need to suppress is the PR-PAY-RATE.

      ******************************************************************
       ID DIVISION.
          PROGRAM-ID. LAB5
          AUTHOR. asdf.
          DATE-WRITTEN. March 25, 2014.
          DATE-COMPILED. CURRENT-DATE.
      ******************************************************************
       ENVIRONMENT DIVISION.
         INPUT-OUTPUT SECTION.
         FILE-CONTROL.
           SELECT PAYROLL-FILE ASSIGN TO PAYIN
           ORGANIZATION IS SEQUENTIAL.
    
       DATA DIVISION.
         FILE SECTION.
         FD PAYROLL-FILE.
    
      **** Payroll Record Length 360 characters ************************
       01  PAYROLL-RECORD.
           05  PR-EMPLOYEE-ID         PIC  X(07).
           05  PR-LAST-NAME           PIC  X(26).
           05  PR-FIRST-NAME          PIC  X(15).
           05  PR-DIVISION            PIC  X(10).
           05  PR-GROUP               PIC  X(10).
           05  PR-DEPARTMENT          PIC  X(10).
           05  PR-TITLE               PIC  X(20).
           05  PR-ADDRESS1            PIC  X(30).
           05  PR-ADDRESS2            PIC  X(30).
           05  PR-CITY                PIC  X(30).
           05  PR-STATE               PIC  X(2).
           05  PR-PROVINCE            PIC  X(20).
           05  PR-COUNTRY             PIC  X(20).
           05  PR-ZIP-POSTAL          PIC  X(09).
           05  PR-PAY1-STATUS         PIC  X(01).
               88  PR-STAT-ACTIVE         VALUE 'A'.
               88  PR-STAT-TERMINATED     VALUE 'T'.
               88  PR-STAT-RETIRED        VALUE 'R'.
               88  PR-STAT-DISCHARGED     VALUE 'D'.
           05  PR-START-DT            PIC  9(08).
           05  PR-TERM-DT             PIC  9(08).
           05  PR-TERM-REASON         PIC  X(30).
           05  PR-PAY-RATE            PIC  9(9)V99.
           05  PR-PAY-CYCLE           PIC  X(01).
               88  PR-HOURLY              VALUE 'H'.
               88  PR-BIWEEKLY            VALUE 'B'.
               88  PR-YEARLY              VALUE 'R'.
           05  PR-LAST-INCREASE-DT    PIC  9(08).
           05  PR-LAST-EVAL-DT        PIC  9(08).
           05  PR-LAST-EVAL-RATING    PIC  X(01).
               88  PR-RATE-A              VALUE 'A'.
               88  PR-RATE-B              VALUE 'B'.
               88  PR-RATE-C              VALUE 'C'.
               88  PR-RATE-D              VALUE 'D'.
               88  PR-RATE-N              VALUE 'N'.
           05  PR-BENEFIT-FLAG        PIC  X(01).
               88  PR-BENEFIT-YES         VALUE 'Y'.
               88  PR-BENEFIT-NO          VALUE 'N'.
           05  PR-MEDICAL-FLAG        PIC  X(01).
               88  PR-MEDICAL-YES         VALUE 'Y'.
               88  PR-MEDICAL-NO          VALUE 'N'.
           05  PR-DENTAL-FLAG         PIC  X(01).
               88  PR-DENTAL-YES          VALUE 'Y'.
               88  PR-DENTAL-NO           VALUE 'N'.
           05  PR-VISION-FLAG         PIC  X(01).
               88  PR-VISION-YES          VALUE 'Y'.
               88  PR-VISION-NO           VALUE 'N'.
           05  PR-BENEFIT-COST-YR     PIC  9(9)V99.
           05                         PIC  X(30).
      **** End of Payroll Record ***************************************
    
    
        WORKING-STORAGE SECTION.
        01  WS-NAMED-MEMORY-LOCATIONS.
           05 EOF-SWITCH               PIC X        VALUE 'N'.
              88 EOF                                VALUE 'Y'.
              88 NOT-EOF                            VALUE 'N'.
    
           05 PAYROLL-COUNT            PIC 9(5).
           05 EMP-SELECTED             PIC 9(9)V99.
           05 TOTAL-PAY                PIC 9(9)V99.
           05 AVG-PAY                  PIC 9(9)V99.
    
    
      ******************************************************************
        PROCEDURE DIVISION.
    
        100-MAIN-PROGRAM.
           PERFORM 200-DISPLAY-SPLASH-PAGE.
           PERFORM 300-OPEN-FILES.
           PERFORM 400-READ-PAYROLL-FILE UNTIL EOF.
           PERFORM 700-END-PROGRAM.
           STOP RUN.
    
        200-DISPLAY-SPLASH-PAGE.
           DISPLAY '**************************************************'.
           DISPLAY '* asdf   ENTERPRISE TECHNOLOGIES LAB5            *'.
           DISPLAY '* asdf                                           *'.
           DISPLAY '* March 25, 2014                                 *'.
           DISPLAY '**************************************************'.
    
        300-OPEN-FILES.
           OPEN INPUT PAYROLL-FILE.
    
        400-READ-PAYROLL-FILE.
            READ PAYROLL-FILE
                AT END MOVE 'Y' TO EOF-SWITCH.
    
            IF EOF
                THEN PERFORM 700-END-PROGRAM.
            IF NOT-EOF
                PERFORM 500-PROCESS-PAYROLL-RECORDS
            END-IF.
    
         500-PROCESS-PAYROLL-RECORDS.
    
            ADD 1 TO PAYROLL-COUNT.
    
            IF PR-PAY1-STATUS = 'A' AND PR-PAY-CYCLE = 'B'
                THEN PERFORM 600-DISPLAY-PAYROLL-DATA.
    
    
    
    
         600-DISPLAY-PAYROLL-DATA.
           DISPLAY 'Employee ID        : ' PR-EMPLOYEE-ID.
           DISPLAY 'Employee First Name: ' PR-FIRST-NAME.
           DISPLAY 'Employee Last  Name: ' PR-LAST-NAME.
           DISPLAY 'Pay Status         : ' PR-PAY1-STATUS.
           DISPLAY 'Pay Cycle          : ' PR-Pay-Cycle.
           DISPLAY 'Pay Rate           : ' PR-Pay-Rate.
           DISPLAY '******************************************'.
            ADD 1 TO EMP-SELECTED.
            ADD PR-PAY-RATE TO TOTAL-PAY GIVING TOTAL-PAY.
            COMPUTE AVG-PAY = TOTAL-PAY / EMP-SELECTED.
    
    
         700-END-PROGRAM.
    
    
           DISPLAY 'Total Payroll Recs : ' PAYROLL-COUNT.
           DISPLAY 'Employees Selected : ' EMP-SELECTED.
           DISPLAY 'Total Pay          : ' TOTAL-PAY.
           DISPLAY 'Average Pay        : ' AVG-PAY.
           DISPLAY '******************************************'.
           DISPLAY '* End of LAB5                            *'.
           DISPLAY '******************************************'.
           CLOSE PAYROLL-FILE.
           STOP RUN.