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:
| Tipo | Descripción | Ejemplo |
|---|---|---|
| *CHAR | Texto o cadenas alfanuméricas | DCL VAR(&USER) TYPE(*CHAR) LEN(10) |
| *DEC | Números decimales empaquetados | DCL VAR(&PRICE) TYPE(*DEC) LEN(7 2) |
| *LGL | Valores lógicos (0 = falso, 1 = verdadero) | DCL VAR(&FLAG) TYPE(*LGL) |
| *INT | Enteros con signo | DCL VAR(&COUNTER) TYPE(*INT) LEN(4) |
| *UINT | Enteros sin signo | DCL VAR(&INDEX) TYPE(*UINT) LEN(4) |
| *PTR | Direcciones 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)→ hasta999.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
- Ejemplo:
- Indicadores: se declaran como
&INnn.- Ejemplo: indicador 03 →
&IN03
- Ejemplo: indicador 03 →
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.