ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

PCMLs with multi-dimensional array input

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PCMLs with multi-dimensional array input

    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:
    PHP Code:
            try
            {
                    
    AS400 sys = new AS400("--SYSTEM--""--USER--""--PASSWORD--");

                    
    ProgramCallDocument pcml = new ProgramCallDocument(sysprogram);
                    
    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"pIndicesp.getPPAYC());                
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PUSLH"pIndicesp.getPUSLH());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PGAMT"pIndicesp.getPGAMT());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PTHLF"pIndicesp.getPTHLF());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDBLT"pIndicesp.getPDBLT());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDPAYC"pIndicesp.getPDPAYC());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDUSLH"pIndicesp.getPDUSLH());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDCDSC"pIndicesp.getPDCDSC());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDPAMT"pIndicesp.getPDPAMT());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDRATE"pIndicesp.getPDRATE());
                        
    pcml.setValue("CAPW104.PRDS.WCPAY.PDMANP"pIndicesp.getPDMANP());
                        
    pIndices[0]++;
                    }
                    
                    
    int[] cIndices = new int[1];
                    for(
    InCapw104.CWRK c in.getCalcData())
                    {
                        
    pcml.setValue("CAPW104.PRDS.WCCAL.PDESC"cIndicesc.getPDESC());
                        
    pcml.setValue("CAPW104.PRDS.WCCAL.PCAMT"cIndicesc.getPCAMT());
                        
    cIndices[0]++;
                    }
                    
                    for(
    int i 0in.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 0msgs.lengthm++)
                        {
                            
    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());
            }
        } 
    Here's the message I'm getting:

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

    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
    Any help, insight, or assistance would be greatly appreciated.

    Cheers.

  • #2
    Re: PCMLs with multi-dimensional array input

    Found the answer though it was a complete guess based off of the info available about receiving data from the AS400. You have to provide an additional field value to hold the indices for your program. PCML ended up looking like so:

    PHP Code:
    <pcml version="4.0">
       <!-- 
    RPG programCAPW104  -->
       <!-- 
    created2012-07-20-15.07.53 -->
       <!-- 
    sourceDT72205/SOURCE(CAPW104) -->
       <!-- 
    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="NPWRK" type="int" length="4" />
          <
    data name="NCWRK" type="int" length="4" />
          <
    data name="WCMST" type="struct" struct="MWRK" usage="inherit" />
          <
    data name="WCPAY" type="struct" struct="PWRK" count="NPWRK" usage="inherit" />
          <
    data name="WCCAL" type="struct" struct="CWRK" count="NCWRK" 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
    NPWRK and NCWRK (I know, the names are atrocious, but I have zero control over them) have to be set in the program before any of the structs are written or it goes haywire as well.

    Good luck to anyone else that needs to use this.

    Cheers.

    Comment


    • #3
      Re: PCMLs with multi-dimensional array input

      thanks for the update...
      I'm not anti-social, I just don't like people -Tommy Holden

      Comment

      Working...
      X