C8-COBOL 循环语句

COBOL 循环语句

有一些任务需要一遍一遍地完成,就像读一个文件的每一个记录,直到它结束。COBOL中使用的循环语句是:

  • Perform Thru
  • Perform Until
  • Perform Times
  • Perform Varying

Perform Thru

Perform Thru用于执行一系列段落,通过给序列中的第一和最后一段命名。执行最后一段后,控制返回。

内联Perform

PERFORM内的语句将被执行,直到到达END-PERFORM。

语法

下面是在内联perform的语法:

        PERFORM 
           DISPLAY 'HELLO WORLD'
        END-PERFORM.

外联Perform

在这里,一个语句在段落中执行,然后将控制转移到其他段落或节。

语法

以下是外联Perform的语法:

        PERFORM PARAGRAPH1 THRU PARAGRAPH2

        IDENTIFICATION DIVISION.
        PROGRAM-ID. ANDRECC.

        PROCEDURE DIVISION.
           HAX-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程序。

//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

在Perform Until中,一个段落执行直到给定的条件为true。“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.

JCL执行上述COBOL程序。

//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 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'.

JCL执行上述COBOL程序:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

当你编译和执行上面的程序,会产生以下结果:

IN B-PARA
IN B-PARA
IN B-PARA

Perform Varying

在perform varying中,一个段落将被执行直到UNTIL短语中的条件为true。

语法

以下是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.

JCL执行上述COBOL程序:

//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.

JCL执行上述COBOL程序:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

当你编译和执行上面的程序,会产生以下结果:

IN A-PARA
IN B-PARA 
IN D-PARA 
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值