PL/I 编程限制与要求
当 PL/I 程序作为 CICS® 应用程序使用时,需遵守某些限制和要求。
不能使用的函数和语句
- 不能使用以下多任务内置函数:
COMPLETIONPRIORITYSTATUS
- 不能使用以下多任务选项:
EVENTPRIORITYTASK
- 您不应使用以下 PL/I 语句:
CLOSEDELAYDELETEDISPLAYEXITGETHALTLOCATEOPENPUTREADREWRITESTOPWRITEUNLOCK
FETCH 和 RELEASE 语句受支持。 提供了 EXEC CICS 命令,用于存储和检索数据以及与终端进行通信。 但是,可以将 CLOSE , PUT 和 OPEN 用于 SYSPRINT。
- 您无法使用 PL/I 中的排序/合并功能。
- 不能使用静态存储器 (只读数据除外)。
编码要求
- 如果使用 STATIC 属性和 EXTERNAL 属性声明变量,那么还必须包含 INITIAL 属性。 如果未执行此操作,那么此类声明将生成无法由 CICS处理的公共 CSECT。
- 请勿定义变量或具有与转换程序生成的变量名称相同的变量名称的结构。 这些都是从 DFH 开始的。 请小心使用 LIKE 关键字,以避免隐式生成此类变量名。
- 所有 PROCEDURE 语句都必须为大写,但 PROCEDURE 名称除外,它可以为小写。
- *PROCESS 语句的 XOPTS 选项的子选项必须为大写。
- 在EXEC CICS 语句中,您无法使用 PL/I 的48字符集选项。
- 如果 CICS 命令在定义数据值时使用 SUBSTR 内置函数,那么它应包含 LENGTH 选项以指定数据长度,除非指定转换程序选项 NOLENGTH。 若未实现,翻译器将生成包含CSTG内置函数调用的 PL/I 调用,形式如下:
此调用被编译器拒绝。CSTG(SUBSTR(..,..,..))
64 位寻址
PL/I 程序不支持64位寻址模式。
64 位驻留
CICS 不支持 64 位驻留方式 (RMODE (64)) ,并将任何 RMODE (64) 程序视为 RMODE (31)。 即,将 RMODE (64) 程序装入到 31 位 (界线以上) 存储器中,而不是 64 位 (界线以上) 存储器中。