I am attempting to pass an array into a service program and am having little success. The data is not being imported/transformed by the default soap_to_cobol.xsl stylsheet.
The SOAP-REQUEST-RESPONSE working storage section looks like this:
01 SOAP-REQUEST-RESPONSE.
03 HTTP-METHOD PIC X(06)
VALUE HTTP-METHOD-POST.
88 HTTP-METHOD-IS-POST VALUE HTTP-METHOD-POST.
88 HTTP-METHOD-IS-GET VALUE HTTP-METHOD-GET.
03 METHOD-NAMESPACE-INDICATOR PIC X(01).
88 METHOD-NAMESPACE-MATCH VALUE "1".
88 METHOD-NAMESPACE-MISMATCH VALUE "0".
03 METHOD-NAME PIC X(50) VALUE SPACES.
88 METHOD-IS-PAYINV
VALUE L-PAYINV-METHOD-NAME.
03 FAULT-AREA.
05 FAULTCODE PIC X(10) VALUE SPACES.
05 FAULTSTRING PIC X(30) VALUE SPACES.
05 FAULTDETAIL PIC X(80) VALUE SPACES.
03 PAYINV--METHOD-NAME PIC X(20)
VALUE L-PAYINV-METHOD-NAME.
03 PAYINV--METHOD-PARAMETERS.
05 INPUT-PARAMETERS.
07 PI-USER-ID PIC X(15).
07 PI-USER-ID--NAME PIC X(20)
VALUE L-PI-USER-ID-NAME.
07 PI-PAY-COUNT PIC 9(03).
07 PI-PAY-COUNT--NAME PIC X(20)
VALUE L-PI-PAY-COUNT-NAME.
07 PI-INV-RECORDS
OCCURS 1 TO MAX-PAYMENTS TIMES
DEPENDING ON PI-PAY-COUNT.
09 PI-INV-NUM PIC X(08).
09 PI-AMOUNT PIC X(20).
09 PI-NOTE PIC X(500).
05 OUTPUT-PARAMETERS.
07 PI-RESULT PIC X(80).
07 PI-TOTAL-PAYMENT PIC S9(06)V99.
07 PI-FAIL-COUNT PIC 9(03).
07 PI-FAILED-RECORDS
OCCURS 0 TO MAX-PAYMENTS TIMES
DEPENDING ON PI-FAIL-COUNT.
09 PR-INV-NUM PIC X(08).
07 PI-FAILED-RECORDS--COUNT PIC 9(03).
The WSDL seems to generate properly for SoapUI, and the xml file containing the request looks fine. The data just never ends up in the program.
The request in SoapUI looks like this:
<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap.org/.../" xmlns:pay="tempuri.org/.../">
<soapenv:Header/>
<soapenv:Body>
<pay:PayInvoice>
<PI-User-ID>?</PI-User-ID>
<PI-Pay-Count>?</PI-Pay-Count>
<pi-inv-records>
<!--1 to 999 repetitions:-->
<pi-inv-recordsItems>
<!--You may enter the following 3 items in any order-->
<pi-inv-num>?</pi-inv-num>
<pi-amount>?</pi-amount>
<pi-note>?</pi-note>
</pi-inv-recordsItems>
</pi-inv-records>
</pay:PayInvoice>
</soapenv:Body>
</soapenv:Envelope>
The wsdl looks like this in SoapUI
<!--This WSDL is automatically generated from a BIS Service Program. It should not be edited in this form.-->
<!--The web service defined by this WSDL is powered by Micro Focus Xcentrisity(tm).-->
<wsdl:definitions name="payinv" targetNamespace="tempuri.org/.../" tns:ignored="" xmlns="schemas.xmlsoap.org/.../" xmlns:soap="schemas.xmlsoap.org/.../" xmlns:wsdl="schemas.xmlsoap.org/.../" xmlns:s="www.w3.org/.../XMLSchema" xmlns:tns="tempuri.org/.../">
<wsdl:types>
<s:schema targetNamespace="tempuri.org/.../" id="schema" xmlns="www.w3.org/.../XMLSchema">
<s:complexType name="PayInvoice_pi-inv-recordsArray">
<s:sequence>
<s:element minOccurs="1" maxOccurs="999" name="pi-inv-recordsItems" type="tns:PayInvoice_pi-inv-records"/>
</s:sequence>
</s:complexType>
<s:complexType name="PayInvoice_pi-inv-records">
<s:all>
<s:element name="pi-inv-num" type="s:string"/>
<s:element name="pi-amount" type="s:string"/>
<s:element name="pi-note" type="s:string"/>
</s:all>
</s:complexType>
<s:complexType name="PayInvoice_pi-failed-recordsArray">
<s:sequence>
<s:element minOccurs="0" maxOccurs="999" name="pi-failed-recordsItems" type="tns:PayInvoice_pi-failed-records"/>
</s:sequence>
</s:complexType>
<s:complexType name="PayInvoice_pi-failed-records">
<s:all>
<s:element name="pr-inv-num" type="s:string"/>
</s:all>
</s:complexType>
<s:complexType name="payinv.PayInvoice">
<s:sequence>
<s:element name="PI-User-ID" type="s:string"/>
<s:element name="PI-Pay-Count" type="s:decimal"/>
<s:element name="pi-inv-records" type="tns:PayInvoice_pi-inv-recordsArray"/>
</s:sequence>
</s:complexType>
<s:element name="PayInvoice" type="tns:payinv.PayInvoice"/>
<s:complexType name="payinv.PayInvoiceResponse">
<s:sequence>
<s:element name="pi-result" type="s:string"/>
<s:element name="pi-total-payment" type="s:decimal"/>
<s:element name="pi-fail-count" type="s:decimal"/>
<s:element name="pi-failed-records" type="tns:PayInvoice_pi-failed-recordsArray"/>
</s:sequence>
</s:complexType>
<s:element name="PayInvoiceResponse" type="tns:payinv.PayInvoiceResponse"/>
</s:schema>
</wsdl:types>
<wsdl:message name="payinv.PayInvoice">
<wsdl:part name="parameters" element="tns:PayInvoice"/>
</wsdl:message>
<wsdl:message name="payinv.PayInvoiceResponse">
<wsdl:part name="parameters" element="tns:PayInvoiceResponse"/>
</wsdl:message>
<wsdl:portType name="payinvSoapPort">
<wsdl:operation name="PayInvoice">
<wsdl:input message="tns:payinv.PayInvoice"/>
<wsdl:output message="tns:payinv.PayInvoiceResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="payinvSoapBinding" type="tns:payinvSoapPort">
<soap:binding style='document' transport='schemas.xmlsoap.org/.../>
<wsdl:operation name="PayInvoice">
<soap:operation soapAction="tempuri.org/.../>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="payinv">
<wsdl:port name="payinvSoapPort" binding="tns:payinvSoapBinding">
<soap:address location="example.com/.../>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Does anyone have any thoughts?