In the MCH4437, what is the value of variable &3, as in "The calling
program refers to export-ID &3"?
Rob Berendt
Here's the complete message:
Message . . . . : Program import not found.
Cause . . . . . : The calling program SHP79E refers to a procedure or
data
export from service program ECL_PRC01 which does not exist. The calling
program refers to export-ID X'00000006', the service program defines
only
X'00000005' exports.
In the meantime, we found the cause of the problem! Apart from a
procedure, a data export was also added to the service program. In the
binder source, this data export was put on position 5. The binder source
was as follows:
STRPGMEXP SIGNATURE('ECL_PRC01 ')
EXPORT SYMBOL(ECL_CLCFRCRDC)
EXPORT SYMBOL(ECL_CHKORDTYP)
EXPORT SYMBOL(ECL_CHKPRODGRP)
EXPORT SYMBOL(ECL_CHKAD)
EXPORT SYMBOL(ECL_POSTORDLINE)
ENDPGMEXP
Procedure ECL_POSTORDLINE is actually used in SHP79E.
The binder source in the test environment is now as follows:
STRPGMEXP SIGNATURE('ECL_PRC01 ')
EXPORT SYMBOL(ECL_CLCFRCRDC)
EXPORT SYMBOL(ECL_CHKORDTYP)
EXPORT SYMBOL(ECL_CHKPRODGRP)
EXPORT SYMBOL(ECL_CHKAD)
EXPORT SYMBOL(CHKADRESULTS)
EXPORT SYMBOL(ECL_POSTORDLINE)
EXPORT SYMBOL(ECL_CHGORDQTY)
ENDPGMEXP
Notice that the position of ECL_POSTORDLINE was changed from 5 to 6. Now,
when SHP79E was compiled with the new version of ECL_PRC01, a reference to
export-ID X'00000006' was stored in the program object. When the program
was called in the production environment, that export-ID could not be
found.
In our shop, we know that new procedures should always be put in the last
position of the binder source. From now on, we know that data exports
should also be put in the last position. (The data export was probably put
on the fifth position because it is used in the context of ECL_CHKAD.)
I hope that this might be a helpful message for someone somewhere
sometime!
As an Amazon Associate we earn from qualifying purchases.