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

Reply via email to