我需要搜索一个表使用某些关键字段。现在是匹配关键字段的记录集。我能够从数据中检索数据对于不匹配的关键字段如何从表中检索数据?
我在大型机中使用搜索逻辑,但无法获得与键
不匹配的表记录您写道:我在大型机中使用搜索逻辑,但无法获得与键
不匹配的表记录虽然可以使用SEARCH
,但它不是必需的,而且可能很复杂。这是因为匹配条件必须为负,如下面的代码所示,用于选择所有不匹配"E"的记录。
使用IF
或EVALUATE
条件语句要简单得多,它们甚至可以用于涉及多个键值或多个字段的复杂情况。
在这个例子中,我创建了一个表,值为" a "通过"我。然后,我使用SEARCH
允许显示不匹配单个键值的所有记录。我还使用EVALUATE
来允许显示所有不匹配三个键值的记录。
代码:
data division.
working-storage section.
01 s-key pic x value "E".
01 m-key-table value "CFI".
03 m-key pic x occurs 3.
01 s-table value "ABCDEFGHI".
03 s-entry pic x occurs 9 indexed idx.
procedure division.
display "Records not matching single key "
quote "E" quote
perform varying idx from 1 by 1
until idx > 9
search s-entry
at end
continue
when s-entry (idx) not = s-key
display s-entry (idx) *> or move
end-search
end-perform
display space
display "Records not matching multiple keys "
quote "C, F or I" quote
perform varying idx from 1 by 1
until idx > 9
evaluate s-entry (idx)
when m-key (1) *> ignore matching keys
when m-key (2)
when m-key (3)
continue
when other
display s-entry (idx) *> or move
end-evaluate
end-perform
goback
.
输出:
Records not matching single key "E"
A
B
C
D
F
G
H
I
Records not matching multiple keys "C, F or I"
A
B
D
E
G
H