PreviousNext
Help > API Functions > Program and Procedure calls > i5_program_call
i5_program_call

 

This function calls the Program or Procedure described with the i5_program_prepare and optionally accepts results.

 

     bool i5_program_call (resource program , array params [, array retvals])

 

 

Parameters

 

 

program

Program resource opened by i5_program_prepare(), or i5_program_prepare_PCML().

params

Parameters according to description.

 

Can be given as flat array, then parameters are assigned in order, or

as “key => value“ pairs then the values are assigned to the parameter

named by the key.

 

retvals

Array of “key => value” pairs where:
- key describes the output parameter name.

- value describes the name of the PHP variable that will receive the parameter.

 

 



Return

True if OK, false if failed. 

 

I5_ERR_PARSEXML

42

Internal error; please contact Aura Equipements.

error number 42

I5_ERR_PHP_OPTIONSTYPE

259

The type of " I5_OPTIONS_ALIAS" option must be x

and not x

I5_ERR_PHP_OPTIONSNUMBER

260

Option number -1 is unknown.

I5_ERR_PHP_TYPEPARAM

262

Type of element x in parameter -1 must be y.

Type z was provided.

I5_ERR_PHP_LOCALHOST_NOT_PERMIT

286

you must specify the AS/400 address

I5_ERR_PHP_EXECUTE

289

You cannot read a request with parameters

 without calling the I5_execute function.

I5_ERR_PHP_NO_COMMAND

290

Empty command line or name

I5_ERR_PHP_NO_PARMNAME

293

Internal error; please contact Aura Equipements.

error number 293

 

 Details

 

Several calls can be made with the same description using the same program resource.

 

Fetch should still work even if the return parameters are defined and assigned.

 

Example 1

 

 

/* call a program passing simple parameters and an associative array */

$description = array (

  array ("Name"=>"OP1""IO"=>I5_IN"Type"=>I5_TYPE_PACKED"Length"=>"5.2"),

  array ("Name"=>"STR1""IO"=>I5_IN"Type"=>I5_TYPE_CHAR"Length"=>20),

  array ("Name"=>"OP2""IO"=>I5_INOUT"Type"=>I5_TYPE_PACKED"Length"=>"5.2"),

   array ("Name"=>"STR2""IO"=>I5_INOUT"Type"=>I5_TYPE_CHAR"Length"=>30),

   array ("Name"=>"OP3""IO"=>I5_OUT"Type"=>I5_TYPE_PACKED"Length"=>"10.4")

 );

 $hdlPgm = i5_program_prepare("EASYCOMXMP/RPCSAMPLE"$description);

 

$parameterIn = array("OP2"=> 20.2"STR2"=>"test", "STR1"=>"Hello", "OP1"=> 10.1);

$parameterOut = array("OP2"=>"parmOperator2""STR2"=> "parmString2");

$ret = i5_program_call($hdlPgm$parameterIn$parameterOut);

if (!$ret)

{

    print_r(i5_error());

    trigger_error("i5_execute error : ".i5_errormsg(), E_USER_ERROR);

}

else

{

    echo "Parameter 3(P1+ P3, 10.1 + 20.2) : $parmOperator2<BR>";

    echo "Parameter 4(P2), Hello : $parmString2<BR>";

}

 

$ret = i5_program_close ($hdlPgm);

 if (!$ret)

{

  trigger_error("i5_program_close error : ".i5_errormsg(), E_USER_ERROR);

}

 

 

Example 2

 

/*call a program passing simple parameters and an indexed array */

$description = array (

  array ("Name"=>"OP1""IO"=>I5_IN"Type"=>I5_TYPE_PACKED"Length"=>"5.2"),

  array ("Name"=>"STR1""IO"=>I5_IN"Type"=>I5_TYPE_CHAR"Length"=>20),

  array ("Name"=>"OP2""IO"=>I5_INOUT"Type"=>I5_TYPE_PACKED"Length"=>"5.2"),

   array ("Name"=>"STR2""IO"=>I5_INOUT"Type"=>I5_TYPE_CHAR"Length"=>30),

   array ("Name"=>"OP3""IO"=>I5_OUT"Type"=>I5_TYPE_PACKED"Length"=>"10.4")

 );

 $hdlPgm = i5_program_prepare("EASYCOM/RPCSAMPLE"$description);

 

$parameterIn = array(10.1"Hello"20.2"test");

$parameterOut = array("OP2"=>"parmOperator2""STR2"=> "parmString2");

$ret = i5_program_call($hdlPgm$parameterIn$parameterOut);

if (!$ret)

{

    print_r(i5_error());

    trigger_error("i5_execute error : ".i5_errormsg(), E_USER_ERROR);

}

else

{

     echo "Parameter 3(P1+ P3, 10.1 + 20.2) : $parmOperator2<BR>";

     echo "Parameter 4(P2), Hello : $parmString2<BR>";

}

 

$ret = i5_program_close ($hdlPgm);

 if (!$ret)

{

     trigger_error("i5_program_close error : ".i5_errormsg(), E_USER_ERROR);

 }

 

 

Note


Use i5_command to invoke a program without parameters. For example,

i5_command("call LIB_NAME/PROGRAM_NAME").