Previous Next

PROGRAM-NAME function
Returns the name of the calling program.
Syntax 
 
PROGRAM-NAME( n )
n
The numeric argument. If n is 1, the name of the current program is returned. If n is 2, the name of the calling program is returned. If there is no calling program then you have reached the top of the call stack and the AVM returns the Unknown value (?).
Example 
This procedure returns the names of any procedure(s) that called it, and displays the number of levels that the procedure was nested:
 
/* Note this program should be run as a subroutine. */
/* The deeper the nesting, the better the illustration. */
 
DEFINE VARIABLE level AS INTEGER NO-UNDO INITIAL 1.
 
REPEAT WHILE PROGRAM-NAME(level) <> ?:
  DISPLAY LEVEL PROGRAM-NAME(level) FORMAT "x(30)".
  level = level + 1.
END.
Notes 
*
*
 
DEFINE VARIABLE ix    AS INTEGER   NO-UNDO INITIAL 2.
DEFINE VARIABLE plist AS CHARACTER NO-UNDO FORMAT "x(70)".
 
FORM plist
  WITH FRAME what-prog OVERLAY ROW 10 CENTERED 5 DOWN NO-LABELS
  TITLE " Program Trace ".
 
/* ix = 2, so skip the current routine: PROGRAM-NAME(1) */
DO WHILE PROGRAM-NAME(ix) <> ?:
  IF ix = 2 THEN 
    plist = "Currently in       : " + PROGRAM-NAME(ix).
  ELSE 
    plist = "Which was called by: " + PROGRAM-NAME(ix).
 
  ix = ix + 1.
  DISPLAY plist WITH FRAME what-prog.
  DOWN WITH FRAME what-prog.
END.
 
PAUSE.
HIDE FRAME what-prog.
*
 
Syntax 
"internal-procedure-name source-file-name"
*
 
Syntax 
"USER-INTERFACE-TRIGGER source-file-name"
*
 
Syntax 
"SYSTEM-TRIGGER source-file-name"
*
 
Syntax 
"type-TRIGGER source-file-name"
Where type is either ASSIGN, CREATE, DELETE, FIND, or WRITE.
*
 
Syntax 
"method-name class-file-name"
Where class-file-name is the name of the class definition (.cls) file in which method-name is implemented.

Previous Next
© 2013 Progress Software Corporation and/or its subsidiaries or affiliates.