Cómo personalizar un procedimiento con variables

En esta sección:

Referencia:

Puede personalizar un procedimiento y controlar su ejecución con parámetros. Esto se lleva a cabo de forma dinámica, proporcionando el valor de una variable en tiempo de ejecución. Puede proporcionar el valor de una variable de los siguientes modos:

Las variables de Dialogue Manager no pueden usarse para personalizar comandos en una hoja de estilos de informe de WebFOCUS.

Para más información sobre los tipos y usos de las variables, consulte Cómo crear y trabajar con variables locales y globales.


Principio de página

x
Referencia: Reglas para la introducción de valores de variables

Se aplican las siguientes reglas a los valores de las variables:



Ejemplo: Cómo personalizar un procedimiento con valores de variables

Este ejemplo explica el uso de los comandos -DEFAULT y -SET para proporcionar valores para las variables. El usuario final proporciona el valor B10 para &CODE1, B20 para &CODE2 y SMITH para &REGIONMGR, de acorde a lo solicitado por el formulario HTML.

Nota: En este ejemplo, el formato de la salida elimina la numeración de las páginas y las cuadrículas. Para más información acerca de cómo aplicar un formato a su salida, consulte el manual Cómo crear informes con el lenguaje WebFOCUS.

Los números de la izquierda corresponden a las siguientes notas:

1. -DEFAULT &VERB=SUM
2. -SET &CITY=IF &CODE1 GT 'B09' THEN 'STAMFORD' ELSE 'UNIONDALE';
3. -TYPE REGIONAL MANAGER FOR &CITY
    SET PAGE=OFF
4.     TABLE FILE SALES
       HEADING CENTER
       "MONTHLY REPORT FOR &CITY"
       "PRODUCT CODES FROM &CODE1 TO &CODE2"
       " "
       &VERB UNIT_SOLD AND RETURNS AND COMPUTE
       RATIO/D5.1 = 100 * (RETURNS/UNIT_SOLD);
       BY PROD_CODE
       IF PROD_CODE IS-FROM &CODE1 TO &CODE2
       FOOTING CENTER
5.     "REGION MANAGER: &REGIONMGR"
       "CALCULATED AS OF &DATE"
       ON TABLE SET STYLE *
       TYPE=REPORT, GRID=OFF,$
       END
6. -RUN

El procedimiento se ejecuta del modo siguiente:

  1. El comando -DEFAULT establece el valor de &VERB en SUM.
  2. El comando -SET proporciona el valor para &CITY, dependiendo del valor introducido para &CODE1 por el usuario final, en el formulario. Puesto que el usuario final ha introducido B10 como valor de &CODE1, &CITY se convierte en STAMFORD.
  3. Cuando el usuario ejecuta el informe, WebFOCUS escribe un mensaje que incorpora el valor para &CITY:
    REGIONAL MANAGER FOR STAMFORD

    La salida de -TYPE no aparece en la página HTML. En su lugar, queda escrito en el archivo fuente HTML. Para mostrar el mensaje, el usuario final debe ver el archivo fuente del documento.

  4. La pila contiene las siguientes líneas:
    TABLE FILE SALES
    HEADING CENTER
    "MONTHLY REPORT FOR STAMFORD"
    "PRODUCT CODES FROM B10 TO B20"
    " "
    SUM UNIT_SOLD AND RETURNS AND COMPUTE
    RATIO/D5.1 = 100 * (RETURNS/UNIT_SOLD);
    BY PROD_CODE
    IF PROD_CODE IS-FROM B10 TO B20
    FOOTING CENTER
    "REGION MANAGER: SMITH"
    "CALCULATED AS OF 07/08/93"
    END
  5. El usuario final ha introducido el valor de &REGIONMGR en el formulario. WebFOCUS proporciona la fecha actual en tiempo de ejecución.
  6. El comando -RUN provoca la ejecución de todos los comandos de la pila. La salida de la solicitud de informe es la siguiente:
    MONTHLY REPORT FOR STAMFORD
    PRODUCT CODES FROM B10 TO B20
    PROD_CODE
    UNIT_SOLD
    RETURNS
    RATIO
    B10
    103
    13
    12.6
    B12
    69
    4
    5.8
    B17
    49
    4
    8.2
    B20
    40
    1
    2.5
    REGION MANAGER: SMITH
    CALCULATED AS OF 07/08/93


x
Cómo proporcionar un valor de variable por defecto

Cómo:

Los comandos -DEFAULT establecen los valores por defecto de las variables locales o globales. La introducción de valores por defecto para las variables almacenadas en un procedimiento almacenado, ayuda a garantizar que la ejecución sea correcta.

Tenga en cuenta que -DEFAULTS es sinónimo de -DEFAULT.

Puede emitir múltiples comandos -DEFAULT para una variable. Si la variable es global, estos comandos -DEFAULT pueden emitirse en FOCEXECs independientes. El último comando -DEFAULT emitido siempre estará en vigor antes de usar otro método para establecer el valor de la variable.

