在每次执行COBOL-DB2程序时,都会比较装入模块的时间戳和包/ DBRM的时间戳。如果程序中变量的长度发生变化(SQL不变)并被编译,则装入模块将具有新生成的时间戳,另一方面,如果未执行BIND,则包/ DBRM将具有旧的时间戳。执行该程序时,调用该程序的JCL步骤将失败,并显示SQL错误代码-818。
如果我们有一个COBOL-DB2程序,其SQL语句将来将永远不会更改,则可以使用选项LEVEL对该程序进行预编译。