Other replies have already explained effectively what is the
resolution for the MCH3401 [i.e. why the CL program 'runcmd' can not be
found] for this new issue in the continuing saga, but the following text
may be worthwhile for some, reading presently or just in the archives.
So FWiW:
What is in CmdA is moot, pending resolution to the MCH3401 failure.
That error indicates that the program was not invoked, irrespective of
what the parameter CmdA might contain. That error suggests that either
no program exists or that there is insufficient authority to invoke the
program; in either case, no parameter validation could transpire. Only
after the MCH3401 is resolve, will whatever is the value of CmdA have
any significance.
Gary made the claim that the "program runcmd is in the liblist with
*Public *all", but that claim unfortunately exhibits the same error as
exists with the code. That is, like Mark and Paul allude in replies,
that a program named RUNCMD [the upper-case name] presumably exists in
*LIBL, and thus the program should issue "Call 'RUNCMD'" instead of
"Call 'runcmd'". Thus alluding that presumably neither the delimited
nor a non-delimited program named "runcmd" [all lower-case name] exists
in *LIBL. Counter to what either had suggested however, the OS allows
for an object named as the non-delimited string 'runcmd'. But the UI
[i.e. anything not the MI or LIC] should allow only a similarly named
object; i.e. the UI allows for the name "runcmd" for which the double
quote characters as delimiters are part of the name, so another claim
that "all CAPS" is required also is inaccurate. So although the RPG
could invoke an actual program with "call 'runcmmd'", efforts by a user
or programmer to create a program with that name would likely be stymied.
IMO the cause of the error is most conspicuous when the message text
for the MCH3401 from the message file is compared with that of the
run-time error for which actual message replacement text is provided; as
shown below:
MCH3401 from the MSGF, followed by the MCH3401 from the joblog:
"Cannot resolve to object &3. Type and Subtype &1 ..."
"Cannot resolve to object runcmd. Type and Subtype X'0201' ..."
The replacement text for &3 is the character string 'runcmd' whereas
typically [as non-MI programmers and users] we would expect an object
name to appear in a message as the non-delimited character string
'RUNCMD'; i.e. folded to upper case. If the name were indeed lower
case, then we could expect to see the character string '"runcmd"' as a
valid name being presented.
Regards, Chuck
On 06 Apr 2013 21:49, John McKee wrote:
What does CmdA look like? I can think of several questions about
CmdA, but the content is the first that comes to mind.
On Sat, Apr 6, 2013 at 11:41 PM, Gary Kuznitz wrote:
<<SNIP>>
I change it to:
C MOVEL CmdA Command
C Eval CmdLength = %Len(%Trim(Command))
C Call 'runcmd' 50
C parm cmda
C parm cmdlength
<<SNIP>>
I'm getting an error saying:
Message ID . . . . : MCH3401 Severity . . . . . : 40
Message type . . . : Escape
Date sent . . . . : 04/06/13 Time sent . . . . : 20:03:31
Message . . . . : Cannot resolve to object runcmd. Type and
Subtype X'0201' Authority X'0000'.
Cause . . . . . : Either a system pointer or a data pointer
can not be resolved. For a system pointer, it can not be resolved
to object runcmd, type and subtype X'0201', authorization X'0000',
because either the named <<SNIP>>
The program runcmd is in the liblist with *Public *all
Any ideas why it can't find the CL pgm?
As an Amazon Associate we earn from qualifying purchases.