COBOL 条件陈述的用法
发布时间:2023-09-14 13:09:48 所属栏目:教程 来源:
导读:条件语句用于根据程序员指定的某些条件更改执行流程.条件语句将始终评估为true或false.条件用于IF,Evaluate和Perform语句.不同类型的条件如下:<
IF条件声明
关系条件
签署条件
班级条件
条件名称条件
否定条
IF条件声明
关系条件
签署条件
班级条件
条件名称条件
否定条
条件语句用于根据程序员指定的某些条件更改执行流程.条件语句将始终评估为true或false.条件用于IF,Evaluate和Perform语句.不同类型的条件如下:< IF条件声明 关系条件 签署条件 班级条件 条件名称条件 否定条件 合并条件 IF条件声明 IF声明检查条件.如果条件为真,则执行IF块;如果条件为假,则执行ELSE块. END-IF 用于结束IF块.要结束IF块,可以使用句点代替END-IF.但总是最好将END-IF用于多个IF块. nested-IF : IF块出现在另一个IF块内.嵌套IF语句的深度没有限制. 语法 以下是IF条件语句的语法 : IF [condition] THEN [COBOL statements] ELSE [COBOL statements] END-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. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当你编译并执行上面的程序时,它产生以下结果 : IN LOOP 1 - IF BLOCK IN LOOP 2 - ELSE BLOCK 关系条件 关系条件比较两个操作数,其中任何一个都可以是标识符,字面值或算术表达式.无论大小和用法条款如何,都会对数字字段进行代数比较. 对于非数字操作数 如果有两个比较相同大小的非数字操作数,然后将字符从左边与相应位置进行比较,直到达到结束.包含更多字符数的操作数被声明为更大. 如果比较两个不等大小的非数字操作数,则较短的数据项末尾附加空格,直到大小为止操作数变得相等,然后根据前一点中提到的规则进行比较. 语法 下面给出了关系条件语句的语法&minus ; [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 WS-NUM1 PIC 9(9). 01 WS-NUM2 PIC 9(9). PROCEDURE DIVISION. A000-FirsT-Para. MOVE 25 TO WS-NUM1. MOVE 15 TO WS-NUM2. IF WS-NUM1 IS GREATER THAN OR EQUAL TO WS-NUM2 THEN disPLAY 'WS-NUM1 IS GREATER THAN WS-NUM2' ELSE disPLAY 'WS-NUM1 IS LESS THAN WS-NUM2' END-IF. STOP RUN. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : WS-NUM1 IS GREATER THAN WS-NUM2 符号条件 符号条件用于检查数字操作数的符号.它确定给定的数值是否大于,小于或等于ZERO. 语法 以下是Sign条件语句的语法 : [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 WS-NUM1 PIC S9(9) VALUE -1234. 01 WS-NUM2 PIC S9(9) VALUE 123456. PROCEDURE DIVISION. A000-FirsT-Para. IF WS-NUM1 IS POSITIVE THEN disPLAY 'WS-NUM1 IS POSITIVE'. IF WS-NUM1 IS NEGATIVE THEN disPLAY 'WS-NUM1 IS NEGATIVE'. IF WS-NUM1 IS ZERO THEN disPLAY 'WS-NUM1 IS ZERO'. IF WS-NUM2 IS POSITIVE THEN disPLAY 'WS-NUM2 IS POSITIVE'. STOP RUN. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : WS-NUM1 IS NEGATIVE WS-NUM2 IS POSITIVE 类条件 类条件用于检查操作数是否仅包含字母或数字数据.空格在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-NUM1 PIC X(9) VALUE 'ABCD '. 01 WS-NUM2 PIC 9(9) VALUE 123456789. PROCEDURE DIVISION. A000-FirsT-Para. IF WS-NUM1 IS ALPHABETIC THEN disPLAY 'WS-NUM1 IS ALPHABETIC'. IF WS-NUM1 IS NUMERIC THEN disPLAY 'WS-NUM1 IS NUMERIC'. IF WS-NUM2 IS NUMERIC THEN disPLAY 'WS-NUM2 IS NUMERIC'. STOP RUN. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当你编译并执行上面的程序时,它产生以下结果 : WS-NUM1 IS ALPHABETIC WS-NUM1 IS NUMERIC 条件名称条件 条件名称是用户定义的名称.它包含用户指定的一组值.它的行为类似于布尔变量.它们定义为级别号88.它不具有PIC子句. 语法 以下是用户定义的条件语句的语法&minus ; 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 65 TO WS-NUM. IF PASS disPLAY 'Passed with ' WS-NUM ' marks'. IF FAIL disPLAY 'Failed with ' WS-NUM 'marks'. STOP RUN. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : Passed with 065 marks 否定条件 使用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. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : ELSE-BLOCK 组合条件 组合条件包含使用逻辑运算符AND或OR连接的两个或多个条件. 语法 以下是组合条件陈述的语法 : 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. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : Both condition OK 评估动词 评估动词是IF-ELSE系列语句的替代.它可用于评估多个条件.它类似于C程序中的SWITCH语句. 示例 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. JCL 执行上述COBOL程序 : //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //STEP1 EXEC pgm = HELLO 当您编译并执行上述程序时,它会产生以下结果 : WS-A GREATER THAN 2 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