El REXX (ejecutor extendido reestructurado) es un interpretado de la computadora del que programa la lengua del que fue desarrollada en el IBM . Es un lenguaje el de programación de alto nivel estructurado que fue diseñado para ser fácil de aprender y fácil leer. Los intérpretes de la fuente abierta del anuncio publicitario y para REXX están disponibles en una amplia gama de computar las plataformas, y los recopiladores están disponibles para las unidades centrales de IBM.

Características

REXX tiene las características y las características siguientes:
base de la serie de caracteres
datos dinámicos que mecanografían (ningunas declaraciones)
ningunas palabras claves reservadas (excepto en contexto local)
precisión numérica arbitraria
aritmética decimal ( flotante)
una selección rica de las funciones incorporadas (especialmente secuencia y procesamiento de textos)
gestión de la memoria externa automática
protección del desplome
Órdenes asociativos * acceso directo a los comandos y a las instalaciones de sistema
error-dirección simple, y trazo y depuración incorporados
pocas limitaciones artificiales
instalaciones simplificadas de la entrada-salida.

REXX tiene apenas veintitrés, en gran parte evidente en sí, instrucciones (el e., llamada, del analiza, y el selecto) con requisitos mínimos de la puntuación y del formato. Casi es esencialmente una lengua Free-form con solamente un dato-tipo, la serie de caracteres; esta filosofía significa que todos los datos es visible (simbólico) y se simplifican el depuración y el trazo.

El sintaxis de REXX parece similar al PL/I, pero tiene pocas notaciones; esto hace más duro analizar (por programa) pero más fácil utilizar.

Historia

REXX fue diseñado y primero ejecutado, en el de lenguaje de ensamblaje, como proyecto de propio-tiempo del `' entre el 1979 del 20 de marzo y el mid-1982 por el Mike Cowlishaw de IBM, como lenguaje de programación Scripting para substituir original el EXEC de las idiomas y el EXEC 2 . Fue diseñado para ser una macro o lengua scripting para cualquier sistema. Como tal, REXX se considera un precursor al Tcl y al pitón .

Primero fue descrito en público en la conferencia de la PARTE 56 en Houston, Tejas, en 1981, donde la reacción del cliente, defendida por Ted Johnston SLAC, llevó a ella siendo enviado como producto de IBM en 1982.

Durante los años IBM REXX incluido en casi todos sus sistemas operativos ( VM/CMS, VM/GCS, MVS TSO/E, AS/400, VSE/ESA, AIX, CICS/ESA, PC-DOS, y OS/2 ), y ha hecho versiones disponibles para el Novell NetWare, el Windows, el Java, y el linux .

La primera versión fuera de IBM fue escrita para el PC-DOS por Charles Daney en 1984/5. Otras versiones también se han desarrollado para el Atari, el Amiga, el Unix (muchas variantes), el Solaris, DEC, el Windows, el Windows CE, el PocketPC, el MS-DOS, el Palm OS, el QNX, el OS/2, el linux, el BeOS, el EPOC32, el AtheOS, el OpenVMS, el OpenEdition, el Macintosh, y el mac OS x .

La versión de Amiga de Rexx, llamada ARexx fue incluida con AmigaOS 2 hacia adelante y era popular para scripting así como control del uso. Muchos usos de Amiga tienen " Ports" de ARexx; incorporado a ellos cuál permite el control del uso vía una escritura definida por el usario.

Varias versiones del freeware de Rexx están disponibles. En 1992, los dos puertos más ampliamente utilizados de la Abrir-fuente aparecieron: REXX/imc del minero de Ian para Unix y Regina de Anders Christensen (adoptada más adelante por Mark Hessling) para Windows y el linux. BREXX es bien sabido para las plataformas de la mueca de dolor y de PocketPC.

En el ANSI 1996 publicó un estándar para REXX: ANSI X3.274– 1996 “tecnologías de la información - lenguaje de programación REXX”. Más de dos libros docena en REXX se han publicado desde el 1985 .

Desde el mediados de los 90, dos más nuevas variantes de REXX han aparecido:
NetRexx - que del

compila al Octeto-código de Java vía el código fuente de Java; esto no tiene ninguna palabra clave reservada en absoluto, y utiliza el modelo de objeto de Java, y es por lo tanto no generalmente hacia arriba-compatible con el `' REXX clásico.
Objeto Rexx - que es una versión generalmente hacia arriba-compatible orientada al objeto de REXX.

