Cómo procesar datos de divisas

Cómo:

Referencia:

Cuando haya creado su origen de datos de divisas, identificado los campos denominados en divisa de sus orígenes de datos y activado su origen de datos de divisas, podrá llevar a cabo conversiones de divisas.

Cada id. de divisa del origen de datos genera una función de conversión virtual con el mismo nombre que el id. de divisa correspondiente. Por ejemplo, si ha añadido BEF a su origen de datos de divisas, se generará una conversión de divisa virtual llamada BEF.

La función euro, EUR, está incluida por defecto en su aplicación. No es necesario añadir el id. de divisa EUR al origen de datos de divisas.

El resultado de la conversión se calcula con un grado de precisión muy elevado, de 31 a 36 dígitos significativos, dependiendo de la plataforma. La precisión del resultado final se redondea a dos decimales. Para mostrar el resultado con la precisión adecuada, el formato debe permitir el uso de al menos dos decimales.


Principio de página

x
Sintaxis: Cómo Procesar datos de divisas

En un procedimiento

DEFINE FILE filename
result/format [CURR curr_id] = curr_id(infield, rate1 [,rate2]);
END

o

COMPUTE result/format [CURR curr_id] = curr_id(infield, rate1 [,rate2]);

En un archivo máster

DEFINE result/format [CURR curr_id] = curr_id(infield, rate1 [,rate2]);$

donde:

filename

Es el nombre del archivo para el que se ha definido este campo.

result

Es el valor de la divisa convertida.

format

Es un formato numérico. Dependiendo de la denominación de conversión utilizada, el número de decimales recomendado es dos o cero. El resultado siempre se redondea a dos decimales, que aparecerán si el formato permite esta función. No utilice los formatos de número entero y punto flotante.

curr_id

Es el id. de divisa del campo de resultado. El id. debe ser el valor de EUR o coincidir con un id. de divisas en el origen de datos. Cualquier otro valor produce el siguiente mensaje:

(FOC263)  EXTERNAL FUNCTION OR LOAD MODULE NOT FOUND: curr_id

Nota: El atributo CURR, a la izquierda de DEFINE o de COMPUTE, identifica el campo de resultado como un valor denominado en divisa que se puede pasar como argumento a una función de divisa, en cálculos posteriores de este tipo. Al añadir este atributo a la parte izquierda de DEFINE o COMPUTE, no se invoca ninguna conversión de formato o valor para el resultado calculado.

infield

Es un valor denominado en divisa. Este valor de entrada se convertirá de su divisa original a la denominación curr_id. Si las divisas de infield y result son las mismas, no se realiza ningún cálculo y el valor de result es igual que el de infield.

rate1

El nombre de un campo de tipo de cambio del origen de datos de divisa. El valor de infield se divide por el valor rate1 de la divisa, para obtener el número de euros equivalente.

Si rate2 no aparece especificado en el cálculo de la divisa y es necesaria una triangulación, el resultado inmediato se multiplica por el valor rate1 de la divisa result, para poder completar la conversión.

En determinados ocasiones, puede que sea necesario introducir tipos de cambio diferentes para casos especiales. En estos casos puede especificar cualquier cualquier campo o constante numérica para rate1, siempre que indique el número de unidades de la denominación de divisa infield equivalente a un euro.

rate2

El nombre de un campo de tipo de cambio del origen de datos de divisa. Este argumento sólo se usa en triangulaciones que deben especificar campos de tipo diferentes para las divisas de infield y result. Si una de las divisas que forman parte del cálculo es el euro, se ignora el argumento.

El número de euros que se ha derivado con rate1 se multiplica por el valor rate2 de la divisa de result, para completar la conversión.

En determinados ocasiones, puede que sea necesario introducir tipos de cambio diferentes para casos especiales. En estos casos puede especificar cualquier cualquier campo o constante numérica para rate2, siempre que indique el número de unidades de la denominación de divisa result equivalente a un euro.


Principio de página

x
Referencia: Mensajes de error en cálculos de divisa

Al emitir una solicitud de informe basada en un archivo máster que especifica un código de divisa no especificado en el origen de datos de divisas activo, se genera el siguiente mensaje:

(FOC1911) CURRENCY IN FILE DESCRIPTION NOT FOUND IN DATA

Si la expresión de conversión de divisa contiene un error de sintaxis o un nombre de campo que no se ha definido, se genera el siguiente mensaje:

(FOC1912)  ERROR IN PARSING CURRENCY STATEMENT


Ejemplo: Cómo usar la función de conversión de divisas

Suponga que el origen de datos de divisas contiene los ids. USD y BEF, y que PRICE está denominado en francos belgas:

FIELD = PRICE, ALIAS=, FORMAT = P17.2, CURR=BEF,$


Ejemplo: Cómo convertir de dólares USA a euros, francos franceses y belgas

El siguiente ejemplo explica cómo realizar una conversión de dólares USA a francos franceses y belgas.

  1. Cree un origen de datos de divisas que identifique la divisa y uno o varios tipos de cambio. (Consulte Cómo crear el origen de datos de divisas para más detalles.) El siguiente origen de datos de ejemplo se llama CURRCODE:
    FILE = CURRCODE, SUFFIX = COM,$
    FIELD = CURRENCY_ID,,    FORMAT = A3,    ACTUAL = A3 ,$
    FIELD = ACTUAL, ALIAS =, FORMAT = D12.6, ACTUAL = A12 ,$
    FIELD = BUDGET, ALIAS =, FORMAT = D12.6, ACTUAL = A12 ,$
  2. Cree un origen de datos con los valores que va a convertir. (Consulte Cómo identificar campos que contienen datos de divisas para más detalles.) El siguiente origen de datos de ejemplo se llama CURRDATA:
    FILE=CURRDATA,SUFFIX=COM,$
    FIELD=PRICE, FORMAT=P17.2 , ACTUAL=A5, CURR=USD,$
  3. Cree una solicitud que emplee el origen de datos de divisas para convertir los valores de divisa pertenecientes al origen de datos que contiene estos valores. El siguiente procedimiento convierte PRICE a euros, francos franceses y francos belgas. Los números de la izquierda se corresponden con las notas que explican el código.
   -* THE FOLLOWING ALLOCATIONS ARE FOR RUNNING UNDER z/OS 
1. -* DYNAM ALLOC FILE CURRCODE DA USER1.FOCEXEC.DATA(CURRCODE) SHR REU 
2. -* DYNAM ALLOC FILE CURRDATA DA USER1.FOCEXEC.DATA(CURRDATA) SHR REU
   -* THE FOLLOWING ALLOCATIONS ARE FOR RUNNING UNDER WINDOWS NT 
1.    FILEDEF CURRCODE DISK GGDEMO/CURRCODE.COM 
2.    FILEDEF CURRCODE DISK GGDEMO/CURRDATA.COM 
3. SET EUROFILE = CURRCODE 
   DEFINE FILE CURRDATA 
4. PRICEEUR/P17.2 CURR EUR = EUR(PRICE, ACTUAL);
    END
    TABLE FILE CURRDATA
    PRINT PRICE PRICEEUR AND COMPUTE 
5. PRICEFRF/P17.2 CURR FRF = FRF(PRICE, ACTUAL);
    PRICEBEF/P17.2 CURR BEF = BEF(PRICE, ACTUAL);
    END

La solicitud de informe se ejecuta del siguiente modo:

  1. El comando FILEDEF o DYNAM informa al sistema operativo acerca de la ubicación del origen de datos CURRCODE.
  2. El comando FILEDEF informa al sistema operativo acerca de la ubicación del origen de datos CURRDATA.
  3. El comando SET especifica el origen de datos de divisas como CURRCODE.
  4. Esta línea llama a la función EUR, que convierte los dólares US a euros.
  5. Las dos líneas siguientes son las funciones de conversión que transforman los euros a su equivalente en francos franceses y belgas.

La salida es:

PRICE          PRICEEUR           PRICEFRF           PRICEBEF 
-----          --------           --------           -------- 
 5.00              4.26              27.97             172.01 
 6.00              5.12              33.57             206.42 
40.00             34.12             223.78            1376.20 
10.00              8.53              55.95             344.06

No se puede usar el valor de euros derivado PRICEEUR en conversiones de USD a BEF. PRICEEUR tiene dos decimales (P17.2), no tres, de acorde a las reglas de triangulación.


WebFOCUS