Formatos Binário e Hexadecimal
Os dados podem ser lidos e gravados em formatos usados por várias linguagens de programação, como PL/I, COBOL, FORTRAN e Assembler. Os dados podem ser binários, hexadecimais ou decimais zoneados Os formatos descritos nesta seção podem ser usados como formatos de entrada e formatos de saída, mas somente com dados fixos.
O formato de saída padrão para todos os formatos descritos nessa seção é um formato F
equivalente, permitindo o número máximo de colunas para valores com símbolos e pontuação.. Para alterar o padrão, use FORMATS
ou WRITE FORMATS
IBw.d (binário inteiro):
O formato IB
lê campos que contêm dados binários (inteiros) de ponto fixo. Os dados podem ser gerados por COBOL usando itens de dados COMPUTACIONAIS, por FORTRAN usando INTEGER*2 ou INTEGER*4ou por Assembler usando itens de palavra inteira e meia-palavra. O formato geral é um número binário assinado com 16 ou 32 bits de comprimento.
A sintaxe geral para o formato IB
é IBw.d
, em que w
é a largura do campo em bytes (omitido para especificações de estilo de colunas) e d
é o número de dígitos à direita do ponto decimal... Como a largura é expressa em bytes e o número de casas decimais é expresso em dígitos, d pode ser maior que w.. Por exemplo, ambos os seguintes comandos são válidos:
DATA LIST FIXED /VAR1 (IB4.8).
DATA LIST FIXED /VAR1 1-4 (IB,8).
As larguras de 2 e 4 representam números inteiros padrão de 16 e 32 bits, respectivamente. Campos lidos com o formato IB
são tratados como assinados. Por exemplo, o valor binário de um byte 1111111111 seria lido como -1.
PIBw.d (binário de número inteiro positivo) :
O formato PIB
é essencialmente igual a IB
, exceto que números negativos não são permitidos. Esta restrição permite um bit adicional de magnitude. O mesmo valor de um byte 11111111 seria lido como 255.
PIBHEXw (hexadecimal de PIB):
O formato PIBHEX
lê números hexadecimais como números inteiros não assinados e grava números inteiros positivos como números hexadecimais. A sintaxe geral do formato PIBHEX
é PIBHEXw
, em que w
indica o número total de caracteres hexadecimais. A especificação w
deve ser um número par com no máximo 16.
Para os dados de entrada, cada número hexadecimal deve consistir no número exato de caracteres. Não são permitidos sinais, pontos decimais ou espaços em branco iniciais e finais. Para alguns sistemas operacionais (como IBM CMS), os caracteres hexadecimais devem ser maiúsculos. O exemplo a seguir ilustra o tipo de dados que o formato PIBHEX
pode ler:
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.
Os valores para VAR1, VAR2e VAR3 são listados na figura abaixo. O formato PIBHEX
também pode ser usado para gravar valores decimais como números hexadecimais, que podem ser úteis para 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 zonado):
O formato Z
lê valores de dados que contêm dados decimais de zona. Esses números podem ser gerados por sistemas COBOL usando itens de dados DISPLAY, por sistemas PL/I usando itens de dados PICTURE ou por Assembler usando itens de dados decimais zonados.
No formato decimal zonado, um dígito é representado por um byte, geralmente hexadecimal F1 representando 1, F2 representando 2 e assim por diante. No entanto, o último byte combina o sinal do número com o último dígito. No último byte, o hexadecimal A, F ou C designa + e B, D ou E designa-. Por exemplo, o hexadecimal D1 representa 1 para o último dígito e designa o sinal de menos (-) para o número.
A sintaxe geral do formato Z
é Zw.d
, em que w
é o número total de bytes (que é igual a colunas) e d
é o número de decimais. Para dados de entrada, os valores podem aparecer em qualquer lugar dentro das especificações de coluna Ambos os espaços em branco à esquerda e à direita são permitidos. Os decimais podem ser implícitos pela especificação do formato de entrada ou codificados explicitamente nos dados Decimais codificados explicitamente substituem as especificações de formato de entrada.
O exemplo a seguir ilustra como o formato Z
lê decimais zonados em seus formulários impressos no mainframe IBM e nos sistemas de PC O formulário impresso para a zona de sinal (A a I para + 1 a +9, e assim por diante) pode variar de sistema para sistema.
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.
Os valores de VAR1 para VAR6 são listados na figura a seguir:
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
O formato de saída padrão do formato Z
é o formato F
equivalente, conforme mostrado na figura. A largura de saída padrão é baseada na especificação de largura de entrada mais uma coluna para o sinal e uma coluna para o separador decimal implícito (se especificado) Por exemplo, um formato de entrada Z4.0
gera um formato de saída de F5.0
e um formato de entrada de Z4.2
gera um formato de saída de F6.2
.
Pw.d (decimal compactado):
O formato P
é usado para ler campos com números decimais compactados.. Esses números são gerados pelo COBOL usando itens de dados COMPUTATIONAL–3 , e pelo Assembler usando itens de dados decimais compactos O formato geral de um campo decimal compactado é dois dígitos de quatro bits em cada byte do campo, exceto o último. O último byte contém um único dígito em seus quatro bits mais à esquerda e um sinal de quatro bits em seus bits mais à direita. Se os últimos quatro bits forem 1111 (hexadecimal F), o valor será positivo; se forem 1101 (hexadecimal D), o valor será negativo. Um byte no formato P
pode representar números de -9 a 9.
A sintaxe geral do formato P
é Pw.d
, em que w
é o número de bytes (não dígitos) e d
é o número de dígitos à direita do ponto decimal implícito. O número de dígitos em um campo é (2 *w
-1).
PKw.d (decimal compactado não assinado):
O formato PK
é essencialmente igual a P
, exceto que não há sinal. Ou seja, mesmo o byte mais à direita contém dois dígitos e dados negativos não podem ser representados. Um byte no formato PK
pode representar números de 0 a 99. O número de dígitos em um campo é 2 *w
..
RBw (binário real):
O formato RB
é usado para ler valores de dados que contêm números de ponto flutuante de formato interno.. Esses números são gerados pelo COBOL usando itens de dados COMPUTATIONAL–1 ou COMPUTATIONAL–2 , pelo PL/I usando itens de dados FLOATING DECIMAL, pelo FORTRAN usando itens de dados REAL ou REAL*8 , ou pelo Assembler usando itens de dados de vírgula flutuante..
RB
é RBw
, em que w
é o número total de bytes.. A especificação de largura deve ser um número par entre 2 e 8. Normalmente, uma especificação de largura de 8 é usada para ler valores de precisão dupla e uma largura de 4 é usada para ler valores de precisão única.RBHEXw (hexadecimal de RB):
O formato RBHEX
interpreta uma série de caractere hexadecimal como um número que representa um número de vírgula flutuante. Essa representação é específica do sistema Se a largura do campo for menor que o dobro da largura de um número de vírgula flutuante, o valor será preenchido à direita com zeros binários. Para alguns sistemas operacionais (por exemplo, IBM CMS), as letras em valores hexadecimais devem ser maiúsculas.
A sintaxe geral do formato RBHEX
é RBHEXw
, onde w
indica o número total de colunas. A largura deve ser um número par.. Os valores são números reais (de vírgula flutuante). Espaços em branco iniciais e finais não são permitidos. Quaisquer valores de dados menores que a largura de entrada especificada devem ser preenchidos com zeros à esquerda.