DL/I Calls

The Interface operates in two phases:

The Interface retrieves data from the IMS database with a sequence of GET UNIQUE and GET NEXT calls that follow the database structure in top-to-bottom, left-to-right order. These calls do not require a PCB that maintains multiple positions in the database. The Interface does not issue path calls (calls that retrieve a hierarchical path, not just one segment) because those might retrieve unwanted segments, burdening IMS with unnecessary I/O. Therefore, the Interface can use any PCB.

The DL/I calls that the Interface issues retrieve the smallest connected subtree, starting at the root, that contains all explicitly referenced fields plus the root. For example:

If the request explicitly references only fields in segments B, C and D, the Interface retrieves all the segments in the boxed area, top-to-bottom, left-to-right.

Descendants of rejected segments do not participate in the retrieval. When FOCUS applies screening conditions that were not translated into SSAs, it communicates to the Interface the status of the previously retrieved segment: accepted or rejected. If the segment was rejected, the next DL/I call is for either another instance of the rejected segment (TWIN), a sibling segment, or a parent segment, not a child of the rejected segment.

The Interface accesses a segment, even when the request does not reference it, if the request references any of its descendants. For example:

TABLE FILE PEOPLE
COUNT C AND E
IF B CONTAINS 'ABC'
IF EKEY IS 1 OR 2
END

The request references fields in segments B and E, so the Interface also retrieves segment D. It retrieves segment A for efficient positioning. It cannot translate the condition on B to an SSA; it translates the condition on the key field, E, to two SSAs: (EKEY EQ 1) and (EKEY EQ 2).


Information Builders