La "pantalla verde", emuladores, menús, Control Language y acceso moderno.
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).
SSH + Terminal Unix
5250 de IBM i
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:
Sign On System . . . . . : MIPROD Subsystem . . . . : QINTER Display . . . . . : QPADEV0001 User . . . . . . . . . . . . __________ Password . . . . . . . . . . __________ Program/procedure . . . . . . __________ Menu . . . . . . . . . . . . __________ Current library . . . . . . . __________
SystemNombre del sistema (LPAR) al que estás conectadoSubsystemSubsistema que atiende sesiones interactivas (normalmente QINTER)DisplayNombre del dispositivo de pantalla asignado a tu sesiónUserTu perfil de usuario (hasta 10 caracteres)PasswordContraseña del perfilProgram/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')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:
* y presioná Enter. Ejemplo: WRK* muestra todos los comandos que empiezan con "WRK".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.
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, ColumnaPosició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.
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
WRKACTJOB(Work with Active Jobs)DSPUSRPRF(Display User Profile)CRTLIB(Create Library)DLTF(Delete File)CPYF(Copy File)CHGSYSVAL(Change System Value)STRSQL(Start SQL Session)SNDMSG(Send Message)Los parámetros se pasan con nombre(valor). Si no recordás los nombres, usá F4:
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)WRKWork withDSPDisplayCRTCreateDLTDeleteCHGChangeCPYCopyMOVMoveRNMRenameSTRStartENDEndSNDSendRTVRetrieveSAVSaveRSTRestoreSBMSubmitCLLCallLIBLibraryF / FILEFilePGMProgramSRVPGMService PgmUSRPRFUser ProfileJOBDJob DescriptionSBSDSubsystem DescDTAARAData AreaDTAQData QueueMSGQMessage QueueOUTQOutput QueueSPLFSpool FileWRKACTJOB 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
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
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
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 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:
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:
Library type . . . . . . . . . _ F4 para ver:
Specified value . . : _
*PROD Production library
*TEST Test libraryWRK + F4 y te muestra todos los comandos WRK* con descripción.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.
QSYSOPRCola 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 queueCada trabajo tiene su cola. Los mensajes de error del programa van acá (≈ stderr).
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 actualDSPMSG QSYSOPRy DSPJOBLOG. Es el equivalente a revisar logs en Linux.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.
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:
ENDPGMPGM / ENDPGMDelimitan el programa. Todo programa CL empieza con PGM y termina con ENDPGM.
DCL VARDeclaración de variables. Tipadas: *CHAR, *DEC, *LGL (boolean).
MONMSGManejo de errores. Captura un mensaje de error y ejecuta una acción (≈ try/catch).
RTVJOBA / RTVSYSVALObtener datos del trabajo actual o valores del sistema (≈ env vars).
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.
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=CopySTRSQLEn la pantalla 5250Sesió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 CLEjecuta un script SQL desde un archivo fuente. Para automatización.
ODBC/JDBCAplicación externaConexión desde cualquier lenguaje (Java, Node, Python, etc).
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
SSH / PASE
VS Code + Code for IBM i
APIs REST (IWS)