Вы можете использовать infile column=
в сочетании с модификатором input
hold input @
, чтобы определить, когда задержанный ввод прошел после запятой, предназначенной для указания пропущенного значения, которое следует интерпретировать как случай нуля units_purchased
. Автоматическая переменная _infile_
используется для проверки, когда оператор ввода позиционирует себя для следующего чтения, чтобы быть больше длины строки данных.
data want;
infile datalines dsd dlm=',' column=p;
attrib id length=$8 units_purchased length=8 ;
input id @; * held input record;
* loop over held input record;
do while (p <= length(_infile_)+1); * +1 for dealing with trailing comma;
input units_purchased @; * continue to hold the record;
if missing(units_purchased) then units_purchased = 0;
output;
end;
datalines;
C005,3,15,,39
D2356,4,11,,5
A323,3,10,15,20
F123,1,
run;
Иногда более простой в использовании модификатор @@
не будет использоваться в этом случае, поскольку пропущенное значение следует считать допустимым вводом и, следовательно, его нельзя использовать для утверждения условия «больше нет данных».