2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【IBM i × Node.js】itoolkit入門

Last updated at Posted at 2025-10-28

目次

  1. itoolkit とは?
  2. 何ができる?
  3. インストール方法
  4. 実際に動かしてみよう

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 とします。

DEMO.rpgle
**FREE

// パラメータ定義
dcl-pi *n;
   Num1      int(10);
   Num2      int(10);
   Result    int(10);
end-pi;

// 計算処理
Result = Num1 + Num2;

// 終了時にリソースを解放
*inlr = *on;                         

続いて、MYLIBCPL/DEMO 実行するソースをIFS 上のitoolフォルダーの中に作成します。

test.js
// 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

以下のように計算結果が表示されれば成功です。
itoolkit2.png

まとめ

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に帰属します。詳細はこちらを参照ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?