The standardized transfer area begins on a word boundary. The header field is in bytes 0 through 19. It contains, amongst other things, the internal statement name (see ADD-STMT ...,INTERNAL-NAME=...). The array for operands valid for all statements, i.e. for operands defined with RESULT-OPERAND-LEVEL=1 (see ADD-OPERAND), begins with byte 20. It accommodates a 6-byte description for each of these operands. The operand descriptions are arranged in the order resulting from the operand positions established in the statement definition (see ADD-OPERAND ...,RESULT-OPERAND-NAME=*POSITION(POSITION=<integer>)). Each operand description contains, among other things, the absolute address where the associated operand value, or the description of the associated list or non-linearized structure, is stored in the transfer area. The description of a nonlinearized structure contains an operand array describing the operands contained in the structure. It has the same format as the array for the operands valid for all statements.
In the simplest case, an operand has only one simple value (Figure 8 without standard header).
If the operand value introduces a structure (Figure 9 without default header, "Format of the standardized transfer area"), there is a structure description for this value. This contains an operand array with descriptions for all operands of the structure, as well as for the operands from linearized substructures. The operand descriptions are arranged in the order resulting from the structureoriented operand positions established in the statement definition (see ADD-OPERAND...,RESULT-OPERAND-NAME=*POSITION (POSITION=<integer>)). The operand values corresponding to the operands of the structure may introduce further structures and/or consist of a list of values.
Values for operands defined with ADD-OPERAND ...,LIST-POSSIBLE=*YES (...,FORM=*NORMAL) are transferred in the form shown in Figure 10 ("Format of the standardized transfer area", without default header). A structure may be attached to a list element. In this case, “value of the list element” is a structure description.
Header field of a standardized transfer area
Byte | Contents | Source of field contents in case of | ||
analyzed program | errored | default | ||
0 to 1 | Length of the transfer area | Program | unchanged | Program |
2 to 9 | Internal name of the statement | SDF | unchanged | Program |
10 to 17 | Reserved | |||
18 to 19 | Number of positions in the | SDF | unchanged | Program |
The internal name of the statement and the number of positions in the operand array are stored in the syntax file in the statement definition
(see ADD-STMT...,INTERNAL-NAME=...,MAX-STRUC-OPERAND=...).
Description of operands
The operand array and the descriptions therein for the operands of a structure have exactly the same format as the one for the operands valid for all statements.
Byte | Contents | Source of field contents in case of | ||
analyzed | errored | default | ||
0 to 1 0 1 | Value description Additional information Description of type | See below SDF | See below unchanged | See below Program 1) |
2 to 5 | Absolute address (stored | SDF | unchanged | Program 1) |
1Entry only for operands for which there are values to be converted, i.e. when bit 0 of the additional information is set
Additional information
The additional information is contained in the first byte of the value description. The following specifications regarding the additional information apply regardless of whether the additional information appears in an operand description, in the header field of a structure description, in the description of a list element or in an OR list description.
Bit | Value | Meaning | Source of field contents in case of | ||
analyzed statement to program | errored statement back to SDF | default values to SDF | |||
0 | 0 | Value not available | SDF1 | unchanged | Program2 |
0 | 1 | Value available | SDF | unchanged | Program2 |
1 | 0 | Value changeable | - | Program3 | - |
1 | 1 | Value not changeable | - | Program3 | - |
2 | 0 | Value not errored | - | Program | - |
2 | 1 | Value errored | - | Program | - |
3 | 0 | Value is not to be used as default value | - | - | Program |
3 | 1 | Value is to be used as default value | - | - | Program |
4 to 7 | - | Reserved | - | - | Program |
1 For example: values for operands defined with ADD-OPERAND..., PRESENCE= *EXTERNAL-ONLY, or values in structures not referenced.
2 0 for operands for which there are neither operand values to be converted nor structures containing operands with values to be converted. 1 for operands for which there are either operand values to be converted or structures containing operands with values to be converted.
3 All list values coming after the first changeable list value are considered changeable by SDF, regardless of whether bit 1 is set. In this way, list elements that have already been processed are protected against being overwritten.
Type description
The type description is contained in the second byte of the value description. The following specifications regarding the type description apply regardless of whether the type description appears in an operand description, in the header field of a structure description, in the description of a list element or in an OR list description.
Structure descriptions can be entered by a program in order to specify custom defaults. Defaults can be entered:
in the internal format (like the OUTPUT operand in the SDF-A statement ADD-VALUE) or
in the external format as a string analogous to the operand description. The auxiliary data type <input-text> must be used, and the value is analyzed as if it had been entered via the user interface.
Value (decimal) | Meaning |
1 | Command rest |
2 | Integer |
4 | X-string |
5 | C-string |
6 | Name |
7 | Alphanumeric name |
8 | Structured name |
9 | Label |
11 | Fully qualified file name |
12 | Partially qualified file name |
13 | Time |
14 | Date |
15 | Composed name |
16 | Text |
17 | Catalog identifier (cat-id) |
18 | Input text |
19 | Structure |
20 | List |
21 | OR list |
22 | Keyword |
23 | Reserved for internal use |
24 | VSN |
25 | X-text |
26 | Fixed-point number |
27 | Device |
28 | Product version |
29 | POSIX pathname |
35 | POSIX file name |
36 | Long-integer |
Header field of a structure description
Byte | Contents | Source of field contents in case of | ||
analyzed program | errored | default values | ||
0 to 1 | Number of positions in the | SDF | unchanged | Program |
2 to 3 2 3 | Value description for the operand value introducing the structure Additional information Type description | - SDF | See above unchanged | See above Program |
4 to 7 | Absolute address (stored | SDF | unchanged | Program |
The number of positions in the operand array is stored in the statement definition in the syntax file (see ADD-VALUE...,STRUCTURE=*YES(..,MAX-STRUC-OPERAND=...).
The operand array belonging to the structure begins immediately after the header field.It has exactly the same format as the one for operands valid for all statements.
List element
Byte | Contents | Source of field contents in case of | ||
analyzed program | errored | default values | ||
0 to 1 0 1 | Value description Additional information Description of type | See above SDF | See above unchanged | See above Program1) |
2 to 5 | Absolute address (stored | SDF | unchanged | Program1) |
6 to 9 | Absolute address (stored | SDF | unchanged | Program1) |
1Specified only for operands with operand values to be converted, i.e. when bit 0 of the additional information is set
In the last element of the list, the “absolute address of the next list element” has the value 0.
An OR-list consists of a single element. The “absolute address of the next list element” is redundant in this case.
For an operand defined with LIST-POSSIBLE=*YES(FORM=*NORMAL), the number of list elements must be restricted (LIMIT=...) so as to prevent an overflow in the standardized transfer area. The size of a list in the standardized transfer area can be calculated by using the following formula:
n * (10 + 2 + l)
where: | n l | is the number of list elements, and is the length of a single list element (rounded to a multiple of 2). |
Example:
ADD-OPERAND ... LIST-POSSIBLE=*YES(LIMIT=100,FORM=*NORMAL)
ADD-VALUE *NAME(1,8)
A list that is defined in this way can occupy up to 2000 bytes in the standardized transfer area:
(100 * (10 + 2 + 8) = 2000).
How values are stored
Byte | Contents | Source of field contents in case of | ||
analyzed program | errored | default values | ||
0 to 1 | Length specifications | SDF | unchanged | Program |
2 to... | Value | SDF | unchanged | Program |
How the values are passed depends on the definition in the syntax file (see ADD-VALUE..., OUTPUT=*NORMAL(...). In this regard, the following points apply:
A value defined with ADD-VALUE TYPE=*INTEGER(...,OUT-FORM=*BINARY) is stored as a signed four-byte string.
A value defined with ADD-VALUE TYPE=*TIME is stored as a four-byte string, with 2 bytes (binary) for the hours and one byte each for the minutes and seconds.