En el 1990, Cathy Dager de SLAC organizó el primer simposio independiente de REXX, que llevó a la formación de la asociación de la lengua de REXX. Los simposios se llevan a cabo anualmente.

Rexx marcó su aniversario 25th en el 2004 del 20 de marzo, que fue celebrado en el simposio internacional en Böblingen, Alemania de 15th REXX de REXX de la asociación de la lengua, en mayo de 2004.

El 12 de octubre de 2004, IBM anunció su plan para lanzar su puesta en práctica de Rexx del objeto debajo de la licencia pública común .

El 22 de febrero de 2005, el primer lanzamiento público del objeto abierto Rexx (ooRexx) fue anunciado.

Deletreo

En texto llano, Cowlishaw parece preferir Rexx, mientras que los documentos de IBM y la mayoría de las aplicaciones REXX de la tela. El estándar del ANSI utiliza la forma preferred por el comité de la estandardización, que tiene pequeños capitales para las tres letras finales: REXX. Este estilo también se utiliza en las páginas de cubierta del " El Rexx Language" TRL y " El NetRexx Language" escrito por Michael Cowlishaw. Original acaba de ser llamado " Rex" porque el autor tuvo gusto de cómo sonaba, el " adicional; x" fue agregado para evitar colisiones con otros nombres de productos. La extensión de Rexx al con referencia a estructuró ecutor tendido del x del de E del x del de E es un Bacronym .

Sintaxis

Colocación

La estructura de control del lazo en Rexx comienza con un HACE y extremos con un EXTREMO pero viene en varias variedades. NetRexx utiliza el LAZO de la palabra clave en vez de HACE para colocar, mientras que el LAZO de los convites del ooRexx y el HACEN como equivalente al colocar.

Formas tradicionales: el hace el de hasta extremo

el hace el de mientras que extremo

Con una variable de índice: el hace el i de = el x '' y '' '' z '' extremo

El incremento del paso ( z arriba) se puede omitir y los defectos a 1. El límite superior ( y arriba) puede también ser omitido, que hace que el lazo continúa por siempre. Usted puede también colocar por siempre sin una variable de índice con esto: el hace el por siempre de extremo

Un programa puede explotar de la cresta de corriente con la instrucción de la licencia (que es la manera normal de salir un " forever" el lazo), o puede cortocircuitos lo con el itera la instrucción de . El hace mientras que hacen y el hasta que las formas de sean equivalentes a: el hace el por siempre de si licencia del entonces de extremo y: el hace el por siempre de si licencia del entonces de extremo

Conditionals

Condiciones de prueba con el SI

si entonces de el hace extremo otro el hace extremo

Para las solas instrucciones, el HACE y el EXTREMO puede también ser omitido:

si entonces de otro

Prueba para las condiciones múltiples

El SELECTO es estructura del CASO de REXX, como muchas otras construcciones derivadas PL/I : selecto cuando entonces de cuando entonces de el hace extremo de otra manera o NOP extremo

El NOP indica que no hay instrucción ser ejecutada.

Variables simples

Las variables en REXX son typeless, y se evalúan inicialmente como sus nombres, en mayúscula. Así el tipo del de una variable puede variar con su uso en el programa:

