Consultor Eletrônico



Kbase P89155: What does MCH3601 message mean?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   26/07/2004
Status: Unverified

GOAL:

What does MCH3601 message mean?

FACT(s) (Environment):

IBM AS/400 (RISC)

FIX:

There are many situations that can cause message MCH3601. Following is a list of the most common causes.

RPG, and other high-level languages (HLL) , whether ILE or OPM, pass parameters by reference. When a parameter is passed to another program, only the address to the information is passed rather than the information itself. There is no communication between programs on what size the parameters should be.
Therefore, if there is a parameter mismatch between the calling program and the called program, the HLL compiler has no way of determining or verifying this.
The problem is not evident unless either program attempts to use the storage that has been corrupted.

This parameter size mismatch is very common. The errors are shown in the following ways:

- Message MCH3601 is issued.

- Data is overlaid. Your program receives message RPG0907 or MCH1202 or a user will complain about bad data coming up somewhere.

- Message MCH0601 results if date is accessed or moved outside the space assigned to the program.


The information in message MCH3601 is normally useless in finding the cause of this type of problem. Message MCH3601 happens as a result of storage corruption that may have happened in a previous program CALL.

The only way to debug this type of problem is to look at where the failure occurs. Then, backtrack starting with all parameters on any CALL, CALLB, CALLP, or EVALs that work with addresses in SUBPROCEDURES. Review the lengths of the parameters in the CALLED and CALLING program and any CALLs in these programs. Compile listings are a good place to start. If using SUBPROCEDURES, review any EVAL statement that is assigning a address.