内部記述はきらい
内部記述の場合、バッファーレイアウトはプログラム内部固有となり、
- データの一貫性が図れず
- バグを誘発しやすく、
- また作成されたシステム等のバグの発見が遅れたり、
- 『外部記述だから、ファイルのレイアウトにフィールドを追加しても、リコンパイルだけでいい』と言う希望的観測は、出来ません。
そのようなプログラムに限って、結構重要なポジションだったりするものです。仕方無く、また、内部記述を外部記述に変更したりせねばならず、結局手間がかかります。
外部記述でも、全く別個のファイル2つのなかに、同じフィールド名があると、とんでもない事が起きたりします。
ここにFLD1というフィールドが、AAとBBという、関連性のないファイルのなかにあったとします。プログラムは、AAを順次読み込み、その中のデータをもとに、BBにランダムアクセスして、FLD1を出力ファイルMASTERにデータを書き込むとします。すると、出力ファイルMASTERの中のFLD1はBBの内容となってしまいます。なぜなら、AAを順次読み込んだ段階では、FLD1はAAの内容だが、BBにランダムアクセスしたあとは、FLD1はBBの内容に上書きされてしまいます。これは、AAとBBを設計した人が別人だと起こりうることで、もしプログラムがたくさんあれば、直すのは手間がかかり不安も残ります。
UPDATE命令
それから、他人のプログラムを読むと、よく50個くらいのフィールドがある中で、たった1文字分の1フィールドを更新する時や、レコードロックを外すのに、わざわざUPDATE命令を使う人がいます。
UPDATE命令では、全ての(変更の不要な)フィールドまでもを更新してしまい、場合によっては、実行にかなり時間やCPUを食うのでやめるべきです。O仕様書に更新したいフィールドのみを記述して、EXCPT命令を使用すべきだと思います。
|