Figure 56 illustrates a sample calling sequence for a program that will access CICSPlex® SM workload management facilities. It is not intended to be used as a sample program and is, therefore, not complete in every detail.
*---------------------------------------------------------------------*
DFHEISTG , Define Workarea
WRK_WTRA DS CL(WTRA_LENGTH)
DS 0D
WRK_UOWCOMM DS 0C
WRK_UOW_RESP DS F
WRK_UOWCOMM_L EQU *-WRK_UOWCOMM
COPY EYURWTRA Include DSECT to map WTRA
SRVPGM DFHEIENT EIBREG=R11,DATAREG=R13,CODEREG=R12
*---------------------------------------------------------------------*
* Initialize the WTRA COMMAREA. *
*---------------------------------------------------------------------*
LA R8,WRK_WTRA --> WTRA
USING EYURWTRA,R8 *** USING WTRA ***
MVC WTRA_SLENGTH,=AL2(WTRA_LENGTH)
Set length of block.
MVI WTRA_ARROW,C'>' Set arrow.
MVC WTRA_NAME,=C'EYURWTRA' Set the name.
MVI WTRA_BLANK,C' ' Set blank delimit.
MVC WTRA_PGMNAME,=CL8'SRVPGM '
Set program name.
MVC WTRA_TERMID,=CL4'TRM1' Set TermID.
MVC WTRA_USERID,=CL8'USR1' Set USERID.
MVC WTRA_LUNAME(8),=CL8'.NET1'
Set LUNAME.
MVC WTRA_TRANID,=CL8'TRN1' Set TRANID.
MVC WTRA_SYSID,=C'SYS1' Set SYSID.
MVC WTRA_APPLID,=C'APPLID1' Set Applid.
MVI WTRA_FUNC,WTRA_FUNCSEL Set the Route Select Function.
MVI WTRA_DYRTYPE,WTRA_DYRTYPE_DYN
*---------------------------------------------------------------------*
* Invoke the WLM MAS Agent for Route Select. *
*---------------------------------------------------------------------*
ROUTE_SELECT DS 0H
BAS R5,LINK_WLM Go do it.
CLC WTRA_RESPONSE,=F'0' Call go OK?
BNE CHECK_OPTER ..no.
BAS R5,START_UOW Go Start the UOW.
LTR R15,R15 Work Completed?
BZ ROUTE_TERM ..yes.
BP ROUTE_ABND UOW gave non zero return code.
C R15,=F'-4' SYSID error?
BNE ROUTE_ABND ..no.
*---------------------------------------------------------------------*
* Invoke the WLM MAS Agent for Route Error. *
*---------------------------------------------------------------------*
ROUTE_ERROR DS 0H
MVI WTRA_FUNC,WTRA_FUNCERR Set the Termination Function.
MVI WTRA_ERR,WTRA_ERROUT Say out of service.
B ROUTE_SELECT Go Get another system.
*---------------------------------------------------------------------*
* Invoke the WLM MAS Agent for Route Abend. *
*---------------------------------------------------------------------*
ROUTE_ABND DS 0H
MVI WTRA_FUNC,WTRA_FUNCABD Set the Abend function.
BAS R5,LINK_WLM Go terminate.
CLC WTRA_RESPONSE,=F'0' OK?
BE EXIT_ABD ..yes.
CHECK_OPTER DS 0H
CLI WTRA_OPTER,WTRA_CALLYES Call WLM for Term?
BNE WLM_CALLERR ..no.
*---------------------------------------------------------------------*
* Invoke the WLM MAS Agent for Route Termination *
*---------------------------------------------------------------------*
ROUTE_TERM DS 0H
MVI WTRA_FUNC,WTRA_FUNCTRM Set the Termination Function.
MVC WTRA_NEXTTRAN,=CL8'TRN2' X
Set the next TRANID.
BAS R5,LINK_WLM Go terminate.
CLC WTRA_RESPONSE,=F'0' OK?
BE EXIT_TERMOK ..yes. .
*---------------------------------------------------------------------*
* The WLM MAS AGENT returned an 8 in WTRA_RESPONSE *
*---------------------------------------------------------------------*
WLM_CALLERR DS 0H
*---------------------------------------------------------------------*
* Process completed successfully *
*---------------------------------------------------------------------*
EXIT_TERMOK DS 0H
*---------------------------------------------------------------------*
* Route Abend Call returned a 0 *
*---------------------------------------------------------------------*
EXIT_ABD DS 0H
EXIT DS 0H
EXEC CICS RETURN
*---------------------------------------------------------------------*
* LINK_WLM : Link to the WLM MAS AGENT *
*---------------------------------------------------------------------*
LINK_WLM DS 0H
EXEC CICS LINK PROGRAM(EYU9XLOP) X
COMMAREA(EYURWTRA) LENGTH(=AL2(WTRA_LENGTH)) X
BR R5 Exit routine.
*---------------------------------------------------------------------*
* START_UOW : Start the Unit Work. *
*---------------------------------------------------------------------*
START_UOW DS 0H
EXEC CICS LINK PROGRAM(UOWPGM) X
COMMAREA(WRK_UOWCOMM) LENGTH(=AL2(WRK_UOWCOMM_L)) X
SYSID(WTRA_SYSID) X
RESP(WRK_EIBRESP)
CLC WRK_EIBRESP,DFHRESP(NORMAL) X
Did call go ok?
BE START_UOWL ..yes.
L R15,=F'-4' Assume SYSIDERR
CLC WRK_EIBRESP,DFHRESP(SYSIDERR) X
Is there one?
BE START_UOWX ..yes.
L R15,=F'-8' Load Failure code.
B START_UOWX Go exit.
START_UOWL DS 0H
L R15,WORK_UOW_RESP Load Response Code.
START_UOWX DS 0H
BR R5 Exit routine.