https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119883

            Bug ID: 119883
           Summary: codegen: recursive user-defined functions don't run
                    recursive
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: cobol
          Assignee: unassigned at gcc dot gnu.org
          Reporter: simonsobisch at gnu dot org
  Target Milestone: ---

Code example:


       IDENTIFICATION DIVISION.
       FUNCTION-ID. foo.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  ttl  PIC 9 VALUE 1.

       LOCAL-STORAGE SECTION.
       01  num  PIC 9.

       LINKAGE SECTION.
       01  arg PIC 9.
       01  ret PIC 9.

       PROCEDURE DIVISION USING arg RETURNING ret.
           IF arg < 5
              ADD 1 TO arg GIVING num END-ADD
              MOVE FUNCTION foo (num) TO ret
           ELSE
              MOVE arg TO ret
           END-IF
           DISPLAY "Step: " ttl ", Arg: " arg ", Return: " ret
           END-DISPLAY
           ADD 1 to ttl END-ADD
           GOBACK.
       END FUNCTION foo.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. prog.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       REPOSITORY.
           FUNCTION foo.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 num PIC 9 VALUE 1.

       PROCEDURE DIVISION.
           DISPLAY "Return value '" FUNCTION foo (num) "'"
             WITH NO ADVANCING
           END-DISPLAY
           GOBACK.
       END PROGRAM prog.


result (-expected +current head)


-Step: 1, Arg: 5, Return: 5
-Step: 2, Arg: 4, Return: 5
-Step: 3, Arg: 3, Return: 5
-Step: 4, Arg: 2, Return: 5
-Step: 5, Arg: 1, Return: 5
-Return value '5'
+Return value '0'

Reply via email to