EDVPARM is part of EDVTOOLS product from Nexio Technologies. It's intended to simplify the design of Endevor processors and processor groups. This article explains a possible way to replace it with Endevor Table Tool utility ENBPIU00
EDVPARM functionality is based on a table which resides in a dataset or member and may be edited as plain text.
Each row contains data at specific columns. The columns define a filter criteria (combination of Endevor system, subsystem, type, processor group, element, environment, stage and 'processor step') which is matched with data from the element being handled in the processor. Other columns in each row contain the program name to be called when the filter criteria is matched as well as the parameter string to be passed to the program.
The table is scanned from top to bottom and the first row whose filter matches is used for processing.
Wildcards are allowed in each filter column so that it is possible to specify generic entries to be applied in most cases near the end of the table and, near the start of the table, specify entries for particular cases that will override the generic entries.
Given this table, the utility is called from processors with:
PARM='&C1SY(1,8)&C1SU(1,8)&C1TY(1,8)&C1PRGRP(1,8)&C1ELEMENT(1,8)&C1EN(1,8)&C1ST(1,8)COMPILE’
Note the Endevor symbolics providing the inventory location and the string COMPILE, which is the 'step name'. They are matched with a specific row in the table to determine the program to be called and its parameter string.
Since the program is called from the EDVPARM step itself, the processor step needs to include all the DD statements required by the called program,
This functionality may be achieved with the Endevor table tool utility with this JCL
//STEP1 EXEC PGM=IRXJCL,
// PARM='ENBPIU00 1 &C1SY &C1SU &C1TY &C1PRGRP &C1ELEMENT &C1EN &C1ST COMPILE’
//*
//* DESCRIPTION OF JCL PARM
//*
//* - ENBPIU00 - Name of the REXX procedure to call. The parameters for the
//* procedure follow the procedure name
//* - 1 - Select the first row in the table that matches all
//* the subsequent parameters
//* - &C1SY - matched with column SYSTEM
//* - &C1SU - matched with column SUBSYSTEM, and so on
//* ...
//* - COMPILE - matched with column STEPNAME
//*
//SYSEXEC DD DISP=SHR,DSN=endevor.CSIQCLS0.library
//SYSTSIN DD DUMMY
//SYSTSPRT DD SYSOUT=*
//TABLE DD DISP=SHR,DSN=EDVPARM.definition.table
//*
//* POSITION DD defines the columns in the table pointed out by TABLE DD
//* Each row defines one column:
//* - Name, used to reference the data in MODEL DD and OPTIONS DD
//* - Starting position
//* - Ending position
//*
//POSITION DD *
SYSTEM 3 10
SUBSYSTEM 13 20
TYPE 23 30
PROCGROUP 33 40
ELEMENT 43 50
ENVIRONMENT 53 60
STAGE 63 70
STEPNAME 73 80
PROGRAM 91 98
PROGPARMS 101 200
/*
//*
//* OPTIONS DD defines the user processing for each selected row in
//* the table. It is also processed once before reading any row, which
//* allows to set processing options.
//*
//* Statements:
//*
//* $Table_Type = "positions"
//* - Use fixed-form table with the column definitions in POSITION DD
//*
//* If $row# < 1 then $SkipRow = 'Y'
//* - $row# contains the selected row number. Don't process further
//* if we are in the initial pass (with $row# containing zero)
//*
//* address linkmvs PROGRAM 'PROGPARMS'
//* - Call the required program with its parameters. This information
//* resides in columns PROGRAM and PROGPARMS in the row that we
//* are processing
//*
//* $my_rc = rc
//* - Have the jobstep end with the RC returned by the program
//*
//OPTIONS DD *
$Table_Type = "positions"
If $row# < 1 then $SkipRow = 'Y'
address linkmvs PROGRAM 'PROGPARMS'
$my_rc = rc
/*
//*
//* MODEL DD could be set to DUMMY, but may be used for debugging.
//* It prints to TBLOUT DD. It shows the values from the selected table
//* row and also shows:
//* - &$tbl - Record number selected from the table
//* - &$my_rc - RC from the called program
//*
//MODEL DD *
Selected row: &$tbl
Value found
System &SYSTEM
Subsystem &SUBSYSTEM
Type &TYPE
Procgroup &PROCGROUP
Element &ELEMENT
Environment &ENVIRONMENT
Stage &STAGE
Stepname &STEPNAME
Program &PROGRAM - Return code &$my_rc
Progparms &PROGPARMS
/*
//*
//* Formatted model statements
//*
//TBLOUT DD SYSOUT=*
//*
//* Code here the DD's used by the invoked program
//*
This approach has a couple of limitations compared with EDVPARM
In the above sample, POSITION DD defines the table used by the EDVPARM utility. Note that the design of the table may be adjusted to suit your particular needs.