Обычно, есть некоторые признаки того, когда E заканчивается.Какой-то персонаж EOL (возможно, тот, которого вы не видите).Если это так, то вы можете использовать это как разделитель.
Если нет способа определить, когда заканчивается E, тогда вам нужно будет выяснить это из бизнес-логики (какое значение существует в E и в A).Если E всего 2, то вы можете обработать поле с помощью переменной _INFILE_
.Примерно так может работать, если общая длина строки <= 32767: </p>
data want;
infile 'h:\test.txt' dlm='|'; *infile with dlm statement as usual;
input @@; *open input pointer;
call scan(_infile_,5*_N_,pos,len,'|',); *find where the 5Nth field is;
_infile_ = cat(substr(_infile_,1,pos+1),'|',substr(_infile_,pos+2));
*Insert a | there;
input a: $30.
b: 11.
c: $5.
d: $5.
e: 2.
@@
; *note the @@ holding the input pointer;
run;