レガシー関数と推奨関数(文字列範囲を切り取る)

2024年3月23日テクニカルメモ

この記事では、文字列の切り取り処理において古いバージョンの関数を利用した場合と、新しいバージョンの関数を利用した場合のサンプルを記載しています。

SUBSTRING 関数

SUBSTRING 関数は、WebFOCUS 8.2 以降で登場した推奨関数(新しい関数)になります。

関数の使い方

SUBSTRING(対象の文字項目名や文字列 , 切り取り開始位置 , 開始位置から切り取る文字数)

サンプルプロシジャ

COUNTRY 項目の2文字目から3文字分を切り取る SUBSTRING 関数のサンプルです。
文字単位で切り取ります。

SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
 SUBSTRING/STRING = SUBSTRING(COUNTRY,2,3); 
END
TABLE FILE CAR
 PRINT COUNTRY SUBSTRING
END
出力結果イメージ

SUBSTR 関数、SUBSTV 関数

STRREP 関数と SUBSTV 関数は、レガシー関数になります。

関数の使い方

SUBSTR( 対象の文字項目名や文字列の長さ , 対象の文字項目名や文字列
, 切り取り開始位置 , 開始位置から切り取るバイト数 , 格納する文字数 , 'AnV’)

SUBSTV( 対象の文字項目名や文字列の長さ , 対象の文字項目名や文字列
, 切り取り開始位置 , 開始位置から切り取る文字数 , 'AnV’)

※AnV は文字項目全体の長さを格納できるフォーマット

サンプルプロシジャ

MOJI 項目内には、英字(1バイトのSBCS)と平仮名(2バイトのDBCS)が混ざっています。
バイト単位で切り取る SUBSTR 関数と、文字単位で切り取る SUBSTV 関数のサンプルです。

SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
 MOJI/A10V   = 'aあiいuうeえoお';
 SUBSTR/A10V = SUBSTR(10,MOJI,2,3,3,'A10V'); 
 SUBSTV/A10V = SUBSTV(10,MOJI,2,3,'A10V'); 
END
TABLE FILE CAR
 PRINT COUNTRY MOJI SUBSTR SUBSTV
END