Manual de consulta

Bloque o sentencia DEFINE

Finalidad

El apartado DEFINE define nombres de variables en la parte de declaración de la macro y puede ser una sentencia o un bloque.

La definición de variable puede estar en una única línea, utilizando comillas dobles (""), o puede abarcar múltiples líneas, utilizando corchetes y un signo de porcentaje ({ %}). Después de que se defina la variable, puede hacer referencia a la misma en cualquier parte de la macro.

Sintaxis

>>-%DEFINE----+----------------------------+-------------------->
              |             (1)            |
              '-(--+-STATIC---------+---)--'
                   |           (1)  |
                   '-TRANSIENT------'
 
>-----+-| entrada define |------------------------+------------><
      '-{--+------------------------------+---%}--'
           |  .------------------------.  |
           |  V                        |  |
           '----+-entrada define----+--+--'
                '-sentencia include-'
 
entrada define
 
                                  .------------------------------.
                                  V                              |
|---+-nombre de variable--=--+-"-----+------------------------+--+---"---+-+->
    |                        |       +-serie------------------+          | |
    |                        |       +-referencia de variable-+          | |
    |                        |       '-llamada de función-----'          | |
    |                        |    .------------------------------.       | |
    |                        |    V                              |       | |
    |                        +-{-----+------------------------+--+---%}--+ |
    |                        |       +-serie------------------+          | |
    |                        |       +-referencia de variable-+          | |
    |                        |       +-llamada de función-----+          | |
    |                        |       '-nueva_línea------------'          | |
    |                        +-sentencia exec----------------------------+ |
    |                        +-sentencia table---------------------------+ |
    |                        +-sentencia envvar--------------------------+ |
    |                        +-| variable condicional |------------------+ |
    |                        '-| variable condicional abreviada |--------' |
    '-sentencia list-------------------------------------------------------'
 
>---------------------------------------------------------------|
 
variable condicional
 
|---nombre de variable---?-------------------------------------->
 
           .------------------------------.
           V                              |
>-----+-"-----+------------------------+--+---"---+------------->
      |       +-serie------------------+          |
      |       +-referencia de variable-+          |
      |       '-llamada de función-----'          |
      |    .------------------------------.       |
      |    V                              |       |
      '-{-----+------------------------+--+---%}--'
              +-serie------------------+
              +-referencia de variable-+
              '-llamada de función-----'
 
                .------------------------------.
                V                              |
>-------:--+-"-----+------------------------+--+---"---+--------|
           |       +-serie------------------+          |
           |       +-referencia de variable-+          |
           |       '-llamada de función-----'          |
           |    .------------------------------.       |
           |    V                              |       |
           '-{-----+------------------------+--+---%}--'
                   +-serie------------------+
                   +-referencia de variable-+
                   '-llamada de función-----'
 
variable condicional abreviada
 
              .------------------------------.
              V                              |
|---?----+-"-----+------------------------+--+---"---+----------|
         |       +-serie------------------+          |
         |       +-referencia de variable-+          |
         |       '-llamada de función-----'          |
         |    .------------------------------.       |
         |    V                              |       |
         '-{-----+------------------------+--+---%}--'
                 +-serie------------------+
                 +-referencia de variable-+
                 '-llamada de función-----'
 

Notas:

  1. STATIC y TRANSIENT son palabras clave para macros permanentes, que actualmente sólo están disponibles en el sistema operativo OS/400.

Valores

%DEFINE
Palabra clave que define variables.

STATIC
Palabra clave que especifica que la variable retenga su valor en las invocaciones de macro dentro de una transacción permanente. Este es el valor por omisión para las macros permanentes.

TRANSIENT
Palabra clave que especifica que esta variable no retenga su valor en las invocaciones de macro. Este es el valor por omisión para las macros no permanentes.

entrada define:

nombre de variable
Nombre que identifica una variable. Consulte el apartado Nombre de variable para obtener información sobre sintaxis.

serie
Cualquier secuencia de caracteres alfabéticos y numéricos y de puntuación. Si la serie aparece entre comillas dobles, no se permite el carácter de línea nueva.

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.

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 exec
La sentencia EXEC. El nombre de un programa externo que se ejecuta cuando se hace referencia a una variable o se llama a una función. Consulte la sintaxis y ejemplos en el apartado Bloque o sentencia EXEC.

sentencia table
La sentencia TABLE. Define un conjunto de datos relacionados que contiene una matriz de registros idénticos o filas y una matriz de nombres de columna que describe los campos en cada una de las filas. Consulte la sintaxis y ejemplos en el apartado Sentencia TABLE.

sentencia envvar
La sentencia ENVVAR. Hace referencia a las variables de entorno. Consulte la sintaxis y ejemplos en el apartado Sentencia ENVVAR.

variable condicional
Establece el valor de una variable basándose en si está o no vacía otra variable o serie.

variable condicional abreviada
Establece el valor de una variable basándose en si está o no vacía otra variable o serie. Formato abreviado de la variable condicional.

sentencia list
La sentencia LIST. Define variables que se utilizan para crear una lista delimitada de valores. Consulte la sintaxis y ejemplos en el apartado Sentencia LIST.

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.

Contexto

La sentencia o bloque DEFINE debe estar en un bloque IF o fuera de todos los demás bloques en la parte de declaración de la macro Net.Data.

Restricciones

Ejemplos

Ejemplo 1: Definiciones de variable sencillas

%DEFINE var1 = "orders"
%DEFINE var2 = "$(var1).html"

Durante el tiempo de ejecución, la referencia de variables $(var2) se evalúa como orders.html.

Ejemplo 2: Comillas dentro de una serie

%DEFINE hi = "say ""hello"""
%DEFINE empty = ""

Cuando se visualiza, la variable hi tiene el valor say "hello". La variable empty contiene la serie vacía.

Ejemplo 3: Definición de múltiples variables

%DEFINE{  DATABASE = "testdb"
          home = "http://www.ibm.com/software"
          SHOWSQL = "YES"
          PI = "3.14150"
%}

Ejemplo 4: Definición de líneas múltiples de una variable

%DEFINE text = {This variable definition
            spans two lines
%}

Ejemplo 5: Este ejemplo de una variable condicional muestra cómo la variable var adopta el valor resultante dentro de los signos de comillas ("") en el caso de que el valor resultante no contenga ningún valor NULL.

%DEFINE var = ? "Hello!
$(V)@MyFunc()"
%}


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]