Interfaz 5250 y CL

La "pantalla verde", emuladores, menús, Control Language y acceso moderno.

¿Qué es el 5250?

El IBM 5250 es el protocolo de terminal que utiliza IBM i. Históricamente se usaban terminales físicas de fósforo verde (de ahí "green screen"), pero hoy se usan emuladores de terminal por software.

A diferencia de una terminal Unix (que es un flujo de caracteres), el 5250 es un protocolo orientado a pantallas completas: el servidor envía una pantalla entera con campos, el usuario llena los campos y presiona Enter, y el servidor recibe todos los datos de vuelta. Esto lo hace extremadamente eficiente en ancho de banda.

Orientado a formularios

Cada pantalla es un formulario con campos de entrada y salida predefinidos. No hay scroll libre.

Block mode

El usuario llena todos los campos y envía todo junto al presionar Enter. Mínimo tráfico de red.

24×80 / 27×132

Pantallas fijas de 24 filas × 80 columnas (estándar) o 27 filas × 132 columnas (wide).

5250 vs SSH / terminal Unix

SSH + Terminal Unix

  • Flujo de caracteres (stream mode)
  • El servidor envía texto caracter por caracter
  • Cada tecla puede generar tráfico de red
  • Scroll libre, output continuo
  • La 'pantalla' es solo texto en buffer
  • Los programas TUI (curses) son la excepción
  • Bash/Zsh como shell interactivo

5250 de IBM i

  • Pantalla completa (block mode)
  • El servidor envía la pantalla entera de una vez
  • Solo hay tráfico al presionar Enter/F-keys
  • Pantalla fija, sin scroll (page up/down)
  • Cada pantalla es un 'Display File' compilado
  • Todas las apps son formularios por defecto
  • Command line CL como shell interactivo
Dato técnico: El protocolo 5250 corre sobre Telnet (puerto 23) o TN5250e (puerto 992 con TLS). IBM i también soporta SSH para acceso PASE (shell Unix), pero la interfaz nativa es 5250.

Emuladores y formas de acceso

EmuladorTipoCostoNotas
IBM ACSDesktop (Java)GratuitoEl oficial. Incluye 5250, transferencia de archivos, SQL Runner, navegador de BD
TN5250Terminal nativoOpen sourceCorre en terminal Unix/Mac. Ligero, para puristas
MochasoftNavegador webComercial5250 en el browser. Útil para acceso sin instalar nada
PCOMMDesktop (Windows)ComercialIBM Personal Communications. Legacy, empresas grandes
iSphere (RDi)Eclipse pluginComercialIDE completo para desarrollo RPG/COBOL/CL
VS Code + Code4iVS Code ext.GratuitoDesarrollo moderno sobre IBM i desde VS Code
Recomendación: Para administración y consultas rápidas usá IBM ACS(viene con todo). Para desarrollo moderno, VS Code + Code for IBM i es la mejor experiencia.

Pantalla de inicio (Sign-On)

Al conectarte a un IBM i por 5250, lo primero que ves es la pantalla de Sign-On. Cada campo tiene un significado específico:

5250 — Sign On
                        Sign On

System  . . . . . :   MIPROD
Subsystem . . . . :   QINTER
Display . . . . . :   QPADEV0001

User  . . . . . . . . . . . .   __________
Password  . . . . . . . . . .   __________
Program/procedure . . . . . .   __________
Menu  . . . . . . . . . . . .   __________
Current library . . . . . . .   __________
SystemNombre del sistema (LPAR) al que estás conectado
SubsystemSubsistema que atiende sesiones interactivas (normalmente QINTER)
DisplayNombre del dispositivo de pantalla asignado a tu sesión
UserTu perfil de usuario (hasta 10 caracteres)
PasswordContraseña del perfil
Program/procedurePrograma a ejecutar automáticamente al entrar (opcional)
MenuMenú inicial a mostrar (por defecto: el del perfil)
Current libraryBiblioteca de trabajo inicial (como el 'directorio actual')

Teclas de función clave

Las teclas de función (F-keys) son fundamentales en 5250. Cada pantalla puede asignar distintas acciones a las F-keys, pero hay convenciones universales:

