When the COBOL-DB2 source code is given as an input in the pre-compilation stage, we get 2 important components — DBRM and modified source code.
In modified source code, the SQL statements are replaced by COBOL calls and the DBRM contains all the SQL statements which are present in the COBOL-DB2 program. The pre-compiler inserts the timestamp in both DBRM and modified source code.
In case of DBRM bind directly to the plan, the system compares the timestamp of the DBRM and load module when the COBOL-DB2 program is executed. In case there is a mismatch in the timestamp the JCL step calling that program will fail with the SQL error code -818.
In case of DBRM-package-plan combination, the system will compare the timestamp of the package (which is copied from DBRM) and load module. In case there is a mismatch in the timestamp then also the JCL step calling that program will fail with the SQL error code -818.
The timestamp comparisons take place to ensure that the correct versions and combination of load module/package/DBRM are picked up for the processing. As per the IBM documentation -818 SQL error code states that
“THE PRECOMPILER-GENERATED TIMESTAMP x IN THE LOAD MODULE IS DIFFERENT FROM THE BIND TIMESTAMP y BUILT FROM THE DBRM z”.