使用本地的包括预处理器

本地包含预处理器允许使用 PL/I 指令 %INCLUDE 或 COBOL COPY 语句以外的包含指令,将外部源文件并入程序。

在开始前

创建本地属性组,并将其与本地 COBOL 或 PL/I 源文件或本地项目关联。
限制: macOS客户端不支持本地 include 预处理器。

您可以为包含预处理器设置内容类型关联,以定义预处理器在查找副本和包含文件时搜索的文件扩展名。 有关定义内容类型关联的指示信息,请参阅相关主题。 当您定义包含预处理器的内容类型关联时,产品会将 EXT( ) 参数传递给包含允许的文件扩展名列表 (例如 EXT("cpy","inc","mac")) 的包含预处理器。

关于此任务

本地包含预处理器位于安装产品时解压缩的 com.ibm.systemz.preprocessor.include 插件中。 您可以在单个 COBOL 或 PL/I 程序或包含一个或多个 COBOL 或 PL/I 程序的本地 z/OS® 项目中使用本地包含预处理器。 您还可以将其单独使用或作为多预处理器构建操作的一部分使用。
  • 当包含预处理器是编译前调用的唯一预处理器时,输入文件就是语法检查显示依赖关系操作所选择的 COBOL 或 PL/I 程序。
  • 在项目构建过程中调用包含处理器时,会对项目中的每个 COBOL 或 PL/I 程序进行处理,然后进行编译。 在这种情况下,输入文件就是当前正在处理的 COBOL 或 PL/I 源文件。
  • 当作为多预处理器操作的一部分调用包含预处理器并且在先前预处理器之后启动时,包含预处理器的输入文件是来自先前活动预处理器的输出文件。 此文件是先前活动预处理器的 预处理器输出文件名 输入字段中列出的文件。 有关设置多个预处理器的更多信息,请参阅使用多个本地预处理器

过程

要使用本地包含预处理器:

  1. 打开与资源或项目相关联的属性组的属性组编辑器,并打开 PL/I 页面。
  2. 从左侧列表中,单击 本地预处理器 以打开 " 本地预处理器 " 页面。
  3. 单击 新建
  4. 完成 " 本地预处理器 " 页面的 预处理器选项 部分中的字段。
    预处理器描述
    输入描述,例如 Include preprocessor
    预处理器名称
    输入包含预处理器的名称。 默认值为${bundle:com.ibm.systemz.preprocessor.include}/bin/operatingSystem/PPINCL01,其中operatingSystemmacoswin32。 ${bundle} 变量指向一个未打包的软件包或插件。 此变量用来查找包括预处理器。
    注意: 若您使用的是在 V14.1.4 或更早版本中创建的属性组,则使用 ${INSTDIR} 变量指向安装目录的预处理器名称仍保持有效。 对于 V 14.1.5, PPINCL01 预处理器包含在产品安装路径和 com.ibm.systemz.preprocessor.include 插件中。
    预处理器自变量
    包含预处理器可以采用以下参数:
    • TRACE(ON|OFF) 在工作站上,此选项向 TPF 远程控制台提供更多输出。 在 390 个系统上,此选项提供更多 JES 输出。 此输出供IBM®技术支持代表使用,不得在正常开发过程中使用,因为它会增加不需要的输出量并降低性能。 如果必须与 IBM 技术支持代表联系以确定问题,那么可以将此输出复制到通信中。 此选项的缺省值为 TRACE (OFF)。 如果未指定此选项,那么将使用缺省值。
    • FORMAT(ON|OFF) 在工作站和 390 系统上,此选项会更改为错误消息生成的 XML 的可读性。 FORMAT (ON) 使语句表写入六列,使 XML 文件更易读。 设置此选项会显着降低解析 XML 文件的性能,从而导致操作耗时更长。 此选项的缺省值为 FORMAT (OFF)。 如果未指定此选项,那么将使用缺省值。
    • NOCOPY(ON|OFF) 如果源包含 COPY REPLACE 语句,那么 INCLUDE 预处理器不支持处理 COPY REPLACE 语句。 预处理器不会替换副本文件中的字符串,也不会找到 COPY REPLACE 语句中指定的成员名。 要避免此问题,请使用 NOCOPY (ON) 预处理器选项。 此选项允许处理 -INC++INCLUDE 语句,但包含预处理器不会处理 COPY 语句和 %INCLUDE 语句。 编译器在预处理器之后处理这些语句。

      如果源包含成员名括在引号或单引号中的 COPY 语句,那么包含预处理器不支持处理这些语句。 要避免此问题,请使用 NOCOPY(ON) 预处理器选项。 此选项允许处理 -INC++INCLUDE 语句,但包含预处理器不会处理 COPY 语句和 %INCLUDE 语句。 编译器在预处理器之后处理这些语句。

    • CMT(ON|OFF) 当您指定 CMT(ON) 并打开展开的源文件时, include 预处理器会对原始 COPYINCLUDE 语句进行注释,将 copybook 或 include 文件放入源文件中,然后放置另一个注释以指示 copybook 或 include 文件的结尾。 展开的副本或包含文件以及注释类似于以下示例:
      * COPY ABC
      01  XYZ     PIC X
      01  FIRST  PIC 9
    • 有关显示扩展源的更多信息,请参阅相关主题。
    限制: 缺省情况下,此字段为空。 如果为包含预处理器定义内容类型,并在此字段中指定任何预处理器参数,那么必须使用 EXT () 手动添加希望预处理器识别的任何文件扩展名 参数,例如 EXT("cpy","inc"," ")
    预处理器输出文件名
    指定要用于预处理器输出的文件名。 如果省略此选项,那么将生成输出文件名。
    支持错误反馈
    选中此复选框以记录预处理器生成的错误。 选中此复选框将启用 错误反馈 XML 文件名 字段。 缺省情况下,此选项处于启用状态。
    错误反馈 XML 文件名
    指定要为错误反馈生成的 XML 文件的非限定名。 如果省略此选项,那么将生成错误反馈 XML 文件名。
    环境变量 (Set 语句)
    指定要传递到预处理器的任何环境变量。 此字段包含 SYSLIB 的值,但您必须更改该值以指向包含您的包含文件的文件夹。 SYSLIB 环境变量的路径长度限制为 4 K。 对于超过 4 K 的长度,不会发出错误消息,但是大于 4 K 的 SYSLIB 语句可能会导致语法检查操作在包含预处理器程序中异常结束。