目次
- itoolkit とは?
- 何ができる?
- インストール方法
- 実際に動かしてみよう
1. itoolkit とは?
itoolkit とは、Node.js から IBM i 上の資産(RPG プログラム、CL コマンド、Db2 for i など)を呼び出すためのライブラリ です。
フロントエンドや Web API と組み合わせることで、モダンなアプリケーションから IBM i を活用できます。
2. 何ができる?
itoolkit を使用すると、Web アプリや API から IBM i の機能を直接利用できます。
代表的な機能は以下の通りです。
| 機能 | 内容 |
|---|---|
| RPG/CL 呼び出し | PGM コマンドを使ってプログラムを実行 |
| CL コマンド実行 | CMD 経由で WRKOBJ などを呼び出し |
| SQL 実行 | Db2 for i に SQL を発行 |
| ジョブ情報取得 | ジョブステータスやユーザー情報を取得 |
3. インストール方法
前提条件:Node.js、yum が導入済みであること
まず、5250 画面から PASE 環境を起動します。
CALL QP2TERM
PASE 環境で npm を使うためには、毎回パスを設定する必要がありますが、
.profile に記述しておくことで自動的に反映させることができます。
cd /home/cecuser
echo 'export PATH=/QOpenSys/pkgs/bin:$PATH' >> .profile
変更を反映します。
. .profile
以上が、パスを恒久的に設定する方法です。
それでは、インストールを始めていきます。作業用ディレクトリに移動します。
cd /home/cecuser
npm で itoolkit をインストールします。
npm install itoolkit
インストールが成功すると、node_modules 配下に itoolkit が配置されます。
ls node_modules
4. 実際に動かしてみよう
今回はシンプルに、2つの数値を受け取って加算する RPG プログラムを作成し、
itoolkit から呼び出してみます。
まず、PASE 環境で必要なモジュールをインストールします。
yum install unixODBC
npm install fast-xml-parser
次に、以下のプログラムを作成し、コンパイルして MYLIBCPL/DEMO とします。
**FREE
// パラメータ定義
dcl-pi *n;
Num1 int(10);
Num2 int(10);
Result int(10);
end-pi;
// 計算処理
Result = Num1 + Num2;
// 終了時にリソースを解放
*inlr = *on;
続いて、MYLIBCPL/DEMO 実行するソースをIFS 上のitoolフォルダーの中に作成します。
// itoolkit から接続やプログラム呼び出しに必要なクラスを読み込む
const { Connection, ProgramCall } = require('itoolkit');
// XML をパースするためのライブラリ
const { XMLParser } = require('fast-xml-parser');
// SSH 経由で接続
const conn = new Connection({
transport: 'ssh',
transportOptions: {
host: 'IBM i ホスト名 or IPアドレス',
username: 'ユーザー名',
password: 'パスワード',
},
});
// 呼び出すプログラムを指定
const pgm = new ProgramCall('DEMO', { lib: 'MYLIBCPL' });
// パラメータを指定
pgm.addParam({ type: '10i0', value: 5 });
pgm.addParam({ type: '10i0', value: 7 });
pgm.addParam({ type: '10i0', io: 'out', value: 0 });
// プログラム呼び出しを接続オブジェクトに追加
conn.add(pgm);
// プログラムを実行
conn.run((err, xml) => {
if (err) return console.error(err); //エラーがあればログを表示して終了
// fast-xml-parser を使って XML 形式の戻り値をパース
const parser = new XMLParser({ ignoreAttributes: false, parseTagValue: true });
const parms = [].concat(parser.parse(xml)?.myscript?.pgm?.parm || []);
// 戻り値を取得
const raw = parms[2]?.data;
const outVal = Number(typeof raw === 'object' ? raw['#text'] ?? raw.value : raw);
// 実行結果を出力
console.log('Result:', outVal);
// 接続終了
conn.close?.();
});
最後に、PASE 環境からスクリプトを実行します。
node /home/cecuser/itool/test.js
まとめ
itoolkit を使えば、Node.js から簡単に IBM i の RPG や CL、SQL を呼び出すことができます。
フロントエンドや外部サービスと連携することで、IBM i の資産をモダンに活用できるのが大きな魅力です。
参考サイト
Welcome to nodejs-itoolkit’s documentation!
ushiday@Hackな日々|Node.js itoolkit for IBM iを使う
Node.jsでWebアプリを作ってみよう
特集 5250環境でGitを利用する、Git再入門
当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。
