ニュース&トピックス
News
2019. 08. 30
学園長コラム【学園長コラム vol.4】異常終了 - アベンド -
異常終了、英語ではabnormal end。
コンピュータに仕事をさせようと準備し、実行するプログラムや使用するデータならびに使用機器・使用領域を指定し、さぁ実行だ、とワクワクしていたら、しばらくして「異常終了しました」との悲しいお知らせ。新入社員の頃はほぼ毎日これを経験したものです。
Abnormal endを短縮してABEND(アベンド)と呼んでいました。意地悪な先輩が「アベンドの中にはコンピュータが爆発するものがある」とか、「ABENDの発音はむしろ"お便所"に近い」とか。
アベンドの原因には様々あるが、プログラムの設計ミスやコーディングミス、プログラムを機械語に変換する際の作業ミス、指定したデータのミス、指定した領域の容量が不足するなどの想定ミスなどなど。
プログラム設計ミスのうち、恥ずかしいものの代表は無限ループ。
たとえば100個のデータを格納するテーブルを考え、そこに順次セットしていくのだが、100を超えても無限にセットし続けるような設計ミスをしてしまうと、101個目以降、プログラムは実行時にテーブル範囲外の領域にお構いなく書き込んでいき、自分自身を言わば破壊していく。破壊されておかしくなった命令を実行しようとしたとき、コンピュータは異常終了を選択する。
コーディングミスのうち、恥ずかしいものの代表はピリオド打ち忘れ。これはどうやら世界中でも有名のようで米国人がperiod missingと言っているのを聞いたことがある。
たとえば入力データがある条件を満足した場合に項目Aをセットする、そして、項目Bは無条件にセットする数値項目だとしてみよう。プログラムでは条件文あるいはif文で条件を示し、項目Aをセットする命令文を書きピリオドを打つ。次に項目Bをセットする命令文を書き、ここにもピリオドを打つ。このとき最初のピリオドを打ち忘れると、条件文が成立したときのみ項目Aだけでなく項目Bをセットするというプログラムになってしまう。つまり、項目Bは無条件にセットする設計だったにもかかわらず、ピリオドの打ち忘れで設計仕様とは異なるプログラムを作ってしまったわけだ。
このプログラムを実行すると、条件文に合致しない入力データに対しては数値項目Bがセットされず、項目Bを使った計算式を実行したとき、計算不能ということで異常終了となる。
ABENDはIBM社の大型機ならびにそれをほぼコピーして作った国産二大メーカー機(後に日米間の大問題に発展した)で使われた専門用語であり、私が初めて覚えた専門用語の一つだった。
──────
ITカレッジ学園長 佐藤 治夫
<プロフィール>
東京工業大学理学部数学科卒業。
ITエンジニアとしてコンビニ、アパレル、保険、銀行、人材派遣など様々な業界のシステム開発を手がけ、現在は株式会社クレスコ社外取締役、ユーザー系企業・顧問 情報活用コンサルティング、IT系企業・顧問 事業戦略策定コンサルティングを兼務。「ダメなシステム屋にだまされるな」(2009年日系BP)など、IT関連の著書も多数。
▼バックナンバーはこちら▼
【学園長コラム vol.1】毎日の仕事はITだらけ
【学園長コラム vol.2】プログラミングの初仕事
【学園長コラム vol.3】世界を変えるためにやっている