Hi Folks,
I'm stumped and needing some assistance. As usual the IBM documentation on the web is less than stellar so here I am.
I'm creating a web service that calls an as/400 program that requires several arrays to be passed to it.
I've gotten 9/10ths of the way, but feel like I've hit a rut. IBM's only examples on the web are how to RECEIVE arrays back from the as/400. When I try to actually send arrays, it's hiccuping.
Basically, I'm setting the indices and values for the parameters, but when attempting to run the program, I'm getting an error message that I didn't actually set the values of the required information.
Here's what I've got so far:
Here's the message I'm getting:
As you can see from the output, each index is incremented and the value is written, but when the actual program is called, it says that the value wasn't written. Going a bit insane here.
Here's the PCML
Any help, insight, or assistance would be greatly appreciated.
Cheers.
I'm stumped and needing some assistance. As usual the IBM documentation on the web is less than stellar so here I am.
I'm creating a web service that calls an as/400 program that requires several arrays to be passed to it.
I've gotten 9/10ths of the way, but feel like I've hit a rut. IBM's only examples on the web are how to RECEIVE arrays back from the as/400. When I try to actually send arrays, it's hiccuping.
Basically, I'm setting the indices and values for the parameters, but when attempting to run the program, I'm getting an error message that I didn't actually set the values of the required information.
Here's what I've got so far:
PHP Code:
try
{
AS400 sys = new AS400("--SYSTEM--", "--USER--", "--PASSWORD--");
ProgramCallDocument pcml = new ProgramCallDocument(sys, program);
com.ibm.as400.data.PcmlMessageLog.setTraceEnabled(true);
pcml.setValue("CAPW104.PRDS.WCMST.PFDYR", in.getPFDYR());
pcml.setValue("CAPW104.PRDS.WCMST.PCMTH", in.getPCMTH());
pcml.setValue("CAPW104.PRDS.WCMST.PFUND", in.getPFUND());
pcml.setValue("CAPW104.PRDS.WCMST.PMBRN", in.getPMBRN());
pcml.setValue("CAPW104.PRDS.WCMST.PSUBC", in.getPSUBC());
pcml.setValue("CAPW104.PRDS.WCMST.PBSEQ", in.getPBSEQ());
pcml.setValue("CAPW104.PRDS.WCMST.PRAMT", in.getPRAMT());
pcml.setValue("CAPW104.PRDS.WCMST.PUSER", in.getPUSER());
pcml.setValue("CAPW104.PRDS.WCMST.PID", in.getPID());
int[] pIndices = new int[1];
for(InCapw104.PWRK p : in.getPayrollData())
{
pcml.setValue("CAPW104.PRDS.WCPAY.PPAYC", pIndices, p.getPPAYC());
pcml.setValue("CAPW104.PRDS.WCPAY.PUSLH", pIndices, p.getPUSLH());
pcml.setValue("CAPW104.PRDS.WCPAY.PGAMT", pIndices, p.getPGAMT());
pcml.setValue("CAPW104.PRDS.WCPAY.PTHLF", pIndices, p.getPTHLF());
pcml.setValue("CAPW104.PRDS.WCPAY.PDBLT", pIndices, p.getPDBLT());
pcml.setValue("CAPW104.PRDS.WCPAY.PDPAYC", pIndices, p.getPDPAYC());
pcml.setValue("CAPW104.PRDS.WCPAY.PDUSLH", pIndices, p.getPDUSLH());
pcml.setValue("CAPW104.PRDS.WCPAY.PDCDSC", pIndices, p.getPDCDSC());
pcml.setValue("CAPW104.PRDS.WCPAY.PDPAMT", pIndices, p.getPDPAMT());
pcml.setValue("CAPW104.PRDS.WCPAY.PDRATE", pIndices, p.getPDRATE());
pcml.setValue("CAPW104.PRDS.WCPAY.PDMANP", pIndices, p.getPDMANP());
pIndices[0]++;
}
int[] cIndices = new int[1];
for(InCapw104.CWRK c : in.getCalcData())
{
pcml.setValue("CAPW104.PRDS.WCCAL.PDESC", cIndices, c.getPDESC());
pcml.setValue("CAPW104.PRDS.WCCAL.PCAMT", cIndices, c.getPCAMT());
cIndices[0]++;
}
for(int i = 0; i < in.getPayrollData().size(); i++)
{
pIndices[0] = i;
System.out.println(pcml.getValue("CAPW104.PRDS.WCPAY.PPAYC", pIndices));
}
boolean returnCode = pcml.callProgram(program);
System.out.println("Call to " + program + " returned " + returnCode + "<br />");
if(returnCode == false)
{
// Retrieve list of AS/400 messages
AS400Message[] msgs = pcml.getMessageList(program);
// Loop through all messages and write them to standard output
for (int m = 0; m < msgs.length; m++)
{
String msgId = msgs[m].getID();
String msgText = msgs[m].getText();
System.out.println(" " + msgId + " - " + msgText + "<br />");
}
System.out.println("Call to " + program + " failed. See messages listed above" + "<br />");
}
sys.disconnectAllServices();
} catch(Exception ex) {
System.out.println("ERROR -- CallPcml ended in error: " + ex.getMessage());
}
}
Code:
Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 0 Length: 3 Name: "CAPW104.PRDS.WCMST.PFDYR" Byte data: 00112F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 3 Length: 2 Name: "CAPW104.PRDS.WCMST.PCMTH" Byte data: F0F1 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 5 Length: 4 Name: "CAPW104.PRDS.WCMST.PFUND" Byte data: F0F8F3F0 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 9 Length: 3 Name: "CAPW104.PRDS.WCMST.PMBRN" Byte data: 00001F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: c Length: 3 Name: "CAPW104.PRDS.WCMST.PSUBC" Byte data: 00000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: f Length: 1 Name: "CAPW104.PRDS.WCMST.PBSEQ" Byte data: F1 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 10 Length: 7 Name: "CAPW104.PRDS.WCMST.PRAMT" Byte data: 0000000040000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 17 Length: 50 Name: "CAPW104.PRDS.WCMST.PUSER" Byte data: E385A2A3E6858240404040404040404040404040404040404040404040404040404040404040404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 49 Length: 20 Name: "CAPW104.PRDS.WCMST.PID" Byte data: E385A2A3D7879440404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 5d Length: 4 Name: "CAPW104.PRDS.WCPAY.PPAYC" Indices: {0} Byte data: F1F2F340 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 61 Length: 1 Name: "CAPW104.PRDS.WCPAY.PUSLH" Indices: {0} Byte data: D5 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 62 Length: 6 Name: "CAPW104.PRDS.WCPAY.PGAMT" Indices: {0} Byte data: 00000000500F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 68 Length: 6 Name: "CAPW104.PRDS.WCPAY.PTHLF" Indices: {0} Byte data: 00000000100F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 6e Length: 6 Name: "CAPW104.PRDS.WCPAY.PDBLT" Indices: {0} Byte data: 00000000200F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 74 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDPAYC" Indices: {0} Byte data: F4F5F640 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 78 Length: 1 Name: "CAPW104.PRDS.WCPAY.PDUSLH" Indices: {0} Byte data: D5 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 79 Length: 52 Name: "CAPW104.PRDS.WCPAY.PDCDSC" Indices: {0} Byte data: E385A2A340C485A283998997A389969540F140404040404040404040404040404040404040404040404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: ad Length: 6 Name: "CAPW104.PRDS.WCPAY.PDPAMT" Indices: {0} Byte data: 00000000536F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: b3 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDRATE" Indices: {0} Byte data: 0012000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: b7 Length: 5 Name: "CAPW104.PRDS.WCPAY.PDMANP" Indices: {0} Byte data: 000000266F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: bc Length: 4 Name: "CAPW104.PRDS.WCPAY.PPAYC" Indices: {1} Byte data: F4F5F640 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: c0 Length: 1 Name: "CAPW104.PRDS.WCPAY.PUSLH" Indices: {1} Byte data: D5 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: c1 Length: 6 Name: "CAPW104.PRDS.WCPAY.PGAMT" Indices: {1} Byte data: 00000000600F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: c7 Length: 6 Name: "CAPW104.PRDS.WCPAY.PTHLF" Indices: {1} Byte data: 00000000200F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: cd Length: 6 Name: "CAPW104.PRDS.WCPAY.PDBLT" Indices: {1} Byte data: 00000000300F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: d3 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDPAYC" Indices: {1} Byte data: F7F8F940 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: d7 Length: 1 Name: "CAPW104.PRDS.WCPAY.PDUSLH" Indices: {1} Byte data: D5 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: d8 Length: 52 Name: "CAPW104.PRDS.WCPAY.PDCDSC" Indices: {1} Byte data: E385A2A340C485A283998997A389969540F240404040404040404040404040404040404040404040404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 10c Length: 6 Name: "CAPW104.PRDS.WCPAY.PDPAMT" Indices: {1} Byte data: 00000000356F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 112 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDRATE" Indices: {1} Byte data: 0013000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 116 Length: 5 Name: "CAPW104.PRDS.WCPAY.PDMANP" Indices: {1} Byte data: 000000267F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 11b Length: 4 Name: "CAPW104.PRDS.WCPAY.PPAYC" Indices: {2} Byte data: F7F8F940 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 11f Length: 1 Name: "CAPW104.PRDS.WCPAY.PUSLH" Indices: {2} Byte data: E8 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 120 Length: 6 Name: "CAPW104.PRDS.WCPAY.PGAMT" Indices: {2} Byte data: 00000000700F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 126 Length: 6 Name: "CAPW104.PRDS.WCPAY.PTHLF" Indices: {2} Byte data: 00000000300F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 12c Length: 6 Name: "CAPW104.PRDS.WCPAY.PDBLT" Indices: {2} Byte data: 00000000400F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 132 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDPAYC" Indices: {2} Byte data: F9F8F740 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 136 Length: 1 Name: "CAPW104.PRDS.WCPAY.PDUSLH" Indices: {2} Byte data: E8 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 137 Length: 52 Name: "CAPW104.PRDS.WCPAY.PDCDSC" Indices: {2} Byte data: E385A2A340C485A283998997A389969540F340404040404040404040404040404040404040404040404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 16b Length: 6 Name: "CAPW104.PRDS.WCPAY.PDPAMT" Indices: {2} Byte data: 00000000635F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 171 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDRATE" Indices: {2} Byte data: 0014000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 175 Length: 5 Name: "CAPW104.PRDS.WCPAY.PDMANP" Indices: {2} Byte data: 000000268F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 17a Length: 4 Name: "CAPW104.PRDS.WCPAY.PPAYC" Indices: {3} Byte data: F9F8F740 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 17e Length: 1 Name: "CAPW104.PRDS.WCPAY.PUSLH" Indices: {3} Byte data: E8 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 17f Length: 6 Name: "CAPW104.PRDS.WCPAY.PGAMT" Indices: {3} Byte data: 00000000800F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 185 Length: 6 Name: "CAPW104.PRDS.WCPAY.PTHLF" Indices: {3} Byte data: 00000000400F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 18b Length: 6 Name: "CAPW104.PRDS.WCPAY.PDBLT" Indices: {3} Byte data: 00000000500F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 191 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDPAYC" Indices: {3} Byte data: F6F5F440 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 195 Length: 1 Name: "CAPW104.PRDS.WCPAY.PDUSLH" Indices: {3} Byte data: E8 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 196 Length: 52 Name: "CAPW104.PRDS.WCPAY.PDCDSC" Indices: {3} Byte data: E385A2A340C485A283998997A389969540F440404040404040404040404040404040404040404040404040404040404040404040 Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 1ca Length: 6 Name: "CAPW104.PRDS.WCPAY.PDPAMT" Indices: {3} Byte data: 00000000653F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 1d0 Length: 4 Name: "CAPW104.PRDS.WCPAY.PDRATE" Indices: {3} Byte data: 0015000F Thread[main,5,main] Mon Jul 30 14:25:46 EDT 2012 Writing data -- Offset: 1d4 Length: 5 Name: "CAPW104.PRDS.WCPAY.PDMANP" Indices: {3} Byte data: 000000269F Thread[main,5,main] ERROR -- CallPcml ended in error: Value is not set. Processing <data> element 'CAPW104.PRDS.WCPAY.PPAYC'.
Here's the PCML
PHP Code:
<pcml version="4.0">
<!-- 2000636 -->
<struct name="CWRK">
<data name="PDESC" type="char" length="65" usage="inherit" />
<data name="PCAMT" type="packed" length="9" precision="2" usage="inherit" />
</struct>
<!-- 2000622 -->
<struct name="PWRK">
<data name="PPAYC" type="char" length="4" usage="inherit" />
<data name="PUSLH" type="char" length="1" usage="inherit" />
<data name="PGAMT" type="packed" length="11" precision="2" usage="inherit" />
<data name="PTHLF" type="packed" length="11" precision="2" usage="inherit" />
<data name="PDBLT" type="packed" length="11" precision="2" usage="inherit" />
<data name="PDPAYC" type="char" length="4" usage="inherit" />
<data name="PDUSLH" type="char" length="1" usage="inherit" />
<data name="PDCDSC" type="char" length="52" usage="inherit" />
<data name="PDPAMT" type="packed" length="11" precision="2" usage="inherit" />
<data name="PDRATE" type="packed" length="7" precision="4" usage="inherit" />
<data name="PDMANP" type="packed" length="9" precision="2" usage="inherit" />
</struct>
<!-- 2000605 -->
<struct name="MWRK">
<data name="PFDYR" type="packed" length="4" precision="0" usage="inherit" />
<data name="PCMTH" type="zoned" length="2" precision="0" usage="inherit" />
<data name="PFUND" type="char" length="4" usage="inherit" />
<data name="PMBRN" type="packed" length="5" precision="0" usage="inherit" />
<data name="PSUBC" type="packed" length="4" precision="0" usage="inherit" />
<data name="PBSEQ" type="char" length="1" usage="inherit" />
<data name="PRAMT" type="packed" length="13" precision="2" usage="inherit" />
<data name="PUSER" type="char" length="50" usage="inherit" />
<data name="PID" type="char" length="20" usage="inherit" />
</struct>
<!-- 2000800 -->
<struct name="CAPW104REQ">
<data name="WCMST" type="struct" struct="MWRK" usage="inherit" />
<data name="WCPAY" type="struct" struct="PWRK" count="200" usage="inherit" />
<data name="WCCAL" type="struct" struct="CWRK" count="200" usage="inherit" />
</struct>
<!-- 2002700 -->
<program name="CAPW104" path="/QSYS.LIB/DT72205.LIB/CAPW104.PGM">
<data name="PRDS" type="struct" struct="CAPW104REQ" usage="inputoutput" />
</program>
</pcml>
Cheers.
Comment