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



Hi, Dan,

Issue:
    DSPBNDDIR BNDDIR(CALIB/CABNDDIR)
or
    DSPBNDDIR BNDDIR(CALIB/CABNDDIR) OUTPUT(*PRINT)

and study the results, and examine the list of objects in this binding directory, to see if someone has somehow added both *MODULEs and *SRVPGMs to that binding directory ... (HINT: bad idea)

The message is referring to a *MODULE object. In general, it is a "bad practice" to put *MODULEs into a binding directory.

Instead, what you want to do is to bind *MODULEs into a *SRVPGM and then add the *SRVPGM into the binding directory.   And, never mix both *MODULEs and *SRVPGMs in the same binding directory.  ("There be dragons here.")  This is very likely the root cause of this error.

If you issue CRTSRVPGM with naming that *MODULE CA8560CT$2 explicitly, it would likely dynamically bind to  *SRVPGM object QZDMMDTA, and that would resolve the issue(s).

_Summary_
You should always explicitly name *MODULEs on a CRTPGM or CRTSRVPGM or UPDPGM or UPDSRVPGM command, never add them to any *BNDDIR.  Place "shared" modules into a single *SRVPGM, and bind to that, either by naming that *SRVPGM explicity on the CRTPGM or UPDPGM command, or by using a binding directory.

Also, I highly recommend the use of a "make" or "build" tool like Alan Campin's COMPILE command, available at http://www.think400.dk/downloads.htm ; -- this allows  you to store the create commands, such as CRTxxxMOD, followed by the CRTSRVPGM or CRTPGM commands, directly within the source code, as comments.  This way, you never lose those "make" instructions, and it makes all subsequent maintenance easier, since you just prompt the COMPILE command and point it at the source.  The COMPILE command is also designed to be easily integrated with WDSCi or RDi.

I hope this helps,

Mark S. Waterbury

> On 5/17/2018 3:02 PM, Dan wrote:
This is my first go at using a CLLE program to call a procedure from a
service program.

CALLPRC PRC('EmployeeAuthorizationStatus') +
PARM((&USERID) (&THISPGM) (&MEMP_FND) +
(&MGA_FND) (&GALVL1PGM) (&GALVL2FLD) +
(&EMPEMAIL))

The EmployeeAuthorizationStatus procedure is in service program CA9800,
using that exact case. The binder source has:
Export Symbol( EmployeeAuthorizationStatus )

This procedure is currently being used in other RPGLE programs.

Using CRTCLMOD, I created the module just fine. My CRTPGM command:
CRTPGM PGM(DANLIB/CA8560CT$2) MODULE(DANLIB/CA8560CT$2)
BNDSRVPGM((CALIB/CA9800 *DEFER)) BNDDIR(CALIB/CABNDDIR) DETAIL(*EXTENDED)
.. generates the following messages:
CPD5D1D: *SRVPGM object QZDMMDTA in library QSOC not found.
CPD5D02: Definition not found for symbol 'EmployeeAuthorizationStatus'.
(Cause: No definition was found for reference EmployeeAuthorizationStatus
in *MODULE object CA8560CT$2 in library DBALEBULK2. The definition either
does not exist or is not of the same data or procedure type as the
reference. <-- I HAVE NO IDEA WHAT THIS MEANS.)
CPF3C50: Program CA8560CT$2 not created.

I have no idea where QZDMMDTA comes from. In another thread, Buck has
suggested that I should treat this as a red herring. That same thread
discussed the CPD5D02: Definition not found for symbol error, but that was
for an RPGLE program.

Ideas?

- Dan



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.