Sin embargo, en cuanto se establezca el valor de la variable utilizando cualquier otro método (por ejemplo, emitiendo un comando -SET, recuperando un valor introducido por el usuario o leyendo el valor de un archivo), se ignorarán los comandos -DEFAULT posteriores, emitidos para esa variable.

Si quiere inicializar una variable y evitar que sea utilizada con el aviso de parámetros de WebFOCUS, emplee el comando -DEFAULTH para inicializarla. Las variables inicializadas con -DEFAULTH no se devuelven junto con el XML que describe la información utilizada para el aviso de parámetros. Puesto que estas variables no pueden mostrarse con las características de aviso de parámetros, el usuario no puede verlas.



x
Sintaxis: Cómo Proporcionar un valor por defecto
-DEFAULT[S] &[&]name=value , [&[&]name=value] [;]

donde:

&name

Es el nombre de la variable.

value

Es el valor por defecto asignado a la variable.

;

Es un carácter puntuación opcional.

Nota: -DEFAULTS es un sinónimo de -DEFAULT.



x
Sintaxis: Cómo Proporcionar un valor por defecto para una variable oculta
-DEFAULTH &[&]name=value , [&[&]name=value]

donde:

&name

Es el nombre de la variable. Esta variable no se devuelve con la información de descripción XML, utilizada para el aviso de parámetros, y, por tanto, el usuario no puede verla.

value

Es el valor por defecto asignado a la variable.



Ejemplo: Cómo proporcionar un valor por defecto

En el siguiente ejemplo, -DEFAULT establece un valor por defecto para &PLANT:

-DEFAULT &PLANT=BOS
TABLE FILE CENTHR
     .
     .
     .

Principio de página

x
Cómo proporcionar valores de variables en una expresión

Cómo:

Referencia:

Puede asignar un valor a la variable, mediante el cálculo de éste en una expresión o asignado un valor literal para la variable, mediante el comando -SET. También puede usar la frase IN FILE para comprobar si el valor de carácter existe en un archivo y rellenar una variable con el resultado. El valor de la variable se establece en 1 si el valor de prueba existe en el archivo o, en caso contrario, en 0.

Si quiere establecer el valor de una variable en un número, los únicos caracteres compatibles son los dígitos numéricos, el signo menos inicial y la marca decimal. Éstos son los únicos caracteres válidos para un número, en Dialogue Manager, independientemente de las opciones EDIT o del valor de CDN.



x
Sintaxis: Cómo Asignar un valor a una expresión
-SET &[&]name= {expression|value};
-SET &[&]var3= &var1 IN FILE filename1 [OR &var2 IN FILE filename2 ...];

donde:

&name

Es el nombre de la variable.

expression

Es una expresión válida. Las expresiones pueden ocupar varias líneas, así que es aconsejable utilizar un punto y coma al final del comando.

value

Es un valor literal, o una expresión aritmética o lógica, asignado a la variable. Si el valor literal contiene comas o espacios en blanco insertados, debe colocarlo entre comillas simples. Si el valor sólo presenta una comilla simple, coloque dos comillas simples en el lugar en que quiere que aparezca el valor.

&[&]var3

Es una variable que se rellena con el valor 1 si el resultado de la expresión situada a la derecha del signo de igualdad es verdadera, o con un 0 si el resultado falso.

&var1

Es la variable que contiene el valor que se va a buscar en filename1.

&var2

Es la variable que contiene el valor que se va a buscar en filename2.



x
Referencia: Notas de uso de IN FILE


x
Sintaxis: Cómo Especificar precisión en cálculos de Dialogue Manager

La propiedad DMPRECISION permite que aparezcan los comandos -SET de Dialogue Manager y almacenen valores numéricos, precisos, de las variables.

Sin esta configuración, los resultados de los cálculos numéricos se devuelven como números enteros, aunque los cálculos mismos emplean la aritmética de doble precisión. Para devolver un número con precisión decimal sin esta propiedad, debe introducir el cálculo como entrada en la función FTOA, donde puede especificar el número de lugares decimales devueltos.

El comando SET DMPRECISION ofrece al usuario la posibilidad de aceptar el truncamiento por defecto, de la porción decimal de la salida, a partir de cálculos aritméticos, o especificar hasta nueve lugares decimales para el redondeo.

SET DMPRECISION = {OFF|n}

donde:

OFF

Especifica la truncamiento sin redondeo después del punto decimal. OFF es el valor predeterminado.

n

Es un número positivo del 0 al 9, indicando el punto de redondeo. Tenga en cuenta que n=0 resulta en un valor de número entero redondeado.

Nota:



Ejemplo: Cómo usar SET DMPRECISION

La siguiente tabla muestra el resultado de la división 20 entre 3, con distintas configuraciones de DMPRECISION (DMP):

SET DMPRECISION =

Resultado

OFF

6

0

7

1

6.7

2

6.67

9

6.666666667



Ejemplo: Cómo establecer un valor de variable en una expresión

