- Function CallerNumberOfLocations
CallerNumberOfLocations
The function CallerNumberOfLocations
returns the number of nodes on
the current execution stack, not counting the current internal procedure
or function.
CallerNumberOfLocations( )
Example
The following code provides the skeleton of a simple stack dump.
Parameter noLocs ;
Parameter aDepth ;
Parameter aLine ;
ElementParameter aNode {
range : AllIdentifiers ;
}
ElementParameter anAttr {
range : AllAttributeNames ;
}
File outf {
Name: "a41t001.put";
}
Procedure reportStack {
Body: {
noLocs := callerNumberOfLocations();
aDepth := 1 ;
put outf, "Current execution stack: ", / ;
put "depth":5, " ", "node":20, " ", "attribute":12, " ", "line":4, / ;
put "-"*5, " ", "-"*20, " ", "-"*12, " ", "-"*4, / ;
while aDepth <= noLocs do
aLine := callerLine( aDepth );
aNode := callerNode( aDepth );
anAttr := callerAttribute( aDepth );
put aDepth:5:0, " ", aNode:20, " ", anAttr:12, " ", aLine:4:0, " ", / ;
aDepth += 1 ;
endwhile ;
putclose ;
}
}
An instance of its output might be:
Current execution stack:
depth node attribute line
----- -------------------- ------------ ----
1 work1 body 4
2 MainExecution body 1