%LEN, función incorporada
La función incorporada %LEN devuelve el número de dígitos o caracteres de la variable numérica o de caracteres CL.
La función incorporada %LEN se puede utilizar en cualquier lugar en el que CL soporte una expresión aritmética. %LEN se puede utilizar solo o como parte de una expresión aritmética más compleja. Por ejemplo, %LEN puede utilizarse para comparar el número de dígitos de una variable CL decimal con una variable CL numérica en el parámetro COND de un mandato IF o WHEN . %LEN también puede utilizarse para establecer el valor de un parámetro de mandato CL, si el objeto de mandato asociado define el parámetro con EXPR (*YES) y TYPE de *DEC, *INT2, *INT4, *UINT2o *UINT4.
%LEN(variable-argument)El argumento-variable debe ser una variable CL con TYPE *CHAR, *DEC, *INT o *UINT.
Para las variables numéricas, el valor devuelto representa la precisión de las variables y no necesariamente el número real de dígitos significativos. Para las variables CL *INT o *UINT de 2 bytes, el valor devuelto es siempre 5. Para las variables CL *INT o *UINT de 4 bytes, el valor devuelto es siempre 10. Para variables CL *INT de 8 bytes, el valor devuelto es siempre 19. Para variables CL *UINT de 8 bytes, el valor devuelto es siempre 20.
Para las variables de tipo carácter, el valor devuelto es el número de caracteres.
A continuación se muestran ejemplos del uso de la función incorporada %LEN:
- Obtener la longitud de las variables numéricas
DCL VAR(&NUM1) TYPE(*DEC) DCL VAR(&NUM2) TYPE(*DEC) LEN(7 2) DCL VAR(&NUM3) TYPE(*INT) LEN(4) DCL VAR(&NUM4) TYPE(*UINT) LEN(2) DCL VAR(&RTN) TYPE(*INT) LEN(2) /* &RTN will have the value 15. */ CHGVAR VAR(&RTN) VALUE(%LEN(&NUM1)) /* &RTN will have the value 7. */ CHGVAR VAR(&RTN) VALUE(%LEN(&NUM2)) /* &RTN will have the value 10. */ CHGVAR VAR(&RTN) VALUE(%LEN(&NUM3)) /* &RTN will have the value 5. */ CHGVAR VAR(&RTN) VALUE(%LEN(&NUM4)) - Obtener la longitud de las variables de caracteres
DCL VAR(&CHAR1) TYPE(*CHAR) DCL VAR(&CHAR2) TYPE(*CHAR) LEN(20) DCL VAR(&RTN) TYPE(*INT) LEN(2) /* &RTN will have the value 32. */ CHGVAR VAR(&RTN) VALUE(%LEN(&CHAR1)) /* &RTN will have the value 20. */ CHGVAR VAR(&RTN) VALUE(%LEN(&CHAR2)) /* &RTN will have the value 52. */ CHGVAR VAR(&RTN) VALUE(%LEN(&CHAR1) + %LEN(&CHAR2))