2016-01-21 56 views
1

可變部具有在數據步驟A M & S的值SAS - 視符號引用不解決

set ttt;   
    DepartmentComp=Compress(DepartmentComp);*For use in making directories;  
    CALL SYMPUT('ggg',trim((division))); 
    CALL SYMPUT('fff',trim((Department))) 

日誌顯示 SYMBOLGEN:宏變量FFF解析到M &小號 警告:表觀符號參考S未解決。

我怎樣才能擺脫警告,因爲我懷疑它會影響程序?

回答

1

使用%superq()來屏蔽'&'並防止'& S'的分辨率。這裏有一個例子給你:

60   data test; 
61   comp = "%superq(fff)"; 
62   putlog "NOTE: comp=%superq(fff)"; 
63   run; 

NOTE: comp=M&S 
NOTE: The data set WORK.TEST has 1 observations and 1 variables. 
0

如果您使用的這些變量在隨後的datastep你可以使用symget避免過早嘗試在分辨率下(如下):

data _null_; 
    division='%myDiv'; 
    department='Food&Drink'; 
    call symputx('ggg',division); 
    call symputx('fff',department); 
run; 

data someds; 
    division=symget('ggg'); 
    department=symget('fff'); 
    putlog division= department=; 
run; 

注意要點:

  • 除了引發錯誤條件(syscc = 4)之外,很難說這個警告是否會影響你的程序(如果你創建了一個宏變量& s它會)。無論如何,如果可能的話,最好避免警告。
  • 您可以使用symputx代替symput,它將自動去除前導/尾隨空白
  • floydn提出的%superq方法是直接用於宏邏輯的好方法。
+0

謝謝,但我怎麼能在標籤語句中使用宏&fff例如:label division =&fff? – user3387046