Referencia de Comandos CL

Los comandos CL (Control Language) mas utilizados organizados por categoria. Nomenclatura, sintaxis, parametros y ejemplos practicos para administracion y operacion de IBM i.

Nomenclatura de comandos CL

IBM i tiene mas de 2,000 comandos CL, pero todos siguen una nomenclatura consistente basada en VERBO + OBJETO. Conocer los verbos y objetos comunes permite adivinar el nombre de casi cualquier comando sin memorizar.

VERBO + OBJETO = COMANDO

Verbos principales

WRKWork withListar y operar (pantalla interactiva)
DSPDisplayMostrar informacion (solo lectura)
CRTCreateCrear nuevo objeto
DLTDeleteEliminar objeto
CHGChangeModificar propiedades
CPYCopyCopiar objeto o datos
MOVMoveMover objeto
RNMRenameRenombrar
STRStartIniciar proceso o servicio
ENDEndTerminar proceso o servicio
SAVSaveGuardar (backup)
RSTRestoreRestaurar desde backup
SNDSendEnviar (mensaje, archivo)
RTVRetrieveObtener valor en variable
SBMSubmitEnviar a ejecucion batch
CLLCallEjecutar programa
GRTGrantOtorgar permiso
RVKRevokeRevocar permiso
ADDAddAgregar elemento
RMVRemoveQuitar elemento

Objetos principales

LIBLibraryContenedor de objetos (schema)
OBJObjectCualquier objeto generico
F / FILEFileArchivo fisico o logico (tabla)
PGMProgramPrograma compilado
SRVPGMService ProgramLibreria compartida ILE
MODModuleModulo compilado ILE
USRPRFUser ProfileCuenta de usuario
JOBDJob DescriptionConfiguracion de job
SBSDSubsystem DescriptionConfiguracion de subsistema
DTAQData QueueCola de datos (IPC)
DTAARAData AreaVariable global persistente
MSGQMessage QueueCola de mensajes
OUTQOutput QueueCola de salida (impresion)
SPLFSpool FileArchivo de impresion en cola
JRNJournalJournal de auditoria/CDC
JRNRCVJournal ReceiverReceptor de journal
SYSVALSystem ValueConfiguracion del sistema
LIBLELibrary List EntryEntrada en library list
SBSSubsystemInstancia de subsistema
ACTJOBActive JobJob activo en ejecucion
CL — Sintaxis general de comandos
-- Sintaxis basica:
COMANDO PARAMETRO1(valor) PARAMETRO2(valor)

-- Ejemplo:
CRTLIB LIB(MYLIB) TYPE(*PROD) TEXT('Mi biblioteca')

-- Con valores especiales:
*ALL     = todos
*CURRENT = valor actual
*SAME    = no cambiar
*LIBL    = buscar en library list
*CURLIB  = biblioteca actual

-- Tip: F4 en cualquier comando muestra el prompt
-- con TODOS los parametros disponibles
Tip clave: Si no recordas el nombre completo del comando, escribi el verbo y un asterisco: WRK* + Enter muestra todos los comandos que empiezan con WRK. Combinado con F4 (prompt), nunca necesitas memorizar parametros.

Trabajar con objetos