F1Ayuda contextual sobre el campo actual
F3Salir / Volver al menú anterior (Exit)
F4Prompt — muestra opciones del comando
F5Refrescar pantalla
F6Crear nuevo registro/objeto
F9Recuperar comando anterior (historial)
F10Ver mensajes adicionales del sistema
F11Alternar entre vistas (más/menos detalle)
F12Cancelar / Volver atrás (sin grabar)
F13Repetir operación / Opciones adicionales
F16Repetir búsqueda (Find next)
F17Posicionar al inicio de la lista
F18Posicionar al final de la lista
F24Mostrar más teclas de función
EnterEjecutar comando o confirmar acción
Page UpPantalla anterior (Roll Up)
Page DownPantalla siguiente (Roll Down)
TabMover al siguiente campo de entrada
Acción Navegación Información
Tip: Si no sabés qué comando usar, escribí las primeras letras seguidas de * y presioná Enter. Ejemplo: WRK* muestra todos los comandos que empiezan con "WRK".

Display Files (DDS) — las pantallas por dentro

Cada "pantalla verde" que ves es en realidad un Display File: un objeto compilado que define la estructura visual de la pantalla. Se definen con DDS (Data Description Specifications), un lenguaje declarativo que le dice al sistema dónde va cada campo, qué tipo tiene, y qué teclas de función están habilitadas.

DDS — Ejemplo de Display File
     A          R PANTALLA
     A                                      CA03(03 'Salir')
     A                                      CA12(12 'Cancelar')
     A                                  1  2'Mi Aplicación'
     A                                       DSPATR(HI)
     A                                  3  2'Cliente:'
     A            NOMBRE        30A  B  3 14
     A                                  5  2'Dirección:'
     A            DIREC         50A  B  5 14
     A                                  7  2'Teléfono:'
     A            TELEF         15A  B  7 14
     A                                 23  2'F3=Salir  F12=Cancelar'
Record format (R)

Agrupa campos en un bloque lógico. Una pantalla puede tener varios formatos (ej: cabecera + detalle + pie).

Campo de entrada (B)

'B' = Both (input/output). El usuario puede escribir. 'O' = solo output, 'I' = solo input (hidden).

Fila, Columna

Posición exacta en la pantalla (fila 3, columna 14). Todo es coordenadas fijas.

DSPATR (atributos)

Controlan apariencia: HI (highlight), UL (subrayado), RI (reverse image), BL (blink).

CA/CF (teclas)

CA03 = Command Attention F3. Define qué F-keys están activas y qué indicador activan.

Subfile (SFL)

Una lista scrolleable dentro de la pantalla. Similar a una tabla HTML con paginación.

Analogía web: Un Display File es como un template HTML. El DDS es el HTML/CSS (estructura y estilo), el programa RPG/COBOL es el backend que llena los datos, y el 5250 es el navegador que renderiza todo.

CL — Control Language

CL es el lenguaje de comandos de IBM i. Es tanto un shell interactivo (como bash) como un lenguaje de programación (podés compilar programas CL). Tiene más de 2,000 comandos nativos, pero todos siguen la misma estructura predecible:

VERBO + OBJETO

WRK+ACTJOB=WRKACTJOB(Work with Active Jobs)
DSP+USRPRF=DSPUSRPRF(Display User Profile)
CRT+LIB=CRTLIB(Create Library)
DLT+F=DLTF(Delete File)
CPY+F=CPYF(Copy File)
CHG+SYSVAL=CHGSYSVAL(Change System Value)
STR+SQL=STRSQL(Start SQL Session)
SND+MSG=SNDMSG(Send Message)

Parámetros de comandos CL

Los parámetros se pasan con nombre(valor). Si no recordás los nombres, usá F4:

CL — Parámetros con nombre
Crear una biblioteca:
  CRTLIB LIB(MILIB) TYPE(*PROD) TEXT('Mi biblioteca')

Copiar un archivo:
  CPYF FROMFILE(LIB1/CLIENTES) TOFILE(LIB2/CLIENTES) MBROPT(*REPLACE)

Cambiar un valor del sistema:
  CHGSYSVAL SYSVAL(QSECURITY) VALUE('40')

Enviar un mensaje al operador:
  SNDMSG MSG('Backup completado') TOUSR(QSYSOPR)

Verbos y objetos comunes

Verbos

WRKWork with
Listar y operar
DSPDisplay
Ver (solo lectura)
CRTCreate
Crear objeto
DLTDelete
Borrar objeto
CHGChange
Modificar
CPYCopy
Copiar
MOVMove
Mover
RNMRename
Renombrar
STRStart
Iniciar proceso
ENDEnd
Terminar proceso
SNDSend
Enviar
RTVRetrieve
Obtener valor
SAVSave
Backup
RSTRestore
Restaurar
SBMSubmit
Enviar a batch
CLLCall
Ejecutar programa

