Cobol program does not want to write to assigned file

99 Views Asked by At

I am currently in a COBOL course and I have an assignment that requires the program to use two assigned files. However, I am receiving an error from the compiler:

libcob: error: permanent file error (status = 30) for file SALESRPT ('C:' => C:/Users/Justin/Downloads/SALESRPT.DAT).

I am using vs code, the file path is correct, and this file "SALESRPT" is an output file created by the program. Please let me know if you have any idea why I am getting this error. Will be very responsive to answer any questions.

  *
   IDENTIFICATION DIVISION.

   PROGRAM-ID. RPT1000.
  *
   ENVIRONMENT DIVISION.
  *
   INPUT-OUTPUT SECTION.
  *
   FILE-CONTROL.
  *
       SELECT CUSTMAST ASSIGN TO 
       "C:\Users\Justin\Downloads\CUSTMAST.DAT".
       SELECT SALESRPT ASSIGN TO 
       "C:\Users\Justin\Downloads\SALESRPT.DAT".
  *
   DATA DIVISION.
  *
   FILE SECTION.
  *
   FD  CUSTMAST.
  *
   01  CUSTOMER-MASTER-RECORD.
       05  CM-BRANCH-NUMBER        PIC 9(2).
       05  CM-SALESREP-NUMBER      PIC 9(2).
       05  CM-CUSTOMER-NUMBER      PIC 9(5).
       05  CM-CUSTOMER-NAME        PIC X(20).
       05  CM-SALES-THIS-YTD       PIC S9(6)V9(2).
       05  CM-SALES-LAST-YTD       PIC S9(6)V9(2).
  *
   FD  SALESRPT.
  *
   01  PRINT-AREA      PIC X(132).
  *
   WORKING-STORAGE SECTION.
  *
   01  SWITCHES.
       05  CUSTMAST-EOF-SWITCH     PIC X    VALUE "N".
  *
   01  PRINT-FIELDS.
       05  PAGE-COUNT      PIC S9(3)   VALUE ZERO.
       05  LINES-ON-PAGE   PIC S9(3)   VALUE +55.
       05  LINE-COUNT      PIC S9(3)   VALUE +99.
       05  SPACE-CONTROL   PIC S9.
  *
   01  TOTAL-FIELDS.
       05  GRAND-TOTAL-THIS-YTD   PIC S9(7)V99   VALUE ZERO.
       05  GRAND-TOTAL-LAST-YTD   PIC S9(7)V99   VALUE ZERO.
  *
   01  CURRENT-DATE-AND-TIME.
       05  CD-YEAR         PIC 9999.
       05  CD-MONTH        PIC 99.
       05  CD-DAY          PIC 99.
       05  CD-HOURS        PIC 99.
       05  CD-MINUTES      PIC 99.
       05  FILLER          PIC X(9).
  *
   01  HEADING-LINE-1.
       05  FILLER          PIC X(7)    VALUE "DATE:  ".
       05  HL1-MONTH       PIC 9(2).
       05  FILLER          PIC X(1)    VALUE "/".
       05  HL1-DAY         PIC 9(2).
       05  FILLER          PIC X(1)    VALUE "/".
       05  HL1-YEAR        PIC 9(4).
       05  FILLER          PIC X(11)   VALUE SPACE.
       05  FILLER          PIC X(20)   VALUE "YEAR-TO-DATE SALES R".
       05  FILLER          PIC X(20)   VALUE "EPORT               ".
       05  FILLER          PIC X(8)    VALUE "  PAGE: ".
       05  Hl1-PAGE-NUMBER PIC ZZZ9.
       05  FILLER          PIC X(52)   VALUE SPACE.
  *
   01  HEADING-LINE-2.
       05  FILLER          PIC X(7)    VALUE "TIME:  ".
       05  HL2-HOURS       PIC 9(2).
       05  FILLER          PIC X(1)    VALUE ":".
       05  HL2-MINUTES     PIC 9(2).
       05  FILLER          PIC X(58)   VALUE SPACE.
       05  FILLER          PIC X(10)   VALUE "RPT1000".
       05  FILLER          PIC X(52)   VALUE SPACE.
  *
   01  HEADING-LINE-3.
       05  FILLER      PIC X(20)   VALUE "CUST                ".
       05  FILLER      PIC X(20)   VALUE "            SALES   ".
       05  FILLER      PIC X(20)   VALUE "      SALES         ".
       05  FILLER      PIC X(72)   VALUE SPACE.
  *
   01  HEADING-LINE-4.
       05  FILLER      PIC X(20)   VALUE "NUM    CUSTOMER NAME".
       05  FILLER      PIC X(20)   VALUE "           THIS YTD ".
       05  FILLER      PIC X(20)   VALUE "     LAST YTD       ".
       05  FILLER      PIC X(72)   VALUE SPACE.
  *
   01  CUSTOMER-LINE.
       05  CL-CUSTOMER-NUMBER  PIC 9(5).
       05  FILLER              PIC X(2)     VALUE SPACE.
       05  CL-CUSTOMER-NAME    PIC X(20).
       05  FILLER              PIC X(3)     VALUE SPACE.
       05  CL-SALES-THIS-YTD   PIC ZZ,ZZ9.99-.
       05  FILLER              PIC X(4)     VALUE SPACE.
       05  CL-SALES-LAST-YTD   PIC ZZ,ZZ9.99-.
       05  FILLER              PIC X(78)    VALUE SPACE.
  *
   01  GRAND-TOTAL-LINE.
       05  FILLER              PIC X(27)    VALUE SPACE.
       05  GTL-SALES-THIS-YTD  PIC Z,ZZZ,ZZ9.99-.
       05  FILLER              PIC X(1)     VALUE SPACE.
       05  GTL-SALES-LAST-YTD  PIC Z,ZZZ,ZZ9.99-.
       05  FILLER              PIC X(78)    VALUE SPACE.
  *
   PROCEDURE DIVISION.
  *
   000-PREPARE-SALES-REPORT.
  *
       OPEN INPUT  CUSTMAST
            OUTPUT SALESRPT.
       PERFORM 100-FORMAT-REPORT-HEADING.
       PERFORM 200-PREPARE-SALES-LINES
           UNTIL CUSTMAST-EOF-SWITCH = "Y".
       PERFORM 300-PRINT-GRAND-TOTALS.
       CLOSE CUSTMAST
             SALESRPT.
       STOP RUN.
  *
   100-FORMAT-REPORT-HEADING.
  *
       MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
       MOVE CD-MONTH   TO HL1-MONTH.
       MOVE CD-DAY     TO HL1-DAY.
       MOVE CD-YEAR    TO HL1-YEAR.
       MOVE CD-HOURS   TO HL2-HOURS.
       MOVE CD-MINUTES TO HL2-MINUTES.
  *
   200-PREPARE-SALES-LINES.
  *
       PERFORM 210-READ-CUSTOMER-RECORD.
       IF CUSTMAST-EOF-SWITCH = "N"
           PERFORM 220-PRINT-CUSTOMER-LINE.
  *
   210-READ-CUSTOMER-RECORD.
  *
       READ CUSTMAST
           AT END
               MOVE "Y" TO CUSTMAST-EOF-SWITCH.
  *
   220-PRINT-CUSTOMER-LINE.
  *
       IF LINE-COUNT >= LINES-ON-PAGE
           PERFORM 230-PRINT-HEADING-LINES.
       MOVE CM-CUSTOMER-NUMBER  TO CL-CUSTOMER-NUMBER.
       MOVE CM-CUSTOMER-NAME    TO CL-CUSTOMER-NAME.
       MOVE CM-SALES-THIS-YTD   TO CL-SALES-THIS-YTD.
       MOVE CM-SALES-LAST-YTD   TO CL-SALES-LAST-YTD.
       MOVE CUSTOMER-LINE TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING SPACE-CONTROL LINES.
       ADD 1 TO LINE-COUNT.
       ADD CM-SALES-THIS-YTD TO GRAND-TOTAL-THIS-YTD.
       ADD CM-SALES-LAST-YTD TO GRAND-TOTAL-LAST-YTD.
       MOVE 1 TO SPACE-CONTROL.
  *
   230-PRINT-HEADING-LINES.
  *
       ADD 1 TO PAGE-COUNT.
       MOVE PAGE-COUNT     TO HL1-PAGE-NUMBER.
       MOVE HEADING-LINE-1 TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING PAGE.
       MOVE HEADING-LINE-2 TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING 1 LINES.
       MOVE HEADING-LINE-3 TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING 2 LINES.
       MOVE HEADING-LINE-4 TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING 1 LINES.
       MOVE ZERO TO LINE-COUNT.
       MOVE 2 TO SPACE-CONTROL.
  *
   300-PRINT-GRAND-TOTALS.
  *
       MOVE GRAND-TOTAL-THIS-YTD TO GTL-SALES-THIS-YTD.
       MOVE GRAND-TOTAL-LAST-YTD TO GTL-SALES-LAST-YTD.
       MOVE GRAND-TOTAL-LINE     TO PRINT-AREA.
       WRITE PRINT-AREA AFTER ADVANCING 2 LINES.
0

There are 0 best solutions below