Replacing utility EDVPARM from Nexio Technologies using Endevor Table Tool (ENBPIU00)
search cancel

Replacing utility EDVPARM from Nexio Technologies using Endevor Table Tool (ENBPIU00)

book

Article ID: 389637

calendar_today

Updated On:

Products

Endevor

Issue/Introduction

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

Cause

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,

Resolution

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
//*

Additional Information

This approach has a couple of limitations compared with EDVPARM

  • The ENBPIU00 supports wildcards only with an asterisk at the end of the string. The EDVPARM utility supports also placeholders (question marks) at any position. Therefore the contents of the table needs to be reviewed accordingly
  • EDVPARM allows calling the selected program with APF authorization. ENBPIU00 cannot do that

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.