cobol - 如何搜索一个简单的表?
问题描述
我正在尝试理解 SEARCH 动词...
下面我将文件中的顺序记录读入 TABLE,然后尝试搜索它。但是它仅在 AIR-ID 为 01 或 02,而不是 03 时匹配。
我一定错过了一些基本的东西,并且一直试图通过各种例子来查看没有运气。
IDENTIFICATION DIVISION.
PROGRAM-ID. Search.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT AIRLINES ASSIGN TO "AIRLINES.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD AIRLINES.
01 AIRLINE-RECORDS.
05 AIRLINE-ID PIC 99.
05 AIRLINE-NAME PIC X(15).
WORKING-STORAGE SECTION.
01 WS-AIRLINES.
05 WS-ENTRIES OCCURS 4 TIMES INDEXED BY X1.
10 WS-AIRLINE-ID PIC 99.
10 WS-AIRLINE-NAME PIC X(15).
01 AIR-ID PIC 99 VALUE 04.
01 EOF-SWITCH PIC X VALUE "N".
PROCEDURE DIVISION.
000-INITIALIZE.
OPEN INPUT AIRLINES
PERFORM 100-READ-FILE
PERFORM 200-SEARCH-FILE
.
100-READ-FILE.
READ AIRLINES INTO WS-AIRLINES
.
200-SEARCH-FILE.
SET X1 TO 1.
SEARCH WS-ENTRIES
AT END
DISPLAY "NOT FOUND"
WHEN AIR-ID = WS-AIRLINE-ID (X1)
DISPLAY WS-AIRLINE-NAME (X1)
DISPLAY X1
END-SEARCH
.
航空公司.DAT
01airline01
02airline02
03airline03
04airline04
解决方案
由于缺乏答案,这是我能想到的最好的:
IDENTIFICATION DIVISION.
PROGRAM-ID. Search.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT AIRLINES ASSIGN TO AIRLINES.DAT
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD AIRLINES.
01 AIRLINE-RECORDS.
05 AIRLINE-ID PIC 99.
05 AIRLINE-NAME PIC X(15).
WORKING-STORAGE SECTION.
01 WS-AIRLINES.
05 WS-ENTRIES OCCURS 4 TIMES INDEXED BY X1.
10 WS-AIRLINE-ID PIC 99.
10 WS-AIRLINE-NAME PIC X(15).
01 AIR-ID PIC 99 VALUE 02.
01 EOF-SWITCH PIC X VALUE "N".
PROCEDURE DIVISION.
000-INITIALIZE.
OPEN INPUT AIRLINES
PERFORM 100-READ-FILE
PERFORM 200-SEARCH-FILE
STOP RUN
.
100-READ-FILE.
SET X1 TO 1
PERFORM VARYING X1 FROM 1 BY 1 UNTIL EOF-SWITCH = "Y"
READ AIRLINES
AT END
MOVE "Y" TO EOF-SWITCH
NOT AT END
MOVE AIRLINE-ID TO WS-AIRLINE-ID (X1)
MOVE AIRLINE-NAME TO WS-AIRLINE-NAME (X1)
DISPLAY AIRLINE-ID "-" AIRLINE-NAME
.
200-SEARCH-FILE.
SET X1 TO 1.
SEARCH WS-ENTRIES
AT END
DISPLAY "NOT FOUND"
WHEN WS-AIRLINE-ID (X1) = AIR-ID
DISPLAY WS-AIRLINE-NAME (X1)
DISPLAY X1
END-SEARCH
.
推荐阅读
- spring-data - 是时候在集装箱上居住财产了
- java - JPA 结果集映射到新对象
- python - 终端中 child_process 的返回值
- lua - 我刚开始在 lua-roblox 中编码,我面临尝试用“值”索引 nil,但不知道为什么
- sql-server - 如何根据 SQL 中 XML 属性名称的值过滤行
- python - 为什么我在 Django 中的模型上出现 KeyError?
- c++ - 未定义的行为 Clang vs gcc vs VC
- python - 绝对差异
- mysql - 在 MySQL 中创建此触发器时如何修复此错误?
- javascript - (.SVG,.PNG)未加载到反应组件中