Как проверить, является ли переменная пустой в 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

Причина, по которой вы получаете ошибку, состоит в том, что два ' прямо рядом друг с другом действует как экранированная одинарная кавычка. Обычно это позволяет вам встраивать одинарные кавычки в буквальную строку, но в этом случае компилятору кажется, что у вас недопустимая строка из одного символа. Любое из приведенных выше решений будет работать.

Другие вопросы по тегам