Objetos

LIBLibrary
Contenedor de objetos
F / FILEFile
Archivo (tabla)
PGMProgram
Programa compilado
SRVPGMService Pgm
Librería compartida
USRPRFUser Profile
Cuenta de usuario
JOBDJob Description
Config de trabajo
SBSDSubsystem Desc
Config de subsistema
DTAARAData Area
Variable global
DTAQData Queue
Cola de mensajes
MSGQMessage Queue
Buzón de mensajes
OUTQOutput Queue
Cola de impresión
SPLFSpool File
Reporte impreso

Comandos esenciales

Monitoreo y diagnóstico

CL — Monitoreo
WRKACTJOB            Trabajos activos (≈ top / htop)
WRKSBS               Subsistemas activos (≈ systemctl list-units)
DSPMSG QSYSOPR       Mensajes del operador (≈ /var/log/syslog)
DSPLOG               Log del sistema
WRKJOB               Info de tu trabajo actual
WRKJOBLOG            Job log de tu sesión (historial de msgs)
DSPSYSSTS            Estado del sistema (CPU, memoria, disco)
WRKDSKSTS            Estado de los discos

Objetos y bibliotecas

CL — Objetos
WRKLIB *USRLIBL      Bibliotecas en tu library list
WRKOBJ LIB/OBJ       Trabajar con un objeto
DSPOBJD OBJ(LIB/X)   Descripción de un objeto (tamaño, fecha, etc)
WRKOBJPDM            PDM — listar/editar objetos en una lib
DSPLIBL              Mostrar tu library list actual
ADDLIBLE LIB(MILIB)  Agregar biblioteca a tu library list
RMVLIBLE LIB(MILIB)  Quitar biblioteca de tu library list

Usuarios y seguridad

CL — Seguridad
WRKUSRPRF *ALL       Lista de todos los perfiles
DSPUSRPRF USUARIO     Ver detalle de un perfil
CRTUSRPRF            Crear perfil (+ F4 para prompt)
DSPAUT OBJ(LIB/X)   Ver permisos de un objeto
GRTOBJAUT            Otorgar permisos
RVKOBJAUT            Revocar permisos
CHGPWD               Cambiar tu contraseña

Impresión y spool

CL — Spool
WRKSPLF              Tus spool files (reportes impresos)
WRKOUTQ              Colas de impresión
WRKWTR               Impresoras (writers) activas
DSPSPLF FILE(x)      Ver contenido de un spool file

F4 Prompt — tu mejor amigo

F4 es probablemente la tecla más importante para un principiante. Te muestra todos los parámetros de cualquier comando con sus valores posibles. Escribí el comando y presioná F4:

5250 — CRTLIB con F4
                  Create Library (CRTLIB)

Library  . . . . . . . . . . .   __________
Library type . . . . . . . . .   *PROD        *PROD, *TEST
Text 'description' . . . . . .   ________________________________
Authority  . . . . . . . . . .   *LIBCRTAUT
Create authority . . . . . . .   *SYSVAL
Create object auditing  . . .    *SYSVAL

También podés escribir un valor parcial en un campo del prompt y presionar F4 para ver opciones:

5250 — F4 en un campo
Library type . . . . . . . . .   _           F4 para ver:

         Specified value  . . :   _

         *PROD   Production library
         *TEST   Test library
Pro tip: Podés escribir solo el verbo y presionar F4 directamente. Ejemplo: escribí WRK + F4 y te muestra todos los comandos WRK* con descripción.

Mensajes y colas de mensajes

IBM i tiene un sistema de mensajería integrado. Cada usuario, cada trabajo y el sistema tienen colas de mensajes (message queues). Los programas envían mensajes informativos, de advertencia o de error a estas colas.

QSYSOPR

Cola del operador del sistema. Aquí llegan mensajes críticos: disco lleno, errores de backup, PTFs, etc.

USUARIO (tu perfil)

Tu cola personal. Otros usuarios o programas te pueden enviar mensajes acá.

Job message queue

Cada trabajo tiene su cola. Los mensajes de error del programa van acá (≈ stderr).

Comandos de mensajería

