- COBOL 教程
- COBOL - 首页
- COBOL - 概述
- COBOL - 环境设置
- COBOL - 程序结构
- COBOL - 基本语法
- COBOL - 数据类型
- COBOL - 基本动词
- COBOL - 数据布局
- COBOL - 条件语句
- COBOL - 循环语句
- COBOL - 字符串处理
- COBOL - 表格处理
- COBOL - 文件处理
- COBOL - 文件组织
- COBOL - 文件访问模式
- COBOL - 文件处理动词
- COBOL - 子程序
- COBOL - 内部排序
- COBOL - 数据库接口
- COBOL 有用资源
- COBOL - 问答
- COBOL - 快速指南
- COBOL - 有用资源
COBOL - 循环语句
有一些任务需要反复执行,例如读取文件的每个记录直到文件末尾。COBOL 中使用的循环语句如下:
- 执行直到
- 执行直到
- 执行次数
- 执行变化
执行直到
Perform Thru 用于通过给出序列中第一个和最后一个段落名称来执行一系列段落。执行完最后一个段落后,控制权将返回。
内联执行
PERFORM 内部的语句将执行到 END-PERFORM 遇到为止。
语法
以下是内联执行的语法:
PERFORM DISPLAY 'HELLO WORLD' END-PERFORM.
外联执行
在这里,一个语句在一个段落中执行,然后控制权转移到另一个段落或节。
语法
以下是外联执行的语法:
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'.
执行上述 COBOL 程序的JCL。
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
IN A-PARA IN C-PARA IN D-PARA IN E-PARA IN B-PARA
执行直到
在“perform until”中,段落将执行到给定条件为真为止。“With test before”是默认条件,它表示在执行段落中的语句之前检查条件。
语法
以下是 perform until 的语法:
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.
执行上述 COBOL 程序的JCL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
WS-CNT : 0 WS-CNT : 1 WS-CNT : 2 WS-CNT : 3
执行次数
在“perform times”中,段落将执行指定的次数。
语法
以下是 perform times 的语法:
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'.
执行上述 COBOL 程序的JCL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
IN B-PARA IN B-PARA IN B-PARA
执行变化
在 perform varying 中,段落将执行到 Until 子句中的条件为真为止。
语法
以下是 perform varying 的语法:
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.
执行上述 COBOL 程序的JCL:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果:
IN B-PARA 1 IN B-PARA 2 IN B-PARA 3 IN B-PARA 4
GO TO 语句
GO TO 语句用于更改程序中的执行流程。在 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,则控制权将转移到第二个段落,依此类推。
示例
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.
执行上述 COBOL 程序的JCL
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC PGM = HELLO
编译并执行上述程序后,将产生以下结果
IN A-PARA IN B-PARA IN D-PARA
广告