个性化阅读
专注于IT技术分析

COBOL-条件语句用法图解

本文概述

根据程序员指定的某些条件, 条件语句用于更改执行流程。输出始终由条件语句以true或false给出。 COBOL包含各种类型的条件语句:

  • 如果条件声明
  • 关系声明
  • 签署声明
  • 类声明
  • 条件-名称声明
  • 否定条件
  • 组合条件

如果条件声明

如果使用条件语句检查条件是否为真, 则执行IF块, 如果条件为假, 则执行ELSE块。

IF语句根据其在COBOL程序中的用法主要有三种类型:

简单中频

简单IF主要用于执行条件相关代码。如果条件为真, 则它将执行在IF块中编写的语句集。如果不满足条件, 则在IF语句终止后, 控件将转移到下一个语句。

语法如下:

IF Condition  
	{Statement Block}
[END-IF].

在这里, END-IF是作用域终止符, 在程序中是可选的。句点(。)可以在IF块的最后一个语句中定义。

如果未指定期限, 则必须使用范围终止符END-IF。

如果别的

IF ELSE语句用于需要由两个条件执行的一组特定语句时。该语句主要用于执行条件特定的代码。

在IF-ELSE中, 如果指定条件为true, 则将执行语句块。如果条件为假, 则将执行另一组语句, 这些语句将位于ELSE块下。

语法如下:

IF Condition-1
	{Statement-Block-1/NEXT SENTENCE}
[ELSE]  
	{Statement-Block-2/NEXT SENTENCE}
[END-IF].

嵌套IF

与其他COBOL编程语言一样, COBOL也允许嵌套的IF语句。 IF语句中的IF语句称为嵌套IF语句。嵌套IF语句的深度没有限制。

语法如下:

IF Condition-1 THEN
	IF Condition-2 THEN
		Statements-block-1
	[ELSE
		Statements-block-2
	END-IF]
[ELSE
	IF Condition-3 THEN
		Statements-block-3
	[ELSE
		Statements-block-4
	END-IF]
END-IF.]

范例1:

让我们看一下COBOL程序中IF条件语句的示例:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-NUM1 PIC 9(9).
           01 WS-NUM2 PIC 9(9).
           01 WS-NUM3 PIC 9(5).
           01 WS-NUM4 PIC 9(6).

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
           MOVE 25 TO WS-NUM1 WS-NUM3.
           MOVE 15 TO WS-NUM2 WS-NUM4.
   
       IF WS-NUM1 > WS-NUM2 THEN
           DISPLAY 'IN LOOP 1 - IF BLOCK'
      
       IF WS-NUM3 = WS-NUM4 THEN
           DISPLAY 'IN LOOP 2 - IF BLOCK'
       ELSE
           DISPLAY 'IN LOOP 2 - ELSE BLOCK'
       END-IF
      
       ELSE
           DISPLAY 'IN LOOP 1 - ELSE BLOCK'
       END-IF.
   
       STOP RUN.

输出如下:

COBOL条件语句

范例2:

让我们看一下IF条件语句的另一个简单示例:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 CHECK-GENDER.
                05 GENDER PIC X(1).
                88 MALE VALUE 'M'.
                88 FEMALE VALUE 'F'.

       PROCEDURE DIVISION.
           MAIN-PARA.
           SET FEMALE TO TRUE.
           IF MALE
                DISPLAY "Gender: Male"
           ELSE
                DISPLAY "Gender: Female"
           END-IF.  
       STOP RUN.

输出如下:

COBOL条件语句

关系条件

关系条件将两个操作数进行对比。这些操作数可以是标识符, 文字或算术表达式。

不管大小和使用条款如何, 都将进行代数数字字段的比较。

对于非数字操作数

通过比较两个大小相等的非数字操作数, 将从左侧开始以相应位置测量字符, 直到到达末尾。具有更多字符的操作数被认为更大。

在比较两个大小不同的操作数时, 较短的数据项将在末尾附加空格, 直到操作数的大小相等, 然后根据上一段中所述的规则进行比较。

关系运算符定义比较的类型, 如下所示:

关系运算符 我们可以写成 描述
等于 IS = 这意味着, 等于
比更大 是> 这意味着, 大于
小于 IS < 这意味着, 小于
不超过 不是> 这意味着, 不大于
不少于 不是< 这意味着, 不少于
不等于 不是= 这意味着, 不等于
大于或等于 IS> = 表示, 大于或等于
少于或等于 IS <= 表示, 小于或等于

语法如下:

[Data Name/Arithmetic Operation]

   [IS] [NOT] 

[Equal to (=), Greater than (>), Less than (<), Greater than or Equal (>=), Less than or equal (<=) ]

[Data Name/Arithmetic Operation]

例子:

IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
           01 A PIC 9(9).
           01 B PIC 9(9).

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
           MOVE 24 TO A.
           MOVE 13 TO B.
   
       IF A IS GREATER THAN OR EQUAL TO B THEN
            DISPLAY 'A IS GREATER THAN B'
       ELSE
            DISPLAY 'A IS LESS THAN B'
       END-IF.
   
       STOP RUN.

输出如下:

COBOL条件语句

签收条件

符号条件检查数字操作数的符号。它用于确定给定的数值是否大于, 小于, 等于或为零。

语法如下:

[Data Name/Arithmetic Operation] 

   [IS] [NOT] 

[Positive, Negative or Zero]

[Data Name/Arithmetic Operation]

例子:

IDENTIFICATION DIVISION.
        PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 A PIC S9(9) VALUE -1234.
           01 B PIC S9(9) VALUE 123456.

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
           IF A IS POSITIVE THEN
               DISPLAY 'A IS POSITIVE'.
      
           IF A IS NEGATIVE THEN
               DISPLAY 'A IS NEGATIVE'.
      
           IF A IS ZERO THEN
               DISPLAY 'A IS ZERO'.
      
           IF B IS POSITIVE THEN
               DISPLAY 'B IS POSITIVE'.

       STOP RUN.

输出如下:

COBOL条件语句

课堂条件

类条件检查操作数是否仅包含字母或数字数据。空格以ALPHABETIC, ALPHABETIC-LOWER和ALPHABETIC-UPPER表示。

语法如下:

[Data Name/Arithmetic Operation>]

   [IS] [NOT] 

[NUMERIC, ALPHABETIC, ALPHABETIC-LOWER, ALPHABETIC-UPPER]

[Data Name/Arithmetic Operation]

例子:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-VAL1 PIC X(9) VALUE 'NIKITA '.
           01 WS-VAL2 PIC 9(9) VALUE 123456789.

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
   
           IF WS-VAL1 IS ALPHABETIC THEN
                DISPLAY 'WS-VAL1 IS ALPHABETIC'.
      
           IF WS-VAL1 IS NUMERIC THEN
                DISPLAY 'WS-VAL1 IS NUMERIC'.
      
           IF WS-VAL2 IS NUMERIC THEN
                DISPLAY 'WS-VAL2 IS NUMERIC'.
   
       STOP RUN.

输出如下:

COBOL条件语句

条件名称条件

条件名称是用户定义的名称。该语句包含一组用户定义的值, 并用作布尔变量。 88级定义了它们。它没有PIC子句。

语法如下:

88 [Condition-Name] VALUE [IS, ARE] [LITERAL] [THRU LITERAL].

例子:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-NUM PIC 9(3).
           88 PASS VALUES ARE 041 THRU 100.
           88 FAIL VALUES ARE 000 THRU 40.

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
           MOVE 85 TO WS-NUM.
   
           IF PASS 
                DISPLAY 'Passed with ' WS-NUM ' marks'.
      
           IF FAIL 
                DISPLAY 'FAILED with ' WS-NUM 'marks'.
      
       STOP RUN.

输出如下:

COBOL条件语句

否定条件

否定条件是通过使用关键字NOT给出的。如果满足条件并且我们在其前面未给出NOT, 则其最终值将为false。

语法如下:

IF NOT [CONDITION] 
   COBOL Statements
END-IF.

例子:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-NUM1 PIC 9(2) VALUE 20.
           01 WS-NUM2 PIC 9(9) VALUE 25.

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
   
           IF NOT WS-NUM1 IS LESS THAN WS-NUM2 THEN
                DISPLAY 'IF-BLOCK'
           ELSE
                DISPLAY 'ELSE-BLOCK'
           END-IF.
   
       STOP RUN.

输出如下:

COBOL条件语句

组合条件

组合条件语句包括与OR或AND逻辑运算符关联的两个或多个条件。

语法如下:

IF [CONDITION] AND [CONDITION]
   COBOL Statements
END-IF.

例子:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-NUM1 PIC 9(2) VALUE 20.
           01 WS-NUM2 PIC 9(2) VALUE 25.
           01 WS-NUM3 PIC 9(2) VALUE 20.

       PROCEDURE DIVISION.
           A000-FIRST-PARA.
   
           IF WS-NUM1 IS LESS THAN WS-NUM2 AND WS-NUM1=WS-NUM3 THEN
                  DISPLAY 'Both condition OK'
           ELSE
                  DISPLAY 'Error'
           END-IF.
   
       STOP RUN.

输出如下:

COBOL条件语句

评估动词

我们可以使用Evaluate动词代替一系列IF-ELSE语句。它的作用与C程序的SWITCH语句相同。这个动词在评估多个条件时非常有用。

在程序执行期间, 它提供多选控制。一次即可测试多个条件。

语法如下:

EVALUATE {Expression1}
	WHEN Cond-1
		Statement block-1
	WHEN Cond-2
		Statement block-2
		.
		.
		.
		.
	WHEN Cond-n
		Statement block-n
	WHEN other
		Statement block- other
END-EVALUATE.

例子:

IDENTIFICATION DIVISION.
           PROGRAM-ID. HELLO.

       DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 WS-A PIC 9 VALUE 0.
   
       PROCEDURE DIVISION.
           MOVE 3 TO WS-A.
   
       EVALUATE TRUE
           WHEN WS-A > 2
                DISPLAY 'WS-A GREATER THAN 2'

           WHEN WS-A < 0
                DISPLAY 'WS-A LESS THAN 0'

           WHEN OTHER
                DISPLAY 'INVALID VALUE OF WS-A'
       END-EVALUATE.
   
       STOP RUN.

输出如下:

COBOL条件语句

赞(0)
未经允许不得转载:srcmini » COBOL-条件语句用法图解

评论 抢沙发

评论前必须登录!