COBOL - 数组/表处理

17 Mar 2025 | 5 分钟阅读

在 COBOL 中,数组被称为表。 数组是一种线性数据结构,它是相同数据类型的各个数据项的集合。

表的各项数据在内部进行排序。

表声明

在数据部分,我们可以声明表,并且我们必须使用“Occurs”子句来定义表。 Occurs 子句用于指示数据名称定义的重复。 它只能与从 02 到 49 的级别号一起使用。 对于 Redefines,我们不能使用 Occurs 子句。

下面给出了单维和二维表的描述

一维表

在一维表中,' Occurs '子句应仅在声明中指定一次。

语法

在这里,WS-TABLE 是包含表的组项,WS-A 命名了出现十次的表元素。

示例

让我们看一个单维表的例子

输出

COBOL Array/Table Processing

二维表

二维表是通过两个数据元素的可变长度生成的。

语法

在这里,第一个 WS-A 数组可以出现 1 到 10 次,内部 WS-C 数组可以出现 1 到 5 次。 也就是说,对于每个 WS-A 条目,将有 5 个 WS-C 条目。

示例

让我们看一个二维表的例子

输出

COBOL Array/Table Processing

下标

通过使用下标,我们可以检索表的各个元素。 下标的值将从 1 变化到表/数组出现的次数。 任何 +ve 数字都可以是下标值。 在数据部分,不需要任何下标声明。 它与 Occurs 子句一起自动形成。

示例

让我们看一个例子来理解下标

输出

COBOL Array/Table Processing

索引

我们也可以使用索引来访问表元素。 索引是从表的开头移动的元素。 我们需要用 Occurs 子句描述 INDEXED BY 子句来声明索引。

使用 SET 语句和 PERFORM VARYING 选项来更改索引值。

语法

示例

让我们看一个例子来理解表中的索引

输出

COBOL Array/Table Processing

Set 语句

Set 语句更改索引值。 它用于初始化、递增或递减索引值。 此语句可以与 search 和 search all 一起使用,以定位表中的元素。

语法

示例

让我们看一个 set 语句的例子

输出

COBOL Array/Table Processing

搜索

这是一种线性搜索方法。 这用于定位表元素。 我们可以在已排序或未排序的表上执行搜索。 搜索仅用于通过索引短语声明的表。 这从索引的初始值开始。 如果找不到搜索到的项目,索引将自动增加 1,并将一直持续到表的末尾。

示例

让我们看一个搜索的例子

输出

COBOL Array/Table Processing

Search All

Search All 是一种二分搜索方法。 这用于在表中查找元素。 表必须按Search All的排序顺序排列。 不需要初始化索引。

众所周知,在二分搜索方法中,表被分成两个半部分,它确定要搜索的元素存在于哪一半中。 此过程会重复,直到找到该元素或到达末尾。

示例

让我们看一个 Search All 的例子

输出

COBOL Array/Table Processing
下一主题COBOL 文件处理