IBM Support

Message CPC1220 and Message MCH3203 On Recompile of OPM Program

Troubleshooting


Problem

When deleting and recompiling an OPM program, jobs that are using that program fail with a message CPC1220, denoting a message MCH3203 as the cause.

Resolving The Problem

Problem

When deleting and recompiling an OPM program, jobs that are using that program fail with a message CPC1220, denoting a message MCH3203 as the cause.

CPC1220 Completion 50 10/27/11 11:24:48.961615 QWTPITP2 QSYS 061A *EXT *N
Message . . . . : Job ended abnormally because of error code MCH3203.

Resolution

This behavior is to be expected when an OPM program is deleted while still in use. When an OPM program is deleted, the pointer to that program is no longer valid. Any jobs that are still using that program will be left with a hole in the call stack:

Examples

Call stack before deleting OPM program CLPGM1:

Type  Program                  Statement         Procedure
      QCMD       QSYS                     /0517            
      QUICMENU   QSYS                     /00C1            
   1  QUIMNDRV   QSYS                     /060F            
   2  QUIMGFLW   QSYS                     /04D7            
   3  QUICMD     QSYS                     /056E            
      QUOCPP     QPDA                     /070B            
      QUOMAIN    QPDA                     /011E            
   4  QUOCMD     QSYS                     /01EA            
      CLPGM1     DCFREITA      300        /000B            
      CLPGM2     DCFREITA      300        /0009            
      QTEVIREF   QSYS                     /0470            
      QTESTOPH   QSYS                            _C_pep    
      QTESTOPH   QSYS          200               main      


Call stack after deleting OPM program CLPGM1:

Type  Program                  Statement         Procedure  
      QCMD       QSYS                     /0517              
      QUICMENU   QSYS                     /00C1              
   1  QUIMNDRV   QSYS                     /060F              
   2  QUIMGFLW   QSYS                     /04D7              
   3  QUICMD     QSYS                     /056E              
      QUOCPP     QPDA                     /070B              
      QUOMAIN    QPDA                     /011E              
   4  QUOCMD     QSYS                     /01EA              
      *N         *N                                          
      CLPGM2     DCFREITA      400        /000D              
      QTEVIREF   QSYS                     /0470              
      QTESTOPH   QSYS                            _C_pep      
      QTESTOPH   QSYS          200               main        

The CPC1220 will be issued when the call stack returns to the *N entry.

This issue can be avoided by using the REPLACE(*YES) parameter on the compile commands instead of deleting and recompiling an active program. By using REPLACE(*YES), the current object is moved into QRPLOBJ instead of being deleted.

It can also be avoided by using ILE instead of OPM. By design, ILE 'activates' a copy of the program into memory. If the program gets moved or deleted, the activated copy will still be valid, thus avoiding messages CPC1220 and MCH3203.

[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m0z0000000CHtAAM","label":"Programming ILE Languages"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions"}]

Historical Number

627819387

Document Information

Modified date:
15 November 2024

UID

nas8N1011085