使用 CICS 转换程序

语言转换程序将读取您的源程序并创建一个新程序。 大多数正常语言语句保持不变,但 CICS® 命令将转换为您编码所用语言所需的格式的 CALL 语句。

这些调用将调用 CICS提供的 EXEC 接口模块,这些模块稍后将链接编辑到装入模块中,这些模块将在执行时调用所请求的服务。

您可以通过指定转换程序选项来控制转换过程。 请参阅 定义转换程序选项

您可以通过以下方式指定选项:
  • 在编译器 (汇编程序) 提供用于指定选项的语句上,将它们作为 XOPTS 选项的子选项列出。
    表 1. 为每种语言提供的语句
    语言 语句
    COBOL CBL 注释
    COBOL PROCESS
    C #pragma
    C®++ #pragma
    PL/I * 进程
    汇编语言 *ASM 或 *PROCESS
  • 在转换步骤的 EXEC 作业控制语句的 PARM 操作数中列出您的选项。

    大多数安装使用编目过程来转换,编译 (组装) 和链接 CICS 程序,因此您在调用该过程的 EXEC 作业控制语句中指定此 PARM 字段。

    例如,如果 COBOL 程序的存储过程名称是 DFHYITVL,存储过程中翻译步骤的名称是 TRN,那么下面的示例语句将为 COBOL 程序设置翻译选项:
    // EXEC
    DFHYITVL,PARM.TRN=(VBREF,QUOTE,SPACE(2),NOCBLCARD)

如果您使用一种方法来指定选项,并使用另一种方法来指定相同选项或发生冲突的选项,那么语言语句中的规范将覆盖 EXEC 语句中的规范。 类似地,如果为单个选项指定多个值,而这些值在任一类型的语句上都有冲突,那么最后一个设置优先。 除 COBOL 程序外,这些语句必须放在每个源程序之前;无法批量处理其他语言的多个程序。

转换程序选项可以按任何顺序显示,用一个或多个空格或逗号分隔。 如果在选项的语言语句上指定它们,那么它们必须出现在 XOPTS 参数后面的括号中,因为其他选项将被转换程序忽略并传递到编译器。 下面的 COBOL 示例显示了同时传递翻译器和编译器选项的情况:
CBL RENT NODYNAM XOPTS(QUOTE SPACE(2))
以下示例显示了单独传递的转换程序选项:
#pragma XOPTS(FLAG(W) SOURCE);
* PROCESS XOPTS(FLAG(W) SOURCE);
*ASM XOPTS(NOPROLOG NOEPILOG)
如果使用 EXEC 作业控制语句的 PARM 操作数来指定选项,那么不需要 XOPTS 关键字,因为此处允许的唯一选项是转换程序选项。 但是,您可以使用 XOPTS ,带或不带关联的括号。 如果使用带括号的 XOPTS ,请确保将所有转换程序选项括起来。 例如,以下格式有效:
PARM=(op1 op2 .. opn)
PARM=(XOPTS op1 op2 .. opn)
PARM=XOPTS(op1 op2 .. opn)
以下格式无效:
PARM=(XOPTS(op1 op2) opn)

为了与先前发行版兼容,可以使用关键字 CICS 作为 XOPTS 的替代项,但在转换批处理 EXEC DLI 程序时除外。 请记住,如果使用 PARM 操作数更改 C 或 C++ #pragma 卡处理的缺省边界,那么也应该更改序列边界。 您可以使用 NOSEQUENCE 选项来执行此操作。

注:
*ASM 和 *PROCESS
  1. 对于汇编语言程序, *ASM 语句仅包含转换程序选项。 它们被视为汇编程序的注释。 *PROCESS 语句可以包含高级汇编程序 HLASM 的转换程序或汇编程序选项。
  2. 转换程序和汇编程序选项不能共存于同一 *PROCESS 语句中。
  3. *PROCESS 和 *ASM 语句必须位于输入的开头,并且任何汇编程序语句都不得出现在它们之前。 这包括注释和语句,例如 PRINT ONEJECT。 可以按任何顺序包括 *PROCESS 和 *ASM 语句。
  4. 仅包含转换程序选项的 *PROCESS 语句仅包含转换程序的信息,并且不会传递给汇编程序。
  5. 包含汇编程序选项的 *PROCESS 语句放置在转换后的程序中。
CBL
COBOL 编译器 LIB 选项不是 第 5 版及以后版本所必需的。 COBOL 由 CBLCARD 转换程序选项生成的编译器选项不包含 LIB 选项。 在翻译要由 COBOL 第 5 版之前的编译器处理的源代码时,必须指定 LIB 选项,而不能依赖 CBLCARD