IBM i で node.js を使ってみよう!!(4)- IBM i コマンドの実行 -

今回も前回に引き続き「Native JavaScript applications on IBM i with Node.js」を参考にしてテストしてみた結果の紹介です。

今回はコマンドの実行について紹介しましょう。


IBM i コマンドの実行

今回紹介する例は ↓ のように IBM i のコマンドを入力すると、

↓ のように結果が表示されるものです。今回のテストを実行したジョブの CCSID は 1399 です。

ちなみに、WRKACTJOB と実行しても、RUNRMTCMD での実行と同じように勝手に *PRINT オプションで出力されます。左横に表示や終了などのオプションを入力するためのフィールドは出てくるわけではありません。

コマンドの実行を行う部分を見てみましょう。↓ のところです。(全文は前回を参照してください)

var xt = require('/QOpenSys/QIBM/ProdData/Node/os400/xstoolkit/lib/itoolkit');

         var cmd = url.parse(req.url, true).query.cmd;

         if(cmd && cmd.length > 0) {
            console.log("CL command : " + cmd); 
            var conn = new xt.iConn(DBname);
            conn.add(xt.iSh("system -i " + cmd)); 
            function cb(str) {
               res.write(xt.xmlToJson(str)[0].data);
             } 
            conn.run(cb); 
          } 
          // Command Process ends

コマンドの場合は、iToolkit オブジェクトの iConn メソッドで接続オブジェクトを生成し、その接続オブジェクトに対してシェルコマンドとして IBM i コマンドを追加し、コマンドの戻りを設定した上でその接続オブジェクトの run メソッドを実行する、という段取りになっています。

前回紹介した SQL の実行と、今回紹介しているコマンドの実行ができれば、IBM i のアプリケーションとして node.js を利用するには必要十分な機能と言えるでしょう。

API それぞれの詳細については「Toolkit for i APIs」に載っていますので、参照してみてください。

Access IBM i Native Objects」という記事も参考になるでしょう。

SQL もコマンド実行も同じプログラムで実行できる

前回紹介した SQL 実行と今回のコマンドを実行は、一緒にして同じプログラムで実装されています。↑のようにコマンドを実行したあと、もう一度 SQL.html を表示させて別の SQL を実行させることも可能です。

たとえば ↓ のように、新たに、より複雑な SQL も実行させることが可能です。

こんなかんじで結果が返ってきます。

↓ のように、このサンプルでは SQL とコマンド実行をどんな順番で実行させても OK です。


環境変数の設定

今回の一連の例では、特別な環境変数などを設定はしませんでしたが、実際には ↓ のように PATH や LIBPATH を設定しておくといいでしょう。

$ export PATH=/QOpenSys/QIBM/ProdData/Node/bin:$PATH
$ export LIBPATH=/QOpenSys/QIBM/ProdData/Node/bin:$LIBPATH

[Top Pageに戻る]

Ads by TOK2