采用 COBOL 进行编码

在 COBOL 中编码 IBM® MQ 程序时,请注意以下部分的信息。

命名常量

常量的名称显示为将下划线字符 (_) 包含作为名称的一部分。 在 COBOL 中,必须使用连字符字符 (-) 来代替下划线。 具有字符串值的常量使用单引号字符 (') 作为字符串定界符。 要使编译器接受此字符,请使用编译器选项 APOST。

副本文件 CMQV 包含以命名常量作为 10 级项的声明。 要使用常量,请显式声明 01 级项,然后使用 COPY 语句在常量的声明中进行复制:

WORKING-STORAGE SECTION.
01 MQM-CONSTANTS.
COPY CMQV.

但是,此方法导致常量即使在未引用的情况下也会占用程序中的存储器。 如果常量包含在同一运行单元内的许多单独程序中,那么将存在常量的多个副本;这可能导致使用大量主存储器空间。 可以通过向 01 级声明添加 GLOBAL 子句来避免此情况:

* Declare a global structure to hold the constants
01 MQM-CONSTANTS GLOBAL.
COPY CMQV.

这仅为运行单元内的一个常量集分配存储器;但是,常量可由运行单元内的任意程序引用,而不只是由包含 01 级声明的程序引用。

确保结构对齐

应注意确保传递到 MQ 调用上启动的 IBM MQ 结构必须在字边界上对齐。 字边界为 4 字节 (对于 32 位进程) , 8 字节 (对于 64 位进程) 和 16 字节 (对于 128 位进程) ( IBM i )。

在可能的情况下,将所有 IBM MQ 结构放在一起,以便它们都是边界对齐的。