Gentle Breeze

[COBOL] PERFORM statement <2> 본문

⑨ 직무역량강화/zOS COBOL

[COBOL] PERFORM statement <2>

재령 2009. 8. 8. 15:49

▶ Basic PERFORM statement

The procedures referenced in the basic PERFORM statement are executed once, and control then passes to the next executable statement following the PERFORM statement.
 
Note: A PERFORM statement must not cause itself to be executed. A recursive PERFORM statement can cause unpredictable results.

사용자 삽입 이미지

procedure-name-1, procedure-name-2

    Must name a section or paragraph in the procedure division.

    When both procedure-name-1 and procedure-name-2 are specified, if either is
    a procedure-name in a declarative procedure, both must be procedure-names
    in the same declarative procedure.

    If procedure-name-1 is specified, imperative-statement-1 and the
    END-PERFORM phrase must not be specified.

    If procedure-name-1 is omitted, imperative-statement-1 and the
    END-PERFORM phrase must be specified.

imperative-statement-1

    The statements to be executed for an in-line PERFORM

An in-line PERFORM statement functions according to the same general rules as an otherwise identical out-of-line PERFORM statement, except that statements contained within the in-line PERFORM are executed in place of the statements contained within the range of procedure-name-1 (through procedure-name-2, if specified). Unless specifically qualified by the word in-line or the word out-of-line, all the rules that apply to the out-of-line PERFORM statement also apply to the in-line PERFORM.

Whenever an out-of-line PERFORM statement is executed, control is transferred to the first statement of the procedure named procedure-name-1. Control is always returned to the statement following the PERFORM statement. The point from which this control is returned is determined as follows:

* If procedure-name-1 is a paragraph name and procedure-name-2 is not specified, the return is made after the execution of the last statement of the procedure-name-1 paragraph.

* If procedure-name-1 is a section name and procedure-name-2 is not specified, the return is made after the execution of the last statement of the last paragraph in the procedure-name-1 section.

* If procedure-name-2 is specified and it is a paragraph name, the return is made after the execution of the last statement of the procedure-name-2 paragraph.
 
* If procedure-name-2 is specified and it is a section name, the return is made after the execution of the last statement of the last paragraph in the procedure-name-2 section.

The only necessary relationship between procedure-name-1 and procedure-name-2 is that a consecutive sequence of operations is executed, beginning at the procedure named by procedure-name-1 and ending with the execution of the procedure named by procedure-name-2.

PERFORM statements can be specified within the performed procedure. If there are two or more logical paths to the return point, then procedure-name-2 can name a paragraph that consists only of an EXIT statement; all the paths to the return point must then lead to this paragraph.

When the performed procedures include another PERFORM statement, the sequence of procedures associated with the embedded PERFORM statement must be totally included in or totally excluded from the performed procedures of the first PERFORM statement. That is, an active PERFORM statement whose execution point begins within the range of performed procedures of another active PERFORM statement must not allow control to pass through the exit point of the other active PERFORM statement. However, two or more active PERFORM statements can have a common exit.

The following figure illustrates valid sequences of execution for PERFORM statements.

사용자 삽입 이미지


When control passes to the sequence of procedures by means other than a PERFORM statement, control passes through the exit point to the next executable statement, as if no PERFORM statement referred to these procedures.

'⑨ 직무역량강화 > zOS COBOL' 카테고리의 다른 글

[COBOL] PERFORM statement <4>  (0) 2009.08.08
[COBOL] PERFORM statement <3>  (0) 2009.08.08
[COBOL] PERFORM statement <1>  (0) 2009.08.08
[COBOL] EVALUATE ~ END-EVALUATE  (0) 2009.08.08
[COBOL] COMPUTE  (0) 2009.08.08
Comments