2008年10月22日
2008/10/22 アセンブラっていいよね。
日中にSEさんより、至急の対応依頼。
なんでも、
特定のソースをコンパイルすると、必ずアベンドする。
エラーメッセージの出元が見慣れないPGの上、エラーを出している原因も判然としない。
…んだそうです。
端末側へと向かって何人かとお話した結果、どうやらコンパイルのロジックチェックか何かに使用していそう…とは踏んでみたのですが。
まかされたような心持ちで、手持ちの資料を漁ります。
…漁ります。
漁ってます…。
…が。いくら漁っても、そんなPGの資料なんてないんですね。
これは流石に焦ります。…焦る。うん。
…とはいえ。仕方がないので共通ライブラリを手分けして見て回ると…
「あっ見つけましたよ。」との声。
そして。どれどれと覗いた画面の表示は…ASM。「これは…」
「…アセンブラ。」
しかも1985年産。私が小学生になったばかりの時分ですね。
SEさんと及び腰になりつつも、ソースを読みます。
ソースをラインごと特定領域にストアして、
空白の場合はそのまま、データがある場合はストア。
次レジスタを加算して次の文字を読む…ピリオドまで来たら、文字列をテーブルと比較評価。
そんなどこのご家庭にも常備されていそうな、自家製のコードチェッカーですね。
…が。1ラインぴったり80文字分しか領域がなかったりするので、
終了条件のピリオドが渡されないとそのまま…ピリオドの向こう側へ(明示確保していない隣接アドレスを参照)。
それは…アベンドもします。ぬるぽです。Cなら何してはるんですかばかりにコアが吐かれてます。
しかし、作り手も終了条件の吟味はしてそうなものですが。(基本ですので)
どうしてだろう?と皆であれこれ考えていたんですが、ベテランSEさんが作った当時はCOBOL側のコンパイルエラーで落ちるものだったのではないか、との見解をされました。
成る程。今のCOBOLコンパイラだと、ピリオド抜けは20点程度のエラー評価で、モジュールは出来てしまうんですね。
しかし、アセンブラのソースなんて久しぶりに見ました。
…なんだかもの凄く懐かしい。
領域確保がソースの後とか、レジスタの扱いとか、シンプルすぎる命令群とか。
基本 コマンド2、3文字と変数2つぐらいの、とってもすっきりしたソースです。
で。
やはりコンパイル側のソースのピリオド抜けが原因のようでした。
再度の実行で正常動作を確認。
(うーん。まあ例外処理を数行入れれば、この事象は回避できそう…。)
SEさん(こっちを見ながら):「やっちゃいます(私が修正をかけることを期待されている、らしい。)?。」
「いえ…(やや視線が泳ぎ)影響がどこで出るか解りません。慎重に対応しましょう。」
呼び出し箇所が一つとは限りませんし、仕様書のしの字も無い状態で、レジスタをいじるPGをいじるのは…無謀。
上位言語側で、呼び出し部にモジュールを作ってカバーしてあげるのが無難かと思いましたので。そのように対応と検証をお願いします。
ファミコンと同い年で、いつも変わらず動いていたそんなプログラム。
…そして、まだまだ動く訳ですね。
アセンブラも、コボルも、まだまだ元気です。
(と、いいますか、このカテゴリは慢性的に人手不足です。潰しは利かないですが。誰なんですかね。コボラーに未来はないなんて20年前に言ってた人は。外しまくってますよ?そして高齢化してますが!責任とってください!)
- Permalink
- by nemui
- at 22:00
- Comments (0)
- Trackbacks (0)







