Key Phrase to sort COBOL internal Table really useful logic

In COBOL, internal arrays play prominent role. How to use Key phrase is very important. To define key values in internal table or an array you need to use Key phrase.

There is no limitation on size of an array (Occurs limit). Maximum 7 dimensions we can define in an array.COBOL Key phrase

What is KEY Phrase

  • Earlier post I have discussed about Indexed By phrase. In this post I want to show you, how we can define KEY phrase in an array.
  • Tip:SEARCH ALL works only for sorted table. That means, you must define both INDEXED BY and KEY IS phrases on a Table, on which you are searching.

Key Definition  

  • The KEY phrase in an OCCURS clause states that the table is sorted by the sequence of keys named data-name-3.
  • Each of the fields named by data-name-3 must be part of the table—either items subordinate to this data item or possibly the data-name of the table itself.
  • The purpose of the KEY clause is to define the table’s ordering when you use the SEARCH statement with the ALL phrase.

Syntax:

Ascending/Descending KEY is data-name-3

  • Data-name-3 can be qualified, but it must not be subscripted even though it is a table element, since the reference is really to the entire table.
  • Each key must be described as either ASCENDING or DESCENDING. This defines the order, either from lowest to highest (ASCENDING) or highest to lowest (DESCENDING) in which the table is arranged. The order is determined by either numeric comparison for a numeric data-name-3 or non-numeric comparison for other operands. The keys are listed in order of their significance from major to minor.
  • The presence of a KEY clause does not mean that the table is necessarily in sorted order, nor does it cause the table to be sorted. It merely states the expected order of the table.
  • The SEARCH statement  works correctly only if the table is in the order specified by the keys.

Here is an example of a table defined with two keys:


01 MAIL-INFO.       03 MAIL-LIST OCCURS 1000 TIMES             ASCENDING KEY IS STATE, CITY.           05 NAME      PIC X(20).          05 ADDRESS   PIC X(20) OCCURS 3 TIMES.          05 CITY      PIC X(20).          05 STATE     PIC XX.          05 ZIP       PIC 9(5).

**Important interview question:-

How sorting occurs

  1. This example shows a table (MAIL-LIST) whose elements are (expected to be) in order by STATE (from lowest to highest).
  2. Elements of the table with the same STATE will be in order by CITY (from lowest to highest).

Interview Question:

  1. Indexed By and KEY is – Both are different phrases in the context of OCCURS.
  2. The phrase INDEXED BY, we use to retrieve a record dynamically. The KEY IS, a phrase you can use to sort an array.

Summary

Explained how to used Key phrase in COBOL internal table. Syntax is given to understand quickly and real interview questions added.
Advertisements

Author: Srini

Experienced software developer. Skills in Development, Coding, Testing and Debugging. Good Data analytic skills (Data Warehousing and BI). Also skills in Mainframe.