COBOL - DATA DIVISION - file description entries - BLOCK CONTAINS clause



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

COBOL - DATA DIVISION - file description entries - BLOCK CONTAINS clause
Enterprise COBOL for z/OS, V4.2, Language Reference

A cláusula BLOCK CONTAINS especifica o tamanho dos registros físicos.

A frase CHARACTERS indica que o número inteiro especificado na cláusula BLOCK CONTAINS reflete o número de bytes no registro.
Por exemplo, se você tiver um bloco com 10 caracteres DBCS ou 10 caracteres nacionais, a cláusula BLOCK CONTAINS deve dizer BLOCK CONTAINS 20 CHARACTERS.

Se os registros no arquivo não estiverem bloqueados, a cláusula BLOCK CONTAINS poderá ser omitida.
Quando omitido, o compilador assume que os registros não estão bloqueados.
Mesmo que cada registro físico contenha apenas um registro lógico completo, a codificação BLOCK CONTAINS 1 RECORD resultaria em registros bloqueados fixos.

A cláusula BLOCK CONTAINS pode ser omitida quando a entrada de controle de arquivo associada especifica um arquivo VSAM.
O conceito de bloqueio não tem significado para arquivos VSAM.
A cláusula BLOCK CONTAINS é verificada na sintaxe, mas não afeta a execução do programa.

Para arquivos externos, o valor de todas as cláusulas BLOCK CONTAINS dos arquivos externos correspondentes deve corresponder na unidade de execução.
Essa conformidade é em termos de bytes e não depende se o valor foi especificado como CHARACTERS ou RECORDS.

integer-1 , integer-2
Devem ser números inteiros não assinados.
Eles especificam:
CHARACTERS
Especifica o número de bytes necessários para armazenar o registro físico, independentemente de USAGE que os itens de dados tenham dentro do registro de dados.

Se apenas o integer-2 for especificado, ele especificará o número exato de bytes no registro físico.
Quando o integer-1 e o integer-2 são especificados, eles representam o número mínimo e máximo de bytes no registro físico, respectivamente.

integer-1 e integer-2 devem incluir quaisquer bytes de controle e preenchimento contidos no registro físico.
(Os registros lógicos não incluem preenchimento.)

A frase CHARACTERS é o padrão.
CHARACTERS devem ser especificados quando:

  • O registro físico contém preenchimento.
  • Os registros lógicos são agrupados para que um tamanho de registro físico impreciso possa ser implícito.
    Por exemplo, suponha que você descreva um registro de tamanho variável de 100 bytes, mas cada vez que você escreve um bloco de 4, um registro de 50 bytes é gravado seguido por três registros de 100 bytes.
    Se a frase RECORDS fosse especificada, o compilador calcularia o tamanho do bloco como 420 bytes em vez do tamanho real, 370 bytes.
    (Este cálculo inclui descritores de bloco e registro.)
RECORDS
Especifica o número de registros lógicos contidos em cada registro físico.

O compilador assume que o tamanho do bloco deve fornecer registros integer-2 do tamanho máximo e fornece qualquer espaço adicional necessário para os bytes de controle.

BLOCK CONTAINS 0 pode ser especificado para arquivos QSAM.
Se BLOCK CONTAINS 0 for especificado para um arquivo QSAM, então:

  • O tamanho do bloco é determinado no tempo de execução a partir dos parâmetros DD ou do rótulo do conjunto de dados do arquivo.
    Para conjuntos de dados de saída, o DCB usado pelo Language Environment terá um valor de tamanho de bloco zero.
    Quando o DCB possui um valor zero de tamanho de bloco, o sistema operacional pode selecionar um tamanho de bloco determinado pelo sistema (SDB).
    Consulte as especificações do sistema operacional para obter mais informações sobre o SDB.

    BLOCK CONTAINS pode ser omitido para arquivos SYSIN e para arquivos SYSOUT.
    O bloqueio é determinado pelo sistema operacional.

Para obter uma maneira de aplicar arquivos BLOCK CONTAINS 0 a QSAM que ainda não possuem uma cláusula BLOCK CONTAINS, consulte a descrição da opção do compilador BLOCK0 no Enterprise COBOL Programming Guide.

A cláusula BLOCK CONTAINS é verificada na sintaxe, mas não afeta a execução do programa quando especificado em um SD.

A cláusula BLOCK CONTAINS não pode ser usada com a cláusula RECORDING MODE U.



© Copyright IBM Corp.