Ваш шаг DATA не содержит оператора SET
, поэтому компилятор шага данных не знает о переменной с именем a
в операторе if
. Компилятор «добавит» переменную a
в PDV как неинициализированную (что означает, что ее значение будет отсутствующим значением .
).
Ваш журнал должен показать
NOTE: Variable a is uninitialized.
Поскольку отсутствующее значение не соответствует предложению if
или else if
, переменной tmp
никогда не присваивается значение.
Компилятору не известно о переменной tmp
в точке егопервое присваивание, поэтому компилятор «добавляет» tmp
в PDV с типом и длиной, полученными из типа и длины первого выражения, которому он назначен.
data tester;
if a = 1 then
tmp = "infile '" || strip("&csvfil") || "'";
else if a = 2 then
tmp = "infile '" || strip("&csvfil") || "'" || "encoding='windows'";
put tmp;
run;