Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing...

63
Arithmetic-Logic Expression eValuator (ALEV)1.5 Manual de Referencia 1.5 VMC-Mxx

Transcript of Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing...

Page 1: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Arithmetic-Logic Expression eValuator (ALEV)1.5

Manual de Referencia

1.5VMC-Mxx

Page 2: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Arithmetic-Logic Expression eValuator (ALEV)1.5 Manual de Referencia

El software descrito en este documento se distribuye bajo un contracto de licencia y puede utilizarse

únicamente de acuerdo a los términos de uso de dicho acuerdo.

Aviso de Copyright

Copyright © 2013 Tango/04. Todos los derechos reservados.

Fecha de documento: Enero 2013

Versión de documento: 2.12

Versión de producto: 1.5

Ninguna parte de esta publicación puede reproducirse, transmitirse, transcribirse, almacenarse en un

sistema de recuperación o traducirse a ningún idioma o lenguaje de programación, de ninguna forma ni

medio, electrónico, mecánico, magnético, óptico, químico, manual, o de cualquier otro tipo, sin el

permiso por escrito previo de Tango/04.

Marcas Registradas

Cualquier referencia a nombres de productos registrados son propiedad de las respectivas empresas.

Soporte Técnico

Para soporte técnico visite nuestra página web en www.tango04.com.

Tango/04 Computing Group S.L.

Avda. Meridiana 358, 5 A-B

Barcelona 08027

España

Teléfono: +34 93 274 0051

Page 3: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tabla de Contenidos

Tabla de Contenidos

Tabla de Contenidos.......................................................................... III

Cómo Usar esta Guía.......................................................................VIII

Capítulo 1

Introducción ...................................................................................... 11.1. Novedades en ALEV 1.5.................................................................................1

Capítulo 2

Elementos Sintácticos......................................................................... 22.1. Comentarios....................................................................................................2

2.2. Identificadores.................................................................................................2

2.3. Palabras Reservadas .....................................................................................3

Capítulo 3

Expresiones ....................................................................................... 43.1. Operadores .....................................................................................................5

3.1.1. Operador de Asignación (:=).....................................................................5

3.1.2. Operador de Indexación ( [ ] ) ...................................................................5

3.1.3. Operadores Relacionales ( =, <>, <, <=, >, >=, IN, LIKE, MATCH) ..........6

3.1.4. Operadores Lógicos ( AND, OR, XOR, NOT ) ..........................................8

3.1.5. Operadores Aritméticos ( +, -, *, /, DIV, MOD, ^, % ) ................................8

3.2. Tipos de Datos..............................................................................................10

3.2.1. Tipos de Datos Básicos ..........................................................................10

© 2013 Tango/04 Computing Group Página III

Page 4: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tabla de Contenidos

3.2.2. Tipos de Datos Complejos ......................................................................10

3.3. Variables .......................................................................................................11

Capítulo 4

Declaraciones .................................................................................. 124.1. Constantes ..................................................................................................12

4.1.1. Constantes Predefinidas .........................................................................12

4.2. Variables Temporales ...................................................................................13

4.3. Variables Estáticas .......................................................................................13

Capítulo 5

Sentencias ...................................................................................... 145.1. Sentencias Simples ......................................................................................14

5.1.1. Sentencias de asignación .......................................................................14

5.1.2. Llamadas de procedimiento y función ....................................................15

5.2. Sentencias estructuradas .............................................................................15

5.2.1. Sentencias compuestas: Sentencias Begin…End..................................15

5.2.2. Sentencias Condicionales: Sentencias If ...............................................15

5.2.3. Sentencias Bucle: Sentencias Repeat, While y For ...............................16

5.2.4. Sentencias de Interrupción de Secuencias: Sentencias Break, Continue y Exit .............................................................................................................18

Capítulo 6

Patrones y Expresiones Regulares ...................................................... 196.1. Patrones........................................................................................................19

6.2. Expresiones Regulares.................................................................................20

Capítulo 7

Tipo de Datos SET............................................................................ 227.1. Declaración de SETs ....................................................................................22

7.2. Operaciones sobre SETs..............................................................................23

7.3. Utilización de SETs.......................................................................................23

Capítulo 8

Tipo de Datos ARRAY........................................................................ 25

© 2013 Tango/04 Computing Group Página IV

Page 5: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tabla de Contenidos

8.1. Declaración de ARRAYs...............................................................................25

8.2. Operaciones sobre ARRAYs ........................................................................26

8.3. Utilización de ARRAYs .................................................................................27

Apéndices

Apéndice A: Funciones en ALEV Script v1.5 ........................................ 28A.1. Categorías de Funciones .............................................................................28

A.2. Funciones de Tratamiento de Arrays ...........................................................28

A.2.1. FIND .....................................................................................................28

A.2.2. INDEXOF ...............................................................................................29

A.2.3. KEYAT ..................................................................................................29

A.2.4. KEYOF ...................................................................................................29

A.2.5. SIZEOF ..................................................................................................29

A.2.6. APPEND ...............................................................................................30

A.2.7. DELETE .................................................................................................30

A.2.8. INSERT .................................................................................................30

A.3. Funciones de Tratamiento de Fecha y Hora ................................................30

A.3.1. DATE (Funciones de Tratamiento de Fecha y Hora) ............................31

A.3.2. DAY .......................................................................................................31

A.3.3. DAYNAME .............................................................................................31

A.3.4. DAYOFWEEK ........................................................................................32

A.3.5. HOUR ....................................................................................................32

A.3.6. MINUTE .................................................................................................32

A.3.7. MONTH ..................................................................................................33

A.3.8. MONTHNAME .......................................................................................33

A.3.9. NOW ......................................................................................................33

A.3.10. SECOND .............................................................................................33

A.3.11. TIME ....................................................................................................34

A.3.12. WEEKOFMONTH ................................................................................34

A.3.13. WEEKOFYEAR ...................................................................................34

A.3.14. YEAR ...................................................................................................34

A.4. Funciones Lógicas........................................................................................35

A.4.1. IIF ...........................................................................................................35

A.4.2. SELECT .................................................................................................35

A.5. Funciones Aritméticas ..................................................................................35

A.5.1. ABS ........................................................................................................36

A.5.2. ARCCOS ...............................................................................................36

A.5.3. ARCSIN .................................................................................................36

A.5.4. ARCTAN ................................................................................................36

A.5.5. COS .......................................................................................................36

A.5.6. EXP ........................................................................................................37

A.5.7. FRAC .....................................................................................................37

A.5.8. LN ..........................................................................................................37

A.5.9. POW ......................................................................................................37

A.5.10. RANDOM .............................................................................................37

A.5.11. ROUND ................................................................................................38

A.5.12. SIN .......................................................................................................38

© 2013 Tango/04 Computing Group Página V

Page 6: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tabla de Contenidos

A.5.13. SQRT ...................................................................................................38

A.5.14. TAN ......................................................................................................38

A.6. Funciones Estadísticas ................................................................................39

A.6.1. AVERAGE ............................................................................................39

A.6.2. MAX .......................................................................................................39

A.6.3. MIN ........................................................................................................39

A.6.4. VARIANCE ...........................................................................................39

A.7. Funciones de Tratamiento de Strings...........................................................40

A.7.1. COPY .....................................................................................................40

A.7.2. DELETE .................................................................................................41

A.7.3. FORMAT ...............................................................................................41

A.7.4. HEAD .....................................................................................................41

A.7.5. LEN .......................................................................................................41

A.7.6. LENGTH ................................................................................................41

A.7.7. LOCATE ................................................................................................42

A.7.8. LOWER .................................................................................................42

A.7.9. LOWERCASE ........................................................................................42

A.7.10. LTRIM ..................................................................................................42

A.7.11. POS .....................................................................................................42

A.7.12. POSITION ...........................................................................................43

A.7.13. REPLACE ............................................................................................43

A.7.14. REVERSE ............................................................................................43

A.7.15. RTRIM .................................................................................................43

A.7.16. SUBS ..................................................................................................43

A.7.17. SUBSTRING .......................................................................................44

A.7.18. TAIL .....................................................................................................44

A.7.19. TRIM ....................................................................................................44

A.7.20. UPPER ...............................................................................................44

A.7.21. UPPERCASE .......................................................................................45

A.8. Funciones de Conversión de Tipo................................................................45

A.8.1. BOOLEAN .............................................................................................45

A.8.2. DATE .....................................................................................................45

A.8.3. DATETIME .............................................................................................45

A.8.4. INTEGER ...............................................................................................46

A.8.5. REAL .....................................................................................................46

A.8.6. REG ......................................................................................................46

A.8.7. REGEXP ...............................................................................................46

A.8.8. STRING .................................................................................................46

A.8.9. TIME ......................................................................................................46

A.9. Funciones de Información de Entorno..........................................................47

A.9.1. ASSIGNED ...........................................................................................47

A.9.2. DEFINED ...............................................................................................47

A.9.3. EXIST ....................................................................................................47

A.9.4. ISBLANK ................................................................................................48

A.9.5. ISNULL .................................................................................................48

A.9.6. ISNUM ...................................................................................................48

A.9.7. ISZERO .................................................................................................48

A.9.8. TYPENAME ...........................................................................................49

© 2013 Tango/04 Computing Group Página VI

Page 7: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tabla de Contenidos

Apéndice B: Sintáxis......................................................................... 50

Apéndice C: Contactar con Tango/04 ................................................. 52

Acerca de Tango/04 Computing Group ............................................... 54

Aviso Legal...................................................................................... 55

© 2013 Tango/04 Computing Group Página VII

Page 8: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Cómo Usar esta Guía

© 2013 Tango/04 Computing Group Página VIII

Cómo Usar esta Guía

Este capítulo explica cómo usar las Guías de Usuario de Tango/04 y comprender las convenciones

tipográficas usadas en toda la documentación de Tango/04.

Convenciones Tipográficas

Los siguientes términos, formatos de texto y símbolos convencionales se utilizan en toda la

documentación impresa de Tango/04:

Convention Description

Negrita Mandatos, botones en pantalla y opciones de menú.

Cursiva azul Referencias y enlaces a otras secciones en el manual o a otra documentación que contiene información relevante.

Cursiva Texto mostrado en pantalla, o variables donde el usuario debe sustituir sus propios detalles.

Monospacia Mandatos de entrada como mandatos o código System i, o texto que los usuarios deben teclear.

MAYUSCULA Claves de teclado, como CTRL para la tecla Control y F5 para la tecla de función que está etiquetada como F5.

Notas e información adicional de utilidad.

Consejos y pistas que mejoran la experiencia de usuario al trabajar con este producto.

Importante: información adicional que es altamente recomendable que el usuario tenga en cuenta.

Aviso: El no seguir esta información podría derivar potencialmente en serios problemas.

Page 9: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Introducción

© 2013 Tango/04 Computing Group Página 1

Capítulo 11 Introducción

ALEV es un lenguaje que se utiliza para expresar condiciones y/o cálculos. Básicamente, es el mismo

lenguaje utilizado en álgebra matemática. A pesar de que usted no lo conozca con éste nombre,

probablemente ya lo conoce y lo ha utilizado. Es muy similar al que se utiliza en programas de hoja de

cálculo, o en SQL en las cláusulas WHERE.

ALEV le permite trabajar con Variables, a las que pueda asignar valores, y que pueden ser utilizadas en

las expresiones para hacer referencia a dichos valores.

Además, ALEV ofrece un amplio conjunto de Funciones Predefinidas, que usted puede utilizar en

cualquier expresión. Diríjase al Apéndice A: Funciones en ALEV Script v1.5 en página 28 para más

información.

1.1 Novedades en ALEV 1.5ALEV Script. ALEV 1.5 incorpora funcionalidades de scripting – es decir, la capacidad de incluir lógica

de procesamiento en los cálculos. Esta lógica de procesamiento está disponible en forma de

Sentencias Estructuradas. Diríjase al Apéndice A: Funciones en ALEV Script v1.5 en página 28 para

más detalles.

Nuevas funciones ALEV. En la versión 1.5 encontrará nuevas funciones entre las cuales FIND,

KEYAT, APPEND, INSERT, AVERAGE, VARIANCE, y FORMAT. También encontrara alias para

funciones existentes, haciendo más fácil que nunca escribir sentencias ALEV.

Incremento del rendimiento en un 200%. Por último, pero no menos importante, notará una

importantísima mejora en el rendimiento cuando ejecute sentencias ALEV.

Page 10: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Elementos Sintácticos

Capítulo 2 2 Elementos Sintácticos

Elementos sintácticos fundamentales, llamados tokens, se combinan para formar expresiones,

declaraciones, y sentencias:

• Una sentencia describe una acción algorítmica que puede ser ejecutadas en un script.

• Una expresión es una unidad sintáctica que se produce en una sentencia y denota un valor.

• Una declaración define un identificador (cómo el nombre de una variable) que puede ser

utilizado en expresiones y sentencias.

2.1 ComentariosPuede incluir comentarios en sus scripts para explicar, en lenguaje natural, qué hace el script. Los

comentarios se definen como texto enmarcado por /* y */. Por ejemplo:

/* Esto es un comentario */ 

Además, el resto del texto en una línea puede ser comentado utilizando // al principio del comentarios.

Por ejemplo:

