awkward for a data step, but not impossible because the challenge - an unquoted column which might hold an embedded delimiter - occurs in one fixed (data) column - in this case it is the first column.
A presentation entitled "more _infile_ magic"
http://www2.sas.com/proceedings/sugi28/086-28.pdf draws attention to the idea of updating the _infile_ buffer before using input statements.
Here we might want to quote the first data column. We can define the end of that by the beginning of the second last column. Although the SCAN(_infile_,-2) function does provide the text of the second last column, more help comes from the CALL routine:[pre]call scan( _infile_, -2, POS, LEN ) ; [/pre]provides the all important POS =position of the RATE column.
However, rather than shift the _infile_ buffer and insert quotes, we can use another piece of the amazingly diverse parsing of the INPUT statement, - $varying informat
http://support.sas.com/documentation/cdl/en/lrdict/63026/HTML/default/viewer.htm#a000193602.htm after querying the buffer to discover the length of that first data column.
So assuming the physical file name is provided in parameter &Minfile, this solves the problem.[pre]%let minfile = C:\CWA\bank.txt ;
filename minfile "&minfile" lrecl=1000 ;
data got_it( keep= institution Rate Years ) ;
infile Minfile ;
input@ ; * load infile buffer *;
* now get position of second-last column *;
call scan( _infile_, -2, POS, LEN, ' ' ) ;
* that defines the length of this Institution *;
inst_len= pos-1 ;
* so use $varying to read that ill-defined column *;
input institution $varying50. inst_len Rate Years ;
run ;[/pre] of course this solution depends on the Rate and Years data being present.