LOAD発行時にABENDS106となるケース

By 神居 - Posted: 2009/09/04 Last updated: 2009/09/04 - Leave a Comment

MSPでの発生事例からの紹介ですが、MVS、VOS3でも同じことが言えます。
ISVにいた時、あるソフトウェア製品で経験したものです。STCタスクとして常駐運用させるソフトで、ユーザー出口ルーチンをサポートしています。ユーザーがソフト起動中に、何度も出口ルーチンの再ASMとLKEDを繰り返した結果、ロードモジュール・データセットのエクステントが拡張されてしまいました。滅多に起きることではないと思うのですが、こういうことを防ぐには、システムに常駐するジョブのロードモジュール・ライブラリーには、2次数量を指定しないのが確実です。

エラーの原因が自社製品ではないことを立証しなければなりませんでした。そのため面倒でも1つ1つ動きを調べていかねばならなかった。同様のことがまた起きた際、また最初から調べ直すのは大変なので、記録として残しておいたものです。捜し物をしていたら出てきたので、原文のまま投稿します。

JOBLIB/STEPLIBは、起動時にOPENされたら、以降JOBENDまでCLOSEされない。
OPEN中に、他のバッチJOBなどでJOBLIBメンバーが追加・更新された際に、データセットのエクステントが拡張されると、拡張された分はOPEN中JOBLIBのDEBには反映されない。そのため、追加・更新されたメンバーにLOADが出ても、正しいエクステントがポイントできないため、I/Oエラーとなる。

解説:
LOAD SVC内でBLDLしたらターゲットモジュールは2番目のエクステントにあることがわかった。そこで2番目のエクステントのMBBCCHHRを計算するために、DEBの2番目のエクステント記述を見てCyl番号を06B1とした。しかしそのエントリはデータセットAの2ndエクステントではなく、データセットBの1stエクステントだから、誤ったターゲットアドレスを計算してI/Oを出し、誤長となる。JAA703が出すCyl番号はそれで説明がつく。

Posted in システムプログラマーのための手引きいろいろ • • Top Of Page