Search code examples
ibm-midrangerpgle

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?


Solution

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