INDEX Data Dictionary File
| 
                                                         Field  | 
                                                    
                                                         Description  | 
                                                    
                                                         Type  | 
                                                    
                                                         Comments  | 
                                                
| 
                                                         FILE_ID  | 
                                                    
                                                         File alias (key)  | 
                                                    
                                                         C(16)  | 
                                                    
                                                         
  | 
                                                
| 
                                                         INDEX_ID  | 
                                                    
                                                         Index Name  | 
                                                    
                                                         C(16)  | 
                                                    
                                                         Indices are accessed in applications by name.  | 
                                                
| 
                                                         FIELD_ID  | 
                                                    
                                                         Field ID  | 
                                                    
                                                         C(16)  | 
                                                    
                                                         Field ID that matches this segment, if this segment is dependent on field.  | 
                                                
| 
                                                         KNUM  | 
                                                    
                                                         PRO/5 KNUM/Type  | 
                                                    
                                                         U(1)  | 
                                                    
                                                         PRO/5 MKEYED KNUM for this index, or a flag indicating an external file type: 0..15 ($00$ .. $0F$) MKEYED KNUM ($80$)+ External File  | 
                                                
| 
                                                         SEQ  | 
                                                    
                                                         Concat. Sequence  | 
                                                    
                                                         U(1)  | 
                                                    
                                                         Segment number within this index.  | 
                                                
| 
                                                         NUM  | 
                                                    
                                                         Field Number  | 
                                                    
                                                         U(2)  | 
                                                    
                                                         Physical field number, based on MKEYED FIN() rules (delimited by $0A$ characters).  | 
                                                
| 
                                                         OFFSET  | 
                                                    
                                                         Segment Offset  | 
                                                    
                                                         U(2)  | 
                                                    
                                                         Byte offset within the field, based on MKEYED FIN() rules. Offset is zero-based.  | 
                                                
| 
                                                         LENGTH  | 
                                                    
                                                         Segment Length  | 
                                                    
                                                         U(2)  | 
                                                    
                                                         
  | 
                                                
| 
                                                         ATTR  | 
                                                    
                                                         Index Attributes  | 
                                                    
                                                         U(1)  | 
                                                    
                                                         Attribute bits (additive): $01$ Descending sort $02$ Unique key/segment  | 
                                                
| 
                                                         DESCR  | 
                                                    
                                                         Description  | 
                                                    
                                                         C(128)  | 
                                                    
                                                         Description of this segment.  | 
                                                
| 
                                                         PATH  | 
                                                    
                                                         External File  | 
                                                    
                                                         C(128)  | 
                                                    
                                                         Reserved  | 
                                                
| 
                                                         SELECT  | 
                                                    
                                                         Select Clause  | 
                                                    
                                                         C(128)  | 
                                                    
                                                         Reserved  | 
                                                
| 
                                                         ACCESS  | 
                                                    
                                                         Access Method  | 
                                                    
                                                         C(128)  | 
                                                    
                                                         Reserved  | 
                                                
| 
                                                         KNUM  | 
                                                    
                                                         Index Name  | 
                                                    
                                                         Field(s)  | 
                                                
| 
                                                         0  | 
                                                    
                                                         INDEX00  | 
                                                    
                                                         FILE_ID+INDEX_ID+SEQ  | 
                                                
| 
                                                         1  | 
                                                    
                                                         INDEX01  | 
                                                    
                                                         FILE_ID+KNUM+SEQ  | 
                                                
| 
                                                         2  | 
                                                    
                                                         INDEX02  | 
                                                    
                                                         FILE_ID+FIELD_ID  | 
                                                
| 
                                                         3  | 
                                                    
                                                         FILE  | 
                                                    
                                                         FILE_ID  | 
                                                
| 
                                                         4  | 
                                                    
                                                         FIELD  | 
                                                    
                                                         FIELD_ID  | 
                                                
| 
                                                         5  | 
                                                    
                                                         INDEX  | 
                                                    
                                                         INDEX_ID  | 
                                                
Dependent Indices
Dependent indices make the best use of the data dictionary. A dependent index is defined in terms of fields in the record. For example, the segments that make up the dependent indices for the INDEX file are:
INDEX_ID = INDEX KNUM = $00$
| 
                                                         SEQ  | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         FIELD_NO  | 
                                                    
                                                         OFFSET  | 
                                                    
                                                         LENGTH  | 
                                                    
                                                        ATTR | 
                                                
| 
                                                         $00$  | 
                                                    
                                                         FILE_ID  | 
                                                    
                                                         1  | 
                                                    
                                                         0  | 
                                                    
                                                         16  | 
                                                    
                                                         $00$  | 
                                                
