以下是我用来创建格式的代码.....
libname myfmt "&FBRMrootPath./Formats";
%macro Create_Macro(DSN,Label,Start,fmtname,type);
options mprint mlogic symbolgen;
%If &type='n' %then %do;
proc sort data=&DSN out=Out; by &Label;run;
Data ctrl;
set Out(rename=(&Label=label &Start=start )) end=last;
retain fmtname &fmtname type &type;
%If last %then %do;
hlo='O';
label='*ERROR';
output;
%End;
%End;
%Else %do;
proc sort data=&DSN out=Out; by &Start;run;
Data ctrl;
set Out(rename=(&Start=label &Label=start )) end=last;
retain fmtname &fmtname type &type;
output;
%If last %then %do;
hlo='O';
label='*ERROR';
output;
%End;
%End;
proc format library=myfmt cntlin=ctrl;
%Mend Create_Macro;
%Create_Macro(SSIN.prd,prd_nm,prd_id,'prd_test','n');
/*%Create_Macro(SSIN.prd,prd_id,prd_nm,'prd_testc','c');*/
我遇到了以下错误......代码看起来不错,但我不知道为什么我会收到错误... 任何帮助???
答案 0 :(得分:2)
不完全确定您在做什么,但错误消息可能是因为您将macro
代码与data step
代码混合在一起。尝试改变这个:
if last then do;
hlo='O';
label='*ERROR';
output;
end;
换句话说,摆脱&符号(表示宏变量引用)。
并且还要确保在每个数据步骤结束时和run;
调用之后添加PROC FORMAT
语句。