Cómo crear y trabajar con variables

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:


Principio de página

x
Referencia: Características de las variables

Las siguientes características corresponden a todas las variables:


Principio de página

x
Cómo crear y trabajar con variables locales y globales

En esta sección:

Cómo:

Referencia:

Las variables locales y globales son aquellas cuyos valores definidos por el usuario deben introducirse en tiempo de ejecución.

Nota: Los valores con comas insertadas (',') no están permitidos.



x
Referencia: Convenciones de nomenclatura de variables locales y globales

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:



x
Sintaxis: Cómo Especificar el nombre de una variable
&[&]name

donde:

name

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.



Ejemplo: Nombres de variables

Las siguientes variables han sido nombradas correctamente:

&WHICHPRODUCT
&WHICH_CITY
'&CITY'
&&CITY

Los nombres de las siguientes variables son incorrectos, por los motivos citados:

&WHICH -CITY

Contiene un espacio en blanco insertado.

&WHICH -CITY

Contiene un guión.

WHICHCITY

Falta el ampersand (&) inicial.



Ejemplo: Cómo usar las variables locales

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.



Ejemplo: Cómo usar las variables globales

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


x
Cómo concatenar variables

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.



x
Sintaxis: Cómo Concatenar una variable
-SET &name3 = &name1 || &name2;

donde:

&name3

Es el nombre de la variable concatenada.

&name1 || &name2

Son las variables, separadas por el símbolo de concatenación y un espacio a ambos lados.



x
Cómo eliminar los espacios en blanco finales de una variable

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.



x
Sintaxis: Cómo Eliminar los espacios en blanco finales
-SET &var2 = TRUNCATE(&var1);

donde:

&var2

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.

&var1

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.



Ejemplo: Cómo eliminar los espacios en blanco finales

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:



Ejemplo: Cómo eliminar los espacios finales de una cadena compuesta únicamente por espacios en blanco

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:



Ejemplo: Cómo usar la función TRUNCATE como argumento de una función

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:



x
Cómo mostrar el valor de una variable

Puede mostrar el valor de una variable emitiendo una consulta.



x
Sintaxis: Cómo Mostrar el valor de una variable local
-? &[string]

donde:

string

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.



x
Sintaxis: Cómo Mostrar el valor de las variables globales
? &&


x
Cómo asignar el valor de una variable a un parámetro

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).



x
Sintaxis: Cómo Asignar el valor de un parámetro a una variable
-? SET parameter variable

donde:

parámetro

Es un parámetro SET.

variable

Es el nombre de la variable en que se va a almacenar el valor.



Ejemplo: Cómo asignar el valor de una variable a un parámetro

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.


Principio de página

x
Cómo trabajar con variables del sistema y de estadísticas

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.



x
Referencia: Variables del sistema 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


Ejemplo: Cómo recuperar la hora con &DATE

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


Ejemplo: Cómo recuperar el nombre del procedimiento con &FOCFOCEXEC

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


x
Referencia: Variables estadísticas de WebFOCUS

É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.



Ejemplo: Cómo contar el número de líneas imprimidas con &LINES

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