Dynamic exit installation procedure
In many installations, 90% of the data sets are inactive (not in use) or become inactive over some period of time (such as when batch jobs that are using the data sets finish or when TSO users logoff). These data sets typically remain inactive for a long period of time. If a data set is in use when FDRMOVE is ready to move it, FDRMOVE bypasses it and then periodically checks it until the data set is no longer in use. Then FDRMOVE moves it, typically without disruption. However, some data sets may be needed during the move process.
During the move process, FDRMOVE holds an exclusive SYSDSN enqueue on each data set while it is actively being moved, so the data set would not be available to other applications or jobs. There can be a small number of data sets that would attempt to be accessed by an application or job after the move process has started and before the move has completed, which would usually only occur during a move of a large data set using normal I/O.
FDRPAS only holds an exclusive SYSDSN enqueue on each data set for a relatively short period of time while processing the volume’s VTOC during initial processing. The purpose is to determine how much of the data set’s allocated space is used. FDRPAS does not wait for the ENQ; if the data set is in use, FDRPAS just copies all of the allocated space instead of only the used space. If FDRPAS does get the ENQ, it is possible that an application or job would attempt to access the data set during the short time that FDRPAS holds the ENQ.
The FDRPAS/FDRMOVE Dynamic Allocation exit addresses the applications that attempt to access data sets that are enqueued by FDRMOVE or FDRPAS. With the exit installed, dynamic allocations are monitored and checked to see if the data set is enqueued by FDRPAS or FDRMOVE. If it is, this dynamic allocation is intercepted and delayed. This delay is comparable to a recall of an archived data set by a task that requires a data set that was archived.
Dynamic Exit Installation
The following section describes the procedure for the dynamic installation of the FDRPAS/FDRMOVE exit.
The exit, FDR0009I, intercepts all dynamic allocations looking for data sets that are being held by FDRPAS and FDRMOVE. All dynamic allocations (SVC 99) are intercepted and the return codes checked. Successful dynamic allocations are returned. Failed dynamic allocations are checked for the return code indicating “data set in use”. If FDRMOVE is holding the enqueue, the dynamic allocation is delayed for a time value (default is two seconds) and the dynamic allocation retried. This process is repeated for a specified number of times (default is 255 times). The default wait time using these defaults would be eight minutes. After the wait time has expired (default of eight minutes), the dynamic allocation is returned to the user for processing.
The exit, FDR0009I, is dynamically installed by program FDRMVDAX. The JCL to install FDR0009I for production (to intercept all dynamic allocations for all FDRPAS and FDRMOVE related jobs) while accepting the coded defaults is as follows.
//FDRMVDAX JOB 'INSTALL THE FDRPAS/FDRMOVE EXIT'
//FDRMVDAX EXEC PGM=FDRMVDAX
//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSUDUMP DD SYSOUT=*
This JCL is supplied in member FDRMVDAX in the FDR Installation Control Library (ICL).
Program FDRMVDAX supports the following keywords that are specified on the PARM field:
Operands
[PROD|TEST]
Specifies how the exit is to be used.
PROD
Is used to intercept ALL dynamic allocations.
TEST
Is used to only intercept dynamic allocations from selected jobs.
DEBUG
Display startup values as well as trace data for the dynamic allocations that are intercepted.
JOBNAME=
jobname
Specifies the job(s) that are to be processed by the TEST version of the exit. JOBNAME= may be abbreviated as JOB=. This keyword can only be specified with the TEST keyword. The value specified may be:
- A single job name, for example, JOBNAME=XYZ
- A job name prefix followed by an asterisk, for example, JOBNAME=XYZ*
- Up to five job names or prefixes enclosed in parenthesis, for example, JOB=(ABC,XYZ*,SYS*).
TSO user ids and started task names are also checked for a match and are eligible for processing by the TEST version of the exit. Any job that does not match is not processed by the exit. If JOBNAME=* or JOB=* is specified, then all jobs are processed by the TEST version of the exit; in effect, this would be a simulation of the PROD keyword.
LOOPS=
nnn
Maximum retry loop count. Valid values are from 1 to 800.
Default: 255.
WAITIME=
n
Wait time in seconds between loops. Valid values are from 1 to 9.
Default: 2.
Install the FDRMOVE Dynamic Allocation Exit
To install the FDRPAS/FDRMOVE Dynamic Allocation exit and give FDR0009I a maximum of 40 minutes to hold the data sets that have been intercepted as being moved by an FDRPAS or FDRMOVE job (with the recommended production values):
//FDRMVDAX JOB 'INSTALL THE FDRPAS/FDRMOVE EXIT'
//FDRMVDAX EXEC PGM=FDRMVDAX,PARM='WAITIME=3,LOOPS=800'
//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSUDUMP DD SYSOUT=*
The Dynamic Allocation exit can be removed or deactivated by using program FDRMVDAD.
To deactivate a production install of the Dynamic Allocation exit, use the following JCL.
//FDRMVDAD JOB 'DEACTIVATE THE FDRPAS/FDRMOVE EXIT'
//FDRMVDAD EXEC PGM=FDRMVDAD
//STEPLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSLIB DD DISP=SHR,DSN=fdrpas.loadlib
//SYSUDUMP DD SYSOUT=*
This JCL is supplied in member FDRMVDAD in the FDR Installation Control Library (ICL).
If a version of the exit is currently installed and an FDRPAS or FDRMOVE job is actively moving data sets that may cause jobs to be intercepted by the exit, you should not replace or deactivate the exit until the FDRPAS and FDRMOVE job(s) have completed or been successfully suspended.