DLISegment ステレオタイプ
DLISegment ステレオタイプは、レコード・パーツを階層データベース向けに特殊化します。
DL/I データベースでアクセスする各セグメント・タイプは、 プログラム内で等価の DLISegment レコードを持つ必要があります。
顧客情報を保持するデータベースを考えてみます。それぞれの顧客につき、 クレジット状況、履歴、個々の場所についてのセグメントが存在します。各ロケーションには、オーダー・セグメントがあり、各オーダーには項目セグメントがあります。この例のダイアグラムおよびコードについては、このトピックの最後にある関連概念を参照してください。
このデータベースに EGL プログラムからアクセスするため、顧客、クレジット、履歴、場所、オーダー、アイテムについて DLISegment タイプのレコードを作成します。
DLISegment レコード内のフィールドの構造は、
DL/I がプログラムに提示するセグメントの構造に一致する必要があります。
- keyItem および lengthItem フィールドを定義します。 DL/I セグメントにおけるものと同じ型、長さ、位置を使用します。
- DL/I セグメントが論理上の子である場合は、DLISegment 構造を定義して、宛先の親の連結キーと交差データを含めます。
- DL/I セグメントが論理データベース内の連結セグメントである場合は、 DLISegment 構造を定義して、連結キー、交差データ、および宛先の親セグメントを含めます。
- フィールド・レベル・センシティビティー関数を使用して DL/I セグメントを DL/I PSB で再定義する場合は、 セグメントの PSB ビューに一致するよう DLISegment 構造を定義します。
以下は、DLISegment レコードの例です。
Record CustomerRecordPart type DLISegment
{ segmentName="STSCCST", keyItem="customerNo" }
10 customerNo char(6) { dliFieldName = "STQCCNO" }; //key field
10 customerName char(25) { dliFieldName = "STUCCNM" };
10 customerAddr1 char(25) { dliFieldName = "STQCCA1" };
10 customerAddr2 char(25) { dliFieldName = "STQCCA2" };
10 customerAddr3 char(25) { dliFieldName = "STQCCA3" };
end