13.1.2 フィールド・グループおよび拡張可能なグループ

LANSA

13.1.2 フィールド・グループおよび拡張可能なグループ


GROUP_BY コマンドを使って1つまたは複数のフィールドを共通の名前の下でグループ化します。これはRDMLコマンドの中で最も時間を節約できるコマンドの1つで す。このコマンドを使用すれば、多くのフィールド名が羅列されたリストを繰り返し指定する必要がなくなります。

また、パラメータにフィールド名のリストが必要なコマンドについても、そのほとんどでグループ名の指定が許されます。次の例を検討してみましょう。

BEGIN_LOOP

REQUEST    FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE)

INSERT     FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) 

           TO_FILE(A)

INSERT     FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) 

           TO_FILE(B)

UPRINT     FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE)

CHANGE     FIELD(#ORDLIN #PRODUCT #QUANTITY #PRICE) 

           TO(*DEFAULT)

END_LOOP

 

ここで、GROUP_BYコマンドを使ってすべてのフィールドを共通の名前でグループ化するように書かれた同じRDMLプログラムを見てみましょう。

GROUP_BY   NAMED(#ORDERLINE) FIELDS(#ORDLIN #PRODUCT #QUANTITY

                                    #PRICE)

BEGIN_LOOP

REQUEST    FIELDS(#ORDERLINE)

INSERT     FIELDS(#ORDERLINE) TO_FILE(A)

INSERT     FIELDS(#ORDERLINE) TO_FILE(B)

UPRINT     FIELDS(#ORDERLINE)

CHANGE     FIELD(#ORDERLINE) TO(*DEFAULT)

END_LOOP

 

新たな5個のフィールドをRDMLプログラムに追加する場合、変更はどちらが容易でしょうか。

グループとGROUP_BYコマンドに関する注意点を以下に示します。

·         必 要なだけのGROUP_BYコマンドを定義することができます。

·         1 つのフィールドを複数のGROUP_BYコマンドのFIELDSパラメータで定義することができます。

·         通 常、フィールド名のリストを指定できる場所であればどこでもGROUP_BY名を使用することができます。

·         以 下のようにGROUP_BY名を定義します。

GROUP_BY   NAMED(#ORDERHEAD) FIELDS(#ORDER #CUSTNO #ADDR1

                                    #ADDR2 

                                    #POSTCD)

 

    次に以下のように使用します。

FETCH      FIELDS(#ORDERHEAD) FROM_FILE(ORDHED)

FETCH      FIELDS(#ORDERHEAD) FROM_FILE(CUSMST)

 

    1番目のFETCHでは、グループ内のフィールドでORDHEDファ イルにあるものだけが取得されます。この場合では#ORDERと#CUSTNOだけが取り出されます。グループ内の他のフィールドはORDHEDファイル にないため、このコマンドで変更されることはなく無視されます。

    2番目のFETCHでは、#CUSTNO (再取得)、#ADDR1、#ADDR2、および#POSTCDが取得されます。これらのフィールドがすべてCUSMSTファイルにあるためです。 #ORDERフィールドはCUSMSTファイルにないため、このコマンドで変更されることはなく無視されます。

さらに、次のトピックも参照してください。

拡張可 能グループ

拡張可能 なグループに関する特記事項

拡張可能 なグループ式

拡張可能 なグループの例

ÝRDMLコマンドのパラメータ