Can Analysis Models use an alternate high level qualifier on utility work datasets other than the userid?

Document ID : KB000054662
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

How do I configure RCM Models so that the utility datasets generated at analysis time use a high level qualifier other than the userid?

At many sites users are not allowed to create datasets of any type using their own authid/userid as the high level qualifier. For security reasons all users belong to a RACF group and it is this RACF group name that they all create their datasets under. In other words the TSO PROFILE PREFIX is always set to the users own default RACF group. Normally the RCM analysis generates utility code which utilizes the users own authid/userid for many of the work datasets. At sites like this it is a requirement that the default RACF group be used as the HLQ for datasets.
Note this may also be the case for other security systems such as ACF2.

Solution:

Prerequisite knowledge
Familiarity with the RCM Model Services functions. Chapter 4 of the RCM User Guide, Expert Profile, Utility Model Services.
Familiarity with the use and meaning of a users TSO PROFILE PREFIX.

Caution
Depending on an individual site, the changing of a users PROFILE PREFIX may have other related impacts particularly relating to the security system.

Step one: Alter or Template a Model Services Model
RCM Model services provides a symbolic variable called %PREFIX. This is substituted by RCM with the value of the users TSO Profile Prefix at the time of a RCM Analysis.

The Migrator model services model must be altered. In each model member where the DSN is constructed, the %USERID symbolic variable must be replaced with the %PREFIX symbolic variable. This change must be made in various model members such as the Fast Unload, IBM Unload, Rapid Reorg, IBM Reorg, Quick Copy and IBM Copy to name a few.
This is accomplished with the model editor and using the "S" symbols command to display the defined symbols for that model. An edit screen is displayed which will allow the user to identify the symbolic variables and change them.
After the changes in the model are completed, save this model and exit from model services and exit out of ISPF to the READY prompt.

Step 2: Change the users own PROFILE PREFIX
Change the profile prefix with the TSO command PROF PREF(mygroup)..."mygroup" being the users own default RACF Group or whatever HLQ is required. The change must be made before entering the DB2 products to become effective. Use the TSO command "PROFILE" to check that your PREFIX is set correctly.

Step 3: Perform an Analysis
Re-enter the DB2 products and return to RCM. When an analysis is produced, having chosen the new model in Analysis UPDATE OPTIONS, every work file allocated will have the users profile prefix as the HLQ.

Additional notes
With the above scenario the user is able to dynamically change the choice of HLQ for those datasets simply with the use of the TSO PROF PREF command. In addition a user could use some other mechanism such as a REXX routine to change the PROF PREF prior to entering the DB2 tools main menu. The benefit of this is that the model need not be changed each time a new HLQ is needed. The user could in fact leave the PROFILE PREFIX with the same value as their normal userid till a different one is needed.

Examples and sample results
These are examples of how to edit the model, what needs to be changed and a sample of the end result. Sometimes there are multiple variables involved in the construction of a dataset name and often there are concatenations also. These are just a sample and show an end result. The other allocation attributes have been omitted from these samples.

Symbolic Variable sample values used in this example are:

PROF PREF(mygroup)
PREFIX  = mygroup
CREATOR = myauth if a table : mydb if a tablespace
OBJECT  = myts if a tablespace : mytb if a table
PARTNO  = 001

From the RREORG model member.

DSN %USERID..%CREATOR..%OBJECT
To
DSN %PREFIX..%CREATOR..%OBJECT
 
Produces DSN = mygroup.mydb.myts
 
May produce this...
.ALLOC FI(RRUNLD) DA('mygroup.mydb.myts.P001.REORG')
.ALLOC FI(PTIUT1) UNIT(SYSDA) DA('mygroup.mydb.myts.P001.U')
.ALLOC FI(PTIOUT) UNIT(SYSDA) DA('mygroup.mydb.myts.P001.O')

From the FUNLD model member

DSN %USERID..%CREATOR..%OBJECT..%PARTNO
To
DSN %PREFIX..%CREATOR..%OBJECT..%PARTNO
 
Produces DSN = mygroup.myauth.mytb
 
The FLOAD model takes the unload dataset name from FUNLD and builds the work datasets from there thus.
 
.ALLOC FI(SYSULD) DA('mygroup.myauth.mytb.DATA')
.ALLOC FI(SYSERR) DA('mygroup.myauth.mytb.DATA.E')
.ALLOC FI(SYSDISC) DA('mygroup.myauth.mytb.DATA.D')
.ALLOC FI(PTIREC) DA('mygroup.myauth.mytb.DATA.U')
.ALLOC FI(SYSMAP) DA('mygroup.myauth.mytb.DATA.M')
.ALLOC FI(PTIUT1) DA('mygroup.myauth.mytb.DATA.W')

From the QCOPY model member

PARTDSN %USERID..%CREATOR..%OBJECT..P%PARTNO..COPY
To
PARTDSN %PREFIX..%CREATOR..%OBJECT..P%PARTNO..COPY
 
Produces PARTDSN = mygroup.mydb.myts.P1.COPY
 
Produces DA('mygroup.mydb.myts.P1.COPY')