的問題似乎是,當你運行syncronous過程,他們是相互完全斷開。即使你只是等待快速task2
完成後再繼續:
rsubmit task2 wait=no;
data _null_;
put "Bye World!";
run;
endrsubmit;
SAS需要task1
完成以及爲最終rget
:
rsubmit task1 wait=no;
data _null_;
do while(1);
put "Hello World!";
end;
run;
endrsubmit;
我認爲正在發生的事情是,SAS task2
滿足waitfor _any_
條件並能在task2
之後進行處理。但是,rget
需要每個(完成)進程的最終日誌文件,然後才能將它們合併到客戶端會話日誌窗口中。
看一看的SAS文檔here的細節部分:
編輯:
周圍多一點玩,你可以使用一個統一的LIBNAME測試在它們之間的連接(每個進程都有其獨特的工作LIBNAME所以它們不能相互衝突):
分配LIBNAME,並根據需要在客戶機上選擇:
libname testlib 'C:/test' ;
option cpucount=4 sascmd="!sascmd" autosignon;
定義兩個進程同時運行:
* Process 1 ;
rsubmit task1 wait=no;
libname testlib 'C:/test' ;
data testlib.test1 ;
do i=1 to 1000 ;
do j=1 to 1000;
output ;
end ;
end ;
run ;
endrsubmit;
* Process 2 ;
rsubmit task2 wait=no;
libname testlib 'C:/test' ;
data testlib.test2 ;
do i=1 to 1000 ;
output ;
end ;
run ;
endrsubmit;
然後,您可以有這樣下面的代碼將同時process1
運行仍在運行,但它將能夠訪問的process2
輸出數據集:
* Wait for either of the above processes and the process remaining code;
waitfor _any_;
proc sql noprint ;
select sum(i)
into :result
from testlib.test2
;quit ;
%put *** SUM OF TEST2 IS: &result *** ;
你實際上在日誌輸出中得到了什麼? – user667489
它只是永遠持續下去。我認爲本迪是對的。當我試圖製作數據集而不是放入日誌時,我可以看到數據集是異步創建的。看來RGET需要等待。 – Matt