En el siguiente ejemplo, -SET asigna el valor 14Z, o 14B, a la variable &STORECODE, según lo determinado por la expresión lógica IF. El usuario final se encarga de proporcionar el valor de &CODE.

-SET &STORECODE = IF &CODE GT C2 THEN '14Z' ELSE '14B';
   TABLE FILE SALES
   SUM UNIT_SOLD AND RETURNS
   BY PROD_CODE
   IF PROD_CODE GE &CODE
   BY STORE_CODE
   IF STORE_CODE IS &STORECODE
   END


Ejemplo: Cómo como comprobar la presencia de un valor de variable en un archivo

El siguiente FOCEXEC crea un archivo HOLD alfanumérico, llamado COUNTRY1, con los nombres de los países del archivo CAR. A continuación, establece la variable &C como igual a FRANCE. La frase IN FILE devuelve el valor 1 a &IN1 si FRANCE está en el archivo HOLD, pero no así el 0.

TABLE FILE CAR                                   
PRINT COUNTRY                                    
ON TABLE HOLD AS COUNTRY1 FORMAT ALPHA           
END                                              
-RUN                                             
-SET &C = 'FRANCE';                              
-SET &IN1 = &C IN FILE COUNTRY1;                
-TYPE THE VALUE IS &IN1

La salida muestra que FRANCE está en el archivo COUNTRY1:

THE VALUE IS 1 

Principio de página

x
Cómo proporcionar valores de variables desde otro procedimiento

Cómo:

Referencia:

Puede proporcionar valores para las variables de un comando EXEC utilizado en un procedimiento, para llamar a otro. En Developer Studio, esto también se puede conseguir con el componente Execute. Consulte Cómo llamar a otro procedimiento con EXEC para más información sobre el uso de esta técnica para controlar el flujo de aplicación.

Los valores se asignan usando una pareja nombre-valor; cuando haya varias parejas, sepárelas con comas. Si la lista de parejas excede el ancho máximo de la línea, inserte una coma después del último carácter y continúe la lista por la próxima línea. No tiene por qué introducir las parejas en el orden en que aparecen en el procedimiento.

Con EXEC puede proporcionar valores para algunas, pero no todas, las variables empleadas en el procedimiento. En ese caso, los valores que no se hayan proporcionado en el comando EXEC, deben añadirse utilizando otro comando de Dialogue Manager. Para ver un ejemplo, vaya a Cómo proporcionar valores con otro procedimiento.

Si la variable es posicional (es decir, si está numerada), no necesita especificar su nombre en el comando EXEC. WebFOCUS empareja los valores de EXEC con las variables posicionales según van apareciendo en el procedimiento. Por tanto, es muy importante que introduzca el valor correspondiente a cada variable, en el orden apropiado. Para un ejemplo de cómo proporcionar los valores de variables posicionales, consulte Cómo usar las variables posicionales.



x
Referencia: Reglas de uso de variables nombradas o posicionales con EXEC

Puede combinar libremente las variables nombradas con las posicionales, en el comando EXEC, siguiendo estas reglas:

El siguiente comando es válido para las variables nombradas y las posicionales:

EX HRINFO SALARY=72000, 5, BOS, STATUS=EMPLOYED


x
Sintaxis: Cómo Proporcionar el valor de una variable en otro procedimiento
EX[EC] procedure name=value

donde:

procedure

Es el nombre del procedimiento que va a contener los valores nombre/valor.

name

Es el nombre de la variable.

value

Es el valor que está dando a la variable.

Nota: Cuando EXEC se utiliza en Managed Reporting, es importante recordar que EX y EXEC son distintos. Las declaraciones EX, codificadas en un procedimiento, son procesadas por el Cliente WebFOCUS, que busca el procedimiento en el repositorio de Managed Reporting. Los procedimientos que aparezcan citados en una declaración EXEC, no son procesados por el Cliente WebFOCUS, sino por el Servidor de informes WebFOCUS. Esto explica que no se les busque en el repositorio de Managed Reporting.



Ejemplo: Cómo proporcionar valores con otro procedimiento

Considere el siguiente procedimiento, llamado SLRPT:

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &CITY"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY PROD_CODE
IF PROD_CODE IS-FROM &CODE1 TO &CODE2
BY CITY
IF CITY EQ &CITY
END

Puede llamarlo desde otro procedimiento y proporcionar valores para la variables, en forma de parámetros, mediante el comando EX:

EX SLRPT CITY=STAMFORD, CODE1=B10, CODE2=B20


Ejemplo: Cómo usar las variables posicionales

Consulte el siguiente ejemplo:

TABLE FILE SALES
HEADING CENTER
"MONTHLY REPORT FOR &1"
SUM UNIT_SOLD AND RETURNS AND COMPUTE
RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD);
BY PROD_CODE
IF PROD_CODE IS-FROM &2 TO &3
BY CITY
IF CITY EQ &1
END

A continuación el comando EX que llama al procedimiento:

EX SLRPT STAMFORD, B10, B20

Este comando sustituye a STAMFORD por la primera variable posicional, B10 para la segunda y B20 para la tercera.


