En Control Language (CL) para IBM i, todas las variables deben ser declaradas antes de poder usarse en un programa o procedimiento. Este paso es esencial para la correcta compilación y ejecución del código. Para ello, se utilizan principalmente dos comandos:

  • DCL (Declare CL Variable): Declaración explícita de variables.
  • DCLF (Declare File): Declaración implícita de variables basadas en la definición de un archivo.

Comprender cómo declarar variables correctamente es clave para escribir programas CL efectivos y robustos.


1. El comando DCL (Declare CL Variable)

El comando DCL es la herramienta principal para definir variables en un programa CL. Permite especificar su nombre, tipo, longitud y valor inicial.

Ejemplo de sintaxis:

DCL VAR(&AREA) TYPE(*CHAR) LEN(4) VALUE('BOOK')

Parámetros principales:

  • VAR: Nombre de la variable.
  • TYPE: Tipo de dato (*CHAR, *DEC, *LGL, etc.).
  • LEN: Longitud de la variable.
  • VALUE: Valor inicial (opcional).

2. Tipos de Variables en CL

Seleccionar el tipo correcto ayuda a optimizar memoria y prevenir errores. Los más comunes son:

TipoDescripciónEjemplo
*CHARTexto o cadenas alfanuméricasDCL VAR(&USER) TYPE(*CHAR) LEN(10)
*DECNúmeros decimales empaquetadosDCL VAR(&PRICE) TYPE(*DEC) LEN(7 2)
*LGLValores lógicos (0 = falso, 1 = verdadero)DCL VAR(&FLAG) TYPE(*LGL)
*INTEnteros con signoDCL VAR(&COUNTER) TYPE(*INT) LEN(4)
*UINTEnteros sin signoDCL VAR(&INDEX) TYPE(*UINT) LEN(4)
*PTRDirecciones de memoria (punteros)DCL VAR(&POINTER) TYPE(*PTR)

3. Longitud y Valores Iniciales

El parámetro LEN define el tamaño de la variable:

  • En *DEC, se especifica total de dígitos y decimales. Ejemplo: LEN(5 2) → hasta 999.99.
  • Si no se indica, el compilador asigna valores por defecto:
    • *CHAR → 32
    • *DEC → 15 5
    • *INT → 4
    • *LGL → 1

El parámetro VALUE inicializa la variable:

  • *DEC → 0
  • *CHAR → espacios
  • *LGL → 0 (falso)
  • *INT → 0
  • *PTR → nulo

Nota: Si se omite LEN pero se asigna VALUE, la longitud se ajusta automáticamente según el valor.

Ejemplo:

DCL VAR(&NAME) VALUE('QSYSOPR')   /* Longitud = 7 */
DCL VAR(&PI) VALUE(3.14159265)    /* Longitud = (9 8) */

4. Reglas para Nombrar Variables

Las variables en CL siempre comienzan con & y deben seguir estas reglas:

  • El primer carácter tras & debe ser alfabético (A-Z) o $, #, @.
  • Los siguientes pueden ser alfanuméricos, _, $, #, @ o ..
  • Se recomienda no usar nombres mayores de 11 caracteres.

Errores comunes:

  • TOTAL ❌ No comienza con &.
  • &1TOTAL ❌ No puede iniciar con un número.
  • &INV%TOTAL ❌ El símbolo % no es válido.
  • &NBRDLTPGMMSG ❌ Nombre demasiado largo.

5. Declaración Implícita con DCLF (Declare File)

Cuando un programa trabaja con archivos (físicos o de pantalla), se puede usar DCLF. Esto declara automáticamente una variable para cada campo definido en el archivo.

  • Campos: se convierten en variables con & delante del nombre.
    • Ejemplo: CUSNAM&CUSNAM
  • Indicadores: se declaran como &INnn.
    • Ejemplo: indicador 03 → &IN03

6. Código más conciso

El comando DCL permite omitir palabras clave (VAR, TYPE, LEN) si se respeta el orden posicional:

Con palabras clave:

DCL VAR(&USER) TYPE(*CHAR) LEN(10)

Modo abreviado:

DCL &USER *CHAR 10

Este estilo es usado por programadores con experiencia, ya que hace el código más legible.


Conclusión

Dominar la declaración de variables es un paso esencial para programar en CL. Hemos visto:

  • DCL → método principal y explícito para declarar variables.
  • DCLF → declaración implícita a partir de archivos.
  • Reglas de nombres, valores iniciales y longitudes.

El siguiente paso, una vez que se dominan las declaraciones, es aprender a modificar los valores de las variables durante la ejecución. Para ello, se utiliza el comando CHGVAR (Change Variable), la herramienta fundamental para manipular datos en tiempo de ejecución.