2015-10-21 135 views
2

我能夠將宏變量解析爲我期待的名稱。但是proc數據集中的delete語句沒有被識別。如何使它工作?PROC DATASETS宏變量錯誤

PROC DATASETS LIB=WORK NODETAILS NOLIST; 
    DELETE &INPUT._mi &INPUT._lc ; 
RUN; 

MPRINT(GET_true_value): PROC DATASETS LIB=WORK NODETAILS NOLIST; 
NOTE: Line generated by the macro variable "INPUT". 
108   work.true_value_mi 
      __________________ 
      22 
      201 
MPRINT(GET_true_value): DELETE work.true_value_mi work.true_value_lc ; 
NOTE: Enter RUN; to continue or QUIT; to end the procedure. 
MPRINT(GET_true_value): RUN; 

ERROR 22-322: Expecting a name. 

ERROR 201-322: The option is not recognized and will be ignored. 

NOTE: Statements not processed because of errors noted above. 
109 
+0

PROC數據集需要添加退出運行,所以你還需要結束PROC。如果你已經運行過幾次,SAS可能會感到困惑。也可以嘗試刪除數據集名稱的庫部分。 – Reeza

+0

@Reeza下一個PROC DATASETS將定義一個步驟邊界,因此不應該是問題。吉姆的回答在這裏是正確的(即你評論中的第二句話)。 – Joe

+0

謝謝Joe和Reeza。我錯過了這一點。是的,刪除LIB部分後,問題就解決了。我的壞,錯過了愚蠢的事情。不幸的是還有一個問題需要解決。將發佈在一個單獨的問題:) –

回答

3

看起來問題是,寫入的delete語句包含庫名稱。這不是必需的(並引發錯誤),因爲在PROC DATASETS語句中指定了該庫。

您希望您的宏變量來解決這個:

PROC DATASETS LIB=WORK NODETAILS NOLIST; 
    DELETE true_value_mi ; 
RUN; 
+0

非常感謝JimL ..這有助於解決問題 –