Una expresión lógica se resuelve en true (verdadero) o false (falso) y se utiliza como criterio en una sentencia if o while o (en algunas situaciones) en una sentencia case.
Una expresión lógica elemental se compone de un operando, un operador de comparación y un segundo operador, como se muestra en el diagrama de sintaxis y en la tabla subsiguiente:
Primer operando | Operador de comparación | Segundo operando |
---|---|---|
expresión de fecha y hora | Uno de los siguientes: ==, != , <, >, <=, >= | expresión de fecha y hora La primera y segunda expresiones deben ser de tipos compatibles. En el caso de las comparaciones de fecha y hora, el signo mayor qué (>) significa después en el tiempo y el signo menor qué (<) significa antes en el tiempo. |
expresión numérica | Uno de los siguientes: ==, != , <, >, <=, >= | expresión numérica |
expresión de serie | Uno de los siguientes: ==, != , <, >, <=, >= | expresión de serie |
expresión de serie | like | likeCriterion que es un campo de caracteres o literal con el que se
compara la expresión de serie por posición de carácter de izquierda a derecha. La
utilización de esta característica es parecida a la utilización de la palabra clave
like en consultas SQL. escChar es un campo de un carácter o literal que se resuelve en un carácter de escape. Para conocer más detalles, consulte la sección Operador like. |
expresión de serie | matches | matchCriterion que es un campo de caracteres o literal con el que se
compara la expresión de serie por posición de carácter de izquierda a derecha. La
utilización de esta característica es parecida a la utilización de expresiones regulares en
UNIX o Perl. escChar es un campo de un carácter o literal que se resuelve en un carácter de escape. Para conocer más detalles, consulte la sección Operador matches. |
Valor de tipo NUM o CHAR, como el descrito para el segundo operando | Uno de los siguientes: ==, != , <, >, <=, >= | Valor de tipo NUM o CHAR, que puede ser uno de los siguientes:
|
searchValue | in | arrayName; para obtener detalles, consulte in. |
campo no de un registro SQL | Uno de los siguientes:
|
Uno de los siguientes:
|
campo de un registro SQL | Uno de los siguientes:
|
Uno de los siguientes:
La prueba de truncamiento sólo puede resolverse en true si la columna de la base de datos es más larga que el campo. El valor de la prueba es false una vez que un valor se ha movido al campo o una vez que el campo se ha establecido en nulo. |
campoTexto (nombre de un campo de un formulario de texto) | Uno de los siguientes:
|
Uno de los siguientes:
|
ConverseVar.eventKey | Uno de los siguientes:
|
Para obtener más detalles, consulte la sección ConverseVar.eventKey. |
sysVar.systemType | Uno de los siguientes:
|
Para obtener detalles, consulte sysVar.systemType. No puede utilizarse is ni not para probar un valor devuelto por VGLib.getVAGSysType. |
nombre de registro | Uno de los siguientes:
|
Un valor de error de E/S adecuado a la organización del registro. Consulte el apartado Valores de error de E/S. |
La tabla siguiente lista los operadores de comparación, cada uno de los cuales se utiliza en una expresión que se resuelve en true o false.
Operador | Finalidad |
---|---|
== | El operador equality indica si dos operandos tienen el mismo valor. |
!= | El operador not equal indica si dos operandos tienen valores diferentes. |
< | El operador less than indica si el primero de los dos operandos es numéricamente inferior al segundo. |
> | El operador greater than indica si el primero de los dos operandos es numéricamente superior al segundo. |
<= | El operador less than or equal to indica si el primero de los dos operandos es numéricamente inferior o igual al segundo. |
>= | El operador greater than or equal to indica si el primero de los dos operandos es numéricamente superior o igual al segundo. |
in | El operador in indica si el primero de los dos operandos es un valor del segundo, que hace referencia a una matriz. Para obtener detalles, consulte in. |
is | El operador is indica si el primero de los dos operandos está en la categoría del segundo. Para obtener detalles, consulte la tabla anterior. |
like | El operador like indica si los caracteres de los primeros dos operandos coincide con el segundo operando, tal como se describe en la sección Operador like. |
matches | El operador matches indica si los caracteres de los primeros dos operandos coincide con el segundo operando, tal como se describe en la sección Operador matches |
not | El operador not indica si el primero de los dos operandos no está en la categoría del segundo. Para obtener detalles, consulte la tabla anterior. |
La tabla siguiente y las descripciones que siguen indican las normas de compatibilidad cuando los operandos son de los tipos especificados.
Tipo primitivo del primer operando | Tipo primitivo del segundo operando |
---|---|
BIN | BIN, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT |
CHAR | CHAR, DATE, HEX, MBCHAR, NUM, TIME, TIMESTAMP |
DATE | CHAR, DATE, NUM, TIMESTAMP |
DBCHAR | DBCHAR |
DECIMAL | BIN, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT |
HEX | CHAR, HEX |
MBCHAR | CHAR, MBCHAR |
MONEY | BIN, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT |
NUM | BIN, CHAR, DATE, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT, TIME |
NUMC | BIN, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT |
PACF | BIN, DECIMAL, FLOAT, MONEY, NUM, NUMC, PACF, SMALLFLOAT |
TIME | CHAR, NUM, TIME, TIMESTAMP |
TIMESTAMP | CHAR, DATE, TIME, TIMESTAMP |
UNICODE | UNICODE |
Puede crear una expresión más compleja utilizando un operador and (&&) u or (||) para combinar un par o varias expresiones elementales. Además, puede utilizar el operador not (!), como se describe más adelante.
field01 == field02 || 3 in array03 || x == y
Si field01 no es igual a field02, la evaluación continúa. Sin embargo, si el valor 3 está en array03, la expresión global se evalúa en true, y la última expresión lógica elemental (x == y) no se evalúa.
De forma parecida, si se combinan expresiones lógicas elementales mediante operadores and, EGL detiene la evaluación si una de las expresiones lógicas elementales se resuelve en false. En el ejemplo siguiente, la evaluación se detiene en cuanto se averigua que field01 no es igual a field02:
field01 == field02 && 3 in array03 && x == y
Al consultar los ejemplos que siguen, suponga que value1 contiene "1", value2 contiene "2", y así sucesivamente:
/* == true */ value5 < value2 + value4 /* == false */ !(value1 es numérico) /* == true cuando la salida generada se ejecuta en Windows 2000, Windows NT o z/OS UNIX System Services */ sysVar.systemType is WIN || sysVar.systemType is USS /* == true */ (value6 < 5 || value2 + 3 >= value5) && value2 == 2
Conceptos relacionados
Código de datos modificados y propiedad modified
Tareas relacionadas
Diagrama de sintaxis
Consulta relacionada
case
Expresiones de fecha y hora
Manejo de excepciones
Expresiones
Valores de error de E/S
if, else
operador in
Operador like
Operador matches
Expresiones numéricas
Operadores y precedencia
Tipos primitivos
Expresiones de texto
ConverseVar.eventKey
VGLib.getVAGSysType
sysVar.systemType
while