|
Quando esse formato da instrução SET é executado, o valor atual do campo de recebimento é substituído pelo valor do endereço especificado pelo campo de envio.
Em tempo de execução, ponteiros de função (function-pointers) e ponteiros de procedimento (procedure-pointers) podem fazer referência ao endereço do ponto de
entrada principal de um programa COBOL, um ponto de entrada alternativo em um programa COBOL ou um ponto de entrada em um programa não-COBOL; ou eles podem ser
nulos (NULL).
Ponteiros de função COBOL são mais facilmente usados do que ponteiros de procedimento para inter-operação com funções C.
- procedure-pointer-data-item-1, procedure-pointer-data-item-2
- Deve ser descrito como USAGE IS PROCEDURE POINTER. procedure-pointer-data-item-1 é um campo de recebimento; procedure-pointer-data-item-2 é um campo de envio.
- function-pointer-data-item-1, function-pointer-data-item-2
- Deve ser descrito como USAGE IS FUNCTION-POINTER. function-pointer-data-item-1 é um campo de recebimento; function-pointer-data-item-2 é um campo de envio.
- identifier-8
- Deve ser definido como um item alfabético ou alfanumérico, para que o valor possa ser um nome de programa.
Para mais informações, consulte o parágrafo PROGRAM-ID .
Para pontos de entrada em programas não-COBOL, o identifier-8 pode conter os caracteres @ , # e, $.
- literal-1
- Deve ser alfanumérico e deve estar em conformidade com as regras para formação de nomes de programas.
Para detalhes sobre regras de formação, consulte a discussão sobre o nome do programa no parágrafo PROGRAM-ID .
identifier-8 ou literal-1 deve se referir a um dos seguintes tipos de pontos de entrada:
- O ponto de entrada principal de um programa COBOL, conforme definido no parágrafo PROGRAM-ID.
O ID do PROGRAMA deve fazer referência ao programa mais externo de uma unidade de compilação; ele não deve fazer referência a um programa aninhado.
- Um ponto de entrada alternativo de um programa COBOL, conforme definido por uma instrução COBOL ENTRY.
- Um ponto de entrada em um programa não-COBOL.
O nome do programa referenciado pela instrução SET ... TO ENTRY pode ser afetado pela opção do compilador PGMNAME.
- NULL , NULLS
- Define o campo de recebimento para conter o valor de um endereço inválido.
- pointer-data-item-3
- Deve ser definido com USAGE POINTER.
Você deve definir o pointer-data-item-3 em um programa não-COBOL para apontar para um ponto de entrada válido do programa.
Exemplo de interoperabilidade COBOL / C
O exemplo a seguir demonstra uma COBOL CALL para uma função C que retorna um ponteiro de função para um serviço, seguido por uma COBOL CALL para o serviço:
IDENTIFICATION DIVISION.
PROGRAM-ID DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FP USAGE FUNCTION-POINTER.
PROCEDURE DIVISION.
CALL "c-function" RETURNING FP.
CALL FP.
|