filename pl94 PIPE 'zcat /usr/datatest/public/us/government/stf/2000/PL94-171/ca*.dat.Z'; data _null_; infile pl94 lrecl=2992; input @9 s $char3. @; if s eq ' 50' then keep=1; else keep=0; if keep eq 1 then do; input state $ 30-31 county $ 32-34 @401 (p001001-p001009) (9.) @491 (p0010011-p0010025) (9.) @635 (p0010027-p0010046) (9.) @824 (p0010048-p0010062) (9.) @968 (p0010064-p0010069) (9.) @1031 p0010071 9.; array p(57) p0010011-p0010025 p0010027-p0010046 p0010048-p0010062 p0010064-p0010069 p0010071; array px(57) px10011-px10025 px10027-px10046 px10048-px10062 px10064-px10069 px10071; array pck(57) pck1-pck57; array tempvar(57) t1-t57; array lpxtxt(3) $ lpxtxt1-lpxtxt3; array lpxval(3) lpxval1-lpxval3; array label(57) $ label1-label57 ('p0010011','p0010012','p0010013','p0010014','p0010015','p0010016', 'p0010017','p0010018','p0010019','p0010020','p0010021','p0010022', 'p0010023','p0010024','p0010025','p0010027','p0010028','p0010029', 'p0010030','p0010031','p0010032','p0010033','p0010034','p0010035', 'p0010036','p0010037','p0010038','p0010039','p0010040','p0010041', 'p0010042','p0010043','p0010044','p0010045','p0010046','p0010048', 'p0010049','p0010050','p0010051','p0010052','p0010053','p0010054', 'p0010055','p0010056','p0010057','p0010058','p0010059','p0010060', 'p0010061','p0010062','p0010064','p0010065','p0010066','p0010067', 'p0010068','p0010069','p0010071'); found=0; do i = 1 to 57; px(i) = p(i)/p001001; if px(i) lt .02 then px(i) = .; end; do i=1 to 57; if ordinal(57,of px(*))=px(i) and tempvar(i) ne 1 and found=0 and px(i) ne . then do; tempvar(i)=1; lpxval(1)=px(i); lpxtxt(1)=label(i); found=found+1; i1=i; end; end; do i=1 to 57; if ordinal(56,of px(*))=px(i) and tempvar(i) ne 2 and found=1 and px(i) ne . then do; tempvar(i)=2; lpxval(2)=px(i); lpxtxt(2)=label(i); found=found+1; i2=i; end; end; do i=1 to 57; if ordinal(55,of px(*))=px(i) and tempvar(i) ne 3 and found=2 and px(i) ne . then do; tempvar(i)=3; lpxval(3)=px(i); lpxtxt(3)=label(i); found=found+1; i3=i; end; end; file mixed; put state county lpxtxt1 lpxval1 lpxtxt2 lpxval2 lpxtxt3 lpxval3; end; else if keep eq 0 then input @9 s $char3.; run;