ACSを通じてグラフィカルにデバッグを行う
ACS(IBM i Access Client Solutions)は、ますます進化し続けています。私が使用しているすべてのソフトウェアを最新リリースに保つことはできませんが、ACSに対しては最新の状態に保つために最善を尽くしています。比較的最近のリリースの中で最も便利なものの1つに、「SQLスクリプトの実行」からIBM iデバッガーにアクセスできる機能があります。まだIBM iデバッガーを試していないとしたら、もったいないことだと思います。
IBM iデバッガー(別名、システム デバッガー)は、IBM Toolbox for Javaの一部としてパッケージされています。IBM iデバッガーはグラフィカルであり、グリーン スクリーン デバッガー(STRDBG)がひどく時代遅れに思えてきます。ACSからIBM iデバッガーにアクセスする方法を説明するために、小さな対話式グリーン スクリーン プログラムのデバッグを行ってみます。
このデバッガーは、メインのACSメニューから参照することはできません。代わりに、「SQLスクリプトの実行」を起動して、「実行(R)」メニューの「システム・デバッガー」を選択します(図1を参照)。
デバッガーが開いたら、「Debug」メニューから「Start Debug」オプションを選択して「Start Debug」ダイアログを開きます(図2を参照)。
デバッグの対象となるプログラムが表示装置ファイルを使用しない場合は、2つのオプションがあります。既存のジョブをデバッグするか、またはデバッガーにバッチ ジョブとしてプログラムを実行させることができます。このプログラムは表示装置ファイルを使用するため、5250セッションで実行する必要があり、既存のジョブとして指定します。
必要な情報を入力し終えたら、「OK」をクリックしてデバッグ画面に進みます(図3を参照)。
このプログラムの問題点は、データベースから顧客名を取得しないということです。CHAIN命令でブレークポイントを追加するために、行番号5の左側を1回、クリックします。デバッガーにより、クリックした場所に赤い矢印が配置されます。この矢印をクリックすると、ブレークポイントは削除されます。
メニュー バーのすぐ下にある緑色の三角ボタン(「Resume」)をクリックして続行します。次いで、そのジョブに切り替えて、デバッグしたいプログラムを呼び出します。5250セッションで、顧客アカウント番号を入力し、Enterを押します。デバッガーはブレークポイントで停止します(図4を参照)。
左下のパネルをご覧ください。「Locals」タブは興味深いタブです。このタブには、メイン ルーチンまたは現行サブプロシージャーのローカル変数が表示されます。必要な場合は、値をダブルクリックして変更することができます。また、変数にマウス ポインターを合わせて、ポップアップでその値を確認することもできます。
問題点が分かりました。このプログラムは、CUSTフィールド(データベース ファイルで定義)を使用して、ファイルYG021Pを読み取ります。画面に値1を入力した場合でも、CUSTの値は0です。これです。プログラムの作者は、表示装置ファイルのフィールドである#CUSTでCHAINしておくべきでした。問題解決です。
デバッガーで緑色の三角ボタンをクリックしてプログラムを再開させ、5250セッションへ切り替えてプログラムを終了します。デバッガーにより、プログラムが終了したことを知らせるポップアップ ウィンドウが表示されます。「Debug」メニューから「End Debug」オプションを選択します。
ここで、ソース コードを変更して再コンパイルし、「Debug」メニューの「Start Debug」から再び開始します。プログラムを修正してそれ以上デバッグする必要がなくなるまで、この手順を繰り返し何度も行います。最後に、デバッガーを終了し、次の作業に移ります。
素晴らしいデバッガーです。このデバッガーは、ILEおよびOPMプログラム(プログラム作成時に必ずデバッグ用オプションを適切に設定するようにしてください)、Java、およびPASEで稼働するプログラムをデバッグします。フットプリントは小さく、非常にシンプルで直観的に使用できます。ACSからこのデバッガーにアクセスできるようにしてくれたことに対して、IBMに感謝です。