Возможно, здесь есть какое-то умное волшебство оператора INPUT, но я думаю, что самым простым и ясным решением было бы прочитать оба столбца как символьные данные, а затем проверить их, чтобы увидеть, какой столбец содержит какие данные:
data pr1 (keep = profname course);
* Declare PROFNAME as character and COURSE as numeric;
length profname $ 20 course 8;
* Read in two columns of data;
input col1 $ col2 $
if input(col1, ??best.) = . then do;
* If COL1 cannot be converted to a number, assume it is a name;
profname = col1;
course = input(col2, ??best.);
end; else do;
* Otherwise assume COL2 is the name;
profname = col2;
course = input(col1, ??best.);
end;
cards;
LEE 22
15 PARK
;
run;
Модификаторы ??
в функции INPUT()
подавляют обычные предупреждения, когда значение не может быть обработано.