Introduction
The communication between windows and z/OS is achieved using the telnet service. You will need to enable this service on your Windows server, it should already be available on your mainframe.
Please refer to the full documentation for Altair SLC Communicate but the general idea is that each user of your windows server who wishes to use this service will need a MVS telnet signon script like the example below. You will need to replace all entries of the form <…> with actual user or site specific information. For example <USER> would become gm in my case. <ENTER_WPSINSTALL>.CLIST would become the path to the CLIST in your actual installation, something like WPS.V410.B31754.CLIST or wherever your CLIST is. You would also need to change the WPSPFX argument.
This signon script actually starts the SLC on the mainframe and closes it down when the SAS program on the Windows server has finished. This is a demand driven service. There is no need to spawn processes on the mainframe to wait for communication from the DBA point of view.
Once an individual signon script has been created on your windows server you would now be in a position to start testing with a SAS language program. An example to simply print out the mainframe system options and license agreement from Windows server would be:
/*******************************************************************
Print out the HOSTNAME of the local client machine
*******************************************************************/
%PUT &SYSHOSTNAME;
filename rlink "<ENTER PATH TO MODIFIED SIGNON SCRIPT>/signon_mvs.txt";
/*******************************************************************
Define the host mainframe machine that will execute remote code
*******************************************************************/
%let host=<ENTER YOUR MAINFRAME HOST NAME>;
/*******************************************************************
Login into the remote server and launch remote SLC ready to receive
*******************************************************************/
signon host;
/*******************************************************************
SUBMIT the following code between the rsubmit/endrsubmit block to host
*******************************************************************/
rsubmit;
/*******************************************************************
Print out the HOSTNAME of the remote server machine
*******************************************************************/
%PUT &SYSHOSTNAME;
/*******************************************************************
Print out the Default System Options for the mainframe
*******************************************************************/
PROC OPTIONS; RUN;
/*******************************************************************
Print out the License features on the mainframe
*******************************************************************/
PROC SETINIT; RUN;
/*******************************************************************
Finished sending SAS language code to the mainframe in this block
*******************************************************************/
endrsubmit;
/*******************************************************************
SIGNOFF the host platform preventing further rsubmit's
*******************************************************************/
signoff;
/*******************************************************************
Tidy up - close the rlink filename
*******************************************************************/
filename rlink clear;
Copy of sample_signon_mvs.txt:
trace on;
echo on;
/**/
log "NOTE: Script file 'signon_mvs.scr' entered.";
if signoff then goto signoff;
/* Change this for your user id */
WAITFOR "ENTER USERID -", 15 seconds : fail;
type "<USER>" ENTER;
/* Change this for your password */
waitfor "ENTER CURRENT PASSWORD", 15 seconds : fail;
type "<PASSWORD>" ENTER;
/* this bit may not be needed but it is for me */
waitfor " ENTER ACCOUNT NUMBER", 15 seconds : fail;
type "WPS" ENTER;
waitfor "YOU MAY CHANGE IT", 15 seconds : fail;
type ENTER;
/* didn't need this bit
waitfor "YOU MAY CHANGE IT", 15 seconds : fail;
type ENTER;
*/
WAITFOR "READY", 15 seconds : fail;
log 'NOTE: Logged onto z/OS... Starting remote WPS now.';
/* Change WPS.CLIST to be correct for your SLC installation */
type "altlib activate application(clist) " lf;
waitfor 'level library', 20 seconds :nosas;
type "'<ENTER_WPSINSTALL>.CLIST'" lf;
WAITFOR "READY", 15 seconds : fail;
log 'NOTE: Setup altlib.';
type "TSOWPS OPTIONS('DMR WPSCOMPROTOCOL=WPS') WPSTRACE('TST.WPSTRACE') CEEDUMP('TST.CEEDUMP') CEERPT('TST.CEERPT') SYSPRINT('TST.SYSPRINT') SORTMSGS('TST.SORTMSGS') WPSPFX('''<ENTER_WPSINSTALL>''') " enter;
log 'NOTE: Invoking remote WPS session.';
waitfor "SESSION ESTABLISHED", 15 seconds : fail;
log 'NOTE: WPS/COMMUNICATE conversation established.';
stop;
signoff:
waitfor 'READY', 15 seconds : fail;
type 'logoff' ENTER;
waitfor "LOGGED OFF", 15 seconds : fail2;
log 'NOTE: WPS/COMMUNICATE conversation terminated.';
stop;
fail:
log "ERROR: Expected prompt not received";
type "logoff" enter;
fail2:
abort;