サポート情報

5250ハンドラーのデバッグ手法

掲載日:2022/03/14

先日、あるAutoWebのユーザー様から5250ハンドラーの
よいデバッグ方法はないかとご相談がありました。
そこで弊社のヘルプ・デスク担当がWeb会議でくわしくご説明しました。

これはそのときにヘルプ・デスクがご説明した非常によいデバッグの方法ですので
ここに皆さまにもご紹介致しますのでぜひ参考になさってください。
※ 5250ハンドラーとは5250の画面サイズ 24*80を32767バイトまで
 拡張して表示する機能のことです。


5250ハンドラーとして作成されたプログラムは
5250エミュレータは動作対象外でブラウザのみでの
動作を前提としています。
それでは開発した5250ハンドラー適用業務をどのようにして
デバッグすればよいのでしょうか?
その洗練されたテクニックをここにご紹介致します。

ライブラリー・リストには ADDLIBLE ASNET.COM を追加しておいてください。
また5250ハンドラー・プログラムは

 CRTBNDRPG PGM(OBJLIB/MYPGM) SRCFILE(MYSRCLIB/QRPGLESRC) DFTACTGRP(*NO) ACTGRP(*NEW) 
    DBGVIEW(*SOURCE) AUT(*ALL)       

=> 必ず DFTACTGRP(*NO) ACTGRP(*NEW) と指定してください。
このように指定しないと初期ルーチン(*INZSR)が毎回実行されない動作となり
正しく動作しません。5250ハンドラー・プログラムでない一般のILE-RPGの場合でも
必ずこのように指定してください。
ソース・デバッグを行うためには DBGVIEW(*SOURCE) も必ず指定してください。

(1) CALLWEB QCMDを実行

....最初に5250エミュレータ上で

        CALLWEB QCMD

を実行します。これによってブラウザ上では QCMD が起動されます。

(2) DSPJOB でジョブ情報を取得します。

... ブラウザ上のQCMDの画面で DSPJOBを実行して
・ジョブ名, ユーザー名、ジョブ番号
を調べて控えておきます。

(3) サービス・ジョブを開始します。

.... 5250エミュレータ上で

     STRSRVJOB + [F4キー] でサービス・ジョブを開始します。

                       サービス・ジョブ開始  (STRSRVJOB)       
                                                               
 選択項目を入力して,実行キーを押してください。                
                                                               
 ジョブ名  . . . . . . . . . . .   QPADEV0004     名前         
   ユーザー  . . . . . . . . . .     QTR          名前         
   番号  . . . . . . . . . . . .     929881      000000-999999 
                                                               

  ...先ほど控えておいたジョブ、ユーザー、ジョブ番号をここで指定してください。

(4) STRDBGでデバッグを開始します。

                                  デバッグ開始  (STRDBG)                      
                                                                         
 選択項目を入力して,実行キーを押してください。                          
                                                                         
 プログラム  . . . . . . . . . .   PGM201         名前 , *NONE           
  ライブラリー  . . . . . . . . . . .     QTROBJ       名前 , *LIBL, *CURLIB  
                値の続きは+                                             
                                                                         
 省略時のプログラム  . . . . . .   *PGM           名前 , *PGM, *NONE     
 最大 トレース・ステートメント 数  . . . . .   200            数値                   
 トレース・データ満杯時の処理      *STOPTRC      *STOPTRC, *WRAP         
 実動ファイルの更新  . . . . . .   *YES          *NO, *YES               
OPM ソース・レベル・デバッグ   .   *YES          *NO, *YES               
 サービス・プログラム  . . . . .   *NONE          名前 , *NONE           
  ライブラリー  . . . . . . . . . . .                  名前 , *LIBL, *CURLIB  
                値の続きは+                                             
 

--> DEBUGを開始してブレーク・ポイントを指定しておきます。

(5) QCMD上でプログラムを開始します。

(6) 5250画面でデバッグ停止点で停止してデバッグを行うことができます。

(7) デバッグを終了します。

ENDDBG

(8) サービス・ジョブを終了します。

ENDSRVDBG

... いかがでしたか? ポイントはサービス・ジョブを使ってデバッグすることです。
サービス・ジョブはCGIをデバッグするときに使われる手法でもありますが
AutoWeb で QCMD と合わせて使うと、とても簡単にデバッグができるようになります。

[参考] QCMD を実行しときに QCMD上で直接、STRDBG でデバッグを開始することもできます。
しかし 5250エミュレータ上でのデバッグに慣れている方であれば
この STRSRVJOB を使ったデバッグのほうが今までどおりの
デバッグができるのでわかりやすい方法です。

 

※ 導入および開発支援サービスについて

㈱オフィスクアトロではこのように不明な点の解明やくわしく学習されたいときに
個別にWeb会議を開いてお客さまにくわしく説明するサービスを行っています。
ぜひ「導入および開発支援サービス」をご利用ください。
      お問合せはこちらからどうぞ。

― 新しい技術はいつもオフィスクアトロから ―