El Control Language ( CL ) es un lenguaje de secuencias de comandos creado originalmente por IBM para System / 38 Control Program Facility [1] y utilizado posteriormente en OS / 400 (ahora conocido como IBM i). Se parece al lenguaje de control de trabajos de IBM y consta de un conjunto de objetos de comando (* CMD) que se utilizan para invocar programas tradicionales u obtener ayuda sobre lo que hacen esos programas. CL también se puede utilizar para crear programas CL (congruentes con los scripts de shell ) donde hay comandos adicionales que proporcionan una funcionalidad similar a la de un programa (IF / ELSE, declaración de variable , entrada de archivo, etc.)
Paradigma | imperativo |
---|---|
Diseñada por | IBM |
Desarrollador | IBM |
Apareció por primera vez | 1978 |
SO | Instalación del programa de control , IBM i |
Licencia | Propiedad |
Influenciado por | |
Lenguaje de control de trabajos , PL / I | |
Influenciado | |
Windows PowerShell |
Aunque CL es un lenguaje de secuencias de comandos para la administración de sistemas, se utiliza principalmente para crear programas compilados. El uso de scripts CL interpretados a través del comando SBMDBJOB [2] es de hecho extremadamente limitado.
Si bien los desarrolladores de IBM escribieron miles de comandos para realizar tareas a nivel del sistema, como compilar programas, realizar copias de seguridad de datos, cambiar configuraciones del sistema, mostrar detalles de objetos del sistema o eliminarlos, los comandos no se limitan a preocupaciones a nivel de sistemas y pueden redactarse para aplicaciones de usuario. también.
Comandos y programas
Los parámetros ( argumentos de la línea de comandos ) definidos en los procedimientos principales de todos los programas tradicionales de System / 38 y AS / 400 son listas codificadas que se componen de parámetros que pueden ser numéricos, alfanuméricos, booleanos, etc. y el orden en que los parámetros se pasan es importante. Esta es una gran diferencia con los mundos Unix y DOS, donde la lista de parámetros en los scripts de shell de Unix y los programas C es un conjunto o matriz de punteros de caracteres y la mayoría de las veces los parámetros no dependen de la posición.
La solución del desarrollador a este problema fue el objeto de comando (* CMD). Si bien los parámetros del comando se pueden especificar en cualquier orden, cada parámetro está definido para pasar en un orden específico al programa. El programador también puede definir, entre otras cosas, el tipo de datos del parámetro, el nombre único del parámetro, el texto descriptivo (para solicitar), el valor predeterminado (se usa solo si el parámetro no se especifica durante la ejecución), si los valores están restringidos a un determinado conjunto o rango, si los datos ingresados deben cambiarse a otro valor antes de llamar al programa, etc.
En su forma más básica, un comando nombra un solo programa para llamar cuando el usuario escribe o solicita el comando y presiona la tecla Enter. El comando toma todos los parámetros ingresados por el usuario y los que no ingresó, y construye una lista de parámetros que pasa al programa cuando es llamado.
Sintaxis
El BNF para una sintaxis de comando CL mucho más simplificada se definiría de la siguiente manera:
< Comando-CL > :: = nombre-comando [ < lista-de-parámetros-posicionales > ] [ < lista-de-parámetros-nombrados > ] < lista-parámetro-posicional > :: = < valor-parámetro > [ < lista-parámetro-posicional > ] < lista-de-parámetros-con -nombre > :: = nombre-de-parámetro "(" < lista-de-elementos-de-parámetros > ")" [ < lista-de-parámetros-con-nombre > ] < lista de elementos de parámetro > :: = < valor de parámetro > [ < lista de elementos de parámetro > ] < valor-parámetro > :: = nombre-CL | nombre-CL-calificado | "*" valor-especial | nombre-CL-genérico "*" | "'" valor-alfanumérico "'" | valor-numérico | "X '" valor hexadecimal "'"
Los elementos anteriores que terminan en -name siguen las convenciones de nomenclatura de objetos que, en términos generales, significa que el nombre comienza con una letra y puede tener hasta diez caracteres de longitud. (Los comandos CL tampoco distinguen entre mayúsculas y minúsculas).
Un buen ejemplo de un comando CL típico es el comando Cambiar programa (CHGPGM) a continuación:
CHGPGM MYPGM OPTIMIZE (* FULL) RMVOBS (* BLKORD * PRCORD) TEXT ('Mi programa')
El comando anterior pasa cuatro parámetros al programa que realiza el procesamiento de Cambio de programa y son:
- MYPGM: un parámetro posicional (PGM) y el único parámetro obligatorio. En este caso, es el nombre del programa que se cambia. Los parámetros posicionales son siempre los primeros. Una vez que aparece un parámetro con nombre, todos los parámetros que siguen deben denominarse parámetros.
- OPTIMIZE (* FULL): Un parámetro con nombre que especifica un solo elemento que es un valor especial. En este caso, cambiará el programa para que esté completamente optimizado.
- RMVOBS (* BLKORD * PRCORD): Un parámetro con nombre (Eliminar observabilidad) que especifica varios valores especiales. En este caso, indicarle que elimine dos tipos de datos de creación de perfiles del programa.
- TEXT ('Mi programa.'): Otro parámetro con nombre que especifica un solo valor alfanumérico. En este caso está cambiando el texto descriptivo del programa.
En realidad, el sistema pasará muchos más parámetros que los cuatro especificados anteriormente. Esto se debe a que el resto de los parámetros del comando CHGPGM no se especificaron, por lo que en su lugar se pasarán los valores predeterminados. Para cada parámetro en esto, aparte del parámetro PGM, el valor predeterminado es * SAME , lo que significa que no lo cambie.
Incitación
Todos los comandos CL se pueden solicitar directamente desde la línea de comandos o dentro de la fuente del programa CL escribiendo el comando y presionando la tecla de función F4 . También se puede solicitar un mandato de OS / 400 escribiendo un? antes del comando. (Esto es útil en un programa interactivo que indica una cadena de comando, habiendo ya completado algunos valores).
El sistema luego presentará una pantalla con el conjunto de parámetros que el programa acepta / requiere (los parámetros requeridos generalmente están resaltados).
Los parámetros requeridos se enumeran en primer lugar y los parámetros con valores predeterminados proporcionados por el sistema se enumeran al final. Para ver todos los parámetros, presione F10. Si alguna opción requiere más selecciones, estas se indican a medida que selecciona ese valor para ese parámetro, apareciendo en la pantalla.
Las indicaciones se mejoran aún más para permitir al programador encontrar qué valores son válidos para cada parámetro. Para hacer esto durante la indicación, el usuario movería el cursor al campo del parámetro en cuestión y presionaría F4 nuevamente. El sistema luego mostraría una pantalla que describe el tipo de entrada requerida y una lista disponible de valores permitidos.
Para ingresar un nombre más largo o extender la lista para permitirle ingresar valores adicionales, ingrese un signo más en lugar de un valor. (Como cuando se enumeran los nombres de los objetos que se van a guardar o restaurar).
Ayuda de comando
También se puede proporcionar ayuda sensible al cursor en los comandos, pero no es necesaria. Si se ha proporcionado ayuda, se puede ver la ayuda de un parámetro moviendo el cursor al campo de parámetro deseado y presionando F1 (ayuda). Para obtener ayuda para todo el comando en sí (y todos sus parámetros), el usuario debe presionar F1 en cualquier lugar de la pantalla del indicador y luego presionar F2 (ayuda extendida).
Creando nuevos comandos
Se pueden crear nuevos comandos para llamar a programas que no son del sistema y funcionarán exactamente como la variedad incorporada. El lenguaje de definición de comandos se describe en la Guía del programador de CL .
Es una buena idea crear pantallas de ayuda para nuevos comandos y sus parámetros. Todas las pantallas de ayuda utilizan objetos de grupo de paneles (* PNLGRP) y estos se pueden crear utilizando el lenguaje UIM descrito en el manual de programación de visualización de aplicaciones IBM AS / 400 .
A partir de la V5R3 del sistema operativo, se agregó un método nuevo y mucho más simple para crear ayuda: ejecute el comando
GENCMDDOC CMD (MYLIB / MYCMD) TODIR ('/ QSYS.LIB / MYLIB.LIB / QPNLSRC.FILE) GENOPT (* UIM)
Se generará automáticamente un grupo de paneles de UIM esqueleto que incluye todos los parámetros descritos por el comando. El archivo de resultados puede editarse (seu, wdsc, rdi), luego compilarse con el comando CRTPNLGRP y finalmente asociarse con el comando a través de CHGCMD HLPPNLGRP ().
Encontrar el comando correcto
Hay 2262 comandos de IBM incorporados contenidos en V7R3, [3] pero encontrarlos no es tan difícil debido a varios diseños del sistema que hacen la vida más fácil. Estos diseños que ahorran trabajo son: abreviaturas estandarizadas, menús de agrupación de comandos y selección de comandos.
Abreviaturas estandarizadas
Los desarrolladores de IBM estandarizaron las abreviaturas utilizadas para crear nombres de comandos. Los verbos como cambiar siempre se representan como CHG , se muestran como DSP , funcionan como WRK , crean como CRT , etc. Los temas como el programa son siempre PGM , el usuario es USR , el módulo es MOD , el servidor es SVR , etc. y el tema usado en el sistema en los menús VERBO y SUJETO , simplemente ingrese los comandos GO VERB o GO SUBJECT.
Del mismo modo, "Programación del lenguaje de control" se abrevió CLP y, en consecuencia, el tipo de fuente fue CLP. Con la introducción del modelo de programación ILE, el tipo de fuente se cambió a "CLLE". [4]
Los menús VERBO y SUJETO son parte de los llamados menús de agrupación de comandos. Por cada abreviatura de tres (o cuatro) letras, hay un menú dedicado que comienza con las letras CMD . Entonces, para ver todos los comandos CHG , el usuario debería ejecutar el comando GO CMDCHG. Para los comandos del programa , el menú sería CMDPGM.
Hay otros menús además de los menús de agrupación de comandos. Se puede acceder al punto de inicio del sistema de menús presionando F4 en una línea de comando vacía .
Selección de comando
Si solo conoce una parte de un comando o si se utiliza software de terceros donde los comandos no cumplen con el estándar de abreviatura AS / 400, entonces debe ingresar esa parte del comando que se conoce, adjuntar un asterisco (para hacerlo genérico) y presione enter. A continuación, el sistema mostrará una lista de comandos en la lista de la biblioteca del trabajo que coinciden con los nombres genéricos que acaba de escribir. Luego, se puede hojear la lista buscando el comando necesario y luego seleccionarlo usando la opción 1.
En segundo plano, el sistema está utilizando el comando SLTCMD para realizar esta función. Si uno quiere seleccionar todos los comandos en una biblioteca , solicite este comando e ingrese el valor especial * TODOS.
Código de muestra
El siguiente es un ejemplo de programación CL. El programa convierte de forma interactiva las fechas de Julian a MDY y viceversa. Los resultados se muestran en la línea 24 del terminal. Acepta dos parámetros. El &IN
parámetro que es la cadena de fecha que se va a convertir. Si es una cadena juliana, debe tener el formato YYNNN, donde YY es el número de año y NNN es el número de día del año. Si es una cadena MDY, debe tener el formato MMDDAA. El segundo parámetro es &TYP
cuál es el tipo de fecha a la que se va a convertir. Debe ser 'J' (Julian) o 'M' (MDY). Por ejemplo: el comando CALL PGM(ICVTDATC) PARM('04180' 'M')
convertirá la fecha juliana 04180 a 062804 (28 de junio de 2004).
PGM (& IN & TYP) DCL & IN * CHAR 6 DCL Y SALIDA * CHAR 8 DCL Y TYP * CHAR 1 SI (& TYP = J) + HACER CVTDAT FECHA (Y ENTRADA) TOVAR (Y SALIDA) DESDE FMT (* MDY) + TOFMT (* JUL) TOSEP (* NINGUNO) ENDDO ELSE IF (& TYP = M) + HACER CVTDAT FECHA (Y ENTRADA) TOVAR (Y SALIDA) DESDE FMT (* JUL) + TOFMT (* MDY) TOSEP (* NINGUNO) ENDDO SNDPGMMSG MSG ('IN =' || & IN || 'OUT =' || & OUT) + MSGTYPE (* COMP)ENDPGM
Ver también
Referencias
- ^ "IBM System / 38 Control Language Reference Manual" (PDF) . IBM. 1982-09-10 . Consultado el 24 de marzo de 2021 .
- ^ itjungle.com
- ^ IBM.com
- ^ Meyers, Bryan (1997). Programación del Lenguaje de Control para el AS / 400 (2ª Edición) . Prensa de la calle 29. ISBN 9781882419760.