Some IDMS COBOL programs have multiple copies loaded concurrently in the same program pool .
What can cause this?
DCMT D PROGRAM shows:
Program Name nnnnnnnn Ddname CDMSLIB
Type PROGRAM Type LOADLIB
Language COBOL Dictname
Size (bytes) 00021608 Dictnode
ISA size 00000000 Database key NOT IN DICT
Status ENABLED AND INSRV Storage Prot NO
Dynamic NOT ALLOWED Residence IN POOL, MULTIPLE COPIES
Reusable YES Threading CONCURRENT
Reentrant FULLY REENTRANT Overlayable YES
Tasks use ct 000 New Copy ENABLED
Times called 00001062 Times loaded 000004
PGM chk thrh 005 Pgm check ct 000
Dump thrh 000 Dump ct 000
Amode 31 Rmode ANY
PDE address 17C68C60 MPmode ANY
Savearea YES Mult Enclave ON
Address Debug In Pool Copy
30A4A000 NO YES TEMP
30A54000 NO YES TEMP
30B5E000 NO YES TEMP
30B64000 NO YES TEMP
z/OS and z/VSE Operating Systems
This can happen when IDMS COBOL programs are defined as QUASIREENTRANT. This is the default for COBOL but should only used for old VS COBOL programs which are not LE compliant. This causes a separate copy of the program to be loaded for each task when running multitasking.
For COBOL LE compliant programs they should be defined as REENTRANT so only one copy of the program will be loaded.
Change the programs definition in the SYSGEN to be defined as REENTRANT.