1

我有这段代码。

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 '          ')
4

1 回答 1

5

解决方案是在两个单引号中简单地添加一个实际空格:

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

您收到错误的原因是两个'相邻的作为转义单引号。这通常允许您将单引号嵌入到文字字符串中,但在这种情况下,编译器看起来就像您有一个无效的单个字符串一样。

于 2019-02-05T17:29:34.213 回答