Pular para o conteúdo principal
Módulo 4 · Lição 2 de 28/10 no curso~15 min
Lições do módulo (2/2)

Tabelas e cláusula OCCURS

No COBOL, não existe palavra-chave “array” ou “vector” para definir listas de dados homogêneos. Para isso, utiliza-se a cláusula OCCURS, que especifica quantas vezes uma variável ou estrutura se repete na memória.

Definindo uma tabela com OCCURS

A cláusula OCCURS é adicionada à declaração de uma variável subordinada (por exemplo, nível 05 ou superior) dentro de uma estrutura de grupo (nível 01):

COBOL
01 WS-SALES-DATA.
    05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.

Neste exemplo, WS-MONTHLY-SALES é uma tabela composta por 12 elementos numéricos de 4 dígitos cada. A memória alocada para este registro terá exatamente 12 * 4 = 48 caracteres.

Acessando Elementos e Índices

Para acessar um elemento específico em uma tabela, especifique o índice entre parênteses imediatamente após o nome do campo.

[!IMPORTANTE] Ao contrário da maioria das linguagens modernas que usam indexação baseada em 0, COBOL usa indexação baseada em 1. O primeiro elemento está no índice 1, o segundo no índice 2 e assim por diante.

COBOL
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).

Atravessando uma tabela (iteração)

Para percorrer os elementos de uma tabela, você pode usar a instrução PERFORM VARYING ou gerenciar um contador manualmente em um loop PERFORM UNTIL:

COBOL
PERFORM UNTIL WS-INDEX > 12
    DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
    ADD 1 TO WS-INDEX
END-PERFORM.

Experimente você mesmo

Exercício#cobol.m4.l2.e1
Tentativas: 0Carregando…

Declare uma tabela de 5 temperaturas decimais (3 dígitos inteiros e 1 decimal) na estrutura do grupo WS-WEATHER-DATA usando a cláusula OCCURS.

Carregando editor…
Mostrar dica

Escreva: 05 WS-TEMPERATURE PIC 9(3)V9 OCORRE 5 VEZES.

Solução disponível após 3 tentativas

Exercício#cobol.m4.l2.e2
Tentativas: 0Carregando…

Inicialize os três primeiros elementos da tabela WS-MONTHLY-SALES com os valores 1200, 1500 e 1800 respectivamente usando instruções MOVE. Lembre-se de que os índices COBOL começam em 1.

Carregando editor…
Mostrar dica

Use MOVE 1200 PARA WS-MONTHLY-SALES(1). para o primeiro elemento e repita para o segundo e terceiro usando os índices (2) e (3).

Solução disponível após 3 tentativas