IBM i(AS/400)解析ツールのプログラムを起点とするオブジェクト参照機能の違い

タイトルの視点において、解析ツールは以下のグループに種別化されます。





「CLをTOPとしたジョブフロー出力ツール」は、メインフレームのジョブネット管理の視点でフローを表現しています。この視点はIBM i (AS/400)においても、バッチ処理などをメインフレームに似せた作りで作成しているユーザーもいるため必要な視点ですが、それだけでは不十分です。
メインフレームのJCLとIBM i (AS/400)のCLを同一視した考え方ですが、IBM i (AS/400)のCLはUNIXやLINUXのシェルスクリプトに近いものであり、ジョブをコントロールするだけのものではありません。
そもそもIBM i (AS/400)のプログラムの稼働において、TOPプログラムはCLである必要もなく、RPGやCOBOLのオブジェクトから相互に呼び出し可能です。

一方で「下位オブジェクトのツリー構造出力ツール」は、IBM i (AS/400)のプラットフォームを考慮したツールとなります。
どの種別のプログラムオブジェクトがTOPになろうと、相互の呼び出し関係も問題なく出力されます。が、上位の呼び出し関係や、呼び出し関係の表現にはX-Analysisの豊富な機能には、まだ追いつけていないのが実情です。

 
X-Analysisのプログラムを起点とした参照関係表現

X-Analysisのストラクチャーチャート機能では、プログラムオブジェクトの呼び出し関係を子、孫、ひ孫・・・と全てフロー化します。
(下位のQRYオブジェクトも表現されます)
CLP、CLLEしかトップにできないということはなく、任意のプログラムオブジェクトをトップにしてダイアグラム化することができるため、「CLをTOPとしたジョブフロー出力ツール」と一線を画しています。また、CやC++などRPG、COBOLで開発されたプログラムオブジェクト以外も対象となります。

呼び出し関係はCALL及びSUBMIT、RUNQRY命令を元に解析していますが、親プログラム内で同一のプログラムを複数呼び出ししている場合、その回数分表示されます(流れ図の役割)。
只、同一プログラムが更に下位のプログラムを呼び出している場合、2つ目の表示以降は下位の展開を閉じた状態(+)で表示し、冗長表示を回避しています。
また、回帰呼び出しも閉じた状態で表示され、階層表示がループすることを避けています。







更に、ダイアグラムにおける各プログラムのアクセス先ファイル及び装置ファイル、データエリアなどを表示できます。
また、CLP、CLLEをトップにしてダイアグラム表示した場合、ファイルアクセスをそのCLP、CLLEにおけるOVRDBFの設定内容で表示切替することができます。







他のツールには無い機能 水平展開とサムネイル

X-Analysisのストラクチャーチャートは「階層型」に切り替えることができます。プログラムを機能と捉え、オブジェクトレベルの構成図を親、子、孫、ひ孫・・・と水平展開で階層フロー化します。
ストラクチャーチャートとの違いは、重複したプログラム呼び出しは機能として一纏めとなる点です。対象プログラムを構成する下位プログラムやファイルの種類を純粋に把握することができます。
また、下位を見る必要のない箇所は、その一番上位のプログラムをダブルクリックすることで展開を畳むことができます。







表示された各階層のプログラムがアクセスするファイル、装置ファイル、データエリアなどを展開表示することができます。







選択したトッププログラムには多数のオブジェクトが紐付いている場合があります。このような場合は画面で一部しか表示できないため、全体を俯瞰できるサムネイルが別画面で準備されています。双方の画面は連動しているため、全体を把握しながらスムーズな画面移動が可能となります。







他のツールには無い機能 上位参照・逆展開

X-Analysisのストラクチャーチャートは「逆順」に切り替えることができます。プログラムの呼び出し先から、呼び出し元を遡った関係を表示します。プログラムオブジェクトの呼び出し関係をひ孫、孫、子、親と逆展開でフロー化します。対象プログラムがどのようなプログラムの呼び出し経路で、呼び出されているか確認することができ、任意の呼び出し経路上のプログラムから下位参照系のストラクチャーチャートに切り替えることが可能です。







他のツールには無い機能 ルーチン・モジュール構成展開

X-Analysisのストラクチャーチャートは対象プログラム内部の構成展開に切り替えることができます。メインルーチン、サブルーチン、外部ルーティン(CALLしている外部プログラムオブジェクト)をソースコード内の記述順に構造図式化します。更にILE(Integrated Language Environment=統合言語化環境)で開発されたプログラムの場合は、オブジェクトのモジュール構造を図式化できます。







内部ルーティンのボックスの場合、他のソースメンバ―で同名のサブルーティンを使用している箇所(ソース行)を検索できます。
同名でソースの中身も一緒であれば、外部プログラム化や、ILEプログラミンにおける共通化、部品化につながります。