COBOL - Comando ALLOCATE - www.cadcobol.com.br



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

COBOL - Comando ALLOCATE
Enterprise COBOL for z/OS, V4.2, Language Reference

A instrução ALLOCATE obtém armazenamento dinâmico.

Se data-name-1 for especificado, o endereço do item de dados será definido como o endereço do armazenamento obtido, como se a instrução "SET ADDRESS OF data-name-1 TO address" fosse usada.
Se um item de dados RETURNING também for especificado, o item de dados do ponteiro conterá esse endereço.

Se a arithmetic-expression-1 CHARACTERS for especificada, o data-item-2 será definido como o endereço do armazenamento obtido.

data-name-1

Deve ser um item de nível 01 ou nível 77, definido na LINKAGE SECTION.

Se data-name-1 for especificado, a frase RETURNING poderá ser omitida.
Caso contrário, a frase RETURNING deve ser especificada.

Não pode ser modificado por referência.

Não pode ser um item de grupo que contém uma tabela ilimitada.

integer-1

Deve ser um número inteiro não assinado com o valor de 24 ou 31.

data-name-2

Deve ser definido como USAGE IS POINTER.
Pode ser qualificado ou inscrito.

arithmetic-expression-1
Especifica um número de bytes de armazenamento a serem alocados:
  • Se a arithmetic-expression-1 não for avaliada como um número inteiro, o resultado será arredondado para o próximo número inteiro.
  • Se a arithmetic-expression-1 for avaliada como 0 ou um valor negativo, o item de dados referenciado por data-name-2 será definido no endereço NULL predefinido.

INITIALIZED phrase

A frase INITIALIZED inicializa o armazenamento alocado:

  • Se a frase INITIALIZED não for especificada, o conteúdo do armazenamento alocado será indefinido.
  • Se a arithmetic-expression-1 e a frase INITIALIZED forem especificadas, todos os bytes do armazenamento alocado serão inicializados em zeros binários.
  • Se data-name-1 e a frase INITIALIZED forem especificados, o armazenamento alocado será inicializado como se uma instrução INITIALIZE data-name-1 WITH FILLER ALL TO VALUE THEN TO DEFAULT fosse executada.

LOC phrase

A frase LOC controla como o ALLOCATE adquire armazenamento:

  • LOC 24 faz com que o ALLOCATE adquira armazenamento abaixo da linha de 16 MB, independentemente da configuração da opção do compilador de dados.
  • LOC 31 faz com que ALLOCATE tente adquirir armazenamento acima da linha de 16 MB, independentemente da configuração da opção do compilador de dados.

    Nota:
    Ainda é possível que o armazenamento seja adquirido abaixo da linha de 16 MB com LOC 31 se o armazenamento acima da linha de 16 MB estiver esgotado.

Quando a frase LOC não é especificada:

  • Presume-se que LOC 31 seja especificado sempre que a opção do compilador DATA (31) estiver em vigor.
  • Presume-se que LOC 24 seja especificado sempre que a opção do compilador DATA (24) estiver em vigor.

Nota:
Recomenda-se usar o valor padrão de LOC, a menos que seja necessário armazenamento dinâmico abaixo da linha de 16 MB quando a opção DATA (31) estiver em vigor ou armazenamento dinâmico acima da linha de 16 MB for desejado quando a opção DATA (24) está em vigor.

Se data-name-1 for especificado, a quantidade de armazenamento a ser alocada é o número de bytes necessários para manter um item, conforme descrito por data-name-1.
Se uma entrada de descrição de dados subordinada ao data-name-1 contiver uma cláusula OCCURS DEPENDING ON, o comprimento máximo do registro será alocado.

Se a quantidade especificada de armazenamento estiver disponível para alocação:

  • Se a frase RETURNING for especificada, o item de dados referenciado por data-name-2 será definido como o endereço desse armazenamento.
  • Se data-name-1 for especificado, o endereço do item de dados 01 ou 77 LINKAGE SECTION referido por data-name-1 será definido como o endereço desse armazenamento, como se o endereço "SET ADDRESS OF data-name-1 TO address-of-obtained-storage" de armazenamento obtido".

Se a quantidade especificada de armazenamento não estiver disponível para alocação:

  • Se a frase RETURNING for especificada, o item de dados referenciado por data-name-2 será definido como o endereço predefinido NULL.
  • Se data-name-1 for especificado, o endereço do item de dados 01 ou 77 LINKAGE SECTION referenciado por data-name-1 será definido como o endereço predefinido NULL.

A configuração da opção do compilador DATA influencia como o ALLOCATE adquire armazenamento:

  • Se DATA (24) estiver em vigor e a frase LOC 31 da instrução ALLOCATE não for especificada, o ALLOCATE adquirirá armazenamento abaixo da linha de 16 MB.
  • Se DATA (31) estiver em vigor e a frase LOC 24 da instrução ALLOCATE não for especificada, o ALLOCATE tentará adquirir armazenamento acima da linha de 16 MB.

O armazenamento alocado persiste até ser liberado explicitamente com uma instrução FREE ou a unidade de execução é finalizada, o que ocorrer primeiro.

Você pode usar o ALLOCATE para aumentar dinamicamente o tamanho de uma tabela NÃO LIMITADA, consulte Example: ALLOCATE and FREE storage for UNBOUNDED tables.



© Copyright IBM Corp.