× 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.



Jon,
In a perfect world, this would be true.
Unfortunately, I am stuck working in an imperfect world, modifying existing
code and integrating updates to pre-existing code.
In this case, a program had a change that I was not aware of, replacing a
fixed set of parms with a copybook that defined the data structure for the
fields on the call. Once I found the point of failure, I found the updates
for the program and that fixed it.

Jeff Young
Sr. Programmer Analyst

On Tue, Mar 1, 2016 at 1:43 PM, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

And you have just demonstrated nicely why ALL calls should be prototyped!

It would have saved you all this time because your recompile would have
failed.


On Mar 1, 2016, at 12:29 PM, Jeff Young <jyoung0950@xxxxxxxxx> wrote:

Thanks to everyone that responded.
It turns out that one of the programs that the pgm in question was
calling
had changed the size of a return parm. That appears to have corrupted
memory and stepped on QRNXIE causing the pointer error.
I have now resolved this problem.

Jeff Young
Sr. Programmer Analyst

On Tue, Mar 1, 2016 at 10:26 AM, Henrico, Pieter <
Pieter.Henrico@xxxxxxxxxxxx> wrote:

Hi Jeff

I am also of the view the issue is related to a missing variable
somewhere.

Seems to me the point to start the investigation, is with the file that
changed. When your re-compiled program read the record from the
modified
file, does it actually return the correct data? Could be that you use
data
from one file as input for another process, and because the data was not
retrieved correctly, the parameter passed to the next program is
incorrect
and the process fails.

Would it be possible to give us a before and after of the DDL of the
file's format change, as well as an extract of the source code were the
process fails? It is somewhat difficult to make suggestions without
seeing
what you are seeing.

Regards

Pieter Henrico


-----Original Message-----
From: Jeff Young [mailto:jyoung0950@xxxxxxxxx]
Sent: Tuesday, March 01, 2016 4:33 PM
To: Midrange Systems Technical Discussion
Subject: Re: Odd Error when doing Chain in RPGLE

Charles,
This is not a new job.
The job has been running for a long time, and runs often during the day.
The only thing different is that one of the files used in this program
has
had the format changed, and the program was recompiled.
That is when I started getting the error. The CL program calling it has
not been changed, and when run with the production program with the
original files, it works with no problems.

Jeff Young
Sr. Programmer Analyst

On Tue, Mar 1, 2016 at 9:22 AM, Charles Wilt <charles.wilt@xxxxxxxxx>
wrote:

Are you doing any CALLs in the program?

Check the parms in the caller and callee programs.

You'll want to check all the way down the chain..
If this is PGMA
PGMA
-PGMB
-PGMC
-PGMD
-PGME
-PGMF

Check all of them...

Memory corruption can manifest itself very strangly.



On Tue, Mar 1, 2016 at 9:10 AM, Jeff Young <jyoung0950@xxxxxxxxx>
wrote:

The fields in the KLIST are from another database file.
Debug while the job is still active shows all of the fields have the
proper
value.
The program accepts only one parm and that is not used in the key
list.


Jeff Young
Sr. Programmer Analyst

On Mon, Feb 29, 2016 at 8:41 PM, aec <cfuture@xxxxxxxxxxx> wrote:

A missing pointer for a CHAIN means that the program does not yet
have
the
pointer set for the value specified.

"Chain to a keyed file using database fields in the key list."

The phrasing seems to indicate you were using field names from the
keyed
file itself. If so, I'm guessing there's been no I/O on the file
so
there's
been no pointer to the buffer area initialized.

I doubt the error is in QRNXIE, though, if that's an IBM program
or procedure.





On 2/29/16 4:50 PM, Jeff Young wrote:

All,
Receiving the following error in the job log:
Message . . . . : 5200 -
CALL
PGM(*LIBL/COUPS1) /* The CALL
command contains
parameters
*/

MCH3601 Escape 40 02/29/16 16:40:35.834316
QRNXIE
QSYS *STMT QRNXIE QSYS *STMT
From module . . . . . . . . :
QRNXMSG
From procedure . . . . . . :
SetRepText
Statement . . . . . . . . . :
45

To module . . . . . . . . . :
QRNXMSG
To procedure . . . . . . . :
SetRepText
Statement . . . . . . . . . :
45

