Thursday 21 November 2024

WORKING-STORAGE SECTION:

  • Descreve registros de dados que não fazem parte de arquivos de dados externos, mas são desenvolvidos e processados ​​internamente pelo programa. Os nomes de tipos podem ser definidos na seção WORKING-STORAGE.
  • Itens independentes na WORKING-STORAGE que não têm relação hierárquica entre si não precisam ser agrupados em registros, desde que eles não precisam ser subdivididos.
  • Cada um é definido em uma entrada descrição-item de dados separado que começa ou com o número de nível 77 ou 01.
  • Para o formato e as cláusulas exigidas em uma entrada de descrição de item de dados.
  • O valor inicial de qualquer item de dados na WORKING-STORAGE, exceto um item de dados de índice, é especificado associando uma cláusula VALUE ao item.
  • O valor inicial de qualquer item de dados de índice ou de qualquer item de dados não associado a uma cláusula VALUE é indefinido. Nota: É permitido um máximo de 16 711 568 bytes para itens de grupo (incluindo tabelas).
  • Um nome de campo não deverá exceder a 30 caracteres.

Exemplo:

*
******************************************************************
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: 

São literais geradas pelo compilador e usados como palavras reservadas. Algumas dessas palavras são descritas abaixo. Pode-se usar tanto o plural quanto o singular. 

ZERO, ZEROS, ZEROES: Representa o valor numérico "zero" ou uma ou mais ocorrências do caractere 0

SPACE, SPACES: Valor em branco, representa um ou mais espaços. 

HIGH-VALUE,  HIGH-VALUES: Representa o maior valor, um ou mais caracteres com valores-altos. Usualmente é o hexadecimal  "FF". 

LOW-VALUE,  LOW-VALUES: Representa o menor valor, um ou mais caracteres com valores-baixos. Usualmente é o binário 0. 

ALL LiteralRepresenta um conjunto de caracteres pré definido. 

NULL,  NULLS: Representa o  valor  numérico "zero“. Também  representa  um endereço  inválido  de memória quando usado em conjunto com tipos de dados POINTER.

 

PICTURE (PIC): 

Identifica o tipo de dado que se está definindo, É usada para descrição, definição de informações sobre itens, tais como: tamanho, sinal, tipo numérico (Zonado, Compactado, Binário), alfanumérico ou alfabético.

  • X – Indica campo Alfanumérico
  • A – Indica campo Alfabético
  • 9 – Indica campo Numérico
  • V – Indica Vírgula Decimal Implícita
  • S – Indica Sinal Algébrico
  • Z – Indica Edição de Campos Numéricos

Exemplos de edição de inserção simples:

PICTURE VALOR RESULTADO
X(10)/XX ALPHANUMER01 ALPHANUMER/01
X(5)BX(7) ALPHANUMERIC ALPHA NUMERIC
99,B999,B000 1234 01, 234, 000
99,999 12345 12,345
GGBBGG D1D2D3D4 D1D2    D3D4

 

Exemplos de edição de inserção especial:

PICTURE VALOR RESULTADO
999.99 1.234 001.23
999.99 12.34  012.34
999.99 123.45   123.45
999.99 1234.5     234.50
+999.99E+99 12345        +123.45E+02

 

Exemplos de edição de inserção fixa:

PICTURE VALOR RESULTADO
999.99+ +6555.556 555.55+
+9999.99 -6555.555 -6555.55
9999.99 +1234.56 1234.56
$999.99 -123.45 $123.45
U999.99 -123.45 EUR123.45 (1)
-$999.99 -123.456 -$123.45
-u999.99 -123.456 -USD123.45 (2)
-$999.99 +123.456 $123.45
$9999.99CR +123.45 $0123.45
$9999.99DB -123.45 $0123.45DB

 

Exemplos de edição de inserção flutuante:

PICTURE VALOR RESULTADO
$$$$.99 .123 $.12
$$$9.99 .12  $0.12
$,$$$,999.99 -1234.56 $1,234.56
U,UUU,UU9.99- -1234.56 EUR1,234.56-
u,uuu,uu9.99 1234.56 USD1,234.56
+,+++,999.99 -123456.789 -123,456.78
$$,$$$,$$$.99CR -1234567     $1,234,567.00CR
++,+++,+++.+++ 0000.00  

 

Exemplos de edição de inserção d substituição:

PICTURE VALOR RESULTADO
****.** 0000.00 ****.**
ZZZZ.ZZ 0000.00  
ZZZZ.99 0000.00 .00
****.99 0000.00 ****.00
ZZ99.99 0000.00 00.00
Z,ZZZ.ZZ+ +123.456 123.45+
*,***.**+ -123.45 **123.45-
**,***,***.**  +12345678.9 12,345,678.90+
$Z,ZZZ,ZZZ.ZZCR +12345.67 $    12,345.67
$B*,***,***.**BBDB -12345.67 $ ***12,345.67 DB

 

REDEFINES:

A cláusula REDEFINES é usada para definir um armazenamento com descrição de dados diferente. Se um ou mais itens de dados não forem usados ​​simultaneamente, o mesmo armazenamento pode ser utilizado para outro item de dados. Assim, o mesmo armazenamento pode ser referido com diferentes itens de dados.

Exemplo:

*
******************************************************************
WORKING-STORAGE SECTION.
******************************************************************
*
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).
 

 

FILLER:

Palavra reservada , ou seja, você não pode usar a palavra para os campos ou outros do que para definir os elementos de memória individuais registros de nomes.

Você usa FILLER imediatamente após um número de nível anterior e uma cláusula de imagem que define o tamanho de um campo e tipo de dados. COBOL restringe o uso de FILLER à Divisão de dados , que não se aplica às divisões Identificação, Ambiente ou procedimento.

Exemplo:

*
******************************************************************
WORKING-STORAGE SECTION.
******************************************************************
*
01 DATA-ATUAL. 05 ANO PIC 9(004). 05 FILLER PIC X(001)VALUE '/' 05 MES PIC 9(002). 05 FILLER PIC X(001)VALUE '/' 05 DIA PIC 9(002). 05 FILLER PIC X(001)VALUE '-' 05 HH PIC 9(002). 05 FILLER PIC X(001)VALUE ':' 05 MM PIC 9(002). 05 FILLER PIC X(001)VALUE ':' 05 SS PIC 9(002). 05 FILLER PIC X(006). Resultado: "2016/01/13-16:41:00"