建立索引

使用 OCCURS 子句的 INDEXED BY 短语,用于标识索引名。 创建索引

关于此任务

例如,以下代码中的 INX-A 是 index-name:


05 TABLE-ITEM PIC X(8)
     OCCURS 10 INDEXED BY INX-A.

编译器将索引中包含的值计算为出现次数减去 1 ,再乘以表元素的长度。 因此,对于第五次出现的 TABLE-ITEMINX-A 中包含的二进制值为 (5-1) * 8 或 32。

仅当两个表描述都具有相同数目的表元素并且表元素的长度相同时,才能使用 index-name 来引用另一个表。

您可以使用 USAGE IS INDEX 子句来创建索引 数据项 ,并且可以将索引数据项与任何表配合使用。 例如,以下代码中的 INX-B 是索引数据项:

77  INX-B  USAGE IS INDEX.
. . .
    SET INX-A TO 10
    SET INX-B TO INX-A.
    PERFORM VARYING INX-A FROM 1 BY 1 UNTIL INX-A > INX-B
        DISPLAY TABLE-ITEM (INX-A)
        . . .
    END-PERFORM.

索引名称 INX-A 用于遍历表 TABLE-ITEM索引数据项 INX-B 用于保存表的最后一个元素的索引。 此类型编码的优点是将表元素的偏移量计算最小化,并且不需要对 UNTIL 条件进行转换。

您可以使用 SET 语句将存储在索引名称中的值分配给索引数据项 ,如语句 SET INX-B TO INX-A 例如,将记录装入到变长表中时,可以将最后一条记录的索引值存储到定义为 USAGE IS INDEX的数据项中。 然后,可以通过将当前索引值与最后一条记录的索引值进行比较来测试表的末尾。 当您查看或处理表时,此方法很有用。

您可以通过 基本整数数据项或非零整数文字来递增或递减索引名,例如:

SET INX-A DOWN BY 3

整数表示出现次数。 在添加到索引或从索引中减去之前,会将其转换为索引值。

使用 SETPERFORM VARYINGSEARCH ALL 语句初始化 index-name。 然后,可以在 SEARCH 或关系条件语句中使用 index-name。 要更改值,请使用 PERFORMSEARCHSET 语句。

由于您正在比较物理位移,因此只能在 SEARCHSET 语句中或者在与索引或其他索引数据项进行比较时直接使用索引数据项。 不能将索引数据项用作下标或索引。

例如:索引

相关参考
INDEX BY 短语 (COBOL for Linux® on x86 Language Reference)
INDEX 短语 (COBOL for Linux on x86 Language Reference)
SET 语句 (COBOL for Linux on x86 语言参考)