A WORKING-STORAGE SECTION pertence à DATA DIVISION e é usada para declarar variáveis, constantes e áreas auxiliares que são processadas internamente pelo programa. Ela não está ligada diretamente a arquivos, mas sim ao controle da lógica do processamento.

📦 Finalidade

  • Armazenar variáveis de trabalho

  • Declarar constantes e indicadores

  • Criar áreas auxiliares para cálculos, controle de tela, totalizações, contadores e muito mais

  • Definir estruturas reutilizáveis com REDEFINES e FILLER

🔖 Regras básicas

  • Cada item pode iniciar com nível 01 ou 77

  • Os itens não precisam estar agrupados, mas podem ser estruturados hierarquicamente

  • O valor inicial pode ser atribuído com a cláusula VALUE

  • O conteúdo é preservado entre chamadas (diferente da LOCAL-STORAGE)

🧪 Exemplo básico

******************************************************************
WORKING-STORAGE SECTION.
******************************************************************
01 DATA-ATUAL      PIC 9(008).
01 FILLER REDEFINES DATA-ATUAL.
   05 ANO-ATUAL    PIC 9(004).
   05 MES-ATUAL    PIC 9(002).
   05 DIA-ATUAL    PIC 9(002).
77 INDEXADOR       PIC 9(003) VALUE 0.

💡 Constantes Figurativas

Palavras reservadas que representam valores fixos e simbólicos:

Constante Significado
ZERO(S) Valor zero
SPACE(S) Espaço(s) em branco
HIGH-VALUE(S) Valor mais alto possível (ex: X'FF')
LOW-VALUE(S) Valor mais baixo possível (binary zero)
NULL(S) Zero lógico ou ponteiro inválido
ALL Preenche todo o campo com um caractere literal repetido

 

🧾 PICTURE (PIC)

Define o tipo, tamanho e formato de cada campo:

Símbolo Descrição
X Alfanumérico
A Alfabético
9 Numérico
V Vírgula decimal implícita
S Sinal algébrico
Z Máscara para edição de números

 

✍️ Exemplos de edição

Inserção simples

PICTURE VALOR RESULTADO
X(10)/XX ALPHANUMER01 ALPHANUMER/01
99,999 12345 12,345

Inserção especial

PICTURE VALOR RESULTADO
999.99 1.234 001.23
+999.99E+99 12345 +123.45E+02

Inserção fixa e flutuante

PICTURE VALOR RESULTADO
$999.99 -123.45 $123.45
$$,$$$,$$$.99CR -1234567 $1,234,567.00CR

🔁 Cláusula REDEFINES

Permite usar o mesmo espaço de memória para diferentes formatos de dados. Muito útil para reutilizar estruturas.

01 CLIENTE-DADOS.
   05 CUSTOMER-ID PIC X(10).
   05 CUSTOMER-ID-PARTS REDEFINES CUSTOMER-ID.
      10 LOCALIZACAO PIC X(3).
      10 NAME-ABREV   PIC X(5).

🔸 Palavra-chave FILLER

Utilizada para reservar espaço sem nomear o campo. Muito usada em máscaras de exibição ou separadores.

01 DATA-ATUAL.
   05 ANO       PIC 9(04).
   05 FILLER    PIC X(01) VALUE "/".
   05 MES       PIC 9(02).
   05 FILLER    PIC X(01) VALUE "/".
   05 DIA       PIC 9(02).
   05 FILLER    PIC X(01) VALUE "-".
   05 HH        PIC 9(02).
   05 FILLER    PIC X(01) VALUE ":".
   05 MM        PIC 9(02).
   05 FILLER    PIC X(01) VALUE ":".
   05 SS        PIC 9(02).
   05 FILLER    PIC X(06).

* Resultado: 2016/01/13-16:41:00

 

✅ Conclusão

A WORKING-STORAGE SECTION é onde se define a memória interna do programa COBOL. Ela oferece total controle sobre os dados usados na lógica de processamento, e seu domínio é essencial para quem quer escrever programas legíveis, eficientes e bem organizados.