En esta sección:
Referencia: |
Puede usar las variables para personalizar un procedimiento, como aparece descrito en Cómo personalizar un procedimiento con variables. Las variables son de dos categorías:
Las siguientes características corresponden a todas las variables:
Nota: Las variables de Dialogue Manager sólo contienen datos alfanuméricos. Si una función, o expresión, devuelve un valor numérico a una variable de Dialogue Manager, el valor queda truncado en un número entero y se convierte al formato alfanumérico, antes de almacenarse en la variable.
Las variables locales y globales son aquellas cuyos valores definidos por el usuario deben introducirse en tiempo de ejecución.
La variable local se identifica mediante un símbolo ampersand (&) individual, seguido del nombre de la variable.
Puesto que WebFOCUS crea una nueva sesión de WebFOCUS, en el Servidor de informes WebFOCUS, cada vez que envía una solicitud, no se retienen los valores de las variables globales entre solicitudes de informes. Esto quiere decir que puede utilizar la misma variable global en más de un procedimiento, siempre y cuando llame a dichos procedimientos en la misma solicitud.
Si quiere que el valor global de una variable esté en vigor en todos los procedimientos, añada la variable a un perfil del Servidor de informes WebFOCUS; por ejemplo, EDASPROF.PRF.
La variable global se identifica mediante un doble ampersand (&&), seguido del nombre de la variable.
Nota: Los valores con comas insertadas (',') no están permitidos.
Los nombres de las variables locales y globales están definidos por el usuario, mientras que las variables del sistema y las de estadísticas cuentan con nombres predefinidos. Se aplican las siguientes reglas a la hora de nombrar las variables locales y globales:
&[&]name
donde:
Es el nombre de la variable. El ampersand individual (&) indica que la variable es local, mientras que el doble ampersand (&&) indica una global. El ampersand individual seguido de una cadena numérica, indica que la variable es posicional.
El nombre que asigne debe seguir las reglas definidas en Convenciones de nomenclatura de variables locales y globales.
Las siguientes variables han sido nombradas correctamente:
&WHICHPRODUCT &WHICH_CITY '&CITY' &&CITY
Los nombres de las siguientes variables son incorrectos, por los motivos citados:
Contiene un espacio en blanco insertado.
Contiene un guión.
Falta el ampersand (&) inicial.
Examine el siguiente procedimiento, SALESREPORT, donde &CITY, &CODE1 y &CODE2 son variables locales.
TABLE FILE SALES HEADING CENTER "MONTHLY REPORT FOR &CITY" "PRODUCT CODES FROM &CODE1 TO &CODE2" " " SUM UNIT_SOLD AND RETURNS AND COMPUTE RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD); BY CITY IF CITY EQ &CITY BY PROD_CODE IF PROD_CODE IS-FROM &CODE1 TO &CODE2 END
Suponga que ha proporcionado los siguientes valores al llamar al procedimiento:
EX SALESREPORT CITY=STAMFORD, CODE1=B10, CODE2=B20
Dialogue Manager sustituye los valores por las variables del siguiente modo:
TABLE FILE SALES HEADING CENTER "MONTHLY REPORT FOR STAMFORD" "PRODUCT CODES FROM B10 TO B20" " " SUM UNIT_SOLD AND RETURNS AND COMPUTE RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD); BY CITY IF CITY EQ STAMFORD BY PROD_CODE IF PROD_CODE IS-FROM B10 TO B20 END
Una vez ejecutado y finalizado el procedimiento, se pierden los valores STAMFORD, B10 y B20.
El siguiente ejemplo explica el uso de tres variables globales: &&CITY, &&CODE1, &&CODE2. Se sustituyen los valores del primer procedmiento, PROC1, aunque se mantienen y pasan al segundo, PROC2.
TABLE FILE SALES HEADING CENTER "MONTHLY REPORT FOR &&CITY" SUM UNIT_SOLD AND RETURNS AND COMPUTE RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD); BY CITY IF CITY EQ &&CITY BY PROD_CODE IF PROD_CODE IS-FROM &&CODE1 TO &&CODE2 END EX PROC2
TABLE FILE SALES HEADING CENTER "MONTHLY REPORT FOR &&CITY AND PRODUCT &&CODE1" PRINT UNIT_SOLD AND RETURNS AND COMPUTE RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD); BY CITY IF CITY EQ &&CITY IF PROD_CODE EQ &&CODE1 END
Puede añadir una variable a una cadena de caracteres, o combinar una o varias variables o literales para concatenarla. Consulte el manual Cómo crear informes con el lenguaje WebFOCUS para más detalles sobre la concatenación. Cuando use variables es importante que separe cada una de ellas del símbolo de concatenación, mediante un espacio.
Puede eliminar los espacios en blanco finales de una variable, por medio de la función TRUNCATE de Dialogue Manager. TRUNCATE sólo puede usarse con los comandos de Dialogue Manager compatibles con las funciones, como -SET e -IF. No puede usarse en un comando -TYPE ni en argumentos pasados a procedimientos.
TRUNCATE sólo puede actuar sobre una variable al mismo tiempo. Si intenta usar la función TRUNCATE con más de un argumento, obtendrá el siguiente mensaje de error:
(FOC03665) Error loading external function 'TRUNCATE'
Nota: En cambio, sí puede haber más de una función escrita por el usuario del mismo nombre, sin que se produzca un conflicto.
-SET &var2 = TRUNCATE(&var1);
donde:
Es la variable de Dialogue Manager a la que se devuelve la cadena truncada. La longitud de esta variable es la de la cadena original o de la variable sin espacios en blanco finales. Si la variable original estaba compuesta únicamente por espacios en blanco, se devuelve un solo espacio en blanco, con una longitud de uno.
Es la variable de Dialogue Manager o una cadena literal, entre comillas simples (‘). Es compatible el uso de variables del sistema y de estadísticas, además de las variables locales y globales creadas por los usuarios.
En el siguiente ejemplo, TRUNCATE elimina los espacios en blanco finales.
-SET &LONG = 'ABC ' ; -SET &RESULT = TRUNCATE(&LONG); -SET &LL = &LONG.LENGTH; -SET &RL = &RESULT.LENGTH; -HTMLFORM BEGIN <HTML> <BODY> <P>LONG = &LONG LENGTH = &LL</P> <P>RESULT = &RESULT LENGTH = &RL</P> </BODY> </HTML> -HTMLFORM END
La salida es:
En el siguiente ejemplo, cuando TRUNCATE elimina los espacios en blanco finales, se devuelve una longitud de 1, ya que la cadena sólo incluye espacios.
-SET &LONG = ' ' ; -SET &RESULT = TRUNCATE(&LONG); -SET &LL = &LONG.LENGTH; -SET &RL = &RESULT.LENGTH; -HTMLFORM BEGIN <HTML> <BODY> <P>LONG = &LONG LENGTH = &LL</P> <P>RESULT = &RESULT LENGTH = &RL</P> </BODY> </HTML> -HTMLFORM END
La salida es:
En el siguiente ejemplo, TRUNCATE es un argumento de la función YMD.
-SET &LONG = 'ABC ' ; -SET &RESULT = EDIT(TRUNCATE(&LONG)|'Z','9999'); -SET &LL = &LONG.LENGTH; -SET &RL = &RESULT.LENGTH; -HTMLFORM BEGIN <HTML> <BODY> <P>LONG = &LONG LENGTH = &LL</P> <P>RESULT = &RESULT LENGTH = &RL</P> </BODY> </HTML> -HTMLFORM END
La salida es:
Puede mostrar el valor de una variable emitiendo una consulta.
-? &[string]
donde:
Es el nombre de una variable. Si no se especifica este parámetro, aparecen los valores actuales de todas las variables locales, globales, del sistema y de estadísticas.
Puede capturar el valor de un parámetro SET, en una variable local.
En Developer Studio, la salida aparece en la Consola de comandos. En WebFOCUS, el resultado se devuelve a la ventana de su navegador, o como un comentario en el archivo HTML, si existe otra salida HTML de la solicitud. Utilice las funciones correspondientes del navegador Web, para ver los comentarios HTML (por ejemplo, Ver código fuente en Microsoft Internet Explorer).
-? SET parameter variable
donde:
Es un parámetro SET.
Es el nombre de la variable en que se va a almacenar el valor.
Introduzca lo siguiente para almacenar el valor de ASNAMES como valor de &ABC.
-? SET ASNAMES &ABC
Si omite &ABC del comando, se crea una variable llamada &ASNAMES, que contiene el valor de ASNAMES.
Referencia: |
Los valores de las variables del sistema y de las estadísticas están predefinidos y son proporcionados automáticamente por el sistema, cuando aparecen citados en un procedimiento. Las variables de sistema y de estadísticas tienen nombres que empiezan por un ampersand individual (&). Un ejemplo de estas variables es &LINES, que indica cuántas líneas de salida se han generado, y &DATE, que muestra la fecha actual.
Para ver una lista de las variables del sistema, consulte Variables del sistema WebFOCUS .
Para ver una lista de las variables estadísticas, consulte Variables estadísticas de WebFOCUS .
Para anular los valores proporcionados por el sistema WebFOCUS, asigne un valor a la variable, de manera explícita, mediante un comando -SET o -DEFAULT. Sin embargo, le recomendamos que no anule estos valores.
La siguiente tabla lista las variables del sistema disponibles en WebFOCUS.
Variable del sistema |
Descripción |
Formato o valor |
---|---|---|
&APPROOT |
Contiene directorios y datos. Éste es el directorio raíz de aplicación, por defecto (directorio APPROOT), en que WebFOCUS busca los archivos de proyectos. Los directorios \ibinccen y \ibisamp incluyen archivos de ejemplo. |
d:\ibi\apps |
&AUTOINDEX |
Acelera la recuperación de datos aprovechando automáticamente los campos indexados, en la mayoría de las solicitudes TABLE que incluyen pruebas de igualdad o rango en dichos campos. Sólo se aplica a los orígenes de datos FOCUS. AUTOINDEX nunca se lleva a cabo cuando la solicitud de TABLE contiene una vista alternativa del archivo; por ejemplo, TABLE FILE filename.filename. La recuperación indexada no se lleva a cabo cuando la solicitud TABLE contiene las frases BY HIGHEST o BY LOWEST y AUTOINDEX está activado. |
No |
&DATE |
Devuelve la fecha actual. |
MM/DD/YY |
&DATEfmt &DATXfmt |
Devuelve el valor actual de fecha o fecha-hora, donde fmt puede ser cualquier formato válido de fecha o fecha-hora. &DATEfmt retiene los espacios en blanco finales del valor devuelto. &DATXfmt suprime los espacios en blanco finales del valor devuelto. Nota: No es posible utilizar el símbolo de concatenación (|) para eliminar los signos de puntuación entre los componentes. Para devolver un valor sin signos de puntuación entre los componentes, utilice &YYMD o &DATEHYYMDN. Para más información acerca de los formatos de fecha y fecha-hora, consulte Cómo describir un campo individual, en el manual Cómo describir datos con el lenguaje WebFOCUS. |
Devuelve el valor actual de fecha o fecha-hora, donde fmt puede ser cualquier formato válido de fecha o fecha-hora. Puesto que muchas de las opciones de formato de fecha pueden añadirse al prefijo DATE, para formar uno de estos nombres de variable, evite usar DATE como prefijo a la hora de crear el nombre de una variable. |
&DMY |
Devuelve la fecha actual. |
DDMMYY |
&DMYY |
Devuelve la fecha actual (año de cuatro dígitos). |
DDMMCCYY |
&ECHO |
Muestra las líneas de comandos según se van ejecutando, para probar y depurar procedimientos. |
ON,OFF, ALL, or NONE |
&FOCCODEPAGE |
Devuelve la página de código utilizada por el servidor. |
Un valor de número entero. |
&FOCEXURL |
Ejcuta los drill downs de forma remota. El programa de drill down puede estar situado en su máquina local o en una remota. |
/ibi_apps/ WFServlet?IBIF_webapp= /ibi_apps&IBIC_server |
&FOCFEXNAME |
Devuelve el nombre del FOCEXEC que se está ejecutando, incluso si se ha ejecutado con un comando EX o -INCLUDE, desde otro FOCEXEC. Esta variable difiere de la variable &FOCFOCEXEC en que ésta sólo devuelve el nombre del FOCEXEC que está efectuando la llamada. |
|
&FOCFOCEXEC |
Administra las operaciones de informes en que participan muchas solicitudes de nombres similares y que se ejecutan con el comando EX. &FOCFOCEXEC permite determinar fácilmente el procedimiento que se está ejecutando, mediante la devolución de la ruta completamente cualificada del procedimiento. Puede especificar &FOCFOCEXEC en una solicitud o comando de Dialogue Manager, para mostrar el nombre del procedimiento actual. |
|
&FOCHTMLURL |
Le permite acceder a recursos con un alias que no sea /ibi_html. Para generar un alias que no sea /ibi.html en el servidor de informes WebFOCUS, utilice el comando FOCHTMLURL para establecer el alias que se va a generar en lugar de /ibi_html. Este comando seguramente sea utilizado en un perfil de servidor (EDASPROF.PRF) o en uno de los archivos WFS (site.wfs), para establecer una configuración predeterminada para la instalación. |
/ibi_html |
&FOCINCLUDE |
Administra las operaciones de informes en que participan muchas solicitudes de nombres similares y que han sido incluidas con el comando -INCLUDE. Puede especificar &FOCINCLUDE en una solicitud o comando de Dialogue Manager, para mostrar el nombre del procedimiento actual. |
|
&FOCMODE |
Identifica el entorno operativo. |
CMS, CRJE, MSO, OS o TSO. |
&FOCNEXTPAGE |
Es una variable cuyo valor está determinado por el número de la última página utilizada por el último informe. Su valor supera en una unidad al número de la última página utilizada en el último campo. |
0 |
&FOCQUALCHAR |
Devuelve el carácter utilizado para separar los componentes de los nombres de campos cualificados. |
. : ! % | \ |
&FOCREL |
Identifica el número de edición de FOCUS. |
Es el número de edición. |
&MDY |
Devuelve la fecha actual. Útil en comparaciones numéricas. |
MMDDYY |
&MDYY |
Devuelve la fecha actual (año de cuatro dígitos). |
MMDDCCYY |
&RETCODE |
Es el valor devuelto después de que se ejecute un comando del servidor. &RETCODE ejecuta todos los comandos apilados, como -RUN. |
Cualquier valor definido por el comando del servidor. |
&SETFILE |
Contiene el valor del comando SET FILE. |
|
&TOD |
Devuelve la hora actual. Al entrar a FOCUS, esta variable se actualiza a la hora actual del sistema sólo si se ejecuta un comando MODIFY, SCAN o FSCAN. Para obtener la hora exacta durante cualquier proceso, utilice la función HHMMSS. |
HH.MM.SS |
&YMD |
Devuelve la fecha actual. |
YYMMDD |
&YYMD |
Devuelve la fecha actual (año de cuatro dígitos). |
CCYYMMDD |
El siguiente ejemplo incorpora la variable del sistema &DATE a una solicitud. El pie usa la variable &DATE del sistema para insertar la fecha actual del sistema en la parte inferior del informe.
TABLE FILE SALES SUM UNIT_SOLD BY PROD_CODE FOOTING "CALCULATED AS OF &DATE" END
En el siguiente ejemplo de Developer Studio, la variable &FOCFOCEXEC del sistema se ha incorporado a una solicitud de informe, para mostrar el nombre del procedimiento actual.
SET PAGE=OFF TABLE FILE EMPLOYEE "REPORT: &FOCFOCEXEC -- EMPLOYEE SALARIES" PRINT CURR_SAL BY EMP_ID ON TABLE SET STYLE * TYPE=REPORT, SIZE=10, GRID=OFF,$ END
Si la solicitud se almacena como un FOCEXEC llamado SALPRINT, la salida es:
REPORT: SALPRINT -- EMPLOYEE SALARIES | |
EMP_ID | CURR_SAL |
071382660 | $11,000.00 |
112847612 | $13,200.00 |
115360218 | $.00 |
117593129 | $18,480.00 |
119265415 | $9,500.00 |
119329144 | $29,700.00 |
121495681 | $.00 |
123764317 | $26,862.00 |
126724188 | $21,120.00 |
219984371 | $18,480.00 |
326179357 | $21,780.00 |
451123478 | $16,100.00 |
543729165 | $9,000.00 |
818692173 | $27,062.00 |
Éstas son las variables estadísticas disponibles en WebFOCUS.
Variable estadística |
Descripción |
---|---|
&BASEIO |
Es el número de operaciones de entrada/salida. |
&FOCDISORG |
Es el porcentaje de desorganización de un archivo FOCUS. |
&FOCERRNUM |
Es el número del último error, en formato FOCnnnn, mostrado tras la ejecución de un procedimiento. Si se han producido varios errores, esta variable retiene el número del último. Si no se ha producido ningún error, la variable presenta un valor de 0. |
&INDEXIO |
Es el número de operaciones de entrada/salida indexadas. |
&LINES |
Es el número de líneas imprimidas en el último conjunto de preguntas. |
&READS |
Es el número de lecturas físicas de un archivo externo. |
&RECORDS |
Es el número de registros recuperados en el último conjunto de preguntas. |
&SORTIO |
Es el número de operaciones de entrada/salida clasificadas. |
En el siguiente ejemplo, el sistema calcula el valor de la variable estadística &LINES. Si &LINES es 0, el control pasa a la solicitud de TABLE FILE EMPLOYEE, identificada por la etiqueta -RPT2. Si el valor no es de 0, el control pasa a la etiqueta -REPTDONE y el procesamiento finaliza.
TABLE FILE SALES HEADING CENTER "MONTHLY REPORT FOR &CITY" SUM UNIT_SOLD AND RETURNS AND COMPUTE RATIO/D5.2 = 100 * (RETURNS/UNIT_SOLD); BY CITY IF CITY EQ &CITY BY PROD_CODE IF PROD_CODE IS-FROM &CODE1 TO &CODE2 END -RUN -IF &LINES EQ 0 GOTO RPT2 ELSE GOTO REPTDONE; -RPT2 TABLE FILE EMPLOYEE . . . END -RUN -QUIT -REPTDONE -EXIT
WebFOCUS |