テンプレートおよびビューを使用する理由
一般に、アプリケーション・データが入っているデータベースは、データベース内 の各セグメントがいくつかのフィールドから構成される、うまく 定義された構造になっています。それぞれのフィールドには、顧客の名前、製品コード、またはデータベースに保管可能な値など、 それぞれ別個のデータ項目が入っています。このデータはさまざまなタイプにすることができ、 一部のフィールドには文字データが入り、他のフィールドには 2 進数形式または パック 10 進数形式でエンコードされる数値データが入ります。
このようなデータベースを効率的に処理するには、セグメント・レイアウトを認識し、 個々のフィールドを選択して処理することを可能にするツールが必要です。
例えば、IMS テスト・プログラム DFSDDLT0 を使用してアプリケーション・ データベースを印刷すると、各セグメントが文字ストリングとして表示されるため、 セグメントが個々のフィールドから構成されていることは示されません。2 進数フォーマットまたはパック 10 進数フォーマットでエンコードされた数値データの入ったフィールド は、2 行になった 16 進値で表されます。
各フィールドの列の境界がわかっていても、DFSDDLT0 を使用してアプリケーション・データを 保守することは、難しい時間のかかる作業になります。
- 特定のフィールドのデータを探して置き換えたい場合には、 フィールドの長さを変えないように注意する必要があります。 そうしないと、以降のフィールドの境界が移動されてしまい、 セグメント構造が壊れる可能性があります。
- データが 2 進数やパック 10 進数でエンコードされている数値フィールドのデータを探して置き換えたい場合には、数値でなくその形式 (通常は 16 進値) で検索値や置き換え値を指定する必要があります。
- 編集しているデータベースに (それぞれが 1 つまたは いくつかのレイアウトを持つ) いくつかのセグメント・タイプが入っており、1 つのセグメント/レイアウト・タイプのデータだけを検索して 置き換えたい場合には、他のセグメント/レイアウト・タイプを編集作業から除外する必要があります。
100003599000015970004282
SEGMENT =(BROOME 112300666980800170C0011120C005C62)
DBPCB LEV=01 SEG=SHIRE RET CODE= KFDB LEN=0020 KEY FDB=(BROOME )
........................................................................................上記のセグメントでは、最後の 2 バイト (X'8622') は、2 進数値フィールドに保管されます。この値と等価の 10 進数は 34338 です。この値を 12151 に変更するには、以下を行う必要があります。
- セグメント・データの 16 進値を表示します。
- フィールドが占めている桁位置を判別します。
- 数値 12151 を等価の 16 進値 (X'2F77') に変換します。
- 数値フィールドの古い 16 進値 (X'8622') に新しい値を上書きするか、あるいは CHANGE コマンドを使用して新旧の 16 進値を入れ替えます。
同じセグメントを SNGL 形式で表示すると以下のようになります。
Process Options Help
────────────────────────────────────────────────────────────────────────────────
FM/IMS Browse : IMS Database DJ1E
SHOW SUP ON Scope DB Format SNGL
Segment SHIRE Level: 1
Concatenated key value: DENMARK
Top Line is 1 of 9
Current 01: SHIRE-TOWN
Ref Field Typ Len Data
3 SHIRE-NAME AN 20 K DENMARK
4 SHIRE-TYPE AN 1 1
5 SHIRE-CODE1 ZD 3 305
6 SHIRE-CODE2 ZD 5 244
7 SHIRE-YEAR BI 2 6280
8 SHIRE-BRICK PD 8 606363187610
9 SHIRE-WOODEN PD 8 2034233224332
10 SHIRE-SCHOOL PD 4 3020312
11 SHIRE-GOLF BI 2 12608
*** End of record ***
Command ===> Scroll CSR
F1=Help F2=Format F3=Exit F4=CRetriev F5=RFind F6=RChange
F7=Up F8=Down F9=Swap F10=Previous F11=Next F12=CancelFM/IMS では、上記のレコードの SHIRE-GOLF 2 進数値フィールドの数値を 12608 から 12151 に変更するためには、その数値を上書きするか、または次のコマンドを入力します。
CHANGE 12608 12151 #11