%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.

El formato de la función incorporada de obtención de longitud es:
%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))