Message . . . . : Pointer
not
set
for location referenced.
Cause . . . . . : A pointer
was
used, either directly or as a basing
pointer, that has not
been
set
to
an address.
CPF9999 Escape 40 02/29/16 16:40:35.834481
QMHUNMSG *N COUPS1 T37REBATE *STMT
To module . . . . . . . . . :
COUPS1
To procedure . . . . . . . :
COUPS1
Statement . . . . . . . . . :
68000

Message . . . . : Function
check.
MCH3601 unmonitored by QRNXIE at statement
0000000045, instruction
X'0000'.

Cause . . . . . : An escape
exception message was sent to a program which
did not monitor for that
message.
The full name of the program to which the
unmonitored message was
sent
is
QRNXIE QRNXMSG SetRepText. At the time the
message was sent the
program
was
stopped at higher level language statement
number(s) 0000000045. If
more
than
one statement number is shown, the
program was a bound program.
Optimization does not allow a single statement
number to be determined.
If *N
is
shown as a value, it means the actual
value was not available.
Recovery .
. . : See the low level messages
previously listed to
locate
the
cause of the function check. Correct any
errors, and then try the
request
again.
RNQ0222 Sender copy 99 02/29/16 16:40:35.840653
QRNXIE
QSYS *STMT QRNXIE QSYS *STMT
From module . . . . . . . . :
QRNXMSG
From procedure . . . . . . :
InqMsg

Statement . . . . . . . . . :
15

To module . . . . . . . . . :
QRNXMSG
To procedure . . . . . . . :
InqMsg

Statement . . . . . . . . . :
15

Message . . . . : Pointer or
parameter error (C G D F).
Cause . . . . . : RPG
procedure
COUPS1 in program T37REBATE/COUPS1 at



*...+....1....+....2....+....3....+....4....+....5....+....6....+....7
....+....8....+....9....+....0....+....1....+....2....+....3
statement 068000 had an
error
due
to
a pointer not being correctly set. The
cause of the error is
most
likely
one of the following: -- A basing pointer
was not set. -- A
procedure pointer was not set. -- The pointer was set, but
the object it referenced
has
been
destroyed. -- A parameter was not passed
5761SS1 V6R1M0 080215 Job Log
S06B6D65 02/29/16 16:44:17 Page 31
Job name . . . . . . . . . . : ROUTE_INV User . . . . .
.
:
VAIJY Number . . . . . . . . . . . : 502671
Job description . . . . . . : VAIJOBD Library . . . .
.
:
QGPL
MSGID TYPE SEV DATE TIME
FROM
PGM
LIBRARY INST TO PGM LIBRARY INST
to the program containing
the procedure. -- A parameter was not passed to
the procedure by its
caller
within
the program. -- A pointer offset was
greater than the size of
the
space
the pointer was pointing to. Recovery .
. . : Check the job log
for
more
information on the cause of the error and
contact the person
responsible
for
program maintenance. Possible choices for
replying to message . . . .
.
.
.
.
. . . . . . . : D -- Obtain RPG
formatted dump. S --
Obtain
system
dump. G -- Continue processing at *GETIN.
C -- Cancel. F -- Obtain
full formatted dump.
System is at V6R1M0
Last PTF TL64197
Yeah, I know it is way old, but there was never a problem like
this before.
The program was doing a Chain to a keyed file using database
fields in
the
key list.

Any ideas?
The error appears to be in QRNXIE.


Jeff Young
Sr. Programmer Analyst


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
take a moment to review the archives at
http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
take a moment to review the archives at
http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.



The information contained in this email is confidential and may contain
proprietary information. It is meant solely for the intended recipient.
Access to this email by anyone else is unauthorised. If you are not the
intended recipient, any disclosure, copying, distribution or any action
taken or omitted in reliance on this, is prohibited and may be
unlawful. No
liability or responsibility is accepted if information or data is, for
whatever reason corrupted or does not reach its intended recipient. No
warranty is given that this email is free of viruses. The views
expressed
in this email are, unless otherwise stated, those of the author and not
those of HYPHEN Technology (Pty) Ltd or its management. HYPHEN
Technology
(Pty) Ltd reserves the right to monitor, intercept and block emails
addressed to its users or take any other action in accordance with its
email use policy.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Jon Paris

www.partner400.com
www.SystemiDeveloper.com

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.