# 提取中间字符串

从所需位置提取字符串。

##### 块

##### 文本

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

# | 描述
1 | [Destination Data] 设置目标，存储提取的字符串。
2 | [Start position] 整数值，指定字符串提取的起始点。该值必须大于或等于1且小于或等于可提取的开始位置。
3 | [Number of characters] 设置要提取的字符数。该值必须大于或等于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]变量的编码。