Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exit a double perform

Tags:

cobol

Is-it possible to exit a double perform:

                PERFORM VARYING J FROM 1 BY 1 UNTIL J>10
                    PERFORM VARYING K FROM 1 BY 1 UNTIL K>3
                      IF J=2 and K=2
                         EXIT PERFORM
                      ELSE
                         display "LABEL A ===> PROCEDURE NOM_PROC2 "
                                 "J=/"J"/ AND K=/"K"/"
                      END-IF
                    END-PERFORM
                 END-PERFORM

I tried with EXITI PERFORM but it doesn't work for me.

like image 282
Mohamed ELKHALIFI Avatar asked Mar 15 '26 17:03

Mohamed ELKHALIFI


1 Answers

If I understand your question correctly, you want to exit both in-line PERFORMs with the EXIT PERFORM. The following technique should work.

01  SWITCHES.
    05  EOL-SW  PIC X VALUE 'N'.
        88  EOL       VALUE 'Y'.
        88  NOT-EOL   VALUE 'N'.

SET NOT-EOL TO TRUE
PERFORM VARYING J FROM 1 BY 1 UNTIL J>10 OR EOL
    PERFORM VARYING K FROM 1 BY 1 UNTIL K>3 OR EOL
        IF J=2 and K=2
            SET EOL TO TRUE
        ELSE
            display "LABEL A ===> PROCEDURE NOM_PROC2 "
                  "J=/"J"/ AND K=/"K"/"
        END-IF
    END-PERFORM
END-PERFORM

From a previous question you indicated you were transliterating PL/I to COBOL. Just as with spoken and written languages, computer languages have idioms and colloquialisms that don't translate well.

I believe that, logically, this is equivalent.

PERFORM VARYING J FROM 1 BY 1 UNTIL J>2
    PERFORM VARYING K FROM 1 BY 1 UNTIL K>2
        display "LABEL A ===> PROCEDURE NOM_PROC2 "
            "J=/"J"/ AND K=/"K"/"
    END-PERFORM
END-PERFORM
like image 79
cschneid Avatar answered Mar 20 '26 10:03

cschneid