Manual de consulta
Finalidad
Efectúa el proceso de serie condicional. El bloque IF
proporciona la capacidad de probar una o más condiciones y efectuar a
continuación un bloque de sentencias basadas en el resultado de la prueba de
las condiciones. Puede utilizar el bloque IF de la parte de declaración
de una macro de Net.Data, el bloque HTML, el bloque MACRO_FUNCTION, el
bloque REPORT, el bloque WHILE y el bloque ROW, así como anidarlo dentro de
otro bloque IF.
Los valores de serie de la lista de condiciones se tratan como numéricos a
efectos de comparación si son series que representan números enteros y no
tienen ningún espacio en blanco inicial o de cola. Pueden tener un
único signo más (+) o menos (-) inicial.
Restricción: Net.Data no da soporte a la
comparación numérica de los números no enteros; por ejemplo, los números
de coma flotante.
Bloques IF anidados: Las normas para la sintaxis
del bloque IF las determina la posición del bloque en la macro. Si se
anida un bloque IF dentro de un bloque IF que esté fuera de cualquier otro
bloque de la parte de declaración, puede utilizar cualquier elemento que pueda
utilizar el bloque externo. Si se anida un bloque IF dentro de otro
bloque que esté en un bloque IF, adopta las normas de sintaxis del bloque en
el que está.
En el ejemplo siguiente, el bloque IF anidado debe seguir las normas
utilizadas cuando está dentro de un bloque HTML.
%IF block
...
%HTML block
...
%IF block
Puede anidar un máximo de 1024 bloques IF.
Sintaxis
>>-%IF--| lista de condiciones |-------------------------------->
>-----| bloque_sentencia |--| espec else_if |--%ENDIF----------><
lista de condiciones
|---(--+-(--lista de condiciones--)----------------------+---)--|
+-lista de condiciones--&&--lista de condiciones--+
+-lista de condiciones--||--lista de condiciones--+
+-!--lista de condiciones-------------------------+
+-| condición |-----------------------------------+
'-| término |-------------------------------------'
bloque_sentencia
.--------------------------------------.
V |
|------+--------------------------------+--+--------------------|
| (1) |
+-bloque define------------------+
| (1) (2) |
+-sentencia define---------------+
| (1) |
+-bloque function----------------+
+-llamada de función-------------+
| (1) |
+-bloque HTML--------------------+
| (1) |
+-bloqueXML----------------------+
| (2) |
+-sentencia de presentación------+
+-bloque if----------------------+
+-sentencia include--------------+
| (1) |
+-bloque macro_function----------+
| (1) |
+-bloque message-----------------+
| (2) |
+-serie--------------------------+
| (2) |
+-referencia de variable---------+
| (2) |
'-bloque while-------------------'
condición
|---término--+-<--+---término-----------------------------------|
+->--+
+-<=-+
+->=-+
+-!=-+
'-==-'
término
|---+-nombre_variable-------------------------+-----------------|
+-referencia de variable------------------+
+-llamada de función----------------------+
| .-----------------------------. |
| V | |
'-"----+-serie------------------+--+---"--'
+-referencia de variable-+
'-llamada de función-----'
espec else_if
|---+-------------------------------------------------------------------+->
| .--------------------------------------------------------. |
| V | |
'--+----%ELIF--(--lista_condiciones--)--| bloque_sentencia |---+-+--'
'-%ELSE--| bloque_sentencia |---------------------------------'
>---------------------------------------------------------------|
Notas:
- Esta construcción de lenguaje es válida cuando el bloque IF está ubicado
fuera de cualquier otro bloque de la parte de declaración de la macro.
- Esta construcción de lenguaje es válida cuando el bloque IF está ubicado
en un bloque HTML, bloque MACRO_FUNCTION, bloque REPORT, bloque ROW o bloque
WHILE.
Valores
- %IF
- La palabra clave que especifica el proceso de serie condicional.
- lista de condiciones
- Compara los valores de condiciones y términos. Las listas de
condiciones pueden conectarse utilizando operadores Booleanos. Una
lista de condiciones puede anidarse dentro de otra lista de
condiciones.
- bloque_sentencia
- Está formado por las construcciones de macro de Net.Data válidas
siguientes. Por favor, consulte las notas de diagrama y las
restricciones siguientes para determinar el contexto en el que son válidas las
construcciones de macros.
- sentencia define
- La sentencia o bloque DEFINE. Define las variables y establece
variables de configuración. Los nombres de variable deben comenzar por
una letra o subrayado (_) y deben contener caracteres alfanuméricos o
subrayados. Consulte la sintaxis y ejemplos en el apartado Bloque o sentencia DEFINE.
- bloque function
- Una palabra clave que especifica una subrutina que puede invocarse desde
la macro de Net.Data. Las sentencias ejecutables de un bloque
FUNCTION pueden contener sentencias de lenguaje que un entorno de lenguaje
interpreta directamente, o bien pueden indicar una llamada a un programa
externo. Consulte la sintaxis y ejemplos en el apartado Bloque FUNCTION.
- llamada de función
- Invoca uno o más bloques FUNCTION o MACRO_FUNCTION, o una función
incorporada de Net.Data con argumentos específicos. Consulte la
sintaxis y ejemplos en el apartado Llamada de función (@).
- bloque HTML
- Incluye cualquier carácter alfabético o numérico, así como códigos HTML
que han de formatearse para el navegador del cliente.
- Bloque XML
- Incluye cualquier carácter alfabético o numérico, así como códigos XML que
han de formatearse para la aplicación del cliente.
- sentencia de presentación
- Incluye cualquier carácter alfabético o numérico, así como códigos HTML o
XML que han de formatearse para el navegador del cliente.
- bloque if
- El bloque IF. Efectúa el proceso de serie condicional. Los
valores de serie de la lista de condiciones se tratan como numéricos a efectos
de comparación si son series que representan números enteros y no tienen
ningún espacio en blanco inicial o de cola. Pueden tener un único signo
más (+) o menos (-) inicial.
- sentencia include
- La sentencia INCLUDE. Lee e incorpora un archivo en la macro de
Net.Data. Consulte la sintaxis y ejemplos en el apartado Sentencia INCLUDE.
- bloque macro_function
- Una palabra clave que especifica una subrutina que puede invocarse desde
la macro de Net.Data. Las sentencias ejecutables de un bloque
MACRO_FUNCTION pueden contener sentencias fuente de lenguaje de macros de
Net.Data. Consulte la sintaxis y ejemplos en el apartado Bloque MACRO_FUNCTION.
- bloque message
- El bloque MESSAGE. Un conjunto de códigos de retorno, los mensajes
asociados y las acciones que adopta Net.Data cuando se devuelve una
llamada de función. Consulte la sintaxis y ejemplos en el apartado Bloque MESSAGE.
- serie
- Cualquier secuencia de caracteres alfabéticos y numéricos y de
puntuación. Si la serie está en el término de la lista de condiciones,
puede contener cualquier carácter, excepto el carácter de nueva línea.
Si la serie está en el bloque de código ejecutable, puede contener cualquier
carácter, incluyendo el carácter de nueva línea.
- referencia de variable
- Devuelve el valor de una variable y se especifica con $ y (). Por
ejemplo: si VAR='abc', entonces $(VAR)
devuelve el valor 'abc'. Consulte el apartado Referencia de variables para obtener información de sintaxis.
- bloque while
- El bloque WHILE. Efectúa la repetición en bucle con el proceso de
serie condicional. Consulte la sintaxis y ejemplos en el apartado Bloque WHILE
- condición
- Comparación entre dos términos utilizando operadores de
comparación. Una condición IF se trata como comparación numérica si se
cumplen las siguientes condiciones:
- El operador de condición es uno de los operadores siguientes:
<,<=,>,>=,==,!=
- Ambos términos son series que representan números enteros válidos, siendo
un entero válido una serie de dígitos, que van precedidos opcionalmente por un
signo más (+) o menos (-) y ningún otro espacio en blanco.
Si no se cumple una de las dos condiciones, se efectúa una comparación de
serie normal.
- término
- Un nombre de variable, serie, referencia de variables o llamada de
función.
- %ELIF
- Palabra clave que inicia la vía de acceso de proceso alternativa y que
puede contener listas de condiciones y la mayoría de las sentencias de macro
de Net.Data.
- %ENDIF
- Palabra clave que cierra el bloque %IF.
- %ELSE
- Palabra clave que ejecuta sentencias asociadas si no se cumple ninguna de
las demás listas de condiciones.
Contexto
El bloque IF puede encontrarse en estos contextos:
- Fuera de cualquier otro bloque de la parte de declaración de una macro de
Net.Data
- Bloque HTML
- Bloque XML
- Bloque IF
- Bloque MACRO_FUNCTION
- Bloque REPORT
- Bloque ROW
- Bloque WHILE
Restricciones
El bloque IF puede contener estos elementos cuando están ubicados fuera de
cualquier otro bloque de la parte de declaración de la macro de
Net.Data:
- Bloque Comment
- Bloque DEFINE
- Sentencia DEFINE
- Bloque FUNCTION
- Llamada de función
- Bloque HTML
- Bloque XML
- Bloque IF
- Sentencia INCLUDE
- Bloque MACRO_FUNCTION
- Bloque MESSAGE
- Referencia de variable
El bloque IF puede contener estos elementos cuando están ubicados en el
bloque HTML, bloque MACRO_FUNCTION, bloque REPORT, bloque ROW o bloque WHILE
de la macro de Net.Data:
- Bloque Comment
- Llamadas de función
- Bloque IF
- Sentencia INCLUDE
- sentencia de presentación
- Serie
- Referencia de variable
- Bloque WHILE
Puede anidar un máximo de 1024 bloques IF.
Ejemplos
Ejemplo 1: Un bloque IF de la parte de declaración de una macro de
Net.Data.
%DEFINE a = "1"
%DEFINE b = "2"
...
%IF (OUT_FORMAT = "HTML")
%define DTW_HTML_TABLE = "YES"
%ELSE
%define DTW_HTML_TABLE = "NO"
%ENDIF
%HTML(REPORT) {
...
%}
Ejemplo 2: Un bloque IF dentro de un bloque HTML
%HTML(REPORT) {
@myFunctionCall()
%IF (RETURN_CODE == failure_rc)
<p> The function call failed with failure code $(RETURN_CODE).
%ELIF (RETURN_CODE == warning_rc)
<p> The function call succeeded with warning code $(RETURN_CODE).
%ELIF (RETURN_CODE == success_rc)
<p>The function call was successful.
%ELSE
<P>The function call returned with unknown return code $(RETURN_CODE).
%ENDIF
%}
Ejemplo 3: Una comparación numérica
%IF (ROW_NUM < "100")
<p>The table is not full yet...</p>
%ELIF (ROW_NUM == "100")
<p>The table is now full...</p>
%ELSE
<p>The table has overflowed...</p>
%ENDIF
Se efectúa una comparación numérica debido a que la variable de tabla
implícita ROW_NUM siempre devuelve un valor de entero y el valor que se
compara es asimismo un entero.
Ejemplo 4: Bloques IF anidados
%IF (MONTH == "January")
%IF (DATE = "1")
HAPPY NEW YEAR!
%ELSE
Ho hum, just another day.
%ENDIF
%ENDIF
[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]