<fault stack history>
──┬─<array row>──────────┬─────────────────────────────────────────────┤ └─<pointer expression>─┘
If the fault stack history option is used, a string of EBCDIC characters representing the stack history is stored into the array row or the array specified by the pointer expression. The stack history information is always stored as EBCDIC characters regardless of the character type of the array row or pointer expression.
The format of the stack history is either of the following:
SSS:AAAA:Y,;SSS:AAAA:Y,;...,;SSS:AAAA:Y. SSS:AAAA:Y;(DDDDDDDD),;...,;SSS:AAAA:Y;(DDDDDDDD).
In these formats, the following applies:
|
EBCDIC Characters |
Meaning |
|
SSS |
A code segment number |
|
AAAA |
A code word address |
|
Y |
A code syllable number |
|
1 |
A blank space |
|
DDDDDDDD |
A sequence number (present only if the compiler control option LINEINFO was TRUE during program compilation). The element DDDDDDDD can have the form DDDDDDD/DDDDDDDD/... when INLINE procedures are referenced. The rightmost line number indicates the most recently invoked procedure reference. |
One of these entries is generated for each activation record in the stack when the fault is encountered. Each entry is followed by a comma (,), and the last complete entry is terminated by a period (.). If the user-specified array is sufficiently long, the entire stack history is stored. If it is not long enough, then only a portion of the stack history is stored, with the last complete entry in the array terminated by a period. The code segment number field, SSS, is expanded to four characters, SSSS, for segment numbers greater than 4095; that is, for segment numbers whose hexadecimal representation requires four characters.
The array row or pointer expression that makes up the fault stack history and the variable that makes up the fault number are evaluated once when the ON statement is executed, and not at the time the fault occurs. Thus, in the following ON statement, array row A[I,*] is determined by the value of I at the execution of the ON statement and not when a ZERODIVIDE fault actually occurs. This determination is also true for the variables B[J] and J.
ON ZERODIVIDE[A[I,*]:B[J]]: GO TO ERROR_HANDLING

