OK let me explain my problem what i want to do is i have file which consist of record for example :-
011234567412312mancbhansmamFTWP
012314263219665haiaananaajaFTWM
011236478748969jakakakancndFTSI
021234567412312sasasasasasasasa
021234567412312sasasasasasasasa
021236478748969asasasasasasasaa
now what i want to do is , i want to take only record starting with 01 and after that i want to sort it last 4 bytes of these record
after sorting i want to merge my data back with 01 and 02 records in below way
011236478748969jakakakancndFTSI
021236478748969asasasasasasasaa
012314263219665haiaananaajaFTWM
011234567412312mancbhansmamFTWP
021234567412312sasasasasasasasa
021234567412312sasasasasasasasa
i have used below code :-
data abc;
input @001 key $2.
@003 app_id $13.
@016 id $12.
@028 ftype $4.;
datalines;
011234567412312mancbhansmamFTWP
012314263219665haiaananaajaFTWM
011236478748969jakakakancndFTSI
;
run;
proc sort data=abc;
by ftype app_id;
proc print data=abc;
run;
data _null_;
call symputx("nob",nobs);
set abc nobs=nobs;
call symputx(cats("a",_N_),app_id);
run;
%put &nob;
data abc1;
input @001 key $2.
@003 app_id $13.
@016 id $12.
@028 ftype $4.;
datalines;
011234567412312mancbhansmamFTWP
012314263219665haiaananaajaFTWM
011236478748969jakakakancndFTSI
021234567412312sasasasasasasasa
021234567412312sasasasasasasasa
021236478748969asasasasasasasaa
;
run;
%macro abc12;
data abc2;
%do i=1 %to &nob;
b=&&a&i;
%put &&a&i;
set abc1;
putlog "app_id" app_id;
if b eq app_id then do;
putlog "check" app_id;
output abc2;
end;
%end;
%mend abc12;
%abc12;
but I'm getting this as output :-
011234567412312mancbhansmamFTWP
012314263219665haiaananaajaFTWM
011236478748969jakakakancndFTSI
021234567412312sasasasasasasasa
021234567412312sasasasasasasasa
021236478748969asasasasasasasaa
I want explanation for this behavior also Thanks in advance
... View more