Я запускаю 3 параллельных сеанса в SAS и должен убедиться, что все они завершены, прежде чем соединять их вместе.Я использую команду WAITFOR, чтобы сделать это, но поведение не такое, как ожидалось.
Я использую базовый SAS 9.3
Это код, с помощью которого я подключаюсь к сеансам:
%macro open_sessions(n);
%let t=2;
%let j = %eval(&n. + 1);
%do %while (&t. <=&j.);
%let r&t.=%str(xxx) xxx;
options remote=r&t. comamid=tcp debug='connect=xxx';
options metaserver="xxx"
metaport=xxx
metauser="xxx"
metapass="&PSW."
metaprotocol="bridge";
signon authdomain="xxx" wait=no Cmacvar=d&t.;
libname work_r&t. server=r&t. slibref=work;
options nolabel;
%let t = %eval(&t. + 1);
RDISPLAY r&t;
%end;
%mend open_sessions;
Затем я выполняю несколько
rsubmit r2;
...
endrsubmit;
rsubmit r3;
...
endrsubmit;
rsubmit r4;
...
endrsubmit;
И, наконец:
WAITFOR _ALL_ r2 r3 r4; (after there is other code)
В этот момент 2 разных вещи происходят в разных прогонах либо 1. SAS закрывается, т.е. все окна закрываются, включая сам SAS, либо 2. SAS бесконечно ждет, как будтонекоторые сеансы все еще выполнялись, но в действительности все сеансы завершились (т.е. все переменные cmacvar = 0, и все выходные данные получены).Если я пытаюсь передать другой код для сеансов, я получаю следующее сообщение: «Примечание: оператор отображения в настоящий момент выполняется. Все последующие представленные операторы не начнут выполняться до его завершения»
Если я выполню код отдельнокоторый идет перед waitfor, а затем код, который идет после waitfor, все идет хорошо.
Я уже попробовал 2 решения, которые предлагает sas.com, когда вы получаете «Примечание: оператор отображения в настоящее время выполняется ..."сообщение, но это не сработало.2 решения: 1. Отключение «Вывести на передний план при отображении новых данных» для окна вывода (которое уже было не помечено), 2. Переименовать локальные файлы в profile.s.s7bcat и profile2.sas7bcat
Iожидайте, что код будет работать ровно от начала до конца, ожидая, когда есть оператор waitfor, но затем возобновляя работу, когда все сеансы завершаются с их задачами
Как я могу это исправить?