Skip to Main Content
IBM Z Software


This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

Status Delivered
Workspace COBOL Compilers
Created by Guest
Created on Jun 6, 2019

Perform until exit

Now that COBOL finally has proper EXIT statements there should be a way to speciify an "infinite" loop, or rather a loop that has no explicit end condition but depends on the use of EXIT PERFORM (or EXIT PROGRAM, STOP RUN, GOBACK) to terminate the loop.

While no COBOL standard yet allows for this (a glaring omission), both Micro Focus COBOL and GNU COBOL (formerly OpenCOBOL) allow for "PERFORM UNTIL EXIT" to provide this functionality.

Other languages have a similar feature.
PL/I: DO LOOP;
C/C++/Java: for (;;) {}

Note: This would ideally be added to the current COBOL compiler (5.2) (the first to provide EXIT PERFORM) rather than held for a new release.

Idea priority Medium
  • Admin
    Basil Kanneth
    Reply
    |
    Aug 17, 2022

    This Idea has been delivered in the July 2022 6.3 PTF and in the 6.4 GA compiler.

  • Guest
    Reply
    |
    Sep 5, 2019

    This RFE has been accepted and will be updated once put into plan.

  • Guest
    Reply
    |
    Jul 10, 2019

    This RFE is being investigated further.

  • Guest
    Reply
    |
    Jun 10, 2019

    @Denis_FALLAI: Perhaps, but you need to open a separate RFE for this.

  • Guest
    Reply
    |
    Jun 8, 2019

    Need also evolution for "EXIT PARAGRAPH" and "EXIT SECTION" to exit to the end of any PARAGRAPH / SECTION and not only current PARAGRAPH/SECTION :
    --> EXIT PARAGRAPH [paragraph-name]
    --> EXIT SECTION [section-name]

    This will avoid "PERFORM label-begin THRU label-end" and "GO TO label-end" to exit at end of "label" in structured programs by levels of PARAGRAPH/SECTION from an deeper level than current level.

  • Guest
    Reply
    |
    Jun 6, 2019

    This feature is part of the current "working draft" for the next ISO COBOL standard. This working draft (#7) can be downloaded at https://isotc.iso.org/livelink/livelink?func=ll&objId=20493019&objAction=Open.
    Below are some quotes from the standard related to this RFE. Note, the PERFORM statement is described in section 14.9.27 in ISO/IEC 1989:2014, but 14.9.28 in ISO/IEC 1989:202x (working draft 7).

    14.9.28.1 General format

    where until-phrase is

    [ WITH TEST { BEFORE | AFTER } ] UNTIL { condition-1 | EXIT }

    14.9.28.2 Syntax Rules

    9) The until EXIT phrase shall not be specified in a PERFORM statement with or under a PERFORM statement with the VARYING phrase or either the TEST BEFORE or TEST AFTER phrase

    14.9.28.3 General rules

    8) If until-phrase with condition-1 is specified, the specified set of statements is performed until the condition specified by the UNTIL phrase is true. When the condition is true, control is transferred to the end of the PERFORM statement. If the condition is true when the PERFORM statement is entered, and the TEST BEFORE phrase is specified or implied, no transfer to the specified set of statements takes place, and control is passed to the end of the PERFORM statement. If the TEST AFTER phrase is specified, the PERFORM statement functions as if the TEST BEFORE phrase were specified except that the condition is tested after the specified set of statements has been executed. Item identification associated with the operands specified in condition-1 is done each time the condition is tested.

    9) If the until-phrase with the EXIT reserved word is specified, execution proceeds exactly as if the same PERFORM statement were coded but with condition-1 specified except that condition-1 never evaluates as true.

    NOTE When Until EXIT is specified, it is the programmer's responsibility to ensure that an “escape” from the PERFORM loop will be reached. For an inline PERFORM, this can be done by an EXIT PERFORM (but not EXIT PERFORM CYCLE) statement. For an out-of-line PERFORM this can be done by a GOBACK or STOP statement. The programmer must take care that the escape statement that they use does actually escape the PERFORM loop. Several statements might appear to do so, but don't actually escape the loop. For example, an EXIT PARAGRAPH (from a performed paragraph) or an EXIT SECTION (from a performed section) do not escape a PERFORM with the UNTIL EXIT phrase.