Manual de consulta

Bloque MACRO_FUNCTION

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:

  1. 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:

Restricciones

El bloque MACRO_FUNCTION puede contener estos elementos:

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 ]