decir hola el => de/*; HOLA * hola = 25 decir hola el => de/*; 25 * hola = " decir 5 + 3" decir hola el => de/*; decir 5 + 3 * interpretar hola el => de/*; 8 * gota hola decir hola el => de/*; HOLA *

Variables compuestas

Desemejante de muchos otros lenguajes de programación, REXX clásico no tiene ninguna ayuda directa para los órdenes de variables tratadas por un índice numérico. En lugar proporciona las variables compuestas . Una variable compuesta consiste en un vástago seguido por una cola. (punto) se utiliza para ensamblar el vástago a la cola. Si las colas usadas son numéricas, es fácil producir el mismo efecto que un arsenal.

el hace el de i = 1 a 10 stem.i = 10 - i extremo

Las variables siguientes con los valores siguientes existen luego: stem.3 = 7…

Desemejante de órdenes, el índice para una variable del vástago no se requiere para tener un valor de número entero. Por ejemplo, el código siguiente es válido: i = “lunes” stem.i = 2

En Rexx es también posible fijar un valor prefijado para un vástago. = “desconocido” stem.44 = “Reino Unido” stem.33 = “Francia”

Después de estas asignaciones el término stem.3 produciría 'Unknown'.

El vástago entero se puede también borrar con la declaración de la GOTA. vástago de la gota.

Esto también tiene el efecto de quitar cualquier valor prefijado fijado previamente.

Por la convención (y no como parte de la lengua) el stem.0 compuesto es de uso frecuente no perder de vista cuántos artículos están en un vástago, por ejemplo un procedimiento para agregar una palabra a una lista se pudo cifrar como esto: add_word: diccionario de la exposición del procedimiento. analizar el arg w n = dictionary.0 = n vuelta

Es también posible tener elementos múltiples en la cola de una variable compuesta. Por ejemplo: m = “julio” d = 15 y = 2005 day.d = “viernes”

Los elementos numéricos múltiples de la cola se pueden utilizar para proporcionar el efecto de una matriz multidimensional.

Las características similares a las variables compuestas de Rexx se encuentran en muchas otras idiomas (los órdenes asociativos “en el AWK, de desmenuzan ” en Perl, las tablas de elección arbitraria del en el Java, el etc ). La mayor parte de estas idiomas proporcionan una instrucción de iterar sobre todas las llaves (o las colas del en los términos de Rexx) de tal construcción, pero ésta está careciendo en Rexx clásico. En lugar es necesario guardar listas auxiliares de valores de la cola como apropiado. Por ejemplo en un programa para contar palabras el procedimiento siguiente se pudo utilizar para registrar cada ocurrencia de una palabra. add_word: cuenta de la exposición del procedimiento. word_list analizar el arg W.w + 1/* asumen cuenta. se ha fijado a 0 * si count.w = 1 word_list del entonces = word_list w vuelta

y entonces más adelante el hace el de i = 1 a las palabras de (el word_list) w = palabra (word_list, i) decir w count.w extremo

En el coste de una cierta opacidad es posible combinar estas técnicas en un solo vástago. add_word: diccionario de la exposición del procedimiento.w = 1/* asumen el diccionario. = 0 * el entonces hace n = dictionary.0 = n extremo de vuelta y más adelante el hace el de i = 1 a dictionary.i decir i w dictionary.w extremo No obstante Rexx no proporciona ninguna red de seguridad aquí, así que si una de sus palabras sucede ser un número entero menos que dictionary.0 que la técnica antedicha fallará misterioso.

Las puestas en práctica recientes de Rexx, incluyen objeto Rexx de s de IBM 'y las puestas en práctica de la fuente abierta como el ooRexx incluye nuevo una construcción de lengua para simplificar la iteración sobre el valor de un vástago, o sobre otro objeto de la colección tal como un arsenal, una tabla, una lista, un etc. el hace el de i sobre vástago de . decir i “-->” stem.i extremo

Instrucciones de la palabra clave

ANALIZAR

El ANALIZA la instrucción de es particularmente de gran alcance; combina algunas funciones de secuencia-dirección útiles. Su sintaxis es:

el analiza la plantilla del origen del de

donde el origen del especifica la fuente:
arg (discusiones, cola en la parte superior llana del de línea de comando)
linein (entrada estándar, e. teclado) del
tirón (coleta de los datos de REXX o entrada estándar) del
fuente (Info del en cómo el programa fue ejecutado)
del valor (una expresión) del con
: el de la palabra clave con se requiere para indicar donde la expresión termina
var (una variable)
versión (versión del /número de lanzamiento)

y la plantilla del puede ser:
lista de variables
delimitadores del número de columna
delimitadores literales

el superior es opcional; si usted lo especifica, los datos serán convertidos al mayúscula.

Ejemplos:

Usar una lista de variables como plantilla

myVar = " Juan Smith" analizar el lastName myVar del firstName del var decir el " El nombre es: " firstName decir el " El apellido es: " lastName

exhibe el siguiente:

El nombre es: Juan El apellido es: Smith

Usar un delimitador como plantilla:

myVar = " Smith, John" analizar el " myVar del var LastName;, " FirstName decir el " El nombre es: " firstName decir el " El apellido es: " lastName

también exhibe el siguiente:

El nombre es: Juan El apellido es: Smith

Usar delimitadores del número de columna:

myVar = " (202) 123-1234" analizar var MyVar 2 AreaCode 5 7 SubNumber decir el " El código de área es: " AreaCode decir el " El número del suscriptor es: " SubNumber

exhibe el siguiente:

El código de área es: 202 El número del suscriptor es: 123-1234

Una plantilla puede utilizar una combinación de variables, de delimitadores literales, y de delimitadores del número de columna.

INTERPRETAR

La instrucción de la INTERPRETACIÓN es muy de gran alcance y una de las dos razones por las que la escritura de recopiladores de REXX no es trivial, la otra razón que es aritmética arbitraria decimal de la precisión de REXX:

/* un tacto de lisp * X = “cuadrado” interpretar “dicen” X || “(4); salir” CUADRADO: arg de vuelta (1) * arg (1)

Esto exhibe 16 y sale. Porque cualquier cosa en REXX es secuencias, incluso números racionales con los exponentes, y por 3ultimo programas completos, REXX ofrece interpretar secuencias como programas.

Esta característica fue utilizada para ejecutar algo como los parámetros de la función del, e. pasando PECADO, LECHUGA ROMANA, el etc. a un procedimiento SIMPSON para calcular integrales.

Observar que REXX ofrece solamente funciones básicas de la matemáticas como los ABS, los DÍGITOS, el max, el MINUTO, la MUESTRA, AL AZAR, y un sistema completo del maleficio más conversiones binarias con operaciones del pedacito. Todo lo demás como PECADO tiene que ser ejecutada de rasguño o de usar las bibliotecas externas . Estes 3ultimo no apoyan típicamente la precisión arbitraria.

Construcciones (no-clásicas) posteriores del CALL variable de la ayuda de las versiones. Junto con la función incorporada VALUE, la LLAMADA permite evitar muchos casos de INTERPRET. Esto es un programa clásico:

/* terminó por el " de la entrada; exit" o similar * hacer por siempre; interpretar el linein (); extremo

Una calculadora levemente más sofisticada del REXX:

X = “ADIÓS entrado a parar” hace hasta X = “ADIÓS”; interpretar “dicen” X; tirar de X; extremo

el TIRÓN es una taquigrafía para el analiza el tirón superior como el ARG para el analiza el arg superior .

NUMÉRICO

decir el => de la forma de la pelusa de los dígitos () () ()/*; 9 0 CIENTÍFICOS * decir 999999999 + 1 => de/*; 1.000000000E+9 * dígitos numéricos 10/* limitados solamente por memoria disponible * decir 999999999 + 1 => de/*; 1000000000 *

decir 0.9999999999 = 1 => de/*; 0 (falso) * pelusa numérica 3 decir 0.99999999 = 1 => de/*; 1 (verdad) * decir 0.99999999 => del == 1/*; 0 (falso) *

decir el => de 100 * 123456789/*; 1.23456789E+10 * ingeniería numérica de la forma decir el => de 100 * 123456789/*; 12.34567890E+9 *

SEÑAL

La instrucción de la SEÑAL de REXX se piensa para los cambios anormales en el flujo de control (véase la sección siguiente). Sin embargo, puede ser empleada mal y ser tratada como la declaración INDICADA encontrada en otras idiomas (aunque no es terminantemente equivalente, porque termina lazos y otro las construcciones). Esto puede producir difícil leer código.

Tratamiento y excepciones de errores

Es posible en REXX interceptar y ocuparse de errores y de otras excepciones, usar la instrucción de la SEÑAL. Hay siete condiciones sistema: ERROR, FALTA, ALTO, NOVALUE, NOTREADY, LOSTDIGITS y SINTAXIS. La dirección de cada uno se puede cambiar por intervalos en el código fuente según lo deseado.

Este ejemplo funcionará hasta parado por el usuario: señal del en el alto ; el hace a = 1 decir a el hace 100000/* un retardo * extremo extremo alto : decir el " El programa fue parado por el user" salida

Virtualmente todos los programas serios de REXX contienen signal en novalue o una declaración similar. Esto inhabilita el " feature", donde las variables indefinidas consiguen a sus los propios nombre (del mayúscula) como valor. El estado de una variable se puede comprobar con la función incorporada SYMBOL que vuelve el VAR para saber si hay variables definidas.

La función VALUE se puede utilizar para conseguir el valor de variables sin accionar una condición de NOVALUE, pero su propósito principal es leer y fijar variables del ambiente - similares al getenv POSIX y al putenv .

Condiciones

Ver también

ARexx - el intérprete nativo de REXX AmigaOS
XEDIT - editores de textos con la ayuda nativa de REXX
La comparación de la computadora descasca
Comparación de los lenguajes de programación

.

  • Zenithic
  • REXX
    Random links:Cura | Jean Erdman, barón Dieskau | Carlisle (distrito electoral BRITÁNICO del parlamento) | Uso de Babylon 5 del Internet | Instrumentación (música)

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">