A z/Server user server started as a CEA-launched TSO user address space CEAPROC is started by the z/Server scheduler address space. It behaves like a foreground TSO address space running with the TSO user ID of the client user who requested the start of the user server. Terminal input and screen output is read from and written to the associated USS message queue.
Customize the sample hlq.ZSERVER.JCL(CEAPROC) and copy it to the PROCLIB concatenation and name as ceaproc.
Verify and customize the high level qualifier defined for TAURHLQ, and also TCPDATA to make sure it specifies the correct TCPIP configuration data set. Similar to a logon procedure, add all required libraries for things such as panels, messages, and REXX execs that are necessary to run the user's required ISPF applications.
The initial REXX procedure CEALOGON must be located in the z/Server REXX data set.
//CEAPROC PROC //CEAPROC EXEC PGM=IKJEFT01,DYNAMNBR=175, // PARM='%CEALOGON',TIME=120 //TAURHLQ SET TAURHLQ=hlq.ZSERVER //TCPDATA SET TCPDATA=TCPIP.TCPDATA //******************************************************************** //* Z/SERVER //********************************************************************* //STEPLIB DD DISP=SHR,DSN=&TAURHLQ..LOADLIB //ZSRVAUTH DD DISP=SHR,DSN=&TAURHLQ..AUTHLIB //*IPCONFIG DD DISP=SHR,DSN=&TAURHLQ..CONFIG(CEAUSER) //SYSTCPD DD DISP=SHR,DSN=&TCPDATA //CEEREX30 DD SYSOUT=* //SYSPRINT DD SYSOUT=* //CEATSPRT DD SYSOUT=* //ZCOTSPRT DD TERM=TS //ZCOTSIN DD TERM=TS //READER DD SYSOUT=(*,INTRDR) //MAINTASK DD SYSOUT=* //T0000001 DD SYSOUT=* //CMDTASK DD SYSOUT=* //SRVTASK DD SYSOUT=* //CEATASK DD SYSOUT=* //CEAISPF DD SYSOUT=* //LISTENER DD SYSOUT=* //********************************************************************* //* ADD YOUR OWN LOGON PROCEDURE HERE //* BUT KEEP ALL &TAURHLQ DATA SETS IN THE RIGHT PLACES //********************************************************************* //SYSUADS DD DISP=SHR,DSN=SYS1.UADS //SYSLBC DD DISP=SHR,DSN=SYS1.BRODCAST //SYSPROC DD DISP=SHR,DSN=ISP.SISPCLIB // DD DISP=SHR,DSN=SYS1.SBLSCLI0 //SYSEXEC DD DISP=SHR,DSN=&TAURHLQ..EXEC // DD DISP=SHR,DSN=&TAURHLQ..REXX // DD DISP=SHR,DSN=ISP.SISPEXEC //SYSHELP DD DISP=SHR,DSN=SYS1.HELP // DD DISP=SHR,DSN=ISP.SISPHELP //ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU // DD DISP=SHR,DSN=SYS1.SBLSMSG0 // DD DISP=SHR,DSN=ISF.SISFMLIB // DD DISP=SHR,DSN=&TAURHLQ..MSGS //ISPEXEC DD DISP=SHR,DSN=ISP.SISPEXEC //ISPLLIB DD DISP=SHR,DSN=&TAURHLQ..LOADLIB //ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU // DD DISP=SHR,DSN=&TAURHLQ..PANELS // DD DISP=SHR,DSN=SYS1.SBLSPNL0 // DD DISP=SHR,DSN=ISF.SISFPLIB //ISPSLIB DD DISP=SHR,DSN=&TAURHLQ..SKELS // DD DISP=SHR,DSN=ISP.SISPSLIB // DD DISP=SHR,DSN=ISP.SISPSENU // DD DISP=SHR,DSN=ISF.SISFSLIB // DD DISP=SHR,DSN=SYS1.SBLSKEL0 //ISPTLIB DD DISP=SHR,DSN=ISP.SISPTENU // DD DISP=SHR,DSN=SYS1.SBLSTBL0 // DD DISP=SHR,DSN=ISF.SISFTLIB //ISPCTL1 DD DISP=NEW,UNIT=SYSALLDA,SPACE=(CYL,(1,1)), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //ISPCTL2 DD DISP=NEW,UNIT=SYSALLDA,SPACE=(CYL,(1,1)), // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) //ISPLST1 DD DISP=NEW,UNIT=SYSALLDA,SPACE=(CYL,(1,1)), // DCB=(LRECL=121,BLKSIZE=1210,RECFM=FBA) //ISPLST2 DD DISP=NEW,UNIT=SYSALLDA,SPACE=(CYL,(1,1)), // DCB=(LRECL=121,BLKSIZE=1210,RECFM=FBA) //SDSFMENU DD DSN=ISF.SISFPLIB,DISP=SHR // PEND
Parameter P1 have been added to support parameters required for startup to the CEA user server:
The SYSTCPD DD statement has been added to provide information about the IP stack on your host to the started task.
The name of the job step in the JCL procedure must match the same value you entered as the CEA_LOGONPROC in the configuration of either the Unified scheduler or the CEA scheduler. Failure to do so results in the User Server starting, but the client is unable to connect to it.
For example, if you have CEA_LOGONPROC="MYPROC" in your configuration then it would look like:
//MYPROC PROC //MYPROC EXEC PGM=IKJEFT01,DYNAMNBR=175, // PARM='%CEALOGON,TIME=120 //TAURHLQ SET TAURHLQ=hlq.ZSERVER //TCPDATA SET TCPDATA=TCPIP.TCPDATA ...