Как проверить, является ли переменная пустой в CL?
У меня есть этот кусок кода.
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 ответ
У вас есть два возможных решения здесь.
Во-первых, просто добавьте фактическое пространство в двух одинарных кавычках:
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
Причина, по которой вы получаете ошибку, состоит в том, что два '
прямо рядом друг с другом действует как экранированная одинарная кавычка. Обычно это позволяет вам встраивать одинарные кавычки в буквальную строку, но в этом случае компилятору кажется, что у вас недопустимая строка из одного символа. Любое из приведенных выше решений будет работать.