Principio de página

x
Cómo leer y escribir valores de variables en un archivo externo

En esta sección:

Cómo:

Referencia:

Puede leer los valores de variables desde un archivo externo, o escribirlos dentro de éste, utilizando los comandos -READ y -WRITE.

El archivo externo puede ser de tipo formato fijo (datos fijos en columnas) o libre (datos delimitados por comas).

Cuando se esté usando un comando -READ o -WRITE, el archivo externo debe estar incluido en un comando FILEDEF, en su procedimiento. Después debe haber un comando -RUN que separe FILEDEF de -READ o -WRITE.

También puede leer un archivo con el comando -READFILE. El comando -READFILE lee el archivo, empezando por su archivo máster y luego creando variables de ampersand, de Dialogue Manager, basadas en los formatos ACTUAL de cada campo del archivo máster. A continuación, lee el archivo y, si es necesario, convierte los campos de valores numéricos en cadenas alfanuméricas, antes de devolverlos a las variables creadas. Las opciones de visualización de los formatos USAGE no se propagan a las variables. Los nombres de las variables ampersand son los mismos que los de los campos, prefijados con un &.



x
Sintaxis: Cómo Recuperar el valor de una variable desde un archivo externo
-READ filename[,] [NOCLOSE] &name[.format.][,][&name][.format.]

donde:

filename[,]

Es el nombre del archivo externo, que debe estar definido para el sistema operativo. Un espacio después de filename denota un archivo de formato fijo, mientras que la coma indica uno de formato libre.

  • En las plataformas UNIX y Windows, el archivo externo requiere un FILEDEF.
  • En z/OS, el archivo externo debe estar asignado en el JCL o, de forma dinámica, por WebFOCUS, con el comando ALLOCATE.
NOCLOSE

Mantiene abierto el archivo externo hasta que se complete la operación -READ. Los archivos que se mantengan abiertos con NOCLOSE, pueden cerrarse mediante el comando -CLOSE filename o un comando -WRITE posterior.

&name[,]

Es el nombre de la variable. Para los archivos de formato libre, puede separar con comas los nombres de las variables. Si la lista de variables no cabe en una línea, termine la primera línea con una coma y comience la siguiente con un guión, seguido de un espacio en blanco. Para los archivos de formato fijo, incluidos los delimitados por comas, inicie la siguiente línea con un guión, un espacio en blanco y una coma.

Formato libre

-READ EXTFILE, &CITY, &CODE1,- &CODE2

Formato fijo

-READ EXTFILE &CITY.A8. &CODE1.A3.,- ,&CODE2.A3.
.format.

Es el formato de la variable. En archivos de formato libre, este valor es opcional. Para el archivo de formato fijo, el formato es la longitud o el tipo y longitud. El tipo puede ser A (alfanumérico), por defecto, o I (numérico). El valor del formato debe estar delimitado por puntos. El formato se ignora en los archivos delimitados por comas.

Nota: En lugar de utilizar .format, puede especificar la longitud de una variable utilizando -SET y colocando entre comillas simples el número de espacios en blanco correspondiente. Por ejemplo:

-SET &CITY='        ';
-SET &CODE1='   '; 
-SET &CODE2='   ';


x
Sintaxis: Cómo Escribir un valor de variable en un archivo externo
-WRITE filename [NOCLOSE] text

donde:

filename

Es el nombre del archivo en que se está escribiendo o leyendo. En las plataformas UNIX y Windows, filename debe especificar la ruta absoluta y el nombre del archivo del procedimiento llamado.

NOCLOSE

Mantiene abierto el archivo externo hasta que se complete la operación -WRITE. Para cerrar un archivo abierto con NOCLOSE, emplee el comando -CLOSE filename.

text

Es cualquier combinación de variables y texto.



Ejemplo: Cómo leer un valor desde un archivo externo

Suponga que EXTFILE es un archivo de formato fijo que contiene los siguientes datos:

STAMFORDB10B20

Para detectar el final de un archivo, el siguiente código prueba la variable &IORETURN del sistema. Cuando ya no queda ningún registro por leer, no se hallará un valor igual a cero.

-READ EXTFILE &CITY.A8. &CODE1.A3. &CODE2.A3.
-IF &IORETURN NE 0 GOTO RESUME;
   TABLE FILE SALES
   SUM UNIT_SOLD
   BY CITY
   IF CITY IS &CITY
   BY PROD_CODE
   IF PROD_CODE IS-FROM &CODE1 TO &CODE2
    END
-RESUME
 .
 .
 .


Ejemplo: Cómo leer y escribir en un archivo externo

El siguiente ejemplo leer y escribe en archivos de texto y usa comandos FILEDEF en un procedimiento. Los números de la izquierda corresponden a las siguientes notas. En el ejemplo, el usuario proporciona un valor para &CITY en un formulario HTML:

1. -TOP
2.    FILEDEF PASS DISK D:PASS.DAT
   -RUN
