Как проверить, является ли переменная пустой в CL? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть этот кусок кода.

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 Ответ

0 голосов
/ 05 февраля 2019

У вас есть два возможных решения.

Первое - просто добавить фактический пробел в две одинарные кавычки:

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

Второе - не использовать * 1006.* и просто проверьте, равен ли он встроенному типу *BLANKS:

IF         COND(&BLANK_VAR *EQ *BLANKS) THEN(DO)
            CALL       PGM(MY_PROGRAM) PARM(&BLANK_VAR)
ENDDO

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

...