POINTER 短语
使用 USAGE IS POINTER 定义的数据项是 指针数据项。 指针数据项 是 4 字节的基本项或 8 字节的基本项,具体取决于 ADDR(32) 或 ADDR(64) 编译器选项是否生效。
您可以使用指针数据项来完成有限的基本寻址。 指针数据项可以进行等式比较,也可以移动到其他指针项。
只能使用指针数据项:
- 在 SET 语句中 (仅格式 5 和格式 8 )
- 在关系条件中
- 在 CALL 语句, ENTRY 语句或 PROCEDURE DIVISION 头的 USING 短语中
指针数据项可以是 MOVE 语句或输入/输出语句中引用的字母数字组的一部分。 但是,如果指针数据项是组的一部分,那么执行语句时不会转换值。
指针数据项可以是 REDEFINES 子句的主题或对象。
SYNCHRONIZED 可与 USAGE IS POINTER 一起使用,以获得指针数据项的高效使用。
指针数据项的 VALUE 子句只能包含 NULL 或 NULLS。
指针数据项不能是条件变量。
指针数据项不属于任何类或类别。
下表列出了可用于或不能用于描述使用 USAGE IS POINTER 定义的组项或基本项的子句。
| 可与 USAGE IS POINTER 配合使用 | 不能与 USAGE IS POINTER 配合使用 |
|---|---|
GLOBAL clause
EXTERNAL clause OCCURS clause LIKE 子句 |
DATE FORMAT 子句
对齐子句 PICTURE 子句 BLANK WHEN ZERO 子句 TYPE 子句 FORMAT 子句 |
在处理相对应的短语时,将忽略指针数据项。
可以将指针数据项写入 文件,但在后续读取包含该指针的记录时,包含的地址可能不再表示有效的指针。
对 ADDRESS OF 专用寄存器隐式指定了 USAGE IS POINTER。 有关更多信息,请参阅 COBOL for Linux® on x86 Programming Guide中的 Using tables (array) and pointers 。