CLIST

lenguaje de programación

CLIST (Command LIST) (pronunciado «C-LIST») es un lenguaje de programación procedural para TSO en sistemas MVS. Se originó en OS/360 Release 20 y ha asumido un papel secundario desde la disponibilidad de REXX en TSO/E versión 2.

En su forma básica, un programa CLIST (o «CLIST» para abreviar) puede tomar la forma de una simple lista de comandos para ser ejecutados en estricta secuencia (como un archivo batch de DOS (archivo *.bat). Sin embargo, CLIST también incluye lógica de control If-Then-Else, así como construcciones de bucle (loops).

CLIST es un lenguaje de programación interpretado. Es decir, el equipo debe traducir un CLIST cada vez que se ejecuta el programa. Por lo tanto los programas en CLIST tienden a ser más lentos que los programas escritos en lenguajes compilados como COBOL, FORTRAN o PL/1. (Un programa escrito en un lenguaje compilado se traduce sola vez para crear un «módulo de carga» o ejecutable.)

CLIST puede leer/escribir archivos MVS y leer/escribir desde y hacia una terminal TSO. Puede leer los parámetros de llamadas y también incluye una función para guardar las variables globales y pasarlas entre CLISTs. Un CLIST también puede llamar a un programa de aplicación MVS (escrito en COBOL o PL/1, por ejemplo). CLISTs se pueden ejecutar en segundo plano (mediante la ejecución del JCL que ejecuta el programa de control TSO (IKJEFT01)). Las pantallas TSO I/O y menús que usan servicios de diálogo ISPF pueden visualizarse en CLISTs.

Comparar la función de CLIST con la proporcionada por REXX.

Ejemplos de programas:

PROC 0
WRITE HELLO WORLD!

Añadiendo lógica If-Then-Else:

  /********************************************************************/
  /*  MULTI-LINGUAL "HELLO WORLD" PROGRAM.                            */
  /*                                                                  */
  /*  THIS CLIST, STORED AS USERID.TSO.CLIST(TEST), CAN BE INVOKED    */
  /*  FROM THE ISPF COMMAND LINE AS SHOWN IN THE FOLLOWING EXAMPLE:   */
  /*                                                                  */
  /*     COMMAND ===> TSO TEST SPANISH                                */
  /*                                                                  */
  /********************************************************************/
  PROC 1 LANGUAGE
    IF &LANGUAGE = SPANISH THEN +
       WRITE HOLA, MUNDO
    ELSE IF &LANGUAGE = FRENCH THEN +
       WRITE BONJOUR, MONDE
    ELSE +
       WRITE HELLO, WORLD
  EXIT

Nota: Aquí PROC es tratado como una rutina separada.