Document

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] )
8
Copyright © 2006 JBCC Holdings Inc.
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
1
2
3
Copyright © 2006 JBCC Holdings Inc.
説明
エラー番号(i5_errno関数の戻り値)
エラー分類
エラーメッセージ(i5_errormsg関数の戻り値)
エラーの詳細
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"
);2006 JBCC Holdings Inc.
Copyright ©
この時点では得意な言語は”RPG”になっています。
16
次ページへ続く →
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から受け取ったパラメータに応じて出力パラメータをセットするプログラムです。
18
Copyright © 2006 JBCC Holdings Inc.
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呼び出しのときと同じように記述します。
?>
19
Copyright © 2006 JBCC Holdings Inc.