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):
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 índice2e assim por diante.
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:
PERFORM UNTIL WS-INDEX > 12
DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
ADD 1 TO WS-INDEX
END-PERFORM.Experimente você mesmo
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.
Mostrar dica
Escreva: 05 WS-TEMPERATURE PIC 9(3)V9 OCORRE 5 VEZES.
Solução disponível após 3 tentativas
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.
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