おはようございます。
今は、曇り。
この後、晴れの予報の博多の朝です。
![](https://blogimg.goo.ne.jp/user_image/1b/84/acceded7f2ed4b0eda53d1da47069b91.jpg)
![](https://blogimg.goo.ne.jp/user_image/2e/4e/11324ecf11d8147b982bff148719abcf.jpg)
![](https://blogimg.goo.ne.jp/user_image/6a/16/52b40443633d6e7a8f957a019ea247dc.jpg)
昨日は、3時間睡眠で、昼の仕事中も眠くて。
それを救ってくれたのが、派遣で出ているO君。(ちょっと専門的になりますが。)
O君『西山さん。助けてもらえます?』
私『何?何?』(すでに興味津々)
O君『COBOL の事なんですけど。数字項目にAAAAAAを入れても、不正10進で異常終了しないんですけど、他の文字だと異常終了するんですよ。どうしてでしょう。』
O君『○○の○○さんが、キーボードが壊れて、Aが入力できなくて、違う文字にしたんですが。今は、打ち直して、正常に終るんですけど、理由が判らなくて。』
本当は、数字の項目に文字を入れてはいけないのですが、以前から、そうしていたそうなんです。
私も、思い当たることはあったのですが、即座には答えられず。
私『ちょっと調べてみるから。判ったら連絡するから。』
もう、この時点で、目はぱっちり、頭スッキリ。
で、COBOL の文法書の関連するところを見ていったら、ありました。答え。
A を入力していたのですが。A は16進では41です。B は42になります。数字の0 は30。1 は31、2 は32です。
でも、A の代わりに入力したのが、K でした。K は16進で4Bとなります。
文法書には、数字比較や数字編集、数字転記する場合、最初の4ビットは無視される。と書いてありました。
A の41の4 は無視されで、数字の1 の31と同じ扱いになるので、異常にはしないという事です。
ただし、後ろの4ビットは、 0~ 9 でないと数字と見なさないので、不正10進として異常終了する。
たまたま入力した、K は4Bで、4 は無視されるのですが、B は 0~ 9でないので、異常になったという事です。
これを、文法書のその部分を印刷して、説明の例を書いて、O君に渡しました。
O君『ありがとうございます。』
私『私も、勉強になったよ。』
間違っていても、正しく動いてしまう場合があります。ただ、元々が間違いなので、少し条件が変わると異常になります。
その理由をはっきりしておかないと、同じ間違いをするし、適切な対応もできません。
私などでも、明確に説明できない事がたくさんあります。なので、こう言う機会は大事です。
もちろん、これで眠気も収まりました。
ただ、終わって、家に帰ったら、即爆睡。
その代わりに、4時半に起きてしまいました(笑)
仕事場に着いています。
そろそろ、一服して仕事スイッチを【ON】にします。
今は、通勤中、平井大の『祈り花』を聴いて覚えているところです。
今日も、いい1日でありますように。
では、また。
![](http://blog.with2.net/img/banner/banner_22.gif)
人気ブログランキングへ
にほんブログ村
今は、曇り。
この後、晴れの予報の博多の朝です。
![](https://blogimg.goo.ne.jp/user_image/1b/84/acceded7f2ed4b0eda53d1da47069b91.jpg)
![](https://blogimg.goo.ne.jp/user_image/2e/4e/11324ecf11d8147b982bff148719abcf.jpg)
![](https://blogimg.goo.ne.jp/user_image/6a/16/52b40443633d6e7a8f957a019ea247dc.jpg)
昨日は、3時間睡眠で、昼の仕事中も眠くて。
それを救ってくれたのが、派遣で出ているO君。(ちょっと専門的になりますが。)
O君『西山さん。助けてもらえます?』
私『何?何?』(すでに興味津々)
O君『COBOL の事なんですけど。数字項目にAAAAAAを入れても、不正10進で異常終了しないんですけど、他の文字だと異常終了するんですよ。どうしてでしょう。』
O君『○○の○○さんが、キーボードが壊れて、Aが入力できなくて、違う文字にしたんですが。今は、打ち直して、正常に終るんですけど、理由が判らなくて。』
本当は、数字の項目に文字を入れてはいけないのですが、以前から、そうしていたそうなんです。
私も、思い当たることはあったのですが、即座には答えられず。
私『ちょっと調べてみるから。判ったら連絡するから。』
もう、この時点で、目はぱっちり、頭スッキリ。
で、COBOL の文法書の関連するところを見ていったら、ありました。答え。
A を入力していたのですが。A は16進では41です。B は42になります。数字の0 は30。1 は31、2 は32です。
でも、A の代わりに入力したのが、K でした。K は16進で4Bとなります。
文法書には、数字比較や数字編集、数字転記する場合、最初の4ビットは無視される。と書いてありました。
A の41の4 は無視されで、数字の1 の31と同じ扱いになるので、異常にはしないという事です。
ただし、後ろの4ビットは、 0~ 9 でないと数字と見なさないので、不正10進として異常終了する。
たまたま入力した、K は4Bで、4 は無視されるのですが、B は 0~ 9でないので、異常になったという事です。
これを、文法書のその部分を印刷して、説明の例を書いて、O君に渡しました。
O君『ありがとうございます。』
私『私も、勉強になったよ。』
間違っていても、正しく動いてしまう場合があります。ただ、元々が間違いなので、少し条件が変わると異常になります。
その理由をはっきりしておかないと、同じ間違いをするし、適切な対応もできません。
私などでも、明確に説明できない事がたくさんあります。なので、こう言う機会は大事です。
もちろん、これで眠気も収まりました。
ただ、終わって、家に帰ったら、即爆睡。
その代わりに、4時半に起きてしまいました(笑)
仕事場に着いています。
そろそろ、一服して仕事スイッチを【ON】にします。
今は、通勤中、平井大の『祈り花』を聴いて覚えているところです。
今日も、いい1日でありますように。
では、また。
![](http://blog.with2.net/img/banner/banner_22.gif)
人気ブログランキングへ
![にほんブログ村 オヤジ日記ブログ 50代オヤジへ](http://oyaji.blogmura.com/oyaji_over50/img/oyaji_over5088_31.gif)
※コメント投稿者のブログIDはブログ作成者のみに通知されます