/******************************************************************************
 * Programme : Le script indispensable pour synchroniser vos données entre CAS et le serveur SAS
 * Reference : GESTIOEFCD
 * Source    : https://www.wearecas.eu/en/sampleCode/GESTIOEFCD
 ******************************************************************************/

/* --- BLOC 1 --- */
OPTIONS NETENCRYPTALGORITHM=SSL;

%put ********** CLIENT ********;
%put My local user ID is:  &sysuserid;
%put The local host name is: &syshostname;
%put The local process name is: &sysprocessname;
%put The local process ID is: &sysprocessid;
%put The local process mode is: &sysprocessmode;

%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
%put &SASCLOUDNATIVE_state;

%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
%put &TCPNOIPADDR_state;

%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
%put &ENVIRONMENT;

/* --- BLOC 2 --- */
/* CAS session */
%let _sessionName=&sysuserid;
%let _sessionType=studio;
%let _namespace=viya;
%let _casserver=default;

/*    Start a CAS session on the cas-shared-&_casserver CAS server */
cas &_sessionName._&_sessionType host="controller.sas-cas-server-&_casserver..&_namespace..svc.cluster.local" port=5570 sessopts=(metrics=true);

/* --- BLOC 3 --- */
/* Connect session   */
/*   INTERNAL ClusterIP   */
 %let host=sas-connect-spawner 17551;
/*   EXTERNAL NodePort   */
* %let host=sasserver;

SIGNON host user='sas' pass='sas';
%syslput _sessionTypeRemote=&_sessionType;

/* --- BLOC 4 --- */
rsubmit;
   %put ********** SERVER ********;
   %put My remote user ID is:  &sysuserid;
   %put The remote host name is: &syshostname;
   %put The remote process name is: &sysprocessname;
   %put The remote process ID is: &sysprocessid;
   %put The remote process mode is: &sysprocessmode;

   %let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
   %put &SASCLOUDNATIVE_state;
   
   %let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
   %put &TCPNOIPADDR_state;
   
   %let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
   %put &ENVIRONMENT;
endrsubmit;

/* --- BLOC 5 --- */
data local&_sessionType;
   do i=1 to 100000000;
      j=ranuni(1234);
      output;
   end;
run;

/* --- BLOC 6 --- */
rsubmit;
   %put &_sessionTypeRemote;

   data remote&_sessionTypeRemote;
      do i=1 to 100000000;
         j=ranuni(1234);
         output;
      end;
   run;

   %sysrput rsaswork=%sysfunc(pathname(work));
endrsubmit;

/* --- BLOC 7 --- */
%put "&rsaswork";

libname rsaswork "&rsaswork" server=host;

