After moving the new MODULEs for the program into the production environment and issuing the REFRESH command online, the first attempt to run the application using the new code results in the following runtime error:
"1-IDAELPGM20E - Date/Time stamp discrepancy: PGM name VER PRD SYS sss"
The error causes the end user who was executing the application before the REFRESH to be dropped out of the Ideal for Datacom session due to QUITIDEAL YES, the typical option setting in a production environment. When the end user signs back into the application, they can then run successfully with the new subprogram code.
Why did this happen?
Release: Ideal for Datacom
When the application runs, Ideal verifies that the MODULEs of the application program (-R and -U) have the same date and time stamp. A copy of the -U module is saved in CICS Extended Shared DSA for each terminal session running the application. This copy must also agree with the CICS program modules. In this scenario, the IDAELPGM20E message was issued because the copy of the -U did not agree with the -R, -U, and -S modules loaded by the REFRESH command. The -R is the reentrant part of the application program, the -U is the updateable part, and the -S is the symbol table used to issue error messages for the application program. When the REFRESH command was issued, a request was made to CICS to phase in the new version the next time there is a LOAD request. The Ideal REFRESH command does a CICS PHASEIN command in all releases of CICS Transaction Server, instead of the CICS NEWCOPY command. The PHASEIN command causes the refresh to occur whether or not the module is in use. If it is, the copy or copies in use remain in DSA until they are no longer in use, but all requests that occur after the refresh use the new copy.
To avoid most date/time errors, use the Ideal DISABLE run command to prevent end users from running the application until after the new code has been moved into production and the REFRESH command has successfully executed. Note that it is still possible to get a date/time error if the end user has not been active at the terminal in between the time the DISABLE and ENABLE commands have been issued. The -U updateable part of an application is copied to ESDSA in CICS and belongs to that particular terminal session. If the end user is not active at their terminal during the time when the DISABLE, REFRESH, ENABLE functions occur, the session storage will still contain a copy of the old version of the -U module.
There are several date/time discrepancy errors that are possible since Ideal will verify the integrity of an application. Various checks are done between the modules for the program and panel as well as with the Dictionary MODULE entity for the program and panel. IDAELPGM20E is just one common example. If at all possible, application migrations should be done when CICS is re-cycled. But, if there is an urgent need to move a new version into production, always use the DISABLE run function to minimize any date/time errors.