Toolkit II, Manual de Usuario
Anterior Siguiente

13 Conversiones de Formato

El Toolkit II aporta un número de facilidades para entradas y salidas en un formato fijado. Entre otras, se encuentran las conversiones de números binarios y hexadecimales así como el formato decimal fijo. La mayoría de estas facilidades son en forma de función, pero se incluye también un nuevo comando.

13.1 PRINT_USING

PRINT_USING es una versión de PRINT para la escritura en formato fijo.

PRINT_USING #canal,formato,lista de ítems a escribir

El "formato" es una cadena o expresión de cadena que contiene una imagen de la salida deseada. En dicha cadena, los caracteres + - # * , . ! \ " ' $ y @ tienen un significado especial. El procedimiento escribe los caracteres de la cadena "formato" hasta que encuentra uno especial.

Si se encuentra el carácter @, el siguiente carácter será escrito aunque se trate de un carácter especial.

Si se encuentra un carácter " o ' (comillas), se escribirán todos los caracteres que sigan hasta encontrar otras comillas.

Si se encuentra el carácter \ se escribirá un carácter de "nueva linea".

El resto de caracteres aparecen en "campos". Para cada campo, se coge un ítem de la lista, se le formatea de acuerdo a la forma del campo y se le escribe.

El campo determina no sólo la forma del ítem, sino también su ancho (igual al ancho del campo). Las anchuras de los campos en los siguientes ejemplos son arbitrarias:

campo       formato
#####       si el ítem es una cadena, escribirla justificándola a la

            izquierda o truncándola; de lo contrario, escribir el

            número entero justificándolo a la derecha
***** Escribir el número entero justificándolo a la derecha y rellenando el campo con asteriscos (por ejemplo, ***12)
#####.## Escribir el número en formato decimal de coma fija (por ejemplo, 12.67)
****.** Escribir el número en formato decimal de coma fija, rellenando el campo con asteriscos (por ejemplo, **12.67)
##,###.## Escribir el número en formato decimal de coma fija, con los miles separados con comas (por ejemplo 1,234.56)
**,***.** Idem, rellenándolo con asteriscos (por ejemplo *1,234.56)
-#.####!!!! Escribir el número en formato exponencial (por ejemplo, 2.9979E+08) con signo opcional
+#.####!!!! Idem, colocando siempre el signo

Un campo exponencial debe comenzar con un signo, un #, y un punto decimal (coma o punto). Debe acabar con cuatro signos de exclamación, !!!!.

Un campo decimal puede llevar como prefijo o como terminación un + o -, o puede ser incluido entre paréntesis. Si un campo está entre paréntesis, los valores negativos se escribirán entre paréntesis. Si se pone un -, el signo sólo se escribirá cuando sea negativo; si se pone un +, siempre se escribirá el signo. Si el + o - está al final del campo, el signo será colocado siguiendo al valor.

Los números pueden escribirse con un punto o con una coma para señalar la parte decimal. Si el campo sólo incluye un punto o una coma, dicho carácter será empleado como punto decimal. Si hay más de un punto o coma, el último de dichos caracteres será utilizado como punto (o coma) decimal y los otros como separadores de los millares. ¡ Larga vida a la unidad europea !.

Si el punto decimal está al final del campo, no será impreso. De esta manera, los valores monetarios pueden ser escritos con los millares separados pero sin punto decimal (por ejemplo 1,234).

El carácter $ permite insertar en los campos, por ejemplo, los símbolos de las monedas de forma que sean colocados justamente antes del valor. Para ello debe colocarse el símbolo de la moneda entre el $ y el primer # del campo (por ejemplo, $DM#.###,## o $$##.##).

Por ejemplo:

fmt$="Debe *******.**:($SKr##.###,##):##,###.##+\b0 "
PRINT_USING fmt$, 123.45, 123.45, 123.45
PRINT_USING fmt$, -12345.67, -12345.67, -12345.67
PRINT_USING "-#.###!!!!\b0 ", 1234567

escribirá

Debe ****123.45: SKr123,45 : 123.45+
Debe *-12345.67:(SKr12.345,67):12,345.67-
1.235E+06

13.2 Conversiones a Formato Decimal

Las siguientes rutinas convierten un valor en un número decimal en forma de cadena. El número de decimales es fijo y no se usa la forma exponencial.

FDEC$ (valor,longitud,decimales) formato decimal fijo
IDEC$ (valor,longitud,decimales)
CDEC$ (valor,longitud,decimales)

El número de caracteres de la cadena devuelta viene dado por el parámetro longitud, mientras que el parámetro decimales señala el de decimales.

Las tres rutinas son similares. FDEC$ convierte el valor tal cual, mientras que IDEC$ asume que el valor dado es una representación integral en unidades del dígito menos significativo mostrado. CDEC$ es la conversión para monedas, siendo muy similar a IDEC$ excepto en que se colocan comas cada tres dígitos.

FDEC$ (1234.56,9,2) devuelve " 1234.56"
IDEC$ (123456,9,2) devuelve " 1234.56"
CDEC$ (123456,9,2) devuelve " 1,234.56"

Si la longitud dada no es suficiente para contener el valor, la cadena se rellena con '*'. El valor debe estar entre -2^31 y 2^31 (-2,000,000,000 a +2,000,000,000) para IDEC$ y CDEC$, mientras que para FDEC$ es el valor multiplicado por 10^decimales el que debe estar en dicho rango.

13.3 Conversión a Formato Exponencial

La siguiente función permite convertir un valor en una cadena que representa al valor en forma exponencial.

FEXP$(valor,longitud,decimales) formato exponencial fijo

La forma tiene un signo opcional y un dígito antes del punto decimal, y decimales dígitos después del punto decimal. El exponente se compone de una "E" seguida de un signo y de dos dígitos. La longitud debe ser al menos 7 unidades más grande que decimales. Por ejemplo:

FEXP$(1234.56,12,4) devuelve " 1.23456E+03"

13.4 Números Binarios y Hexadecimales

HEX$(valor,número de bits) convierte a hexadecimal
BIN$(valor,número de bits) convierte a binario

Estas funciones devuelven una cadena de suficiente longitud como para representar el número de bits especificado de la parte menos significativa del valor. En el caso de HEX$ el número de bits es redondeado al siguiente múltiplo de cuatro.

HEX(cadena hexadecimal) hexadecimal a valor decimal
BIN(cadena binaria) binario a valor decimal

Estas funciones convierten la cadena dada en un valor. Para BIN, cualquier carácter de la cadena cuyo valor ASCII sea par, será tratado como 0, mientras que los caracteres con valor ASCII impar lo serán como 1. Por ejemplo, BIN('.#.#') devuelve el valor 5. Para HEX, los dígitos "0" a "9", "A" a "F" y "a" a "f" tienen su significado convencional; los demás caracteres generarán un error.


Anterior Índice de Materias Siguiente
Acceso directo a ficheros   Control de la pantalla