I am trying something a little odd, but I think it should work.
I am calling a CL program from an RPG II program, passing parameters.
Ultimately I want to call an ILE program to do something with the
parameters. Changing it all to ILE is not an option right now, I have to
use the original RPG II.

Okay... The only problem with calling from RPG II is that it always defines all numbers as zoned decimal. It doesn't let you define a field as packed decimal. This is a problem, because CL's *DEC data type is packed, and not zoned.

Of course, there are ways to fix that... the easiest way is to call an ILE RPG program that does nothing except translate the parameters from zoned to packed.

There are other ways to translate zoned to packed as well. The _LBCPYNV MI builtin comes to mind.

Passing the fields as character variables will also work.

I am not getting the parameters the way I want them, they are truncated in
most cases. I have tried DEC and CHAR types, but can not get exactly what
I pass. Does anyone have any suggestions?

I don't see why the CHAR types wouldn't work. I've used that many times in the past without problems. Here's a very trivial sample program that works for me:


      * This is RPG II. Compile from the S/36 environment with RPGC.
     H                                                                    CALLCL
     C                     MOVEL'TESTX'   FIELD1  5
     C*
     C                     CALL 'TESTCL'
     C                     PARM           FIELD1
     C*
     C                     SETON                     LR


Here's the CL program it calls:

PGM PARM(&FIELD1)

    DCL VAR(&FIELD1) TYPE(*CHAR) LEN(5)
    SNDUSRMSG  MSG(&FIELD1) MSGTYPE(*INFO)

ENDPGM

I've been invoking the RPG II program with the following OCL procedure:

// LOAD CALLCL
// RUN

When I run this, it shows "TESTX" on my screen, as expected. Does it truncate this for you? Or do you get the correct data?

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.