逻辑运算

逻辑运算时建立在多种关系运算的基础上的,常用在流程控制的条件判断里。
运算结果只有两种,要么真,要么假。
三种类型:逻辑与,逻辑或,逻辑非。

COBOL中逻辑与用AND表示。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. AND1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC 99.
01 DATA2 PIC XX.
PROCEDURE DIVISION.
             MOVE 99 TO DATA1.
             MOVE 'OK' TO DATA2.
             IF DATA1 = 99 AND DATA2 = 'OK'
                  DISPLAY ' TRUE'
             ELSE
                  DISPLAY 'FALSE'
             END-IF. 
             STOP RUN.
运行后:
 TURE

逻辑运算时通过比较多个用于条件判断的关系运算的结果而得出的最终运算结果。
并当且仅当所有运算的结果都为真时,逻辑与的运算才为真。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. AND2.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC 99.
01 DATA2 PIC XX.
01 DATA3 PIC 99.
PROCEDURE DIVISION.
             MOVE 99 TO DATA1.
             MOVE 'OK' TO DATA2.
             MOVE 99 TO DATA3.
             IF DATA1 = 88 AND DATA2 = 'OK' AND DATA3 > 50
                 DISPLAY 'TRUE'
             ELSE  
                 DISPLAY 'FALSE'
             END-IF.
             STOP RUN.
运行后:
 FALSE


逻辑与用运算符OR表示。只要有其中有一个关系运算的结果为真,那么结果就为真。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. OR1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC 99.
01 DATA2 PIC XX.
01 DATA3 PIC 99.
PROCEDURE DIVISION.
             MOVE 99 TO DATA1.
             MOVE 'OK' TO DATA2.
             MOVE 99 TO DATA3.
             IF DATA1 = 88 OR DATA2 = 'OK' OR DATA3 > 50
                  DISPLAY 'TRUE'
             ELSE
                  DISPLAY 'FALSE'
             END-IF.
             STOP RUN.
运行结果:
 TURE

 

逻辑非用NOT表示。就是对逻辑求反,真为假,假为真。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. NOT1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC 99.
PROCEDURE DIVISION.
            MOVE 99 TO DATA1.
            IF DATA1 = 99
                 DISPLAY 'OK'
            ELSE
                 DISPLAY 'ERROR'
           END-IF.
           IF DATA1 NOT =  99
                DISPLAY 'AFTER OK'
           ELSE
                DISPLAY 'AFTER ERROR'
           END-IF.
           STOP RUN.
运行后:
 OK
 AFTER ERROR

 

复合逻辑运算是由基本逻辑运算组成的。

处理数据的优先级:
算术运算
关系运算
逻辑非运算
逻辑与运算(若同时出现多个,则从左到右一次运算)
逻辑或运算(若同时出现多个,则从左到右一次运算)
如:
IDENTIFICATION DIVISION.
PROGRAM-ID. DSA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATA1 PIC XX VALUE 'AA'.
01 DATA2 PIC XX VALUE 'BB'.
01 DATA3 PIC XX VALUE 'CC'.
01 NUM1 PIC 99 VALUE 10.
01 NUM2 PIC 99 VALUE 20.
01 NUM3 PIC 99 VLAUE 30.
PROCEDURE DIVISION.
             IF DATA1 NOT = DATA2 AND NUM1 > NUM2
                 AND (NUM1 + NUM2) = NUM3 OR DATA2 <= DATA3
                      DISPLAY 'TURE'
             ELSE
                      DISPLAY 'ERROR'
            END-IF.
            STOP RUN.
运算后:
 TURE
                               运算时可用T在表正确,F代表错误。复杂是也可适当使用括号。

 


若前一个操作数与后一个相同时,通常可省略后一个运算中的左操作数。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. DSA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEST-NUM PIC 99.
PROCEDURE DIVISION.
             MOVE 20 TO TEST-NUM.
             IF TEST-NUM > 8 AND TEST-NUM < 10
                  DISPLAY 'TRUE'
             ELSE
                  DISPLAY 'FALSE'
             END-IF.
             IF TEST-NUM > 8 AND < 10
                  DISPLAY 'OK'
             ELSE
                  DISPLAY 'ERROR'
             END-IF.
             STOP RUN.
运行后:
 FALSE
 ERROR

当后一个操作数与前一个相同时,并运算符也相同,那么运算符也可用省略。如:
IDENTIFICATION DIVISION.
PROGRAM-ID. DSA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEST-NUM PIC 99.
PROCEDURE DIVISION.
             MOVE 20 TO TEST-NUM.
             IF TEST-NUM = 8 AND TEST-NUM = 10
                  DISPLAY 'TRUE'
             ELSE
                  DISPLAY 'FALSE'
             END-IF.
             IF TEST-NUM = 8 OR 10
                  DISPLAY 'OK'
             ELSE
                  DISPLAY 'ERROR'
             END-IF.
             STOP RUN.
运行后:
 FALSE
 ERROR

要注意的是逻辑非!
前一个运算的逻辑非运算不可暗含在后一个运算中! 如:
DSA NOT = 8 OR = 1O 正确。
DSA NOT = 8 OR DSA NOT = 10  错误!! 应为: DSA NOT = 8 OR DSA = 10

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值