Passing parameters to Java JT400 object
I need to pass a byte array as my input and an int as the output length for the Class ProgramCall.
My error is
parameterList[0] (null): Parameter value is not valid.
My thoughts are
I think (but I'm not completely sure) I'm having trouble because I'm passing a Coldfusion Array where a Java Array is needed to pass the arguments.
Coldfusion arrays start at index 1 and Java Arrays start at index 0.
(1) Am I correct in what I believe is causing my error?
(2) How can I convert the Coldfusion Array to a Java Array?
Here is the documentation for Java JT400 object Class ProgramCall
Here is my code
<!--- I am the system object --->
<cfobject
action="create"
type="java"
class="com.ibm.as400.access.AS400"
name="mysystem">
<!--- I am the program call object --->
<cfobject
action="create"
type="java"
class="com.ibm.as400.access.ProgramCall"
name="myprogram">
<!--- I am the program parameter object --->
<cfobject
action="create"
type="java"
class="com.ibm.as400.access.ProgramParameter"
name="myparameter">
<!--- I am the as400 text object --->
<cfobject
action="create"
type="java"
class="com.ibm.as400.access.AS400Text"
name="mytext">
<!--- Initialize our system object --->
<cfset mysystem.init(AS400system,Trim(UCase(loginname)),Left(Trim(loginpass),10)) />
<!--- Execute our AS400 username validation --->
<cfset mysystem.ValidateSignon() />
<!--- Initialize our as400 text object and convert string to a byte array --->
<cfset mytext.init(5) />
<cfset nametext = mytext.toBytes("hello") />
<!--- Initalize our program parameter object --->
<cfset myparameter.init(2) />
<!--- Set input data and output data length using the Class methods of ProgramParameter --->
<cfset myparameter.setInputData(nametext) />
<cfset myparameter.setOutputDataLength(20) />
<!--- Set parameters to a Coldfusion Array --->
<cfset parameterlist = ArrayNew(1) />
<cfset parameterlist[1] = myparameter.getInputData() />
<cfset parameterlist[2] = myparameter.getOutputDataLength() />
<!--- Initalize our program object and run our program --->
<cfset myprogram.init(iseries,ProgramtoRun, parameterlist) />
<cfset myprogram.run() />
