【发布时间】:2021-05-29 17:38:41
【问题描述】:
我对 Cobol 还很陌生,在尝试创建类似于 python 字典的东西时遇到了困难,我们在其中传递一个键,字典返回它的值。
Python 示例:
>>> dict
{'AC': 'Acre', 'AL': 'Alagoas', 'AP': 'Amapa'}
>>> dict['AC']
'Acre'
我正在尝试在 cobol 中执行此操作,使用重新定义创建两个数组(一个用于键,另一个用于值)。 我已经创建了数组,但是一旦我只能访问具有整数值的数组,就无法将这两个数组关联到一个键值函数中。
这里是我的数据部门,如果有人可以帮助提供代码示例。
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 WRK-KEYS.
02 FILLER PIC X(2) VALUE "AC".
02 FILLER PIC X(2) VALUE "AL".
02 FILLER PIC X(2) VALUE "AP".
01 WRK-TABLE-KEYS REDEFINES WRK-KEYS.
02 WRK-KEY PIC X(2) OCCURS 3 TIMES.
01 WRK-VALUES.
02 FILLER PIC X(19) VALUE "Acre".
02 FILLER PIC X(19) VALUE "Alagoas".
02 FILLER PIC X(19) VALUE "Amapa".
01 WRK-TABLE-VALUES REDEFINES WRK-VALUES.
02 WRK-VALUE PIC X(10) OCCURS 3 TIMES.
【问题讨论】:
-
在保持两个独立的数组同步时会遇到问题。您最好创建一个数组,每次出现两个值。您的代码基本上会读取数组,当键与搜索词匹配时,检索值。对于几千个键,线性搜索就可以了。对于大量键,二分查找会更有效。
-
吉尔伯特给出了正确的建议:创建一个带有“键”和“数据”字段的表以获得类似的东西。然后使用
SEARCH获取给定键的数据(您会发现需要添加INDEXED BY和KEY子句,请参阅任何COBOL 语言参考,例如gnucobol.sourceforge.io/HTML/gnucobpg.html#SEARCH)。
标签: cobol