最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.27.STRISDBとSTRSRCDBG

[ Previous ] [ HOME ] [ Upper ] [ Next ]


STRISDBというコマンドがv3からありました。実は、最近気づきました。これは、ソースを直接参照するようです。実は、NEWS400で発表されていたSTRSRCDBGというコマンドとそっくりでした。基本的な仕組みは同じだと思います。私は、v2からずっと、このSTRSRCDBGを使っていました。このために、/COPYを避けていたほどです。このツールで、私のツール人生が始まったと言ってもいいでしょう。

このSTRSRCDBGの、最大のエンジンは、ADDBKPのパラメータBKPPGMです。どれほどの人がこれに気づいていたでしょうか。

BKPPGM

PGMパラメーターに指定したプログラムの停止点に達した時点で呼び出したいユーザー作成プログラムがあれば、その修飾名を指定します。BKPPGM パラメーターに指定したプログラムが呼び出された時点で、そのプログラムには、次の項目を識別する 4 つのパラメーターが渡されます。これは、停止点に達した時点のプログラム名、反復レベル、高水準言語ステートメント識別コード、および機械命令番号です。これら4つのパラメーターの形式は、次のとおりです。

1. プログラム名(10バイト)。停止点に達した時点のプログラムの名前。

2. 反復レベル(5バイト)。停止点に達した時点のプログラムの反復レベル番号。この値は、1桁から5桁までの数値で、右側の空いた桁はブランクで埋められます。

3. ステートメント識別コード(10バイト)停止点に達した高水準言語プログラムのステートメント識別コード。このステートメント識別コードは、停止点を定義した停止点追加(ADDBKP)コマンドに指定したステートメント識別コードと同じものです。機械命令番号を使用して停止点を指定した場合には、このパラメーターには斜線(/)とそれに続く4桁の16進数の機械命令が入ります。

4. 命令番号(5バイト)。停止点に達した時点の高水準言語ステートメントに対応する機械命令番号。この機械命令番号の前には斜線はつきません。この命令番号は、MI命令番号を表す1桁から4桁までの16進数文字と、それに続く1つまたは複数のブランクにより構成されています。機械命令番号が3番目のパラメーターとして渡された場合には、3番目のパラメーターと4番目のパラメーターの値は同じになります。

つまり、ADDBKPで指定された行に来たとき、ユーザープログラムの起動を指定できるのです。このとき、行番号も3番目のパラメータで与えられます。これを利用すれば、ソースを表示するプログラムで、デバッグ中の行を反転して表示したり、すべてのソースをADDBKPをする事で、ステップバイステップのデバッグが可能になります。

また、多くのNews400の読者が、このツールをバージョンアップするテックニックを出していました。感動ものでした。

ただし、ソースをオブジェクトに含めていないため、ソースが無ければデバッグ出来ないし、/COPYのようにコンパイルすると、別ソースを取り込むとおかしくなります。

どうも、このSTRISDBGのロジックが、似ているような気がするので、もしかすれば、これをコマンドに取り込んだのかもしれませんね。よくあることですけど。いま、v4では、さらにILEからのステップインツーサポート(がきっかけなのだろう)でも、OPMが出来るようになりました。昔は、STRDBG....UPDPROD(...、ADDBKP 29600 ((STRPNT)(ENDPNT))見たいに、呪文を唱えていたのが、懐かしく思える今日この頃です。

1998/7/18

 

[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送