この図は、UNSTRING ステートメントの処理を示しています。この説明では、以下のステートメントを使用します。
UNSTRING send-id DELIMITED BY delimiter-id OR ALL "*"
INTO receiver-id1 DELIMITER IN delim-1 COUNT IN cnt1
receiver-id2 DELIMITER IN delim-2
reciever-id3 DELIMITER IN delim-3 COUNT IN cnt3
WITH POINTER pointer-1
TALLYING IN tally-field-1
ON OVERFLOW GO TO overflow-exit.
END-UNSTRING
初期データ値は以下のとおりです。
- send-id。英数字カテゴリーの 20 文字のデータ項目で、「123**45678??90ABCDEF」が入っています。
- delimiter-id。英数字カテゴリーの 1 文字のデータ項目で、1 つの疑問符が入っています。
それぞれの受信区切り文字フィールドの長さは 1 文字です。
send-id 内のデータは左から右へ検査されます。処理ステップは以下のとおりです。
- receiver-id1 の場合:
- 123 の 3 文字が receiver-id1 に転送され、その長さ (6 文字) に合わせて receiver-id1 にブランクが埋め込まれます。
- 区切り文字のアスタリスクが delim-1 内に置かれます。 ALL "*" が区切り文字として指定されたため、両方のアスタリスクが区切り文字として使用されます。
- Cnt1 は、移動した文字数 (3) に設定されます。
- receiver-id2 の場合:
- 45678 の文字が receiver-id2 に転送され、その長さ (6 文字) に合わせて receiver-id2 にブランクが 1 つ埋め込まれます。
- 区切り文字の疑問符 (?) は delim-2 内に置かれます。
- receiver-id3 の場合:
- send-id 内の次の疑問符 (?) の前に文字が存在しないため、receiver-id3 には文字が転送されません。
- 区切り文字の疑問符 (?) は delim-3 内に置かれます。
- cnt3 は 0 に設定されます。
- receiver-id4 の場合:
- 90ABC の文字が 5 文字フィールドの receiver-id4 に転送されます。
- cnt4 が 8 (send-id 内の検査された文字数) に設定されます。
- tally-field-1 が 5 (転送されたフィールド数 + 1) に設定されます。
- pointer-1 が 21 (送信フィールドの長さ + 1) に設定されます。
send-id 内のすべての文字が検査されたため、overflow-exit には分岐しません。
図の説明の終わり。