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.
Se aplican las siguientes reglas a los valores de las 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 ®IONMGR, 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: ®IONMGR" "CALCULATED AS OF &DATE" ON TABLE SET STYLE * TYPE=REPORT, GRID=OFF,$ END 6. -RUN
El procedimiento se ejecuta del modo siguiente:
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.
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
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 |
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.
-DEFAULT[S] &[&]name=value , [&[&]name=value] [;]
donde:
Es el nombre de la variable.
Es el valor por defecto asignado a la variable.
Es un carácter puntuación opcional.
Nota: -DEFAULTS es un sinónimo de -DEFAULT.
-DEFAULTH &[&]name=value , [&[&]name=value]
donde:
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.
Es el valor por defecto asignado a la variable.
En el siguiente ejemplo, -DEFAULT establece un valor por defecto para &PLANT:
-DEFAULT &PLANT=BOS TABLE FILE CENTHR . . .
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.
-SET &[&]name= {expression|value};
-SET &[&]var3= &var1 IN FILE filename1 [OR &var2 IN FILE filename2 ...];
donde:
Es el nombre de la variable.
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.
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.
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.
Es la variable que contiene el valor que se va a buscar en filename1.
Es la variable que contiene el valor que se va a buscar en filename2.
-SET &VAR1 = 'ABC '; -SET &VAR2 = &VAR1 IN FILE FILE1;
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:
Especifica la truncamiento sin redondeo después del punto decimal. OFF es el valor predeterminado.
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:
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 |
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
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
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.
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
EX[EC] procedure name=value
donde:
Es el nombre del procedimiento que va a contener los valores nombre/valor.
Es el nombre de la variable.
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.
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
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.
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 &.
-READ filename[,] [NOCLOSE] &name[.format.][,][&name][.format.]
donde:
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.
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.
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.
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=' ';
-WRITE filename [NOCLOSE] text
donde:
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.
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.
Es cualquier combinación de variables y texto.
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 . . .
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:
-READFILE [app/]mastername
donde:
Es el directorio de aplicaciones en que reside el archivo.
Es el nombre del archivo máster que se va a leer.
(FOC339) DIALOGUE MANAGER -READ FAILED: CHECK FILEDEF OR ALLOCATION FOR: -READFILE filename
(FOC702) THE OPTION SPECIFIED IS NOT AVAILABLE WITH TEXT FIELDS: fieldname
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
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.
El siguiente ejemplo explica cómo crear procedimientos con valores de Report Painter:
Aparece la ventana Lista de descripción de archivos para Report.
Se abre el Report Painter.
Los campos aparecen en Report Painter.
Aparece la ventana Where/If.
Aparece el Expression Builder.
El campo Parámetro aparece en Expression Builder.
Expression Builder muestra SALARY LT &SALPROMPT en el campo Expresiones.
La ventana Where/If se encuentra activa.
Aparece una ventana emergente con un campo para el valor de SALPROMPT.
La salida del informe aparece en el navegador.
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).
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
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.
-SET &name = expression;
donde:
Es una variable introducida por el usuario cuyo valor está asignado con la expresión.
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.
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
Puede usar la función DECODE para cambiar una variable por un valor asociado.
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.
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:
-IF &name{suffix} expression GOTO label...;
donde:
Es una variable proporcionada por el usuario.
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.
Es una expresión válida que utiliza &name con el sufijo especificado como variable.
Especifica una etiqueta para la bifurcación.
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
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
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
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
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.
[&]&variable.EVAL
donde:
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.
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:
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:
La solicitud de informe queda apilada.
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.
-SET &name.&index[.&index...] = expression;
donde:
Es una variable.
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.
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.
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 |