1 + 2; // Esto es un comentario 

2.2 IdentificadoresLos identificadores denotan constantes, variables, tipos, procedimientos y funciones

Un identificador debe comenzar con una letra, un guión bajo “_”, un ampersand “&” o una arroba “@”, y

espacios, letras, dígitos, subrayados, ampersands, arrobas (@), tanto por cientos (%) no se permiten

después del primer carácter.

Las palabras reservadas no pueden ser utilizadas como identificadores.

© 2013 Tango/04 Computing Group Página 2

Page 11: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Elementos Sintácticos

2.3 Palabras Reservadas Las siguientes palabras reservadas no pueden redefinirse o usarse como identificadores.

AND ANY ARRAY BEGIN BOOL

BOOLEAN BREAK CONST CONTINUE DATE

DATETIME DIV DO DOWNTO ELSE

END EXIT FOR FUNCTION IF

IN INTEGER LIKE MATCH MOD

NOT OR PROCEDURE REAL REGEXP

REPEAT SET STATIC STEP STRING

THEN TIME TO UNTIL USERDEF

VAR VARIANT VOID WHILE XOR

© 2013 Tango/04 Computing Group Página 3

Page 12: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

Capítulo 3 3 Expresiones

Una expresión es una construcción que retorna un valor. Por ejemplo,

X// variable

15 // entero constante

Result // variable 

Compute(X,Y) // función de llamada 

X * Y // producto de X por Y

Z / (1 ‐ Z) // cociente de Z entre (1 ‐ Z) 

X = 1.5 // Boleano

C in {1..10} // Boleano

not Done // negación de un Boleano

['a','b','c']        // vector

String(48)            // entero constante 48 convertido a valor de cadena

Las expresiones más simples son variables y constantes. Expresiones más complejas se construyen

desde otras más simples utilizando operadores y llamadas a funciones.

Puede utilizar paréntesis ( y ) para indicar la prioridad de operaciones y el orden en que se ejecutan. No

hay límite en la utilización de paréntesis o niveles de reproducción.

Dependiendo del resultado para una expresión se puede distinguir entre:

Expresiones Lógicas: Expresiones que calculan una condición lógica y retornan un valor lógico

(BOOLEAN).

En expresiones lógicas puede utilizar operadores lógicos (AND, OR, XOR, NOT), operadores

relacionales (=, <>, <, <=, >, >=, IN, LIKE y MATCH), y cualquier función que retorne un valor

BOOLEAN. Diríjase a Operadores en la página 8 para más detalles. Por ejemplo, las siguientes son

expresiones lógicas:

• A > B

• (A > B) AND ( B > C )

• ((A >= B) AND (C <= B)) OR ((A < 1024) AND (B < 1024))

• NOT ( C < D )

© 2013 Tango/04 Computing Group Página 4

Page 13: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

• A LIKE "CPF*"

Expresiones Aritméticas: expresiones que tienen un valor no-lógico: numérico (INTEGER o REAL),

cadena, hora ( TIME ), fecha ( DATE ),...

En expresiones aritméticas puede utilizar operadores aritméticos ( +, -, *, /, ^, DIV y MOD ) y cualquier

función predefinida. Por ejemplo, las siguientes son expresiones aritméticas:

• Buenos Días,' + UserName

• ( Use / 24 ) * 100

3.1 OperadoresLos Operadores son los que permiten hacer operaciones con los datos. Los datos a los que se aplican

los operadores se denominan Operando. Un Operando puede ser una constante, una variable, o el

resultado de una expresión.

Los distintos Operadores se agrupan en categorías, según el tipo de operación que realizan:

• Operador de Asignación : :=

• Operador de Indexación : [ ]

• Operadores Relacionales : =, <>, <, <=, >, >=, IN, LIKE y MATCH

• Operadores Lógicos : AND, OR, XOR y NOT

• Operadores Aritméticos : +, -, *, /, DIV, MOD, ^ y %

3.1.1 Operador de Asignación (:=)Utilización: <Variable> := <Expresión>

Descripción: El operador de asignación le permite asignar valores a variables. Las variables pueden

ser de cualquier tipo, incluyendo elementos de un ARRAY. Si se trata de elementos de un ARRAY, no

tienen porqué estar previamente definidos. La variable a la que se asigna no tiene porqué ser del

mismo tipo que el resultado de la expresión. Una vez realizada la asignación, la variable tomará el tipo

del resultado de la expresión.

3.1.2 Operador de Indexación ( [ ] )Utilización: <Variable>[<Operando>]

Descripción: El operador de indexación le permite acceder a los elementos de un ARRAY, o a los

caracteres de un STRING:

• Si <Variable> es de tipo ARRAY, <Operando> puede ser de tipo INTEGER para acceder a los

elementos del ARRAY por su posición en el mismo, o puede ser de cualquier otro tipo para

acceder a los elementos del ARRAY por clave (siempre y cuando, tengan clave). El resultado

del operador es el elemento que ocupa la posición o la clave indicada.

• Si <Variable> es de tipo STRING, entonces, <Operando> ha de ser, forzosamente, de tipo

INTEGER. Sólo se puede acceder a los caracteres de un STRING por su posición.

© 2013 Tango/04 Computing Group Página 5

Page 14: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

3.1.3 Operadores Relacionales ( =, <>, <, <=, >, >=, IN, LIKE, MATCH)Utilización:

• <Operando 1> = <Operando 2>

• <Operando 1> <> <Operando 2>

• <Operando 1> < <Operando 2>

• <Operando 1> <= <Operando 2>

• <Operando 1> > <Operando 2>

• <Operando 1> >= <Operando 2>

• <Operando 1> IN <Operando 2>

• <Operando 1> LIKE <Operando 2>

• <Operando 1> MATCH <Operando 2>

Descripción: Los operadores relacionales comprueban relaciones entre operandos, devolviendo

siempre un resultado de tipo BOOLEAN, que nos informa de si se cumple la relación especificada o no.

Se definen como sigue:

• =: Igual a

• <>: Diferente de

• <: Menor que

• <=: Menor o igual que

• >: Mayor que

• >=: Mayor o igual que

• IN: Pertenece a

• LIKE: Parecido a

• MATCH: Sustituye a

Los operadores =, <> operan con operandos de cualquier tipo, exceptuando el tipo ARRAY.

Los operadores <, <=, > y >= operan con operandos de cualquier tipo, exceptuando los tipo SET y

ARRAY.

El operador IN, requiere que el Operando 2 sea de los tipos SET o ARRAY. El Operando 1 puede ser de

cualquier tipo, exceptuando el tipo ARRAY.

Los operadores LIKE y MATCH requieren que Operando 1 y Operando 2 sean de tipo STRING. En

cualquier caso, consulte el tema dedicado a LIKE y MATCH, donde se describe con detalle el

funcionamiento de ambos, así como las muchas posibilidades que proporcionan.

LIKE y MATCH

Utilización:

• <Operando 1> LIKE <Operando 2>

• <Operando 1> MATCH <Operando 2>

© 2013 Tango/04 Computing Group Página 6

Page 15: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

Descripción: El operador relacional LIKE es muy similar al que se utiliza en SQL estándar: Permite

comparar STRINGS de una forma menos estricta que los operadores de igualdad ( = ) y de diferencia (

<> ). Por ejemplo, sean los siguientes STRINGS:

S1 := "Error en tabla CLIENTES.DBF: No hay suficiente espacio en disco."

S2 := "Error en tabla PRODUCTOS.DBF: Se ha violado la integridad referencial."

Si bien es verdad que los dos cadenas no son iguales, si es cierto que 'se parecen'. Se parecen en el

sentido de que siguen un mismo patrón: ambas empiezan con "Error en tabla ", a continuación hay un

'parámetro', sigue el carácter ":", y por último hay una descripción del error.

Estas similitudes entre STRINGS se expresan en forma de Patrones, a los que se dedica la sección

Patrones. Seguramente ya conoce los patrones, ya que son una herramienta muy utilizada en todos los

sistemas operativos. A modo de ejemplo, el patrón que definiría las similitudes entre S1 y S2 seria

"Error en tabla *: *".

El operador LIKE le permite comprobar si un STRING, <Operando 1>, se ajusta al patrón descrito por el

STRING <Operando 2>. LIKE devuelve un valor de tipo BOOLEANO:

• Si <Operando 1> "se parece" a <Operando 2>, devuelve TRUE.

• Si "no se parece", devuelve FALSE. Así, en el ejemplo anterior, tendríamos:

S1 LIKE "Error en tabla *: *" = TRUE

S1 LIKE "Error de sistema: *' = FALSE

Una vez visto el operador LIKE, suponga usted que define una condición de alarma en la aplicación

basándose en la siguiente expresión:

MENSAJE LIKE "Error en tabla *: *"

Es decir, cuando la expresión anterior devuelva TRUE, se disparará una acción correctiva, o se le

informará de que se ha detectado una condición anómala. Pero seguramente, la acción correctiva

necesitará saber en que tabla se debe de ejecutar, o el mensaje informativo deberá indicar en que tabla

se produce el error,...es decir, usted necesitaría "extraer" el nombre de la tabla que aparece en

MENSAJE.

El operador MATCH le permite hacer la extracción de una forma muy sencilla. Veámoslo con el

siguiente ejemplo:

MENSAJE MATCH "Error en tabla %NOMBRE_TABLA%: %TEXTO_ERROR%"

Fíjese como se parece a la sentencia LIKE anterior: Sólo hemos modificado un poco el patrón, hemos

substituido los comodines ' * ', por nombres de variables delimitados por el carácter %.

En estos momentos, usted ya se debe de hacer una idea de como funciona el operador MATCH:

• Si el STRING <Operando 1> "se parece" al patrón <Operando 2>, entonces, asigna las

variables indicadas en el patrón con las correspondientes substituciones que aparecen en el

STRING, y devuelve TRUE.

• Si <Operando 1> "no se parece" al patrón <Operando 2>, no asigna las variables y devuelve

FALSE.

Consejo

Puede utilizar las funciones REG o REGEXP en <Operand 2> si necesita utilizar expresiones

regulares para realizar operaciones LIKE/MATCH complejas.

© 2013 Tango/04 Computing Group Página 7

Page 16: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

3.1.4 Operadores Lógicos ( AND, OR, XOR, NOT )Utilización:

• NOT <Operando>

• <Operando 1> AND <Operando 2>

• <Operando 1> OR <Operando 2>

• <Operando 1> XOR <Operando 2>

Descripción: Los operadores lógicos se aplican solamente a operandos de tipo BOOLEAN. Se

definen como sigue:

• NOT: Negación. El valor boleano del Operando negado.

• AND: Y lógica. TRUE cuando ambos operandos son TRUE, FALSE en caso contrario.

• OR: O lógica. TRUE cuando al menos uno de los operandos es TRUE, FALSE en caso

contrario.

• XOR: O exclusiva. TRUE cuando sólo uno de los operandos es TRUE, FALSE en caso

contrario.

Las siguientes tablas definen el comportamiento de los operadores.

3.1.5 Operadores Aritméticos ( +, -, *, /, DIV, MOD, ^, % )Utilización:

• <Operando 1> + <Operando 2>

• <Operando 1> - <Operando 2>

• <Operando 1> * <Operando 2>

© 2013 Tango/04 Computing Group Página 8

Page 17: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

• <Operando 1> / <Operando 2>

• <Operando 1> DIV <Operando 2>

• <Operando 1> MOD <Operando 2>

• <Operando 1> ^ <Operando 2>

• <Operando 1> % <Operando 2>

Descripción: Los operadores aritméticos pueden aplicarse a distintos tipos de operandos. En función

de los tipos de los operandos, tenemos:

• Aritmética Numérica: Cuando los operandos son de tipos numéricos ( INTEGER o REAL ).

En este caso, los operadores aritméticos se definen como:

+: Suma

-: Resta

*: Multiplicación

/: División

DIV: División entera

MOD: Resto de la división entera

^: Potencia

%: Porcentaje

• El resultado de la operación podrá ser de tipo INTEGER o REAL, dependiendo de la operación

y de los operandos.

• Aritmética de Fechas: Cuando al menos uno de los operandos es de los tipos TIME, DATE o

DATETIME. En este caso, sólo están definidos los operadores de suma (+) y resta (-).

• Si ambos operandos son de tipo DATE o DATETIME, el resultado será un número de tipo

REAL, indicando la suma o diferencia entre ambas fechas, expresada en días.

• Si ambos operandos son de tipo TIME, el resultado será de tipo TIME si no sobrepasa las 24

horas, y de tipo DATETIME si sobrepasa las 24 horas.

• Si uno de los operandos es de tipo DATE o DATETIME, y el otro es de tipo REAL, el operando

de tipo REAL se toma como una diferencia de días, y el resultado será de tipo DATE o

DATETIME.

Si uno de los operandos es de tipo TIME, y el otro es de tipo REAL, el operando de tipo

REAL se toma como una diferencia de días, y el resultado será de tipo TIME o DATETIME.

Concatenación de Cadenas de Texto: Si los operandos son de tipo STRING. En este caso,

sólo el operador de concatenación (+) está definido. El resultado será de tipo STRING, y

consistirá en la concatenación de <Operando 1> con <Operando 2>

• Aritmética de Conjuntos: Cuando al menos uno de los operandos es de tipo SET. En este

