The Print Program Stack command is a testing aid. It lets you see
what is in the program stack during the running of a particular
program and the security implications as best they can be found. The
command is particularly useful in a situation involving program
adoption.
The command supports an optional capability to describe the
authorizations to an object.
The command is intended to be compiled into a program where you want
to determine what the program stack looks like to assist in testing.
A typical command would be:
PRTPGMSTK OBJ(xxxx) OBJTYPE(*FILE)
When the command is executed, it prints a spooled file with as much
information about the current user, the object specified, and the
program stack.
Retrieving the program stack information provides the program names
that are in the stack, but not the library. Each program in the
program stack is attempted to be accessed using *LIBL to determine
additional information such as the owner, does it adopt authority,
and the use of USEADPAUT(*NO). A pictorial view of adoption is shown
with asterisks for each program that is affected by a prior program
adoption.
You may have multiple PRTPGMSTK commands in the same program or at
any point in the program stack.
It is valid to enter PRTPGMSTK during a debug breakpoint. However,
debug drops any adopted authorization so the security aspects of the
output will be misleading.
Command parameters *CMD
------------------
OBJ The qualified object name of the object to be
checked for security. The default is *NONE. The
library value defaults to *LIBL.
OBJTYPE The object type of the object described. The
default is *NONE. Any type valid on CHKOBJ may be
specified.
TEXT An optional text description that will print in the
spooled output. The default is *NONE. If you have
multiple uses of PRTPGMSTK, the text can help
identify the correct output.
Restrictions
------------
The program stack provides the name of the program, but not the name
of the library where the program was found. The program object is
attempted to be accessed by use of the library list. A program in
the stack may be in a library that is no longer in the library list,
was accessed via a qualified name, or your job no longer has
authorization to access. If a program is found, there is no
guarantee that it is the same program that is in the program stack.
Therefore, it is possible that PRTPGMSTK cannot access the
information you need and/or that a different program object of the
same name will be accessed to provide the information.
It is valid to enter PRTPGMSTK during a debug breakpoint. However,
debug drops any adopted authorization so the security aspects of the
output will be misleading.
Prerequisites
-------------
The following TAA Tools must be on your system:
EDTVAR Edit variable
RTVPGMA Retrieve program attributes
RTVPGMNAM Retrieve program name
RTVPGMSTK Retrieve program stack
RTVOBJAUT Retrieve object authorizations
SNDCOMPMSG Send completion message
SNDESCMSG Send escape message
SNDSTSMSG Send status message
Implementation
--------------
None, the tool is ready to use.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
PRTPGMSTK *CMD TAASECW QATTCMD
TAASECWC *PGM CLP TAASECWC QATTCL
TAASECWR *PGM RPG TAASECWR QATTRPG
|