A instrução SET no COBOL é utilizada para atribuir valores a índices, ponteiros ou níveis-88 (condições nomeadas). É uma operação específica para controle de navegação em tabelas, manipulação de ponteiros e flags condicionais.
📌 Para que serve
-
Inicializar ou alterar o valor de um índice (usado com
OCCURSeINDEXED BY). -
Atribuir o endereço de memória de um item a um ponteiro.
-
Definir uma condição de nível 88 como verdadeira (
SET condição TO TRUE).
🧾 Sintaxe básica
SET índice TO literal
SET índice1 TO índice2
SET condição TO TRUE
SET ponteiro TO NULL
SET ponteiro TO ADDRESS OF variável
SET ponteiro TO H'200000'
✅ Exemplo prático com índice
01 TABELA-CODIGOS.
05 CODIGO PIC X(5) OCCURS 10 TIMES INDEXED BY IND-COD.
SET IND-COD TO 1.
✅ Exemplo prático com ponteiro
01 PTR-REGISTRO USAGE IS POINTER.
01 REGISTRO-CLIENTE.
05 NOME PIC X(20).
SET PTR-REGISTRO TO ADDRESS OF REGISTRO-CLIENTE.
✅ Exemplo prático com condição (nível 88)
01 STATUS-PEDIDO PIC X(1).
88 PEDIDO-APROVADO VALUE "A".
88 PEDIDO-CANCELADO VALUE "C".
SET PEDIDO-APROVADO TO TRUE.
⚙️ Como funciona internamente
| Tipo de uso | Descrição |
|---|---|
| Índices | Controlam a posição atual em uma tabela OCCURS ... INDEXED BY. |
| Ponteiros | Guardam o endereço de memória de um item, usado com USAGE IS POINTER. |
| Nível 88 (condição) | Marcam uma condição como ativa. |
⚠️ Regras importantes
-
SETsó pode alterar 1 item por vez. -
Índices só podem ser usados com tabelas declaradas com
INDEXED BY. -
SET TO TRUEsó funciona com níveis 88. -
Ao usar
ADDRESS OF, o item de destino deve estar na LINKAGE SECTION ou ser compatível com ponteiros. -
SET ponteiro TO NULLlimpa o ponteiro. -
Pode-se usar valor hexadecimal com
SET ponteiro TO H'...'.
🧠 Dicas práticas
-
Antes de usar
SEARCHem uma tabela, inicialize o índice comSET. -
Use
SET TO TRUEpara forçar uma condição sem precisar alterar o valor da variável base. -
Em programas com alocação dinâmica ou manipulação de memória,
SET TO ADDRESS OFé essencial. -
Evite usar
SETem variáveis otimizadas, pois podem ser descartadas pelo compilador.
✅ Conclusão
O comando SET é indispensável para manipulação de tabelas, ponteiros e condições no COBOL. É simples, direto e altamente específico. Dominar o uso de SET melhora a eficiência e clareza em programas que utilizam estruturas indexadas e controle de estados com nível 88.