IDENTIFICATION DIVISION.
PROGRAM-ID. BINARYS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TREE-TABLE.
05 FILLER PIC X(9) VALUE "02OAK ".
05 FILLER PIC X(9) VALUE "03BIRCH ".
05 FILLER PIC X(9) VALUE "04MAPLE ".
05 FILLER PIC X(9) VALUE "07PINE ".
05 FILLER PIC X(9) VALUE "10APPLE ".
05 FILLER PIC X(9) VALUE "12SPRUCE ".
05 FILLER PIC X(9) VALUE "15CHERRY ".
05 FILLER PIC X(9) VALUE "17WILLOW ".
05 FILLER PIC X(9) VALUE "24ELM ".
05 FILLER PIC X(9) VALUE "25PEACH ".
05 FILLER PIC X(9) VALUE "27DOGWOOD".
05 FILLER PIC X(9) VALUE "28HEMLOCK".
01 RDF-TREE-TABLE REDEFINES TREE-TABLE.
05 ELEMZ OCCURS 12 TIMES.
10 TREE-NO PIC 99.
10 TREE-NAME PIC X(7).
01 INPUT-FIELDS.
05 INPUT-TREE PIC 99.
01 SUBSCRIPTS.
05 SUBZ PIC 99 VALUE 1.
01 INDICATORS.
05 MATCH-IND PIC XXX VALUE "NO ".
01 MISC.
05 JUNK PIC X VALUE SPACES.
PROCEDURE DIVISION.
MAINLINE.
PERFORM B-100-PROCESS.
STOP RUN.
B-100-PROCESS.
DISPLAY "ENTER TREE NUMBER"
ACCEPT INPUT-TREE.
PERFORM B-200-LOOP
UNTIL INPUT-TREE = 99.
B-200-LOOP.
MOVE 1 TO SUBZ.
MOVE SPACES TO MATCH-IND.
PERFORM B-300-BINARY-SEARCH
UNTIL MATCH-IND = "YES"
OR SUBZ > 12.
IF MATCH-IND = "YES"
DISPLAY "TREE FOUND " TREE-NAME(SUBZ)
ACCEPT JUNK
ELSE
DISPLAY "TREE NOT FOUND"
ACCEPT JUNK.
DISPLAY "ENTER TREE NUMBER - ENTER 99 TO QUIT".
ACCEPT INPUT-TREE.
B-300-BINARY-SEARCH.
IF TREE-NO (SUBZ) = INPUT-TREE
MOVE "YES" TO MATCH-IND
ELSE
ADD 1 TO SUBZ
END-IF.