geojf3
geojf3

Reputation: 49

How to compile exisiting RPGLE program

I need to make a change to an existing and working RPGLE program. When I do a straight compile (option 14 from PDM), the error I get is "DFTACTGRP(*NO) must be specified for a prototype that does not have the EXTPGM keyword."

I change DFTACTGRP to *NO and recompile to get "Errors were found during the binding step. See the job log for more information." Which shows "Cause . . . . . : No definition was found for reference
GU_getTranslatedText in *MODULE object OR404XX in library QTEMP. The definition either does not exist or is not of the same data or procedure
type as the reference. "

In the compile I see:

+D GU_getTranslatedText...                              
+D                 pr           198a   extproc('GU_-    
+D                                     getTranslatedText')   
+D                                     varying               
+D  inText                      198a   value varying   



C                   eval      XNAM =                                      
C                                GU_getTranslatedText('MONTHLY')    

There are about 30 or so of these errors on the calls. I made no to the existing program other than copy the source to a test library and try to compile it.

I tried contacting the original person that wrote it and the only helpful information I received was "No binding directory needed"...which I was not specifying anyway.

Any ideas on what I am doing wrong and how I can compile it?

Upvotes: 0

Views: 3699

Answers (3)

Victor Pomortseff
Victor Pomortseff

Reputation: 453

As far as I understand, the problem here is that the compiler cannot find the function GU_getTranslatedText This function can be located either in some service program or the program that you are trying to compile, initially consists of several modules and this function is located in another module.

Upvotes: 0

Charles
Charles

Reputation: 23823

Do a DSPPGM to see what ACTGRP is being used then add the following control (H) spec

  ctl-opt dftactgrp(*NO) actgrp('xxxx');

or if you're stuck with fixed form...

h dftactgrp(*no) actgrp('xxxx')

where 'XXXX' is the activation group found using DSPPGM.

You might look to see if there's an existing binding directory with the reference service programs WRKOBJ OBJ(*LIBL/*ALL) OBJTYPE(*BNDDIR). You can specify binding directories to be used by using the bnddir('xxxxx') clause on the control spec.

Upvotes: 2

nfgl
nfgl

Reputation: 3212

Maybe this will solve the problem. Compile as module then execute

UPDPGM PGM(YOURPGM) MODULE(YOURMODULE)

Upvotes: 0

Related Questions