options linesize=79; filename pst '/usr/finance/compustat/pst_ann.bin'; filename fcotc '/usr/finance/compustat/fcotc_ann.bin'; filename mrged '/usr/finance/compustat/mrged_ann_res.bin'; filename pstb '/usr/finance/compustat/pst_ann_back.bin'; filename fcotcb '/usr/finance/compustat/fcotc_ann_back.bin'; filename mrgedb '/usr/finance/compustat/mrged_ann_res_back.bin'; filename pstwb '/usr/finance/compustat/pst_ann_wback.bin'; filename fcotcwb '/usr/finance/compustat/fcotc_ann_wback.bin'; filename mrgedwb '/usr/finance/compustat/mrged_ann_res_wback.bin'; *libname sasdata '/usr/finance/compustat/sasfiles'; /* All of the files have the same recfm and lrecl so just change the infile to the one you want*/ data pstann; infile pst recfm=f lrecl=31339; * note in sas array{i,j} is referenced by row. i.e. i = 1, j cycles, then i=2, j cycles...etc. This is backwards from what fortran does, so I will dimension the arrays backwards from the write statements in fortran so I can read in easily; array fyri{20} fyri1-fyri20; array yearai{20} yearai1-yearai20; array ucodei{20} ucodei1-ucodei20; array sourcei{20} sourcei1-sourcei20; array yeari4{20} yeari401-yeari420; array aftnti{20,70} $2. aftnti1-aftnti1400; array datai{20,350} datai1-datai7000; /* this reads the binary file*/ input dnum ib4. cnum $6. (cic file zlist) (ib4.) (coname iname) ($28.) smbl $8. (fyri1-fyri20 yearai1-yearai20 xrel stk dup ucodei1-ucodei20 state county finc sourcei1-sourcei20) (ib4.) cpspin $1. csspin $2. csspii $1. (sdbt sdbtim subdbt) ($2.) cpaper $3. ein $10. (aftnti1-aftnti1400) ($2.) (datai1-datai7000) (ieee4.) (yeari401-yeari420) (ib4.) naics $6.; * variables for one per year; array aftnt{70} $2. aftnt1-aftnt70; array data{350} data1-data350; drop fyri1-fyri20; drop yearai1-yearai20; drop ucodei1-ucodei20; drop sourcei1-sourcei20; drop yeari401-yeari420; drop aftnti1-aftnti1400; drop datai1-datai7000; drop i j; do i=1 to 20; fyr=fyri{i}; yeara=yearai{i}; ucode=ucodei{i}; source=sourcei{i}; year4=yeari4{i}; do j=1 to 70; aftnt{j}=aftnti{i,j}; end; do j=1 to 350; data(j)=datai{i,j}; end; output; end; proc print data=pstann (obs=2);