LoginSignup
1
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

IBM i サービスの別な探し方:QSYS2, SYSTOOLライブラリーのプロシージャー検索で

Last updated at Posted at 2024-06-16

IBM i サービス(IBM i ,Db2 for i の運用・操作をSQLで実行するインターフェース)の数は半年ほど前に調べた際は300ちょっとでしたが、つい最近調べた際は350でした。
※上記の数は、以下の記事で紹介するプロシージャー以外にテーブル、テーブル関数等も含めた合計数です。

私がQiitaで紹介できたその数は10にもなりません^^; ということで全てを把握するのはネ申の領域になってしまいますので、普通は ACS SQLスクリプト実行の例から挿入から探すことになると思います。

・・・が、それではまだるっこしい皆様にちょっとかんたんになる?かもしれないIBM i サービスの探し方をご紹介します。

IBM i サービスの実体はQSYS2 と SYSTOOLSライブラリーに格納されている

QSYS2,SYSTOOLライブラリーともすぐ実行可能なプロシージャーが収められています。

QSYS2, SYSTOOLSライブラリーのプロシージャーを表示してみる

もちろん5250で WRKLIB ・・・でもいいのですが^^;
ここではふつうにACS → データベース → スキーマを開きます

デフォルトだとSYSTOOLSが表示されないと思いますので、ツリー上の "スキーマ"を選択 → 右クリック → 組込み を選択します
image.png

最上部の ""スキーマ名の入力" に "SYSTOOLS" と入力してもいいですし、
"スキーマの検索" に "SYST*" のように入力して検索し、結果から SYSTOOL を選択してもかまいません。下図はその状態です。

image.png

ここで 追加 ボタンを押すと右側の選択されたスキーマ一覧に追加されます。
同様にして、QSYS2も追加します。

SYSTOOLライブラリーを確認してみる

QSYS2ライブラリーを展開すると、146個のプロシージャーが見つかりました。

image.png

SYSTOOLSライブラリーには8つです。
※ただし、この後確認したらSYSTOOLSで実行時エラーのでるプロシージャーもありました、バグ?その他?後ほど確認したいと思います。

image.png

"名前"がSQLプロシージャー名、"特定の名前"と"プログラム"がIBM i OS上の実際のオブジェクト名(とライブラリー名)です。

これならIBM i サービスの一覧としても使えそうです。

みつけた、 IFS_WRITEプロシージャーを実行してみる

せっかくなので目についたプロシージャーを実行してみます。

下記のIFS_WRITEプロシージャーが目につきました。

image.png

素、バイナリー、ユニコードがあるようです。素のプロシージャーをSQLスクリプトの実行画面で開いてみると、下記のテンプレが表示されました。

CALL QSYS2.IFS_WRITE(
  PATH_NAME   => ?,         /* IN DBCLOB(16 MB)  pathname - Default: none                      */
  LINE        => ?,         /* IN CLOB(2 GB)     string - Default: none                        */
  FILE_CCSID  => 0,         /* IN INTEGER        number - Default: 0                           */
  OVERWRITE   => 'APPEND',  /* IN VARCHAR(7)     APPEND, NONE, REPLACE - Default: APPEND       */
  END_OF_LINE => 'CRLF'     /* IN VARCHAR(4)     ANY, CR, CRLF, LF, LFCR, NONE - Default: CRLF */
);

下記のようにIFSパス・ファイル名、書き込みする文字列、IFSファイルのCCSIDを指定できます。
また、APPENDだと行を追加、RPLACEは置き換えなど。改行コードも指定できるようです。

image.png

fyi.で実行コード例も貼り付けます

CALL QSYS2.IFS_WRITE(
  PATH_NAME   => '/home/GOMA/Hello_939.txt',         /* IN DBCLOB(16 MB)  pathname - Default: none                      */
  LINE        => 'Hello World!',         /* IN CLOB(2 GB)     string - Default: none                        */
  FILE_CCSID  => 939,         /* IN INTEGER        number - Default: 0                           */
  OVERWRITE   => 'APPEND',  /* IN VARCHAR(7)     APPEND, NONE, REPLACE - Default: APPEND       */
  END_OF_LINE => 'CRLF'     /* IN VARCHAR(4)     ANY, CR, CRLF, LF, LFCR, NONE - Default: CRLF */
);

IFSファイルが生成され、、
中身は、、
image.png

ファイル属性は、、
image.png

OKのようです。
画面は記載しませんが、CCSIDを5035等にしても生成できました。

IFS_WRITE_UTF8プロシージャー も実行してみる

生成されたスケルトンがこちら

CALL QSYS2.IFS_WRITE_UTF8(
  PATH_NAME   => ?,         /* IN DBCLOB(16 MB)  pathname - Default: none                      */
  LINE        => ?,         /* IN CLOB(2 GB)     string - Default: none                        */
  FILE_CCSID  => 1208,      /* IN INTEGER        number - Default: 1208                        */
  OVERWRITE   => 'APPEND',  /* IN VARCHAR(7)     APPEND, NONE, REPLACE - Default: APPEND       */
  END_OF_LINE => 'CRLF'     /* IN VARCHAR(4)     ANY, CR, CRLF, LF, LFCR, NONE - Default: CRLF */
);

実行時サンプルがこちらです。
image.png

CALL QSYS2.IFS_WRITE_UTF8(
  PATH_NAME   => '/home/GOMA/Hello_UTF8.txt',         /* IN DBCLOB(16 MB)  pathname - Default: none                      */
  LINE        => 'Hello World!',         /* IN CLOB(2 GB)     string - Default: none                        */
  FILE_CCSID  => 1208,      /* IN INTEGER        number - Default: 1208                        */
  OVERWRITE   => 'APPEND',  /* IN VARCHAR(7)     APPEND, NONE, REPLACE - Default: APPEND       */
  END_OF_LINE => 'CRLF'     /* IN VARCHAR(4)     ANY, CR, CRLF, LF, LFCR, NONE - Default: CRLF */
);

実行結果は、、(2回実行後)
image.png

image.png

OKなようです。

1
0
4

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
1
0