7.47.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)