2012-11-16 104 views
2

是否有任何用於識別正在執行的SAS代碼/程序的一般性建議?獲取正在運行的SAS程序的名稱

我的代碼將在通用宏內執行,因此可以在存儲過程,另一個宏,客戶端SAS程序甚至通過使用IOM的中間層生成的SAS代碼中調用。我希望最高級別的標識符可能..(如果同一個程序再次運行,將返回相同的結果 - 所以進程ID不會有幫助)。

環境不是窗戶,所以這個代碼是沒有幫助的:

%put %sysget(SAS_EXECFILENAME); 

此外,宏不一定是被稱爲第一方案(如果它甚至是一個程序) - 所以這也不是代碼有用:

proc sql noprint; 
select xpath into :progname 
from sashelp.vextfl where upcase(xpath) like '%.SAS'; 
%put &progname; 
+0

你打算如何處理這些信息? – Joe

+0

該信息將用於命名mfile(已解析)代碼以存儲在單獨的位置。這不是一個大問題,因爲我可以使用時間戳,如果這個信息可用,它會很好! –

+0

這個問題已經存在了一段時間,我相信..可能是沒有答案/不可能確定,因爲正在執行的代碼從未保存 - 所以並不真正「存在」! –

回答

1

這聽起來像你可能需要考慮如何使用這一點多一點。如果同一用戶有兩個會話打開運行相同的代碼會怎麼樣?應該使用相同的文件名嗎?

你可以簡單地將它作爲你的代碼片段的一個要求:在代碼運行之前,必須指定某個變量嗎?否則返回錯誤/中止進一步處理?

要回答你原來的問題,但我不認爲這是可能的。

+0

我同意。需要一個參數給將用於存儲文件的宏......或者像提到的問題一樣,時間戳 –

+0

已被接受。我們無法控制哪些代碼調用宏,因此參數是不可能的。用戶ID /會話ID和時間戳的組合必須是前進的方向!謝謝。 –

相關問題