The program needed to execute TSO/E commands from the background
is a terminal monitor program (TMP), which may be one of the following:
IKJEFT01, IKJEFT1A, or IKJEFT1B. The EXEC (execute) statement is
used to execute program IKJEFT01 or the alternate programs IKJEFT1A
and IKJEFT1B. The
format is:
//stepname EXEC PGM=IKJEFT01,DYNAMNBR=nn,PARM='command'
or
//stepname EXEC PGM=IKJEFT01,DYNAMBR=nn,PARM='command'
Note: The TSO/E terminal monitor program must not run as a V=R program.
Executing the TMP as V=R will cause unpredictable results.
Note: If the caller wishes to pass a command string
longer than 100 characters to IKJEFT01, you should use the PARMDD=
keyword of the EXEC statement of JCL, as shown above.
- stepname
- is optional and can be used as a step identifier in programs consisting
of more than one step.
- EXEC
- is the JCL term that identifies this type of statement.
- PGM=
- specifies the module being executed. In addition to IKJEFT01,
there are two other entry points available for background execution
that provide additional return code and abend support.
Note: If the
STEP parameter is coded in an ABEND macro, the job will abnormally
terminate with the system or user abend specified. TSO/E cannot recovery
normally from an ABEND with the STEP parameter because retry processing
is not allowed.
The differences among the three entry points
are:
- PGM=IKJEFT01
- When a command completes with a non-zero return code, the program
goes to the next command. When a command abends, the step ends with
a condition code of 12 (X'C').
- PGM=IKJEFT1A
- If a command or program being processed by IKJEFT1A ends with
a system abend, IKJEFT1A causes the job step to terminate with a X'04C' system
completion code. IKJEFT1A also returns to the caller the completion
code from the command or program in register 15.
- If a command or program being processed by IKJEFT1A ends with
a user abend, IKJEFT1A saves the completion code in register 15 and
then terminates.
- If a command, program or REXX exec being processed by IKJEFT1A
returns a non-zero return code to IKJEFT1A, IKJEFT1A saves this return
code in register 15 and then terminates. Non-zero return codes
to IKJEFT1A from CLISTs will not affect the contents of register 15
and the TMP will continue processing.
- For a non-zero return code or an abend from a command or program
that was not given control directly by IKJEFT1A, no return code is
saved in register 15, and IKJEFT1A does not terminate.
Note: When a command is invoked in a CLIST, that
command is actually processed by the TMP (Terminal Monitor Program).
From that command, termination of IKJEFT1A with a non zero return
code and flushing of the remainder of the CLIST occur. This is different
from the case when a command is invoked directly by a REXX exec.
- PGM=IKJEFT1B
- If a command or program being processed by IKJEFT1B ends with
a system or user abend, IKJEFT1B causes the job step to terminate
with a X'04C' system completion code. IKJEFT1B also returns
to the caller the completion code from the command or program in register
15.
- If a command, program or REXX exec being processed by IKJEFT1B returns
a non-zero return code to IKJEFT1B, IKJEFT1B saves this return code
in register 15 and then terminates. Non-zero return codes to IKJEFT1B
from CLISTs do not affect the contents of register 15 and the TMP
continues processing.
- For a non-zero return code or abend completion code from a program
or command that was not given control by IKJEFT1B, no return code
is saved in register 15, and IKJEFT1B does not terminate.
See z/OS TSO/E Customization for
information on abend and non-zero return code processing by these
alternate programs, as well as conditional disposition processing
for data sets.
- DYNAMNBR=
- indicates the number of system resources the system should hold
in anticipation of reuse. For information on the specific number
of allocations you can specify, see z/OS MVS JCL Reference.
- PARM=
- is optional and can be used to supply the first (or only) command
to be executed. This is used most often when you only execute one
command in the step.
- PARMDD=ddname
- is optional and can be used instead of PARM= to supply the first
(or only) command to be executed. Use PARMDD specifying the ddname
of a data set containing the command parmstring to be executed if
the command parmstring is more than 100 characters in length.