A host structure is a named set of host variables that is defined in your program's DATA DIVISION.
Host structures have a maximum of two levels, even though the host structure might itself occur within a multilevel structure. An exception is the declaration of a varying-length character string, which requires another level that must be level 49.
A host structure name can be a group name whose subordinate levels name basic data items. For example:
01 A 02 B 03 C1 PICTURE ... 03 C2 PICTURE ...
In this example, B is the name of a host structure consisting of the basic items C1 and C2.
When writing an SQL statement using a qualified host variable name (for example, to identify a field within a structure), use the name of the structure followed by a period and the name of the field. For example, specify B.C1 rather than C1 OF B or C1 IN B. However, this guideline applies only to qualified names within SQL statements; you cannot use this technique for writing qualified names in COBOL statements.
A host structure is considered complete if any of the following items are found:
After the host structure is defined, you can refer to it in an SQL statement instead of listing the several host variables (that is, the names of the data items that comprise the host structure).
For example, you can retrieve all column values from selected rows of the table CORPDATA.EMPLOYEE with:
01 PEMPL. 10 EMPNO PIC X(6). 10 FIRSTNME. 49 FIRSTNME-LEN PIC S9(4) USAGE BINARY. 49 FIRSTNME-TEXT PIC X(12). 10 MIDINIT PIC X(1). 10 LASTNAME. 49 LASTNAME-LEN PIC S9(4) USAGE BINARY. 49 LASTNAME-TEXT PIC X(15). 10 WORKDEPT PIC X(3). … MOVE "000220" TO EMPNO. … EXEC SQL SELECT * INTO :PEMPL FROM CORPDATA.EMPLOYEE WHERE EMPNO = :EMPNO END-EXEC.
Notice that in the declaration of PEMPL, two varying-length string elements are included in the structure: FIRSTNME and LASTNAME.