This might be asking to much, but the last step asks me to use a format width in the put statement for arguments without a format. So I need to produce the following output with the macro: data_null_ ; set books.list; file "list4.data"; put @1 bookid 4. author 5-34 @35 isbn isbn18. @43 yearpub comma6.; run; with the a macro call of : %writeoutD (books.list,list4.data,bookid author isbn yearpub,4. 30 isbn18. comma6.); I tried changing it to the following: %local newput i newpointer; %do i=1 %to 4; %if &i=1 %then %let newpointer=1; %else %let newpointer=%eval(&newpointer+%sysfunc(scan(&formatlist,%eval(&i-1),%str( $),ap))); %let newput=&newput @&newpointer %sysfunc(scan(&variables,&i,%str( ))) %sysfunc(scan(&formatlist,&i,%str( ))); %if %sysfunc(findc("scan(&formatlist,&i)",'.'))=0 %then %let newput=&newput %sysfunc(scan(&variables,&i,%str( ))) %eval(&newpointer)-%eval(&newpointer+%sysfunc(scan(&formatlist,&i,%str( $),ap))+1); %end; but it was a no-go, not sure if its in the wrong spot or something...any ideas?
... View more