EDIT - 文字の抽出および追加
EDIT 関数は、指定したマスクに基づいてソース文字列から文字を抽出したり、文字を出力文字列に追加したりします。この関数は、ソース文字列の任意の部分からサブ文字列を抽出することができます。また、ソース文字列から抽出した文字を出力文字列に挿入することもできます。たとえば、文字列の先頭の 2 バイトと末尾の 2 バイトを抽出し、単一文字列を生成することができます。
EDIT 関数は、マスク内の文字とソース文字列内の文字を比較します。マスク内に「9」が見つかると、EDIT はソース文字列から対応する文字を出力文字列にコピーします。マスク内に「$」が見つかると、EDIT はソース文字列内の対応する文字を無視します。マスク内でその他の文字が見つかると、EDIT は出力文字列内の対応する位置に、その文字をコピーします。マスク文字すべての処理が完了した時点で、この処理は終了します。
注意
- EDIT 関数では、結果は文字フォーマットに限定され、長さはマスク値に基づいて決定されるため、output 引数を指定する必要はありません。
- EDIT 関数は、フィールドのフォーマットを変換することもできます。
文字列を抽出または追加
EDIT(source_string, 'mask');
文字
文字の抽出元となる文字列です。マスク内の「9」は、それぞれ 1 桁を表します。そのため、source_string の長さは、マスク内の「9」の個数以上である必要があります。
文字
マスク文字列です。文字列は一重引用符 (') で囲みます。一重引用符 (') で囲まれた文字列を含むフィールドを指定することもできます。出力フィールドの長さは、マスクの長さ (9 と $ を除く) に基づいて決定されます。
文字の抽出および追加
EDIT 関数は FIRST_NAME フィールドの 1 文字目を抽出し、FIRST_INIT に格納します。また、EMP_ID フィールドにハイフン (-) を追加し、結果を EMPIDEDIT に格納します。名前のイニシャルを抽出するための mask は、「MASK1」という名前の一時項目 (DEFINE) に保存されます。
DEFINE FILE EMPLOYEE MASK1/A10 = '9$$$$$$$$$' END TABLE FILE EMPLOYEE PRINT LAST_NAME AND COMPUTE FIRST_INIT/A1 = EDIT(FIRST_NAME, MASK1); EMPIDEDIT/A11 = EDIT(EMP_ID, '999-99-9999'); WHERE DEPARTMENT EQ 'MIS'; END
出力結果は次のとおりです。
LAST_NAME FIRST_INIT EMPIDEDIT --------- ---------- --------- SMITH M 112-84-7612 JONES D 117-59-3129 MCCOY J 219-98-4371 BLACKWOOD R 326-17-9357 GREENSPAN M 543-72-9165 CROSS B 818-69-2173