装入模块扫描程序 (DFHEISUP)

装入模块扫描程序实用程序可以扫描装入模块中的 CICS® 命令的装入库,并确定哪些模块包含特定的 API 或 SPI 命令。 例如,如果您知道必须更改特定 API 或 SPI 命令以利用 CICS中的新功能,那么可以使用装入模块扫描程序来标识包含该命令的所有装入模块。 装入模块扫描程序可以查找特定命令,命令上的选项或选项组合。 它还可以扫描未指定特定选项的命令。

装入模块扫描程序是批处理实用程序。 它将查找装入模块中的所有 EXEC CICS 命令,然后应用您创建的过滤器,以仅识别您感兴趣的命令。 它返回两种报告类型之一:
  • 摘要报告,提供包含过滤器指定的命令的模块列表,以及每个模块中指定的命令数。
  • 详细报告,其中包含每个模块的列表,以显示它包含哪些指定命令,哪些偏移量,包括 EDF 信息 (如果可用)。
这两种类型的报告都标识了每个装入模块的语言。

CICS 提供了 SDFHSAMP 中的样本作业 DFHEILMS ,您可以编辑并使用该作业来执行装入模块扫描程序。 在装入模块扫描程序的任何运行中,可以扫描装入库中的所有装入模块 (如果指定了完整的 PDS) ,也可以指定库中要扫描的某些装入模块。 一种有用的方法是对特定装入库运行摘要扫描,以生成包含您感兴趣的命令的模块列表。 您可以将此模块列表放入数据集中。 然后,您可以使用此数据集作为输入来运行详细扫描,以仅在包含您感兴趣的命令的模块上生成详细报告。

指定要报告为过滤器输入文件的命令。 您可以对感兴趣的命令进行命名。 您还可以包含或排除具有特定参数的命令。 "any" 运算符可用于搜索所有参数或所有命令。 提供了许多样本命令列表来帮助您。 使用 DFHEIDBR 来搜索在 3270 网桥环境中不受支持的命令。 使用 DFHEIDTH 来搜索允许访问共享存储器的命令,这可能使程序不具有线程安全性。 使用 DFHEIDAL 来搜索所有基本有效命令,并使用 DFHEIDNT 来查找所有非线程安全的 CICS 命令 (这将导致切换到 QR TCB)。

使用装入模块扫描程序时要记住的要点

  • 当您使用装入模块扫描程序时,与所有类型的扫描程序一样,无法保证命中是真实的。 由于模块中的静态数据,可能有一些错误的命中。 这些报告标识与一组条件 (在过滤器中指定的命令和选项) 匹配的候选者,并且所标识的候选者可能与您的需求不完全匹配。
  • 装入模块扫描程序设计为在单次运行时最多扫描约 100 个装入模块。 样本作业 SDFHSAMP 中的 DFHEILMS 指定区域大小 512M,这适合于此扫描量。 如果需要在单次运行时扫描更多装入模块,那么可以增大区域大小。 但是,请勿在作业上指定 REGION=0M 以运行装入模块扫描程序,因为这可能会导致性能问题。 如果要扫描的装入库中有许多装入模块,那么您可能希望将较小批次的装入模块复制到新的装入库中,并扫描新的装入库。
  • 为确保 16MB 行下方有足够存储空间,请指定 Language Environment® 运行时选项 ALL31(ON )。 ALL31(ON ) 是 CICS 的默认 Language Environment 运行时选项。
  • PL/I 编译器默认采用编译器选项CEESTART(LAST)。 对于CEESTART(LAST),必须包含一张ENTRY CEESTART卡来链接MAIN例程,具体操作请参阅 PL/I 编译器文档。 ENTRY CEESTART 卡由 DFHEISUP 用于查找 API 或 SPI 命令。 或者,可以显式指定 CEESTART (FIRST)。

工作方式: 装入模块扫描程序 (DFHEISUP)

图 1 显示了扫描程序的工作方式。 装入模块扫描程序将查看您提供的模块列表中标识的模块。 它会生成模块中所有 EXEC CICS 命令的列表。 接下来,它将查看您提供的过滤器输入文件,其中包含您感兴趣的命令的列表。 它将此过滤器应用于它已生成的列表,以创建模块中感兴趣的 EXEC CICS 命令的过滤列表。 最后,它会生成一个报告,其中显示包含您感兴趣的一个或多个命令的每个模块,并列出其中每个模块中感兴趣的命令。

图 1。 带有过滤器的装入模块扫描程序
装入模块扫描程序将查看您提供的模块列表中标识的模块。 它会生成模块中所有 EXEC CICS 命令的列表。 接下来,它将查看您提供的过滤器输入文件,其中包含您感兴趣的命令的列表。 它将此过滤器应用于它生成的列表,以创建模块中感兴趣的 EXEC CICS 命令的过滤列表。 最后,它会生成一个报告,其中显示包含您感兴趣的一个或多个命令的每个模块,并列出其中每个模块中感兴趣的命令。