我现在正在大型机上工作,在一些模块中进行测试
不为空或空
我们看到:
NOT = SPACE OR LOW-VALUE
酋长说我们应该这样做:
NOT = SPACE AND LOW-VALUE
哪一个 ?
谢谢!
Nea*_*alB 22
酋长是对的.
COBOL 应该读取类似自然语言的东西(这只是另一个糟糕的笑话).
让我们玩以下变量和值:
A = 1
B = 2
C = 3
Run Code Online (Sandbox Code Playgroud)
表达式如:
IF A NOT EQUAL B THEN...
Run Code Online (Sandbox Code Playgroud)
很容易理解.一个不等于两个,所以我们将做任何事情THEN.然而,
IF A NOT EQUAL B AND A NOT EQUAL C THEN...
Run Code Online (Sandbox Code Playgroud)
更难以遵循.再一个不等于两个而一个不等于三个所以我们将做'THEN'之后的任何事情.
COBOL有一个简短的手工构造,永远不应该使用恕我直言.它让每个人(包括我不时)都感到困惑.简短的表达式让您将以上内容简化为:
IF A NOT EQUAL B AND C THEN...
Run Code Online (Sandbox Code Playgroud)
或者如果您想申请De Morgans规则:
IF NOT (A EQUAL B OR C) THEN...
Run Code Online (Sandbox Code Playgroud)
我给你的建议是避免NOTexprssions并且永远不要使用COBOL短手表达.
你真正想要的是:
IF X = SPACE OR X = LOW-VALUE THEN...
CONTINUE
ELSE
do whatever...
END-IF
Run Code Online (Sandbox Code Playgroud)
当'X'包含空格或低值(空值)时,上述操作无效.它完全相同:
IF NOT (X = SPACE OR X = LOW-VALUE) THEN
do whatever...
END-IF
Run Code Online (Sandbox Code Playgroud)
哪个可以转化为:
IF X NOT = SPACE AND X NOT = LOW-VALUE THEN...
Run Code Online (Sandbox Code Playgroud)
最后......
IF X NOT = SPACE AND LOW-VALUE THEN...
Run Code Online (Sandbox Code Playgroud)
我的建议是坚持简单地理解COBOL中更长和更直接的表达,忘记简短的废话.