Aprende a usar funciones CL en comandos CALL de IBM i. Mejora tus programas CL con ejemplos prácticos de trimming, conversión numérica y más.

Uso de funciones en los parámetros de comandos CALL en IBM i

Introducción

Desde la versión 7.4 de IBM i, puedes usar funciones integradas de CL (llamadas BiF) directamente en los parámetros de tus comandos CALL. Esto te permite escribir código CL más flexible y potente, similar a lo que ya podías hacer en RPG.

Ejemplos prácticos

Eliminar espacios en blanco al principio

Imagina que necesitas quitar los espacios del inicio de un texto antes de enviarlo a un programa. Puedes hacerlo así:


DCL VAR(&CHAR) TYPE(*CHAR) LEN(30)
CHGVAR VAR(&CHAR) VALUE(' Text starts here')
CALL PGM(TESTCL) PARM((%TRIML(&CHAR))) 

En este ejemplo, %TRIML elimina los espacios al principio de la variable &CHAR antes de pasarla al programa TESTCL.

Convertir texto a número

También puedes convertir un número en formato texto a un valor numérico decimal:


DCL VAR(&CHAR) TYPE(*CHAR) LEN(6)
CHGVAR VAR(&CHAR) VALUE('123.45')
CALL PGM(TESTCL) PARM((%DEC(&CHAR 5 2) (*DEC 5 2)))

Aquí, %DEC convierte el texto a un número decimal. (*DEC 5 2) indica el tipo de dato del parámetro en el comando CALL (un número decimal con 5 dígitos y 2 decimales).

Enviar la longitud de una variable

Si necesitas enviar la longitud de una variable, puedes usar la función %LEN:


DCL VAR(&CHAR) TYPE(*CHAR) LEN(15)
CHGVAR VAR(&CHAR) VALUE('Something')
CALL PGM(TESTCL) PARM((&CHAR) (%LEN(&CHAR) (*DEC 3 0)))

Este código envía la variable &CHAR y su longitud (como un número decimal de 3 dígitos) al programa TESTCL.

Extraer parte de un texto

Para extraer una parte específica de un texto (una subcadena), puedes usar %SST (que es lo mismo que %SUBSTRING):


DCL VAR(&CHAR) TYPE(*CHAR) LEN(26)
CHGVAR VAR(&CHAR) VALUE('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
CALL PGM(TESTCL) PARM((%SST(&CHAR 5 5) (*CHAR 5)))

Este código extrae 5 caracteres del texto &CHAR, comenzando en la posición 5, y los envía al programa TESTCL.

Limitaciones

Ten en cuenta que no puedes anidar funciones dentro de otras dentro de un parámetro. Por ejemplo, intentar usar %LEN(%TRIM(&CHAR)) causará un error.

Conclusión

Poder usar funciones directamente en los parámetros de los comandos CALL te da más control y flexibilidad al programar en CL. Aunque hay algunas limitaciones, esta funcionalidad es una herramienta muy útil para los desarrolladores de IBM i.

Puedes encontrar más información y ejemplos en: https://www.rpgpgm.com/2024/11/using-expression-in-cl-call-parameters.html

El contenido ha sido generado a partir de la información que puedes encontrar en "Fuente" dentro de la noticia.

Su contenido ha sido traducido, revisado y editado por el equipo de DamePower. Nuestro único objetivo es traer las últimas noticias de Power a su comunidad en español, haciéndola accesible para todos.

Agradecemos su interés en nuestras publicaciones y esperamos seguir brindando información útil y relevante sobre Power. ¡Gracias por formar parte de nuestra comunidad!

podría interesarte

Distribuidor de noticias IBM

Encuentra el SO para ti

¿Qué características tiene cada uno? ¿Cómo lo instalo? Descubre con Dame Power la forma más sencilla de instalar un sistema operativo