3. -WRITE PASS &CITY
      TABLE FILE SALES
      HEADING CENTER
      "LOWEST MONTHLY SALES FOR &CITY"
      " "
      PRINT DATE PROD_CODE
      BY LOWEST 1 UNIT_SOLD
      BY STORE_CODE
      BY CITY
      WHERE CITY EQ '&CITY'
      FOOTING CENTER
      "CALCULATED AS OF &DATE"
      ON TABLE SAVE AS INFO
      END
4. -RUN
5.  FILEDEF LOG DISK D:LOG.DAT
   -RUN
      MODIFY FILE SALES
      COMPUTE
      TODAY/I6=&YMD;
      CITY='&CITY';
      FIXFORM X5 STORE_CODE/A3 X15 DATE/A4 PROD_CODE/A3
      MATCH STORE_CODE DATE PROD_CODE
      ON MATCH TYPE ON LOG
      "<STORE_CODE><DATE><PROD_CODE><TODAY>"
      ON MATCH DELETE
      ON NOMATCH REJECT
      DATA ON INFO
      END
6. -RUN
      EX SLRPT3
7. -RUN
8. -GOTO TOP
9. -QUIT

El procedimiento SLRPT3, invocado desde el procedimiento que está llamando, contiene las siguientes líneas:

10. -READ PASS &CITY.A8.
      TABLE FILE SALES
      HEADING CENTER
      "MONTHLY REPORT FOR &CITY"
      "LOWEST SALES DELETED"
      " "
      PRINT PROD_CODE UNIT_SOLD RETURNS DAMAGED
      BY STORE_CODE
      BY CITY
      WHERE CITY EQ '&CITY'
      FOOTING CENTER
      "CALCULATED AS OF &DATE"
      END
11. -RUN

El procedimiento se procesa del siguiente modo:

  1. -TOP indica el inicio del procedimiento.
  2. El comando FILEDEF define un archivo llamado PASS.
  3. El comando -WRITE escribe el valor de &CITY al archivo de texto llamado PASS. En este caso, suponga que el valor escrito es STAMFORD.
  4. El comando -RUN ejecuta la solicitud de informe apilado. En este caso, se crea un archivo de texto llamado INFO, con el comando SAVE. Este archivo es secuencial y contiene el resultado de la solicitud de informe.
  5. El comando FILEDEF define un archivo de registro para la siguiente solicitud de MODIFY.
  6. La declaración -RUN ejecuta la solicitud de MODIFY apilada. Los datos provienen directamente del archivo INFO, creado en la solicitud de informe anterior, y se introducen mediante la declaración FIXFORM. El producto con el valor más bajo en UNIT_SOLD queda borrado del origen de datos y registrado en un archivo de registro.
  7. El próximo comando -RUN ejecuta el procedimiento llamado SLRPT3.
  8. La declaración -GOTO TOP pasa el control al inicio del procedimiento.
  9. -QUIT da por terminado el procesamiento.
  10. El comando -READ lee el valor de &CITY desde el archivo de texto PASS. En este caso, el valor pasado es STAMFORD.
  11. El comando -RUN ejecuta la solicitud de informe y el control vuelve al procedimiento que está efectuando la llamada.


x
Sintaxis: Cómo Leer campos de archivos máster en variables de Dialogue Manager
-READFILE [app/]mastername

donde:

app

Es el directorio de aplicaciones en que reside el archivo.

mastername

Es el nombre del archivo máster que se va a leer.



x
Referencia: Notas de uso de -READFILE


Ejemplo: Cómo leer campos de un origen de datos dentro de variables de Dialogue Manager mediante -READFILE

La siguiente solicitud crea un archivo HOLD binario y, a continuación, utiliza -READFILE para leer el primer registro del archivo HOLD e introducir los valores recuperados dentro de las variables de Dialogue Manager. Tenga en cuenta que los nombres de las variables son nombres de campos, con un ampersand prefijado:

TABLE FILE EMPLOYEE                           
PRINT LAST_NAME FIRST_NAME DEPARTMENT CURR_SAL
BY EMP_ID                                     
ON TABLE HOLD AS READF1 FORMAT BINARY         
END                                           
-RUN                                          
-READFILE READF1                              
-TYPE LAST_NAME  IS &LAST_NAME                
-TYPE FIRST_NAME IS &FIRST_NAME               
-TYPE DEPARTMENT IS &DEPARTMENT               
-TYPE CURR_SAL   IS &CURR_SAL                 
-TYPE EMP_ID     IS &EMP_ID

La salida es:

>   NUMBER OF RECORDS IN TABLE=       12  LINES=     12 
                                                        
 HOLDING BINARY FILE...                                             
LAST_NAME  IS STEVENS                                   
FIRST_NAME IS ALFRED                                    
DEPARTMENT IS PRODUCTION                                
CURR_SAL   IS     11000.00                              
EMP_ID     IS 071382660



x
Cómo cerrar un archivo externo

El comando -CLOSE cierra un archivo externo, abierto con el comando -READ o -WRITE, mediante la opción NOCLOSE. La opción NOCLOSE mantiene el archivo abierto hasta que termine la operación -READ o -WRITE.



