5:Re: RDBに項目追加をしたいのですが、DDFの修正方法がわかりません EXCHANGE 05/04 05:04 ☆ A−VXの場合、 (1)SYS@DDFにマージされたDB定義 (2)COBOLで使用するCOPY句定義 (3)MIX(キーなし複数順編成)で領域確保された実データ 上記3つは別々に作成されます。 ☆ AVX以外の他のデータベースの場合、create tableコマンドでレイアウト定義と実領域が同時に作成され、COBOLからもCOPY ALL FORMATS OF DATABASE 式にテーブル定義を直接参照できるようになっています。(もっとも最近はAVXもCOBOLからの直接参照はできるようになっているみたいですが。。) ☆ (1)〜(3)が別々で、仮にズレていても定義時に警告が出ないため、定義間のズレによってプログラム実行時に不具合が起こらないように気をつけて開発する必要があります。 ☆ 今回は既存のテーブルの最後尾のFILLER部分に新規項目を追加するということでしたよね。 ☆ それでしたら、ローカルの HOGEHOGE-DDF --> SYS@DDFへのマージをおこなっても、修正を施していない既存プログラムの実行には影響は無いはずです。 ☆ * COPY句の最後尾に項目を追加してFIILERのバイト数を減らす。 * プログラムを修正もしくは新規開発する。 * 項目が追加されたテーブルをSYS@DDFにマージする といった一連の開発手順でよいと思います。 ☆ ただし、以下の点は重要なので、十分考慮しておいてください。 ☆ 追加項目が数字項目の場合、既存のデータのFIILER部分に数字以外の項目が入っている場合があります。修正後のプログラムがこの部分を使用すると、実行時に NON-NUMERICエラーを引き起こす可能性があります。COMP−3項目は特に要注意です。 あらかじめRDBQの一括更新などで、数字0をセットして初期化しておくことをお勧めします。 ☆ 追加項目が漢字項目の場合はRDBQでの初期化ができないようですので、簡単な初期化プログラムを作成してあらかじめINITIALIZE命令などで初期値をセットしておくほうがよいでしょう。運用開始後に漢字として正しくないものが入っているレコードのみを抽出して初期化するのはかなり難しいです。 (追伸)RDBQのことを申しましたが、AVXの開発初心者の方でしたら「RDBQ」を使わず、はじめから「RDBQ2」の方をお使いになることをお勧めします。 RDBQ2の方が機能的にも操作的にも格段に優れているからです。 なお、ユーザとして使われる方にはRDBQもRDBQ2もともにお勧めしません。SKYLINKなどをお勧めします。 (AVX −> OPEN移行後のことを考慮して、というのが理由です) |