PARAG - テキストを行に分割
PARAG 関数は、区切り文字を使用して文字列を複数のサブ文字列に分割します。文字列の先頭から特定のバイト数をスキャンし、グループ内の末尾のブランクを区切り文字で置換することにより、最初のサブ文字列を作成します。このサブ文字列はトークンとも呼ばれます。その後、区切り文字から開始して、行の次の文字列グループをスキャンし、このグループ末尾のブランクを 2 つ目の区切り文字と置換することにより、2 つ目のトークンを作成します。行の末尾に到達するまで、この処理を繰り返します。
区切り文字で各トークンに分割した後、GETTOK 関数を使用して、これらのトークンをそれぞれ異なるフィールドに配置することができます。PARAG 関数は、スキャンしたグループ内にブランクが見つからない場合、グループの先頭文字を区切り文字で置換します。したがって、文字グループには少なくとも 1 つのブランクが含まれている必要があります。スキャンされた文字数は、最大トークンサイズとして指定されます。
たとえば、「subtitle」というフィールドにブランクで区切られた長いテキストが存在する場合、最大トークンサイズを指定することにより、このフィールドをほぼ均等な長さのサブ文字列に分割することができます。このフィールドのサイズが 350 バイトの場合、最大トークンサイズとして 120 バイトを指定することにより、3 つのサブ文字列に分割することができます。この手法を使用すると、テキスト行を段落形式で表示することが可能です。
ヒント:行を等しいサイズに分割する場合、意図する数よりも多くの行が作成される可能性があります。たとえば、120 バイトのテキスト行を最大 60 バイトの 2 行に分割しようとして、1 つ目の行が 50 バイト、2 つ目の行が 55 バイトに分割されたことを想定します。分割後の 3 つ目の行は 15 バイトになります。これを修正するには、3 つ目の行の先頭にブランクを挿入 (弱連結を使用) し、この行を 2 つ目の行末に追加 (強連結を使用) します。この行は、60 バイトよりも長くなります。
テキストを行に分割
PARAG(length, source_string, 'delimiter', max_token_size, output)
整数
source_string および output の長さをバイト数で指定します。長さが定義されたフィールドを指定することもできます。
文字
トークンに分割する文字列です。文字列は一重引用符 (') で囲みます。文字列を含むフィールドまたは変数を指定することもできます。
文字
一重引用符 (') で囲まれた区切り文字です。テキストで使用されていない文字を選択します。
整数
各トークンのサイズの上限値です。
文字
結果を格納するフィールド名、または出力フォーマットです。フォーマットは一重引用符 (') で囲みます。
テキストを行に分割
PARAG 関数は、カンマ (,) を区切り文字として使用し、ADDRESS_LN2 を 10 バイト以下の行に分割します。その結果を PARA_ADDR に格納します。
TABLE FILE EMPLOYEE PRINT ADDRESS_LN2 AND COMPUTE PARA_ADDR/A20 = PARAG(20, ADDRESS_LN2, ',', 10, PARA_ADDR); BY LAST_NAME WHERE TYPE EQ 'HSM'; END
出力結果は次のとおりです。
LAST_NAME ADDRESS_LN2 PARA_ADDR --------- ----------- --------- BANNING APT 4C APT 4C , CROSS 147-15 NORTHERN BLD 147-15,NORTHERN,BLD GREENSPAN 13 LINDEN AVE. 13 LINDEN,AVE. IRVING 123 E 32 ST. 123 E 32,ST. , JONES 235 MURRAY HIL PKWY 235 MURRAY,HIL PKWY MCKNIGHT 117 HARRISON AVE. 117,HARRISON,AVE. ROMANS 271 PRESIDENT ST. 271,PRESIDENT,ST. SMITH 136 E 161 ST. 136 E 161,ST.