Generic skeleton commands

Skeleton processing commands are denoted by a right parenthesis.

)COPYmember name
Copies the specified member name into the current skeleton before continuing processing. The member being copied can contain )COPY commands but nested )COPY commands can copy the same member only once. That is, the process does not support recursive )COPYs. The limit for nested )COPY statements is 50. Use nested )COPYs to simplify skeletons or ensure that common requirements are generated the same way. )COPY statements should be used instead of PROCs.
)COPYJOBSTMTmember name
The COPYJOBSTMT statement must be the first statement in each skeleton member. Use the )COPYJOBSTMT rather than a native JOB statement in skeletons. This allows for the file tailoring process to determine when and if an expanded skeleton should contain a JOB statement. The member name is the name of the member in the skeleton library that contains the JOBCARD skeleton to use if Critical Backup Tracking and Inventory determines a job card is needed. A member specified by the )COPYJOBSTMT command cannot contain another )COPYJOBSTMT command or a )COPY command.
)ELSE
Permits alternate processing when the )IF evaluation is false. An ELSE statement must be located between )IF and )ENDIF statements at the same nesting level. Only one )ELSE is allowed for an )IF level.
)ENDIF
Terminates the )IF statement at the same nesting level.
)ENDLOOP
Terminates a )LOOP structure.
)IFvar1comparatorvaluevar2
Specifies a relational expression that is evaluated for a true or false condition.
  • var1 specifies a declared variable name.
  • comparator specifies how var1 will be compared to value or var2. For character type variables, valid comparators are: EQ (equal) or NE (not equal). For numeric type variables valid comparators are: EQ (equal), NE (not equal), LT (less than), GT (greater than), LE (less than or equal), or GE (greater than or equal).
  • value specifies a literal value to be compared to var1.
  • var2 specifies a variable to be compared to var1.
value, or the contents of var2, must be the same data type as var1. The relational expression is evaluated for a true or false condition. If the condition is true, the skeleton input records between the )IF and the corresponding )ENDIF or )ELSE are processed. If the condition is false, the records down to the next )ELSE or )ENDIF are skipped. These statements can be nested. There is no nesting limit. The )IF must be terminated by an )ENDIF
)IF)THEN)ELSE
Controls conditional generation of output. The most obvious need for this is already eliminated if the default selection of skeleton member by utility is used. However, even within a given utility it might be necessary to conditionally generate output. If conditional output generation becomes too complex, another option is to create a specific skeleton and supply it in the BKMBLDRJ parameter list as an override to the default.
)LEAVE
Exits the current loop structure.
)LOOP ON #DSNCNT|#BVOLCNT|#CVOLCNT|#DVOLCNT|#IVOLCNT
Provides the ability to generate multiple output records or groups of output records from a single input source. Two types situations could require this: one where a single backup command results in multiple data sets backed up that need to be explicitly specified in a restore, and the other where multiple VOLSERs need to be specified in the restore JCL or control statements.

ON is a required keyword for )LOOP meaning loop on a count. The loop count is specified by supplying one of the control variables (denoted by a pound sign as the first character): #DSNCNT, #BVOLCNT, #CVOLCNT, #DVOLCNT, and #IVOLCNT. Associated with each control variable is a variable to be used in the body of the loop whose value will change during each pass through the loop. All statements between the )LOOP and )ENDLOOP are repeated for each pass through the loop. )LOOP commands can be nested. There is no nesting limit. )LOOP ON does not alter the value of control variables.

)SET#
Sets the value of a control name. The first operand must be one of the control names. The second operand can either be a value or an existing numeric character type variable. For example: )SET# #DSNCNT 20
)SETCvar1value|variable-name
Declares a new character type variable or changes the value of an existing one. The first operand must be a new or existing character type variable name. The second operand can be either a value or an existing character type variable.
)SETNvar1value|var2[+|-n]
Declares a new numeric type variable or changes the value of an existing one. The first operand must be a new or existing numeric type variable name. The second operand can either be a value or an existing numeric character type variable. Optionally, a value (number) can be add to or subtracted from var1 after its value has been set or changed. For example: )SETN &STEPNO 1 )SETN &MYCOUNT &MYCOUNT + 1