Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Tables & Arrays
Tables & Arrays | Intermediate | COBOL

SEARCH and SEARCH ALL

Problem Description

Search tables using linear SEARCH and binary SEARCH ALL.

Expected Output

Finding elements in tables

Hints

SEARCH for linear search, SEARCH ALL for binary (table must be sorted).

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. TABSRCH. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-EMP-TABLE. 05 WS-EMP OCCURS 5 TIMES ASCENDING KEY IS WS-EMP-ID INDEXED BY EMP-IDX. 10 WS-EMP-ID PIC 9(4). 10 WS-EMP-NAME PIC X(15). 10 WS-EMP-SAL PIC 9(6). 01 WS-SEARCH-ID PIC 9(4). 01 WS-FOUND PIC 9 VALUE 0. PROCEDURE DIVISION. * Initialize sorted table MOVE 1001 TO WS-EMP-ID(1). MOVE "ALICE" TO WS-EMP-NAME(1). MOVE 50000 TO WS-EMP-SAL(1). MOVE 1002 TO WS-EMP-ID(2). MOVE "BOB" TO WS-EMP-NAME(2). MOVE 55000 TO WS-EMP-SAL(2). MOVE 1003 TO WS-EMP-ID(3). MOVE "CHARLIE" TO WS-EMP-NAME(3). MOVE 60000 TO WS-EMP-SAL(3). MOVE 1004 TO WS-EMP-ID(4). MOVE "DIANA" TO WS-EMP-NAME(4). MOVE 65000 TO WS-EMP-SAL(4). MOVE 1005 TO WS-EMP-ID(5). MOVE "EDWARD" TO WS-EMP-NAME(5). MOVE 70000 TO WS-EMP-SAL(5). DISPLAY "ENTER EMPLOYEE ID TO SEARCH: ". ACCEPT WS-SEARCH-ID. * Binary search (faster, table must be sorted) SEARCH ALL WS-EMP AT END DISPLAY "EMPLOYEE NOT FOUND" WHEN WS-EMP-ID(EMP-IDX) = WS-SEARCH-ID DISPLAY "FOUND: " WS-EMP-NAME(EMP-IDX) DISPLAY "SALARY: " WS-EMP-SAL(EMP-IDX) END-SEARCH. STOP RUN.

Explanation:

SEARCH ALL requires ASCENDING/DESCENDING KEY and INDEXED BY. Much faster than linear.