The task is used to queue TSO/ISPF commands in order to process them in batch at a later time. The task performs two functions: queueing a TSO/ISPF command and writing queued commands to a data set. Specify the cmd attribute to queue a command. Specify the dsn attribute to write queued commands to a data set. Once commands have been successfully written to the data set, the queue will be deleted and queue storage freed. You may specify either cmd or dsn, but not both on the same invocation.
The task supports Build Extensions Debugging Attributes and Build Extensions General Attributes, as well as, its own task specific attributes. Click on a link for more information on the common attributes.
The following table describes the task specific attributes for the task:
| Task Specific Attributes | ||
| Attribute | Description | Required |
| cmd | Specify the fully formatted TSO/ISPF command. The maximum length for a command is 243 characters. | Yes* |
| dsn | Specify the fully qualified data set name in which to write the previously queued TSO/ISPF commands. | Yes* |
| queue |
Specify the name of the queue to use for TSO/ISPF commands. This attribute is optional. If it is not specified, the default command queue will be used: team.build.extensions.buildCache.commandlist. This attribute can be used in a multi-processing environment to simultaneously populate multiple ISPF command queues. Whatever string is specified for this attribute will be appended to the default name to form the new queue name. For example, if "MyQueue" is specified the resulting queue name will be: team.build.extensions.buildCache.commandlist.MyQueue.
|
No |
There are five steps involved to implement batched ISPF command processing:
<ispfCommands cmd="%ISPDTLC @{source.member.name} ( PROFDDN=* CUASUPP ENGLISH MCOMMENT NODSNCHK GUI NOLSTVIEW NOPREP NOVERSION"/>
<ac:var name="${RTCReturnCodeForTranslator}" value="0"/>
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Licensed Materials - Property of IBM
(c) Copyright IBM Corporation 2020. All Rights Reserved.
Note to U.S. Government Users Restricted Rights:
Use, duplication or disclosure restricted by GSA ADP Schedule
Contract with IBM Corp.
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<project
basedir="."
default="all"
name="IspfCommandsBuild"
xmlns:ac="antlib:net.sf.antcontrib"
xmlns:xt="antlib:com.ibm.team.build.extensions.toolkit">
<description>Shell build for IspfCommands process</description>
<!-- Load build extensions -->
<xt:loadBuildExtensions/>
<!-- Set global properties -->
<property name="lblInitParent" value="${ant.project.name}Init"/>
<property name="lblMainParent" value="${ant.project.name}Main"/>
<property name="lblTermParent" value="${ant.project.name}Term"/>
<!-- - - - - - - - - - - - - - - - - - - *
* IspfCommandsBuild init *
*- - - - - - - - - - - - - - - - - - - -->
<target name="init" description="${lblInitParent}">
<BuildActivityStartChild label="${lblInitParent}" parent="${team.enterprise.build.ant.buildActivityId}"/>
<BuildActivity label="${lblInitParent}"/>
<ac:if>
<istrue value="${team.enterprise.smpe.build.ispfCommands}"/>
<ac:then>
<property name="tkn.ispfCommands" value="${team.enterprise.smpe.build.tokenDate}.${team.enterprise.smpe.build.tokenTime}"/>
<property name="dsn.ispfCommands" value="${team.enterprise.scm.resourcePrefix}.${tkn.ispfCommands}.ISPCMDS"/>
<taskdef classname="com.ibm.team.enterprise.smpe.toolkit.ant.build.task.IspfCommandsTask" name="ispfCommands"/>
</ac:then>
</ac:if>
</target>
<!-- - - - - - - - - - - - - - - - - - - *
* IspfCommandsBuild main *
*- - - - - - - - - - - - - - - - - - - -->
<target name="main" description="${lblMainParent}">
<BuildActivityStartChild label="${lblMainParent}" parent="${team.enterprise.build.ant.buildActivityId}"/>
<BuildActivity label="${lblMainParent}"/>
<ant antfile="${team.enterprise.scm.fetchDestination}${file.separator}generatedBuild.xml" inheritAll="true" inheritRefs="true"/>
</target>
<!-- - - - - - - - - - - - - - - - - - - *
* IspfCommandsBuild term *
*- - - - - - - - - - - - - - - - - - - -->
<target name="term" description="${lblTermParent}">
<BuildActivityStartChild label="${lblTermParent}" parent="${team.enterprise.build.ant.buildActivityId}"/>
<BuildActivity label="${lblTermParent}"/>
<ac:if>
<istrue value="${team.enterprise.smpe.build.ispfCommands}"/>
<ac:then>
<xt:ispfCommands dsn="${dsn.ispfCommands}"/>
</ac:then>
</ac:if>
</target>
<target name="all" description="all" depends="init,main,term"/>
</project>
Define the build script in the build:
Create a JCL procedure that invokes TSO to process the commands and install it in a PROCLIB data set that is accessible to the build:
//************************************************************
//* Invoke ISPDTLC to Build an ISPF panel *
//************************************************************
//#ISPDTLC PROC HLQ=,ARG=
//ISPDTLC EXEC PGM=IKJEFT1A,DYNAMNBR=50,REGION=4096K,
// COND=(0,NE,GETCMDS)
//ISPLLIB DD DISP=SHR,DSN=ISP.SISPLOAD
//ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU
//ISPSLIB DD DISP=SHR,DSN=ISP.SISPSENU
//ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU
//ISPTLIB DD DISP=SHR,DSN=ISP.SISPTENU
//ISPPROF DD UNIT=SYSDA,DISP=(NEW,PASS),SPACE=(CYL,(1,1,5)),
// DCB=(LRECL=80,BLKSIZE=19040,DSORG=PO,RECFM=FB),
// DSN=
//ISPLOG DD SYSOUT=*,
// DCB=(LRECL=121,BLKSIZE=2420,DSORG=PS,RECFM=FBA)
//SYSPROC DD DISP=SHR,DSN=ISP.SISPEXEC
// DD DISP=SHR,DSN=ISP.SISPCLIB
//DTLGML DD DISP=SHR,DSN=$amp;HLQ..DTL
// DD DISP=SHR,DSN=$amp;HLQ..DTM
//DTLPAN DD DISP=OLD,DSN=$amp;HLQ..ADFSPLIB
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD DISP=(SHR,DELETE,KEEP),DSN=$amp;ARG
// PEND
Add a Post-Build Command Line configuration element to the build that submits a job that calls the procedure define in the previous step passing the commands data set name:
.submitJCL -c
//DTL$CMDS JOB IMSBLD1,CLASS=A,MSGCLASS=A,TIME=60
// JCLLIB ORDER=IMSBLZ.BUILD.PROCLIB
//ISPDTLC EXEC #ISPDTLC,
// HLQ=${team.enterprise.scm.resourcePrefix},
// ARG='${team.enterprise.scm.resourcePrefix}.${team.enterprise.smpe.build.tokenDate}.${team.enterprise.smpe.build.tokenTime}.ISPCMDS'
<project
name=""
default="main"
xmlns:es="antlib:com.ibm.team.enterprise.smpe.toolkit">
<target name="main" description="main">
<es:ispfCommands cmd="${commonTxt.c104}command_text${commonTxt.c105}"/>
</target>
</project>
<project
name=""
default="main"
xmlns:es="antlib:com.ibm.team.enterprise.smpe.toolkit">
<target name="main" description="main">
<es:ispfCommands dsn="MY.DATA.SET"/>
</target>
</project>