The call log window lists all functions containing INIT_MODULE() and EXIT_MODULE() called in the main program prior to the error. INIT_MODULE() and EXIT_MODULE() are special functions used to push and pop the function name on the call log list. The list of functions is scrollable. The last function on the list is the last function called from main() at the time the error occurred.
The error window contains the error message associated with the error code that was detected. If no error message is associated with the error code, just the number of the error code is given. An explanation of error codes and how to recover from them is included in the Function Reference. The list of functions given in this window following "Call Stack:" is all the functions in the path from the last module called in the main program to the function detecting the error. These are the open or active functions in the path from the main program.
In the following example, it is assumed that all functions contain INIT_MODULE() and EXIT_MODULE(). With that condition in mind, suppose you run the following program:
|
and c() is as follows:
|
t() is as follows:
|
If an error is detected in w(), the call log would look like this:
|
since c() was the last function called from the main program. The call stack, which shows the path from the main() program to the function with the error, would look like this:
|
These three functions are the active or open functions when the error occurred.
Only those function that have INIT_MODULE() and EXIT_MODULE() will be listed in the call log and call stack. If the function c() in the above example did not contain the initialization and exit routines for the error reporting system, the call log would look like this:
|
and the call stack would look like this:
|
You can easily incorporate the required code in your own functions to make the call log and call stack lists comprehensive.
The call stack list has several limitations:
Table 50.1: Macros that Reference Functions
| Macro Name | Function Referenced |
| bell_vv() | beep_vv() |
| cl_curtxt() | cli_numtxt() |
| curfldp() | _curfldp() |
| curmfldp() | _curfldp() |
| fm_convert() | _fm_convert() |
| i_ptrnum() | _i_ptrnum() |
| et_free() | mem_free() |
| mn_defauto() | mn_def() |
| mn_dn() | fm_dn() |
| mn_free() | fm_free() |
| mn_vdefauto() | mn_vdef() |
| ms_free() | mem_free() |
| shad_dn() | _shad_updn() |
| shad_up() | _shad_updn() |
| trt_free() | mem_free() |
| vid_int | _sys_int() |
| vs_upd() | vs_updrgn() |
| wn_upd() | wn_updrgn() |