DIF commands - syncsort_cobol_migration_manager - syncsort_clone_center - syncsort_space_recovery_system - syncsort_scc_monitor - syncsort_simulate_2000 - syncsort_allocation_control_center - Latest

Syncsort™ Storage Management Product Installation Guide And DIF User Guide

Product type
Software
Portfolio
Integrate
Product family
Syncsort™ software
Product
Syncsort™ Storage Management > Syncsort™ Cobol Migration Manager
Syncsort™ Storage Management > Syncsort™ Clone Center
Syncsort™ Storage Management > Syncsort™ Space Recovery System
Syncsort™ Storage Management > Syncsort™ SCC Monitor
Syncsort™ Storage Management > Syncsort™ Simulate 2000
Syncsort™ Storage Management > Syncsort™ Allocation Control Center
Version
Latest
ft:locale
en-US
Product name
Syncsort Storage Management
ft:title
Syncsort™ Storage Management Product Installation Guide And DIF User Guide
Copyright
2023
First publish date
1991
ft:lastEdition
2026-01-22
ft:lastPublication
2026-01-22T05:50:39.722000
L1_Product_Gateway
Integrate
L2_Product_Segment
IBM Infrastructure
L3_Product_Brand
Precisely Syncsort
L4_Investment_Segment
Mainframe
L5_Product_Group
Mainframe Storage Optimization
L6_Product_Name
Syncsort Storage Management

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 SH is required for the SHUTDOWN command.

    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 a START ACC, the REFRESH command would not require any operands to refresh ACC.

DIF Commands from the PARMLIB DD Statement

If the PARMLIB DD statement is allocated to the DIF started task, during initialization control statements are read from two members: a member name created by concatenating the four character 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.
Note: A third member can also be specified with the 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

The data sets allocated to the PARMLIB DD statement can be shared between the DIF started tasks running in a sysplex. In many cases, even the DIF PROC can be used by all the systems. However, if you want to issue commands from PARMLIB that are system dependent (i.e., start different products based on CPU), you have three choices:
  • unique PARMLIB DD statements for each DIF
  • manage a set of SYSIDnn members (i.e., SYSA00, SYSB00...)
  • using the SYSID command

    The SYSID command was added in DIF release 3.1 to allow conditional command execution. SYSID would typically be used in the DIFINIT and the STARTnn members to conditionally start products or establish log consolidation links based on the four character system identifier.

    The SYSID command must start in column one. The systems included or excluded on the SYSID command must be placed on one control card. However, wildcard characters are allowed (‘*’ or ‘?’). If both INCLUDE and EXCLUDE are specified, EXCLUDE has precedence. When a SYSID section evaluates as true, all commands following the SYSID are executed until another SYSID is encountered, or conditional command processing is terminated with a SYSID() statement.

    For example, the following DIFINIT member 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 first SYSID section executes on all systems except SYSA and would execute the DEFCONN commands in member LOGINIT to establish connectors to route records to the system logger. The second SYSID section 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 last SYSID() 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 SYSPARM statement from the EXEC statement (local variable)
  • using the DIF SYSPARM command to set or display either local or global SYSPARM variables. 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.

Note: Wildcard characters are allowed (‘*’ or ‘?’). If both 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))    
Note: Conditional command processing is terminated with a null SYSPARM statement.
SYSPARM

DIF 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    
Note: On z/OS systems, the 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    
Note: If the 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:

    1. 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
              
    2. Edit the IKJTSOxx PARMLIB Member

      Edit the IKJTSOxx member and add the DIFCMD entry to the AUTHCMD and AUTHPGM sections of the IKJTSOxx Parmlib member. After making the changes, save the member.

    3. Activate the modified IKJTSOxx member

      Issue the following SET command from a z/OS console to activate the updated IKJTSOxx member.

      For example:
      T IKJTSO=00         
    4. 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.

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 SYSPCMD command
  • @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:

  1. Add the following statement to DTS.R71.PARMLIB(DIFINIT):
    
    INITOPT EXEC(CONNECTS(DIFCONN))
            
  2. If necessary, create the DTS.R71.PARMLIB(DIFCONN) member and add the following DEFCONN entries 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.

Tip: Make sure to use the correct syntax for each command to avoid errors.

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  
  • Refresh a product’s rules
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