caso, los operadores aritméticos definidos son:

• +: Unión de Conjuntos. El resultado es el conjunto formado por los elementos de ambos

conjuntos.

• -: Diferencia de Conjuntos. El resultado es el conjunto formado por los elementos de

<Operando 1> que no se encuentran en <Operando 2>

• /: Intersección de Conjuntos. El resultado es el conjunto formado por los elementos de

<Operando 1> que también se encuentran en <Operando 2>

© 2013 Tango/04 Computing Group Página 9

Page 18: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

• Si uno de los operandos no es de tipo SET, se interpreta como un conjunto con dicho operando

como único elemento. En cualquier caso, el resultado es siempre de tipo SET. Consulte la

Capítulo 7 - Tipo de Datos SET en página 22 para mas detalles al respecto.

3.2 Tipos de Datos

3.2.1 Tipos de Datos BásicosLas variables y las constantes, pueden ser de los siguientes Tipos de Datos Básicos:

3.2.2 Tipos de Datos ComplejosTambién se soportan los siguientes Tipos de Datos Complejos:

Tipo de datos

Descripción Ejemplos

BOOLEAN LógicoTRUE (verdadero),

FALSE (falso)

INTEGER Número entero. -10, -2, 0, 1, 3, 8

REALNúmero real.

Formatos: Punto fijo, Punto flotante

-8.4, 0.0, 1.5, 3.75

-5E-3, -4E2, 8E1, 4.2E3,

TIME

Hora

Delimitado por: #...#

Formatos: hora:minuto:segundo, AM/PM

#3:30:15#, #2:45#, #1:30 PM#, #2 AM#, #6 p#, #6:30 pm#, #7 a#

DATE

Fecha

Delimitado por: #...#

Formatos: día/mes/año

#2/2/1971#, #22/4/1975#

DATETIME

Hora

Delimitado por: #...#

Formatos: día/mes/año hora:minuto:segundo

#2/2/1971 23:50:45#

STRINGCadena de texto delimitado por: comi-lla simple o comilla doble

'Buenos dias'

"Buenas tardes"

VARIANT

ANY

El tipo para una variable no asignada, lo que significa que puede contener cualquier tipo de valor.

VOID

USERDEF Definido por la aplicación

Tipo de Datos

Descripción Ejemplos

SETIndicado por: {...}

