From: John O'G. <joh...@zo...> - 2003-04-15 04:00:47
|
Mike and Andrej Ignore my previous rambling. I have now traced the full progress of showhelp(3) through the Aubit labyrinth. 1. 4GL showhelp(3) -> builtin.c:aclfgl_showhelp(3) 1. push_long(3) 2. aclfgli_showhelp(1) // 1 arg on 4GL stack 3. return 0 // indicating no return vals on 4GL stack 2. extfile.c:aclfgli_showhelp(1) 1. long a = pop_long() 2. push_char( get_helpfilename()); 3. push_long(a) 4. aclfgli_libhelp_showhelp(2); //because 2 args on 4GL stack 3. API_help.c:aclfgli_libhelp_showhelp(2) 1. func = find_func(libptr, "aclfgli_libhelp_showhelp") 2. return func(2) 4. helplib.c:aclfgli_libhelp_showhelp(2) C code generated by 4glc All this look perfectly fine. It also seems to partially work! In the tools/test/help.4gl program, a. CTRL-W does the right thing for the 2 menu options b. The 4GL call to showhelp() always displays message 1. In help.c, I can see that there is a call push_variable(&a,2) preceding the call to aclfgl_showhelp(1). I presume this is the normal way to pass the value of a to the function. Somewhere further down the chain, the helpno argument is being lost. I will worry away at the code. But we'll probably get there quicker if one of you can spot what is wrong. Andrej, will you be returning from Oz direct to Christchurch, or via Auckland? John O'Gorman |