« イロイロ。 2009/09/15 | トップページ | シルバーウィーク。 2009/09/17 »

たまにはプログラミングの話。 2009/09/16

会社その4のシステム開発が大詰めを迎えている。本番の稼働に入ったのだけど、私が聞いていない入力画面の特殊な仕様がかなりあることがわかってきた。大車輪で追加、修正をしている。

データ入力画面は入力ミスをすることを前提にプログラムを書くために、入力エラー処理が複雑になる。特に、これこれの場合はここへカーソルを移動して、そうでなければこの項目に移動するといった処理が入るとどこでエラーをチェックするかが、結構面倒なのだ。もちろん入力途中では何のエラーチェックも行わずに、データを登録する直前で入力エラーを示す方法もある。いきなりマウスを使って登録ボタンを押された様な時にも、入力された項目の値を調べて、入力必須項目に値がない場合や不当な入力値がある場合にはエラーを返して、その項目にカーソルを移動する方法だ。ただし、この方法は入力者からはすこぶる評判が悪い。間違った入力をした場合には、直ぐにそのエラーを教えて欲しいと言われる。

経験があまりないプログラマーだと Windows 上の入力フォームとデータファイルを直結して、項目に値が入力されている最中にエラーチェックを入れて、間違っていたら、その項目から移動できないようにする。例えマウスで他のボタンなどをクリックしても、頑として受け付けずに、ひたすら正しい入力を求めるのだ。これをやるとイロイロと不都合が生じる。途中で入力を止めたくても、正しい値を入れてやらない限り、その項目から抜け出せなくなるし、直前の項目で入力ミスをしていることに気がついても、一度現在の項目で正しい値を入れてやらない限り前の項目には戻れないのだ。

だから、私はかなり面倒な方法でエラーをチェックし、表示している。項目に入力している時には、何もしない。項目から抜け出す際に [ ↑ ] や [ ← ]、あるいは[ESC]キーが押された場合も何もせずにフォームのカーソル制御に従う(普通は一つ前の項目に移動する)。それ以外の方法で項目を抜ける場合にのみ、その入力値が正しいかどうかを調べる。正しかったら何もしない。が、正しくなくても自分で決めたエラーを表す変数に特定の値を代入するだけで、他には何もしない。が、この値によって、どの項目でどんなエラーが起きたのかが特定できる。次の項目にカーソルが移動した直後に、エラーを表す変数が 0 でないかどうかを調べる。0 でなかったら、何らかのエラーが起きているので、エラー表示ルーチンを呼び出して、どんな間違いがあったかを表示して、[Enter]キーを押してもらう。エラーメッセージの表示から戻ってきたら、エラーを表す変数を調べて、エラーが起きた項目を特定し、エラーを表す変数に 0 を代入して、エラーが起きた項目にカーソルを移動する。

こうすることで、入力者は現在の項目にどんな値が入っていても、 [ ↑ ] や [ ← ]、あるいは[ESC]キーを押すことで直前の項目に戻ることができる。言葉にすれば簡単なのだけど、全てのエラーチェックが必要な項目にこのプログラムを書かなければいけないので非常に面倒である。しかも、エラーチェックが不要な項目は非常に少ない。

実はこの後、もっと詳細に書いたのだけど、プログラミングに興味のない人には全然面白くない記事になってしまったため、割愛。

う~~~n。眠い。お休みなさい。

|

« イロイロ。 2009/09/15 | トップページ | シルバーウィーク。 2009/09/17 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« イロイロ。 2009/09/15 | トップページ | シルバーウィーク。 2009/09/17 »