# 文字列抽出 (中央)

抽出したい位置から文字列を抽出します。

##### ブロック

##### テキスト

TARGET = substring(INPUT, STARTPOSITION, COUNT);
1 4 2 3

# | 説明
1 | [Destination Data] 抽出した文字列の格納先を設定します。
2 | [Start position] 文字列抽出の開始位置を指定する整数値。値は 1 以上で、抽出できる開始位置以下である必要があります。
3 | [Number of characters] 抽出する文字数を設定します。値は 1 以上で、抽出できる文字数以下である必要があります。 2 バイト文字は 1 文字としてカウントされます。
4 | [Source Data] 抽出する文字列を格納するソースデータを設定します。

(例)

##### ブロック

##### テキスト

Var4 = substring(Var3,Var5,Var1);

## オペレーション例

[Source Data] の変数 | [Start position] | [Number of characters] | [Destination Data] の変数 | コメント
対象文字列 | 最大バイト数 | 格納する抽出文字列
ABCDE | 2 | 3 | 5 | BCD | -
4 | 3 | 5 | (なし) | [Number of characters] が取得可能な文字数を超えているため、文字列は格納されません。「オペレーションの結果」オペレーションで失敗と判断されます。
6 | 3 | 5 | (なし) | [Start position] が可能な位置を越えているため、文字列は格納されません。「オペレーションの結果」で失敗と判断されます。
0 | 3 | 5 | (なし) | [Start Position] が 1 より小さいため、文字列は格納されません。「オペレーションの結果」で失敗と判断されます。
-1 | 3 | 5 | (なし) | [Start Position] が 1 より小さいため、文字列は格納されません。「オペレーションの結果」で失敗と判断されます。
4 | 0 | 5 | (なし) | 変換された文字列は、 [Number of characters] が 1 より小さいため格納されません。「オペレーションの結果」オペレーションで失敗と判断されます。
4 | -1 | 5 | (なし) | 変換された文字列は、 [Number of characters] が 1 より小さいため格納されません。「オペレーションの結果」オペレーションで失敗と判断されます。
2.1 | 3 | 5 | BCD | [Start Position] の小数部は切り捨てられます。
2 | 3.5 | 5 | BCD | [Number of characters] の小数点以下は除外されます。
ABCDEF | 1 | 6 | 5 | (なし) | 変換された文字列は、格納できる最大バイト数を超えていたため格納されません。「オペレーションの結果」オペレーションで失敗と判断されます。
AB(0x00)CDE | 2 | 3 | 5 | (なし) | 文字列は格納されません。NULL (0x00) がある場合、文字列はそこで終了します。結果として、[Number of characters] が取得可能な文字数を超えます。「オペレーションの結果」オペレーションで失敗と判断されます。
4 | 3 | 5 | (なし) | 文字列は格納されません。NULL (0x00) がある場合、文字列はそこで終了します。結果として、[Start position] が可能な位置を超えます。「オペレーションの結果」で失敗と判断されます。
AあB | 1 | 3 | 5 | AあB | 文字列は、 [Number of characters] に基づいて格納されます。 *1
2 | 3 | 5 | (なし) | [Number of characters] が取得可能な文字数を超えているため、文字列は格納されません。「オペレーションの結果」オペレーションで失敗と判断されます。
2 | 2 | 5 | あB | 文字列は、 [Number of characters] に基づいて格納されます。 *1

*1 [Destination Data] に指定された変数の最大バイト数が取得した文字列のサイズよりも小さい場合、オペレーションは失敗します。最大バイト数は、[Destination Data] に指定された変数のエンコーディングによって異なります。