Hello everyone:
I'm preparing a script so execute several tasks in parallel on one server. My first step is to execute the following code:
signon mySess sascmd="!sascmd";
rsubmit mySess;
data test;
x = 1;
run;
endrsubmit;
signoff mySess;
When I do, I get the following log (everythin is OK).
83 signon mySess sascmd="!sascmd"; NOTE: Remote signon to MYSESS commencing (SAS Release V.03.05M0P111119). NOTE: Copyright (c) 2016 by SAS Institute Inc., Cary, NC, USA. NOTE: SAS (r) Proprietary Software V.03.05 (TS5M0 MBCS3170) Licensed to EGP- SAS X ADVANCED ANALYTICS / ESP ON VIYA, Site 70237841. NOTE: This session is executing on the Linux 3.10.0-1160.15.2.el7.x86_64 (LIN X64) platform. NOTE: Analytical products: SAS/STAT 15.1 SAS/ETS 15.1 SAS/OR 15.1 SAS/IML 15.1 NOTE: Additional host information: Linux LIN X64 3.10.0-1160.15.2.el7.x86_64 #1 SMP Thu Jan 21 16:15:07 EST 2021 x86_64 Red Hat Enterprise Linux Server release 7.9 (Maipo) NOTE: SAS initialization used: real time 0.04 seconds cpu time 0.04 seconds NOTE: AUTOEXEC processing beginning; file is /opt/sas/viya/config/etc/compsrv/default/autoexec.sas. NOTE: DATA statement ha utilizado (Tiempo de proceso total): real time 0.00 seconds cpu time 0.00 seconds NOTE: AUTOEXEC processing completed. NOTE: Remote signon to MYSESS complete. 84 rsubmit mySess; NOTE: Remote submit to MYSESS commencing. 2 data test; 3 x = 1; 4 run; NOTE: The data set WORK.TEST has 1 observations and 1 variables. NOTE: DATA statement ha utilizado (Tiempo de proceso total): real time 0.00 seconds cpu time 0.01 seconds NOTE: Remote submit to MYSESS complete. 85 signoff mySess; NOTE: Remote signoff from MYSESS commencing. NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414 NOTE: The SAS System used: real time 0.05 seconds cpu time 0.05 seconds NOTE: Remote signoff from MYSESS complete. 86 87 %studio_hide_wrapper; 98 99
Now I add a libname statement in order to access to tables in it (this lib exists and I use it in other scritps):
signon mySess sascmd="!sascmd";
rsubmit mySess;
libname emibal cas caslib=BAL_EMISIONES;
data test;
x = 1;
run;
endrsubmit;
signoff mySess;
and I get the following message in the log (I omit the first part because it's the same):
84 rsubmit mySess;
NOTE: Remote submit to MYSESS commencing.
1 libname emibal cas caslib=BAL_EMISIONES;
ERROR: The request to start or connect to a session failed. Specify a UUID to connect to an existing session or specify a session
name, port and host name to start a session.
ERROR: Error in the LIBNAME statement.
2 data test;
3 x = 1;
4 run;
NOTE: The data set WORK.TEST has 1 observations and 1 variables.
NOTE: DATA statement ha utilizado (Tiempo de proceso total):
real time 0.00 seconds
cpu time 0.00 seconds
NOTE: Remote submit to MYSESS complete.
85 signoff mySess;
NOTE: Remote signoff from MYSESS commencing.
NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414
NOTE: The SAS System used:
real time 0.13 seconds
cpu time 0.07 seconds
NOTE: Remote signoff from MYSESS complete.
86
87 %studio_hide_wrapper;
98
99
I am not still accessing any data in that lib, but I already get an error. Do you know why this might be happening?
Thanks.
I eventually managed to solve the problem myself by opening a new cas session in every rsubmit. I attach some code as an example.
signon mySess1 sascmd="!sascmd" signonwait=no;
signon mySess2 sascmd="!sascmd" signonwait=no;
rsubmit mySess1 wait=no;
cas Sess1 host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask1;
data emibal.multitask1;
x = 1;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask1" casout="multitask1";
run;
endrsubmit;
rsubmit mySess2 wait=no;
cas Sess2 host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask2;
data emibal.multitask2;
x = 1;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask2" casout="multitask2";
run;
endrsubmit;
waitfor _all_ mySess1 mySess2;
signon mySess3 sascmd="!sascmd" signonwait=no;
rsubmit mySess3 wait=no;
cas General host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask3;
data emibal.multitask3;
set emibal.multitask1 emibal.multitask2;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask3" casout="multitask3";
run;
endrsubmit;
signoff _all_;
Try adding the following before the libname statement:
cas mySess sessopts=(caslib=BAL_EMISONES);
If this does not work, reach out to technical support.
Thanks JOL for your message. Unfortunatelly it didn't work. Now I get the same message for both lines:
NOTE: Remote signon to MYSESS complete.
84 rsubmit mySess;
NOTE: Remote submit to MYSESS commencing.
1 cas mySess sessopts=(caslib=BAL_EMISIONES);
ERROR: The request to start or connect to a session failed. Specify a UUID to connect to an existing session or specify a session
name, port and host name to start a session.
2 libname emibal cas caslib=BAL_EMISIONES;
ERROR: The request to start or connect to a session failed. Specify a UUID to connect to an existing session or specify a session
name, port and host name to start a session.
ERROR: Error in the LIBNAME statement.
I'm reaching out for the technical service.
I eventually managed to solve the problem myself by opening a new cas session in every rsubmit. I attach some code as an example.
signon mySess1 sascmd="!sascmd" signonwait=no;
signon mySess2 sascmd="!sascmd" signonwait=no;
rsubmit mySess1 wait=no;
cas Sess1 host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask1;
data emibal.multitask1;
x = 1;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask1" casout="multitask1";
run;
endrsubmit;
rsubmit mySess2 wait=no;
cas Sess2 host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask2;
data emibal.multitask2;
x = 1;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask2" casout="multitask2";
run;
endrsubmit;
waitfor _all_ mySess1 mySess2;
signon mySess3 sascmd="!sascmd" signonwait=no;
rsubmit mySess3 wait=no;
cas General host='myserver' port=myport;
libname emibal cas caslib=BAL_EMISIONES;
proc delete data=emibal.multitask3;
data emibal.multitask3;
set emibal.multitask1 emibal.multitask2;
run;
proc casutil incaslib="bal_emisiones" outcaslib="bal_emisiones";
promote casdata="multitask3" casout="multitask3";
run;
endrsubmit;
signoff _all_;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.