gnucobol-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[open-cobol-list] gcc compile error with CBL_OPEN_FILE


From: schlehuberc
Subject: [open-cobol-list] gcc compile error with CBL_OPEN_FILE
Date: Wed, 20 Jun 2007 08:57:07 -0500


From the generated C code.

  /* SAMPFLE.cbl:126: CALL */
  cob_current_program_id = "SAMPFLE";
  cob_source_file = "SAMPFLE.cbl";
  cob_source_line = 126;
  cob_current_section = NULL;
  cob_current_paragraph = "1100-OPEN-INPUT-FILE";
  cob_source_statement = "CALL";
  {
    {
      module.cob_procedure_parameters[0] = &f_9;
      module.cob_procedure_parameters[1] = &f_14;
      module.cob_procedure_parameters[2] = &f_15;
      module.cob_procedure_parameters[3] = &f_17;
      module.cob_procedure_parameters[4] = &f_10;
      cob_call_params = 5;
      (*(int *) (b_1)) = CBL_OPEN_FILE (b_9, b_14, b_15, b_17, b_10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
    }


  /* SAMPFLE.cbl:143: CALL */
  cob_current_program_id = "SAMPFLE";
  cob_source_file = "SAMPFLE.cbl";
  cob_source_line = 143;
  cob_current_section = NULL;
  cob_current_paragraph = "1100-OPEN-INPUT-FILE";
  cob_source_statement = "CALL";
  {
    {
      module.cob_procedure_parameters[0] = &f_10;
      module.cob_procedure_parameters[1] = &f_11;
      module.cob_procedure_parameters[2] = &f_12;
      module.cob_procedure_parameters[3] = &f_13;
      module.cob_procedure_parameters[4] = &f_18;
      cob_call_params = 5;
      (*(int *) (b_1)) = CBL_READ_FILE (b_10, b_11, b_12, b_13, b_18, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
    }
  }


  /* SAMPFLE.cbl:230: CALL */
  cob_current_program_id = "SAMPFLE";
  cob_source_file = "SAMPFLE.cbl";
  cob_source_line = 230;
  cob_current_section = NULL;
  cob_current_paragraph = "7010-READ-NEXT-BLOCK";
  cob_source_statement = "CALL";
  {
    {
      module.cob_procedure_parameters[0] = &f_10;
      module.cob_procedure_parameters[1] = &f_11;
      module.cob_procedure_parameters[2] = &f_12;
      module.cob_procedure_parameters[3] = &f_13;
      module.cob_procedure_parameters[4] = &f_18;
      cob_call_params = 5;
      (*(int *) (b_1)) = CBL_READ_FILE (b_10, b_11, b_12, b_13, b_18, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
    }
  }


  /* 8000-CLOSE-INPUT-FILE: */
  l_17:;
  /* SAMPFLE.cbl:265: CALL */
  cob_current_program_id = "SAMPFLE";
  cob_source_file = "SAMPFLE.cbl";
  cob_source_line = 265;
  cob_current_section = NULL;
  cob_current_paragraph = "8000-CLOSE-INPUT-FILE";
  cob_source_statement = "CALL";
  {
    {
      module.cob_procedure_parameters[0] = &f_10;
      cob_call_params = 1;
      (*(int *) (b_1)) = CBL_CLOSE_FILE (b_10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
    }
  }


From the SAMPFLE.err file

SAMPFLE.c:380: error: too many arguments to function `CBL_OPEN_FILE'
SAMPFLE.c:480: error: too many arguments to function `CBL_READ_FILE'
SAMPFLE.c:872: error: too many arguments to function `CBL_READ_FILE'
SAMPFLE.c:1033: error: too many arguments to function `CBL_CLOSE_FILE'


SAMPFLE.cbl

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPFLE.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.

           SELECT WSOUT-FILE               ASSIGN TO WSOUT.

       DATA DIVISION.
       FILE SECTION.

       FD  WSOUT-FILE
           RECORD IS VARYING DEPENDING ON WSOUT-MSG-LNGTH
           BLOCK CONTAINS 0 RECORDS
           RECORDING MODE IS S.

       01  WSOUT-MESSAGE.
           05  FILLER                       PIC X(01)
                                   OCCURS 23 TO 32756 TIMES
                                   DEPENDING ON WSOUT-MSG-LNGTH.
      *
      ******************************************************************
      ****       W O R K I N G   S T O R A G E   S E C T I O N      ****
      ******************************************************************
       WORKING-STORAGE SECTION.
       01  WS-BLOCK-LEN            PIC S9(15) COMP VALUE 0.

       01  FILE-NAME               PIC X(150).
       01  FILE-HANDLE             PIC X(4).
       01  FILE-OFFSET             PIC X(8) COMP-X.
       01  BYTE-COUNT              PIC X(4) COMP-X.
       01  FLAGS                   PIC X COMP-X.
       01  ACCESS-MODE-1           PIC X COMP-X VALUE 1.
       01  DENY-MODE-0             PIC X COMP-X VALUE 0.
       01  DENY-MODE-3             PIC X COMP-X VALUE 3.
       01  DEVICE-0                PIC X COMP-X VALUE 0.
       01  INP-BUFFER              PIC X(32756).
       01  WS-LAST-BYTE            PIC S9(8)  COMP VALUE 0.
       01  WS-BYTES-READ           PIC S9(15) COMP VALUE 0.
       01  WS-FILE-LEN             PIC S9(15) COMP VALUE 0.
       01  WS-REC-LEN-X.
           05  WS-REC-LEN          PIC 9(9)   COMP VALUE 0.

       01  FILE-STAT               PIC XX COMP-X.
       01     REDEFINES FILE-STAT.
           05  FS-BYTE-1           PIC X.
           05  FS-BYTE-2           PIC X    COMP-X.

       01  WS-EOF-SW               PIC X    VALUE 'N'.
           88  END-OF-FILE                  VALUE 'Y'.

       01  WSOUT-WORK-AREA.
           05  WSOUT-MSG-LNGTH      PIC  9(9) COMP VALUE 0.
           05  WSOUT-MSG-MAX        PIC  9(9) COMP VALUE 32756.
           05  WS-IN-RECORD-COUNT   PIC  9(9) COMP VALUE 0.
           05  CNT-TOTAL-WSIN       PIC 9(9) COMP-3 VALUE 0.
           05  CNT-TOTAL-WSOUT      PIC 9(9) COMP-3 VALUE 0.

      ******************************************************************
      ****         P R O C E D U R E    D I V I S I O N             ****
      ******************************************************************
       PROCEDURE DIVISION.
      ******************************************************************
      *(A) INITIALIZE
      *(B) PROCESS EACH RECORD ON THE INPUT FILE
      *(C) CLEAN-UP
      *(D) SET RETURN-CODE AND END PROGRAM
      ******************************************************************
       0000-MAIN-PARAGRAPH.
      *(A)
           PERFORM 1000-INIT
              THRU 1000-EXIT.

      *(B)
           PERFORM 2000-PROCESS-FILE
              THRU 2000-EXIT
              UNTIL END-OF-FILE.
             
      *(C)
           PERFORM 9000-FINISH-UP
              THRU 9000-EXIT.
     
      *(D)
           MOVE 0                          TO RETURN-CODE.

       0000-EXIT.
           STOP RUN.

      ******************************************************************
      *(B) OPEN INPUT AND OUTPUT FILES                                 *
      *(C) PERFORM INTIAL READ OF INPUT FILE                           *
      ******************************************************************
       1000-INIT.

      *(B)
           PERFORM 1100-OPEN-INPUT-FILE
              THRU 1100-EXIT.

           OPEN OUTPUT WSOUT-FILE.
      *(C)
           PERFORM 7000-READ-WSIN
              THRU 7000-EXIT.

       1000-EXIT.
           EXIT.

      ******************************************************************
      *(A) GET FILE NAME FROM ENVIRONMENT VARIABLE FOR THE DD          *
      *(B) CALL SYSTEM FUNCTION TO OPEN THE FILE AND CHECK RC          *
      *(C) MAKE INITIAL READ TO GET TOTAL BYTES OF THE FILE            *
      *    NO RECORDS ARE READ IN AT THIS POINT                        *
      *(D) SAVE FILE SIZE                                              *
      ******************************************************************
       1100-OPEN-INPUT-FILE.

      *(A)
           DISPLAY "DD_WSIN"    UPON ENVIRONMENT-NAME.
           ACCEPT FILE-NAME      FROM ENVIRONMENT-VALUE.

           DISPLAY 'INPUT FILE: ' FILE-NAME.
           
      *(B)
           CALL "CBL_OPEN_FILE"   USING    FILE-NAME,
                                           ACCESS-MODE-1,
                                           DENY-MODE-0,
                                           DEVICE-0,
                                           FILE-HANDLE.
           IF RETURN-CODE NOT EQUAL 0
               MOVE RETURN-CODE TO FILE-STAT
               DISPLAY 'FILE OPEN FAILED.  RETURN-CODE: '
                       FS-BYTE-1 ' '
                       FS-BYTE-2
               MOVE 16 TO RETURN-CODE
               STOP RUN.

      *(C)
           MOVE ZERO TO FILE-OFFSET.
           MOVE ZERO TO BYTE-COUNT.
           MOVE 128  TO FLAGS.
           CALL "CBL_READ_FILE"  USING    FILE-HANDLE,
                                          FILE-OFFSET,
                                          BYTE-COUNT,
                                          FLAGS,
                                          INP-BUFFER.
           IF RETURN-CODE NOT EQUAL 0
               MOVE RETURN-CODE TO FILE-STAT
               DISPLAY 'FILE READ FOR LENGTH FAILED.  RETURN-CODE: '
                       FS-BYTE-1 ' '
                       FS-BYTE-2
               MOVE 20 TO RETURN-CODE
               STOP RUN.

      *(D)
           MOVE FILE-OFFSET TO WS-FILE-LEN.

       1100-EXIT.
           EXIT.

      ******************************************************************
      *(A) MOVE LENGTH AND DATA TO OUTPUT FILE FIELDS                  *
      *(B) WRITE OUT RECORD TO OUTPUT FILE                             *
      *(C) READ NEXT RECORD ON THE INPUT FILE                          *
      ******************************************************************
       2000-PROCESS-FILE.
      *(A)
           MOVE WS-REC-LEN                  TO WSOUT-MSG-LNGTH.
           MOVE INP-BUFFER(1:WSOUT-MSG-LNGTH) TO
                WSOUT-MESSAGE(1:WSOUT-MSG-LNGTH).

      *(B)
           PERFORM 7100-WRITE-WSOUT
              THRU 7100-EXIT.
      *(C)
           PERFORM 7000-READ-WSIN
              THRU 7000-EXIT.

       2000-EXIT.
           EXIT.

      ******************************************************************
      *(A) GET 4 BYTES OF DATA FROM THE FILE - RDW OF THE RECORD       *
      *(B) USING THE RDW LENGTH GET THE NEXT N BYTES OF DATA           *
      *    BASED ON THE RDW THIS IS ALL OF THE BYTES FOR THE RECORD    *
      *    INCREMENT THE RECORD IN COUNT                               *
      ******************************************************************
       7000-READ-WSIN.
      *(A)
           MOVE 4                           TO WS-BLOCK-LEN.
           PERFORM 7010-READ-NEXT-BLOCK
              THRU 7010-EXIT.
      *(B)
           IF NOT END-OF-FILE
               MOVE INP-BUFFER(1:4)         TO WS-REC-LEN-X
               MOVE WS-REC-LEN              TO WS-BLOCK-LEN
               PERFORM 7010-READ-NEXT-BLOCK
                  THRU 7010-EXIT
               ADD +1                       TO CNT-TOTAL-WSIN
           END-IF.
           
       7000-EXIT.
           EXIT.

      ******************************************************************
      *(A) CHECK THE NUMBER OF BTYES READ VS. THE TOTAL BYTES OF FILE  *
      *    SET THE BYTE COUNT TO NOT READ PAST THE EOF                 *
      *(B) READ THE NEXT N BYTES FROM THE FILE (WS-BLOCK-LEN)          *
      *    BASED ON THE RDW THIS IS ALL OF THE BYTES FOR THE RECORD    *
      *(C) ADJUST BYTE COUNTERS BASED ON THE READ                      *
      ******************************************************************
       7010-READ-NEXT-BLOCK.
      *(A)
           IF WS-BYTES-READ NOT < WS-FILE-LEN
               MOVE 'Y' TO WS-EOF-SW
               GO TO 7010-EXIT
           ELSE
               IF WS-FILE-LEN - WS-BYTES-READ < WS-BLOCK-LEN
                   COMPUTE BYTE-COUNT = WS-FILE-LEN - WS-BYTES-READ
               ELSE
                   MOVE WS-BLOCK-LEN TO BYTE-COUNT
               END-IF
           END-IF.

      *(B)
           MOVE ZERO TO FLAGS.
           MOVE WS-BYTES-READ TO FILE-OFFSET.

           CALL "CBL_READ_FILE"  USING    FILE-HANDLE,
                                          FILE-OFFSET,
                                          BYTE-COUNT,
                                          FLAGS,
                                          INP-BUFFER.
           IF RETURN-CODE NOT EQUAL 0
               MOVE RETURN-CODE TO FILE-STAT
               DISPLAY "FILE READ FAILED.  RETURN-CODE: ",
                       FS-BYTE-1,
                       FS-BYTE-2
               MOVE 20 TO RETURN-CODE
               STOP RUN.
      *(C)
           ADD BYTE-COUNT TO WS-BYTES-READ.
           MOVE BYTE-COUNT TO WS-LAST-BYTE.

       7010-EXIT.
           EXIT.

      ******************************************************************
      *(A) WRITE THE OUTPUT RECOND AND INCREMENT RECORD OUT COUNT      *
      ******************************************************************
       7100-WRITE-WSOUT.
      *(A)
           WRITE WSOUT-MESSAGE.
           ADD +1                           TO CNT-TOTAL-WSOUT.

       7100-EXIT.
           EXIT.

      ******************************************************************
      *(A) CLOSE THE INPUT FILE                                        *
      ******************************************************************
       8000-CLOSE-INPUT-FILE.
      *(A)
           CALL "CBL_CLOSE_FILE" USING FILE-HANDLE.
           IF RETURN-CODE NOT EQUAL 0
               MOVE RETURN-CODE TO FILE-STAT
               DISPLAY 'FILE CLOSE FAILED.  RETURN-CODE: '
                       FS-BYTE-1 ' '
                       FS-BYTE-2
               MOVE 28 TO RETURN-CODE
               STOP RUN.
       8000-EXIT.
           EXIT.
 
       9000-FINISH-UP.

      * (A)
           PERFORM 8000-CLOSE-INPUT-FILE
              THRU 8000-EXIT.

           CLOSE WSOUT-FILE.
           
      * (B)
           DISPLAY ' '.
           DISPLAY 'TOTAL RECORDS IN : ' CNT-TOTAL-WSIN.
           DISPLAY 'TOTAL BYTES IN   : ' WS-BYTES-READ.
           DISPLAY ' '.
           DISPLAY 'TOTAL RECORDS OUT: ' CNT-TOTAL-WSOUT.
           DISPLAY ' '.


       9000-EXIT.
           EXIT.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]