COBOL 嵌入式 SQL 应用程序的包含文件
特定于主语言的 COBOL 包含文件的文件扩展名为 .cbl。如果您使用
IBM® COBOL 编译器的“System/390®
主数据类型支持”功能部件,那么应用程序的 DB2® 包含文件位于
$HOME/sqllib/include/cobol_i 目录中。
如果您使用提供的脚本文件来构建 DB2 样本程序,那么必须将脚本文件中指定的包含文件路径更改为 cobol_i 目录而不是 cobol_a 目录。
如果您未使用 IBM COBOL 编译器的“System/390 主数据类型支持”功能部件,或者使用此编译器的先前版本,那么应用程序的 DB2 包含文件在以下目录中:
$HOME/sqllib/include/cobol_a
为了找到包含文件,DB2 COBOL 预编译器将先搜索当前目录,然后搜索
DB2INCLUDE 环境变量所指定的目录。请考虑下列示例:
- EXEC SQL INCLUDE payroll END-EXEC.
如果未将 INCLUDE 语句中指定的文件引在引号中(如先前示例所示),那么预编译器将在它查找的每个目录中依次搜索 payroll.sqb、payroll.cpy 和 payroll.cbl。
- EXEC SQL INCLUDE 'pay/payroll.cbl' END-EXEC.
如果将文件名括在引号中(如上所示),那么不会对该文件名添加扩展名。
如果引号中的文件名未包含绝对路径,那么将使用 DB2INCLUDE 的内容来搜索文件(此内容被添加到 INCLUDE 文件名中指定的任何路径之前)。例如,对于用于 AIX® 的 DB2 数据库系统而言,如果 DB2INCLUDE 设置为“/disk2:myfiles/cobol”,那么预编译器将依次搜索“./pay/payroll.cbl”、“/disk2/pay/payroll.cbl”和“./myfiles/cobol/pay/payroll.cbl”。该文件的实际路径将显示在预编译器消息中。在 Windows 平台上,请将以前显示的示例中的正斜杠替换为反斜杠 (\)。
注: DB2 命令行处理器将对 DB2INCLUDE 的设置进行高速缓存。要在发出任何 CLP 命令后更改 DB2INCLUDE 的设置,请输入 TERMINATE 命令,然后重新连接到数据库并进行预编译。
下面描述可以在应用程序中使用的包含文件:
- SQLCA (sqlca.cbl)
- 此文件定义 SQL 通信区 (SQLCA) 结构。SQLCA 包含数据库管理器所使用的变量,这些变量为应用程序提供关于 SQL 语句和 API 调用的执行情况的错误信息。
- SQLCA_92 (sqlca_92.cbl)
- 此文件包含 SQL 通信区 (SQLCA) 结构的 FIPS SQL92 入门级相容版本。在编写符合 FIPS SQL92 入门级标准的 DB2 应用程序时,应该包括此文件以代替 sqlca.cbl 文件。当 LANGLEVEL 预编译器选项设置为 SQL92E 时,DB2 预编译器将自动包括 sqlca_92.cbl 文件。
- SQLCODES (sqlcodes.cbl)
- 此文件为 SQLCA 结构的 SQLCODE 字段定义常量。
- SQLDA (sqlda.cbl)
- 此文件定义 SQL 描述符区域 (SQLDA) 结构。SQLDA 用于在应用程序与数据库管理器之间传递数据。
- SQLEAU (sqleau.cbl)
- 此文件包含 DB2 安全性审计 API 所需的常量和结构定义。如果使用这些 API,那么需要在程序中包括此文件。此文件还包含审计跟踪记录中的字段的常量和关键字值定义。这些定义可供外部或供应商审计跟踪抽取程序使用。
- SQLETSD (sqletsd.cbl)
- 此文件定义表空间描述符结构 SQLETSDESC,该结构将被传递到“创建数据库”API,即 sqlgcrea。
- SQLE819A (sqle819a.cbl)
- 如果数据库的代码页是 819 (ISO Latin-1),那么此序列将根据主机 CCSID 500(EBCDIC 国际)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLE819B (sqle819b.cbl)
- 如果数据库的代码页是 819 (ISO Latin-1),那么此序列将根据主机 CCSID 037(EBCDIC 美国英语)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLE850A (sqle850a.cbl)
- 如果数据库的代码页是 850 (ASCII Latin-1),那么此序列将根据主机 CCSID 500(EBCDIC 国际)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLE850B (sqle850b.cbl)
- 如果数据库的代码页是 850 (ASCII Latin-1),那么此序列将根据主机 CCSID 037(EBCDIC 美国英语)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLE932A (sqle932a.cbl)
- 如果数据库的代码页是 932(ASCII 日语),那么此序列将根据主机 CCSID 5035(EBCDIC 日语)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLE932B (sqle932b.cbl)
- 如果数据库的代码页是 932(ASCII 日语),那么此序列将根据主机 CCSID 5026(EBCDIC 日语)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQL1252A (sql1252a.cbl)
- 如果数据库的代码页是 1252(Windows Latin-1),那么此序列将根据主机 CCSID 500(EBCDIC 国际)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQL1252B (sql1252b.cbl)
- 如果数据库的代码页是 1252(Windows Latin-1),那么此序列将根据主机 CCSID 037(EBCDIC 美国英语)二进制整理顺序对非 FOR BIT DATA 字符串进行排序。此文件由 CREATE DATABASE API 使用。
- SQLSTATE (sqlstate.cbl)
- 此文件为 SQLCA 结构的 SQLSTATE 字段定义常量。
- SQLUDF (sqludf.cbl)
- 此文件定义用于编写用户定义的函数 (UDF) 的常量和接口结构。
- SQLUTBCQ (sqlutbcq.cbl)
- 此文件定义“表空间容器查询”数据结构 SQLB-TBSCONTQRY-DATA,此结构与 sqlgstsc、sqlgftcq 和 sqlgtcq 表空间容器查询 API 配合使用。
- SQLUTBSQ (sqlutbsq.cbl)
- 此文件定义“表空间查询”数据结构 SQLB-TBSQRY-DATA,此结构与 sqlgstsq、sqlgftsq 和 sqlgtsq 表空间查询 API 配合使用。