Причина, по которой он не работает, состоит в том, что подмножество if
немедленно return
и не продолжит обработку, если встретит значение false
.Это эквивалентно:
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
DO i = 1 TO 10;
IF arrayname(i) ne "x" then delete;
END;
RUN;
Вам необходимо определить, является ли любое значение истинным, и if
, только если это правда.Вы можете использовать whichc
, как указывает Reeza (который возвращает значение TRUE, если он находит искомое значение, или FALSE, если нет);или вы можете выполнить итерацию аналогичным образом:
DATA output;
SET arbitrary_table;
ARRAY arrayname $ arrayname_1 - arrayname_10;
has_x=0;
DO i = 1 TO 10;
IF arrayname(i) = "x" then has_x=1;
END;
if has_x;
RUN;