x
Sintaxis: Cómo Cerrar un archivo externo
-CLOSE filename

donde:

filename

Es un nombre simbólico asociado a un archivo físico, conocido por el sistema operativo.


Principio de página

x
Cómo proporcionar valores de variables de Report Painter a Developer Studio

En Developer Studio, no en Dialogue Manager, Report Painter ofrece un método intuitivo para la inserción de variables en su informe.

Se eliminan los comandos de Dialogue Manager, dentro de los comandos TABLE. Sin embargo, se mantienen los comandos de Dialogue Manager utilizados antes o después de los comandos TABLE y END.

También puede usar el Compositor HTML para crear formularios y permitir que los usuarios puedan proporcionar valores para su procedimiento. Para más detalles sobre el Compositor HTML, consulte el manual Cómo diseñar una interfaz de usuario para una aplicación Web con el Compositor HTML.



Ejemplo: Cómo proporcionar valores desde Report Painter

El siguiente ejemplo explica cómo crear procedimientos con valores de Report Painter:

  1. Cree un nuevo procedimiento.
  2. Pulse y mantenga seleccionado un conector de componentes (rombo amarillo) y pulse el botón Report situado en la barra de herramientas del Conector de componentes.

    Aparece la ventana Lista de descripción de archivos para Report.

  3. Elija EMPLOYEE de la lista y oprima Paint.

    Se abre el Report Painter.

  4. Pulse dos veces sobre PCT_INC y después sobre SALARY, en la ventana Employee.

    Los campos aparecen en Report Painter.

  5. Pulse By en la barra de herramientas.
  6. Pulse dos veces sobre DEPARTMENT, en la lista de campos de la ventana Employee.
  7. Pulse el menú Seleccionar para seleccionar Where/If.

    Aparece la ventana Where/If.

  8. Pulse Assist.

    Aparece el Expression Builder.

  9. Seleccione SALARY en el campo Nombre, Is LESS THAN en el campo Relaciones y Parámetro (&Variable) en la sección Tipo de comparación.

    El campo Parámetro aparece en Expression Builder.

  10. Introduzca SALPROMPT y pulse Aceptar.

    Expression Builder muestra SALARY LT &SALPROMPT en el campo Expresiones.

  11. Pulse Aceptar.

    La ventana Where/If se encuentra activa.

  12. Pulse Aceptar.
  13. Pulse el icono Ejecutar para ejecutar su solicitud.

    Aparece una ventana emergente con un campo para el valor de SALPROMPT.

  14. Introduzca 100000 y pulse Aceptar.

    La salida del informe aparece en el navegador.


Principio de página

x
Cómo proporcionar fechas como valores de variables

En esta sección:

Puede usar las variables para proporcionar fechas en Dialogue Manager. La fecha no puede tener más de 20 caracteres de longitud, incluidos los espacios. Las variables de Dialogue Manager sólo son compatibles con fechas de formato completo (es decir, MDY o MDYY, en cualquier orden).



Ejemplo: Cómo establecer la diferencia entre dos fechas

En el siguiente ejemplo, la variable &DELAY se ha establecido en la diferencia en días entre &LATER y el resultado es devuelto a su navegador.

-SET &NOW = 'JUN 30 2002';
-SET &LATER = '2002 25 AUG';
-SET &DELAY = &LATER - &NOW;
-TYPE &DELAY


x
Cómo usar variables con fechas de siglos diferentes

Si está trabajando con fechas pertenecientes a siglos distintos, no debe incluir un año de cuatro dígitos, ya que existen variables disponibles, que permiten identificar el siglo. Para más detalles, consulte el repositorio legacy.


Principio de página

x
Cómo efectuar un cálculo en una variable

Cómo:

Puede usar -SET para definir un valor para una variable sustituida, en base a los resultados de una expresión lógica o aritmética, o de una combinación.



x
Sintaxis: Cómo Efectuar un cálculo en una variable
-SET &name = expression;

donde:

&name

Es una variable introducida por el usuario cuyo valor está asignado con la expresión.

expression

Es una expresión que sigue las reglas establecidas en el manual Cómo crear informes con el lenguaje WebFOCUS , aunque con las limitaciones definidas en este tema. El punto y coma (;) situado después de la expresión, es obligatorio para finalizar el comando -SET.



Ejemplo: Cómo alterar el valor de una variable

El siguiente ejemplo demuestra el uso de -SET para alterar los valores de la variables en base a pruebas.

-SET &REL = IF &CHOICE EQ A THEN 'GT' ELSE 'LT'; 
   TABLE FILE SALES
   PRINT PROD_CODE UNIT_SOLD RETAIL_PRICE
   BY STORE_CODE BY DATE
   IF RETAIL_PRICE &REL 1.00
   END

Suponiendo que el usuario ha introducido la letra A, -SET asigna el valor de cadena GT a &REL. A continuación, el valor GT se pasa a la variable &REL, en el procedimiento, para que el comando FOCUS, ampliado en tiempo de ejecución, sea:

