索引表的内部存储结构相对于下标表而言要相对复杂一些。在下标表中,数据的存储位置即下标的数值。而在索引表,数据的存储位置和索引数值往往并不一致,需要计算得到。
对于索引表而言,其中的索引保存的是数据偏移量,而并不是数据实际存储位置。数据的实际存储位置,通过将索引变量除以每个数据的大小得到。
下面以一个公司一周内的营业额为基本模型,讨论索引表的内部存储结构。首先,对该表进行定义及初始化,代码如下。
01 WEEK-SALES-DATA.
05 FILLER PIC 9(5) VALUE ‘15874’.
05 PIC 9(5) VALUE ‘10876’.
05 PIC 9(5) VALUE ‘14586’.
05 PIC 9(5) VALUE ‘13587’.
05 PIC 9(5) VALUE ‘19784’.
05 PIC 9(5) VALUE ‘10030’.
05 PIC 9(5) VALUE ‘10088’.
01 WEEK-SALES-TABLE REDEFINES WEEK-SALES-DATA.
05 SALES PIC 9(5)
OCCURS 7 TIMES
INDEXED BY SALE-NDX.
为方便讨论,这里没有定义数据编号,只包含一周内每天的营业额SALES这一个数据条目。以上代码实际上也是定义一个最小化索引表的代码。