7.57.2 FETCH の使用例

例1:ファイルCUSTMST内で、キー#CUSNUMを持つレコードからフィールド#NAME、#ADDL1、および#POSTCDを取得します。

FETCH       FIELDS(#NAME #ADDL1 #POSTCD) FROM_FILE(CUSMST) WITH_KEY(#CUSNUM)
 

または、以下のように指定しても同じ結果になります。

GROUP_BY    NAME(#CUSTOMER) FIELDS(#NAME #ADDL1 #POSTCD)
FETCH       FIELDS(#CUSTOMER) FROM_FILE(CUSMST) WITH_KEY(#CUSNUM)
 

例2:有効な税コードのテーブルから税率(#TAXRATE)を取得します。テーブルと照合する最初のキーは税タイプ(この例では常に「所得税」)、2番目のキーは税コード(#TAXCDE)です。

FETCH    FIELDS(#TAXRATE) FROM_FILE(TAXTAB) WITH_KEY('INCOME' #TAXCDE)
 

例3:明細行ファイル内で、#QUANTITYフィールドが10より大きい最初の注文の製品番号(#PRODUCT)を取得します。

FETCH    FIELDS(#PRODUCT) FROM_FILE(ORDLIN) WHERE('#QUANTITY > 10')
 

例4:GLTRANSというファイルからすべての元帳トランザクションの明細を読み取り、印刷します。各トランザクションには会社番号(#COMPNO)が関連付けられています。ファイルCOMPANYから実際の会社名(#COMPNAME)を取得し、これをレポートに含めます。

GROUP_BY  NAME(#REPORTLIN) FIELDS(#TRANSNUM #TRANSTYP #TRANSVAL #COMPNO #COMPNAME)
 
SELECT    FIELDS(#REPORTLIN) FROM_FILE(GLTRANS)
FETCH     FIELDS(#COMPNAME) FROM_FILE(COMPANY) WITH_KEY(#COMPNO) KEEP_LAST(15)
UPRINT    FIELDS(#REPORTLIN)
ENDSELECT
 
ENDPRINT
 

GLTRANSに10,000個のトランザクションが含まれ、会社数が15 (または15未満)の場合、このプログラムが実行するデータベースI/O操作は最大でも10,015回です。FETCHコマンドのKEEP_LASTパラメータを省略した場合は、20,000回のI/O操作が実行され、実行時間が2倍になる可能性があります。

例5:キー#CUSNUMを使用して、現在アクティブなバージョンのファイルCUSMSTからすべてのフィールドを取得します。

FETCH       FIELDS(*ALL) FROM_FILE(CUSMST) WITH_KEY(#CUSNUM)
 

例6:現在アクティブなバージョンのファイルCUSMSTからすべての実フィールドを取得しますが、住所情報は除外します。

GROUP_BY    NAME(#XG_ADDR) FIELDS(#ADDL1 #ADDL2 #ADDL3 #POSTCD)
FETCH       FIELDS(*ALL_REAL *EXCLUDING #XG_ADDR) FROM_FILE(CUSMST) WITH_KEY(#CUSNUM)