{1,3,5,7},{1...10,20..30} {0.0..10.0} {'a'..'z', 'A'..'Z'} {#1/1/2002#...#30/6/2002#}{#9AM#..#2PM#,

#3PM#..#6:45pm#}

© 2013 Tango/04 Computing Group Página 10

Page 19: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Expresiones

Los tipos SET y ARRAY son mucho mas potentes que en cualquier otro lenguaje que implemente tipos

similares. Para ver una explicación detallada de las posibilidades que dichos tipos le ofrecen para

simplificar la escritura de expresiones, consulte Capítulo 7 - Tipo de Datos SET en página 22 y

Capítulo 8 - Tipo de Datos ARRAY en página 25.

3.3 VariablesHay tres clases de variables:

• Variables Locales: de cada expresión. Cuando esté escribiendo una expresión, puede definir

variables locales, variables que sólo serán visibles para dicha expresión, y que le servirán para

almacenar resultados temporales y hacer las expresiones más legibles.

• Variables Globales: a todas las expresiones. Si la aplicación le permite definirlas, usted podrá

utilizarlas en cualquiera de las expresiones, obteniendo su valor o modificándolo.

• Variables de Aplicación: Son similares a las Variables Globales, pero, aunque usted podrá

modificar su valor, generalmente será la aplicación la que le proporcione el valor.

ARRAYArrays o vecto-res indicados por: [...]

[1,2,3,4,5], ['a','b','c']

Tipo de Datos

Descripción Ejemplos

© 2013 Tango/04 Computing Group Página 11

Page 20: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Declaraciones

Capítulo 4 4 Declaraciones

En otros lenguajes similares, para declarar una variable es necesario especificar, de alguna forma, el

tipo de datos que almacenará dicha variable. En Scripts ALEV no es necesario definir el tipo de una

variable. Una variable puede cambiar el tipo de dato que está almacenando a lo largo de la “vida” de la

variable.

Puede declarar tres tipos de variables locales:

• Constantes,

• Temporales, y

• Estáticas.

4.1 Constantes Incluso cuando no hay variables reales (en el sentido que su valor se asigna en el momento de la

declaración y nunca cambia), puede utilizarse como otras variables en cada expresión que no cambia el

valor de la variable.

Las constantes se declaran utilizando la clave Const, y debe inicializarse – es decir, el valor para la

constante debe proporcionarse mediante una sentencia de asignación. Por ejemplo:

• Const SECONDS_PER_HOUR := 60 * 60;

4.1.1 Constantes PredefinidasAlgunas constantes útiles ya están predefinidas en ALEV Script:

• ALEV_VERSION: Un valor de cadena, que contiene la versión actual de ALEV Script.

• BLANK: Valor de cadena vacío.

• MAX_INTEGER: El valor INTEGER máximo.

• MAX_REAL: El valor REAL máximo.

• MIN_INTEGER: El valor INTEGER mínimo.

• MIN_REAL: El valor REAL mínimo.

• NULL: Valor no asignado.

• PI: Número Pi, 3.1415926….

© 2013 Tango/04 Computing Group Página 12

Page 21: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Declaraciones

4.2 Variables TemporalesLas variables locales se definen solo en el script donde se declara la variable, y sólo se definen donde

el script está siendo evaluado. Una vez el script ha sido evaluado, el valor de la variable es indefinido.

Las variables temporales se declaran utilizando la clave Var. Por ejemplo:

• Var i, j, k := 10; declara tres variables llamadas i, j y k, e inicializa k con el valor 10.

4.3 Variables EstáticasLas variable locales son similares a variables locales temporales, pero retienen su valor una vez el

script ha sido evaluado. Los valores de la variable estarán disponibles la próxima vez que se ejecute el

script. Las variables estáticas se declaran utilizando la clave Static. Por ejemplo:

• Static X, Y, Z;

© 2013 Tango/04 Computing Group Página 13

Page 22: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Sentencias

Capítulo 5 5 Sentencias

Las sentencias definen acciones algorítmicas en un script. Las sentencias simples – como

asignaciones y llamadas de procedimiento – pueden combinarse para formar bucles, sentencias

condicionales, y otras sentencias estructuradas.

Puntos y comas separan sentencias múltiples en un bloque.

5.1 Sentencias SimplesUna sentencia simple no contiene ninguna otra sentencia. Las sentencias simples incluyen

asignaciones y llamadas a procedimientos y funciones.

5.1.1 Sentencias de asignaciónUna sentencia de asignación tiene la siguiente forma:

• <variable> := <expresión>

donde variable es cualquier referencia a una variable, incluidas variables o componentes de una

variable estructurada. El símbolo ':=' es el operador de asignación.

Un sentencia de asignación reemplaza el valor actual de <variable> con el valor de <expresión>. Por

ejemplo,

• X := 8; asigna el valor 8 a la variable X.

La referencia a la variable en la parte izquierda de la asignación puede aparecer en la expresión de la

derecha. Por ejemplo:

• X := X + 1; incrementa en 1 el valor de X.

Otras sentencias de asignación pueden ser:

• X := Y + Z;

• Ready := (X >= 1) and (X < 100);

• Ready := X IN {1..100};

• StringList[I] := Hola!';

© 2013 Tango/04 Computing Group Página 14

Page 23: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Sentencias

5.1.2 Llamadas de procedimiento y función Una llamada de procedimiento o función consiste en el nombre de un procedimiento o función, seguido

por una lista de parámetros. Por ejemplo:

• Append( A, 123 );

• Abs( PI );

5.2 Sentencias estructuradasLas sentencias estructuradas se construyen a partir de otras sentencias. Utilice una sentencia

estructurada cuando desee ejecutar otras sentencias secuencial, condicional o repetidamente. Las

sentencias estructuradas incluyen sentencias compuestas, sentencias condicionales, sentencias de

bucles y sentencias de interrupción de secuencia.

5.2.1 Sentencias compuestas: Sentencias Begin…EndUna sentencia compuesta es una secuencia de otras sentencias (simples o estructuradas) para que se

ejecuten en el orden en que están escritas. Las sentencias compuestas está enmarcado por las

palabras reservadas Begin y End, y punto y comas (;) separan las sentencias que la constituyen. Por

ejemplo:

• Begin

Z := X;

X := Y;

Y := Z;

end;

5.2.2 Sentencias Condicionales: Sentencias If Existen dos formas de sentencias condicionales:

• If...Then, y

• If...Then...Else.

La sintaxis de una sentencia If...Then es:

• If <expresión> Then <sentencia>

• donde < expresión > retorna un valor boleano.

Si la expresión es verdadera, se ejecuta <sentencia> ; y viceversa. Por ejemplo,

• If J <> 0 Then Resultado := I/J;

La sintáxis de una sentencia If...Then...Else es:

• If <expresión> Then <sentencia1> Else <sentencia2>

• donde < expresión > retorna un valor boleano.

Si <expresión> es verdadero se ejecuta <sentencia1>; sino se ejecuta <sentencia2>. Por ejemplo:

• If J = 0 Then

Exit;

Else

Resultado := I/J;

© 2013 Tango/04 Computing Group Página 15

Page 24: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Sentencias

Las cláusulas Then y Else contienen una sentencia cada uno, pero puede ser una sentencia

estructurada. Por ejemplo:

• If J <> 0 Then Begin

Result := I/J;

Count := Count + 1;

End;

Else If Count = Last Then

Done := True;

Else

Exit;

5.2.3 Sentencias Bucle: Sentencias Repeat, While y For Los bucles permiten ejecutar una secuencia de sentencias repetidamente, usando una condición o

variable de control para determinar cuando debe detenerse la ejecución. ALEV tiene tres tipos de

control de bucles: Sentencias Repeat, Sentencias While, y Sentencias For.

Sentencias Repeat

La sintaxis de sentencia repeat es:

• Repeat <sentencia1>; ...; <sentencia>; Until <expresión>

• Donde < expresión > evalúa un valor boleano.

La sentencia repeat ejecuta su sentencia del componente <sentencia> continuamente, comprobando

<expresión> tras cada iteración. Cuando <expresión> evalúa verdadero, finaliza la sentencia repeat. La

secuencia siempre se ejecuta como mínimo una vez, ya que <expresión> no se evalúa hasta la primera

iteración.

Ejemplos de sentencias repeat:

• Repeat

K := I mod J;

I := J;

J := K;

Until J = 0;

Sentencias While

Una sentencia while es similar a una sentencia repeat, excepto que la condición de control se evalúa

antes de la primera ejecución de la secuencia de sentencias. Si, la condición es falsa, nunca se ejecuta

la secuencia de sentencias.

La sintaxis de una sentencia while es:

• While <expresión> Do <sentencia>

• Donde <expresión> evalúa a un valor boleano y <sentencia> puede ser una sentencia

compuesta.

La sentencia while ejecuta su sentencia del componente <sentencia> continuamente, comprobando

<expresión> antes de cada iteración. Mientras <expresión> sea verdadero, continua la ejecución.

Ejemplo de una sentencia while

• While J <> 0 Do Begin

K := I mod J;

© 2013 Tango/04 Computing Group Página 16

Page 25: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Sentencias

I := J;

J := K;

End;

Sentencias For

Una sentencia for, a diferencia de las sentencias repeat o while, requieren que especifique

explícitamente el número de iteraciones que desea que realice el bucle. La sintaxis de una sentencia for

es:

• For <contador> := <ValorInicial> To <ValorFinal> Do <sentencia>

• O

• For <contador> := <ValorInicial> To <ValorFinal> Step <incremento> Do <sentencia>

• O

• For <contador> := <ValorInicial> DownTo <ValorFinal> Do <sentencia>

• O

• For <contador> := <ValorInicial> DownTo <ValorFinal> Step <sentencia> Do <sentencia>

• Donde:

• <contador> es una variable que no puede asignarse dentro de <sentencia>.

• <ValorInicial> y <ValorFinal> son expresiones evaluadas como un valor numérico.

• <sentencia> es una sentencia simple o estructurada que no cambia el valor de <contador>.

• <incremento> es una expresión evaluada como un valor numérico, indicando que <contador>

se incremente entre iteraciones. Si se omite, se asume un <valordepaso> de 1.

La sentencia for asigna el valor de <ValorInicial> a <contador>, entonces ejecuta <sentencia>

repetidamente, incrementando o decreciendo el contador tras cada iteración. (La sintaxis For...To

incrementa <contador>, mientras que la sintaxis For...DownTo lo descuenta.) Cuando el contador

retorna el mismo valor que <ValorFinal>, se ejecuta <sentencia> una vez más y finaliza la sentencia for.

En otras palabras, <sentencia> se ejecuta una vez para cada valor en el rango entre <ValorInicial> y

<ValorFinal>.

• Si <ValorInicial> es igual a <ValorFinal>, la sentencia se ejecuta una sola vez.

• Si <ValorInicial> es mayor que <ValorFinal> en una sentencia For...To, o menor que

<ValorFinal> en una sentencia For...DownTo, la sentencia nunca se ejecutará.

• Cuando la sentencia for termina, el valor del contador es <ValorFinal> + <incremento>.

Ejemplos de sentencias for:

• For I := 2 To 63 Do

If Data[I] > Max Then

Max := Data[I];

• For I := 1 To 10 Do

For J := 1 To 10 Do Begin

X := 0;

For K := 1 To 10 Do

X := X + Mat1[I, K] * Mat2[K, J];

© 2013 Tango/04 Computing Group Página 17

Page 26: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Sentencias

Mat[I, J] := X;

End;

5.2.4 Sentencias de Interrupción de Secuencias: Sentencias Break, Continue y Exit Puede utilizar los procedimientos Break y Continue para controlar el flujo de una sentencia repeat,

while, o for. Break termina la sentencia en la que se produce, mientras que Continue comienza

ejecutando la siguiente iteración de la secuencia.

La sentencia Exit termina la ejecución. La sintaxis de una sentencia exit es:

• Exit; o

• Exit <expresión>;

Si se omite <expresión>, la ejecución del script no retorna ningún valor; por el contrario, el resultado de

evaluar <expresión> se retorna como resultado de la ejecución del script.

© 2013 Tango/04 Computing Group Página 18

Page 27: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Patrones y Expresiones Regulares

Capítulo 6 6 Patrones y Expresiones Regulares

6.1 PatronesUn patrón define un conjunto de cadenas de caracteres. Los operadores LIKE y MATCH trabajan con

patrones, y permiten comparar una cadena de caracteres con un patrón. Si la cadena que se compara

está en el conjunto de cadenas de caracteres definida por el patrón, la comparación se cumple.

Los patrones están formados por caracteres normales, y por caracteres comodín. Los caracteres

comodín son:

También se puede utilizar la pseudo-función REG( Expresión Regular ), que permite utilizar una

Expresión Regular en vez de un patrón con los operadores LIKE y MATCH. Las expresiones regulares

son bastante mas difíciles de utilizar que los patrones, pero son muchísimo mas potentes, permiten

especificar series de caracteres mucho mas complejas.

A modo de ejemplo de patrones, tendríamos:

Comodín Descripción

? Cualquier carácter.

* Cualquier serie de cero o más caracteres.

^Carácter de escape. Indica que el carácter que sigue no es un como-dín.

%...%Análogo al *, pero además especifica un nombre de variable. El ope-rador MATCH, al encontrar un nombre de variable en un patrón, asigna la cadena de sustitución a dicha variable.

Patrón Descripción

'CPF*'Todas las cadenas de caracteres que empiezan con 'CPF'

''CPF????:*'Todas las cadenas que empiezan con 'CPF', seguido de 4 caracteres cualesquiera y el carácter ':'. A continuación puede haber mas texto o no.

'*^*QSYSOPR*'Todas las cadenas que contienen el texto '*QSY-SOPR', en cualquier posición de la cadena.

'*error." Todas las cadenas que terminan en 'error.'

© 2013 Tango/04 Computing Group Página 19

Page 28: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Patrones y Expresiones Regulares

Ejemplos de utilización con LIKE y MATCH:

6.2 Expresiones RegularesUna expresión regular es una fórmula para comparar cadenas de caracteres que siguen alguna

secuencia. Las expresiones regulares están formadas por caracteres normales y por metacaracteres.

Los caracteres normales incluyen a las letras mayúsculas, minúsculas y a los dígitos. Los

metacaracteres tienen un significado especial y se describen en detalle a continuación.

En el caso más simple, una expresión regular es como una cadena de búsqueda corriente. Por ejemplo,

la expresión regular prueba no contiene metacaracteres. Las cadenas "prueba" y "123prueba"

cumplen la expresión regular, pero "Prueba" no la cumple.

Para hacer un buen uso de las expresiones regulares, es crítico entender los metacaracteres. La tabla

siguiente lista los metacaracteres y ofrece una breve explicación de su significado:

'CPF%ERR_CODE%:%ERR_MSG%'

Todas las cadenas de caracteres que empiezan con 'CPF', siguen con cualquier serie de cero o mas caracteres, a continuación el carácter ':', y seguidamente, cualquier serie de cero o mas caracteres. Si el operador que se utiliza es el ope-rador MATCH, la primera serie de cero o más caracteres se asignará a la variable ERR_CODE, y la segunda serie a la variable ERR_MSG.

Patrón Descripción

Expresión x Resultado

'CPF9508:Machine pointer not set for loca‐tion.' LIKE 'CPF*'

= TRUE

'CPF9508:Machine pointer not set for loca‐tion.' LIKE 'CPF?'

= FALSE

'CPF9508:Machine pointer not set for loca‐tion.' LIKE '*CPF*:*'

= TRUE

'CPF9508:Machine pointer not set for loca‐tion.' MATCH 'CPF%ERR_CODE%:%ERR_MSG%'

=

TRUE,ERR_CODE = '9508',ERR_MSG = 'Machine pointer not set for location.'

Metacaracter Descripción

.

Especifica cualquier carácter simple. Por ejemplo, la expresión regular r.t cumpliría con cualquiera de las cadenas "rat", "rut", "r t", pero no con "root".

$

Especifica el final de línea. Por ejemplo, la expresión regular wea-sel$ cumpliría el final de la cadena "He's a weasel" pero no la cadena "They are a bunch of weasels."

^

Especifica el principio de línea. Por ejemplo, la expresión regular ^When in cumpliría el principio de la cadena "When in the course of human events" pero no cumpliría "What and When in the" .

© 2013 Tango/04 Computing Group Página 20

Page 29: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Patrones y Expresiones Regulares

*

Especifica cero o más ocurrencias del carácter o de la expresión regular que lo precede. Por ejemplo, la expresión regular .* signi-fica cualquier número de repeticiones de cualquier carácter.

\

Especifica un carácter literal, y se usa para tratar al carácter que le sigue como un carácter ordinario, en vez de como un metacarater. Por ejemplo, \$ se utiliza para especificar el signo de dólar ($) en vez del final de línea. De forma similar, la expresión \. se utiliza para especificar el carácter punto en vez de cualquier carácter simple.

[ ] [c1‐c2] [^c1‐c2]

Especifica cualquiera de los caracteres entre los corchetes. Por ejemplo, la expresión regular r[aou]t se cumple por las cadenas "rat", "rot", y "rut", pero no por "ret". Se pueden especificar rangos de caracteres utilizando el signo menos o guión. Por ejemplo, la expresión regular [0-9] especifica cualquier dígito. También se pueden especificar múltiples rangos. La expresión regular [A-Za-z] especifica cualquier letra, mayúscula o minúscula. Para especi-ficar cualquier carácter excepto los que se indican en el rango, es decir, el rango complementario, se usa el carácter ^ o circunflejo después de corchete inicial. Por ejemplo, la expresión [^269A-Z] especifica cualquier carácter excepto 2, 6, 9, y las letras mayús-culas.

\< \>

Especifica el principio (\<) o final (\>) de una palabra. Por ejemplo, \<the se cumple por la cadena "for the wise" pero no por la cadena "otherwise".

( ) Trata a la expresión entre paréntesis com un grupo

|

Indica que al menos una de las dos expresiones separadas por la barra vertical | se debe cumplir. Por ejemplo (him|her) se cum-ple por la cadena "it belongs to him" y también por la cadena "it belongs to her", pero no se cumple por la cadena "it belongs to them."

+

Especifica una o más ocurrencias del carácter o de la expresión regular que lo precede. Por ejemplo, la expresión regular 9+ se cumple por las cadenas "9", "99", "999".

?Especifica cero o una ocurrencia del carácter o de la expresión regular que lo precede.

Metacaracter Descripción

© 2013 Tango/04 Computing Group Página 21

Page 30: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos SET

Capítulo 77 Tipo de Datos SET

Los tipos SET o conjunto, permiten agrupar valores y/o rangos de valores:

• Los Valores pueden ser de cualquier tipo de datos, ya sean tipos de datos básicos o tipos de

datos complejos.

• Los Rangos de Valores o Intervalos están definidos por los valores que delimitan el rango, es

decir, por los extremos del rango o intervalo. Los valores pueden ser de cualquier tipo de

datos, ya sean tipos de datos básicos o tipos de datos complejos.

7.1 Declaración de SETsLa declaración de datos SET debe de cumplir las siguientes reglas:

• Los SET deben de estar delimitados por los caracteres '{'...'}'.

• Los elementos que forman un SET (Valores y Rangos de Valores), se separan por comas ','.

• Los rangos se definen por los valores de los extremos, separados por dos puntos, '..'

• Los Valores y Rangos de Valores de un SET no tienen porqué ser del mismo tipo, es decir, en

un set se pueden incluir valores y rangos de distinto tipo.

Ejemplos:

• { }: Define un conjunto vacío.

• { 1, 3, 5, 7, 9 }: Define el conjunto de números enteros 1, 3, 5 y 7.

• { 0,..10 }: Define el conjunto de números enteros del 0 al 10, es decir, 0, 1, 2 ,3 ,4 ,5 ,6 ,7 ,8 ,9

y 10

• { 0.0..10.0 }: Define el conjunto de números reales del 0 al 10.

• { 'a'..'z', 'A'..'Z', '_' }: Define el conjunto de caracteres de la 'a' a la 'z', mayúsculas y

minúsculas, y también el carácter '_'

• { #9 am#..#2 pm#, #3 pm#..#6:45 pm# }: Define el conjunto de horas que van de las 9:00:00

a las 14:00:00 y de las 15:00:00 a las 18:45:00

• { 'A'..'Z', 0..9 }: Define el conjunto formado por los caracteres de la 'A' a la 'Z', y los números

enteros del 0 al 9.

© 2013 Tango/04 Computing Group Página 22

Page 31: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos SET

• { { 1, 3, 5, 7, 9 }, { 2, 4, 6, 8, 10 } }: Define un conjunto formado por dos subconjuntos de

enteros.

7.2 Operaciones sobre SETsSobre los datos de tipo SET están definidos los siguientes operadores.

7.3 Utilización de SETsLos SET's son de gran utilidad para simplificar expresiones lógicas, ya que:

• Las condiciones de igualdad ( A =B ) o de desigualdad ( A <> B ) pueden expresarse como

condiciones de pertenencia a un SET de valores ( A IN {B} ) o de no pertenecía a un SET (

NOT A IN {B} ).

• Las condiciones de rango ( ( A =< B ) AND ( B =< C ) por ejemplo ) pueden expresarse como

condiciones de pertenencia a un SET ( B IN {A ..C} en el ejemplo anterior)

• Generalmente, cuando se tienen expresiones lógicas de términos unidos por AND ( Y lógica) u

OR ( O lógica ), la expresión puede simplificarse por una única condición de pertenencia a un

SET

Ejemplo:

Suponga que la variable A contiene la hora actual, y quiere saber si dicha hora actual está dentro del

horario de oficinas de su empresa. El horario de oficinas es de 9 de la mañana a 2 de la tarde, y de 3 de

la tarde a 7 menos cuarto de la tarde. Para representar esta condición sin utilizar SET, sería necesaria

la siguiente expresión lógica:

(( A >= #9 am# ) AND ( A <= #2 pm# )) OR (( A >= #3 pm# ) AND ( A <= #6:45 pm# ))

Utilizando SET's, la expresión anterior puede simplificarse como:

Operando1

OperadorOperando

2Descripción

SET + SETUnión de conjuntos. Devuelve el conjunto formado por los elementos de Operando1 y de Operando2.

SET<not SET>

+<not SET>SET

Inserción en conjunto. Devuelve el con-junto formado por los elementos del Ope-rando de tipo SET mas el elemento de tipo no SET

SET ‐ SETDiferencia de conjuntos. Devuelve el con-junto de elementos de Operando1 que no están en Operando2.

SET<not SET>

‐<not SET>SET

Extracción de conjunto. Devuelve el resul-tado de eliminar el Operando no SET del Operando SET.

SET / SETIntersección de conjuntos. Devuelve el conjunto de elementos presente en los dos Operandos a la vez

VARIANT IN SET

Pertenencia a conjunto. Devuelve un valor de tipo BOOLEAN, TRUE si Operando1 per-tenece a Operando2, FALSE si Operando1 no pertenece a Operando2

© 2013 Tango/04 Computing Group Página 23

Page 32: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos SET

A IN { { #9 am# .. #2 pm# }, { #3 pm# .. #6:45 pm# } }

Que es mucho mas sencilla de leer. Aún mas, utilizando variables locales, la expresión puede quedar

como:

HorarioOficina := { { #9 am# .. #2 pm# }, { #3 pm# .. #6:45 pm# } };

A IN HorarioOficina

Que es mucho mas explicativa, ya que muestra de forma explícita (por el nombre de la variable

HorarioOficina), qué es lo que calcula la expresión.

© 2013 Tango/04 Computing Group Página 24

Page 33: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos ARRAY

Capítulo 88 Tipo de Datos ARRAY

Los tipos ARRAY o vector, permiten almacenar valores. Los Valores pueden ser de cualquier tipo de

datos, ya sean tipos de datos básicos o tipos de datos complejos, y dentro de un mismo ARRAY, los

elementos pueden ser de tipos distintos.

Se puede acceder a los elementos del ARRAY utilizando el operador [...]. Entre los caracteres [...] se

debe indicar el Índice del elemento, es decir la posición que el elemento ocupa dentro del ARRAY.

Pero los ARRAYs son asociativos. Esto quiere decir que no sólo se pueden identificar los elementos

por su posición en el ARRAY, si no también por una Clave de Acceso al elemento. Las claves de

acceso pueden ser de cualquier tipo excepto INTEGER.

Otro aspecto importante de los ARRAYs es que son dinámicos: no es necesario especificar sus

dimensiones (nº de elementos) a priori, si no que las dimensiones del ARRAY cambian a medida que se

van insertando elementos en el ARRAY.

8.1 Declaración de ARRAYsLa declaración de datos ARRAY debe de cumplir las siguientes reglas:

• Los ARRAY deben de estar delimitados por los caracteres '['...']'.

• Los elementos que forman un ARRAY, se separan por comas ','.

Si el acceso al ARRAY se va a realizar por clave, los elementos se declararán

especificando en primer lugar la Clave, seguida del carácter :, y a continuación el Valor del

elemento. Aunque se definan claves para los elementos del ARRAY, los elementos

también pueden ser accedidos por índice.

Si el acceso al ARRAY se va a hacer por Índice, pero los elementos del ARRAY no son

consecutivos, se declararán especificando en primer lugar la Posición, seguida del

carácter :, y a continuación el Valor del elemento.

Los Valores del ARRAY no tienen porqué ser del mismo tipo, es decir, en un ARRAY se

pueden incluir valores de distinto tipo.

Ejemplos:

• A := [ ]: Define un array vacío.

• A := [ 1, 3, 5, 7, 9 ]: Define un array con cinco elementos, (1, 3, 5 y 7). El valor 1 ocupa la 1ª

posición, el valor 3 ocupa la 2ª posición,...y el valor 9 ocupa la 5ª posición. Es decir:

A[1] = 1

© 2013 Tango/04 Computing Group Página 25

Page 34: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos ARRAY

A[2] = 3

...

A[5] = 9

• A := [ 'USUARIO1': 10, 'USUARIO2': 20, 'USUARIO3': 30 ]: Define un array que contiene tres

elementos (10, 20 y 30). El elemento 10 ocupa la primera posición y puede ser accedido por la

clave 'USUARIO1'. Es decir:

A['USUARIO1'] = 10

A['USUARIO2'] = 20

A['USUARIO3'] = 30

• A := [ 3: 10, 2: 20, 10: 30 ]: Define un array con tres elementos ( 10, 20, 30 ). El elemento 10

ocupa la 3ª posición, el elemento 20 ocupa la 2ª posición, y el elemento 30 ocupa la 10ª

posición.

A[3] = 10

A[2] = 20

A[10] = 30

• A := [ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6, 8, 10 ] ]: Define un ARRAY de dos dimensiones ( es decir, un

ARRAY cuyos elementos son ARRAYs )

A[1] = [ 1, 3, 5, 7, 9 ]

A[2] = [ 2, 4, 6, 8, 10 ]

A[1,1] = 1

A[1][1] = 1

A[1,2] = 3

A[2,3] =6

A[2][5] = 10

• A := ['USUARIO1': ['CPU':10, 'MEMORIA': 70], 'USUARIO5': ['CPU':20, 'MEMORIA': 50] ]:

Define un ARRAY de dos dimensiones (es decir, un ARRAY cuyos elementos son ARRAYs )

A[ 'USUARIO1' ] = [ 'CPU':10, 'MEMORIA': 70 ]

A[ 'USUARIO5' ] = [ 'CPU':20, 'MEMORIA': 50 ]

A[ 'USUARIO1', 'CPU' ] = 10

A[ 'USUARIO1', 'MEMORIA' ] = 70

8.2 Operaciones sobre ARRAYsSobre los datos de tipo ARRAY están definidos los siguientes operadores:

Operando1 Operador Operando2 Descripción

ARRAY[ INTE‐GER ]

xAcceso a Elementos por Índice. Accede al valor que ocupa la posición INDICE.

ARRAY[VARI‐ANT]

xAcceso a Elementos por Clave. Accede al valor que tiene como clave asociada el valor CLAVE.

© 2013 Tango/04 Computing Group Página 26

Page 35: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Tipo de Datos ARRAY

8.3 Utilización de ARRAYsUna de las grandes ventajas de los ARRAYs, es que no es necesario inicializarlos. Pueden declararse

variables como ARRAYs vacíos, y añadir los elementos a medida que se obtienen los elementos.

Los ARRAY's son de gran utilidad para representar estructuras de datos. Las Claves de los elementos

permiten tratar a los elementos del array como campos de una estructura.

Ejemplos:

Suponga que usted quiere guardar una lista de consumo de CPU por usuario del sistema. La aplicación

le proporciona, cada vez que se deben evaluar las expresiones, el nombre de un usuario en la variable

USER, y el consumo de CPU que realiza dicho usuario en la variable USER_CPU.

Usted podría definir una variable llamada CPU_PorUsuario, de tipo ARRAY como:

CPU_PorUsuario = []

Y definir la siguiente expresión:

CPU_PorUsuario[ USER ] = USER_CPU

Al cabo de un rato, usted tendrá una lista con los consumos de CPU por usuario similar a la siguiente:

CPU_PorUsuario = [ 'DAVID': 35.52, 'JUAN': 22.31, 'MARTA': 10.12 ]

Y por ejemplo, usted podría definir una condición si el usuario JUAN superase el 30 % de utilización

como:

CPU_PorUsuario[ 'JUAN' ] > 30

VARIANT IN ARRAY

Pertenencia a Array. Devuelve un valor de tipo BOOLEAN, TRUE si Operando1 está contenido en Operando2, FALSE si Operando1 no está contenido en Operando2

Operando1 Operador Operando2 Descripción

© 2013 Tango/04 Computing Group Página 27

Page 36: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Apéndice AApéndice A: Funciones en ALEV Script v1.5

A.1 Categorías de Funciones• Tratamiento de Arrays

• Tratamiento de Fecha y Hora

• Lógicas

• Aritméticas

• Estadísticas

• Procesamiento de Cadenas

• Conversión de Tipo

• De Información de Entorno

A.2 Funciones de Tratamiento de Arrays• FIND

• INDEXOF

• KEYAT

• KEYOF

• SIZEOF

• APPEND

• DELETE

• INSERT

A.2.1 FIND Descripción: Busca la primera aparición del ítem V en el array A, y retorna su clave o posición.

Definición: FUNCTION FIND( V VARIANT, A ARRAY ) : VARIANT

Resultado: La clave o posición en el array A donde se encuentra el ítem V.

© 2013 Tango/04 Computing Group Página 28

Page 37: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Parámetros:

• V: El VALUE que desea obtener.

• A: El array en el cual se busca VALUE.

A.2.2 INDEXOF Descripción: Devuelve el índice de un valor en un array.

Definición:

• FUNCTION INDEXOF( VALUE VARIANT, VECTOR ARRAY ) : VARIANT;

• FUNCTION ORD( VALUE VARIANT, VECTOR ARRAY ) : VARIANT;

Resultado:

• FALSE si el valor VALUE no está contenido en el array VECTOR.

• INTEGER si el valor VALUE está contenido en el array VECTOR, indicando su posición.

Parámetros:

• VALUE: Parámetro de Entrada. El valor del cual se desea obtener el índice.

• VECTOR: Parámetro de Entrada. El array en el cual se busca VALUE.

A.2.3 KEYAT Descripción: Retorna el valor KEY asociado al ítem en la posición POS en el Array.

Definición: FUNCTION KEYAT ( POS INTEGER, A ARRAY ) : VARIANT

Resultado: La clave en la posición POS del array A.

Parámetros:

• POS: La posición en el array para la cual desea obtener la KEY asociada.

• A: El array en el cual se busca POS.

A.2.4 KEYOF Descripción: Devuelve la clave (key) de un valor en un array asociativo (indexado por un valor no-

INTEGER).

Definición: FUNCTION KEYXOF( VALUE VARIANT, VECTOR ARRAY ) : VARIANT;

Resultado:

• FALSE si el valor VALUE no está contenido en el array VECTOR

• VARIANT si el valor VALUE está contenido en el array VECTOR, indicando su posición

Parámetros:

• VALUE: Parámetro de Entrada. El valor del cual se desea obtener la clave.

• VECTOR: Parámetro de Entrada. El array en el cual se busca VALUE.

A.2.5 SIZEOF Descripción: Devuelve el número de elementos en un array.

© 2013 Tango/04 Computing Group Página 29

Page 38: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Definición: FUNCTION SIZEOF( VECTOR ARRAY ) : INTEGER;

Resultado: INTEGER: El número de elementos en el array. Incluye todos los valores, aunque no estén

definidos.

Parámetros: VECTOR (Parámetro de Entrada). El array del cual se desea obtener el número de

elementos.

A.2.6 APPEND Descripción: Añade VALUE en la última posición del array A.

Definición: PROCEDURE APPEND( VAR A ARRAY, VALUE VARIANT )

Parámetros:

• A: El array en el cual desea añadir VALUE.

• VALUE: El ítem que desea añadir al array A.

A.2.7 DELETE Descripción: Elimina un elemento de un array.

Definición: PROCEDURE DELETE( VAR VECTOR ARRAY, KEY_POS VARIANT );

Resultado: Ninguno.

Parámetros:

• VECTOR: Parámetro de Entrada/Salida. El array del que se quiere eliminar un elemento. Debe

ser una variable de tipo ARRAY.

• KEY_POS: El índice (INTEGER) o la clave (no INTEGER) que se quiere eliminar.

A.2.8 INSERT Descripción: Inserta VALUE en KEY_POS del array A.

Definición: PROCEDURE INSERT( VAR A ARRAY, KEY_POS VARIANT, VALUE VARIANT)

Parámetros:

• A: El array donde quiere insertar el ítem VALUE.

• KEY_POS: La clave o posición donde desea insertar VALUE.

• VALUE: El ítem que desea insertar en el array A.

A.3 Funciones de Tratamiento de Fecha y Hora• DATE

• DAY

• DAYNAME

• DAYOFWEEK

• HOUR

• MINUTE

© 2013 Tango/04 Computing Group Página 30

Page 39: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• MONTH

• MONTHNAME

• NOW

• SECOND

• TIME

• WEEKOFMONTH

• WEEKOFYEAR

• YEAR

A.3.1 DATE (Funciones de Tratamiento de Fecha y Hora) Descripción: Dependiendo del argumento, devuelve un valor de fecha.

Definición:

• FUNCTION DATE( ) : DATE;

• FUNCTION DATE( DAY INTEGER, MONTH INTEGER, [YEAR INTEGER] ) : DATE;

Resultado: De tipo DATE, dependiendo de los parámetros. Ver Parámetros..

Parámetros:

• Sin Parámetros:Devuelve la fecha actual.

• DAY, MONTH, YEAR: Devuelve la fecha de día DAY, mes MONTH y año YEAR. Si YEAR se

omite, se toma el año en curso.

A.3.2 DAY Descripción: Dependiendo de los parámetros, devuelve valores relacionados con días.

Definición:

• FUNCTION DAY( ) : INTEGER;

• FUNCTION DAY( D DATETIME ) :INTEGER;

• FUNCTION DAY( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

• Sin Parámetros:Devuelve el día en curso.

• D DATETIME: Devuelve el día de D.

• R REAL: Devuelve un valor de fecha y hora correspondiente a R días. Los meses se toman de

30 días y los años de 360 días.

A.3.3 DAYNAME Descripción: Devuelve el nombre del día especificado por una fecha.

Definición: FUNCTION DAYNAME( D DATETIME ) :STRING;

© 2013 Tango/04 Computing Group Página 31

Page 40: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Resultado: Un string con el nombre del día: Lunes, Martes,...

Parámetros: D: La fecha de la cual se quiere obtener el nombre del día.

A.3.4 DAYOFWEEK Descripción: Devuelve el día de la semana del día especificado pos una fecha.

Definición: FUNCTION DAYOFWEEK( D DATETIME ) :INTEGER;

Resultado: Un entero entre 1 y 7, siendo:

• 1 : Domingo

• 2 : Lunes

• 3 : Martes

• 4 : Miércoles

• 5 : Jueves

• 6 : Viernes

• 7 : Sábado

Parámetros: D: La fecha de cuyo día se quiere obtener el nombre.

A.3.5 HOUR Descripción: Dependiendo de los parámetros, devuelve valores relacionados con la hora.

Definición:

• FUNCTION HOUR( ) :INTEGER;

• FUNCTION HOUR( D DATETIME ) :INTEGER;

• FUNCTION HOUR( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

• Sin Parámetros: Devuelve la hora en curso.

• D DATETIME: Devuelve la hora de D.

• R REAL: Devuelve un valor de fecha y hora correspondiente a R horas.

A.3.6 MINUTE Descripción: Dependiendo de los parámetros, devuelve valores relacionados con minutos.

Definición:

• FUNCTION MINUTE( ) :INTEGER;

• FUNCTION MINUTE( D DATETIME ) :INTEGER;

• FUNCTION MINUTE( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

© 2013 Tango/04 Computing Group Página 32

Page 41: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• Sin Parámetros: Devuelve el minuto en curso.

• D DATETIME: Devuelve los minutos de D.

• R REAL: Devuelve un valor de fecha y hora correspondiente a R minutos.

A.3.7 MONTH Descripción: Dependiendo de los parámetros, devuelve valores relacionados con meses.

Definición:

• FUNCTION MONTH( ) : INTEGER;

• FUNCTION MONTH( D DATETIME ) :INTEGER;

• FUNCTION MONTH( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

• Sin Parámetros: Devuelve el mes en curso.

• D DATETIME: Devuelve el mes de D.

• R REAL: Devuelve un valor de fecha y hora correspondiente a R meses. Los meses se toman

de 30 días y los años de 360 días.

A.3.8 MONTHNAME Descripción: Devuelve el nombre del mes de la fecha especificada.

Definición: FUNCTION MONTHNAME( D DATETIME ) STRING;

Resultado: Una cadena de caracteres con el nombre del mes.

Parámetros: D: La fecha de cuyo mes se quiere obtener el nombre.

A.3.9 NOW Descripción: Devuelve la fecha y hora actual del sistema.

Definición: FUNCTION NOW( ) : DATETIME;

Resultado: La fecha y hora actual.

Parámetros: Ninguno.

A.3.10 SECOND Descripción: Dependiendo de los parámetros, devuelve valores relacionados con segundos.

Definición:

• FUNCTION SECOND( ) : REAL;

• FUNCTION SECOND( D DATETIME ) :INTEGER;

• FUNCTION SECOND( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

© 2013 Tango/04 Computing Group Página 33

Page 42: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• Sin Parámetros: Devuelve el segundo (y milisegundos) en curso.

• D DATETIME: Devuelve los segundos (y milisegundos) de D.

• R REAL: Devuelve un valor de fecha y hora correspondiente a R segundos (y milisegundos).

A.3.11 TIME Descripción: Dependiendo del argumento, devuelve un valor de hora.

Definición:

• FUNCTION TIME( ) : TIME;

• FUNCTION TIME( H INTEGER, M INTEGER, [S INTEGER, MS INTEGER] ) : TIME;

Resultado: De tipo TIME, dependiendo de los parámetros. Ver Parámetros..

Parámetros:

• Sin Parámetros: Devuelve la hora actual.

• H, M, S, MS: Devuelve la hora H, minuto M, segundo S y milisegundo MS. Si S y MS se omite,

se toman 0 segundos, 0 milisegundos.

A.3.12 WEEKOFMONTH Descripción: Devuelve la semana del mes a la que pertenece una fecha dada.

Definición: FUNCTION WEEKOFMONTH( D DATETIME ) :INTEGER;

Resultado: El número de semana del mes a la que pertenece la fecha D. Un entero entre 1 y 5

Parámetros: D: La fecha de la que se quiere obtener la semana.

A.3.13 WEEKOFYEAR Descripción: Devuelve la semana del año a la que pertenece una fecha.

Definición: FUNCTION WEEKOFYEAR( D DATETIME ) :INTEGER;

Resultado: El número de semana del año a la que pertenece la fecha D. Un entero entre 1 y 53

Parámetros: D: La fecha de la que se quiere obtener el número de semana.

A.3.14 YEAR Descripción: Dependiendo de los parámetros, devuelve valores relacionados con años.

Definición:

• FUNCTION YEAR( ) : INTEGER;

• FUNCTION YEAR( D DATETIME ) :INTEGER;

• FUNCTION YEAR( R REAL ) :DATETIME;

Resultado: Ver Parámetros.

Parámetros:

• Sin Parámetros: Devuelve el año en curso.

• D DATETIME: Devuelve el año de D.

© 2013 Tango/04 Computing Group Página 34

Page 43: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• R REAL: Devuelve un valor de fecha y hora correspondiente a R años. Los meses se toman

de 30 días y los años de 360 días.

A.4 Funciones Lógicas• IIF

• SELECT

A.4.1 IIF Descripción: Selecciona de entre dos valores en función de la condición especificada.

Definición: FUNCTION IIF( CONDITION BOOLEAN, IF_TRUE VARIANT, IF_FALSE VARIANT ) :

VARIANT;

Resultado:

• Si CONDITION = TRUE, entonces devuelve el valor IF_TRUE.

• Si CONDITION = FALSE, entonces devuelve el valor IF_FALSE.

Parámetros:

• CONDITION: Condición de selección.

• IF_TRUE: Valor que se devuelve en el caso de cumplirse la condición.

• IF_FALSE: Valor que se devuelve en el caso de no cumplirse la condición.

A.4.2 SELECT Descripción: Selecciona uno de entre varios valores.

Definición: FUNCTION SELECT( E VARIANT, [V0 VARIANT, R0 VARIANT ], DEFAULT VARIANT ) :

VARIANT;

Resultado: Vi, si E = Vi para algún i. El último de los argumentos, el valor por defecto, si E <> Vi para

todo i.

Parámetros:

• E: Expresión de selección.

• Vi: Valor de selección.

• Ri: Resultado de la selección.

• Default : El valor que se devuelve en caso de que la expresión de selección no sea igual a

ninguno de los valores de selección.

A.5 Funciones Aritméticas• ABS

• ARCCOS

• ARCSIN

• ARCTAN

© 2013 Tango/04 Computing Group Página 35

Page 44: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• COS

• EXP

• FRAC

• LN

• POW

• RANDOM

• ROUND

• SIN

• SQRT

• TAN

A.5.1 ABS Descripción: Devuelve el valor absoluto del argumento.

Definición: FUNCTION ABS( NUMBER VARIANT ) : VARIANT;

Resultado: El valor absoluto de NUMBER. El tipo del resultado es el mismo que el del argumento

NUMBER.

Parámetros: NUMBER: Número ( REAL o INTEGER ) del cual se desea obtener el valor absoluto.

A.5.2 ARCCOS Descripción: Devuelve el arco (en radianes) cuyo coseno vale el argumento.

Definición: FUNCTION ARCCOS( COSINE VARIANT ) : REAL;

Resultado: El arco (en radianes) cuyo coseno vale el COSINE.

Parámetros: COSINE: Valor de coseno del cual se calcula el arco. Puede ser INTEGER o REAL.

A.5.3 ARCSIN Descripción: Devuelve el arco (en radianes) cuyo seno vale el argumento.

Definición: FUNCTION ARCSIN( SINE VARIANT ) : REAL;

Resultado: El arco (en radianes) cuyo seno vale el SINE.

Parámetros: SINE: Valor de seno del cual se calcula el arco. Puede ser INTEGER o REAL.

A.5.4 ARCTAN Descripción: Devuelve el arco (en radianes) cuya tangente vale el argumento.

Definición: FUNCTION ARCTAN( TANGET VARIANT ) : REAL;

Resultado: El arco (en radianes) cuya tangente vale el TANGENT.

Parámetros: TANGENT: Valor de tangente de la cual se calcula el arco. Puede ser INTEGER o REAL.

A.5.5 COS

© 2013 Tango/04 Computing Group Página 36

Page 45: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Descripción: Calcula el coseno del argumento

Definición: FUNCTION COS( ANGLE VARIANT ) : REAL;

Resultado: El coseno de ANGLE.

Parámetros: ANGLE: Angulo (en radianes). Puede ser INTEGER o REAL.

A.5.6 EXP Descripción: Calcula el resultado de elevar el número e al argumento

Definición: FUNCTION EXP( N VARIANT ) : REAL;

Resultado: en

Parámetros: N: INTEGER o REAL, el exponente al que se eleva el número e.

A.5.7 FRAC Descripción: Devuelve la parte decimal de un número real.

Definición: FUNCTION FRAC( N VARIANT ) :REAL ;

Resultado: La parte decimal de N.

Parámetros: N: INTEGER o REAL, número del que se quiere obtener la parte decimal.

A.5.8 LN Descripción: Calcula el logaritmo neperiano del argumento.

Definición: FUNCTION LN( N VARIANT) : REAL;

Resultado: El logaritmo neperiano de N.

Parámetros: N INTEGER o REAL, el número del cual se quiere obtener el logaritmo neperiano.

A.5.9 POW Descripción: Calcula la potencia de base y exponente especificados en los argumentos.

Definición: FUNCTION POW( BASE VARIANT, EXPONENT VARIANT ) : VARIANT;

Resultado: Si el resultado puede representarse como un número INTEGER, el resultado será

INTEGER. Si no, será REAL.

Parámetros: BASE, EXPONENTE: Números, INTEGER o REAL

A.5.10 RANDOM Descripción: Devuelve un número aleatorio dentro del rango especificado.

Definición:

• FUNCTION RANDOM( ) : REAL;

• FUNCTION RANDOM( N INTEGER ) : INTEGER;

• FUNCTION RANDOM( N REAL ) : REAL;

• FUNCTION RANDOM( N SET ) : VARIANT;

© 2013 Tango/04 Computing Group Página 37

Page 46: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• FUNCTION RANDOM( N ARRAY ) : VARIANT;

• FUNCTION RANDOM( ... ) : INTEGER;

Resultado: Depende de los parámetros especificados, ver Parámetros.

Parámetros:

• Sin parámetros: Devuelve un número aleatorio real, en el intervalo [0,1]

• N INTEGER: Devuelve un número aleatorio entero, en el intervalo [0,N]

• N REAL: Devuelve un número aleatorio real, en el intervalo [0,N]

• N SET: Devuelve un valor aleatorio, comprendido en el set N.

• N ARRAY: Devuelve un valor aleatorio de entre los elementos del array N.

• Más de un parámetro: Devuelve uno de los parámetros de forma aleatoria.

A.5.11 ROUND Descripción: Redondea un valor REAL, devolviendo el valor entero que más se aproxima a dicho

valor.

Definición: FUNCTION ROUND( N VARIANT ) : INTEGER;

Resultado: El valor entero que más se aproxima a N, de modo que ABS( N - ROUND( N ) ) <= 0.5 para

todo N.

Parámetros: N, el valor que se quiere redondear. Puede ser INTEGER o REAL.

A.5.12 SIN Descripción: Calcula el seno del argumento

Definición: FUNCTION SIN( ANGLE VARIANT ) : REAL;

Resultado: El seno del ángulo ANGLE.

Parámetros: ANGLE : Angulo (en radianes). Puede ser INTEGER o REAL.

A.5.13 SQRT Descripción: Calcula la raíz cuadrada del argumento.

Definición: FUNCTION SQRT( N VARIANT ) : REAL;

Resultado: La raíz cuadrada del argumento.

Parámetros: N: Número del cual se calcula la raíz cuadrada.

A.5.14 TAN Descripción: Calcula la tangente del argumento

Definición: FUNCTION TAN( ANGLE VARIANT ) : REAL;

Resultado: La tangente del argumento

Parámetros: ANGLE: Angulo (en radianes). Puede ser INTEGER o REAL.

© 2013 Tango/04 Computing Group Página 38

Page 47: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

A.6 Funciones Estadísticas • AVERAGE

• MAX

• MIN

• VARIANCE

A.6.1 AVERAGE Descripción: Retorna el valor promedio de los argumentos de tipo número (INTEGER o REAL ). Si solo

hay un argumento, y es un ARRAY, devuelve el valor promedio de los ítems de tipo número.

Definición: FUNCTION AVERAGE( V VARIANT, ... ) : REAL

Resultado: El promedio aritmético de los valores pasados como parámetros.

Parámetros: V: Si V es un valor de tipo Array, el resultado es el promedio aritmético de los ítems

enteros y reales en el array. Si hay más de un parámetro (digamos V0, V1, ...VN), el resultado es el

promedio aritmético de V0...VN.

A.6.2 MAX Descripción: Obtiene el máximo de los argumentos.

Definición: FUNCTION MAX( V VARIANT, ...) : VARIANT;

Resultado:

• Si V es un ARRAY, devuelve el máximo de los valores del array.

• Si V no es un ARRAY, devuelve el máximo de los argumentos.

Parámetros: V Si es un ARRAY, no se esperan más argumentos. Si no es un array, se esperan al

menos dos argumentos.

A.6.3 MIN Descripción: Obtiene el mínimo de los argumentos.

Definición: FUNCTION MIN( V VARIANT, ...) : VARIANT;

Resultado:

• Si V es un ARRAY, devuelve el mínimo de los valores del array.

• Si V no es un ARRAY, devuelve el mínimo de los argumentos.

Parámetros: V Si es un ARRAY, no se esperan más argumentos. Si no es un array, se esperan al

menos dos argumentos.

A.6.4 VARIANCE Descripción: Retorna el valor de la varianza de los argumentos de tipo número (INTEGER o REAL). Si

solo hay un argumento, y es un ARRAY, retorna el valor de la varianza de los ítems de tipo número.

Definición: FUNCTION VARIANCE( V VARIANT, ... ) : REAL

© 2013 Tango/04 Computing Group Página 39

Page 48: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Resultado: La varianza estadística (la desviación estándar elevada al cuadrado) de los valores

pasados como parámetros.

Parámetros: V: Si V es un valor de tipo Array, el resultado es la varianza estadística de los ítems

enteros y reales en el array. Si hay más de un parámetro (digamos V0, V1, ...VN), el resultado es la

varianza estadística de V0...VN.

A.7 Funciones de Tratamiento de Strings• COPY

• DELETE

• FORMAT

• HEAD

• LEN

• LENGTH

• LOCATE

• LOWER

• LOWERCASE

• LTRIM

• POS

• POSITION

• REPLACE

• REVERSE

• RTRIM

• SUBS

• SUBSTRING

• TAIL

• TRIM

• UPPER

• UPPERCASE

A.7.1 COPY Descripción: Copia una porción de una cadena de caracteres.

Definición: FUNCTION COPY( S STRING, INDEX INTEGER [, LEN INTEGER] ) : STRING;

Resultado: Si se especifica una longitud LEN, devuelve la subcadena que empieza en INDEX de

longitud LEN. Si no, devuelve la subcadena que empieza en INDEX y que termina al final de S.

Parámetros:

• S: Cadena de caracteres de la que se obtiene la subcadena.

© 2013 Tango/04 Computing Group Página 40

Page 49: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• INDEX: Posición en la que empieza la subcadena.

• COUNT: Opcional. La longitud de la subcadena.

A.7.2 DELETE Descripción: Corta o elimina una subcadena de una cadena de caracteres dada.

Definición: FUNCTION DELETE( S STRING, INDEX INTEGER [, LEN INTEGER ] ) : STRING;

Resultado: La cadena de caracteres S de la que se ha eliminado la subcadena que empieza en la

posición INDEX y que tiene longitud LEN. Si LEN se omite, devuelve la cadena S hasta la posición

INDEX.

Parámetros:

• S: Cadena de la que se quieren eliminar la subcadena.

• INDEX: Posición en la que empieza la subcadena que se quiere eliminar.

• LEN: Opcional. Indica la longitud de la subcadena que se quiere eliminar. Si se omite, la

subcadena empieza en la posición INDEX y termina al final de S.

A.7.3 FORMAT Descripción: Formatea la cadena S, reemplazando todas las subexpresiones de S delimitadas por el

carácter % por su valor.

Definición: FUNCTION FORMAT( S STRING ) : STRING

Resultado: Un valor de cadena, consistente en el parámetro S donde todas las expresiones ALEV

delimitadas por %han sido reemplazadas por su valor.

Parámetros: S: Una cadena formateada, consistente de texto plano y expresiones ALEV delimitadas

por %, como en el siguiente ejemplo:

("Uno más dos es %1+2%") = " Uno más dos es 3")

A.7.4 HEAD Descripción: Devuelve el primer carácter de una cadena de caracteres.

Definición: FUNCTION HEAD( S STRING ) : STRING;

Resultado: El primer carácter de la cadena de caracteres S.

Parámetros: S: Cadena de caracteres de la que se quiere obtener el primer carácter.

A.7.5 LEN Descripción: Retorna la longitud de una cadena de caracteres.

Definición: FUNCTION LEN( S STRING ) : INTEGER

Resultado: La longitud de la cadena de caracteres S.

Parámetros: La cadena de caracteres cuya longitud se desea obtener.

A.7.6 LENGTH Descripción: Devuelve la longitud de una cadena de caracteres,

© 2013 Tango/04 Computing Group Página 41

Page 50: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Definición: FUNCTION LENGTH( S STRING ) : INTEGER;

Resultado: La longitud de la cadena de caracteres S.

Parámetros: S: La cadena de caracteres de la que se quiere obtener la longitud.

A.7.7 LOCATE Descripción: Busca la posición de una subcadena dentro de una cadena de caracteres.

Definición: FUNCTION LOCATE( SUBS STRING, S STRING ) : INTEGER;

Resultado: La posición de SUBS en S.

Parámetros:

• SUBS: La subcadena que se busca.

• S: La cedena de caracteres en la que busca.

A.7.8 LOWER Descripción: Convierte el argumento de una cadena de caracteres a minúsculas.

Definición: FUNCTION LOWER( S STRING ) : STRING

Resultado: La cadena de caracteres S convertida a minúsculas.

Parámetros: La cadena de caracteres que desea convertir a minúsculas.

A.7.9 LOWERCASE Descripción: Pasa a minúsculas la cadena de caracteres pasada como argumento.

Definición: FUNCTION LOWERCASE( S STRING ) : STRING;

Resultado: La cadena de caracteres S convertida a minúsculas.

Parámetros: S: La cadena de caracteres que se quiere convertir a minúsculas.

A.7.10 LTRIM Descripción: Elimina los espacios iniciales o a la izquierda de la cadena de caracteres pasada como

argumento.

Definición: FUNCTION LTRIM( S STRING ) : STRING;

Resultado: La cadena de caracteres S de la que se han eliminado todos los espacios iniciales

Parámetros: S: La cadena de caracteres de la que se quieren eliminar los caracteres en blanco

iniciales.

A.7.11 POS Descripción: Busca la posición de una subcadena dentro de una cadena de caracteres.

Definición: FUNCTION POS( SUBS STRING, S STRING ) : INTEGER;

Resultado: La posición de SUBS en S.

Parámetros:

© 2013 Tango/04 Computing Group Página 42

Page 51: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• SUBS: La subcadena que se busca.

• S: La cadena de caracteres en la que se busca.

A.7.12 POSITION Descripción: Busca la posición de una subcadena dentro de una cadena de caracteres.

Definición: FUNCTION POSITION( SUBS STRING, S STRING ): INTEGER

Resultado: La posición de SUBS en S.

Parámetros:

• SUBS: La subcadena que se busca.

• S: La cadena de caracteres en la que se busca.

A.7.13 REPLACE Descripción: Reemplaza una subcadena por otra, dentro de una cadena de caracteres.

Definición: FUNCTION REPLACE( S STRING, S1 STRING, S2 STRING ) : STRING;

Resultado: La cadena de caracteres S, en la que se han reemplazado las ocurrencias de la subcadena

S1 por la subcadena S2.

Parámetros:

• S: La cadena de caracteres en la que se quiere hacer el reemplazo.

• S1: La subcadena a reemplazar.

• S2: La subcadena por la que se reemplaza.

A.7.14 REVERSE Descripción: Invierte una cadena de caracteres.

Definición: FUNCTION REVERSE( S STRING ) : STRING;

Resultado: La cadena de caracteres S invertida, es decir, en la que el primer carácter pasa a la última

posición, el segundo carácter a la penúltima, etc.

Parámetros: S: La cadena de caracteres que se quiere invertir.

A.7.15 RTRIM Descripción: Elimina los espacios en blanco al final de una cadena de caracteres.

Definición: FUNCTION RTRIM( S STRING ) : STRING;

Resultado: La cadena de caracteres S de la que se han eliminado los espacios en blanco finales.

Parámetros: S : La cadena de caracteres de la que se quieren eliminar los espacios en blanco finales.

A.7.16 SUBS Descripción: Copia una porción de la cadena de caracteres.

Definición: FUNCTION SUBS( S STRING, INDEX INTEGER [, COUNT INTEGER] ) : STRING;

© 2013 Tango/04 Computing Group Página 43

Page 52: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Resultado: Si se ha especificado un COUNT, retorna una subcadena, que empieza en INDEX con la

longitud LEN. Si no, retorna la subcadena que empieza en INDEX y finaliza en S.

Parámetros:

• Cadena de caracteres de la cual se toma la subcadena.

• INDEX: Posición donde empieza la subcadena.

• COUNT: Opcional. El contador de la subcadena.

A.7.17 SUBSTRING Descripción: Copia una porción de la cadena de caracteres.

Definición: FUNCTION SUBS( S STRING, INDEX INTEGER [, COUNT INTEGER] ) : STRING;

Resultado: Si se ha especificado un COUNT, retorna una subcadena, que empieza en INDEX con la

longitud LEN. Si no, retorna la subcadena que empieza en INDEX y finaliza en S.

Parámetros:

• Cadena de caracteres de la cual se toma la subcadena.

• INDEX: Posición donde empieza la subcadena.

• COUNT: Opcional. El contador de la subcadena.

A.7.18 TAIL Descripción: Devuelve la cola de una cadena de caracteres, es decir, la cadena original menos el

primer carácter.

Definición: FUNCTION TAIL( S STRING ) : STRING;

Resultado: La cadena de caracteres S menos el primer carácter.

Parámetros: S: La cadena de caracteres de la que se quiere extraer el primer carácter.

A.7.19 TRIM Descripción: Elimina los espacios en blanco al principio y al final de una cadena de caracteres.

Definición: FUNCTION TRIM( S STRING ) : STRING;

Resultado: La cadena de caracteres S de la que se han eliminado los espacios en blanco al principio y

al final.

Parámetros: S: La cadena de caracteres S de la que se quieren eliminar los espacios en blanco al

principio y al final.

A.7.20 UPPER Descripción: Pasa a mayúsculas la cadena de caracteres pasada como argumento.

Definición: FUNCTION UPPER( S STRING ) : STRING

Resultado: La cadena de caracteres S convertida a mayúsculas.

Parámetros: La cadena de caracteres que desea pasar a mayúsculas.

© 2013 Tango/04 Computing Group Página 44

Page 53: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

A.7.21 UPPERCASE Descripción: Pasa a mayúsculas la cadena de caracteres pasada como argumento.

Definición: FUNCTION UPPERCASE( S STRING ) : STRING;

Resultado: La cadena de caracteres S convertida a mayúsculas.

Parámetros: S: La cadena de caracteres que se quiere convertir a mayúsculas.

A.8 Funciones de Conversión de Tipo• BOOLEAN

• DATE

• DATETIME

• INTEGER

• REAL

• REG

• REGEXP

• STRING

• TIME

A.8.1 BOOLEAN Descripción: Convierte el argumento a lógico.

Definición: FUNCTION BOOLEAN( VALUE VARIANT ) : BOOLEAN;

Resultado: El valor V convertido a lógico.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

A.8.2 DATE Descripción: Convierte el argumento a fecha.

Definición: FUNCTION DATE( VALUE VARIANT ) : DATE;

Resultado: El valor V convertido a fecha.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

A.8.3 DATETIME Descripción: Convierte el argumento a fecha y hora.

Definición: FUNCTION DATETIME( VALUE VARIANT ) : DATETIME;

Resultado: El valor V convertido a fecha y hora.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

© 2013 Tango/04 Computing Group Página 45

Page 54: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

A.8.4 INTEGER Descripción: Convierte el argumento a entero.

Definición: FUNCTION INTEGER( VALUE VARIANT ) : INTEGER;

Resultado: El valor V convertido a entero.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

A.8.5 REAL Descripción: Convierte el argumento a real.

Definición: FUNCTION REAL( VALUE VARIANT ) : REAL;

Resultado: El valor V convertido a real.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

A.8.6 REG Descripción: Convierte VALUE a un valor de tipo Expresión Regular.

Definición: FUNCTION REG( PATTERN STRING ) : REGEXP

Resultado: El valor de la cadena PATTERN convertido a un valor de Expresión Regular.

Parámetros: PATTERN: La cadena que desea convertir a Expresión Regular.

A.8.7 REGEXP Descripción: Convierte VALUE a un valor de tipo Expresión Regular.

Definición: FUNCTION REGEXP( PATTERN STRING ) : REGEXP

Resultado: El valor de la cadena PATTERN convertido a un valor de Expresión Regular.

Parámetros: PATTERN: La cadena que desea convertir a Expresión Regular.

A.8.8 STRING Descripción: Convierte el argumento a cadena de caracteres.

Definición: FUNCTION STRING( VALUE VARIANT ) : STRING;

Resultado: El valor V convertido a cadena de caracteres.

Parámetros: Value (Parámetro de Entrada).Variable de cualquier tipo (VARIANT) excepto VOID.

A.8.9 TIME Descripción: Convierte el argumento a hora.

Nota

Recuerde utilizar expresiones regulares generadas con funciones REG/REGEXP en el

operando de la derecha para los operadores LIKE/MATCH.

Nota

Recuerde utilizar expresiones regulares generadas con funciones REG/REGEXP en el

operando de la derecha para los operadores LIKE/MATCH.

© 2013 Tango/04 Computing Group Página 46

Page 55: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

Definición: FUNCTION TIME( VALUE VARIANT ) : TIME;

Resultado: El valor V convertido a hora.

Parámetros: Value (Parámetro de Entrada). Variable de cualquier tipo (VARIANT) excepto VOID.

A.9 Funciones de Información de Entorno• ASSIGNED

• DEFINED

• EXIST

• ISBLANK

• ISNULL

• ISNUM

• ISZERO

• TYPENAME

A.9.1 ASSIGNED Descripción: Comprueba si una variable está definida, y tiene un valor asignado.

Definición:

• FUNCTION EXIST( VARREF ) : BOOLEAN;

• FUNCTION ASSIGNED( VARREF ) : BOOLEAN;

Resultado:

• TRUE si la variable VARREF está definida y asignada

• FALSE si no está definida o no está asignada.

Parámetros: VARREF (Parámetro de Entrada). Referencia a una variable (nombre de la variable), o a

un elemento de la variable si ésta es un array.

A.9.2 DEFINED Descripción: Comprueba si una variable está definida.

Definición: FUNCTION DEFINED( VARREF ) : BOOLEAN;

Resultado:

• TRUE si la variable VARREF está definida

• FALSE si no está definida.

Parámetros: VARREF (Parámetro de Entrada). Referencia a una variable (nombre de la variable), o a

un elemento de la variable si ésta es un array.

A.9.3 EXIST Descripción: Comprueba si una variable está definida, y tiene un valor asignado.

Definición:

© 2013 Tango/04 Computing Group Página 47

Page 56: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• FUNCTION EXIST( VARREF ) : BOOLEAN;

• FUNCTION ASSIGNED( VARREF ) : BOOLEAN;

Resultado:

• TRUE si la variable VARREF está definida y asignada

• FALSE si no está definida o no está asignada.

Parámetros: VARREF (Parámetro de Entrada). Referencia a una variable (nombre de la variable), o a

un elemento de la variable si ésta es un array.

A.9.4 ISBLANK Descripción: Comprueba si un valor de tipo string contiene únicamente blancos (espacios).

Definición: FUNCTION ISBLANK( S STRING ) : BOOLEAN;

Resultado:

• TRUE si S contiene únicamente blancos.

• FALSE .en caso contrario.

Parámetros: S (Parámetro de Entrada). El valor que se desea comprobar.

A.9.5 ISNULL Descripción: Retorna TRUE si el valor V está asignado (es decir, V <> NULL), en caso contrario

devuelve FALSE.

Definición: FUNCTION ISNULL( V VARIANT ) : BOOLEAN

Resultado:

• TRUE si V está asignado

• FALSE en caso contrario.

Parámetros: V: El valor que desea probar.

A.9.6 ISNUM Descripción: Comprueba si un valor de tipo string es una representación válida de un valor numérico

(INTEGER o REAL).

Definición: FUNCTION ISNUM( S STRING ) : BOOLEAN;

Resultado:

• TRUE si S representa un número.

• FALSE .en caso contrario.

Parámetros: S (Parámetro de Entrada). El valor que se desea comprobar.

A.9.7 ISZERO Descripción: Comprueba si un valor numérico (INTEGER o REAL) es cero.

Definición: FUNCTION ISZERO( N REAL ) : BOOLEAN;

Resultado:

© 2013 Tango/04 Computing Group Página 48

Page 57: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice A : Funciones en ALEV Script v1.5

• TRUE si N es cero.

• FALSE .en caso contrario.

Parámetros: S (Parámetro de Entrada). El valor que se desea comprobar.

A.9.8 TYPENAME Descripción: Devuelve un string con el tipo del valor indicado.

Definición: FUNCTION TYPENAME( V VARIANT ) : STRING;

Resultado: STRING El tipo de V.

Parámetros: V (Parámetro de Entrada). El valor del cual se desea obtener el tipo.

© 2013 Tango/04 Computing Group Página 49

Page 58: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice B : Sintáxis

Apéndice B Apéndice B: Sintáxis

Se indican en negrita y entre comillas simples ‘ todos los terminales o palabras clave. Los símbolos no

terminales se muestran entre los símbolos ‘<’ ‘>’. Los símbolos ‘[‘... ‘]’ indican que la secuencia

contenida es opcional. El símbolo | indica que los símbolos separados son opcionales, y equivale a la

operación lógica OR. El símbolo + indica que los símbolos separados son adicionales, y equivale a la

operación lógica AND.

• <Letra> = ‘A’ | ’B’ | ...’Z’|'&'

• <Digito> = ‘0’ | ‘1’ | ...’9’

• <Expresión Valida> = ( <Asignación> | <Expresión> ) + [ ‘;’ + [<Expresión Valida>] ]

• <Asignación> = <Variable> + ‘:=’ + <Expresión>

• <Variable> = <Identificador>

• <Expresión> = <Expresión Simple> + [ ( '=' | '<>' | '>' | '>=' | '<' | '<=' ) + <Expresión Simple> ]

• <Expresión Simple> = <Termino> + [ ( '+' | '-' | 'OR' ) + <Termino> ]

• <Termino> = <Factor> + [ ( '' | '/' | ‘^’ | 'DIV' | 'MOD' | 'AND' | ‘IN’ | 'LIKE' | 'MATCH' ) + <Factor> ]

• <Factor> = <Valor> | ( ( '+' | '-' ) +<Factor>) | ( 'NOT' + <Factor> )

• <Valor> = <Constante> | <Identificador> | <Llamada Función> | '('+ <Expresión> +')'

• <Constante> = ‘PI’ | <Entero> | <Real> | <String> | <Booleano> | <Fecha y Hora> | <Set> |

<Array>

• <Entero> = <Digito> + [ <Digito> ]

• <Real> = <Entero> + [<Separador Decimal> + <Entero>] + [‘E’ + [‘+’ | ‘-‘] + <Entero>]

• <String> = 'BLANK' | (‘’’ + [ <Caracter> ] + ‘’’) | (‘"’ + [ <Caracter> ] + ‘"’)

• <Booleano> = ‘TRUE’ | ‘FALSE’

• <Fecha y Hora> = ‘#’ + <Cadena de fecha y hora> ‘#’

• <Set> = '{' + ( [<Expresión>] | [<Rango>] ) + '}'

• <Array> = '[' + [ <Expresión> | ( <Clave> + ':' + <Expresión> ) + [ ',' + <Expresión> | ( <Clave> +

':' + <Expresión> ) ] ] + ']'

• <Identificador> = <Letra> + [ <Letra> | <Digito> | ‘_’ ] + [ < Indice> ]

© 2013 Tango/04 Computing Group Página 50

Page 59: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice B : Sintáxis

• <Rango> = <Valor> + '..' + <Valor>

• <Índice> = ( <Estilo 1> | <Estilo 2> )

• <Estilo1> = '[' + <Expresión> + [ ',' + <Expresión> ] + ']'

• <Estilo2> = '[' + <Expresión> + ']' + [ '[' + <Expresión> + ']' ]

• <Clave> = <Expresión>

• <Llamad Función> = <Identificador de Función> + '(' + [ <Lista de Argumentos> ] + ')'

• <Lista de Argumentos> = <Expresión> + [ ',' + <Expresión> ]

© 2013 Tango/04 Computing Group Página 51

Page 60: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice C : Contactar con Tango/04

Apéndice CApéndice C: Contactar con Tango/04

North America

Tango/04 North America

PO Box 3301

NH 03458 Peterborough USA

Phone: 1-800-304-6872 / 603-924-7391

Fax: 858-428-2864

[email protected]

www.tango04.com

EMEA

Tango/04 Computing Group S.L.

Avda. Meridiana 358, 5 A-B

08027 Barcelona Spain

Phone: +34 93 274 0051

Fax: +34 93 345 1329

[email protected]

www.tango04.com

Italy

Tango/04 Italy

Viale Garibaldi 51/53

13100 Vercelli Italy

Phone: +39 0161 56922

Fax: +39 0161 259277

[email protected]

www.tango04.it

Sales Office in France

Tango/04 France

La Grande Arche

Paroi Nord 15ème étage

92044 Paris La Défense France

Phone: +33 01 40 90 34 49

Fax: +33 01 40 90 31 01

[email protected]

www.tango04.fr

Sales Office in Switzerland

Tango/04 Switzerland

18, Avenue Louis Casaï

CH-1209 Genève

Switzerland

Phone: +41 (0)22 747 7866

Fax: +41 (0)22 747 7999

[email protected]

www.tango04.fr

Latin American Headquarters

Barcelona/04 Computing Group SRL (Argentina)

Avda. Federico Lacroze 2252, Piso 6

1426 Buenos Aires Capital Federal

Argentina

Phone: +54 11 4774-0112

Fax: +54 11 4773-9163

[email protected]

www.barcelona04.com

© 2013 Tango/04 Computing Group Página 52

Page 61: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Apéndice C : Contactar con Tango/04

Sales Office in Peru

Barcelona/04 PERÚ

Centro Empresarial Real

Av. Víctor A. Belaúnde 147, Vía Principal 140 Edificio Real Seis, Piso 6

L 27 Lima

Perú

Phone: +51 1 211-2690

Fax: +51 1 211-2526

[email protected]

www.barcelona04.com

Sales Office in Chile

Barcelona/04 Chile

Nueva de Lyon 096 Oficina 702,

Providencia

Santiago

Chile

Phone: +56 2 234-0898

Fax: +56 2 2340865

[email protected]

www.barcelona04.com

© 2013 Tango/04Computing Group Página 53

Page 62: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Acerca de Tango/04 Computing Group

Acerca de Tango/04 Computing Group

Tango/04 Computing Group es una de las principales empresas desarrolladoras de software de gestión

y automatización de sistemas informáticos. El software de Tango/04 ayuda a las empresas a mantener

la salud operativa de sus procesos de negocio, mejorar sus niveles de servicio, incrementar su

productividad y reducir costes mediante una gestión inteligente de su infraestructura informática.

Fundada en 1991 en Barcelona, Tango/04 es IBM Business Partner y miembro de la iniciativa

estratégica IBM Autonomic Computing. Además de recibir numerosos reconocimientos de la industria,

las soluciones Tango/04 han sido validadas por IBM y tienen la designación IBM ServerProven™.

Tango/04 tiene más de mil clientes y mantiene operaciones en todo el mundo a través de una red de 35

Business Partners

Alianzas

Premios

Partnerships IBM Business Partner

IBM Autonomic Computing Business Partner

IBM PartnerWorld for Developers Advanced Membership

IBM ISV Advantage Agreement

IBM Early code release

IBM Direct Technical Liaison

Microsoft Developer Network

Microsoft Early Code Release

© 2013 Tango/04 Computing Group Página 54

Page 63: Arithmetic-Logic Expression eValuator (ALEV)1 fileTabla de Contenidos © 2013 Tango/04 Computing Group Página III Tabla de Contenidos Tabla de Contenidos.....III

Aviso Legal

Aviso Legal

Este documento y su contenido son propiedad de Tango/04 Computing Group o de sus respectivos propietarios cuando así se

indique. Cualquier utilización de este documento con una finalidad distinta de aquella con la cual ha sido creado está prohibida sin la

autorización expresa de su propietario. Asimismo queda prohibida la reproducción total o parcial de este documento por cualquier

medio físico, óptico, magnético, impreso, telemático, etc., sin la autorización expresa de su propietario.

La información técnica aquí contenida fue obtenida utilizando equipamiento e instalaciones específicas, y su aplicación se limita a

esas combinaciones especiales de productos y niveles de versiones de hardware y software. Cualquier referencia en este documento

a productos, software o servicios de Tango/04 Computing Group, no implica que Tango/04 Computing Group planee introducir esos

productos, software o servicios en cada uno de los países en los que opera o está representada. Cualquier referencia a productos de

software, hardware o servicios de Tango/04 Computing Group no está hecha con el propósito de expresar que solamente pueden

utilizarse productos o servicios de Tango/04 Computing Group. Cualquier producto o servicio funcionalmente equivalente que no

infrinja la propiedad intelectual o condiciones de licenciamiento específicas se podría utilizar en reemplazo de productos, software o

servicios de Tango/04 Computing Group.

Tango/04 Computing Group puede tener patentes o estar pendiente de obtención de patentes que cubren asuntos tratados en este

documento. La entrega de este documento no otorga ninguna licencia de esas patentes. La información contenida en este

documento no ha sido sometida a ningún test formal por Tango/04 Computing Group y se distribuye tal como está. El uso de esta

información o la implementación de cualquiera de las técnicas, productos, tecnologías, ideas o servicios explicitados o sugeridos por

el presente documento es responsabilidad exclusiva del cliente a quien está dirigido este documento, y es el cliente quien debe

evaluar y determinar la aplicabilidad y consecuencias de integrar esas técnicas, productos, tecnologías, ideas o servicios en su

entorno operativo.

Si bien cada ítem puede haber sido revisado por Tango/04 Computing Group en cuanto a su exactitud en una situación específica, no

existe ni se otorga ninguna garantía de que los mismos o similares resultados puedan ser obtenidos en otras situaciones o

instalaciones. Los clientes que intenten adaptar esas técnicas en sus propias instalaciones lo hacen bajo su propia cuenta,

responsabilidad y riesgo. Tango/04 Computing Group no será en ningún caso responsable directo o indirecto de cualquier daño o

perjuicio causado por el uso de las técnicas explicitadas o sugeridas en este documento, incluso si se han efectuado notificaciones

de la posibilidad de esos daños.

Este documento puede contener errores técnicos y/o errores tipográficos. Todas las referencias en esta publicación a entidades

externas o sitios web han sido provistas para su comodidad solamente, y en ningún caso implican una validación, garantía o respaldo

a esas entidades o sitios.

Las marcas siguientes son propiedad de International Business Machines Corporation en los Estados Unidos y/o otros países: AS/

400, AS/400e, System i, iSeries, e (logo)Server, i5, Operating System/400, OS/400, i5/OS.

Microsoft, SQL Server, Windows, Windows NT, Windows XP y el logotipo de Windows son marcas registradas de Microsoft

Corporation en los Estados Unidos y/o otros países. Java y todos los logotipos y marcas basadas en Java son propiedad de Sun

Microsystems, Inc. en los Estados Unidos y otros países. UNIX es una marca registrada en los Estados Unidos y otros países y se

licencia exclusivamente a través de The Open Group. Oracle es una marca registrada de Oracle Corporation. Otras marcas,

productos o servicios pueden ser marcas registradas de otras empresas.

© 2013 Tango/04 Computing Group Página 55