CL — Mensajes
DSPMSG               Ver tus mensajes
DSPMSG QSYSOPR       Ver mensajes del operador
SNDMSG MSG('Hola') TOUSR(JUAN)   Enviar msg a un usuario
SNDBRKMSG MSG('Urgente') TOUSR(*ALLACT)  Msg a todos
WRKMSGQ MSGQ(QSYSOPR)  Trabajar con cola de mensajes
DSPJOBLOG            Ver mensajes del trabajo actual
Importante: Muchos problemas en IBM i se diagnostican mirando los mensajes. Si algo falla, lo primero es revisar DSPMSG QSYSOPRy DSPJOBLOG. Es el equivalente a revisar logs en Linux.

Programas CL (scripting)

CL no es solo para comandos interactivos — también es un lenguaje de programación compilado. Un programa CL es el equivalente a un shell script de bash, pero compilado y con manejo de errores estructurado.

CL — Programa ejemplo
PGM
  /* Programa CL: Backup nocturno */
  DCL  VAR(&HOY) TYPE(*CHAR) LEN(8)
  DCL  VAR(&NOMBRE) TYPE(*CHAR) LEN(20)

  RTVJOBA CURUSER(&NOMBRE)
  RTVSYSVAL SYSVAL(QDATE) RTNVAR(&HOY)

  SNDMSG MSG('Inicio backup' *CAT &HOY) TOUSR(QSYSOPR)

  SAVLIB LIB(PRODLIB) DEV(*SAVF) +
         SAVF(BACKUP/SAV&HOY)

  MONMSG MSGID(CPF0000) EXEC(DO)
    SNDMSG MSG('ERROR en backup!') TOUSR(QSYSOPR)
    GOTO CMDLBL(FIN)
  ENDDO

  SNDMSG MSG('Backup OK: ' *CAT &HOY) TOUSR(QSYSOPR)

FIN:
ENDPGM
PGM / ENDPGM

Delimitan el programa. Todo programa CL empieza con PGM y termina con ENDPGM.

DCL VAR

Declaración de variables. Tipadas: *CHAR, *DEC, *LGL (boolean).

MONMSG

Manejo de errores. Captura un mensaje de error y ejecuta una acción (≈ try/catch).

RTVJOBA / RTVSYSVAL

Obtener datos del trabajo actual o valores del sistema (≈ env vars).

SQL interactivo

IBM i soporta SQL nativo desde la línea de comandos. El comando STRSQLabre una sesión SQL interactiva donde podés consultar y modificar datos directamente.

5250 — STRSQL
              Enter SQL Statements

Type SQL statement, press Enter.

===> SELECT CUSNUM, LSTNAM, INIT, CDTLMT
       FROM QIWS/QCUSTCDT
       WHERE CDTLMT > 500
       ORDER BY LSTNAM


CUSNUM  LSTNAM    INIT  CDTLMT
  938   Doe       J A    700
  389   Johnson   V T    999
  192   Lee       F L    900
        *** END OF DATA ***

F3=Exit  F4=Prompt  F6=Insert  F9=Retrieve  F10=Copy

Dónde correr SQL

STRSQLEn la pantalla 5250

Sesión interactiva. Buena para consultas rápidas.

ACS SQL ScriptsIBM ACS (desktop)

Editor SQL completo con resultados en grilla. El más cómodo.

RUNSQLSTMComando CL

Ejecuta un script SQL desde un archivo fuente. Para automatización.

ODBC/JDBCAplicación externa

Conexión desde cualquier lenguaje (Java, Node, Python, etc).

Acceso moderno: más allá del 5250

Aunque el 5250 sigue siendo la interfaz de administración principal, IBM i se puede acceder de muchas formas modernas:

IBM i Access Client Solutions

  • Emulador 5250
  • SQL Scripts (editor gráfico)
  • Transferencia de archivos
  • Navegador de BD
  • IFS browser
  • Gestión de impresoras

SSH / PASE

  • Shell bash/ksh en el IFS
  • Ejecutar Node.js, Python, PHP
  • Usar Git nativo
  • Package managers (yum)
  • Acceso al IFS como Unix

VS Code + Code for IBM i

  • Editar fuentes RPG/CL/SQL
  • Compilar y debuggear remoto
  • Explorar objetos y libs
  • Terminal integrada
  • Git integrado

APIs REST (IWS)

  • Exponer programas RPG como APIs
  • IBM Integrated Web Services
  • JSON in/out nativo
  • Swagger/OpenAPI
  • Consumir desde cualquier app
En resumen: El 5250 es la interfaz clásica y sigue siendo esencial para administración, pero el desarrollo moderno sobre IBM i se hace con VS Code, SQL, APIs REST, y lenguajes como Node.js y Python corriendo en PASE.