输出 Db2 precompiler
Db2 precompiler 的主要输出是一个数据库请求模块(DBRM)。 然而, Db2 precompiler 还生成修改后的源语句、源语句列表、引用主机名和列的语句列表以及诊断信息。
提示: Db2 coprocessor 是应用程序中处理SQL语句的推荐方法。 与 Db2 precompiler 相比, Db2 coprocessor 对SQL程序的限制更少,并且更全面地支持最新的SQL和编程语言增强功能。 参见使用 Db2 协处理器处理SQL语句。
具体来说, Db2 coprocessor 或 Db2 precompiler 会产生以下类型的输出:
- 列表输出
- Db2 预编译器在SYSPRINT数据集中写入以下信息:
- 预编译源代码列表
如果指定了 Db2 预编译选项SOURCE,则将生成源代码列表。 源代码列表包括预编译器源代码语句,以及由预编译器分配的行号。
- 预编译器诊断
预编译器生成诊断信息,其中包括有错误的语句的预编译器行号。
- 预编译器交叉引用列表
如果指定了 Db2 预编译选项XREF,则会产生交叉引用列表。 交叉引用列表显示了引用主机名和列的SQL语句的预编译行号。
SYSPRINT数据集的LRECL为133,RECFM为FBA。 此数据集使用源程序的CCSID。 预编译器列表输出中的语句编号与列表中的显示一致。
- 预编译源代码列表
- 终端诊断
- 如果终端输出文件SYSTERM存在, Db2 预编译器会将诊断信息写入其中。 源语句的一部分与该文件中的消息一起。 通常情况下,您可以使用SYSTERM文件来代替SYSPRINT文件来查找错误。 此数据集使用EBCDIC。
- 修改后的源语句
- Db2 预编译器将处理的源代码语句写入SYSCIN,即编译器或汇编器的输入数据集。 该数据集必须具有属性 RECFM F 或 FB,以及 LRECL 80。 修改后的源代码包含对 Db2 语言接口的调用。 被调用语句所替换的 SQL 语句以注释形式显示。 此数据集使用源程序的CCSID。
- 数据库请求模块
- 数据库请求模块(DBRM)是一个数据集,其中包含从源程序中提取的SQL语句和宿主变量信息,以及识别程序并将DBRM与翻译后的源语句联系起来的信息。 它成为绑定过程的输入。
数据集需要空间来容纳所有SQL语句,以及每个主机变量名称和一些标题信息。 仅标题信息一项,每个DBRM就需要大约两个记录,每个SQL记录需要20个字节,每个主机变量需要6个字节。
有关DBRM的精确格式,请参阅库前缀为.SDSNMACS 的DBRM映射宏DSNXDBRM和DSNXNBRM。 数据集的DCB属性为RECFM FB,LRECL 80。 预编译器设置特性。 您可以使用IEBCOPY、IEHPROGM、TSOCOPY和DELETE命令,或其他PDS管理工具来维护这些数据集。
重要提示: 请勿修改DBRM的内容。 如果这样做,可能会出现不可预测的结果。 Db2 不支持修改后的DBRM。在DBRM中,SQL语句和主机变量名称列表使用 UTF-8 字符编码方案。
DBRM中的所有其他字符字段均使用EBCDIC编码。 DBRM标头中的当前发布标记(DBRMMRIC)根据预编译器的发布进行标记,与NEWFUN的值无关。