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。我已经把那个建议从我的回答中删除了。