IF RETAIL_PRICE GT 1.00

Principio de página

x
Cómo cambiar el valor de una variable con la función DECODE

Puede usar la función DECODE para cambiar una variable por un valor asociado.



Ejemplo: Cómo cambiar el valor de una variable

En este ejemplo, la variable se refiere a la calificación de una película:

&SELECT. ENTER A,B,C,D,E. 
-SET &RATING = DECODE &SELECT (A G B PG13 C R D NR E PG);
TABLE FILE MOVIES
PRINT TITLE BY RATING
IF RATING EQ &RATING
END

Para más información sobre DECODE, consulte el manual Cómo usar las funciones.


Principio de página

x
Cómo filtrar el valor de una variable

Cómo:

Para garantizar que el valor introducido sea válido y su uso en el procedimiento, correcto, puede realizar una prueba basada en su presencia, tipo y longitud. Por ejemplo, si no desea realizar un cálculo numérico en una variable cuyos datos alfanuméricos ya están proporcionados.

Para filtrar el valor, añada un sufijo al valor de la variable:



x
Sintaxis: Cómo Filtrar el valor de una variable
-IF &name{suffix} expression GOTO label...;

donde:

&name

Es una variable proporcionada por el usuario.

suffix

Es uno de los siguientes:

.EXIST busca la presencia de un valor. Si el valor no está presente, se pasa un cero (0) a la expresión. De lo contrario, se pasa un valor que no sea cero.

.LENGTH busca la longitud de un valor. Si el valor no está presente, se pasa un cero (0) a la expresión. De lo contrario, se pasa el número de caracteres del valor.

.TYPE busca el tipo de un valor. Se pasa la letra N (numérico) a la expresión si el valor puede interpretarse como un número hasta 109-1, almacenado en cuatro bytes, con formato de punto flotante. En Dialogue Manager, el resultado de las operaciones aritméticas con campos numéricos, queda truncado en un número entero, después de que se haya calculado el resultado completo de una expresión. Si el valor no puede interpretarse como numérico, se pasa la letra A (alfanumérico) a la expresión.

.EVAL reemplaza la variable por su valor.

expression

Es una expresión válida que utiliza &name con el sufijo especificado como variable.

GOTO label

Especifica una etiqueta para la bifurcación.



Ejemplo: Cómo comprobar la presencia de una variable

Si no se ha proporcionado un valor en el siguiente ejemplo, &OPTION.EXIST es igual a cero y el control pasa a la etiqueta -CANTRUN. El formulario -HTMLFORM muestra un mensaje, indicando que el procedimiento no se puede ejecutar. Si el valor sí se ha proporcionado, el control pasa a la etiqueta -PRODSALES.

-IF &OPTION.EXIST GOTO HRINFO ELSE GOTO CANTRUN; 
     .
     .
     .
-HRINFO
   TABLE FILE CENTHR
     .
     .
     .
   END
-EXIT
-CANTRUN 
-HTMLFORM BEGIN
<HTML>
<BODY>
TOTAL REPORT CAN'T BE RUN WITHOUT AN OPTION.
</BODY>
</HTML>
-HTMLFORM END
-EXIT


Ejemplo: Cómo comprobar la longitud de una variable con un mensaje de formulario HTML

Si la longitud del valor introducido para &OPTION es superior a un carácter, el control pasa a la etiqueta -FORMAT. Después, el control continúa al comando -HTMLFOR, que muestra un mensaje, indicando al usuario que sólo se puede introducir un carácter.

-IF &OPTION.LENGTH GT 1 GOTO FORMAT ELSE
-GOTO PRODSALES;
     .
     .
     .
-PRODSALES
   TABLE FILE SALES
     .
     .
     .
   END
-EXIT
-FORMAT
-HTMLFORM BEGIN
<HTML>
<BODY>
ONLY A SINGLE CHARACTER IS ALLOWED.
</BODY>
</HTML>
-HTMLFORM END


Ejemplo: Cómo comprobar la longitud de una variable

Si la longitud de &OPTION es superior a un carácter, el control pasa a la etiqueta -FORMAT. Después, el comando -HTMLFORM muestra un mensaje, informando al usuario de que sólo se puede introducir un carácter.

-TOP
-IF &OPTION.LENGTH GT 1 GOTO FORMAT ELSE
-GOTO PRODSALES;
     .
     .
     .
-PRODSALES
   TABLE FILE SALES
     .
     .
     .
   END
-EXIT
-FORMAT
-HTMLFORM BEGIN
<HTML>
<BODY>
PLEASE ENTER ONLY ONE CHARACTER.
</BODY>
</HTML>
-HTMLFORM 
END


Ejemplo: Cómo comprobar el tipo de un valor

Si &OPTION no es alfanumérico, el control pasa a la etiqueta -NOALPHA. -HTMLFORM muestra una página HTML que indica al usuario que sólo se aceptan caracteres alfanuméricos.

