Record form 2

These records describe items in the output stream that contain two values. There are two variations of this record form, depending on whether or not StringIDs are being used. Namespace declaration records are examples of these. In the case where StringIDs are provided by the caller through the GXLSYM31 (GXLSYM64) StringID service exit, the record form looks like the following:
Table 1. Record form 2 (with StringID)
Fields
record type flags reserved
record length
StringID for value 1
StringID for value 2
When StringIDs are not in use, values one and two are represented as conventional length and value pairs:
Table 2. Record form 2 (without StringID)
Fields
record type flags reserved
record length
value 1 length
bytes 1 to n of value 1
value 2 length
bytes 1 to n of value 2
There are other form 2 records that will always use length and value pairs, regardless of whether or not StringIDs are available. Processing instructions are an example of this kind of record, since the target and value of a processing instruction are always returned as strings represented by length and value pairs.