您的位置:首页 > 其它

精通cobol--9.16.3 嵌套索引表

2008-04-28 10:47 288 查看

  嵌套索引表是将索引表嵌套而生成的表。嵌套索引表每层嵌套的都是一张索引表,因此有多少层嵌套就有多少个索引。下面定义一个3层嵌套索引表。
01 NESTED-INDEX-TABLE.
05 TABLE-DEPTH OCCURS 2 TIMES
INDEXED BY NDX-A.
10 TABLE-ROW OCCURS 4 TIMES
INDEXED BY NDX-B.
15 TABLE-COLUMN OCCURS 5 TIMES
INDEXED BY NDX-C
PIC X (10).
以上定义的嵌套索引表是3层嵌套的,因此也可被称为三维表格。其中的每一维度相当于这里每一层嵌套的数据项。其中每层数据项所占存储空间大小如下。
q 对于第一层嵌套数据项TABLE-COLUMN而言,空间大小为10个字节。并且该数据项重复出现5次。
q 对于第二层嵌套数据项TABLE-ROW而言,空间大小为5个第一层嵌套数据项的总和。由于第一层嵌套数据项TABLE-COLUMN的大小为5个字节。因此,TABLE-ROW所占空间大小通过以下代数式得出:
5字节(TABLE-COLUMN的大小)* 10 (TABLE-COLUMN的重复次数)= 50字节
q 对于第三层嵌套数据项TABLE-DEPTH而言,同样可得到其空间大小为:
50字节(TABLE-ROW的大小)* 4 (TABLE-ROW的重复次数)= 200字节
计算以上嵌套索引表中各层嵌套数据的空间大小,主要是为了下面计算数据偏移量。结合前面所学知识,索引表中的索引在内存中存储的是所引用数据的偏移量。此偏移量的大小即索引在内存中所存储的真实数值。
下面,首先类似嵌套下标表,对以上嵌套索引表中任意引用一条数据如下。
TABLE-COLUMN (2 ,3,1)
其中括号中各个数字对应的索引如下。
q 2对应索引变量NDX-A,即第三层嵌套索引变量。
q 3对应索引变量NDX-B。即第二层嵌套索引变量。
q 1对应索引变量NDX-C。即第一层嵌套索引变量。
结合前面计算得到的各层嵌套数据的空间大小。
q 第三层嵌套数据项TABLE-DEPTH每条大小为200字节。
q 第二层嵌套数据项TABLE-ROW每条大小为50字节。
q 第一层嵌套数据项TABLE-COLUMN每条大小为10字节。
得到该条数据的实际偏移量为。
TABLE-COLUMN (2 ,3,1)的偏移量 = (2 * 200 + 3 * 50 +1*10)字节 = 560字节
其中,此时各个index变量在内存中的实际数值大小分别如下所示。
q NDX-A实际数值为2*200=400
q NDX-B实际数值为3*50=150
q NDX-C实际数值为1*10=10
此外,有时还常常对嵌套索引表中的数据以如下方式进行引用。
TABLE-COLUMN (NDX-A+2 ,NDX-B+3,NDX-C-1)
此时计算该条数据偏移量大小的式子为。
TABLE-COLUMN (NDX-A+2 ,NDX-B+3,NDX-C-1)的偏移量 =
NDX-A在内存中的实际数值大小 + 2 * 200
+ NDX-B在内存中的实际数值大小 + 3 * 50
+ NDX-B在内存中的实际数值大小 - 1 * 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: