On 01-Jun-2011 10:30 , Rich Loeber wrote:
A customer was installing some software while in restricted state.
They ran into a minor problem that could have been corrected by a
simple file rename, but they could not get a second logon session
started.
Is there a way, while in restricted state and running from the
console, to get to a command line while a job is active on the
console?
As Mark suggested, the ATNPGM() defined for the user profile or as
[re]defined at the current call level via SETANTPGM is the typical
choice for resolving the issue that is described. That feature allows a
user to get to a new call level [and sometimes group jobs], but only
when the session is neither input inhibited nor prevented from
processing events; specifically, the attention [Attn key] event.
Roger mentioned CPX2313, so I will suggest to avoid changing that
message in QSYS/QCPFMSG or any of QSYS29##/QCPFMSG message files. Also
I recall that there is a System Request exit point which may be more
appropriate to use. The message data is AFaIK just an "implementation
detail" which would be subject to change. While changing the message
remains functional to change the behavior of the System Request
Option-3, changing the DSPJOB to WRKJOB [or to any command-line capable
zero-parameter callable *PGM], the capability to get WRKJOB versus
DSPJOB within restricted state is no different than outside of
restricted state processing. To make the effect available to an
operator, or at the console, then perhaps:
For an operator that either understands call levels or would not
become confused having added call levels [such that they would not
understand how to return] *and* understands the implications of
performing possibly conflicting work while interrupting a task in
progress, if they have activated a request to get a command line while
the job is input inhibited....
Then as part of entering restricted state [e.g. requests to ENDSYS
and ENDSBS *ALL; note that CHGIPLA used to enter into restricted would
not be covered] can be directed to CALL the following CLP, or added [by
CHGRTGE or ADDRTGE] as part of the routing into the controlling
subsystem defined by QCTLSBSD while using device defined by QCONSOLE,
include a CALL to the following CLP:
<code>
// data file(inline_src) filetype(*src) endchar('//ENDINLINE_SRC')
dcl &msg *char 160 /* no recollection verifying this length */
/* more DCLs for controlling subsystem and\or console name? */
affected:
/* determine if this job is to be enabled for this feature */
/* RTVSYSVAL as necessary, RETURN if this job not allowed */
/* -- this "affected:" section is purposely left un-coded -- */
activate:
/* give this job access to CmdLine of WRKJOB via SysReq-3 by */
/* changing DSPJOB to WRKJOB in a copy of the message which */
/* by current implementation controls the SysRqs-3 *CMD name */
crtmsgf qtemp/qcpfmsg
monmsg CPF2112 exec(goto ya_called)
mrgmsgf qsys/qcpfmsg qtemp/qcpfmsg select(cpx2313)
rtvmsg msgid(cpx2313) msgf(qcpfmsg) msg(&msg)
chgvar %sst(&msg 12 10) 'WRKJOB' /* blind assumption\action */
chgmsgd cpx2313 msgf(qtemp/qcpfmsg) msg(&msg)
ya_called:
ovrmsgf qcpfmsg qtemp/qcpfmsg
rmvmsg pgmq(*same) clear(*all) rmvexcp(*yes)
tfrctl qcmd
//ENDINLINE_SRC
dltpgm sysrqscmdl
crtclpgm sysrqscmdl srcfile(inline_src) log(*no) usrprf(*owner) +
aut(*exclude) alwrtvsrc(*no) /* best to obfuscate? */
chgobjown sysrqscmdl *pgm ( usr_aut_to_CRTMSGF ) curownaut(*revoked)
/* Effectively any user authorized to CRTMSGF can do this AFaIK */
/* i.e. all of the commands used in the CLP are *PUBLIC *USE ? */
/* excluding authority to CRTMSGF or CHGMSGD might be desirable */
/* to prevent any user from utilizing this same algorithm even */
/* outside this program; then GRTOBJAUT to owner of this *PGM */
</code>
p.s. While the authority for the *MSGF QCPFMSG was eventually
corrected from *CHANGE to *USE preventing any change message description
by all of *PUBLIC, and thus also preventing this feature from being
activated directly from a *NLVLIBL/QCPFMSG message file, AFaIK the
capability of the above algorithm remains generally available to
*PUBLIC. The more "public" this capability becomes, the more likely
someone will complain about the availability, and thus more likely that
the "implementation detail" will be sufficiently changed so as to make
the algorithm [and so the above program] obsolete. Apologies in
advance, to myself first, since I have relied tremendously on this
capability being available generally. I am unsure, but I believe the
last I used the algorithm with success was on v6r1; for sure on v5r4.
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.