Here is my try...What you can do is like fixing the how many lines are there in your flat file which consists of VAR1 to VAR7 information and based on that create as many variables as required while reading flat file And then finally manipulate the data once it is read into the SAS... The following code that i have prepared which might be helpful... data mydata; infile "filelocation\test.txt" TRUNCOVER; input scenario $16./ year $10./ period $11./ view $9. / entity $13./ value $16./ pdr $7. / var1 $50. / var2 $50. / var3 $50.; run; proc contents data = mydata noprint out = list(keep = name); run; proc sql noprint; select count(*) into :max_val from list where name ? "var"; quit; %macro trial; data mydata1(where = (var5 NE " ")); set mydata; scenario = scan(scenario,2,"="); year = scan(year,2,"="); period = scan(period,2,"="); view = scan(view,2,"="); entity = scan(entity,2,"="); value = scan(value,2,"="); pdr = scan(pdr,2,"="); var1_new = scan(var1,1,";"); var2_new = scan(var1,2,";"); var3 = scan(var1,3,";"); var4 = scan(var1,4,";"); var5 = scan(var1,5,";"); var6 = scan(var1,6,";"); var7 = scan(var1,7,";"); output; do until(&max_val.); scenario = scenario; year = year; period = period; view = view; entity = entity; value = value; pdr = pdr; var1_new = var1_new ; var2_new = var2_new; var3 = var3; var4 = var4; %do i = 2 %to %eval(&max_val.-1); var5 = scan(var&i.,5,";"); output; %end; var6 = var6; var7 = var7; output; end; run; %mend; options mprint; %trial -Urvish
... View more