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
eFILLER
🔖 Regras básicas
-
Cada item pode iniciar com nível
01
ou77
-
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.