It is possible that two copies of a program load module may be loaded in the program pool at the same time.
DCMT DISPLAY PROGRAM
*** Program Definition Table - Dictionary Modules Indicated by "D" ***
Program Typ D DDname/Version# DictName Node
...
EMPSS01 SUB D Version 1
EMPSS01 SUB D Version 1 APPLDICT
Release : All supported releases.
Component : IDMS/DB
What causes this is a user running a program that needed to load EMPSS01 while having dictname APPLDICT set, and another user doing the same thing while no dictname is set (indicating the default dictionary). Typically APPLDICT is the default dictionary so the two loaded modules are the same.
If the load module is recompiled, how do you ensure that both copies are refreshed?
The DCMT DISPLAY PROGRAM and DCMT VARY PROGRAM commands allow the program name to be prefixed by a dictname.
To refresh the APPLDICT version:
DCMT VARY PROGRAM APPLDICT.EMPSS01 NCI
To refresh the default dictionary (or loadlib/CDMSLIB) version:
DCMT VARY PROGRAM *.EMPSS01 NCI
If you do not qualify the module name in the command with a dictname:
DCMT VARY PROGRAM EMPSS01 NCI
then the command will apply to the copy of the program loaded from the dictname that is currently set in the user session at the time the command is issued.