📜  在 COBOL 中搜索所有内容

📅  最后修改于: 2022-05-13 01:55:25.677000             🧑  作者: Mango

在 COBOL 中搜索所有内容

在对任何数据结构执行操作时,搜索是最重要的操作之一。我们可以通过两种方式进行搜索操作:

  1. 线性搜索:在这里,我们简单地遍历数据结构(数组)并搜索数组中的给定元素。
  2. 二分搜索:在二分搜索中,我们首先找到数组的中间元素,
    • 如果搜索元素等于中间元素,则搜索操作到此结束。
    • 如果搜索元素大于中间元素,则数据结构分为两部分,我们在后半部分搜索元素,并再次检查搜索元素与子数组中间元素之间的关系。
    • 如果搜索元素小于中间元素,则将数组分为两部分,我们在前半部分搜索元素,并再次检查搜索元素与子数组中间元素之间的关系。
    • 它选择哪一半来搜索元素并不重要,只将两半的中间元素与搜索元素进行比较,然后再次检查关系关系并将子数组相应地分为两半。 这个过程继续直到找到搜索元素或数组结束。

在 COBOL 中,为了执行这些搜索操作,我们有两个动词,即用于线性搜索的 Search Verb和用于二分搜索的 Search-All Verb 。在本文中,我们将了解 Search-All 动词。

Search-All Verb运算速度快,比 Search Verb 更高效。在这种情况下,不需要在 SEARCH ALL 动词之前使用 SET 动词,因为它由 Search-All 动词自动完成。在使用 Search-All 动词之前,必须考虑一些规则:

  1. 数组必须采用排序形式,即必须按升序或降序排列。
  2. 该动词只能与一维数组一起使用。
  3. 在执行操作之前,无需为 Key 分配起始值。
  4. 它只检查相等条件。
  5. 如果在数组中找不到该元素,则执行命令式语句,如果没有命令式语句,则控制传递到下一个语句。

句法:

SEARCH ALL table name [ AT END imperative statement ]
WHEN condition-1  { imperative statement/NEXT SENTENCE } [END SEARCH].

例子:



Cobol
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
      WORKING-STORAGE SECTION.
      77 SEARCHRNO PIC 99.
      77 N PIC 99.
      01 ARRAY.
         02 ARR OCCURS 10 TIMES ASCENDING KEY IS RNO INDEXED BY I.
               03 RNO PIC 99.
PROCEDURE DIVISION.
        
         // AFTER ENTERING THE ELEMENTS IN ARRAY 
           // WE SEARCH THE ROLL NUMBER ENTERED 
           // BY USER IN VARIABLE SEARCHRNO.     
        SEARCH ALL ARR AT END DISPLAY "NOT FOUND"
        WHEN RNO(I) = SEARCHRNO DISPLAY "FOUND".
STOP RUN.


输出:

  • 搜索数组中实际可用的数组中的卷号。

  • 在数组中搜索数组中不可用的卷号。