REXX:

¿Qué es?:
Es un lenguaje de programación estricto y de un número infinito de líneas. No diferencia entre minúsculas y mayúsculas. Cuenta con un sistema orientado a objetos y regina para linux.

Funcionamiento:
Crear un código .rexx, desarrollarlo hasta que esté listo, compilarlo y, entonces, el sistema crea un objeto. A partir de ahí, ese objeto se linkedita y, finalmente, se carga el programa y se almacena. Lo ideal es almacenar datos del programa de REXX en dos librerías: la de la dlibs y la de los exec.

Sentencias útiles:
    1. SAY => para mostrar mensaje en pantalla.
    2. PARSE PULL => para introducir de teclado.
    3. IF....THEN DO
    END
    ELSE DO
    END => para establecer condiciones en un programa.
    4. DO WHILE / DO UNTIL => para establecer bucles con condiciones.
    5. DO FOREVER => para establecer un bucle infinito.
    6. LEAVE => para salir del bucle infinito.
    7. EXIT => para salir del programa.
    8. /* => para abrir un comentario
    9. */ => para cerrar comentario.

Características relevantes:
    1. Todo dato es caracter, ya sea número, especial o letra.
    2. No usar sentencias de REXX como variables.
    3. Las variables como máximo pueden tener 250 caracteres y pueden ser letras, números y caracteres especiales. No pueden empezar con números.
    4. PARSE UPPER PULL significa que lo que se introduce de teclado se pone mayúscula. Si no pones UPPER, lo pone como esté.
    5. Incluye un Data Stack, que es un buffer de memoria. Cabe la posibilidad de tener más de un data stack, pero en general, hay que adaptarse con uno únicamente. En el caso del CMS solo se puede tener un data stack de máximo 255 bytes. Su distribución se basa en hacer PUSH o hacer QUEUE para almacenar elementos, según cómo se quieran almacenar y sacar. PUSH se ordena a través de LIFO (Last In, First Out), donde el último que entra, es el primero que sale. QUEUE se ordena a través de FIFO (First In, First Out), donde el primero que entra, es el primero que sale. Ambas son dos maneras de organizar el buffer o data stack, según el interés particular del usuario o administrador.

Funciones integradas:
  • DATE(): Devuelve la fecha actual.
  • TIME(): Hora actual.
  • LENGTH(cadena): Longitud de una cadena.
  • LEFT(cadena, n): Primeros n caracteres.
  • RIGHT(cadena, n): Últimos n caracteres.
  • SUBSTR(cadena, inicio, longitud): Subcadena.
  • WORDS(cadena): Número de palabras.
  • WORD(cadena, n): Palabra n.
  • WORDPOS(palabra, cadena): Posición de palabra.
  • WORDINDEX(cadena, n): Posición inicial de la palabra n.
  • SUBWORD(cadena, inicio, n): n palabras desde la posición.
  • SPACE(cadena): Normaliza espacios.
  • TRANSLATE(cadena, nuevo, viejo): Sustituye caracteres.
  • POS(subcadena, cadena): Posición de subcadena.
  • OVERLAY(nueva, original, inicio): Reemplaza en posición.
  • INSERT(nueva, original, posición): Inserta texto.
  • DELSTR(cadena, inicio, longitud): Elimina parte.
  • JUSTIFY(cadena, ancho, dirección): Alinea texto.
  • ABBREV(prefijo, cadena): ¿Es prefijo?