>>>>>>>Try PROGRAM() or ASTACKINFO()
>>>>>
>>>>>Only SWAG: as I did not measure time needed for duplicate call in program(program(-1)-1) vs. astackinfo() filling array plus array access. I'd guess program(program(-1)-1) to be faster and to show less variation of runtime depending on stack level. When debugging or logging program state in depth: after astackinfo() you can obtain more info with ease as structure has been filled - but if you are after simple "who called me" info mentioned in yourOP to log semi automatically always hooked into your SQL operations I'd opt for function(s) call I guess to fulfill needs more KISS than others, here program(program(-1)-1).
>>>>>
>>>>>my 0.02 €
>>>>>thomas
>>>>
>>>>A follow-up question please. So far, my test shows that program(program(-1)-1) will give what I am looking for.
>>>>Since I write this value to a log file, I want to be sure that it is always a string, not a numeric value. Can you think of a case where program(program(-1)-1) will give a numeric value?
>>>>Thanks.
>>>
>>>According to the online help PRORRAM() returns a string value, except in the case where the optional parameter is -1 where PROGRAM() will return the current program level.
>>>
>>>You may find occasions where a more complete "traceback" in an error log list may be useful than simply just a reference to the program in which the error was triggered (as it may provide contextual information -- i.e. "how you got here" information).
>>
>>First, thank you. I tested the code suggested by Thomas with a parameter -1 and I received a program name (character). I wonder why it worked for me where reading your message and reading VFP help it should have returned the program level as a number. What am I missing?
>
>PROGRAM() && returns the name of current program (or blank)
>PROGRAM(-1) && returns current program level (numeric)
>PROGRAM(-1)-1 && returns program level of caller (numeric), if entered at command line result is -1
>PROGRAM(PROGRAM(-1)) && returns name of current program
>PROGRAM(PROGRAM(-1)-1) && Returns name of calling program -- except at the command line where it would return 0 (numeric)
Very comprehensive! Thank you, Naoto!
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham