定长表简单的说就是表中数据项个数不可变的表。前面例子中用到的表都是定长表。这里对定长表进行讨论,也可以作为对前面所学知识的一个回顾。下面代码定义了一张最基本的定长表。
01 FIXED-TABLE-ONE.
05 ENTRY-ONE OCCURS 10 TIMES.
10 NUM-ONE PIC 9(5).
10 DATA-ONE PIC X(10).
05 SUB-ONE PIC 99 COMP.
该段代码定义了一张下标表,同时该表也是定长表。根据OCCURS语句得到该表共有10个数据条目,因此可认为该表长度为10。该表存储空间大小为10*(5+10)=150。
同样,也可定义定长的索引表,定义方式如下。
01 FIXED-TABLE-TWO.
05 ENTRY-TWO OCCURS 10 TIMES
INDEXED BY TWO-NDX.
10 NUM-TWO PIC 9(5).
10 DATA-TWO PIC X(10).
以上定义的定长索引表的长度仍然为10,同样是通过OCCURS语句后的重复次数得到的。该表既是定长表,也是索引表,这两个概念是并行的。
若要定义可用于二分查找的索引表,则还需使表中数据有序排列。若数据为升序排列,则使用ASCENDING KEY BY语句完成;降序则使用DESCENDING KEY BY语句。
升序排列的定长索引表定义方式如下。
01 FIXED-TABLE-THREE.
05 ENTRY-THREE OCCURS 10 TIMES
INDEXED BY THREE-NDX
ASCENDING KEY NUM-THREE.
10 NUM-THREE PIC 9(5).
10 DATA-THREE PIC X(10).
降序排列的定长索引表定义方式如下。
01 FIXED-TABLE-FOUR.
05 ENTRY-FOUR OCCURS 10 TIMES
INDEXED BY FOUR-NDX
DESCENDING KEY NUM-FOUR.
10 NUM-FOUR PIC 9(5).
10 DATA-FOUR PIC X(10).
以上列举了几种类型的定长表,同时也是对前面两节中关于表的定义的一个简单回顾。实际上,定长表最根本的特征就是定义表语句OCCURS后的重复次数是一个确定的数字。