Cómo usar variables ampersand numéricas en funciones

En esta sección:

WebFOCUS almacena todas las variables ampersand como cadenas de formato alfanumérico, independientemente de que contengan datos alfanuméricos o numéricos, o una combinación de ambos. Sólo existen dos tipos de datos disponibles para las variables ampersand: numéricos y alfanuméricos.


Principio de página

x
Cómo determinar el tipo de datos de una variable ampersand

El tipo de datos de las variables ampersand se determina atendiendo únicamente al contenido de los mismos. Por tanto, el uso de las comillas alrededor de un valor numérico, en un comando -SET, no tiene ningún efecto sobre el tipo de datos de la variable ampersand.

Por ejemplo, la siguiente solicitud almacena datos numéricos en las variables &A, &B y &C:

-SET &A=12345;
-SET &B='12345';
-SET &C=123.45
-TYPE &A &B &C
-TYPE &A.TYPE &B.TYPE &C.TYPE

La salida muestra que &A, &B y &C tienen un tipo de datos numérico:

12345 12345 123.45
N  N  N

Principio de página

x
Cómo manipular variables ampersand

Al mostrar, sustituir, concatenar o anexar una variable ampersand, el valor que incluye no experimenta ningún tipo de transformación.

Sustitución

-SET &C=123.45
IF RETAIL_COST EQ &C

se transforma en

IF RETAIL_COST EQ 123.45

Además, tenga en cuenta lo siguiente:

-SET &D= &C;
-TYPE &D &D.TYPE

La salida muestra que &D tiene el mismo valor que &C y que también es numérico:

123.45  N

Concatenación

La variable &F se crea concatenando &A y &C:

-SET &F =  &A | &C;
-TYPE &F &F.TYPE

La salida muestra que el valor de &F es el valor de &A, seguido del valor de &C, y que el tipo es numérico:

12345123.45  N

En el siguiente ejemplo, la variable ampersand &E se ha creado insertando un ampersand en la cadena. El ampersand no se reconoce como parte del nombre de la variable y es tratado como un símbolo alfanumérico, en la cadena:

-SET &E = 1234&C;
-TYPE &E &E.TYPE

La salida muestra que la variable es de tipo alfanumérico, no numérico: No es la concatenación de la cadena '1234' con la variable &C:

1234&C  A

Este comportamiento también se puede producir mediante la concatenación:

-SET &G = AT&|T;
-TYPE &G &G.TYPE

La salida es:

AT&T  A

Principio de página

x
Cómo usar una variable ampersand en una expresión

Cuando se utiliza una variable ampersand en una expresión, es posible que sea necesaria una transformación para poder procesar la expresión. La variable ampersand utilizada en la expresión, suele considerarse un literal y su valor se introduce en la expresión, antes de que se procese. Bajo estas condiciones se lleva a cabo la conversión de datos necesaria para procesar la expresión. Los valores numéricos incluidos en las variables ampersand se consideran números enteros. Siempre que sea posible la expresión se evaluará como un número entero.

En el siguiente ejemplo, &C se ha establecido en 123.55. A continuación, la expresión crea &D, mediante la suma de 100 y &C :

-SET &C=123.55;
-SET &D=&C + 100;
-TYPE &D &D.TYPE

La salida muestra que &D es numérico y su valor de 123.55+100 se trunca en el número entero 223, ya que se está utilizando la aritmética de enteros:

223  N

La siguiente expresión requiere la conversión a doble precisión, puesto que el literal numérico (100.49) de la expresión no es un número entero:

-SET &C=123.55;
-SET &D=&C + 100.49;
-TYPE &D &D.TYPE

La salida muestra que, aunque la aritmética se ha efectuado convirtiendo el valor de &C a doble precisión, el resultado se ha truncado antes ser devuelto a &D:

224  N

Si quiere que el resultado mantenga los lugares decimales, puede establecer el parámetro DMPRECISION en el número de lugares decimales que quiere devolver a la variable ampersand resultante.

Por ejemplo:

SET DMPRECISION=2
-RUN
-SET &C=123.55;
-SET &D=&C + 100.49;

Ahora, el resultado mantiene los lugares decimales:

224.04 N

Principio de página

x
Cómo usar variables ampersand como parámetros de funciones

En esta sección:

La forma en que trata las variables ampersand al pasarlas a una función depende del tipo de datos del parámetro de función.



x
Cómo usar una variable de ampersand numérica como parámetro de función numérica

Cuando la variable ampersand numérica se utiliza como parámetro numérico en una llamada de función, la variable es tratada como si fuese un campo. Puesto que es un campo, no presenta un tipo determinado ni en el archivo máster ni en el FOCEXEC, sino que toma el tipo de datos por defecto, de doble precisión.

Tenga en cuenta que, cuando el resultado es devuelto a una variable de salida, su tipo se determina en base al contenido. Si sólo presenta números y un punto decimal, es numérico. Si contiene otros símbolos, es alfanumérico.

Por ejemplo, la función FTOA convierte un número de precisión simple o doble (F o D) en una cadena alfanumérica, con el formato especificado entre los paréntesis del segundo parámetro:

FTOA (number_to_convert, '(format)', 'alpha_output_format' )

En el siguiente ejemplo, &C se ha establecido en 123.55, que pasa a la función FTOA para su conversión en una cadena alfanumérica, con un símbolo de dólar:

-SET &C=123.55;
-SET &G=FTOA(&C,'(D7.2M)','A11');  
-TYPE &G &G.TYPE

La salida muestra que la cadena $123.55 ha sido devuelta a &G. Puesto que contiene un símbolo no numérico y un punto decimal, es de tipo alfanumérico:

$123.55    A

En el siguiente ejemplo, el formato devuelto no especifica un símbolo de dólar:

-SET &A=12345;                       
-SET  &G=FTOA(&A/100,'(D7.2)','A11');
-TYPE &G &G.TYPE

Debido a que la cadena devuelta sólo incluye dígitos numéricos y un punto decimal, su tipo es numérico:

123.45    N

Tenga en cuenta que, si el número tuviese otro dígito, se devolvería con una coma y su tipo sería alfanumérico:

-SET &A=123456;                       
-SET  &G=FTOA(&A/100,'(D7.2)','A11');
-TYPE &G &G.TYPE

La salida es:

1,234.56    A


x
Cómo usar una variable de ampersand numérica como parámetro de función alfanumérica

Cuando la variable ampersand numérica se está usando como parámetro alfanumérico en una llamada a una función, debe convertir el valor numérico en una cadena alfanumérica, antes de utilizarlo, para evitar un fallo de error de formato. Para ello, emplee una las funciones diseñadas para convertir los valores numéricos en alfanuméricos, o concatene un carácter alfanumérico al valor numérico y, así, poder asignarle un tipo de datos alfanumérico.

Por ejemplo, en el siguiente ejemplo se ha convertido &C en una cadena, que ha sido devuelta a la variable &G. A continuación, &G pasa a la función RJUST, que justifica el valor a la derecha y lo devuelve a la variable &H:

-SET &C=123.55;                   
-SET  &G=FTOA(&C,'(D7.2M)','A11');
-SET &H = RJUST(11,&G,'A11');    
-TYPE &G &G.TYPE                  
-TYPE &H &H.TYPE

La salida es:

$123.55   A
  $123.55 A

WebFOCUS