Novedades de EGL Versión 6.0

Nota: Si utilizó una versión anterior de EGL para crear una aplicación Web basada en JavaServer Faces, haga lo siguiente en el entorno de trabajo:
  1. Pulse Ayuda > Ayuda de Rational
  2. En el recuadro de texto Buscar del sistema de ayuda, teclee como mínimo los caracteres iniciales de esta serie: Migrar recursos de JavaServer Faces en un proyecto Web
  3. Pulse Ir
  4. Pulse Migrar recursos de JavaServer Faces en un proyecto Web y siga las instrucciones de ese tema
La versión 6.0 aumenta la potencia del lenguaje EGL:
  • El proceso de bases de datos relacionales ha mejorado
    • Asistentes nuevos que permiten llevar a cabo rápidamente lo siguiente:
      • Crear componentes de datos directamente de tablas de bases de datos relacionales
      • Crear aplicaciones Web que crean, leen actualizan y suprimen filas de esas tablas
    • Hay funciones de sistema nuevas disponibles:
      • sysLib.loadTable carga información de un archivo y la inserta en una tabla de base de datos relacional.
      • sysLib.unloadTable descarga información de una tabla de base de datos relacional y la inserta en un archivo.
    • Si está generando código Java puede acceder a filas de base de datos SQL en un cursor navegando a la fila siguiente (como se ha hecho siempre), navegando a la primera o última fila o a la fila anterior o actual o especificando una posición absoluta o relativa en el cursor.
    • La sentencia forEach permite recorrer fácilmente las filas de un conjunto de resultados de SQL.
    • La sentencia freeSQL libera los recursos asociados a una sentencia SQL preparada dinámicamente, cerrando cualquier cursor abierto asociado con esa sentencia SQL.
  • El proceso de series ha mejorado
    • Ahora puede especificar subseries en una expresión de texto como en el ejemplo siguiente:
      myItem01 = "1234567890";
      
      // myItem02 = "567"       
      myItem02 = myItem01[5:7];
    • Puede especificar un retroceso, una avance de hoja o una tabulación en un literal de texto
    • Puede comparar series con dos tipos de patrones:
      • Un patrón de tipo SQL que incluye la palabra clave LIKE. A continuación se ofrece un ejemplo:
        // la variable myVar01 es la expresión de serie
        // cuyo contenido se comparará con un criterio like
        myVar01 = "abcdef";
        
        // la expresión lógica siguiente evalúa a "true"
        if (myVar01 like "a_c%")
          ;
        end
      • Un patrón de expresión regular. A continuación se ofrece un ejemplo:
        // la variable myVar01 es la expresión de serie
        // cuyo contenido se comparará con un criterio match
        myVar01 = "abcdef";
        
        // la expresión lógica siguiente evalúa a "true"
        
        if (myVar01 matches "a?c*")     
          ;
        end
    • Puede utilizar estas funciones de sistema de formato de texto:
      strLib.characterAsInt
      Convierte una serie de caracteres en una serie de enteros
      strLib.clip
      Suprime espacios en blanco finales y nulos del final de las series de caracteres devueltas
      strLib.formatNumber
      Devuelve un número como serie con formato
      strLib.integerAsChar
      Convierte una serie de entero en una serie de caracteres
      strLib.lowercase
      Convierte todos los valores en mayúsculas de una serie de caracteres en valores en minúsculas
      strLib.spaces
      Devuelve una serie de una longitud especificada.
      strLib.upperCase
      Convierte todos los valores en minúsculas de una serie de caracteres en valores en mayúsculas.
  • Puede declarar variables y elementos de estructura de tipos nuevos.
    Los tipos numéricos nuevos son los siguientes:
    FLOAT
    Hace referencia a un área de 8 bytes que almacena números de coma flotante de doble precisión con 16 dígitos significativos como máximo
    MONEY
    Hace referencia a una cantidad de moneda almacenada como número decimal de coma flotante de 32 dígitos significativos como máximo
    SMALLFLOAT
    Hace referencia a un área de 4 bytes que almacena un número de coma flotante de precisión simple con 8 dígitos significativos como máximo
    Los tipos de fecha y hora nuevos son los siguientes:
    DATE
    Hace referencia a una fecha de calendario específica, representada en 8 dígitos de un solo byte
    INTERVAL
    Hace referencia a un intervalo de tiempo representado con entre 1 y 21 dígitos de un solo byte y está asociado con una máscara como por ejemplo "hhmmss" para horas, minutos y segundos
    TIME
    Hace referencia a una instancia de hora, representada en 6 dígitos de un solo byte
    TIMESTAMP
    Hace referencia a una instancia de hora representada con entre 1 y 20 dígitos de un solo byte y está asociada con una máscara como por ejemplo "aaaaMMddhh" para año, mes, día y hora
  • La sintaxis proporciona opciones adicionales:
    • Siempre puede hacer referencia a un elemento de una matriz de elemento de estructura de la manera siguiente, pero en el caso de cambios de iFix, deberá evitar esta sintaxis:
      mySuperItem.mySubItem.mySubmostItem[4,3,1]
      Se recomienda encarecidamente utilizar la sintaxis siguiente:
      mySuperItem[4].mySubItem[3].mySubmostItem[1]
    • Puede utilizar una lista de identificadores delimitada por comas cuando declara parámetros, entradas de sentencia use, entradas de sentencia set o variables como en este ejemplo:
        myVariable01, myVariable02 myPart;
    • En una expresión numérica, ahora puede especificar un exponente precediendo un valor con un asterisco doble (**), de forma que (por ejemplo) 8 al cubo es 8**3
    • Ahora puede especificar expresiones que se resuelvan cada una en fecha, hora, indicación de la hora o intervalo y la aritmética de fechas permite hacer varias tareas, como por ejemplo calcular el número de minutos entre dos fechas
    • Las adiciones siguientes también permiten el proceso de fecha y hora:
      • DateTimeLib.currentTime y DateTimeLib.currentTimeStamp son variables del sistema que reflejan la hora actual
      • Las funciones de formato nuevo están disponibles para fechas (StrLib.formatDate), horas (StrLib.formatTime) e indicaciones de la hora (sysLib.TimeStamp)
      • Cada una de las funciones siguientes permite convertir una serie de caracteres en un elemento de un tipo de fecha y hora de forma que el elemento pueda utilizarse en una expresión de fecha y hora:
        • DateTimeLib.dateValue devuelve una fecha
        • DateTimeLib.timeValue devuelve una hora
        • DateTimeLib.timeStampValue devuelve una indicación de la hora asociada con una máscara determinada como por ejemplo "aaaaMMdd"
        • DateTimeLib.intervalValue devuelve un intervalo asociado a una máscara determinada como por ejemplo, "aaaaMMdd"
        • DateTimeLib.extendDateTimeValue acepta una fecha, hora o indicación de la hora y la amplía a un elemento asociado a una máscara determinada, como por ejemplo "aaaaMMddmmss"
    • Puede utilizar estas sentencias generales nuevas:
      • La sentencia for incluye un bloque de sentencia que se ejecuta en un bucle tantas veces como una prueba de como resultado true. La prueba se realiza al principio del bucle e indica si el valor de un contador está dentro de un rango especificado.
      • La sentencia continue transfiere el control al final de una sentencia for, forEach o while que contiene la sentencia continue. La ejecución de la sentencia continúa o finaliza dependiendo de la prueba lógica realizada al inicio de la sentencia contenedora.
    • Puede ejecutar un mandato del sistema de forma síncrona (emitiendo la función sysLib.callCmd) o asíncrona (emitiendo la función sysLib.startCmd).
    • Puede utilizar dos funciones nuevas que le permiten acceder a los argumentos de línea de mandatos de un bucle
      • sysLib.callCmdLineArgCount devuelve el número de argumentos
      • sysLib.callCmdLineArg devuelve el argumento que reside en una posición especificada de la lista de argumentos
    • Ahora puede especificar una sentencia case en la que cada cláusula estará asociada a una expresión lógica distinta. Si utiliza esta sintaxis nueva, el tiempo de ejecución de EGL ejecuta las sentencias asociadas con la primera expresión verdadera:
      case 
        when (myVar01 == myVar02) 
           conclusion = "bien";
        when (myVar01 == myVar03)
           conclusion = "hay que investigar";
        otherwise
           conclusion = "mal"; 
      end
    • Puede controlar si un parámetro de función se utiliza solo para entrada, solo para salida o en ambos casos y puede evitar la opción aceptando el valor predeterminado, que es el valor no restringido "for both".
    • Ahora puede especificar una expresión de fecha y hora, de texto o numérica que sea más compleja que un solo elemento o constante en los casos siguientes:
      • Cuando especifica el valor proporcionado al sistema operativo por una sentencia return
      • Cuando especifica un argumento que se pasa a una invocación de función o a una llamada de programa; sin embargo, las características del parámetro de recepción deben conocerse durante la generación
    • Ahora puede especificar una expresión numérica compleja al salir del programa
El entorno de desarrollo también ha mejorado:
  • Hay dos características nuevas que proporcionan la posibilidad de acceder rápidamente a componentes, incluso conforme va aumentando la complejidad del código:
    • La vista Referencia de componentes permite visualizar una lista jerárquica de los componentes de EGL a los que haga referencia un programa, una biblioteca o un PageHandler y, desde esa lista, puede acceder a cualquiera de los componentes a los que se hace referencia
    • El mecanismo de búsqueda de EGL permite especificar un criterio de búsqueda para acceder a un conjunto de componentes o variables en el área de trabajo o en un subconjunto de los proyectos
  • Finalmente, la perspectiva Web de EGL se ha eliminado en favor de la perspectiva Web ampliamente utilizada.

Conceptos relacionados
Migración de EGL a EGL
Fuentes de información adicional acerca de EGL
Novedades del iFix de EGL 6.0

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.