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).
******************************************************************
*(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.