Text=鈴木 漠 日本アイ・ビー・エム システムズ・エンジニアリング
「Information Management System for z/OS」(以下、IMS)は、IBMが提供するミドルウェアである。アプリケーション・サーバーの機能を提供する「トランザクション・マネージャー」と、データベース・サーバーの機能を提供する「データベース・マネージャー」の2つによって構成され、z/OS上でのみ稼働する。
IMSの歴史は古く、IMS V1が初めて提供されたのは1968年である。米国の月面飛行計画であるアポロ計画にて、宇宙船の部品を管理するためのシステムとして開発されたのが起源である。金融をはじめとして、製造や運輸などミッションクリティカルな業務を支えている製品だ。
IMSはIMS V1の提供が開始された1968年から、本稿執筆時である2023年現在の最新リリースであるIMS 15.4までの間に、さまざまな機能拡張がなされている。その中に「IMS管理ACB」がある。
これはApplication Control Block(ACB)と呼ばれるIMS資源の新しい管理方法を提供する機能であり、IMS V14で提供された。IMS管理ACBはIMS 15.1発表レターの開発意向表明で将来的な必須化が予告されていたが、2023年6月のIMS 15.4発表レターの開発意向表明にて必須化の日付が2025年6月と指定された。
世界的に見れば、IMS管理ACBは複数のユーザーで本番環境での使用実績があり、日本国内でも今後使用が開始される。
本稿ではまず、IMS管理ACBとはどのような機能かを説明し、続いて当該機能を利用するメリットについて運用面とアプリケーション開発面の双方から順に紹介する。
IMS管理ACBとは
IMS管理ACBとは前述のとおり、ACBの新しい管理方法を提供する機能である。
ACBの格納先がACBLIBからIMSディレクトリーと呼ばれるデータセット群に変更になり、当該データセット群のサイズ管理がユーザー主導からIMSの自動管理へ変更された。
またこの機能を有効化することで、IMS資源の定義および導入をRDBのようなData Definition Language(DDL)を用いて実施可能になる。これが、IMS管理ACBの運用面のメリットとなる。
IMS管理ACBは前提として、IMSカタログの有効化が必須となる。IMSカタログはIMS V12+PTFで提供された新機能で、HALDB編成のDBであるIMSカタログに、DBDやPSBをXMLで表現したIMSメタデータを格納できる。
このIMSカタログを用いることで、当該資源にJDBCドライバを用いてアクセスできれば、ホスト内外のどのような場所からもTCP/IP通信を通じてIMS DBにSQLアクセスが可能になる。これがIMS管理ACBのアプリケーション運用面のメリットとなる。
IMS管理ACBがもたらす
運用面のメリット
従来のIMS資源定義および導入方法
ここからはIMS管理ACBを導入することによって得られる運用面のメリットとして、IMS資源の定義および導入に関するメリットについて紹介する。
まずは、従来のIMS資源の定義および導入方法について述べる。従来のIMSでアプリケーションやデータベースといった資源を追加・変更するには、以下の3ステップが必要である。
❶ MODBLKS資源定義
❷ PSBGEN/DBDGEN/ACBGEN
❸ 活動系ACBLIB反映
❶ MODBLKS資源定義
IMSにアプリケーションやデータベースを登録する作業である。APPLCTNマクロ/TRANSACTマクロ/DATABASEマクロといったIMS生成マクロ定義を作成する。
次に作成した定義を元にアセンブル・連係編集を行い、MODBLKS資源を作成する。そして、この資源をMODBLKSデータセットに反映する。ここで行うアセンブル・連係編集のことを「IMS生成」と呼ぶ(図表1)。
❷ PSBGEN/DBDGEN/ACBGEN
❶でIMSに登録したデータベースの詳細な機能の定義を行う作業である。PSBソースにてアプリケーションが使用する端末やデータベースといったIMS資源を定義し、DBDソースにてデータベースの物理的な構造を定義する。
次に作成した定義を元にアセンブル・連係編集を行い、PSB/DBDモジュールを作成する。ここで行うアセンブル・連係編集のことを「PSBGEN/DBDGEN」と呼ぶ。最後にPSB/DBDモジュールをIMSオンライン用の制御ブロック(ACBモジュール)へ変換する。この変換処理を「ACBGEN」と呼ぶ(図表2)。
❸ 活動系ACBLIB反映
❷でステージングACBLIB上に作成されたACBモジュールを、IMSオンラインで使用できるように活動系ACBLIBへ反映する作業である。IMSがオフラインの場合は、Online Change Copy utility (DFSUOCU0)を用いて、活動系・非活動系ACBLIB両方にACBモジュールをコピーする。
一方、IMSがオンラインの場合は、活動系に直接ACBモジュールをコピーできないので、前述のユーティリティを用いて一度非活動系ACBLIBへACBモジュールをコピーし、「/MOD PREPARE」および「/MOD COMMIT」IMSコマンドを用いて、非活動系ACBLIBを活動系ACBLIBへ切り替える必要がある(図表3)。
以上が従来のIMS資源定義および導入方法である。IMS固有のマクロ定義作成やアセンブル・連係編集作業が複数回求められるため、IMS初心者の学習コストが高いことが課題として考えられる。
データベースの準備
従来環境では前述したIMS資源の定義および導入作業後に、データベースを使用可能にするための追加作業が必要である。それが以下の3つである。
① DBRC登録(オプション)
② DBデータセット作成
③ DBデータセット初期化
① DBRC登録
DB/DBDSの構成情報やDB共用レベル、スケルタルJCL名などのDB回復に関連する情報を登録する作業である。当該作業はDEDB MADSやHALDBといった一部の編成のIMS DBを使用する、または同時点でDB共用を行う場合は必須となる。
② DBデータセットの作成
IMS DBで実際にデータを格納するデータセットを作成する作業である。基本的にはIDCAMSユーティリティを用いて行う。
③ データセットの初期化
2で作成したデータセットをIMS DBとして使用可能にする作業である。DBの編成に応じて作業内容は異なる。FF DBの場合はPROCOPT=Lを伴ったPSBを用いて、DL/IバッチでDBに初期ロードする。HALDBおよびDEDBの場合は、それぞれのDB用に提供されているユーティリティを用いて初期化する。
IMS管理ACB環境における資源管理の方法
続いて、IMS管理ACB環境における資源管理の方法について説明する。
当該環境でアプリケーションやデータベースを追加・変更するために必要な作業は、Data Definition Language(DDL)を発行するのみである。DDLを発行するだけで、従来の資源定義および導入時に行ってきたような作業を自動的に実施できる。
DDLの発行環境は、本稿を執筆している2023年11月現在、「IMS Explorer」「Data Definition Utility(DFS3ID00)」「SQL Batch Utility」の3種類が提供されている。
IMS Explorer
Eclipseベースの開発ツール(無償)であり、ローカルPC上からTCP/IP通信でIMSに対してDDLを発行できる。 IMSとのTCP/IP通信は、IMS Connectと呼ばれるIMS標準提供のアドレス空間を用いて実現している(図表4)。
Data Definition Utility(DFS3ID00)
IMSのバッチ・アプリケーションとして、ホスト上でDDLを発行可能にするユーティリティである。IMS V15.3新機能として提供され、IMS V15.3ではBMP(IMSオンラインで稼働するバッチ・アプリケーション)として、IMS V15.4ではDL/Iバッチ(IMSがオフライン中に稼働するバッチ・アプリケーション)として使用可能である(図表5)。
SQL Batch Utility
z/OS上のJZOS Batch Launcher上で、Javaバッチとして稼働するユーティリティである。前述したIMS ConnectとOpen DataBase Manager(ODBM)の2つのアドレス空間を介して、ホスト上からIMSに対してDDLを発行できる。ODBMは、分散環境からIMSのデータベースにSQLアクセスするためのアドレス空間である(図表6)。
以上の環境を用いることで、IMS管理ACB環境ではホストの内外からIMSに対してDDLを発行し、資源を管理できる。
DDL発行により
IMSの内部で実施される処理
次に、DDLの発行によってIMSの内部で実施される処理について述べる。
IMS管理ACB環境では前述のとおり、DDLの発行によってデータベースおよびアプリケーションの資源定義が可能である。DDLを発行することによって、IMS内では以下の処理が自動で実施される。
❶ ACBモジュールの作成
❷ IMSカタログへのメタデータ登録
❸ ACBモジュールのIMSディレクトリー導入
❹ IMS資源のRDDS導入
❺ IMS DBのDBRC登録
❻ DBデータセットの作成
❼ DBデータセットの初期化
従来の環境と大きく異なるのは❷❸❹の作業である。
❷はIMS管理ACB環境ではIMSカタログが前提となることから、新規で追加された。
❸はIMS管理ACB環境ではACBモジュールの格納先がACBLIBからIMSディレクトリーへ変更されたことに伴い、処理内容が変更された。
❹のRDDSは、Resource Definition DataSetと呼ばれるデータセットである。Dynamic Resource Definition(DRD)と呼ばれるType-2コマンドを用いてMODBLKS資源を動的に定義・導入する機能により、MODBLKS資源の導入先となる。DDL発行によって自動でMODBLKS資源の導入を実施する場合は、従来環境のMODBLKS資源定義作業に代わって当該処理が実施される。
❸以降の処理をDDL発行に伴い自動で実行するには、「DDL CREATEステートメント自動化オプション」の有効化および、当該オプションの前提となるCSL/DRD導入が必要になる。また、❺❻❼の処理については現時点ではDEDB SADSのみが自動処理の対象である(図表7)。
DDL CREATEステートメント自動化オプションの設定方法
IMS管理ACBにおけるIMS資源定義を簡易化するDDL CREATE ステートメント自動化オプションの設定方法について説明する。
この機能は、DFSDFxxx PROCLIBメンバーのセクションとセクションにパラメータを定義することで有効化する。
セクションでは、❸および❹の作業を自動化することが可能である。AUTOIMPORT(CREATE)またはAUTOCREATE=YESを指定することで有効化する。
セクションでは❺❻❼の作業を自動化することが可能である。このセクションでは自動作成されるDBデータセットのデータセット名、容量、ボリューム名 、そしてSMS Data Class/Management Class/Storage Classを指定できる(図表8)。
IMS管理ACBがもたらす
アプリケーション開発面のメリット
前述したように、IMS管理ACBは前提機能としてIMSカタログが必要である。以下に、アプリケーション開発面のメリットとして、IMSカタログを活用したIMS DBへのSQLアクセスについて紹介する。
従来のIMS DBアクセス
まずは従来のIMS DBへのアクセス方法について説明する。
従来のIMSではDL/Iコールをz/OS上で発行することでしか、IMS DBにアクセスできない。そして、1回のDL/Iコールでは1セグメントの情報しか返ってこないため、検索条件を満たすセグメントをすべて取得するには、戻り値としてGEが返ってくるまでDL/Iコールを発行し続ける必要がある。
また、DL/Iコールの応答によって帰ってくるセグメントの内容を理解する、つまりセグメント内の各フィールドの値を把握するには、アプリケーション上で事前に作成したI/Oエリア定義を用いてオフセット分割することが必要である。
IMS管理ACB環境におけるIMS DBアクセス
IMSカタログへは、TCP/IP経由でどんな環境からでもアクセス可能である。そして、検索条件を満たすカラムはSQL一度発行するだけですべて取得できる。また、DDLにあらかじめセグメント構造を含めることで、「列」としてのSQL処理も可能になる。つまり、SQLで必要なフィールドの情報のみを照会し、取得できる(図表9)。
メタデータによるIMS DB構造の表現
IMS DBは階層構造を持つデータベースである。これをSQLにてアクセスできるように表形式で表現する役割が、メタデータにはある。
階層型IMS DB内のセグメント・オカレンスの繰り返しが「表」になる。そして、セグメントのオフセット分割項目、つまりフィールドが「列」になる。
たとえば、顧客情報セグメントのセグメント・オカレンス (顧客1、顧客2 ・・・、顧客n) を顧客全員分集めて顧客情報セグメント表が作成される。
このように表現されたセグメント表間の親子関係は、子セグメントが親セグメントのキーを外部キーと持つようにセグメント間が暗黙的JOINされることにより表現される。つまり、外部キーを用いることで従来のDL/Iコールのように親子関係に基づいたSQL発行が可能になる(図表10)。
IMS ExplorerからIMS DBへのSQLアクセス
DDLの発行環境の1つとして紹介したIMS Explorerであるが、それだけでなく、SQLにてIMS DBへのアクセスも可能である。
SQLを発行する際は、ゼロから自分でSQLを記述してもよいが、SQL Query Builderと呼ばれるSQL記述のサポート機能を利用することも可能だ。SQL Query Builderを用いると、SELECT/INSERT/UPDATE/DELETEといったSQLのステートメントに合わせて用意されたテンプレートにGUI操作を行い、アクセス対象のテーブルや検索条件などを指定するだけで、それに対応するSQL文が作成される。SQLの作成に慣れていないIMSユーザーにとって、非常に心強いツールと言えよう。
以上、IMS管理ACBにて得られるメリットを運用面・アプリケーション開発面という2つの側面から紹介した。これからIMS管理ACBを導入するユーザーが、当該機能の活用方法を検討する一助になれば幸いである。
著者
鈴木 漠氏
日本アイ・ビー・エム システム・エンジニアリング株式会社
Technical Competency Center
Cloud Integration #2
アドバイザリーITスペシャリスト
2017年の入社以来、IMSの技術支援に携わる。現在は主に金融系のお客様に対するIMS移行技術支援に従事。
[i Magazine・IS magazine]