Los comandos CL (Control Language) mas utilizados organizados por categoria. Nomenclatura, sintaxis, parametros y ejemplos practicos para administracion y operacion de IBM i.
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 objetoDLTDeleteEliminar objetoCHGChangeModificar propiedadesCPYCopyCopiar objeto o datosMOVMoveMover objetoRNMRenameRenombrarSTRStartIniciar proceso o servicioENDEndTerminar proceso o servicioSAVSaveGuardar (backup)RSTRestoreRestaurar desde backupSNDSendEnviar (mensaje, archivo)RTVRetrieveObtener valor en variableSBMSubmitEnviar a ejecucion batchCLLCallEjecutar programaGRTGrantOtorgar permisoRVKRevokeRevocar permisoADDAddAgregar elementoRMVRemoveQuitar elementoObjetos principales
LIBLibraryContenedor de objetos (schema)OBJObjectCualquier objeto genericoF / FILEFileArchivo fisico o logico (tabla)PGMProgramPrograma compiladoSRVPGMService ProgramLibreria compartida ILEMODModuleModulo compilado ILEUSRPRFUser ProfileCuenta de usuarioJOBDJob DescriptionConfiguracion de jobSBSDSubsystem DescriptionConfiguracion de subsistemaDTAQData QueueCola de datos (IPC)DTAARAData AreaVariable global persistenteMSGQMessage QueueCola de mensajesOUTQOutput QueueCola de salida (impresion)SPLFSpool FileArchivo de impresion en colaJRNJournalJournal de auditoria/CDCJRNRCVJournal ReceiverReceptor de journalSYSVALSystem ValueConfiguracion del sistemaLIBLELibrary List EntryEntrada en library listSBSSubsystemInstancia de subsistemaACTJOBActive JobJob activo en ejecucion-- 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 disponiblesWRK* + Enter muestra todos los comandos que empiezan con WRK. Combinado con F4 (prompt), nunca necesitas memorizar parametros.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)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)-- 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"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 actualDSPLIBLEDTLIBLEditar library list interactivamenteEDTLIBLADDLIBLEAgregar 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)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 jobsWRKJOBSCDEADDJOBSCDEProgramar ejecucion de un jobADDJOBSCDE JOB(BACKUP) CMD(...) FRQ(*DAILY) SCDTIME('23:00')STRSBSIniciar subsistemaSTRSBS SBSD(QBATCH)ENDSBSTerminar subsistemaENDSBS SBS(QBATCH) OPTION(*CNTRLD)WRKSBSVer subsistemas activosWRKSBSDSPSBSDMostrar descripcion de subsistemaDSPSBSD SBSD(QBATCH)-- 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)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)DSPSYSSTSWRKDSKSTSEstado de discos (ASP)WRKDSKSTSDSPPTFMostrar PTFs (parches) instaladosDSPPTF LICPGM(5770SS1)WRKPTFGRPTrabajar con grupos de PTFsWRKPTFGRPDSPLOGMostrar log del sistema (QHST)DSPLOG LOG(QHST)DSPNETAMostrar atributos de redDSPNETADSPSYSVAL QDATEFecha del sistemaDSPSYSVAL SYSVAL(QDATE)PWRDWNSYSApagar o reiniciar el sistemaPWRDWNSYS OPTION(*CNTRLD) RESTART(*YES)DSPSYSVAL. Algunos valores requieren IPL (reinicio) para tomar efecto.CFGTCPMenu de configuracion TCP/IPCFGTCPNETSTATEstadisticas de redNETSTAT *CNN / *IFC / *RTEPINGPing 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 *IFCCHGTCPACambiar atributos TCP/IPCHGTCPASTRHOSTSVRIniciar 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')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 contrasenaCHGPWDGRTOBJAUTOtorgar 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')WRKSPLFTrabajar con tus spool filesWRKSPLFWRKSPLF SELECT(usr)Spool files de otro usuarioWRKSPLF SELECT(BATCHUSR)WRKOUTQTrabajar con colas de salidaWRKOUTQ OUTQ(QPRINT)WRKWTRVer impresoras (writers) activasWRKWTRSTRPRTWTRIniciar 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)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 debugENDDBGDSPPGMREFMostrar archivos que usa un programaDSPPGMREF PGM(MYLIB/MYPGM)FNDSTRPDMBuscar texto en miembros fuenteFNDSTRPDM STRING('CUSTMAST') FILE(MYLIB/QRPGLESRC)STRSQLIniciar SQL interactivoSTRSQLRUNSQLSTMEjecutar script SQL desde archivoRUNSQLSTM SRCSTMF('/home/scripts/x.sql')-- 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