並行本番の罠!

どうもこんばんは


今日は夜勤で本番確認です


まだ新しいデータは発生しないから

現行保証のコンペアのみですから


だからまあヨユーでしょ、

と油断していると、


なんとコンペアデータを作るためだけに実行するSTEPでアベンドしてしまいました汗


あーそーか

DB使う時と、使わない時って実行コマンドが異なるんだったなー


今回はDB使ってるからこっちのコマンドで実行しないといけないなー


えいっ


。。。


アベンド。。。


あれ?


なんかJCL間違ってる?


いやいや、正しいぞ??


今回はサブルーチンの改訂なんだから、

最新のサブルーチンは、本番緊急ライブラリにいるはずだ。


で、、今はひとつ前の状態で実行したいんだから、本番通常ライブラリを指定してやればいい。


メインプログラムは改訂無しだから指定無しで問題ない。


うん。あってる。


あってるぞ?


なのになんでこんな

アベンドコードで落ちるんだ?


いや、こういう時は大概簡単な記述ミスだってのが相場だ。


JCLの何かが間違ってるんだ。


なんだ?何が間違ってる?


そうだ。過去の案件で同じことをしている

JCLがきっとあるはずだ。


えーっとたしか。。。


あった!これこれ。


このJCL、同じことやったんだよな


こん時ってどう指定してたっけ?



うん?



同じだな。。。


するとやっぱりJCLは問題ないってことか。



それ以外はなんだ?

もう少しちゃんとログ見てみるか。


ん?ああ、あれ?


あ、別のサブルーチンでDB読む時にアベンドか。


既存のサブルーチンがアベンドする理由ったらやっぱりJCLが悪いんかな。


まあ念のため、このサブルーチンが何してるのか見てみるか。


えいっ


ってあれ?このサブルーチン、最近改訂されてるじゃん!


しかも対象の案件、昨日本番のやつだし!


こいつか!こいつが悪いんか!


ん?でも、サブルーチンの指定は本番通常を指定してるんだから、こいつもいっこ前の状態で実行される事になるはず。。。


だから結局両方悪くないって事になる。


プログラムもサブルーチンも悪くなくって、いっこ前の状態で動かしてアベンドするってことはもしかして。。。



。。。



はいやっぱり。


DBのフォーマットが変わってましたー


いっこ前の状態では実行することが出来ませーん


そりゃアベンドするのも当たり前でーす


だってサブルーチンが認識していた、

これまでのDBのフォーマットじゃないんだもの。


ずれが生じるってもんです。


願わくばもう少し分かりやすいアベンドコードなりメッセージを出力してほしいところです。


とにもかくにも、


これはどうやっても既存の状態で実行させるのは不可能です。



後続をホールドして止めてましたが、


お客さんには原因を伝えてホールド解除してもらいました。


現行データの保証はコンペアでなくサンプリングしたデータを確認することで良しとなりました。



今回は幸い軽い改訂だったのでデータのサンプリングで事足りましたが、


大きい改訂ではこうはいきません。


もう少し円滑な情報連携が出来るような環境になってほしいなあ。。。