Manual de consulta
Finalidad
Define una subrutina que puede invocarse desde la macro de
Net.Data. Las sentencias ejecutables de un bloque MACRO_FUNCTION
deben ser sentencias fuente de lenguaje de macros de Net.Data.
Sintaxis
>>-%MACRO_FUNCTION--nombre_función--| espec transm param |------>
>-----| espec retorno |--{--| cuerpo función |----%}------------>
.----------------------.
V |
>--------+----------------+--+--%}-----------------------------><
'-bloque report--'
espec transm param
|---(--+-------------------------------+---)--------------------|
| .-,-----------------------. |
| | (1) | |
| V .-IN-------. | |
'----+----------+---nombre---+--'
+-OUT------+
'-INOUT----'
espec retorno
|---+------------------------+----------------------------------|
'-RETURNS--(--nombre--)--'
cuerpo función
.---------------------------------.
V |
|------+---------------------------+--+-------------------------|
+-referencia de variable----+
+-bloque if-----------------+
+-llamada de función--------+
+-sentencia de presentación-+
+-sentencia include---------+
'-bloque while--------------'
Notas:
- El tipo de parámetro por omisión IN se aplica cuando no se especifica
ningún tipo de parámetro al principio de la lista de parámetros. Un
parámetro sin un tipo de parámetro utiliza el tipo que se ha especificado más
recientemente en la lista de parámetros, o el tipo IN si no se ha especificado
ningún tipo. Por ejemplo, en la lista de parámetros
(parm1, INOUT parm2, parm3, OUT
parm4, parm5), los parámetros parm1,
parm3 y parm5 no tienen tipos de parámetro. El
parámetro parm1 tiene un tipo IN ya que no se ha especificado ningún
tipo de parámetro inicial. El parámetro parm3 tiene un tipo
INOUT ya que es el tipo de parámetro que se ha especificado más
recientemente. De modo análogo, el parámetro parm5 tiene un
tipo OUT ya que es el tipo de parámetro que se ha especificado en la lista de
parámetros.
Valores
- %MACRO_FUNCTION
- La palabra clave que especifica una subrutina que puede invocarse desde la
macro de Net.Data. Las sentencias ejecutables de un bloque
MACRO_FUNCTION deben contener sentencias de lenguaje que Net.Data
interpreta directamente.
- nombre_función
- El nombre de la función que se define. Una serie numérica o
alfabética que comience por un carácter alfabético o un subrayado y que
contenga cualquier combinación de caracteres alfabéticos, numéricos, de
subrayado o de punto.
- espec transm param:
-
- IN
- Especifica que Net.Data transmita datos de entrada al entorno de
lenguaje. IN es el valor por omisión.
- OUT
- Especifica que el entorno de lenguaje devuelva datos de salida a
Net.Data.
- INOUT
- Especifica que Net.Data transmita datos de entrada al entorno de
lenguaje y que éste devuelva datos de salida a Net.Data.
- nombre
- Serie numérica o alfabética que comienza por un carácter alfabético
o un subrayado y que contiene cualquier combinación de caracteres alfabéticos,
numéricos o de subrayado. nombre puede representar una tabla
de Net.Data o un conjunto de resultados.
- espec retorno:
-
- RETURNS
- Declara la variable que contiene el valor de función una vez finalice
dicha función.
- cuerpo función:
-
- 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 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 representan números enteros y no tienen ningún espacio en
blanco inicial o de cola. Pueden tener un signo más (+) o menos (-)
inicial.
- 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 (@).
- sentencia de presentación
- Incluye cualquier carácter alfabético o numérico, así como códigos HTML
que han de formatearse para el navegador del cliente.
- 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 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.
- bloque report
- El bloque REPORT. Instrucciones de formateo para la salida de una
llamada de función. Puede utilizar información de cabecera y pie de
página para el informe. Consulte la sintaxis y ejemplos en el apartado Bloque REPORT.
Contexto
El bloque MACRO_FUNCTION puede encontrarse en estos contextos:
- Bloque IF
- Fuera de cualquier bloque de la parte de declaración de la macro de
Net.Data
Restricciones
El bloque MACRO_FUNCTION puede contener estos elementos:
- Bloque Comment
- Sentencias de presentación
- Bloque IF
- Sentencia INCLUDE
- Bloque REPORT
- Bloque WHILE
- Referencias de variables
- Llamadas de función
Ejemplos
Ejemplo 1: Una función de macro que especifica el
tratamiento de los mensajes
%MACRO_FUNCTION setMessage(IN rc, OUT message) {
%IF (rc == "0")
@dtw_assign(message, "Function call was successful.")
%ELIF (rc == "-1")
@dtw_assign(message, "Function failed, out of memory.")
%ELIF (rc == "-2")
@dtw_assign(message, "Function failed, invalid parameter.")
%ENDIF
%}
Ejemplo 2: Una función de macro que especifica información
de cabecera
%MACRO_FUNCTION setup(IN browserType) {
%{ call this function at the top of each HTML block in the macro %}
%INCLUDE "header_info.html"
@dtw_rdate()
%IF (browserType == "IBM")
@setupIBM()
%ELIF (browserType == "MS")
@setupMS()
%ELIF (browserType == "NS")
@setupNS()
%ELSE
@setupDefault()
%ENDIF
%}
Ejemplo 3: Una función de macro que contiene un
bloque REPORT
%MACRO_FUNCTION myfunc (INOUT table) {
%REPORT {
<table>
%ROW {
<tr><td>$(V1)</td><td>$(V2)</td></tr>
%}
</table>
%}
%}
Ejemplo 4: Una función de macro que utiliza la
palabra clave RETURNS
%MACRO_FUNCTION myfunc ()
RETURNS(VALUE) {
@DTW_ASSIGN(VALUE, "Success...")
%}
[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]