The DEFPROC statement defines a procedure that can be used as an extension to a rule. The DEFRULE statement, or another procedure, can use the CALLPROC parameter to execute a procedure definition. Like the rule definition statement, the DEFPROC statement can be used to perform one or more of the following functions:
- modify fields in JCL
- modify operands on Dynamic Allocation requests (SVC 99)
- modify fields on the DEFINE CLUSTER IDCAMS control cards
- force Allocation to use units within a specified device pool
- write SMF records
- write messages
- issue operator commands
- execute other procedures -- CALLPROC
- execute DO-END statements
The CALLPROC statement performs the procedure defined by a DEFPROC statement. A procedure has all the capabilities and characteristics of a rule definition with two exceptions.
- Rule scanning does not process a procedure -- another rule definition or proce-dure must request execution with a CALLPROC statement.
- When IF processing successfully completes an IF-THEN-ELSE within a proce-dure definition, the default continuation is an EXITPROC instead of an EXIT.
Also, in a DEFRULE statement, the action statements would normally be found within an IF-THEN-ELSE group. In a procedure definition, action statements might often be found independent of conditional processing.
Both CALLPROC and DO-END statements can be used to implement nested IF processing, or execute a series of action statements. If your language contains multiple DO-END statements that perform the same function, you may wish to convert the DO-END statements to a single procedure and use the CALLPROC statement.
DEFPROC procname CONTINUE( options ) TEST
action_statements IF-THEN-ELSE_1 IF-THEN-ELSE_2
...
IF-THEN-ELSE_n
procname
Function: This is a required parameter. The procname parameter is used
by the CALLPROC statement in the rules language. The DEFRULE statement, or another procedure, can use the CALLPROC parameter to execute the procedure definition.
Default: None
Format: Specify a procname 1 to 20 characters long.
CONTINUE( options )
Function: After performing all the action statements requested by an IF-
THEN-ELSE group, the flow control statements can be used to terminate or continue rule processing.
Once an IF-THEN-ELSE has successfully completed, the rules language can continue scanning at the next IF-THEN-ELSE, the next rule definition, a specific rule definition, or simply exit the rules language.
The CONTINUE parameter on the DEFPROD statement establishes the defaults for flow control processing. The CONTINUE parameters on the DEFRULE and DEFPROC statements can override the established defaults for the rule or procedure definition. Lastly, the CONTINUE statement can be used in an IF-THEN-ELSE to control flow processing.
By default, the product uses CONTINUE(RETURN,RETURN) for
rule processing. The two operands establish the defaults for the THEN and ELSE sections of an IF-THEN-ELSE, respectively. If an IF group evaluates as false, and no ELSE section is coded, flow control always performs a NEXTIF request (that is, processing continues at the next IF).
Default: The default for this parameter is set by the CONTINUE
parameter on the DEFPROD statement.
Format: EXIT, EXITDO, EXITPROC, NEXTIF, NEXTRULE, or
rulename
TEST
Function: The TEST parameter is used to disable the procedure from
normal rules processing. The procedure will only be processed when the current step or TSO user has ACCTEST allocated. By allocating the ACCTEST DD statement, a rule verification job can enable the procedure for testing. For more information, examine “TESTING AND DEBUGGING” chapter in the product’s user guide.
Default: None
Format: TEST