带有条件运算符COND的条件表达式会返回一个指定数据类型的值,否则引发一个基于类的异常。type可以是非泛型的数据类型。当返回值类型是唯一的,那么可以用字符 # 取代。
注*:不指定ELES时,当WHEN的逻辑表达式都为false时,会返回数据类型type的初始值。
基本语法:
COND type( [let_exp]
WHEN log_exp THEN [let_exp] result
…
[ELSE [let_exp] result )
简单案例一:
DATA lv_grade TYPE string.
DATA lv_score TYPE i VALUE '87'.
" lv_score重命名为x进行条件判断.
" 当lv_score大于60的时候,将值[及格]赋值给lv_grade.
lv_grade = COND #( LET x = lv_score IN
WHEN x = 100 THEN '优秀'
WHEN x > 60 THEN '及格'
ELSE '不及格' ).
它等价与IF条件分支语句:
IF lv_score = 100.
lv_grade = '优秀'.
ELSEIF lv_score > 60.
lv_grade = '及格'.
ELSE.
lv_grade = '不及格'.
ENDIF.
简单案例二:
DATA LV_AMT TYPE I VALUE 80.
DATA LV_FLAG TYPE I VALUE 0.
" 由于lv_flag=0,没有指定ELES,会将初始值0赋给lv_amt.
LV_AMT = COND #( WHEN LV_FLAG = '1' THEN LV_AMT * 10 ).