EVALUATE语句COBOL中的OR运算符

时间:2016-05-03 11:16:39

标签: cobol

我想知道我是否可以这样使用OR运算符:

li{
    border-top: solid 1px rgba(0, 0, 0, 0.125);
    margin: 0.5em 0 0 0;
    padding: 0.5em 0 0 0;
    position: relative;
}
.nav-btn{
        text-indent:1.5em;
     }
    .nav-btn:before {
        font-family:'FontAwesome';
        position:absolute;
        top:50%;
        -ms-transform:translateY(-50%);
        -o-transform:translateY(-50%);
        -moz-transform:translateY(-50%);
        -webkit-transform:translateY(-50%);
        transform:translateY(-50%);
        left:-2em;
        background-size: auto 1.5em;
        background-repeat: no-repeat;
        background-position: 1.5em center;
        width: 3.5em;
        height: 1.5em;
        content:' ';
    }
.nav-team:before{ background-image:url(attr(src)); }
.nav-home:before{ background-image:url(../icons/feed.svg); }
.nav-envelope:before{ background-image:url(../icons/messages.png); }

我认为它可以使用IF,但我需要使用此声明。我试图将括号放在不同的位置,但它没有用。

我也试过使用不同的句子,如下所示,我得到了一个无效的表达错误:

EVALUATE TRUE
    WHEN (COD-USER NOT EQUAL TO 01) OR (COD-USER NOT EQUAL TO 02)
        ADD 1 TO CTN-ERROR

    WHEN 
    ...

END-EVALUATE

3 个答案:

答案 0 :(得分:1)

你问题的答案......

  

我想知道我是否可以这样使用OR运算符:

...是"是的。"然而...

这是你想要的吗?

[...]
    05  WS-COD-USER PIC 99 VALUE ZEROES.
        88  DONT-ADD-1-TO-CTN-ERROR VALUES 1, 2.
[...]
    MOVE COD-USER TO WS-COD-USER
    EVALUATE TRUE
      WHEN DONT-ADD-1-TO-CTN-ERROR
           CONTINUE
      WHEN OTHER
           ADD 1 TO CTN-ERROR
    END-EVALUATE

如果CTN-ERROR为1,则不会向COD-USER添加1。如果CTN-ERROR为2,则不会向COD-USER添加1。如果COD-USER为任何其他值1都将添加到CTN-ERROR

我假设COD-USER位于FD或字帖中。否则,您只需添加88 - 级别即可。

答案 1 :(得分:1)

在您的示例中,您将始终$category = 'apple, banana'

ADD 1 TO CTN-ERROR为01且WHEN为02时,不确定您希望其他COD-USER成为什么或想要发生什么,但如果您是只有当COD-USER为01或02时才想要你的代码,那么你可以尝试类似的东西:

COD-USER

OR

EVALUATE COD-USER
    WHEN 01
        DO-SOMETHING
    WHEN 02
        DO-SOMETHING-ELSE
    WHEN OTHER
        ADD 1 TO CTN-ERROR
END-EVALUATE

当您在01或02上匹配时,这将执行您需要的任何操作,而其他任何内容都会为您的计数增加1。

答案 2 :(得分:0)

是的,您可以使用OR,但您编写代码的方式将始终如上所述,已经在上述答案中说明了。何时可以写两次,如下图所示

EVALUATE TRUE
  WHEN COD-USER = 01
  WHEN COD-USER = 02
    CONTINUE
  WHEN OTHER
    ADD 1 TO CTN-ERROR
END-EVALUATE

在上面的示例中,当COD-USER = 01或COD-USER = 02时,它将继续,对于所有其他条件,它将向CTN-ERROR添加1