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:
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.