• Subject: RE: MCH3402
  • From: "Leland, David" <dleland@xxxxxxxxxx>
  • Date: Tue, 12 Oct 1999 14:31:32 -0500

Title: RE: MCH3402

Barb:

I appreciate the reply.  Unfortunately, I'm not sure which program to "add the padding" to.  There's one program in particular that, when it gets called, the calling program receives the MCH3402 (but only sometimes).  The called program never gets executed.  And this program is called from many different programs.  So, I can't debug the called program and the calling programs - well I'm not sure.  As others have mentioned regarding this, it's likely that the corruption occured in some other program well before this one particular program gets called.  There are just so many different programs in this job.

Dave

-----Original Message-----
From: bmorris@ca.ibm.com [mailto:bmorris@ca.ibm.com]
Sent: Tuesday, October 12, 1999 12:25 PM
To: MIDRANGE-L@midrange.com
Subject: RE: MCH3402





>Date: Mon, 11 Oct 1999 09:19:40 -0500
>From: "Leland, David" <dleland@Harter.com>
>
>Unfortunately, there are many other programs being called in the job.
>It's an "async" job which waits for an entry to hit a data queue and
>then calls other programs with the data received.  Looks like I could
>be in for a long hunt here.

Dave, do you know what storage is being corrupted (sorry if I missed
this earlier in the thread)?  If you do, and if you can debug the job
you could put a watch on that storage and know exactly where it gets
corrupted.

If you don't own the storage that's being corrupted (if it appears to be
in some compiler-internal storage), one useful trick is to add some padding
after each one of your declarations - initialize this storage to all 'z' or
something, and check it periodically while your program is running (or check
the values in the formatted dump, or put a watch on all of them if that's
feasible...)  Note that you can't count on your variables being held in
storage in the same order you define them in your program so you can't just
add a big pad area at the end of all your declarations.

Example:

D fld1          s            10a
D ds2           ds
D   sub1                     10a

Change to:

D               ds
D  fld1                      10a
D  fld1_pad                  10a   inz(*all'z')

D ds2           ds
D  sub1                      10a
D  ds2_pad                   10a   inz(*all'z')

You could add some code to print all these pad areas out just before the
line where the error occurs (if it always happens at the same place ...).

Good luck ...
Barbara Morris



+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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

This mailing list archive is Copyright 1997-2022 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.