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
OCCURS
eINDEXED 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
-
SET
só pode alterar 1 item por vez. -
Índices só podem ser usados com tabelas declaradas com
INDEXED BY
. -
SET TO TRUE
só 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 NULL
limpa o ponteiro. -
Pode-se usar valor hexadecimal com
SET ponteiro TO H'...'
.
🧠 Dicas práticas
-
Antes de usar
SEARCH
em uma tabela, inicialize o índice comSET
. -
Use
SET TO TRUE
para 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
SET
em 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.