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.
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:
Es el nombre del archivo para el que se ha definido este campo.
Es el valor de la divisa convertida.
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.
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.
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.
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.
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.
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
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,$
COMPUTE PRICE2/P17.2 CURR EUR = EUR(PRICE, BUDGET);
DEFINE PRICE3/P17.2 CURR USD = USD(PRICE, ACTUAL);$
Primero se divide PRICE por el tipo ACTUAL de francos belgas para derivar el número de euros redondeado a tres decimales. A continuación, este valor intermedio se multiplica por el tipo ACTUAL de dólares USA y se redondea a dos decimales.
DEFINE PRICE4/P17.2 CURR EUR = EUR(PRICE,5);$
DEFINE PRICE5/P17.2 CURR USD = USD(PRICE, ACTUAL, BUDGET);$
El siguiente ejemplo explica cómo realizar una conversión de dólares USA a francos franceses y belgas.
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 ,$
FILE=CURRDATA,SUFFIX=COM,$ FIELD=PRICE, FORMAT=P17.2 , ACTUAL=A5, CURR=USD,$
-* 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:
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 |