| 
                                                         $01$  | 
                                                    
                                                         INDEX_ID  | 
                                                    
                                                         1  | 
                                                    
                                                         16  | 
                                                    
                                                         16  | 
                                                    
                                                         $00$  | 
                                                
| 
                                                         $02$  | 
                                                    
                                                         SEQ  | 
                                                    
                                                         1  | 
                                                    
                                                         33  | 
                                                    
                                                         1  | 
                                                    
                                                         $00$  | 
                                                
INDEX_ID = KNUM KNUM = $01$
| 
                                                         SEQ  | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         FIELD_NO  | 
                                                    
                                                         OFFSET  | 
                                                    
                                                         LENGTH  | 
                                                    
                                                         ATTR  | 
                                                
| 
                                                         $00$  | 
                                                    
                                                         FILE_ID  | 
                                                    
                                                         1  | 
                                                    
                                                         0  | 
                                                    
                                                         16  | 
                                                    
                                                         $00$  | 
                                                
| 
                                                         $01$  | 
                                                    
                                                         KNUM  | 
                                                    
                                                         1  | 
                                                    
                                                         32  | 
                                                    
                                                         1  | 
                                                    
                                                         $00$  | 
                                                
| 
                                                         $02$  | 
                                                    
                                                         SEQ  | 
                                                    
                                                         1  | 
                                                    
                                                         33  | 
                                                    
                                                         1  | 
                                                    
                                                         $00$  | 
                                                
INDEX_ID = FIELD KNUM = $02$
                                                        SEQ | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         FIELD_NO  | 
                                                    
                                                         OFFSET  | 
                                                    
                                                         LENGTH  | 
                                                    
                                                         ATTR  | 
                                                
| 
                                                         $00$  | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         1  | 
                                                    
                                                         34  | 
                                                    
                                                         2  | 
                                                    
                                                         $00$  | 
                                                
Independent Indices
Independent indices are PRO/5 MKEYED file segments (specified in a PRO/5 MKEYED statement in the format [1:1:3]+[2:3:3]). This format means [(field):(offset+1):(length)]. The data dictionary stores similar Independent Index information as:
| 
                                                         FIELD_NO  | 
                                                    
                                                         Physical field number within the record, or 0 to base this segment on the entire record.  | 
                                                
| 
                                                         OFFSET  | 
                                                    
                                                         Offset within that field (zero-based). PRO/5 MKEYED segments use byte position (offset+1).  | 
                                                
| 
                                                         LENGTH  | 
                                                    
                                                         Length of this segment.  | 
                                                
The INDEX file stores each key SEGMENT in a different record, so an MKEYED key of three segments is stored in three INDEX records. For example, consider the following MKEYED statement:
MKEYED "TEST",[1:1:6]+[2:10:4],[1:1:6:"D"],0,32
The key segment information for this file is stored in the INDEX file as three records, all with FILE_ID = "TEST". FIELD_ID for each of these is FILL(16), because none of the segments are dependent on a field.
INDEX_ID = INDEX0 KNUM = $00$
| 
                                                         SEQ  | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         FIELD_NO  | 
                                                    
                                                         OFFSET  | 
                                                    
                                                         LENGTH  | 
                                                    
                                                         ATTR  | 
                                                
| 
                                                         $00$  | 
                                                    
                                                         FILL(16)  | 
                                                    
                                                         1  | 
                                                    
                                                         0  | 
                                                    
                                                         6  | 
                                                    
                                                         $00$  | 
                                                
| 
                                                         $01$  | 
                                                    
                                                         FILL(16)  | 
                                                    
                                                         2  | 
                                                    
                                                         9  | 
                                                    
                                                         4  | 
                                                    
                                                         $00$  | 
                                                
INDEX_ID = INDEX1 KNUM = $01$
| 
                                                         SEQ  | 
                                                    
                                                         FIELD_ID  | 
                                                    
                                                         FIELD_NO  | 
                                                    
                                                         OFFSET  | 
                                                    
                                                         LENGTH  | 
                                                    
                                                         ATTR  | 
                                                
| 
                                                         $00$  | 
                                                    
                                                         FILL(16)  | 
                                                    
                                                         1  | 
                                                    
                                                         0  | 
                                                    
                                                         6  | 
                                                    
                                                         $01$  | 
                                                
External Indices
An existing alias name as the name for an index can be entered in the data dictionary. This establishes a foreign key relationship between the current file and the external file. For example, with a sort file alias defined in the data dictionary as CUST_SORT, an external index for the CUSTOMER alias with the name CUST_SORT could be defined.
Relations
The data dictionary routine that establishes relations between files works through finding identically named fields or indices. It is important to keep this in mind when building an index structure. Always give related indices identical names to detect relations between files.