IAM/PLEX JCL Procedure
IAM/PLEX runs as a started task in a z/OS system. The IAM/PLEX 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/PLEX will be a task that should be kept running all the time. However, IAM/PLEX 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/PLEX.
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 a 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/PLEX that is used for the DB2 Lock Manager.
If you are installing IAM/PLEX, you can replace the execution of the IAMSTART procedure with the start up of IAM/PLEX. IAM/PLEX will automatically run IAMSTART to install the IAM VSAM Interface, if it is not already active. Note that subsequently shutting down IAM/PLEX will not deactivate the IAM VSAM interface, the IAM VSAM interface will be left active.
Multiple IAM/PLEX Address Spaces
Users can run one full function IAM/PLEX instance per LPAR of the same RLSGROUP. You can have other IAM/PLEX instances of the same RLSGROUP on the same LPAR. If the REMOTERLS parameter is not specified, then it will default to a REMOTERLS if there is already a ROUTER IAM/PLEX instance for the RLSGROUP on the LPAR. A REMOTERLS region is a TARGET-only region and cannot be connected directly by a batch job or CICS region. Users can start additional IAM/PLEX regions that are part of a different RLSGROUP on the same LPAR. Users can also have a mix of IAM/PLEX regions and IAM/RLS regions on the same LPAR. There could be several reasons to run multiple IAM/PLEX address spaces. For example, one might want to isolate different applications such that a failure with one application grouping will not impact other unrelated applications. Another reason might be for billing purposes, to be able to isolate as much as possible the processing for different applications or customers by eliminating common server address spaces. Or, it could be necessary or desirable for security purposes to have certain applications isolated from others.
Whatever the reason, customers that desire to utilize multiple IAM/PLEX address spaces will need to have well defined groups of data sets and processing that can be isolated from each other to make this possible.
The use of multiple IAM/PLEX address spaces is subject to the following restrictions:
- A batch job, CICS region, or TSO user can only be directly connected to ONE IAM/PLEX instance. All IAM data sets that require IAM/PLEX processing for that user address space must be handled by an IAM/PLEX instance, that is a member of the same RLSGROUP as the IAM/PLEX it is connected to.
- An IAM data set can only be opened by ONE IAM/PLEX instance at a time.
- Each IAM/PLEX instance must be started with its own unique proc and name.
- Each IAM/PLEX instance in an RLSGROUP must use the SYSTEM LOGGER, and the LOGSTREAM must be defined as part of a STRUCTURE in the coupling facility.
- All IAM/PLEX instances in the SYSPLEX must use the same Data Set Name Table.
- Each IAM/PLEX instance requires its own system LX. A system LX is the facility through which cross memory access to the IAM/PLEX address space is authorized. Due to system limitations on the number of system LX’s, this will restrict the maximum number of IAM/PLEX address spaces that can be used, unless the address space is started with the REUSASID=YES parameter on the START command for the IAMRLS procedure. If you are going to use the REUSASID=YES parameter, make sure that the DIAGxx member in parmlib also specifies REUSASID(YES).
IAM/PLEX PROC
In the ICL (Installation Control Library) that was part of the install package, is an example of the IAM/PLEX 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/PLEX parameters and for the IAM/PLEX override.
Sample of IAM/PLEX PROC: Member IAMPLEX in ICL
//IEFPROC EXEC PGM=IAMPLEX,MEMLIMIT=8G,
// 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
//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/PLEX Test Proc
The PARM=’TEST,JOBNAME=(JOBX*) parameter can be used in your IAM/PLEX startup procedure to start a test version of IAM’s VSAM interface (VIF). You will have to set up a different PROC using a unique RLSID and start the PROC with a STEPLIB to the load library with the level being tested. To run a job using the test IAM/PLEX you use the same STEPLIB and specify the RLSID of the test IAM/PLEX. If you start the IAM VSAM Interface (VIF) before starting IAM/PLEX, then you will have to put the PARM=’TEST,JOBNAME=(JOBX*)’ in the procedure that you use to start VIF. An example of a test IAM/PLEX proc is shown below. The test job names are specified by the JOB parameter when starting the IAMRLST procedure.
Sample of TEST IAM/PLEX PROC Member IAMPLEXT in ICL
//IEFPROC EXEC PGM=IAMPLEX,MEMLIMIT=4G,
// PARM='TEST,JOBNAME=(JOBX*)',
// 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
//RLSINFO DD SYSOUT=X
//SYSABEND DD SYSOUT=X
//RLOKJRNL DD DISP=SHR,DSN=your.lock.recvory.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/PLEX DD STATEMENTS
The DD statements needed in the IAM/PLEX 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/PLEX PROC, then IAM/PLEX will dynamically allocate a printed log file to SYSOUT, using the SYSOUT class value specified by the SYSOUT=x IAM/PLEX 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/PLEX 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/PLEX 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. See IAM/PLEX Record Lock Recovery for detailed description, allocation and usage guidelines. |
IPARMLIB | An optional DD statement, which specifies an 80-character card image input data set containing various parameters and options for IAM/PLEX. 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/PLEX. |
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/PLEX processing. |
IAMINFO | An optional DD statement that will contain the standard IAMINFO reports produced whenever an IAM file is closed. As this will generate a significant amount of output, it is recommended that it not be specified and that users enable the IAM SMF records to be recorded which contain the same information. |
ABNLIGNR | A DD DUMMY to bypass Abend-AID dumps. |
ABNLDUMP | A DD DUMMY to bypass Abend-AID dumps. |