COBOL - DATA DIVISION - DDE - SYNCHRONIZED clause - Slack bytes between records



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

COBOL - DATA DIVISION - data description entry - SYNCHRONIZED clause - Slack bytes between records
Enterprise COBOL for z/OS, V4.2, Language Reference

Se o arquivo contiver registros lógicos bloqueados que devem ser processados em um buffer e qualquer um dos registros contiver entradas binárias para as quais a cláusula SYNCHRONIZED for especificada, você poderá melhorar o desempenho adicionando os bytes de folga necessários entre os registros para o alinhamento adequado.

Os comprimentos de todos os itens de dados elementares no registro, incluindo todos os bytes livres, são adicionados.
(Para registros de tamanho variável, é necessário adicionar 4 bytes adicionais para o campo de contagem.)

Se r (o restante) for igual a zero, não serão necessários bytes livres.
Se r não for igual a zero, m - r bytes livres serão necessários. Esses bytes de folga podem ser especificados escrevendo um FILLER de nível 02 no final do registro.

Considere a seguinte descrição do registro:

       01  COMP-RECORD.
           05  A-1    PICTURE X(5).
           05  A-2    PICTURE X(3).
           05  A-3    PICTURE X(3).
           05  B-1    PICTURE S9999  USAGE COMP SYNCHRONIZED.
           05  B-2    PICTURE S99999 USAGE COMP SYNCHRONIZED.
           05  B-3    PICTURE S9999  USAGE COMP SYNCHRONIZED.

O número de bytes em A-1, A-2 e A-3 totaliza 11. B-1 é um item COMPUTACIONAL de quatro dígitos e, portanto, deve ser adicionado 1 byte de folga antes de B-1.
Com esse byte adicionado, o número de bytes que precedem B-2 totaliza 14.
Como B-2 é um item COMPUTACIONAL de cinco dígitos, dois bytes de folga devem ser adicionados antes dele.
Não são necessários bytes livres antes do B-3.

A entrada revisada da descrição do registro agora aparece como:

       01  COMP-RECORD.
           05  A-1            PICTURE X(5).
           05  A-2            PICTURE X(3).
           05  A-3            PICTURE X(3).
          [05  SLACK-BYTE-1   PICTURE X.   INSERTED BY COMPILER]
           05  B-1            PICTURE S9999 USAGE COMP SYNCHRONIZED.
          [05  SLACK-BYTE-2   PICTURE XX.  INSERTED BY COMPILER]
           05  B-2            PICTURE S99999 USAGE COMP SYNCHRONIZED.
           05  B-3            PICTURE S9999  USAGE COMP SYNCHRONIZED.

Existe um total de 22 bytes em COMP-RECORD, mas pelas regras acima, parece que m = 4 er = 2.
Portanto, para obter o alinhamento adequado para registros bloqueados, você deve adicionar 2 bytes de folga no final do registro.

A entrada final da descrição do registro aparece como:

       01  COMP-RECORD.
           05  A-1             PICTURE X(5).
           05  A-2             PICTURE X(3). 
           05  A-3             PICTURE X(3).
          [05  SLACK-BYTE-1    PICTURE X.   INSERTED BY COMPILER]
           05  B-1             PICTURE S9999 USAGE COMP SYNCHRONIZED.
          [05  SLACK-BYTE-2    PICTURE XX.  INSERTED BY COMPILER]
           05  B-2             PICTURE S99999 USAGE COMP SYNCHRONIZED.
           05  B-3             PICTURE S9999  USAGE COMP SYNCHRONIZED.
           05  FILLER          PICTURE XX.  [SLACK BYTES YOU ADD]


© Copyright IBM Corp.