Resolve error MEMORY LOAD OVERFLOWS using Consumer Merge/Purge job on z/OS


How can I get rid the MEMORY LOAD OVERFLOWS in my the Consumer Merge Purge 2.7 job on z/OS?
The job’s report is showing this:
MEMORY LOAD OVERFLOWS                                             36
The other job has 0:
MEMORY LOAD OVERFLOWS                                               0


In the Consumer Merge/Purge 2.7 guide, memory loads are controlled by the combination of the CONTRL and MERGES parameter.


UPDATED: August 31, 2017

Suggestion 1 -
You can review the CONTRL and MERGES parameters on the job in question. 
On the CONTRL parameter, position 8 defines - MERGES STRING BREAK LENGTH
As it says – “… If n is too large (for the file being processed), then many duplicate pairs which could be found (if a smaller n were chosen) will not be found.  Then all (or most) memory loads will be stopped by running out of room, and two records which are identical will sometimes fall on opposite sides of the division enforced by the memory capacity. When this happens, the number of "overflows", which is displayed on the Control Total page, will be large.  If n is too small (again, for the file being processed), then there will be "too many" records in the memory at one time, and the comparison time required will be too large (or at least, larger than it need be). The total comparison time for a memory load will vary with the square of the number of records in the memory load, because each record is compared with every other record (in the same load). 
In general, a "controlled" termination of a memory load, such as is provided by the n character comparison, is more desirable than the "uncontrolled" termination which results from a memory load overflow. Ideally, n should be chosen small enough that all potential duplicates are always in the same memory load, and at the same time large enough that there are no memory load overflows….”
Suggestion 2 -
If changing this number on position 8 of the CONTRL will not work, then the other option is increase the number of records that can be loaded into a single Memory Load.
Please review pages 2.29 and 3.20 and 3.21 of the Consumer Merge/Purge guide.
The suggestion is to locate the CM30 source code and locate the MAXSAVIN.  The default is 100,000.
Then you could increase this value and recompile.

Environment Details

Products Affected:  Consumer Merge/Purge
Operating System: z/OS


  • No Downloads