Setting up IAM/RLS (Record Level Sharing)
IAM/RLS Address Space
IAM/RLS runs as a started task in an MVS system. It has a number of differences from the IAMSTART procedure, which just installed some IAM modules into Dynamic LPA, and terminated. The IAM/RLS procedure runs continuously as a non-swappable address space, providing services to the various jobs and CICS regions that are sharing IAM files. In general, IAM/RLS will be a task that should be kept running all the time. However, IAM/RLS can be shut down and restarted whenever it may be necessary to do so without impacting processing for IAM data sets that are not using IAM/RLS.
Because IAM/RLS is an I/O service provider, you will need to make sure that the IAM/RLS address space is provided with a high enough priority to service the CICS transactions and batch jobs to meet their response time requirements. It probably should be given a priority equal to or higher than the most critical CICS region or batch job to make sure that adequate service is provided. Specifying too low priority will result in poor response times for CICS transactions and elongated run times for batch jobs. If you are using the Workload Manager (WLM) to manage the workload in your SYSPLEX then you should consider assigning the same service class to IAM/RLS that is used for the DB2 Lock Manager.
If you are installing IAM/RLS, you can replace the execution of the IAMSTART procedure with the start up of IAM/RLS. IAM/RLS will automatically run IAMSTART to install the IAM VSAM Interface, if it is not already active.
Multiple IAM/RLS Address Spaces
Each IAM/RLS address space will be identified by a unique 4-character identifier, referred to as the RLSID. The RLSID can be indicated via the RLSID startup parameter for IAM/RLS. If the RLSID startup parameter is not specified, then the IAM Global Options Table will contain a default value for the RLSID, which will be set as IAM is shipped to RLS1. Customers can revise that value as they desire.
IAM/RLS Proc
In the ICL (Installation Control Library) that was copied from the product tape, is an example of the IAM/RLS procedure, which is shown below. This example can be edited and copied into one of your system proclibs. You will need to change the data set name of the IAM load library, and the data set name of the card image PDS to be used for parameters and overrides. You may also desire to change the default member names for the IAM/RLS parameters and for the IAM/RLS override.
Sample of IAM/RLS PROC: Member IAMRLS in ICL
//IEFPROC EXEC PGM=IAMRLS,
// REGION=0M,DPRTY=(15,15),TIME=1440
//STEPLIB DD DSN=your.iam.loadlib,DISP=SHR
//SYSLIB DD DSN=your.iam.loadlib,DISP=SHR
//SYSPRINT DD SYSOUT=X
//RLSLOGDD DD SYSOUT=X
//SYSABEND DD SYSOUT=X
//RLSINFO DD SYSOUT=X
//IAMINFO DD SYSOUT=X
//RLOKJRNL DD DISP=SHR,DSN=your.lock.recovery.dataset
//IPARMLIB DD DISP=SHR,DSN=your.iam.icl(&MBR)
//IAMOVRID DD DISP=SHR,DSN=your.iam.icl(&OVR)
//IAMDSNTB DD DISP=SHR,DSN=your.iam.icl(&TBL)
IAM/RLS Test Proc
Should a need arise to test PTFs that you have received, or to test an updated maintenance level of IAM, you can start a test version of the IAM/RLS address space. This will allow you to limit use of that IAM/RLS address space to specified jobs. Starting an IAM/RLS for test will also cause a test version of the IAM VSAM Interface to be started. To start a test version, add a parameter value to the execute statement of started task JCL, or specify it on a start command. This works the same as the test versions of IAM worked in the past. A job name or a mask with a job name prefix can be used which will allow the specified job names to be processed by the IAM/RLS address space. Up to four (4) different job names can be specified. The test IAM/RLS address space must have a different name than the production IAM/RLS address space, which will mean setting up a different proc for the test version.
An example of a test IAM/RLS proc is shown below. The test job names are specified by the JOB parameter when starting the IAM/RLST procedure. The “test” IAM/RLS will need to have a different parmlib member so that different journal data sets can be specified.
Sample of Test IAM/RLS PROC
//IEFPROC EXEC PGM=IAMRLS,
// PARM='TEST,JOBNAME=JOB*',
// REGION=0M,DPRTY=(15,15),TIME=1440
//STEPLIB DD DSN=your.iam.loadlib,DISP=SHR
//SYSLIB DD DSN=your.iam.loadlib,DISP=SHR
//SYSPRINT DD SYSOUT=X
//RLSLOGDD DD SYSOUT=X
//SYSABEND DD SYSOUT=X
//RLSINFO DD SYSOUT=X
//IAMINFO DD SYSOUT=X
//RLOKJRNL DD DISP=SHR,DSN=your.lock.recovery.dataset
//IPARMLIB DD DISP=SHR,DSN=your.iam.icl(&MBR)
//IAMOVRID DD DISP=SHR,DSN=your.iam.icl(&OVR)
//IAMDSNTB DD DISP=SHR,DSN=your.iam.icl(&TBL)
IAM/RLS DD STATEMENTS
- ==
The DD statements needed in the IAM/RLS proc are described below.
DDNAME | Description |
STEPLIB | Specifies the IAM load library data set. This DD is optional if IAM is in the system link list. |
SYSLIB | Required DD statement that specifies the IAM load library data set. |
SYSPRINT | Required DD statement, specifying a sequential output data set that is normally printed. If specified as SYSOUT, make sure the class used is one that is not automatically purged, in case the output is needed for problem diagnosis. |
RLSLOGDD | Optional DD statement, specifying a sequential output data set that is normally printed. This file contains a log of activity and error messages. If specified as a SYSOUT, make sure that the class used is one that is not automatically purged, in case the output is needed for problem diagnosis. If not included in the IAM/RLS PROC, then IAM/RLS will dynamically allocate a printed log file to SYSOUT, using the SYSOUT class value specified by the SYSOUT=x IAM/RLS parameter. If the SYSOUT class is not specified, then the default SYSOUT class for the started proc will be used. By allowing this data set to be dynamically allocated, you can spin off the current log data at any time by using the IAM/RLS LOGSWITCH command. |
SYSABEND | An optional, but highly recommended DD statement, that will be used when a dump is taken due to an abend condition. An alternative would be to use a SYSMDUMP DD statement. Use of SYSUDUMP is not recommended, because it will contain insufficient information for problem diagnosis. |
RLSINFO | An optional DD statement that is required only if you want the IAM/RLS stats reports to be generated as specified by the STATS parameter in the startup parameters. |
RLOKJRNL | An optional DD statement that is required to utilize the record lock recovery / persistence function.IAM-RLS-Record-Lock-Recovery for detailed description, allocation and usage guidelines. |
IAMINFO | An optional, but highly recommended DD statement that will contain activity reports for each IAM file that is produced whenever that file is closed. If specified as SYSOUT, make sure the class used is one that is not automatically purged, in case the output is needed for problem diagnosis. An alternative to using the printed output is to enable the IAMSMF record, which will save a machine-readable format of the same data produced on the IAMINFO report. The IAMINFO reports can then be obtained from the systems SMF data using the IAMSMF program. |
IPARMLIB | An optional DD statement, which specifies an 80-character card image input data set containing various parameters and options for IAM/RLS. This data set is typically a PDS. |
IAMOVRID | An optional DD statement that specifies an 80-character card image input data set, which contains the IAM override statements. This provides a mechanism for indicating parameters, such as number enabling journaling for all files processed by IAM/RLS. |
IAMDSNTB | An optional DD statement that specifies an 80-character card image input data set. This data set contains the data set selection and data set exclusion lists for IAM/RLS processing. |
ABNLIGNR | A DD DUMMY to bypass Abend-AID dumps. |
ABNLDUMP | A DD DUMMY to bypass Abend-AID dumps. |