ComandoDescripcionEjemplo
WRKOBJTrabajar con objetos (listar, copiar, borrar)WRKOBJ OBJ(MYLIB/*ALL) OBJTYPE(*ALL)
WRKOBJPDMPDM: listar objetos con opciones de accionWRKOBJPDM LIB(MYLIB)
DSPOBJDMostrar descripcion de un objetoDSPOBJD OBJ(MYLIB/MYPGM) OBJTYPE(*PGM)
CRTDUPOBJCrear duplicado de un objetoCRTDUPOBJ OBJ(MYPGM) FROMLIB(LIB1) TOLIB(LIB2)
MOVOBJMover objeto a otra bibliotecaMOVOBJ OBJ(MYLIB/MYPGM) TOLIB(NEWLIB)
RNMOBJRenombrar un objetoRNMOBJ OBJ(MYLIB/OLDNAME) OBJTYPE(*PGM) NEWOBJ(NEWNAME)
DLTOBJEliminar un objeto (generico)Usar DLT + tipo: DLTPGM, DLTF, etc.
CHGOBJOWNCambiar propietario de un objetoCHGOBJOWN OBJ(MYLIB/X) NEWOWN(NEWUSER)
DSPOBJAUTMostrar autoridades de un objetoDSPOBJAUT OBJ(MYLIB/X) OBJTYPE(*FILE)
WRKOBJ *ALL/*ALLBuscar objetos en todo el sistemaWRKOBJ OBJ(*ALL/CUST*) OBJTYPE(*FILE)

Trabajar con archivos (tablas)

ComandoDescripcionEjemplo
DSPFDMostrar descripcion de archivo (metadata)DSPFD FILE(MYLIB/CUSTMAST)
DSPFFDMostrar descripcion de campos (columnas)DSPFFD FILE(MYLIB/CUSTMAST)
DSPPFMMostrar contenido de physical file memberDSPPFM FILE(MYLIB/CUSTMAST)
CPYFCopiar datos entre archivosCPYF FROMFILE(LIB1/F1) TOFILE(LIB2/F2) MBROPT(*REPLACE)
CPYTOIMPFCopiar archivo a formato importacion (CSV)CPYTOIMPF FROMFILE(MYLIB/X) TOSTMF('/x.csv')
CPYFRMIMPFImportar CSV a archivo fisicoCPYFRMIMPF FROMSTMF('/x.csv') TOFILE(MYLIB/X)
CLRPFMBorrar todos los registros de un archivoCLRPFM FILE(MYLIB/TEMPDATA)
RGZPFMReorganizar archivo (recuperar espacio)RGZPFM FILE(MYLIB/CUSTMAST)
CRTPFCrear physical file (tabla DDS)CRTPF FILE(MYLIB/NEWF) SRCFILE(MYLIB/QDDSSRC)
CRTLFCrear logical file (vista/indice DDS)CRTLF FILE(MYLIB/NEWLF) SRCFILE(MYLIB/QDDSSRC)
DSPDBRMostrar relaciones de base de datosDSPDBR FILE(MYLIB/CUSTMAST)
DLTFEliminar archivo (tabla)DLTF FILE(MYLIB/TEMPDATA)
OVRDBFOverride de archivo (redirigir a otro)OVRDBF FILE(CUSTMAST) TOFILE(TESTLIB/CUSTMAST)
CL — Operaciones comunes con archivos
-- Copiar solo registros que cumplen condicion
CPYF FROMFILE(PRODLIB/ORDERS)
     TOFILE(QTEMP/BIGORDERS)
     FROMRCD(*START) TORCD(*END)
     MBROPT(*REPLACE)
     INCREL((*IF ORDAMT *GT 10000))

-- Reorganizar despues de muchos deletes
RGZPFM FILE(MYLIB/CUSTMAST)
       KEYFILE(*FILE)
       RBDACCPTH(*YES)

-- Ver cuantos registros tiene un archivo
DSPFD FILE(MYLIB/CUSTMAST) TYPE(*MBR)
  -- Buscar "Number of current records"

Bibliotecas y miembros

ComandoDescripcionEjemplo
CRTLIBCrear bibliotecaCRTLIB LIB(MYLIB) TYPE(*PROD) TEXT('Produccion')
DLTLIBEliminar biblioteca y todo su contenidoDLTLIB LIB(TESTLIB)
DSPLIBMostrar contenido de bibliotecaDSPLIB LIB(MYLIB)
WRKLIBTrabajar con bibliotecasWRKLIB LIB(MY*)
DSPLIBLMostrar library list actualDSPLIBL
EDTLIBLEditar library list interactivamenteEDTLIBL
ADDLIBLEAgregar biblioteca a la library listADDLIBLE LIB(MYLIB) POSITION(*FIRST)
RMVLIBLEQuitar biblioteca de la library listRMVLIBLE LIB(MYLIB)
CHGCURLIBCambiar biblioteca actual (*CURLIB)CHGCURLIB CURLIB(MYLIB)
WRKMBRPDMPDM: trabajar con miembros de archivo fuenteWRKMBRPDM FILE(MYLIB/QRPGLESRC)
ADDPFMAgregar miembro a un archivoADDPFM FILE(MYLIB/QRPGLESRC) MBR(NEWPGM)
RMVMEliminar miembro de un archivoRMVM FILE(MYLIB/QRPGLESRC) MBR(OLDPGM)

Jobs y subsistemas

ComandoDescripcionEjemplo
WRKACTJOBVer todos los jobs activosWRKACTJOB SBS(QBATCH)
WRKJOBTrabajar con un job especificoWRKJOB JOB(123456/USER/JOBNAME)
WRKSBSJOBVer jobs de un subsistemaWRKSBSJOB SBS(QINTER)
SBMJOBEnviar trabajo a batchSBMJOB CMD(CALL PGM(MYLIB/BATCH1)) JOB(NIGHTLY)
ENDJOBTerminar un jobENDJOB JOB(nnn/usr/name) OPTION(*CNTRLD) DELAY(30)
HLDJOBSuspender (hold) un jobHLDJOB JOB(nnn/usr/name)
RLSJOBLiberar (release) un job suspendidoRLSJOB JOB(nnn/usr/name)
DSPJOBLOGMostrar log de un jobDSPJOBLOG JOB(*)
WRKJOBSCDETrabajar con programacion de jobsWRKJOBSCDE
ADDJOBSCDEProgramar ejecucion de un jobADDJOBSCDE JOB(BACKUP) CMD(...) FRQ(*DAILY) SCDTIME('23:00')
STRSBSIniciar subsistemaSTRSBS SBSD(QBATCH)
ENDSBSTerminar subsistemaENDSBS SBS(QBATCH) OPTION(*CNTRLD)
WRKSBSVer subsistemas activosWRKSBS
DSPSBSDMostrar descripcion de subsistemaDSPSBSD SBSD(QBATCH)
CL — Gestionar jobs
-- Enviar proceso batch que corre de noche
SBMJOB CMD(CALL PGM(MYLIB/NIGHTLY))
       JOB(NIGHTRUN)
       JOBD(MYLIB/BATCHJD)
       JOBQ(QBATCH)
       SCDDATE(*NONE)
       SCDTIME('23:00')

-- Ver jobs que consumen mas CPU
WRKACTJOB
  -- Presionar F16 para ordenar por CPU%

-- Terminar job que esta colgado (con gracia)
ENDJOB JOB(123456/USRX/BATCH01)
       OPTION(*CNTRLD) DELAY(60)

-- Forzar terminacion inmediata (ultimo recurso)
ENDJOB JOB(123456/USRX/BATCH01)
       OPTION(*IMMED)

Configuracion del sistema

ComandoDescripcionEjemplo
WRKSYSVALTrabajar con valores del sistemaWRKSYSVAL SYSVAL(Q*)
DSPSYSVALMostrar un valor del sistemaDSPSYSVAL SYSVAL(QSECURITY)
CHGSYSVALCambiar un valor del sistemaCHGSYSVAL SYSVAL(QSECURITY) VALUE('40')
DSPSYSSTSEstado del sistema (CPU, memoria)DSPSYSSTS
WRKDSKSTSEstado de discos (ASP)WRKDSKSTS
DSPPTFMostrar PTFs (parches) instaladosDSPPTF LICPGM(5770SS1)
WRKPTFGRPTrabajar con grupos de PTFsWRKPTFGRP
DSPLOGMostrar log del sistema (QHST)DSPLOG LOG(QHST)
DSPNETAMostrar atributos de redDSPNETA
DSPSYSVAL QDATEFecha del sistemaDSPSYSVAL SYSVAL(QDATE)
PWRDWNSYSApagar o reiniciar el sistemaPWRDWNSYS OPTION(*CNTRLD) RESTART(*YES)
Precaucion: Cambiar system values puede afectar a todo el sistema y a todos los usuarios. Siempre documentar el valor anterior antes de cambiar con DSPSYSVAL. Algunos valores requieren IPL (reinicio) para tomar efecto.

Red y comunicaciones

ComandoDescripcionEjemplo
CFGTCPMenu de configuracion TCP/IPCFGTCP
NETSTATEstadisticas de redNETSTAT *CNN / *IFC / *RTE
PINGPing a host remotoPING RMTSYS('192.168.1.1')
TRACERTTrace route a hostTRACERT RMTSYS('google.com')
STRTCPSVRIniciar servicio TCP/IPSTRTCPSVR SERVER(*HTTP)
ENDTCPSVRDetener servicio TCP/IPENDTCPSVR SERVER(*HTTP)
WRKTCPSTSTrabajar con estado de TCPWRKTCPSTS *IFC
CHGTCPACambiar atributos TCP/IPCHGTCPA
STRHOSTSVRIniciar host servers (para ACS)STRHOSTSVR SERVER(*ALL)
ENDHOSTSVRDetener host serversENDHOSTSVR SERVER(*ALL)
FTPCliente FTP nativoFTP RMTSYS('192.168.1.100')
NSLOOKUPResolucion DNSNSLOOKUP HOST('server.example.com')

Seguridad

ComandoDescripcionEjemplo
CRTUSRPRFCrear perfil de usuarioCRTUSRPRF USRPRF(NEWUSER) PASSWORD(temp123)
CHGUSRPRFCambiar propiedades de usuarioCHGUSRPRF USRPRF(X) STATUS(*DISABLED)
DLTUSRPRFEliminar perfil de usuarioDLTUSRPRF USRPRF(OLDUSER) OWNOBJOPT(*CHGOWN)
DSPUSRPRFMostrar detalle del perfilDSPUSRPRF USRPRF(MYUSER)
WRKUSRPRFTrabajar con perfiles de usuarioWRKUSRPRF USRPRF(*ALL)
CHGPWDCambiar tu propia contrasenaCHGPWD
GRTOBJAUTOtorgar autoridad sobre objetoGRTOBJAUT OBJ(LIB/X) USER(Y) AUT(*CHANGE)
RVKOBJAUTRevocar autoridad sobre objetoRVKOBJAUT OBJ(LIB/X) USER(Y) AUT(*ALL)
DSPAUTMostrar autoridades de objetoDSPAUT OBJ(MYLIB/CUSTMAST)
CHGAUTCambiar autoridades en IFSCHGAUT OBJ('/home/x') DTAAUT(*RWX)
DSPAUDJRNEMostrar journal de auditoriaDSPAUDJRNE JRN(QSYS/QAUDJRN)
CHGSYSVAL QSECURITYCambiar nivel de seguridad (20-50)CHGSYSVAL SYSVAL(QSECURITY) VALUE('40')

Impresion y spool

ComandoDescripcionEjemplo
WRKSPLFTrabajar con tus spool filesWRKSPLF
WRKSPLF SELECT(usr)Spool files de otro usuarioWRKSPLF SELECT(BATCHUSR)
WRKOUTQTrabajar con colas de salidaWRKOUTQ OUTQ(QPRINT)
WRKWTRVer impresoras (writers) activasWRKWTR
STRPRTWTRIniciar writer de impresoraSTRPRTWTR DEV(PRT01) OUTQ(QPRINT)
ENDWTRDetener writer de impresoraENDWTR WTR(PRT01) OPTION(*CNTRLD)
DSPSPLFVer contenido de spool fileDSPSPLF FILE(QPJOBLOG) JOB(*)
CPYSPLFCopiar spool a archivo IFSCPYSPLF FILE(RPT01) TOFILE(*TOSTMF) TOSTMF('/x.txt')
DLTSPLFEliminar spool fileDLTSPLF FILE(RPT01) JOB(*)
CHGSPLFACambiar atributos de spool fileCHGSPLFA FILE(RPT01) OUTQ(NEWOUTQ)
OVRPRTFOverride de archivo de impresionOVRPRTF FILE(QSYSPRT) COPIES(3)

Desarrollo y compilacion

ComandoDescripcionEjemplo
STRSEUEditor de fuentes (SEU - legacy)STRSEU SRCFILE(MYLIB/QRPGLESRC) SRCMBR(MYPGM)
CRTRPGMODCompilar modulo RPG IVCRTRPGMOD MODULE(MYLIB/MYMOD) SRCFILE(MYLIB/QRPGLESRC)
CRTBNDRPGCompilar programa RPG IV (bind)CRTBNDRPG PGM(MYLIB/MYPGM) SRCFILE(MYLIB/QRPGLESRC)
CRTSQLRPGICompilar RPG con SQL embebidoCRTSQLRPGI OBJ(MYLIB/MYPGM) SRCFILE(MYLIB/QRPGLESRC)
CRTBNDCLCompilar programa CLCRTBNDCL PGM(MYLIB/MYCLPGM) SRCFILE(MYLIB/QCLSRC)
CRTSRVPGMCrear service programCRTSRVPGM SRVPGM(MYLIB/MYSVC) MODULE(MYLIB/MOD1)
CRTPGMCrear programa ILE (link modules)CRTPGM PGM(MYLIB/MYPGM) MODULE(MOD1 MOD2)
CALLEjecutar un programaCALL PGM(MYLIB/MYPGM) PARM('param1')
STRDBGIniciar debug interactivoSTRDBG PGM(MYLIB/MYPGM)
ENDDBGTerminar sesion de debugENDDBG
DSPPGMREFMostrar archivos que usa un programaDSPPGMREF PGM(MYLIB/MYPGM)
FNDSTRPDMBuscar texto en miembros fuenteFNDSTRPDM STRING('CUSTMAST') FILE(MYLIB/QRPGLESRC)
STRSQLIniciar SQL interactivoSTRSQL
RUNSQLSTMEjecutar script SQL desde archivoRUNSQLSTM SRCSTMF('/home/scripts/x.sql')
CL — Flujo tipico de compilacion
-- 1. Editar fuente (o desde VS Code / RDi)
STRSEU SRCFILE(MYLIB/QRPGLESRC) SRCMBR(CUSTINQ)
       TYPE(RPGLE) OPTION(2)  -- 2 = edit

-- 2. Compilar RPG con SQL embebido
CRTSQLRPGI OBJ(MYLIB/CUSTINQ)
           SRCFILE(MYLIB/QRPGLESRC)
           SRCMBR(CUSTINQ)
           COMMIT(*NONE)
           OBJTYPE(*PGM)
           DBGVIEW(*SOURCE)

-- 3. Si hay errores, ver el spool de compilacion
WRKSPLF
  -- Buscar spool file del compilador

-- 4. Ejecutar
CALL PGM(MYLIB/CUSTINQ)

-- 5. Debug si algo falla
STRDBG PGM(MYLIB/CUSTINQ)
  -- F6 para agregar breakpoints
  -- F10 para step over
  -- F11 para ver variables
Desarrollo moderno: Hoy la mayoria de los desarrolladores usan VS Code + Code for IBM i en lugar de SEU. Esto permite editar, compilar, debuggear y gestionar fuentes desde un IDE moderno con syntax highlighting, Git integration y terminal integrada.