text:佐々木 幹雄 日本アイ・ビー・エム
IBM i サービス登場の背景
IBM i サービスは、IBM i OSの運用管理やその他のオペレーションを実行するSQLビュー、プロシージャー、関数で提供される。
これらのシステム提供オブジェクトを利用することで、従来必要であったCLプログラムやAPIプログラミングを代替できる。
IBM i サービスは、基本的にSQLインターフェースからの利用を前提に提供されている。つまり大半のIBM i サービスは、これまでもユーザープログラミングすれば実装可能であった機能を提供する、と言える。
IBM i サービスを利用するメリットは何か。それは以下のようにまとめられる。
・CLプログラミング、APIプログラミングを省略でき、生産性が向上する。
・CLコマンドやAPIでは提供されない機能をサービスとしてすぐに利用できる(SQLインターフェース以外にREST API、SOAP経由でも利用可能)。
・システム標準提供なので、開発者ごとの属人性を排除し、システムの可視化が向上する。
IBM i サービスは7.2以降で急速に拡充してきたが、その背景にはIBM i(AS/400)の技術者の世代交代の流れがあると考えられる。
SQLという最も普及した言語、インターフェースを採用することで、IBM iネイティブではない技術者も含めて、IBM i の開発や保守が容易になる効果が見込まれる。運用自動化の観点でも、さまざまな運用監視ツールに組み込めるし、ヘテロなIT環境でも追加の負荷なく、自動化・効率化を実現できる。
実はIBMロチェスター研究所のIBM i開発者も、相当数がオープン系出身の若手技術者である。彼らが最も慣れ親しんだ言語の1つがSQLであることは想像に難くない。そういった背景もあるのだろう。
IBM i サービスの概要
IBM i サービスの実態はQSYS2ライブラリー、SYSTOOLSライブラリーに存在するビュー、プロシージャー、関数である。
IBM i サービスの一覧は、IBMナレッジセンターに記載されている。
以下に、IBM i サービスをカテゴリで分類した。
◎アプリケーション・サービス
データエリア域の検索、ジョブ実行時の環境変数の検索、CLコマンド実行、PASEシェルのパス設定、特定スレッド・ジョブの呼出スタック情報取得など、アプリケーション作成に関連したプロシージャー、ビューを提供
◎通信サービス
該当LPARのOS情報取得、NETSTAT、TCP/IP構成情報、IPインターフェース情報取得、ポート/IP情報取得、TCIP/IPルーティング情報、NTPサーバー情報取得・追加・削除など、ネットワーク関連のプロシージャー、ビューを提供
◎Javaサービス
WRKJVMJOBコマンド類似の情報取得、GC情報やダンプの生成など、JVM関連のプロシージャーを提供
◎ジャーナル・サービス
RTVJRNEコマンドなどを介さず、ジャーナル項目を表示・取得する関数、ジャーナル属性を取得するビューを提供
◎ライブラリアン・サービス
現行ジョブのライブラリー・リスト、指定したライブラリー内のオブジェクト情報の詳細(オブジェクト名・タイプ、サイズ、作成日時、所有者、ソースファイル)など、オブジェクト関連情報に向けたビューと関数を提供
◎メッセージ処理サービス
QHST、ジョブログ内のメッセージ、メッセージキュー*MSGQ、現行ジョブの応答リストなど、メッセージに関連したビューを提供
◎プロダクト・サービス
導入済みライセンスプログラム(ユーザーやベンダーが作成したライセンスプログラム含む)の有効期限切れのチェックと警告メッセージ送出、ライセンスプログラムの一覧取得などのサービスを提供
◎PTFサービス
自社サーバー上の適用済みグループPTFレベル、グループPTFの詳細情報、個別PTF情報、インターネット上のIBMサイトの最新PTFレベルなどのビューを提供
◎セキュリティー・サービス
ユーザーID情報、グループプロフィール情報、オブジェクト権限検査、オブジェクトとユーザー権限の情報、権限リスト、ファンクションIDと詳細、DBモニター・プランキャッシュで列変数値を非表示にする属性変更などのビュー、プロシージャーを提供
◎スプール・サービス
OUTQの情報、OUTQ内のスプールファイル情報を表示するビュー、関数を提供
◎ストレージ・サービス
ASP関連情報、ASPのオン・オフ操作ステータス、テープライブラリーなどメディア操作、物理ディスク情報、テンポラリストレージ情報、所有者ユーザーIDごとのサイズといったビューを提供
◎システム・ヘルス・サービス
QSYS2.SYSLIMTBLテーブルに格納されるASP使用率などディスク情報、テーブルサイズなどが閾値のXX%を超えた時にQSYSOPRメッセージを出力するといったビュー、グローバル変数を提供
◎実行管理サービス
WRKACTJOB・DSPJOB取得情報、ジョブキュー情報、WRKSYSSTS情報、オブジェクトロック・レコードロック情報、スケジュールジョブ情報、システム値情報等のビューと関数を提供
現状、あらゆるCLコマンドを代替可能なわけではないが、運用管理面で利用度の高いCLコマンドやAPIを中心に機能追加が進んでいる。
また後述するように、CLコマンドの組み合わせやAPIプログラミングが必要だった複雑な処理を1つに実装しているIBM i サービスもある。
QSYS2ライブラリー
IBM i サービスの簡単な例として、ジャーナル・サービスの QSYS2.DISPLAY_JOURNALテーブル関数を紹介する。
この機能はSQLインターフェース(またはREST/SOAP)からジャーナル検索する機能である。
従来のCLコマンドではRTVJRNEコマンドに相当するが、RTVJRNEコマンドは1レコードごとにジャーナルを取り出すもので、多くの場合はCLPなどユーザープログラミングが必要であった。
それに対して、ジャーナル・サービスでは以下のとおり、SQLで必要な条件を指定するだけで容易にジャーナルをDb2 のレコードのように検索できる。
SELECT * FROM TABLE (QSYS2.DISPLAY_JOURNAL( ‘DEMOLIB’, ‘JRN01’)) AS JT;DEMOLIB/JRN01から取得した結果が、以下である。
必要に応じてPF名やファイル操作タイプ、ユーザープロフィール、ジョブ名など条件を付加して検索できる。
SYSTOOLSライブラリー
前述したように、IBM i サービスは基本的な単機能をSQLで呼び出す。ユーザーの利用ケースに応じて組み立てて利用するためのもの、と言える。
それに対してSYSTOOLSライブラリーには、多くのユーザーでそのまま利用できそうなIBM i サービスのサンプルや、より複雑な機能を実行するサンプルが提供されている。実業務ですぐに応用したいユーザーには、SYSTOOLライブラリーで適したサンプルが見つかるかもしれない。
SYSTOOLライブラリーはPTF適用時やバージョンアップ時に随時、機能拡張などメンテナンスが行われている。
SYSTOOLライブラリーで提供される機能のいくつかを、以下に紹介する。
ファームウェア情報の取得:FIRMWARE_CURRENCY
実行しているサーバーのファームウェア情報を取得し、表示する。DSPHDWRSCコマンド、SPFMWSTSコマンドに類似する。
適用済みグループPTF情報:GROUP_PTF_CURRENCY
実行しているIBM i に適用済みのグループPTF情報を取得する。DSPPTFコマンドでも取得できるが、1つのSQLでさまざまな条件により変更して取得できるなど、柔軟性は高い。
このサービスでは、以下のように非常に詳細なPTF情報を取得できる。
古いスプールファイルの検索・削除:DELETE_OLD_SPOOLED_FILES
DLETE_OLDER_THAN パラメーターに日数で検索、PREVIEWパラメーターをYES/NOできる(NOで該当スプールを削除)。CLコマンドの場合はプログラミングが必要になる。
ACSからアクセスできるIBM i サービス・サンプル
IBM i Access Client Solution (以下、ACS)から、IBM i サービスの多彩なサンプルを利用可能である。
ACSでIBM i サービスのサンプルSQLを利用する手順は以下のとおりである。
IBM i サービスでSQLスクリプトの実行画面を開く → 編集メニュー → 例 → 例から挿入 → 展開する画面でIBM i Services を選択
今回は主題ではないので触れないが、以下の画面のようにACSはIBM i サービス以外にも、Db2 for iサービスや一般的なDb2 for i SQLのサンプルが数多く提供されている。
IBM i サービスのサンプルコードを閲覧すると、以下のように非常にたくさん登録されているのがわかる。
サンプル名称から大まかな利用ケースが想像できるだろう。該当しそうなサンプルを選択すると、SQLのコードが表示される。基本的には、そのままコピー&ペーストして利用可能である。
特集 IBM i サービスを学ぶ
<概要編>
IBM i サービスの基本とメリット ~CLやAPIのプログラミング不要で、必要な機能がすぐに使える
著者
佐々木 幹雄氏
日本アイ・ビー・エム株式会社
IBM Powerテクニカルセールス
シニアITスペシャリスト
AS/400利用のお客様担当SEから出発し、さまざまなテクニカル職種を担当。現在はPower Systemsはじめインフラ提案・アーキテクチャ設計を主に担当している。
[i Magazine・IS magazine]