PHPプログラムからの利用
■
■
■
■i5_connect関数でユーザセッションを確立
関数でユーザセッションを確立
関数でユーザセッションを確立
関数でユーザセッションを確立
■
■
■
■i5_*関数で任意の
*関数で任意の
*関数で任意の
*関数で任意のAPIを実行
を実行
を実行
を実行
■
■
■
■i5_close関数でユーザセッションを切断
関数でユーザセッションを切断
関数でユーザセッションを切断
関数でユーザセッションを切断
PHPプログラムからi5/OSのサービスにアクセスするためには、i5/OSに登録されている
ユーザ名とパスワードによる認証を行い、ユーザセッションを確立する必要があります。
8resource i5_connect (string server, string user,
resource i5_connect (string server, string user,
resource i5_connect (string server, string user,
resource i5_connect (string server, string user,
string password[, array option] )
string password[, array option] )
string password[, array option] )
string password[, array option] )
※各種サービスにアクセスする際は、i5_connect関数の認証で利用したユーザ
の権限で操作が行われます。
bool i5_close ( [resource connection] )
bool i5_close ( [resource connection] )
bool i5_close ( [resource connection] )
bool i5_close ( [resource connection] )
一連の操作が完了した後は、i5_close関数を用いてユーザセッションを切断する
必要があります。
<html>
<head><title>シンプルなPHP</title></head>
<body>
<?php
$conn = i5_connect("localhost", “USER", “PASSWORD",
array(i5_OPTIONS_CODEPAGEFILE=>"/usr/local/Zend/Core/etc/jp_5035.cpg"));
DBCS漢字/半角かなをパラメータでi5に渡す場 合には、i5への接続時にこの記述が必要
PHPプログラムからの利用(i5_connect)
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);
?>
エラー処理
■
■
■
■i5_error関数にて最後の処理のエラーを確認
関数にて最後の処理のエラーを確認
関数にて最後の処理のエラーを確認
関数にて最後の処理のエラーを確認
●エラーが発生していなければFALSE
●エラーが発生していたら詳細情報を配列で返却
■
■
■
■i5_errno関数にてエラー番号を取得
関数にてエラー番号を取得
関数にてエラー番号を取得
関数にてエラー番号を取得
■
■
■
■i5_errormsg関数にてエラーメッセージを取得
関数にてエラーメッセージを取得
関数にてエラーメッセージを取得
関数にてエラーメッセージを取得
i5_*関数の実行で発生したエラーは
*関数の実行で発生したエラーは
*関数の実行で発生したエラーはi5_error関数で確認することができます。
*関数の実行で発生したエラーは
関数で確認することができます。
関数で確認することができます。
関数で確認することができます。
10i5_*関数の実行で発生したエラーは
*関数の実行で発生したエラーは
*関数の実行で発生したエラーはi5_error関数で確認することができます。
*関数の実行で発生したエラーは
関数で確認することができます。
関数で確認することができます。
関数で確認することができます。
mixed i5_error ( [resource connection] )
mixed i5_error ( [resource connection] )
mixed i5_error ( [resource connection] )
mixed i5_error ( [resource connection] )
要素番号
説明
0
エラー番号(i5_errno関数の戻り値)
1
エラー分類
2
エラーメッセージ(i5_errormsg関数の戻り値)
3
エラーの詳細
CLコマンドの実行
■
■
■
■i5_command関数を利用し
関数を利用し
関数を利用し
関数を利用しCLコマンドを実行
コマンドを実行
コマンドを実行
コマンドを実行
■連想配列で入力パラメータを指定
■連想配列で入力パラメータを指定
■連想配列で入力パラメータを指定
■連想配列で入力パラメータを指定
●キー
: 入力パラメータ名
●値
: 入力パラメータ値
■連想配列で出力パラメータを指定
■連想配列で出力パラメータを指定
■連想配列で出力パラメータを指定
■連想配列で出力パラメータを指定
●キー
: 出力パラメータ名
●キー
: 出力パラメータ名
●値
: 出力パラメータ値を受け取るPHP変数名
i5_command関数を利用すると、任意のCLコマンドを実行することができます。
bool i5_command(string command [, array inputs, array outputs,
bool i5_command(string command [, array inputs, array outputs,
bool i5_command(string command [, array inputs, array outputs,
bool i5_command(string command [, array inputs, array outputs,
resource connection] )
resource connection] )
resource connection] )
resource connection] )
i5/OSプログラムの呼び出し
準備
準備
準備
準備
■プログラムの実行に必要なデータ定義を行う
■プログラムの実行に必要なデータ定義を行う
■プログラムの実行に必要なデータ定義を行う
■プログラムの実行に必要なデータ定義を行う
●i5_program_prepare
・・・連想配列にて定義
■戻り値は実行対象プログラムを示すリソース型の値
■戻り値は実行対象プログラムを示すリソース型の値
■戻り値は実行対象プログラムを示すリソース型の値
■戻り値は実行対象プログラムを示すリソース型の値
14実行
実行
実行
実行
■
■
■
■i5_program_call関数にてプログラムを実行
関数にてプログラムを実行
関数にてプログラムを実行
関数にてプログラムを実行
■プログラムの実行に必要な引数を指定
■プログラムの実行に必要な引数を指定
■プログラムの実行に必要な引数を指定
■プログラムの実行に必要な引数を指定
●プログラムリソース(i5_program_prepare関数の戻り値)
●プログラムへの入力データ
●プログラムからの出力データ(PHP変数を割り当て)
■実行が完了したら
■実行が完了したら
■実行が完了したら
■実行が完了したらi5_program_close関数でリソースを解放
関数でリソースを解放
関数でリソースを解放
関数でリソースを解放
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 ')
DEMOLIB/CLPGM
i5/OSプログラムの呼び出し(CLプログラムのコール)
0005.00 CHGVAR VAR(&C) VALUE(' PHP ')
0006.00 ENDPGM
*****************データの終わり
**************************************
PHPからこの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"),
i5/OSプログラムの呼び出し(CLプログラムのコール)
16
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"
);
次ページへ続く →
この時点では得意な言語は”RPG”になっています。//4.出力パラメータ
$parmOut = array(
"FIRST"=>"FIRST",
"LAST"=>"LAST",
"LANGUAGE"=>"LANGUAGE"
);
i5/OSプログラムの呼び出し(CLプログラムのコール)
//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);
?>
***************データの始め**************** 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
DEMOLIB/RPGPGM
i5/OSプログラムの呼び出し(RPGプログラムのコール)
18 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から受け取ったパラメータに応じて出力パラメータをセットするプログラムです。
<?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);
i5/OSプログラムの呼び出し(RPGプログラムのコール)
$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);