有一些任務需要執(zhí)行一遍又一遍,如讀取文件中的每個記錄,直到結(jié)束為止。以下是在COBOL中使用的循環(huán)語句:
完成直通所使用的序列在給第一個和最后一段的名字來執(zhí)行一系列段落。執(zhí)行最后一段控件后會返回。
里面的PERFORM語句將直到結(jié)束,PERFORM達成執(zhí)行。
語法
以下是語法在一行進行:
PERFORM DISPLAY 'HELLO WORLD' END-PERFORM.
語句是在一個段中執(zhí)行,然后控制被轉(zhuǎn)移到其他段或部分。
語法
以下是多行執(zhí)行的語法:
PERFORM PARAGRAPH1 THRU PARAGRAPH2
例子
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. A-PARA. PERFORM DISPLAY 'IN A-PARA' END-PERFORM. PERFORM C-PARA THRU E-PARA. B-PARA. DISPLAY 'IN B-PARA'. STOP RUN. C-PARA. DISPLAY 'IN C-PARA'. D-PARA. DISPLAY 'IN D-PARA'. E-PARA. DISPLAY 'IN E-PARA'.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當編譯并執(zhí)行上面的程序它會產(chǎn)生以下結(jié)果:
IN A-PARA IN C-PARA IN D-PARA IN E-PARA IN B-PARA
在執(zhí)行之前,段將被執(zhí)行,直到給定的條件為真。與之前的測試是默認的狀態(tài),表示條件在一段語句執(zhí)行前檢查。
語法
以下是執(zhí)行直到的語法:
PERFORM A-PARA UNTIL COUNT=5 PERFORM A-PARA WITH TEST BEFORE UNTIL COUNT=5 PERFORM A-PARA WITH TEST AFTER UNTIL COUNT=5
例子
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-CNT PIC 9(1) VALUE 0. PROCEDURE DIVISION. A-PARA. PERFORM B-PARA WITH TEST AFTER UNTIL WS-CNT>3. STOP RUN. B-PARA. DISPLAY 'WS-CNT : 'WS-CNT. ADD 1 TO WS-CNT.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當編譯并執(zhí)行上面的程序它會產(chǎn)生以下結(jié)果:
WS-CNT : 0 WS-CNT : 1 WS-CNT : 2 WS-CNT : 3
在執(zhí)行時期,段將被執(zhí)行指定的次數(shù)。
語法
以下是執(zhí)行時間的語法:
PERFORM A-PARA 5 TIMES.
例子
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. A-PARA. PERFORM B-PARA 3 TIMES. STOP RUN. B-PARA. DISPLAY 'IN B-PARA'.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當編譯并執(zhí)行上面的程序它會產(chǎn)生以下結(jié)果:
IN B-PARA IN B-PARA IN B-PARA
在執(zhí)行不同的段會直到,直到短語變成真的條件來執(zhí)行。
語法
以下是進行改變的語法:
PERFORM A-PARA VARYING A FROM 1 BY 1 UNTIL A=5.
例子
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-A PIC 9 VALUE 0. PROCEDURE DIVISION. A-PARA. PERFORM B-PARA VARYING WS-A FROM 1 BY 1 UNTIL WS-A=5 STOP RUN. B-PARA. DISPLAY 'IN B-PARA ' WS-A.
JCL執(zhí)行以上COBOL程序。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當編譯并執(zhí)行上面的程序它會產(chǎn)生以下結(jié)果:
IN B-PARA 1 IN B-PARA 2 IN B-PARA 3 IN B-PARA 4
GO TO語句用于改變程序的執(zhí)行流程。在GO TO語句傳遞僅在前進方向去。它用于退出該段。不同類型的GO TO語句是:
無條件GO TO
GO TO para-name.
條件GO TO
GO TO para-1 para-2 para-3 DEPENDING ON x.
如果“x”等于1,那么控制將被傳遞到第一段和如果'x'是等于2,則控制將被轉(zhuǎn)移到第二個段落等等。
例子
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-A PIC 9 VALUE 2. PROCEDURE DIVISION. A-PARA. DISPLAY 'IN A-PARA' GO TO B-PARA. B-PARA. DISPLAY 'IN B-PARA '. GO TO C-PARA D-PARA DEPENDING ON WS-A. C-PARA. DISPLAY 'IN C-PARA '. D-PARA. DISPLAY 'IN D-PARA '. STOP RUN.
JCL以上COBOL程序執(zhí)行。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當編譯并執(zhí)行上面的程序它會產(chǎn)生以下結(jié)果:
IN A-PARA IN B-PARA IN D-PARA