| El RPG IV con su instrucción eval, los paréntesis en las expresiones y
las variables de tipo boleanas (true/false) nos proporciona una mayor versatilidad a la
hora de gestionar operaciones lógicas. Cuantas veces nos hemos puesto delante de un
papel mirando todas las posibilidades ante una pregunta para entender porque razón se
cumplía o no cumplía una condición, o nos hemos vuelto locos intentando buscar una
pregunta que sustituya un montón de comparaciones.
En este documento trataremos las 6 funciones lógicas que existen en la mayoría de
lenguajes y que bien nos pueden servir para nuestra labor.
NOT Invierte el resultado de una expresión
| Expresión |
Resultado |
|
| TRUE |
FALSE |
|
| FALSE |
TRUE |
|
La sintaxis en RPG es: Eval *In25 = Not(Alfa = 'A')
OR Responde a la pregunta: Alguna de las dos expresiones se cumple?
| expr1 |
expr2 |
Resultado |
| TRUE |
TRUE |
TRUE |
| TRUE |
FALSE |
TRUE |
| FALSE |
TRUE |
TRUE |
| FALSE |
FALSE |
FALSE |
Correspondería al resultado de la suma de las expresiones.
La sintaxi en RPG es: Eval *In25 = ((Alfa = 'A') or (Alfa = 'B'))
que seria lo mismo que decir:
If Alfa = 'A' or Alfa = 'B'
Eval *In25 = *On
Else
Eval *In25 = *Off
EndIf
AND Responde a la pregunta: Se cumplen las dos expresiones?
| expr1 |
expr2 |
Resultado |
| TRUE |
TRUE |
TRUE |
| TRUE |
FALSE |
FALSE |
| FALSE |
TRUE |
FALSE |
| FALSE |
FALSE |
FALSE |
Correspondería a la multiplicación de las expresiones.
La sintaxis en RPG es: Eval *In25 = ((Alfa = 'A') And (Alfa = 'B'))
XOR Responde a la pregunta: Una de las expresiones es cierta y la otra es falsa?
| expr1 |
expr2 |
Resultado |
| TRUE |
TRUE |
FALSE |
| TRUE |
FALSE |
TRUE |
| FALSE |
TRUE |
TRUE |
| FALSE |
FALSE |
FALSE |
Se conoce a esta comparación como exclusión lógica.
La sintaxi en RPG es: Eval *In25 = ((Alfa = 'A') <> (Alfa = 'B'))
EQV Responde a la pregunta: Las dos expresiones son idénticas?
| expr1 |
expr2 |
Resultado |
| TRUE |
TRUE |
TRUE |
| TRUE |
FALSE |
FALSE |
| FALSE |
TRUE |
FALSE |
| FALSE |
FALSE |
TRUE |
Se conoce a esta comparación como equivalencia lógica.
La sintaxis en RPG es: Eval *In25 = ((Alfa = 'A') = (Alfa = 'B'))
IMP Responde a la pregunta: Son las dos expresiones iguales o se cumple la segunda
expresión?
NOTA: por el momento aún no he encontrado ninguna aplicación práctica a esta
instrucción, supongo que el hecho de hacer programas de gestión y no de cálculos
matemáticos complejos, tiene algo que ver ;-)
| expr1 |
expr2 |
Resultado |
| TRUE |
TRUE |
TRUE |
| TRUE |
FALSE |
FALSE |
| FALSE |
TRUE |
TRUE |
| FALSE |
FALSE |
TRUE |
Se conoce a esta comparación como implicación lógica (?).
La sintaxis en RPG es: Eval *In25 = ((Alfa = 'A') <= (Alfa = 'B'))
Àlex Corretge
|