The following notation indicates the rules for entering Dynamic Install Facility (DIF) commands. These notations are used throughout this section to explain the DIF commands and all the optional parameters.
- Square brackets
[ ]indicate the enclosed parameters are optional. Enter only information asked for within the brackets.Tip: Do not enter the brackets. - Braces
{ }indicate that you must choose between items found within the braces. Use only one item.Tip: Do not enter the braces. - A vertical bar
|indicates you are to choose between the items separated by the bar(s). The bar is used in conjunction with the brackets and braces. Use only one item.Tip: Do not enter the bar. - Upper case indicates that the field must be entered as shown. You can enter it in either upper case or lower case.
- Lower case indicates that the operand must be supplied to the command. You can enter it in either upper case or lower case.
- Commands and operands can be separated with either blanks or commas.
The Dynamic Install Facility (DIF) can obtain commands from various sources:
- the DIF PARMLIB DD statement
- an Operator Console
- the DIF TSO command interface
- the batch DIFCMD interface
The DIF commands can be issued in abbreviated form. DIF only requires enough characters to determine which DIF command should be processed. For example, only
SHis required for theSHUTDOWNcommand.Note: The synonyms listed in the “DIF Command Table" have precedence over abbreviated command.Any DIF command related to a product sets the current product field in DIF. Subsequent DIF commands related to the same product may use an asterisk (
*) in place of the product name. If a subsequent command does not require operands after the product name, not even the asterisk (*) is required. For example, if the previous command was aSTART ACC, theREFRESHcommand would not require any operands to refresh ACC.
DIF Commands from the PARMLIB DD Statement
SYSID with “nn” (i.e.,
SYSA00), and the member STARTnn. The “nn” characters
default to “00”, but can be overridden by the START parameter field in the
DIF execution JCL. In a multi-CPU environment, the SYSID member name should
be used when different PARMLIB members are required for different systems. STPARM parameter. When the commands are read via PARMLIB, no modify information, or subsystem character
(#) should precede the DIF command. Only one command per line is allowed,
and any line containing an asterisk in column one is considered to be a comment statement. A
list of sample DIF commands follows:
*
* DIF CONTROL CARDS FOR DTS SOFTWARE PRODUCTS
*
START ACC
ENABLE OPTION ACCVSAM
START SRS
ENABLE OPTION SRSVSAM
STATUS
Sharing the PARMLIB DD Statement
- unique PARMLIB DD statements for each DIF
- manage a set of
SYSIDnnmembers (i.e.,SYSA00,SYSB00...) - using the
SYSIDcommandThe
SYSIDcommand was added in DIF release 3.1 to allow conditional command execution.SYSIDwould typically be used in theDIFINITand theSTARTnnmembers to conditionally start products or establish log consolidation links based on the four character system identifier.The
SYSIDcommand must start in column one. The systems included or excluded on theSYSIDcommand must be placed on one control card. However, wildcard characters are allowed (‘*’ or ‘?’). If bothINCLUDEandEXCLUDEare specified,EXCLUDEhas precedence. When aSYSIDsection evaluates as true, all commands following theSYSIDare executed until anotherSYSIDis encountered, or conditional command processing is terminated with aSYSID()statement.For example, the following
DIFINITmember could be placed in PARMLIB to use the system logger to perform log record consolidation. This example SYSA will be the log server used for record consolidation. The firstSYSIDsection executes on all systems except SYSA and would execute theDEFCONNcommands in memberLOGINITto establish connectors to route records to the system logger. The secondSYSIDsection would only execute on SYSA and activates the log server to gather records from the system logger and write them to the target logs. The lastSYSID()terminates conditional command processing.SYSID(EXCLUDE(SYSA)) INITOPT EXEC(CONNECT(LOGINIT)) SYSID(INCLUDE(SYSA)) INITOPT LOGSERVER(LOGGER(DTS.STREAM)) SYSID()Note: For more information about record consolidation, examine “The System Logger Interface” and “The MQSeries Interface” in the Rules Language Programming Guide.
Conditional statement processing using SYSPARM
The SYSPARM statement is similar to the
SYSID statement covered in the previous section. When
a product reads input cards, a SYSPARM statement can be
used to conditionally process the input records. Unlike the
SYSID statement, SYSPARM is a
variable that must be set before record input processing occurs.
A SYSPARM variable can be set:
- using the
SYSPARMstatement from the EXEC statement (local variable) - using the
DIF SYSPARMcommand to set or display either local or globalSYSPARMvariables. Global variables are saved in extended CSA. - at run-time using a value obtained from another symbolic variable
Setting a SYSPARM Variable
The SYSPARM variable(s) can be local or global. A
local variable is typically created using the SYSPARM
keyword on the EXEC PARM statement for
DIF or MONRUN JCL. However, any
application that accepts parameters can use SYSPARM.
The variables are saved at the job step level. For example, the
following Monitor job sets a local SYSPARM to “BACK2”.
// EXEC PGM=MONRUN,PARM='SYSPARM=BACK2'
By default, the variable name used to store the requested value has an internal name of
$SYSPARM. However, alternate names can be created using the
KEY keyword parameter. For example, the following statement creates the
CMPNAME variable and sets the value to MP3000.
// EXEC PGM=MONRUN,PARM='SYSPARM=(MP3000 KEY(CMPNAME))'
A global variable is stored in an extended CSA table and is created
using the DIF SYSPARM command, which can be entered via
the operator console, or as a command in one of the DIF
PARMLIB DD files. Unlike local variables, global variables
can be limited to specific products. Global variables can also be pooled
into groups using the GLOBAL(group) parameter. The
default group name defaults to SYSIN.
The following DIF console commands set and then display a global variable:
F DIF,SYSPARM SET DTSGVAR ABC
F DIF,SYSPARM GET DTSGVAR
Accessing a SYSPARM Variable
A SYSPARM statement can be located in any input file
that reads for control cards or rule statements. The
SYSPARM command must start in column one. The values
included or excluded on the SYSPARM command must be
placed on one control card.
INCLUDE and EXCLUDE are specified,
EXCLUDE has precedence. When a SYSPARM section evaluates
as true, all commands following the SYSPARM are executed until another
SYSPARM is encountered, or conditional command processing is terminated
with a null SYSPARM statement. In most cases, input files use the most simple form of SYSPARM to access
a local variable that was set using an EXEC PARM field. For example, when Monitor processes
an input file, the following SYSPARM statement would establish a filter
that only processes subsequent input cards if PARM='SYSPARM=MP3000' was
specified on the execution JCL.
SYSPARM(INCLUDE(MP3000))
.
. statements in this section will be processed
.
SYSPARM(INCLUDE(ZPDTNC))
.
. statements in this section will NOT be processed
.
SYSPARM
.
. no conditional filtering - all statements processed
To access a local variable that does not use the default $SYSPARM
variable name, the KEY parameter can be used on the
SYSPARM request. For example, to filter input cards based on
CMPNAME equal to MP3000, use the following
SYSPARM statement.
SYSPARM(INCLUDE(MP3000) KEY(CMPNAME))
The SYSPARM statement can also access other symbolic fields to perform
input filtering. If the KEY field specifies a variable name starting with
“&”, the SYSPARM filter will process the key as a symbolic name. In the
examples below, the SYSPARM statements filter input based on the day of the
week using the &DAY:CURDATE to get the current day. In the first
example, subsequent statements would only be processed on Sunday. The second
SYSPARM filters statements for weekday processing.
SYSPARM(INCLUDE(SUNDAY) KEY(&DAY:CURDATE))
...
SYSPARM(EXCLUDE(SAT* SUN*) KEY(&DAY:CURDATE))
...
If the DIF SYSPARM command was used to create a global variable, the
input cards can access the extended CSA variable by using the GLOBAL
parameter on the SYSPARM statement.
SYSPARM(INCLUDE(MP3000) KEY(CMPNAME) GLOBAL)
If the DIF SYSPARM command specified an alternate group name on the
global variable, the GLOBAL(group) form of the parameter can be used
to access the variable. For example, if the F DIF,SYSPARM command created
the CMPNAME variable in the FOO group, the following
SYSPARM statement in the input records can access the variable.
SYSPARM(INCLUDE(MP3000) KEY(CMPNAME) GLOBAL(FOO))
If there is a reason for SYSPARM not being coded in the PARM field, the
following test can be used:
SYSPARM(INCLUDE(NULL))
SYSPARM statement.
SYSPARMDIF commands from the operator console
After DIF has been started, commands can be entered from a console by
way of MODIFY (F) commands. The following commands
would be used to refresh the ACC rules language, and show the current status of products
started by DIF.
F DIF,REFRESH ACC
F DIF,STATUS
The DIF subsystem character can also be used to enter commands from the console. The pound
(#) is the default character, but the CMDCHAR parameter
can be used to override the default subsystem character. The pound (#) is
used in the same way as JES2 uses the dollar ($) character to denote
commands. If you wish to disable the subsystem character and allow only the use of the
MODIFY command, specify CMDCHAR=NONE in the
parameter field in the DIF started task.
By using the subsystem character, an operator does not have to remember the started task name used by the MODIFY commands. To perform the same commands as above, an operator would enter the following commands on the console:
#REFRESH ACC
#STATUS
D OPDATA console command
can be used to list the command character used by each subsystem.DIF Commands from the DIF TSO command interface
By default, the DIF commands can only be entered from an operator console or via the PDS
PARMLIB DD statement. The DIF TSO command interface can be enabled with the
DIFTSO parameter in the DIF execution JCL. This parameter assigns a TSO
command name to the interface. After the next DIF shutdown/restart, the TSO command
processor can then be used to enter DIF commands. The output from the commands is returned
to the TSO user.
For example, if DIFTSO=DIFTSO has been specified in the DIF execution
JCL, the following status command can be issued from TSO after DIF is active.
DIFTSO STATUS
DIF TSO commands under ISPF - The DIF TSO command processor is loaded
into extended CSA, and the command is added to the MLPA chain. By default, ISPF will not
execute the command from the ISPF command line. However, the DIF TSO command can be added to
the ISPF command table, or the TSOEXEC command interface can be used from
the ISPF command line. For example, the following command will issue the DIF STATUS command
from an ISPF command line.
TSOEXEC DIFTSO STATUS
DIFTSO command interface has been
enabled, you should use your security system to protect the DIF TSO command from
unauthorized users. ISPF DIFCMD authorization
DIF ISPF commands require authorization for the ISPF environment. Add the
DIFCMD to the AUTHCMD NAMES section of the member
IKJTSOxx in SYS1.PARMLIB to include the authorize DIFCMD
usage.
The following steps are required to authorize the command:
-
- Locate the active IKJTSOxx PARMLIB Member
To locate the current Parmlib library and member name, scan the system log for "MEMBER IKJTSO".
For example, the following message was obtained using the TSO SDSF LOG command with a FIND "MEMBER IKJTSO" request.
IEE252I MEMBER IKJTSO00 FOUND IN USER.PARMLIB - Edit the IKJTSOxx PARMLIB Member
Edit the
IKJTSOxxmember and add theDIFCMDentry to theAUTHCMDandAUTHPGMsections of theIKJTSOxxParmlib member. After making the changes, save the member. Activate the modified IKJTSOxx member
Issue the following
For example:SETcommand from a z/OS console to activate the updatedIKJTSOxxmember.T IKJTSO=00- Add the DIF Load Library to the STEPLIB DD in the TSO Logon Procedure
Ensure that the DIF load library is included in the TSO Logon Procedure used by the operations staff.
- Locate the active IKJTSOxx PARMLIB Member
DIF Commands from the batch DIFCMD interface
DIF commands can also be issued using the DIFCMD interface. The
following sample JCL executes the DIFCMD program to issue a DIF
STATUS command to display the current status information about the started
products followed by an SL command to display the service level
information.
// EXEC PGM=DIFCMD
//STEPLIB DD DISP=SHR,DSN=DTS.R71.LOADLIB
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
STATUS
SL
Routing DIF Commands to Remote Systems
DIF commands can be routed to remote systems that are also running the DIF address space. The command output is returned to the issuing system.
There are two facilities to route DIF commands to remote systems:
- the
DIF SYSPCMDcommand - @defconn Interface
The SYSPCMD can be used to send DIF commands to all DIF started tasks
running in a sysplex. This command is typically used when the PARMLIB is shared between the
DIF started tasks in a sysplex, and a rules refresh can be issued to systems running DIF. The
SYSPCMD interface is easy to use and requires no configuration. For more
information, examine “SYSPCMD” on page 5-56.
The second method of remote command routing uses DEFCONN definitions and
the @ command prefix character. This method does not require systems to
belong to the same sysplex and uses TCP/IP to route command requests. Once the DIF systems are
configured, a user on SYSA could issue the following STATUS command on SYSB:
F DIF,@SYSB STATUS
Before using the @ method for remote routing, the DIF started tasks must be
configured to define the connections between systems. Two configuration changes are required
to the DTS.R71.PARMLIB dataset(s) on the different systems:
- Add the following statement to
DTS.R71.PARMLIB(DIFINIT):INITOPT EXEC(CONNECTS(DIFCONN)) - If necessary, create the
DTS.R71.PARMLIB(DIFCONN)member and add the followingDEFCONNentries with the appropriate IP address and port number.Note: Multiple entries can be used if the PARMLIB DD is shared between systems. Also, to avoid using userid and password parameters, examine “PassTicket Support (Optional)” on page 3-93 in the Rules Language Programming Guide. For more information about the following statements, examine “DEFCONN Command” on page 6-23.DEFCONN SYSA TCPIP(?.?.?.? 10) DEFCONN SYSB TCPIP(?.?.?.? 10) DEFCONN SYSC TCPIP(?.?.?.? 10)
Once the DIF address spaces have been restarted, the @ command interface
can be used to route commands between systems.
Entering commands
To enter a command, type the desired command into the terminal or command
prompt, and then press Enter.
DIF command table
| COMMAND | SYNONYM | DESCRIPTION |
| APPAC | Display information about the active log connections. | |
| CHECK | Validate a rule member, or LICENSE entry | |
| CLONE | Clone a product | |
| CLOSE | Close a requested message file | |
| CUSTOMER | Display customer id, name, location, CPU id, type, and model information | |
| DBIO | Load or free a keyed table | |
| DISABLE | D | Deactivate a requested option |
| DM | Display virtual storage for Loadmod.Csect+Offset | |
| DREFRESH | Issue REFRESH commands on all products with device tables | |
| DUMP | Force an ABEND in Product.Jobname.Stepname.Module | |
| DYNAPOOL | Reserve and free devices | |
| ENABLE | E | Activate a requested option |
| EXEC | Execute DIF commands from a specified member in PARMLIB | |
| EXIT | Load/Delete user exits | |
| FINDMOD | F | Find the location of a LPA or MLPA module |
| INITOPT | Process a DIF parameter that would normally be found in an EXEC PARM field | |
| LIST | Display information about CSA usage, products or log connections | |
| MESSAGE | MSG | Modify DIF and product message information |
| MODULE | Override module aliases | |
| MVSFUNC | Execute z/OS functions - similar to the TSO command | |
| OPERCMD | Issue an operator command | |
| OPSYS | Set operating system function availability flags | |
| OPTION | Start an optional function to a product | |
| OSJOB | Start an z/OS procedure | |
| PRODUCT | Set the current product identifier | |
| REFRESH |
|
|
| REOPEN | Close and then open the STEPLIB or SYSPRINT file | |
| RTRACE | Enable/Disable rules tracing for started tasks | |
| SET | T | Override system defaults for a specified product |
| SHUTDOWN | Terminate DIF and all products started by DIF | |
| SL | Display Service Level information from the DTSRELI member in LOADLIB | |
| SLIP | Set SLIP trap for an SVC dump on Jobname.Loadmod.Csect+Offset | |
| START | S | Start a product |
| STATUS | Show the status of a requested product | |
| STOP | P | Terminate a product |
| SYSID | Conditional command processing for STARTnn and DIFINIT members | |
| SYSPARM | Create a SYSPARM variable that can be used by rules and input cards | |
| SYSPCMD | Route DIF commands to all DIF started tasks in a Sysplex | |
| SYSVAR | Set symbolic fields for operator interaction with product rules | |
| TASK | Enable/Disable/List DIF subtasks | |
| TRACE | Perform module trace for Product.Jobname.Stepname | |
| TSO | Invokes a TSO command, CLIST or REXX EXEC - Disabled by default | |
| VALIDATE | Ensure the specified license is correct | |
| Z | Terminate DIF - leaves the products installed | |
| ZFORCE | Force DIF to ABEND or clear internal control blocks |