Ibm midrange 如何检查CL中的变量是否为空?

Ibm midrange 如何检查CL中的变量是否为空?,ibm-midrange,control-language,Ibm Midrange,Control Language,我有这段代码 IF COND(%TRIM(&BLANK_VAR) *EQ '') THEN(DO) CALL PGM(MY_PROGRAM) PARM(&BLANK_VAR) ENDDO 我想检查&BLANK\u VAR是否为空字符串。但是,由于错误消息,我的程序无法编译: * CPD0126 30 Operand not valid or operator missing in COND. 这是%TRIM的问题吗?我尝试

我有这段代码

IF         COND(%TRIM(&BLANK_VAR) *EQ '') THEN(DO)
            CALL       PGM(MY_PROGRAM) PARM(&BLANK_VAR)
ENDDO
我想检查
&BLANK\u VAR
是否为空字符串。但是,由于错误消息,我的程序无法编译:

* CPD0126 30  Operand not valid or operator missing in COND.
这是
%TRIM
的问题吗?我尝试使用
%LEN
,但它给出了声明变量的长度,而不是其中的实际数据

&BLANK\u VAR
长度为10个字符。 我是否必须做:

IF COND(&BLANK_VAR *EQ '          ')

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

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

出现错误的原因是相邻的两个
充当转义单引号。这通常允许您将单引号嵌入到文本字符串中,但在这种情况下,编译器认为您的单字符串无效。

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

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

出现错误的原因是相邻的两个
充当转义单引号。这通常允许您将单引号嵌入到文本字符串中,但在这种情况下,编译器会认为您的单字符串无效。

CLLE中没有内置的*空格。使用该代码将字符字段与包含文本“*BLANKS”的字符串进行比较。第一次比较使用单引号空白单引号是正确的。我没有意识到这一点。谢谢我不经常使用CL。我已经从我的答案中删除了这个建议。没有内置的CLLE用于*空格。使用该代码将字符字段与包含文本“*BLANKS”的字符串进行比较。第一次比较使用单引号空白单引号是正确的。我没有意识到这一点。谢谢我不经常使用CL。我已经把那个建议从我的回答中删除了。