As I stated earlier, I was able to get IWS to return XML for 4 dimensioned data structures using a *pgm that has parameters that IWS sees as output structures. Note that the IWS Test function throws an error if I don't load a zero in each of the numeric "count" fields (and all numeric ds subfields) in the request inputs.

I have not included the prototypes for my attempts that didn't work (there were many!), but...

Here is the prototype and referenced data structures for the *pgm version that permits me to define the actual dimensions where I get the desired XML result:
====================
DCL-PR EBPPGETDTL;
Account char(7) CONST;
PhoneIn char(13) CONST;
Email char(64) CONST;
AccountDetails LikeDS(Set1);
PhonesCount INT(10);
Phone LIKEDS(Set2) DIM(32);
PDFsCount INT(10);
PDF LIKEDS(Set3) DIM(16);
PaymentsCount INT(10);
Payment LIKEDS(Set4) DIM(16);
EmailCount INT(10);
EmailAddr LIKEDS(Set5) DIM(16);
END-PR ;

// fields that pertain to the account
DCL-DS Set1 QUALIFIED INZ;
Success IND;
MsgText CHAR(128);
DateDue CHAR(10);
NextAutoPayDate CHAR(10);
END-DS ;

// fields that pertain to each phone number
DCL-DS Set2 QUALIFIED INZ;
PhoneNumber PACKED(10:0);
Autopay IND;
NoPaper IND;
Notify IND;
AmtDue PACKED(8:2);
BankRouting PACKED(9:0);
BankAccount CHAR(16);
AccountType CHAR(1);
END-DS ;

// fields that pertain to each PDF available to view
DCL-DS Set3 QUALIFIED INZ;
PDFname CHAR(23);
END-DS ;

// fields that pertain to the prior payments
DCL-DS Set4 QUALIFIED INZ;
PhoneNumber PACKED(10:0);
Amount PACKED(8:2);
PaidDate CHAR(10);
Status CHAR(16);
END-DS;

DCL-DS Set5 QUALIFIED INZ;
PhoneNumber PACKED(10:0);
EmailTo CHAR(50);
END-DS;
====================

I agree that the IWS Test function is not all I would like it to be, but it shows me the following output from my test data. Note that this test only loaded two of the four array data structures, so you don't see the "PDF" and "EmailAddr" tags or the tags for their subfields.
====================
<?xml version="1.0" encoding="UTF-8"?>
<EBPPGETDTL>
<ACCOUNTDETAILS>
<SUCCESS>1</SUCCESS>
<MSGTEXT>Customer account is valid</MSGTEXT>
<DATEDUE>2015-01-11</DATEDUE>
<NEXTAUTOPAYDATE>2014-08-07</NEXTAUTOPAYDATE>
</ACCOUNTDETAILS>
<PHONESCOUNT>2</PHONESCOUNT>
<PHONE>
<PHONENUMBER>5296278</PHONENUMBER>
<AUTOPAY>1</AUTOPAY>
<NOPAPER>1</NOPAPER>
<NOTIFY>1</NOTIFY>
<AMTDUE>25.11</AMTDUE>
<BANKROUTING>987654321</BANKROUTING>
<BANKACCOUNT>1234567890</BANKACCOUNT>
<ACCOUNTTYPE>C</ACCOUNTTYPE>
</PHONE>
<PHONE>
<PHONENUMBER>5292278</PHONENUMBER>
<AUTOPAY>1</AUTOPAY>
<NOPAPER>1</NOPAPER>
<NOTIFY>1</NOTIFY>
<AMTDUE>50.05</AMTDUE>
<BANKROUTING>456987123</BANKROUTING>
<BANKACCOUNT>98745612</BANKACCOUNT>
<ACCOUNTTYPE>C</ACCOUNTTYPE>
</PHONE>
<PDFSCOUNT>0</PDFSCOUNT>
<PAYMENTSCOUNT>0</PAYMENTSCOUNT>
<EMAILCOUNT>0</EMAILCOUNT>
</EBPPGETDTL>
====================
-- Michael
~~~~~~~~~~
-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Jon
Paris
Sent: Tuesday, December 30, 2014 7:01 PM
To: Midrange-L Midrange-l
Subject: Re: IWS needs web service to return only the array rows used

OK - that makes much more sense. I wondered if you were using the RTNPARM
technique.

Look forward to seeing the protos.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Dec 30, 2014, at 6:04 PM, Koester, Michael <mkoester@xxxxxxxxxxxxx>
wrote:

Jon,
True enough, the program isn't "returning" anything, but the input parms
that aren't designated CONST just might get loaded in the program making
that payload accessible to the caller. IWS recognizes those as
input/output, and if dimensioned, they get a COUNT value associated with
them. In the "Select Export Procedures to Externalize as a Web Service -
Step 4 of 9" stage, I can stuff a integer variable name in to restricts
the array to that many occurrences. My program increments that variable as
I load the array, and IWS requires that the integer variable be among the
I/O parameters.

The part about functions needing to return the 4-byte integer to IWS is
circumvented by specifying RTNPARM on the PR/PI.
Sorry to confuse. I'll get the "working version" of the prototypes to
you tomorrow (assuming I can replicate the piece that worked earlier today
before I "messed with it").

-----Original Message-----
From: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf
Of Jon Paris
Sent: Tuesday, December 30, 2014 5:37 PM
To: Midrange-L Midrange-l
Subject: Re: IWS needs web service to return only the array rows used

I'm confused Michael,

You say you "return a data structure" - but a) Programs can't "return"
anything and b) A service program function can return a DS - but
would still not work with IWS because it can't handle anything except
a 4 byte integer as the return value.

That would imply that you are always returning the values via I/O
parameters which makes your earlier comments about switching the way
you handled the results really confusing.

Can you clarify please _exactly_ what your prototypes look like in
the case where it works (the *PGM case?) and those where it doesn't.


Jon Paris

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-2020 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].