PHP プログラムからの利用 i5_connect 関数でユーザセッションを確立 i5_* 関数で任意の API を実行 i5_close 関数でユーザセッションを切断 PHP プログラムから i5/os のサービスにアクセスするためには i5/os に登録されているユーザ名とパスワードによる認証を行い ユーザセッションを確立する必要があります resource i5_connect (string server, string user, string password[, array option] ) 各種サービスにアクセスする際は i5_connect 関数の認証で利用したユーザの権限で操作が行われます 一連の操作が完了した後は i5_close 関数を用いてユーザセッションを切断する必要があります bool i5_close ( [resource connection] ) Copyright 2006 JBCC Holdings Inc. 8
PHP プログラムからの利用 (i5_connect) <html> <head><title> シンプルな PHP</title></head> <body> DBCS 漢字 / 半角かなをパラメータで i5 に渡す場合には i5 への接続時にこの記述が必要 <?php $conn = i5_connect("localhost", USER", PASSWORD", array(i5_options_codepagefile=>"/usr/local/zend/core/etc/jp_5035.cpg")); if (!$conn) die("<br>connect fail errno=".i5_errno()." msg=".i5_errormsg()); echo " 正常に接続されました "; i5_close($conn);?> </body> </html> Copyright 2006 JBCC Holdings Inc. 9
エラー処理 i5_error 関数にて最後の処理のエラーを確認 エラーが発生していなければFALSE エラーが発生していたら詳細情報を配列で返却 i5_errno 関数にてエラー番号を取得 i5_errormsg 関数にてエラーメッセージを取得 i5_* * 関数の実行で発生したエラーは i5_error 関数で確認することができます mixed i5_error ( [resource connection] ) 要素番号説明 0 エラー番号 (i5_errno 関数の戻り値 ) 1 エラー分類 2 エラーメッセージ (i5_errormsg 関数の戻り値 ) 3 エラーの詳細 Copyright 2006 JBCC Holdings Inc. 10
CL コマンドの実行 i5_command 関数を利用し CL コマンドを実行 連想配列で入力パラメータを指定 キー : 入力パラメータ名 値 : 入力パラメータ値 連想配列で出力パラメータを指定 キー : 出力パラメータ名 値 : 出力パラメータ値を受け取るPHP 変数名 i5_command 関数を利用すると 任意のCLコマンドを実行することができます bool i5_command(string command [, array inputs, array outputs, resource connection] ) Copyright 2006 JBCC Holdings Inc. 13
i5/osプログラムの呼び出し準備 プログラムの実行に必要なデータ定義を行う i5_program_prepare 連想配列にて定義 戻り値は実行対象プログラムを示すリソース型の値 実行 i5_program_call 関数にてプログラムを実行 プログラムの実行に必要な引数を指定 プログラムリソース (i5_program_prepare 関数の戻り値 ) プログラムへの入力データ プログラムからの出力データ (PHP 変数を割り当て ) 実行が完了したら i5_program_close 関数でリソースを解放 Copyright 2006 JBCC Holdings Inc. 14
i5/os プログラムの呼び出し (CL プログラムのコール ) DEMOLIB/CLPGM CLプログラム *************** データの始め **************** 0001.00 PGM PARM(&A &B &C) 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(15) 0003.00 DCL VAR(&B) TYPE(*CHAR) LEN(15) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(15) 0005.00 CHGVAR VAR(&C) VALUE(' PHP ') 0006.00 ENDPGM ***************** データの終わり ************************************** PHP からこの CL プログラムを呼び出します 変数 C( 得意な言語 ) を PHP という表記に変えるプログラムです Copyright 2006 JBCC Holdings Inc. 15
i5/os プログラムの呼び出し (CL プログラムのコール ) <?php $conn = i5_connect("localhost", USER", PASSWORD", array(i5_options_codepagefile=>"/usr/local/zend/core/etc/jp_5035.cpg")); if (!$conn) die("<br>connect fail errno=".i5_errno()." msg=".i5_errormsg()); //1. 入出力のパラメータの属性設定 $description = array( array("name"=>"first", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"15"), array("name"=>"last", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>"15"), array("name"=>"language", "IO"=>I5_INOUT, "Type"=>I5_TYPE_CHAR, "Length"=>"15") ); //2. 呼び出しプログラムの設定 $pgm = i5_program_prepare( DEMOLIB/CLPGM", $description); if (!$pgm) die("<br>program prepare errno=".i5_errno()." msg=".i5_errormsg()); //3. 入力パラメータ $parameter = array( "FIRST"=>" イグアス ", "LAST"=>" 太郎 ", "LANGUAGE"=>"RPG" ); Copyright 2006 JBCC Holdings Inc. 16 この時点では得意な言語は RPG になっています 次ページへ続く
i5/os プログラムの呼び出し (CL プログラムのコール ) //4. 出力パラメータ $parmout = array( "FIRST"=>"FIRST", "LAST"=>"LAST", "LANGUAGE"=>"LANGUAGE" ); //5. 実行 $ret = i5_program_call($pgm, $parameter, $parmout); if (!$ret) die("<br>program call errno=".i5_errno()." msg=".i5_errormsg()); echo "<BR> 姓 : $FIRST"; echo "<BR> 名 : $LAST"; echo "<BR> 得意な言語 : $LANGUAGE"; i5_program_close($pgm); i5_close($conn);?> CL プログラムをコールして実行すると 得意な言語が PHP に変わっています Copyright 2006 JBCC Holdings Inc. 17
i5/os プログラムの呼び出し (RPG プログラムのコール ) DEMOLIB/RPGPGM *************** データの始め **************** 0001.00 H***************************************************************** 0002.00 H Y 0003.00 H***************************************************************** 0004.00 C *ENTRY PLIST 0005.00 C PARM P@IN 1 0006.00 C PARM P@OUT 12 0007.00 C***************************************************************** 0008.00 C SELEC 0009.00 C P@IN WHEQ '1' 0010.00 C MOVEL'1です 'P@OUT 0011.00 C P@IN WHEQ '2' 0012.00 C MOVEL'2です 'P@OUT 0013.00 C ENDSL 0014.00 C* 0015.00 C SETON LR 0016.00 C* 0017.00 C RETRN ***************** データの終わり ************************************** PHP から受け取ったパラメータに応じて出力パラメータをセットするプログラムです Copyright 2006 JBCC Holdings Inc. 18
i5/os プログラムの呼び出し (RPG プログラムのコール ) <?php $user = USER"; $pass = PASSWORD"; $conn = i5_connect("localhost",$user,$pass, array(i5_options_codepagefile=>"/usr/local/zend/core/etc/jp_5035.cpg")); if (!$conn) die("<br>connect fail errno=".i5_errno()." msg=".i5_errormsg()); $parm = array("name" => "PARM","Type" => I5_TYPE_CHAR,"Length" => "1", "IO" => I5_IN); $parm2 = array("name" => "PARM2", "Type" => I5_TYPE_CHAR, "Length" => "12", "IO" => I5_OUT); $desc = array($parm, $parm2); $prog = i5_program_prepare( DEMOLIB/RPGPGM",$desc); if(!$prog) die(i5_errormsg()); if(i5_program_call($prog,array("parm"=>"1"),array("parm2"=>"parm2"))){ echo "<br> パラメータは $PARM2"; }else{ echo "program call failed"; } i5_program_close($prog); i5_close($conn); CL 呼び出しのときと同じように記述します?> Copyright 2006 JBCC Holdings Inc. 19