And if the occurence of the ****** lines is irregular, here a slight variation of @MichaelLarsen's code:
data ii;
/* Input the record into memory (_INFILE_) but do not release it */
input @;
if not index(_infile_,'****');
/* Remove the $ sign from the record */
_infile_ = translate(_infile_,' ','$');
/* Read the record again */
input ID $ BirthDay :date9. Salary comma10.0;
/* Create derived variables */
Dept = substr(ID,1,1);
Year = year(BirthDay);
format BirthDay date9. Salary comma10.0 ;
datalines;
A123 4Mar1989 8,6,00
***************
A037 23Jun1957 21,450
**************
M015 19Sep1977$17,500
***********
;
run;
... View more