Formatos binario y hexadecimal
Los datos se pueden leer y escribir en formatos utilizados por varios lenguajes de programación como PL/I, COBOL, FORTRAN y Assembler. Los datos pueden ser binarios, hexadecimales o decimales con zona. Los formatos descritos en esta sección se pueden utilizar como formatos de entrada y como formatos de salida, pero sólo con datos fijos.
El formato de salida predeterminado para todos los formatos descritos en esta sección es un formato F equivalente, que permite el número máximo de columnas para valores con símbolos y puntuación. Para cambiar el valor predeterminado, utilice FORMATS o WRITE FORMATS.
IBw.d (entero binario):
El formato IB lee los campos que contienen datos binarios de punto fijo (entero). Los datos pueden ser generados por COBOL utilizando elementos de datos COMPUTATIONAL, por FORTRAN utilizando INTEGER*2 o INTEGER*4, o por Assembler utilizando elementos de palabra completa y media palabra. El formato general es un número binario con signo de 16 o 32 bits de longitud.
La sintaxis general para el formato IB es IBw.d, donde w es el ancho de campo en bytes (omitido para especificaciones de estilo de columna) y d es el número de dígitos a la derecha de la coma decimal. Puesto que la anchura se expresa en bytes y el número de posiciones decimales se expresa en dígitos, d puede ser mayor que w. Por ejemplo, los dos mandatos siguientes son válidos:
DATA LIST FIXED /VAR1 (IB4.8).
DATA LIST FIXED /VAR1 1-4 (IB,8).
Los anchos de 2 y 4 representan enteros estándar de 16 y 32 bits, respectivamente. Los campos leídos con el formato IB se tratan como firmados. Por ejemplo, el valor binario de un byte 11111111 se leería como -1.
PIBw.d (binario entero positivo) :
El formato PIB es esencialmente el mismo que IB , excepto que no se permiten números negativos. Esta restricción permite un bit adicional de magnitud. El mismo valor de un byte 11111111 se leería como 255.
PIBHEXw (hexadecimal de PIB):
El formato PIBHEX lee los números hexadecimales como enteros sin signo y escribe los enteros positivos como números hexadecimales. La sintaxis general para el formato PIBHEX es PIBHEXw, donde w indica el número total de caracteres hexadecimales. La especificación w debe ser un número par con un máximo de 16.
Para los datos de entrada, cada número hexadecimal debe constar del número exacto de caracteres. No se permiten signos, separadores decimales ni espacios en blanco iniciales y finales. Para algunos sistemas operativos (como IBM CMS), los caracteres hexadecimales deben estar en mayúsculas. El ejemplo siguiente ilustra el tipo de datos que el formato PIBHEX puede leer:
DATA LIST FIXED
/VAR1 1-4 (PIBHEX) VAR2 6-9 (PIBHEX) VAR3 11-14 (PIBHEX).
BEGIN DATA
0001 0002 0003
0004 0005 0006
0007 0008 0009
000A 000B 000C
000D 000E 000F
00F0 0B2C FFFF
END DATA.
LIST.
Los valores de VAR1, VAR2y VAR3 se listan en la figura siguiente. El formato PIBHEX también se puede utilizar para escribir valores decimales como números hexadecimales, lo que puede ser útil para los programadores.
VAR1 VAR2 VAR3
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
240 2860 65535
Zw.d (decimal con zona):
El formato Z lee valores de datos que contienen datos decimales con zona. Estos números pueden ser generados por sistemas COBOL utilizando elementos de datos DISPLAY, por sistemas PL/I utilizando elementos de datos PICTURE o por Assembler utilizando elementos de datos decimales con zona.
En formato decimal con zona, un dígito se representa mediante un byte, generalmente hexadecimal F1 que representa 1, F2 que representa 2, etc. Sin embargo, el último byte combina el signo del número con el último dígito. En el último byte, los hexadecimales A, F o C asignan +, y B, D o E asignan-. Por ejemplo, el hexadecimal D1 representa 1 para el último dígito y asigna el signo menos (-) al número.
La sintaxis general del formato Z es Zw.d, donde w es el número total de bytes (que es el mismo que las columnas) y d es el número de decimales. Para los datos de entrada, los valores pueden aparecer en cualquier lugar dentro de las especificaciones de columna. Se permiten espacios en blanco iniciales y finales. Los decimales pueden estar implícitos en la especificación de formato de entrada o codificados explícitamente en los datos. Los decimales codificados explícitamente alteran temporalmente las especificaciones de formato de entrada.
El ejemplo siguiente ilustra cómo el formato Z lee decimales con zona en sus formularios impresos en sistemas mainframe y PC de IBM . El formulario impreso para la zona de signos (A a I para + 1 a +9, y así sucesivamente) puede variar de un sistema a otro.
DATA LIST FIXED /VAR1 1-5 (Z) VAR2 7-11 (Z,2) VAR3 13-17 (Z)
VAR4 19-23 (Z,2) VAR5 25-29 (Z) VAR6 31-35 (Z,2).
BEGIN DATA
1234A 1234A 1234B 1234B 1234C 1234C
1234D 1234D 1234E 1234E 1234F 1234F
1234G 1234G 1234H 1234H 1234I 1234I
1234J 1234J 1234K 1234K 1234L 1234L
1234M 1234M 1234N 1234N 1234O 1234O
1234P 1234P 1234Q 1234Q 1234R 1234R
1234{ 1234{ 1234} 1234} 1.23M 1.23M
END DATA.
LIST.
Los valores de VAR1 a VAR6 se listan en la figura siguiente.
VAR1 VAR2 VAR3 VAR4 VAR5 VAR6
12341 123.41 12342 123.42 12343 123.43
12344 123.44 12345 123.45 12346 123.46
12347 123.47 12348 123.48 12349 123.49
-12341 -123.41 -12342 -123.42 -12343 -123.43
-12344 -123.44 -12345 -123.45 -12346 -123.46
-12347 -123.47 -12348 -123.48 -12349 -123.49
12340 123.40 -12340 -123.40 -1 -1.23
El formato de salida predeterminado para el formato Z es el formato F equivalente, tal como se muestra en la figura. La anchura de salida predeterminada se basa en la especificación de anchura de entrada más una columna para el signo y una columna para la coma decimal implícita (si se especifica). Por ejemplo, un formato de entrada de Z4.0 genera un formato de salida de F5.0y un formato de entrada de Z4.2 genera un formato de salida de F6.2.
Pw.d (decimal empaquetado):
El formato P se utiliza para leer campos con números decimales empaquetados. Estos números los genera COBOL utilizando elementos de datos COMPUTATIONAL–3 y Assembler utilizando elementos de datos decimales empaquetados. El formato general de un campo decimal empaquetado es de dos dígitos de cuatro bits en cada byte del campo excepto el último. El último byte contiene un solo dígito en sus cuatro bits más a la izquierda y un signo de cuatro bits en sus bits más a la derecha. Si los últimos cuatro bits son 1111 (hexadecimal F), el valor es positivo; si son 1101 (hexadecimal D), el valor es negativo. Un byte bajo el formato P puede representar números de -9 a 9.
La sintaxis general del formato P es Pw.d, donde w es el número de bytes (no dígitos) y d es el número de dígitos a la derecha de la coma decimal implícita. El número de dígitos de un campo es (2 *w-1).
PKw.d (decimal empaquetado sin signo):
El formato PK es esencialmente el mismo que P , excepto que no hay ningún signo. Es decir, incluso el byte más a la derecha contiene dos dígitos, y los datos negativos no se pueden representar. Un byte bajo el formato PK puede representar números de 0 a 99. El número de dígitos en un campo es 2 *w.
RBw (binario real):
El formato RB se utiliza para leer valores de datos que contienen números de coma flotante de formato interno. Estos números los genera COBOL utilizando elementos de datos COMPUTATIONAL–1 o COMPUTATIONAL–2 , PL/I utilizando elementos de datos FLOTANTE DECIMAL, FORTRAN utilizando elementos de datos REAL o REAL*8 o Assembler utilizando elementos de datos de coma flotante.
RB es RBw, donde w es el número total de bytes. La especificación de anchura debe ser un número par entre 2 y 8. Normalmente, se utiliza una especificación de anchura de 8 para leer valores de precisión doble, y se utiliza una anchura de 4 para leer valores de precisión simple.RBHEXw (hexadecimal de RB):
El formato RBHEX interpreta una serie de caracteres hexadecimales como un número que representa un número de coma flotante. Esta representación es específica del sistema. Si la anchura del campo es inferior al doble de la anchura de un número de coma flotante, el valor se rellena a la derecha con ceros binarios. Para algunos sistemas operativos (por ejemplo, IBM CMS), las letras en valores hexadecimales deben estar en mayúsculas.
La sintaxis general del formato RBHEX es RBHEXw, donde w indica el número total de columnas. El ancho debe ser un número par. Los valores son números reales (coma flotante). Los espacios en blanco iniciales y finales no están permitidos. Los valores de datos más cortos que el ancho de entrada especificado deben rellenarse con ceros iniciales.