-IF &OPTION.TYPE NE A GOTO NOALPHA ELSE
- GOTO HRINFO;
      .
      .
      .
-HRINFO
   TABLE FILE CENTHR
      .
      .
      .
   END
-EXIT
-NOALPHA
-HTMLFORM BEGIN
<HTML>
<BODY>
ENTER A LETTER ONLY.
</BODY>
</HTML>
-HTMLFORM

Principio de página

x
Cómo evaluar una variable inmediatamente

Cómo:

El operador .EVAL permite evaluar el valor de una variable, de forma inmediata, permitiendo modificar dinámicamente los procedimientos. El operador .EVAL resulta útil, sobre todo, a la hora de modificar el código en tiempo de ejecución.



x
Sintaxis: Cómo Evaluar una variable inmediatamente
[&]&variable.EVAL

donde:

variable

Es una variable local o global.

Una vez ejecutado el procedimiento del comando, la expresión queda reemplazada por el valor de la variable especificada, antes de que se lleve a cabo cualquier otra operación. Sin el operador .EVAL no podrá usar una variable en lugar de determinados comandos.



Ejemplo: Cómo usar .EVAL para que WebFOCUS interprete una variable

El código

-SET &A='-TYPE';
&A HELLO

produce un mensaje de error, que indica que WebFOCUS no reconoce el valor &A:

Añada el operador .EVAL a la variable &A para que WebFOCUS pueda interpretar la variable correctamente. Si añade el operador .EVAL del siguiente modo

-SET &A='-TYPE';
&A.EVAL HELLO

se genera esta salida:



Ejemplo: Cómo evaluar una variable inmediatamente

El siguiente ejemplo explica cómo usar el operador .EVAL en una expresión de selección de registros. Los números de la izquierda corresponden a las notas que siguen al procedimiento:

1. -SET &R='IF SALARY GT 60000';
2. -IF &Y EQ 'YES' THEN GOTO START;
3. -SET &R = '-*';
   -START
4.   TABLE FILE CENTHR
     PRINT SALARY 
     BY PLANT BY LNAME
5.   &R.EVAL
     END

El procedimiento se ejecuta del modo siguiente:

  1. El procedimiento establece el valor &R en 'IF SALARY GT 60000'.
  2. Si &Y es YES, el procedimiento se bifurca en la etiqueta START, eludiendo el segundo comando -SET.
  3. Si &Y es NO, el procedimiento continúa hasta el segundo comando -SET, que establece &R en '-*', un comentario.

    La solicitud de informe queda apilada.

  4. El procedimiento evalúa el valor de &R. Si el usuario final quería una prueba de selección de registros, el valor de &R es 'IF SALARY GT 60000' y la línea queda apilada.
  5. Si el usuario final no quería una prueba de selección de registros, el valor de &R es '-*' y se ignora la línea.

Principio de página

x
Cómo llevar a cabo un recuento con una variable indexada

Cómo:

Puede añadir el valor de una variable al valor de otro, creando así una variable indexada. Esta característica funciona con las variables locales y globales.

Si el valor indexado es numérico, el efecto es similar al de un conjunto en los lenguajes de programación tradicionales. Por ejemplo, si el valor del índice &K varía entre 1 y 10, la variable &AMOUNT.&K se refiere a una de diez variables, entre &AMOUNT1 y &AMOUNT10.

Puede utilizar un índice numérico como contador, y puede establecerlo, aumentarlo o probarlo en un procedimiento.



x
Sintaxis: Cómo Crear una variable indexada
-SET &name.&index[.&index...] = expression;

donde:

&name

Es una variable.

.&índice

Es una variable numérica o alfanumérica cuyo valor se ha añadido a &name. El punto es obligatorio.

Si emplea más de un índice, se concatenan todos los valores de los índices y la cadena queda añadida al nombre de la variable.

Por ejemplo, &V.&I.&J.&K equivale &V1120 cuando &I=1, &J=12, y &K=0.

expression

Es una expresión válida. Para más información sobre los tipos de expresiones que puede escribir, consulte el manual Cómo crear informes con el lenguaje WebFOCUS.



Ejemplo: Cómo usar una variable indexada en un bucle

Puede usar las variables indexadas en un bucle. El siguiente ejemplo produce el equivalente a un bucle DO, utilizado en los lenguajes de programación tradicionales:

-SET &N = 0;
-LOOP
-SET &N = &N+1;
-IF &N GT 12 GOTO OUT;
-SET &MONTH.&N=&N;
-TYPE &MONTH.&N 
-GOTO LOOP
-OUT

En este ejemplo, &MONTH es la variable indexada y &N, el índice. El valor del índice se proporciona por medio del comando -SET. El primer -SET inicializa el índice desde 0, mientras que el segundo lo incrementa cada vez que el procedimiento pase por el bucle.

Si el valor de un índice no se ha definido antes que la referencia, se usa por defecto un valor en blanco. Por tanto, el nombre y el valor de la variable indexada no sufren ningún cambio.

Las variables indexadas están incluidas en el límite de 384 variables, del sistema.


WebFOCUS