When running a CA IDMS batch job, some steps may complete normally but others may get these errors, causing the job to fail:
DC205020 DBIO GETMAIN ERR RC=0004 SIZE=0B039740 CALLER=95439E86
DC205019 IOSTATUS=0000 VERB=001 ERRSW=006 MOD=191 IOP=18DB70A0
Jobs running with PREFETCH can be at particular risk for these errors when the FILE_BUF parm is used to specify larger run=-time buffers.
The error message you're seeing often are issued when the system is having trouble finding enough region to satisfy the request.
When this message is encountered, it is important to review how much space for buffers the job step will allocate, and the region required for that. To determine this, run a LOOK DMCL against the DMCL specified in the job steps. Then:
1- 1- Examine each file definition in the DMCL.
2- 2- For each file, note the buffer that it uses. Specifically note the page size of the buffer and the number of pages that will be allocated. If the job is running local mode make certain you are using the buffer pages defined for local mode use.
3- 3- Multiply the page size times the number of pages; this will give you an initial count of the number of bytes that will allocated for the buffer.
4- 4- Check the JCL to see if it specifies a FILE_BUF parm. A FILE_BUF parameter for any of the files that share the buffer will add the specified pages to the buffer when that buffer is allocated. These pages are not restricted to the named file, they simply add to the assigned buffer. If multiple files all share the same buffer, and a FILE_BUF is specified for each of them, then you will need to total the values specified to get the total number of additional pages that will be allocated for the buffer.
5- 5- Multiply these number of FILE_BUF pages by the buffer page size to get the number of additional bytes required for the buffer. Add this to the initial count you got in step 3.
6- 6- Repeat this process for all the buffers that will be readied by the job step.
7- 7- Total the number of bytes required for each buffer. Ensure that the REGION card for the job specifies an amount that it larger than this sum. The job will require additional storage beyond what is required for the buffers, but this will be one of the larger space allocations it requires.
Note: A buffer will only be opened in a job step if one or more of the assigned files are opened; files will only be opened if the associated area is Readied by the Local mode batch program being executed in that step. This is why some steps in a job may run fine while others may abend because of inadequate space.
Let’s assume that the DMCL includes definitions for multiple files as outlined below.
File EMPFILE1 uses buffer DDLDCLOD-BUFF, which has a page size of 27996; and the DMCL defines 5 pages for local use. 5 pages x 27996 bytes per page is about 140K.
If the SYSIDMS has a FILE_BUF which specifies 2000 pages, that adds about 56 MB when this buffer gets allocated in the batch job. (2000 x 27996).
File CUSTFIL1 uses buffer DEFAULT_BUFF, which has a page size of 18452; and the DMCL defines 25 pages for local jobs. That is about 462K. If the SYSIDMS has FILE_BUF for this file’s DDName also, which specifies 2000 pages, that will add about 37 MB when this buffer gets allocated in the batch job.
File CUSTFIL2 uses the same buffer DEFAULT_BUFF, so if there is an additional SYSIDMS FILE_BUF for that file, it will add an additional 2000 pages for this buffer adding another 37 MB.
Adding up these totals is about 94 MB. If the job specifies a REGION=100M, you can see that we are very close to that and we have only considered 2 buffers and 3 of the FILE_BUF parameters.
There will be storage other than buffers allocated in the job as well, so a job step that readied these 3 files could easily exceed the specified REGION.
When adding FILE_BUF parameters you should always determine which buffers will be affected and calculate the amount of storage you will be telling IDMS to add to the relevant buffers and then be sure your REGION= is large enough to accommodate the storage it will require.