case

EGL case 语句标记多组语句的开始,在该位置,最多只运行一组语句。case 语句等同于在每个 case 子句末尾都有一个 break 的 C 或 Java™ switch 语句。

case 语句的语法图
criterion
一个项、常量、表达式、文字或系统变量,包括 ConverseVar.eventKey 或 sysVar.systemType。

如果指定 criterion,则每个后续 when 子句(如果有的话)都必须包含一个或多个 matchExpression 实例。如果未指定 criterion,则每个后续 when 子句(如果有的话)都必须包含 logical expression

when
只有在下列情况下才会被调用的子句的开头:
  • 指定了 criterion,并且 when 子句是第一个要包含与 criterion 相等的 matchExpression 的子句;或者
  • 未指定 criterion,并且 when 子句是第一个要包含等于 true 的 logical expression 的子句。

如果希望 when 子句在被调用时不起任何作用,则编写不带 EGL 语句的该子句。

case 语句可以具有任何数目的 when 子句。

matchExpression
下列其中一个值:
  • 数字或字符串表达式
  • 要与 ConverseVar.eventKey 或 sysVar.systemType 作比较的符号

matchExpression 值的基本类型必须与条件值的基本类型相兼容。有关兼容性的详细信息,请参阅逻辑表达式

logicalExpression
逻辑表达式
statement
EGL 语句。
otherwise
在未运行任何 when 子句时将被调用的子句的开头。

在运行 when 或 otherwise 子句中的语句之后,控制权将传递给紧跟在 case 语句末尾后面的 EGL 语句。在任何情况下都不会将控制权传递给下一个 when 子句。如果未调用任何 when 子句,并且未使用任何 default 子句,则还将控制权传递给紧跟在 case 语句后面的下一个语句,而不会出现任何错误状态。

下面是 case 语句的一个示例:
  case (myRecord.requestID)
    when (1)
      myFirstFunction();
    when (2, 3, 4)
      try
        call myProgram;
      onException
        myCallFunction(12);
      end
    otherwise
      myDefaultFunction();
  end  

如果单个子句包含多个 matchExpression 实例(在上一个示例中为 2、3 和 4 ),则那些实例的求值是从左至右进行的,并且一旦找到一个与条件值相对应的 matchExpression,求值就会停止。

相关任务
语法图

相关参考

EGL 语句
逻辑表达式
ConverseVar.eventKey
sysVar.systemType

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.