If statement 如何在正在进行的案例4GL中编写此IF语句?

If statement 如何在正在进行的案例4GL中编写此IF语句?,if-statement,switch-statement,filtering,progress-4gl,If Statement,Switch Statement,Filtering,Progress 4gl,我试图给用户一个在图像上过滤的机会。在我的代码中,我将收到一个字符串,如 ASSIGN img = "images\green.png". 我认为最好在CASE中编写下面的IF语句,但我不知道如何编写,因为在CASE语句中不能使用匹配项或任何其他变量值 IF img MATCHES "*green*" THEN DO: MESSAGE "It's green!" VIEW-AS ALERT-BOX INFO BUTTONS OK. END. ELSE IF img M

我试图给用户一个在图像上过滤的机会。在我的代码中,我将收到一个字符串,如

ASSIGN img = "images\green.png". 
我认为最好在CASE中编写下面的IF语句,但我不知道如何编写,因为在CASE语句中不能使用匹配项或任何其他变量值

IF img MATCHES "*green*" THEN DO:
    MESSAGE "It's green!"
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
ELSE IF img MATCHES "*orange*" THEN DO:
    MESSAGE "It's orange!"
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
ELSE IF img MATCHES "*red*" THEN DO:
    MESSAGE "It's red!"
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
所以我显然不能这样写:

CASE img:
    WHEN MATCHES "*green*" THEN DO:
        MESSAGE "It's green!"
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
    WHEN MATCHES "*orange*" THEN DO:
        MESSAGE "It's red!"
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END
    WHEN MATCHES "*red*" THEN DO:
        MESSAGE "It's red!"
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    END.
END CASE.

有什么想法吗?还是我把它留在IF语句中?

这里有一个小技巧,我们用来在case语句中放置表达式:

CASE TRUE:
     WHEN img MATCHES "*green*" THEN DO:
          MESSAGE "It's green!"
             VIEW-AS ALERT-BOX INFO BUTTONS OK.
     END.
     WHEN img MATCHES "*orange*" THEN DO:
          MESSAGE "It's orange!"
             VIEW-AS ALERT-BOX INFO BUTTONS OK.
     END.
     WHEN img MATCHES "*red*" THEN DO:
          MESSAGE "It's red!"
             VIEW-AS ALERT-BOX INFO BUTTONS OK.
     END.
     OTHERWISE DO:
          MESSAGE "It's something else!"
             VIEW-AS ALERT-BOX INFO BUTTONS OK.
     END.
END CASE.

我不清楚你到底想做什么。if-else-if树可能和case语句一样快,但也同意它不是那么优雅。我知道你的例子很琐碎,但为了更优雅地思考,我需要理解你将要做什么。您提到了筛选,但我看不出您显示的代码将如何执行筛选操作。此代码只是IF语句的一个示例,没有显示筛选所需的代码。但我会坚持使用IF语句,因为它更容易阅读。谢谢你的时间!我会坚持使用IF语句。语义技巧很难阅读,将来可能会被打破…@Jensd我想你是对的,它会更难阅读。我将只使用IF语句。