我有这样的一段代码。
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
,但它给了我声明,没有内部的实际数据的变量的lenght。
&BLANK_VAR
的长度为10个字符。我必须做的:
IF COND(&BLANK_VAR *EQ ' ')
你在这里有两个可能的解决方案。
首先是只需在两个单引号加一个实际空间:
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
你得到错误的原因是两个'
旁边相互充当转义单引号。这通常可以让你单引号嵌入到一个字符串,但在这种情况下,它就像你有一个无效的单字符字符串看起来编译器。无论是解决方案之一以上会工作。