論理ファイルのレコード様式の記述
進数 2 進数
浮動小数点
数 日付 時刻
タイム・ス タンプ 文字または 16
進数
有効 注 1 を参 照
無効 無効 無効 無効 無効 無効
ゾーン 10 進数 注 1 を参照 有効 有効 注 2 を参 照
有効 無効 無効 無効 パック 10 進数 無効 有効 有効 注 2 を参
照
有効 無効 無効 無効
2 進数 無効 注 2 を参
照
注 2 を参 照
注 3 を参 照
注 2 を参 照
無効 無効 無効 浮動小数点数 無効 有効 有効 注 2 を参
照
有効 無効 無効 無効
日付 無効 有効 無効 無効 無効 有効 無効 無効
時刻 無効 有効 無効 無効 無効 無効 有効 無効
タイム・スタン プ
無効 無効 無効 無効 無効 有効 有効 有効
注:
1. 文字数またはバイト数が桁数と等しい場合のみ有効。
2. 2 進数フィールドの小数点以下の桁数がゼロの場合のみ有効。
3. 両方の 2 進数フィールドの小数点以下の桁数が等しい場合のみ有効。
関連概念:
317ページの『2 バイト文字セットの考慮事項』
2 バイト文字セット (DBCS) は、個々の文字を 2 バイトで表す文字セットです。 IBM i オペレーティン グ・システム上のデータベースは DBCS をサポートします。
論理ファイルのフィールドの用途の記述:
論理ファイルのフィールドが入力専用か、入出力共用か、または非入出力フィールドかを指定することがで きます。
論理ファイルのフィールドの用途を記述するには、38 列に以下の項目のうち 1 つを指定します。
記入項目 意味 ブランク
単一または複数様式論理ファイルの場合、省略時値は B (入出力共用) になります。結合論理ファ イルの場合、省略時値は I (入力専用) になります。
B 入力と出力の両方が許可されます。結合論理ファイルについては無効です。
I 入力専用 (読み取り専用)。
N 非入出力。結合論理ファイルについてのみ有効です。
注: 用途値 (38 列) は参照機能では使用されません。他のファイルが論理ファイルのフィールドを (REF
または REFFLD キーワードを用いて) 参照するときには、用途値はそのファイルにコピーされません。
論理ファイルのフィールドの用途の記述: 入出力共用:
入出力共用フィールドは入力と出力の両方の操作に使用することができます。 プログラムでは、フィール ドからデータを読み取ったり、フィールドにデータを書き込んだりすることができます。
入出力共用フィールドは、結合論理ファイルについては無効です。これは、結合論理ファイルが読み取り専 用ファイルであるためです。
論理ファイルのフィールドの用途の記述: 入力のみ:
入力専用フィールドは読み取り操作だけに使用することができます。 プログラムでは、フィールドからデ ータを読み取ることはできても、フィールドを更新することはできません。
入力専用フィールドの典型的な例としては、キー・フィールド (キー・フィールド値の変更を防ぐことによ ってアクセス・パスのメンテナンスを減らすため)、ユーザーが参照できても更新できない重要なフィール ド (たとえば、給与)、および変換表 (TRNTBL) キーワードまたはサブストリング (SST) キーワードが指 定されているフィールドがあります。
入力専用フィールドのあるレコードをプログラムで更新しても、入力専用フィールドはファイル内で更新さ れません。入力専用フィールドのあるレコードをプログラムで追加すると、入力専用フィールドは省略時値 (DFT キーワード) を取ります。
論理ファイルのフィールドの用途の記述: 非入出力:
非入出力フィールドは、入力にも、出力にも使用されません。
非入出力フィールドは、結合論理ファイルについてのみ有効です。このフィールドは、結合論理ファイル内 の結合フィールドとして使用できますが、プログラムでは非入出力フィールドを読み取ったり、更新したり することはできません。
物理ファイルの結合フィールドの属性が一致しないときに、非入出力フィールドを使用します。このような 場合、一方または両方の結合フィールドを定義し直さなければなりません。ただし、このように再定義した
フィールドは、レコード様式に含めることはできません (アプリケーション・プログラムは再定義されたフ ィールドを参照しません)。したがって、再定義する結合フィールドは、レコード様式の中に現れないよう に N とコーディングすることができます。
38 列が N であるフィールドは、プログラムが使用するバッファーには現れません。ただし、フィールド 記述は「ファイル・フィールド記述の表示 (DSPFFD)」コマンドで表示することができます。
非入出力フィールドは、選択/除外フィールドあるいはキー・フィールドとして使用することはできませ ん。
関連資料:
79ページの『例 5: レコード様式に現れないフィールドの記述』
非入出力フィールド (38 列で N と指定) は、入力も出力も行わないものとして結合論理ファイルで使用す ることができます。非入出力フィールドはレコード様式には含まれません。この例では、レコード様式には 現れることのないようなフィールドを記述する方法を説明します。
既存のフィールドからの新しいフィールドの抽出:
論理ファイルのフィールドは、論理ファイルの基礎となる物理ファイルのフィールドから、または同じ論理 ファイルのフィールドから抽出することができます。
たとえば、物理ファイルから複数のフィールドを CONCAT キーワードを使用して連結し、論理ファイル の 1 つのフィールドのように表示することができます。 同様に、物理ファイルの 1 つのフィールドを分 割し、SST キーワードを使用して論理ファイルに複数のフィールドとして表示させることもできます。
連結フィールド:
連結 (CONCAT) DDS キーワードを使用して、物理ファイル・レコード様式からの複数のフィールドを結
合して、論理ファイルのレコード様式の 1 つのフィールドとすることができます。
たとえば、物理ファイルのレコード様式が、Month、Day、および Year のフィールドを含んでいるとしま す。論理ファイルでは、これらのフィールドを連結して 1 つの Date フィールドにすることができます。
この結果、連結フィールドのフィールド長は、含まれたフィールドの長さを合計したものとなります (ただ し物理ファイルのフィールドが 2 進数またはパック 10 進数の場合は、ゾーン 10 進数に変更されます)
。結果として生じたフィールドの長さは、システムで自動的に計算されます。連結フィールドには以下のも のを指示することができます。
v 列見出し
v 妥当性検査 v テキスト記述
v 編集コードまたは編集ワード (数字の連結フィールドのみ)
注: この編集および妥当性検査情報は、データベース管理システムで使用されるのではなく、データベー ス・ファイルからのフィールド記述が表示装置ファイルまたは印刷装置ファイルで参照されるときに検索さ れます。
フィールドが連結されると、データ・タイプが変更されることがあります (結果のデータ・タイプはシステ ムで自動的に決定されます)。次の規則と制限事項が適用されます。
v オペレーティング・システムは、連結するフィールドのデータ・タイプに基づきデータ・タイプを割り 当てます。
v 連結フィールドの最大長は、連結フィールドのデータ・タイプと連結するフィールドの長さによって変 化します。連結フィールドがゾーン 10 進数 (S) ならば、合計長は 31 バイトを超えることはできませ ん。文字 (A) ならば、合計長は 32766 バイトを超えることはできません。
v 結合論理ファイルでは、連結するフィールドは同じ物理ファイルからのものでなければなりません。
CONCAT キーワードに指定する最初のフィールドにより、使用される物理ファイルが識別されます。こ
のため、最初のフィールドは、論理ファイルの基礎となっている物理ファイルの中で固有でなければな りません。もしくは、どの物理ファイルを使用するか指定するために、 JREF キーワードも指定しなけ ればなりません。
v 連結フィールドの用途は、連結フィールドが可変長ならば I (入力専用) でなければなりません。そうで ない場合には、B (入出力共用) でもかまいません。
v O または J のデータ・タイプを割り当てた連結フィールドでは、 REFSHIFT を指定することはできま せん。
v いずれかのフィールドが NULL を含んでいる場合、連結の結果は NULL となります。
注: DBCS フィールドの連結については 317ページの『2 バイト文字セットの考慮事項』を参照してくだ さい。
数字フィールドだけを連結する場合は、グループの最後のフィールドの符号が連結フィールドの符号として 使用されます。
注:
1. ゼロ以外の 10 進数精度を持つ数字フィールドは、連結フィールドに含めることができません。
2. 日付、時刻、タイム・スタンプ、および浮動小数点フィールドは連結フィールドに含めることができま せん。
以下の例は、連結に関する、データ記述仕様 (DDS) でのフィールド記述を示しています。(連結するフィー ルドを指定するために CONCAT キーワードを使用しています。)
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8 A
00101A MONTH
00102A DAY
00103A YEAR
00104A DATE CONCAT(MONTH DAY YEAR)
A
この例では、論理ファイルのレコード様式には、連結フィールドの Date だけでなく、 Month、Day、およ び Year という別個のフィールドも含まれています。以下のいずれの様式も使用することができます。
v Month、Day、および Year という別個のフィールドがある様式。
v 連結フィールドの Date だけがある様式。
v Month、Day、および Year という別個のフィールドと連結フィールドの Date がある様式。
別個のフィールドと連結フィールドの両方が様式の中にあるときは、フィールドの更新は必ず DDS で指定 された順序で処理されます。前の例で Date フィールドが 103188 であり、 Month フィールドを 12 に変 更したとすると、レコードを更新するときには Date フィールド内の月が使用されます。更新したレコード には、103188 が入ることになります。Date フィールドを最初に指定した場合には、更新したレコードには 123188 が入ることになります。
連結フィールドは、キー・フィールドや選択/除外フィールドとして使用することもできます。