SET_LEN

Establecer la longitud de una cadena

Esta instrucción configura la longitud de una cadena en la entrada STR a una nueva longitud definida en la entrada LEN. Si la nueva longitud supera la longitud máxima de la declaración de cadena, se produce un error y bError pasa a TRUE. Si se define una nueva longitud de cadena más corta que la actual, la cadena quedará truncada a la nueva longitud de cadena.

Parámetros

Entrada

LEN (INT)

Nueva longitud de cadena

Entrada/salida

STR (STRING)

Cadena ajustada a la nueva longitud

Salida

bError (BOOL)

Ajustar a TRUE, si la nueva longitud de cadena supera la longitud máxima de la declaración de cadena

Observaciones

  • Si esta instrucción se utiliza con caracteres UTF-8, consultar las notas relativas a los caracteres UTF-8 en el tipo de datos STRING.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)

si una cadena aplicada en la entrada o la salida es una cadena no válida.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)

si una cadena aplicada en la entrada o la salida es una cadena no válida.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		sTestString: STRING[128]:='A better life. A better world';
		iStringLength: INT:=0;
		bError: BOOL:=FALSE;
		bStart: BOOL:=FALSE;
	END_VAR

Cuerpo de la POU

Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,E_SET_LEN!,,24,0,31,5,,?DEN?DLEN?DSTR?ASTR?AENO?CbError);
B(B_CONTACT,,bStart,5,1,7,3,);
B(B_VARIN,,sTestString,22,3,24,5,);
B(B_VAROUT,,bError,31,2,33,4,);
B(B_VARIN,,32,22,2,24,4,);
L(1,2,5,2);
L(7,2,24,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VAROUT,,iStringLength,29,2,31,4,);
B(B_VARIN,,sTestString,21,2,23,4,);
B(B_F,LEN!,,24,1,29,4,,?DIN?C);
L(23,3,24,3);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

If (bStart) then
    bError := SET_LEN(32, sTestSTring);
    iStringLength := LEN(sTestString);
End_if;

Modificado el: 2022-04-19Comentarios sobre esta páginaLínea directa de Panasonic