SUBSTR - サブ文字列を抽出
SUBSTR 関数は、文字列内の開始位置および長さに基づいて、サブ文字列を抽出します。SUBSTR 関数は、他のフィールドの値に基づいてサブ文字列の位置を変更することができます。
サブ文字列を抽出
SUBSTR(length, source_string, start, end, sublength, output)
整数
source_string で指定した文字列のバイト数です。長さが定義されたフィールドを指定することもできます。
文字
サブ文字列の抽出元となる文字列です。文字列は一重引用符 (') で囲みます。ソース文字列を含むフィールドを指定することもできます。
整数
ソース文字列内のサブ文字列の開始位置です。start の値が 1 より小さい場合、または length で指定した値より大きい場合、この関数はブランクを返します。
整数
抽出するサブ文字列の終了位置です。この引数が start より小さい、または length より大きい場合、この関数はブランクを返します。
整数
サブ文字列の長さです。この値は通常、end - start + 1 (end と start の値の差に 1 を加えたもの) です。sublength が end - start +1 よりも大きい場合はサブ文字列の末尾にブランクが追加され、小さい場合はサブ文字列の末尾が切り捨てられます。この値は、output で宣言した長さに一致させる必要があります。sublength の長さ分の文字のみが処理されます。
文字
結果が返されるフィールド、または出力値のフォーマットです。フォーマットは一重引用符 (') で囲みます。
文字列を抽出
POSIT 関数は、LAST_NAME の 1 つ目の「I」の位置を特定し、結果を I_IN_NAME に格納します。その後、SUBSTR 関数は、LAST_NAME から「I」で開始する 3 バイトを抽出し、結果を I_SUBSTR に格納します。
TABLE FILE EMPLOYEE
PRINT
COMPUTE
I_IN_NAME/I2 = POSIT(LAST_NAME, 15, 'I', 1, 'I2'); AND
COMPUTE
I_SUBSTR/A3 =
SUBSTR(15, LAST_NAME, I_IN_NAME, I_IN_NAME+2, 3, I_SUBSTR);
BY LAST_NAME
WHERE DEPARTMENT EQ 'PRODUCTION'
END
出力結果は次のとおりです。
LAST_NAME I_IN_NAME I_SUBSTR --------- --------- -------- BANNING 5 ING IRVING 1 IRV MCKNIGHT 5 IGH ROMANS 0 SMITH 3 ITH STEVENS 0
ROMANS と STEVENS には「I」が含まれていないため、SUBSTR 関数はブランクの文字列を抽出します。