https://gcc.gnu.org/g:116cd7bce6b5f6cd43324a48f7a12a20198f1c13
commit r17-4425-g116cd7bce6b5f6cd43324a48f7a12a20198f1c13 Author: Xavier Del Campo Romero <[email protected]> Date: Thu Sep 17 22:43:26 2026 +0200 cobol: Make consistent use of RETURN-CODE and return variables The documentation for the CBL_* family of functions makes inconsistent use of RETURN-CODE and return variables, to the point where functions such as CBL_DELETE_FILE are documented to rely on a return variable [1], but their own examples rely on RETURN-CODE instead. [2] Whereas our implementation used to define a RETURNING clause for all functions in the family, test code used to rely on the RETURN-CODE register instead. Therefore, this commit attempts to play safe by strictly following the official documentation, and documents whether RETURN-CODE or a return variable should be used for each case. [1]: https://docs.rocketsoftware.com/bundle/visualcobolvs2022_ug_110/page/nuc1742953321767_1.html [2]: https://docs.rocketsoftware.com/bundle/visualcoboleclux_ug_110/page/mzy1742953323607.html# libgcobol/ChangeLog: * compat/gnu/cpy/cblproto.cpy: Use RETURN-CODE. * compat/gnu/lib/CBL_CLOSE_FILE.cbl: Likewise. * compat/gnu/lib/CBL_CREATE_FILE.cbl: Likewise. * compat/gnu/lib/CBL_OPEN_FILE.cbl: Likewise. * compat/gnu/lib/CBL_READ_FILE.cbl: Likewise. * compat/gnu/lib/CBL_WRITE_FILE.cbl: Likewise. * compat/gnu/lib/cbl_close_file.3: Document use of RETURN-CODE. * compat/gnu/lib/cbl_create_file.3: Likewise. * compat/gnu/lib/cbl_open_file.3: Likewise. * compat/gnu/lib/cbl_read_file.3: Likewise. * compat/gnu/lib/cbl_write_file.3: Likewise. Diff: --- libgcobol/compat/gnu/cpy/cblproto.cpy | 20 +++++--------------- libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl | 8 +++----- libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl | 12 +++++------- libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl | 16 ++++++++-------- libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl | 10 ++++------ libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl | 16 +++++++--------- libgcobol/compat/gnu/lib/cbl_close_file.3 | 8 ++++---- libgcobol/compat/gnu/lib/cbl_create_file.3 | 8 ++++---- libgcobol/compat/gnu/lib/cbl_open_file.3 | 8 ++++---- libgcobol/compat/gnu/lib/cbl_read_file.3 | 10 ++++------ libgcobol/compat/gnu/lib/cbl_write_file.3 | 10 ++++------ 11 files changed, 52 insertions(+), 74 deletions(-) diff --git a/libgcobol/compat/gnu/cpy/cblproto.cpy b/libgcobol/compat/gnu/cpy/cblproto.cpy index 4268b2341306..42435ab00d13 100644 --- a/libgcobol/compat/gnu/cpy/cblproto.cpy +++ b/libgcobol/compat/gnu/cpy/cblproto.cpy @@ -33,13 +33,11 @@ 01 deny-mode pic x comp-x. 01 device pic x comp-x. 01 file-handle pic x(4) comp-5. - 77 status-code pic x(2) comp-5. procedure division using filename access-mode deny-mode device - file-handle - returning status-code. + file-handle. end program CBL_CREATE_FILE. identification division. @@ -61,13 +59,11 @@ 01 deny-mode pic x comp-x. 01 device pic x comp-x. 01 file-handle pic x(4) comp-5. - 77 retcode pic x(2) comp-5. procedure division using filename access-mode deny-mode device - file-handle - returning retcode. + file-handle. end program CBL_OPEN_FILE. identification division. @@ -79,13 +75,11 @@ 01 byte-count pic x(4) comp-x. 01 flags pic x comp-x. 01 buffer pic x any length. - 77 retcode pic x(2) comp-5. procedure division using file-handle file-offset byte-count flags - buffer - returning retcode. + buffer. end program CBL_READ_FILE. identification division. @@ -97,13 +91,11 @@ 01 byte-count pic x(4) comp-x. 01 flags pic x comp-x. 01 buffer pic x any length. - 77 retcode pic x(2) comp-5. procedure division using file-handle file-offset byte-count flags - buffer - returning retcode. + buffer. end program CBL_WRITE_FILE. identification division. @@ -111,9 +103,7 @@ data division. linkage section. 01 file-handle pic x(4) comp-5. - 77 retcode pic x(2) comp-5. - procedure division using file-handle - returning retcode. + procedure division using file-handle. end program CBL_CLOSE_FILE. identification division. diff --git a/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl b/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl index e5e3410378f2..8379d356f54f 100644 --- a/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl +++ b/libgcobol/compat/gnu/lib/CBL_CLOSE_FILE.cbl @@ -47,20 +47,18 @@ 77 errno-val Binary-Long. LINKAGE SECTION. - 77 RETCODE PIC X(2) COMP-5. 01 file-handle PIC X(4) COMP-5. PROCEDURE DIVISION USING - By Reference file-handle - RETURNING RETCODE. + By Reference file-handle. MOVE FUNCTION posix-close(file-handle) TO FUNC-RETURN-VALUE. IF FUNC-RETURN-VALUE < 0 - Move Function COBRT-FILE-STATUS() to RETCODE + Move Function COBRT-FILE-STATUS() to RETURN-CODE ELSE - MOVE 0 TO RETCODE + MOVE 0 TO RETURN-CODE END-IF. D Display 'CBL_CLOSE_FILE fd: ' file-handle ', rc: ' RETCODE. diff --git a/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl b/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl index 911bde060fa4..80fbef21a1ab 100644 --- a/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl +++ b/libgcobol/compat/gnu/lib/CBL_CREATE_FILE.cbl @@ -51,7 +51,6 @@ 01 ws-access-mode PIC 9(8) COMP-5. LINKAGE SECTION. - 77 RETCODE PIC X(2) COMP-5. 01 filename PIC X ANY LENGTH. 01 access-mode PIC x COMP-x. 01 deny-mode PIC x comp-x. *> Not supported (must be 0). @@ -62,8 +61,7 @@ By Reference access-mode, By Reference deny-mode, By Reference device, - By Reference file-handle - RETURNING RETCODE. + By Reference file-handle. MOVE access-mode TO ws-access-mode. @@ -86,7 +84,7 @@ Move O_RDWR to ws-access-mode WHEN OTHER Display 'CBL_CREATE_FILE invalid mode: ' ws-access-mode - Move -1 to RETCODE + Move -1 to RETURN-CODE GOBACK END-EVALUATE. @@ -99,11 +97,11 @@ If func-ret is < 0 Then - Move Function COBRT-FILE-STATUS() to RETCODE - D Display 'COBRT-FILE-STATUS returned: ' RETCODE + Move Function COBRT-FILE-STATUS() to RETURN-CODE + D Display 'COBRT-FILE-STATUS returned: ' RETURN-CODE else Move func-ret to file-handle - Move 0 to RETCODE + Move 0 to RETURN-CODE end-if. END PROGRAM CBL_CREATE_FILE. diff --git a/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl b/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl index 0cc616453ae1..e2c5245acbfd 100644 --- a/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl +++ b/libgcobol/compat/gnu/lib/CBL_OPEN_FILE.cbl @@ -49,8 +49,8 @@ 77 errno-val Binary-Long. 01 ws-access-mode PIC 9(8) comp-5. LINKAGE SECTION. - 01 RETCODE PIC X(2) COMP-5 VALUE 0. - 01 REDEFINES RETCODE. + 01 FILE-STATUS PIC X(2) COMP-5 VALUE 0. + 01 REDEFINES FILE-STATUS. 03 MSB PIC X. 03 LSB BINARY-CHAR. 01 filename PIC X ANY LENGTH. @@ -63,8 +63,7 @@ By Reference access-mode, By Reference deny-mode, By Reference device, - By Reference file-handle - RETURNING RETCODE. + By Reference file-handle. MOVE access-mode TO ws-access-mode. @@ -85,19 +84,20 @@ MOVE "9" TO MSB *> COBRT022 Illegal or impossible access mode for OPEN MOVE 22 TO LSB + MOVE FILE-STATUS TO RETURN-CODE GOBACK END-EVALUATE. MOVE FUNCTION posix-open(filename, ws-access-mode, deny-mode) TO errno-val. - D Display 'CBL_OPEN_FILE: RETCODE: ' RETCODE. + D Display 'CBL_OPEN_FILE: RETURN-CODE: ' RETURN-CODE. If errno-val is < 0 then - Move Function COBRT-FILE-STATUS() to RETCODE - D Display 'COBRT-FILE-STATUS returned: ' RETCODE + Move Function COBRT-FILE-STATUS() to RETURN-CODE + D Display 'COBRT-FILE-STATUS returned: ' RETURN-CODE else Move errno-val to file-handle - Move 0 to RETCODE + Move 0 to RETURN-CODE end-if. END PROGRAM CBL_OPEN_FILE. diff --git a/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl b/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl index 7593a596d178..b3f5309160d9 100644 --- a/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl +++ b/libgcobol/compat/gnu/lib/CBL_READ_FILE.cbl @@ -55,7 +55,6 @@ COPY statbuf. LINKAGE SECTION. - 01 RETCODE PIC X(2) COMP-5 VALUE 0. 01 file-handle PIC X(4) COMP-5. 01 file-offset PIC X(8) COMP-5. 01 byte-count pic x(4) comp-x. @@ -67,8 +66,7 @@ By Reference file-offset, By Reference byte-count, By Reference flags, - By Reference buffer - RETURNING RETCODE. + By Reference buffer. MAIN SECTION. IF flags = 0 @@ -95,7 +93,7 @@ IF FUNC-RETURN-VALUE = 0 THEN MOVE st_size OF statbuf TO file-offset - MOVE 0 TO RETCODE + MOVE 0 TO RETURN-CODE ELSE PERFORM RETURN-ERROR GOBACK @@ -125,11 +123,11 @@ END-IF END-PERFORM. - MOVE 0 TO RETCODE. + MOVE 0 TO RETURN-CODE. EXIT. RETURN-ERROR SECTION. - Move Function COBRT-FILE-STATUS() to RETCODE. + Move Function COBRT-FILE-STATUS() to RETURN-CODE. EXIT PARAGRAPH. END PROGRAM CBL_READ_FILE. diff --git a/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl b/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl index 0d2557d84e66..c875b1e8ca11 100644 --- a/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl +++ b/libgcobol/compat/gnu/lib/CBL_WRITE_FILE.cbl @@ -55,7 +55,6 @@ 77 bytes-written Binary-Long. LINKAGE SECTION. - 77 RETCODE Binary-Long value 0. 01 file-handle PIC X(4) COMP-5. 01 file-offset PIC X(8) COMP-x. 01 byte-count pic x(4) comp-x. @@ -67,8 +66,7 @@ By Reference file-offset, By Reference byte-count, By Reference flags, - By Reference buffer - RETURNING RETCODE. + By Reference buffer. MAIN SECTION. *> special processing to truncate or extend the file If byte-count = 0 @@ -130,22 +128,22 @@ PERFORM UNTIL bytes-written >= byte-count MOVE FUNCTION posix-write(file-handle, buffer (bytes-written + 1 : remaining-bytes), - remaining-bytes) TO RETCODE + remaining-bytes) TO RETURN-CODE - IF RETCODE < 0 + IF RETURN-CODE < 0 PERFORM RETURN-ERROR GOBACK ELSE - SUBTRACT RETCODE FROM remaining-bytes - ADD RETCODE TO bytes-written + SUBTRACT RETURN-CODE FROM remaining-bytes + ADD RETURN-CODE TO bytes-written END-IF END-PERFORM. - MOVE 0 TO RETCODE. + MOVE 0 TO RETURN-CODE. EXIT PARAGRAPH. RETURN-ERROR SECTION. - Move Function COBRT-FILE-STATUS() to RETCODE. + Move Function COBRT-FILE-STATUS() to RETURN-CODE. EXIT PARAGRAPH. >> POP SOURCE FORMAT diff --git a/libgcobol/compat/gnu/lib/cbl_close_file.3 b/libgcobol/compat/gnu/lib/cbl_close_file.3 index d83c5ac7f24a..0fa5f9f9284d 100644 --- a/libgcobol/compat/gnu/lib/cbl_close_file.3 +++ b/libgcobol/compat/gnu/lib/cbl_close_file.3 @@ -27,10 +27,10 @@ or .El . .Sh RETURN STATUS -.Nm -returns -.Sy "PIC X(2) COMP-5" . -The return status is 0 on success, else nonzero. +The return status is 0 on success, else nonzero, +and can be checked by reading the +.Sy RETURN-CODE +register. .Sh SEE ALSO .Xr CBL_CHECK_FILE_EXIST .\" CBL_CLOSE_FILE diff --git a/libgcobol/compat/gnu/lib/cbl_create_file.3 b/libgcobol/compat/gnu/lib/cbl_create_file.3 index 7dc6a6004697..d7e5d2c74469 100644 --- a/libgcobol/compat/gnu/lib/cbl_create_file.3 +++ b/libgcobol/compat/gnu/lib/cbl_create_file.3 @@ -50,10 +50,10 @@ be used for other byte-stream operations. .El . .Sh RETURN STATUS -.Nm -returns -.Sy "PIC X(2) COMP-5" . -The return status is 0 on success, else nonzero. +The return status is 0 on success, else nonzero, +and can be checked by reading the +.Sy RETURN-CODE +register. . .Sh SEE ALSO .Xr CBL_CHECK_FILE_EXIST diff --git a/libgcobol/compat/gnu/lib/cbl_open_file.3 b/libgcobol/compat/gnu/lib/cbl_open_file.3 index 2a7c6694dba5..d08e9acbcc55 100644 --- a/libgcobol/compat/gnu/lib/cbl_open_file.3 +++ b/libgcobol/compat/gnu/lib/cbl_open_file.3 @@ -50,10 +50,10 @@ be used for other byte-stream operations. .El . .Sh RETURN STATUS -.Nm -returns -.Sy "PIC X(2) COMP-5" . -The return status is 0 on success, else nonzero. +The return status is 0 on success, else nonzero, +and can be checked by reading the +.Sy RETURN-CODE +register. . .Sh SEE ALSO .Xr CBL_CHECK_FILE_EXIST diff --git a/libgcobol/compat/gnu/lib/cbl_read_file.3 b/libgcobol/compat/gnu/lib/cbl_read_file.3 index cec29176e14d..99bc57af7b00 100644 --- a/libgcobol/compat/gnu/lib/cbl_read_file.3 +++ b/libgcobol/compat/gnu/lib/cbl_read_file.3 @@ -18,8 +18,6 @@ using .Ar byte-count .Ar flags .Ar buffer -returning -.Ar status . .Sh DESCRIPTION Parameters: @@ -57,10 +55,10 @@ bytes. .El . .Sh RETURN STATUS -.Nm -returns -.Sy "PIC X(2) COMP-5" . -The return status is 0 on success, else nonzero. +The return status is 0 on success, else nonzero, +and can be checked by reading the +.Sy RETURN-CODE +register. . .Sh SEE ALSO .Xr CBL_CHECK_FILE_EXIST diff --git a/libgcobol/compat/gnu/lib/cbl_write_file.3 b/libgcobol/compat/gnu/lib/cbl_write_file.3 index e33e238d5f7e..837521f6a65e 100644 --- a/libgcobol/compat/gnu/lib/cbl_write_file.3 +++ b/libgcobol/compat/gnu/lib/cbl_write_file.3 @@ -18,8 +18,6 @@ using .Ar byte-count .Ar flags .Ar buffer -returning -.Ar status . .Sh DESCRIPTION Parameters: @@ -50,10 +48,10 @@ bytes. .El . .Sh RETURN STATUS -.Nm -returns -.Sy "PIC X(2) COMP-5" . -The return status is 0 on success, else nonzero. +The return status is 0 on success, else nonzero, +and can be checked by reading the +.Sy RETURN-CODE +register. . .Sh SEE ALSO .Xr CBL_CHECK_FILE_EXIST
