× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Just to clarify a bit, here's the call stack just after PgmC does the call to QCMDEXC to OVRMSGF:

                          ------Activation Group------  Control
 Program                  Name        Number Boundary
 QCMD       QSYS          *DFTACTGRP  0000000000000001 Yes
 INITC      GLCONVERT     *DFTACTGRP  0000000000000002 No
 MNUDVRC    RMSMM##       *DFTACTGRP  0000000000000002 No
 FX0010     RMSMM##       *DFTACTGRP  0000000000000002 No
 FX0015     RMSMM##       *DFTACTGRP  0000000000000002 No
 QCAEXEC    QSYS          *DFTACTGRP  0000000000000001 No
 PGM1       GLCONVERT     *NEW        0000000000000016 Yes
 PGM1       GLCONVERT     *NEW        0000000000000016 No
 PGM2       GLCONVERT     *NEW        0000000000000016 No
 PGM2       GLCONVERT     *NEW        0000000000000016 No
 PGMA       GLCONVERT     *NEW        0000000000000016 No
 PGMA       GLCONVERT     *NEW        0000000000000016 No
 PGMC       GLCONVERT     *NEW        0000000000000016 No
 PGMC       GLCONVERT     *NEW        0000000000000016  No
 PGMC       GLCONVERT     *NEW        0000000000000016  No
 QTEVIREF   QSYS          *DFTACTGRP  0000000000000001  No
 QTESTOPH   QSYS          QTEDBGAG    0000000000000015  Yes
 QTESTOPH   QSYS          QTEDBGAG    0000000000000015  No
 QTENPTS    QSYS          QTEDBGAG    0000000000000015  No
 QTENPTS    QSYS          QTEDBGAG    0000000000000015  No
 QUIDSPP    QSYS          *DFTACTGRP  0000000000000001  No
 QUIMGFLW   QSYS          *DFTACTGRP  0000000000000001  No
 QUIEXFMT   QSYS          *DFTACTGRP  0000000000000001  No
 QUIINMGR   QSYS          *DFTACTGRP  0000000000000001  No
 QWSGET     QSYS          *DFTACTGRP  0000000000000001  No
 QT3REQIO   QSYS          *DFTACTGRP  0000000000000001  No
 QWTSEATN   QSYS          *DFTACTGRP  0000000000000001  No
 QCMD       QSYS          *DFTACTGRP  0000000000000001  No

Here's the call stack at the time the CPF9841 error has been displayed but not responded to:

                          ------Activation Group------  Control
 Program                  Name        Number Boundary
 QCMD       QSYS          *DFTACTGRP  0000000000000001 Yes
 INITC      GLCONVERT     *DFTACTGRP  0000000000000002 No
 MNUDVRC    RMSMM##       *DFTACTGRP  0000000000000002 No
 FX0010     RMSMM##       *DFTACTGRP  0000000000000002 No
 FX0015     RMSMM##       *DFTACTGRP  0000000000000002 No
 QCAEXEC    QSYS          *DFTACTGRP  0000000000000001 No
 PGM1       GLCONVERT     *NEW        0000000000000016 Yes
 PGM1       GLCONVERT     *NEW        0000000000000016 No
 PGM2       GLCONVERT     *NEW        0000000000000016 No
 PGM2       GLCONVERT     *NEW        0000000000000016 No
 PGMA       GLCONVERT     *NEW        0000000000000016 No
 PGMA       GLCONVERT     *NEW        0000000000000016 No
 PGMC       GLCONVERT     *NEW        0000000000000016 No
 PGMC       GLCONVERT     *NEW        0000000000000016  No
 PGMC       GLCONVERT     *NEW        0000000000000016 No <== here's where QCMDEXC was called to do the DLTOVR
QMHPDEH    QSYS          *DFTACTGRP  0000000000000001 No
 QMHUNMSG   QSYS          *DFTACTGRP  0000000000000001  No
 QTEMDEBP   QSYS          *DFTACTGRP  0000000000000001  No
 QTESTOPH   QSYS          QTEDBGAG    0000000000000015  Yes
 QTESTOPH   QSYS          QTEDBGAG    0000000000000015  No
 QTENPTS    QSYS          QTEDBGAG    0000000000000015  No
 QTENPTS    QSYS          QTEDBGAG    0000000000000015  No
 QUIDSPP    QSYS          *DFTACTGRP  0000000000000001  No
 QUIMGFLW   QSYS          *DFTACTGRP  0000000000000001  No
 QUIEXFMT   QSYS          *DFTACTGRP  0000000000000001  No
 QUIINMGR   QSYS          *DFTACTGRP  0000000000000001  No
 QWSGET     QSYS          *DFTACTGRP  0000000000000001  No
 QT3REQIO   QSYS          *DFTACTGRP  0000000000000001  No
 QWTSEATN   QSYS          *DFTACTGRP  0000000000000001  No
 QCMD       QSYS          *DFTACTGRP  0000000000000001  No


All the call levels (under the Type column of the call stack display) are blank ("Blank = OPM or ILE invocation that is not a request processor.") which is why I didn't show it.

And the DSPJOB option 15 overrides shows:

 File          Level   Type  Keyword Specifications
 QUSERMSG         15   MSG   TOMSGF(*LIBL/MLMESG)

The level of the override (as shown in DSPJOB option 15) appears to match the "Number" of the activation group, and when they are different (as in the above call stack) is when the DLTOVR fails.

So really the question boils down to - why is the activation group number / override level different when PgmA calls PgmC than when PgmB calls PgmC, all other things being equal? And in both cases, PgmC is the one doing both the OVRMSGF and DLTOVR via calls to QCMDEXC.

This has become a curiosity question rather than a need-to-know question. We will sidestep the problem by merging the message files and eliminating the OVRMSGF and DLTOVR.

-----

Here's a fun one.

On a v5r4 system, a procedure within an RPGLE program PgmC calls QCMDEXC to do an OVRMSGF followed by some processing then a call to QCMDEXC to do a DLTOVR of the same message file.

When PgmA calls PgmC, it works fine.

When PgmB calls PgmC, the DLTOVR fails with CPF9841 Override not found at specified level.

All 3 programs, PgmA, PgmB, and PgmC, are RPGLE programs with ACTGRP(*CALLER).

At the time of the error, the call stack shows that all 3 programs are in Activate Group *NEW number 0000000000000016. Stepping through with debug shows that no other program is called between the OVRMSGF and the DLTOVR.

The usual recommendation is to put OVRSCOPE(*JOB) on the OVR* command and LVL(*JOB) on the DLTOVR.  However, at v5r4 and v7r3, the OVRMSGF command does not have the OVRSCOPE parameter.

Another possibility was that something else had deleted the override prior to the DLTOVR in question. Doing a DSPJOB option 15 to display overrides when the error occurs shows the override still exists.

Anyone have any ideas?

--
*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
petercdow@xxxxxxxxx <mailto:petercdow@xxxxxxxxx>
pdow@xxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxx> /


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.