转换过程

对于没有集成转换程序的编译器, CICS® 为您可以编写的每种语言提供一个转换程序,以处理 EXEC CICS, EXEC CPSM 和 EXEC DLI 语句。 对于具有集成转换程序的编译器,编译器将直接调用 CICS 转换程序以处理这些命令的转换。

语言转换程序读取源程序并创建新程序; 大多数正常语言语句保持不变,但 CICS 命令会转换为您编码所用语言所需的格式的 CALL 语句。 这些调用将调用 CICS提供的 EXEC 接口模块,这些模块稍后将链接编辑到装入模块中,然后这些调用将在执行时调用所请求的服务。

有三个步骤: 翻译,编译 (组合件) 和链接编辑。 图 1 显示了以下 3 步骤。

图 1。 准备应用程序
此图显示如何将源程序转换为 SYSPUNCH 源文件,然后对该文件进行编译以创建 OBJECT MODULE 和编译器列表。 对对象模块进行链接编辑以形成 LOAD MODULE ,然后将其存储在 LOAD LIBRARY 中。

如果系统管理员已定义用于识别受限命令 parmlib 成员 DFHAPIR 中受限 CICS API 和 SPI 命令的规则,那么在转换期间, CICS 转换程序还会根据受限命令和关键字来检查源程序。 如果发生违例,那么 CICS 转换程序将发出警告或错误消息,并且转换可能会失败。 有关更多信息,请参阅 控制特定 CICS API 和 SPI 命令的使用

所有语言的转换程序都使用一个输入文件和两个输出文件:
SYSIN
(转换程序输入) 是包含源程序的文件。

如果 SYSIN 文件定义为固定分块数据集,那么该数据集可拥有的最大记录长度为 80 字节。 将记录长度大于 80 字节的固定分块数据集传递到转换程序会导致转换程序执行终止。 如果 SYSIN 文件定义为变量分块数据集,那么该数据集可拥有的最大记录长度为 100 字节。 将记录长度大于 100 字节的变量分块数据集传递给转换程序会导致转换程序停止并产生错误。

SYSPUNCH
(已翻译的源代码) 是源代码的已翻译版本,它将成为编译 (汇编) 步骤的输入。 在此文件中,源已按如下所示进行更改:
  • 已插入 EXEC 接口块 (EIB) 结构。
  • EXEC CICS , EXEC CPSM 和 EXEC DLI 命令已转换为函数调用语句。
  • 已处理 CICS DFHRESP , EYUVALUE 和 DFHVALUE 内置函数。
  • 如果程序包含 EXEC DLI 语句,那么已插入数据交换块 (DIB) 结构和初始化调用。

要转换的 CICS 命令仍显示在源中,但仅作为注释显示。 通常,非CICS 语句保持不变。 转换程序的输出始终转至 80 字节的固定记录长度数据集。

SYSPRINT
(转换程序列表) 显示转换程序生成的消息数,以及与任何消息关联的最高严重性代码。 也会显示用于转换程序的选项,除非已使用 NOOPTIONS 选项禁止这些选项。

对于 COBOL , C , C++ 和 PL/I 程序, SYSPRINT 还包含消息本身。 此外,如果指定转换程序的 SOURCE 选项,那么还会在 SYSPRINT 中获取源的带注释列表。 此列表包含与后续编译列表几乎相同的信息,因此许多安装选择将其省略 (NOSOURCE 选项)。 但是,在编译列表中不存在的此列表中可能需要的一项是行号 (如果转换程序正在分配这些行号)。 当您使用执行诊断工具 (EDF) 进行调试时,行号是指示代码中的点的一种方法。 如果指定 VBREF 选项,那么还会获取程序中的命令列表 (按行号交叉引用) ,并且您可以将其用作用于 EDF 目的的源列表的替代项。

对于汇编语言程序, SYSPRINT 仅包含转换程序选项,消息计数和最大严重性代码。 消息本身将作为相关语句之后的注释插入 SYSPUNCH 文件中。 这会使汇编程序将它们复制到汇编程序列表中,您可以在其中对它们进行检查。 您还可以看到由于转换程序迂到问题而由汇编程序生成的 MNOTE。

注: 如果使用 EXEC SQL ,那么需要执行其他步骤来转换 SQL 语句和绑定。

CICS 提供了一个过程,用于针对其支持的每种语言按顺序执行这些步骤。 使用 CICS提供的过程来安装应用程序 描述了如何使用这些过程以及它们所执行的操作。

您可以通过指定多个 选项来控制转换过程。 例如,如果程序使用 EXEC DLI 调用,那么需要告知转换程序。

转换程序可能会生成错误消息,检查这些消息与检查编译器和链接编辑器生成的消息一样重要。 请参阅 CICS提供的转换程序 以获取这些消息的位置。

EXEC 命令将转换为调用 CICS 接口模块的 CALL 语句。 在链接编辑步骤中,这些模块将合并到对象模块中,您将在链接编辑输出列表中看到这些模块。 您可以在 CICS提供的接口模块中了解有关这些模块的更多信息。