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



Michael,

Consider using a user space. A user space can be looked at as a 16MB white board. With pointers available in ILE RPG and CL you can essentially create a shared memory cache. Set a value in one program and viola! It shows up in the other program. Very handy for job to job communications.

In the ILE RPG program (program A) create your data structure as being based to a pointer

D cacheptr S *

D cacheData DS based(cacheptr)
D field1 15A
D field2 2000A
D field3 10I 0

Use the Retrieve Pointer to User Space (QUSPTRUS) API to load cacheData. Your pointer for QUSPTRUS is cacheptr.

Now set the subfields in cacheData as suits your needs and submit your other program. If it is an ILE RPG define the data structure again and obtain the pointer to it. The data structure will be populated with what program A's values.

If your second program is a CL, use something like this...

DCL VAR(&CACHEPTR) TYPE(*PTR)
DCL VAR(&CACHEDATA) TYPE(*CHAR) STG(*BASED) BASPTR(&CACHEPTR)
DCL VAR(&FIELD1) TYPE(*CHAR) STG(*DEFINED) LEN(15) DEFVAR(&CACHEDATA 1)
DCL VAR(&FIELD2) TYPE(*CHAR) STG(*DEFINED) LEN(2000) DEFVAR(&CACHEDATA 16)
DCL VAR(&FIELD3) TYPE(*INT) STG(*DEFINED) DEFVAR(&CACHEDATA 2001)

Again use the Retrieve Pointer to User Space (QUSPTRUS) API to load &cacheData. Your pointer for QUSPTRUS is &cacheptr.

HTH.

Gary Monnier

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Koester, Michael
Sent: Thursday, May 24, 2012 5:39 AM
To: RPG400-L@xxxxxxxxxxxx
Subject: Passing data structure to batch job

Never tried this before: I have a sqlrpgle program running in batch that needs to submit another program to batch and pass a data structure to that new job. The original job executes in just a few seconds, the new job executes calls to web services that take maybe 45 seconds each to return results, so I'm reluctant to burden the original job with that kind of wait. I normally use a call to QCMDEXC to launch (via sbmjob) such a job from RPG, but my question is more about passing a data structure ( like I'd do in a prototyped call ). Is a data queue required here? ...I have no experience with those.
(Extra points to a response that say's "it's easy")
Thanks.

Michael Koester


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.