テンプレートを使用する理由

通常、アプリケーション・データが入っているデータ・セットの構造は十分に定義されていて、データ・セット中の各レコードはいくつかのフィールドから構成されています。それぞれのフィールドには、個人名、製品コード、金額など (アプリケーションによって異なる) の別個のデータ項目が入っています。このデータは、さまざまなタイプのものがあり、一部のフィールドには文字データが入り、他のフィールドには数値データ (ストレージ・スペースを節約するためにバイナリー形式でエンコードされている可能性がある) が入るといったようになります。

このようなデータ・セットを効率的に処理するには、レコード構造を認識し、個々のフィールドを選択して処理できるツールが必要です。

例えば、テキスト・エディター (ISPF エディターなど) を使用してアプリケーション・データ・セットを表示すると、各レコードは文字ストリングとして表示されて、レコードが個々のフィールドから構成されていることは示されません。2 進数またはパック 10 進数形式でエンコードされた数値データの入ったフィールド は、数値でなく文字値 (通常は「表示不能文字」) で表されます。

各フィールドの列の境界が分かっていても、テキスト・エディターでアプリケー ション・データ・セットを編集するのは難しい時間のかかる作業になります。
  • 特定のフィールドのデータを検索して置き換えたい場合には、フィールドの長さを変えないように注意する必要があります。そうしないと、以後のフィールドの境界が移動して、レコード構造を壊す可能性があります。
  • データが 2 進数やパック 10 進数でエンコードされている数値フィールドのデータを探して置き換えたい場合には、数値でなくその形式 (通常は 16 進値) で検索値や置き換え値を指定する必要があります。
  • 編集しようとしているファイルにいくつかのレコード・タイプが (それぞれ独自の構造で) 入っていて、1 つのレコード・タイプのデータだけを検索し置き換えたい場合には、編集作業から他のレコード・タイプを除外する必要があります。

説明のために、ここでは、ISPF エディターに表示された英数字フィールドと数値フィールドが混在するレコードがあるとします。

 EDIT       USERID.FMDATA(DATA2) - 00.02                    Columns 00001 00072
 000013 01Grant Smith              Í
 000014 01Andrew Apple         5   Ì&
 000015 01Graham Prestcott     õ   ç

「Grant Smith」レコードには、数値 “94” が含まれ、2 進数値フィールドに 保管されています。この数値を、テンプレートを使用しないで 94 から 48 に変更するには、以下を行う必要があります。

  1. レコード・データの 16 進値を表示します。
  2. フィールドが占めている桁位置を判別します。
  3. 数値の 48 を 16 進値の等価値 (X'30') に変換します。
  4. 数値フィールドの古い 16 進値 (X'5E') に新しい値を上書きするか、あるいは CHANGE コマンドを使用して新旧の 16 進値を入れ替えます。

以下に、テンプレートを使用して File Manager エディターに表示された同じレコードを示します。

REC-TYPE NAME                 EMPLOYEE-NO     AGE   SALARY  MONTH(1)  MONTH(2)
#2       #3                            #4      #5       #6        #7        #7
AN 1:2   AN 3:20                  BI 23:2 BI 25:2  PD 27:4   BI 31:4   BI 35:4
<>       <---+----1----+---->     <---+-> <---+-> <---+--> <---+---> <---+--->
01       Grant Smith                 7712      94    75000         6        15

2 進数値フィールド AGE の数値を 94 から 48 に変更するため には、94 に 48 を単に上書きするか、あるいは以下のコマンドを入力する だけです (ここで、#5 は AGE フィールドの「フィールド参照」です)。

CHANGE 94 48 #5

このほかに、データをコピーするときにも、テンプレートを使用できます。レコード構造を認識しないコピー・ユーティリティーを使用する場合、データ・セット全体のコピーまたは複数のレコードのコピーしか実行できないことがよくあります。特定のフィールド値のレコードだけ、または特定のフィールドだけをコピーしたい場合には、カスタム・プログラムを書く必要があります。

File Manager でテンプレートを使用するときには、コピーしたいレコードだけを選択し、必要なフィールドをそのレコードのフィールド・リストから選択するための基準を指定することができます。