如何在CL中检查变量是否为空?

时间:2019-02-05 16:26:31

标签: ibm-midrange control-language

我有这段代码。

IF         COND(%TRIM(&BLANK_VAR) *EQ '') THEN(DO)
            CALL       PGM(MY_PROGRAM) PARM(&BLANK_VAR)
ENDDO

我想检查&BLANK_VAR是否为空字符串。但是由于错误消息,我的程序无法编译:

* CPD0126 30  Operand not valid or operator missing in COND.

%TRIM是否有问题?我尝试使用%LEN,但是它使我可以声明的变量的长度,而不是里面的实际数据。

&BLANK_VAR的长度为10个字符。 我必须做:

IF COND(&BLANK_VAR *EQ '          ')

1 个答案:

答案 0 :(得分:3)

您在这里有两种可能的解决方案。

首先是在两个单引号中简单地添加一个实际空间:

IF         COND(%TRIM(&BLANK_VAR) *EQ ' ') THEN(DO)
            CALL       PGM(MY_PROGRAM) PARM(&BLANK_VAR)
ENDDO

第二种是不使用%TRIM,而只是检查其是否等于内置的*BLANKS类型:

IF         COND(&BLANK_VAR *EQ *BLANKS) THEN(DO)
            CALL       PGM(MY_PROGRAM) PARM(&BLANK_VAR)
ENDDO

出现错误的原因是彼此相邻的两个'充当转义的单引号。通常,这允许您将单引号嵌入文字字符串中,但在这种情况下,编译器看起来像是无效的单字符串。以上任一解决方案都可以使用。