# Extrair string do meio

Extrai uma string de uma posição desejada.

##### Bloco

##### Texto

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

# | Descrição
1 | [Destination Data] Defina o destino onde deseja armazenar a string extraída.
2 | [Start position] Valor inteiro que especifica o ponto inicial para extração de string. O valor deve ser maior ou igual a 1 e menor ou igual à posição inicial extraível.
3 | [Number of characters] Defina o número de caracteres a extrair. O valor deve ser maior ou igual a 1 e menor ou igual ao número de caracteres que podem ser extraídos. Os caracteres de byte-duplo são contados como um único caractere.
4 | [Source Data] Defina os dados de origem onde a string a ser extraída é armazenada.

(Exemplo)

##### Bloco

##### Texto

Var4 = substring(Var3,Var5,Var1);

## Exemplo de operação

Variável em [Source Data] | [Start position] | [Number of characters] | Variável em [Destination Data] | Comentários
String de terminal | Número máximo de bytes | String extraída para armazenar
ABCDE | 2 | 3 | 5 | BCD | -
4 | 3 | 5 | (nenhum) | Uma string não é armazenada porque o [Number of characters] excede o número de caracteres recuperáveis. É julgado como falha na operação "Resultado da operação".
6 | 3 | 5 | (nenhum) | Uma string não é armazenada porque a [Start position] excede a posição inicial disponível. É julgado como facassado na operação "Resultado da operação".
0 | 3 | 5 | (nenhum) | Uma string não é armazenada porque a [Start Position] é menor que 1. É julgado como facassado na operação "Resultado da operação".
-1 | 3 | 5 | (nenhum) | Uma string não é armazenada porque a [Start Position] é menor que 1. É julgado como facassado na operação "Resultado da operação".
4 | 0 | 5 | (nenhum) | Uma string não é armazenada porque o [Number of characters] é menor que 1. É julgado como falha na operação "Resultado da operação".
4 | -1 | 5 | (nenhum) | Uma string não é armazenada porque o [Number of characters] é menor que 1. É julgado como falha na operação "Resultado da operação".
2.1 | 3 | 5 | BCD | A parte decimal da [Start Position] é truncada.
2 | 3.5 | 5 | BCD | Os valores à direita do ponto decimal em [Number of characters] são descartados.
ABCDEF | 1 | 6 | 5 | (nenhum) | Uma string não é armazenada porque a string convertida excedeu o número máximo de bytes que podem ser armazenados. É julgado como falha na operação "Resultado da operação".
AB(0x00)CDE | 2 | 3 | 5 | (nenhum) | Uma string não é armazenada. Se houver um NULO (0x00), a string será encerrada lá. Como resultado, o [Número de caracteres] excede o número de caracteres recuperáveis. É julgado como falha na operação "Resultado da operação".
4 | 3 | 5 | (nenhum) | Uma string não é armazenada. Se houver um NULO (0x00), a string será encerrada lá. Como resultado, a [Start position] excede a posição inicial disponível. É julgado como facassado na operação "Resultado da operação".
AあB | 1 | 3 | 5 | AあB | A string é armazenada com base no [Number of characters]. *1
2 | 3 | 5 | (nenhum) | Uma string não é armazenada porque o [Number of characters] excede o número de caracteres recuperáveis. É julgado como falha na operação "Resultado da operação".
2 | 2 | 5 | あB | A string é armazenada com base no [Number of characters]. *1

*1 Se o número máximo de bytes na variável [Destination Data] for menor que o tamanho da string recuperada, a operação falhará. O número máximo de bytes depende da codificação da variável [Destination Data].