Anterior Próximo Sumário Fale conosco! OpenBASE! o Banco de Dados inteligente!

Declaração dos Itens de Dados

A declaração dos itens de dados e feita logo a seguir a declaração do arquivo de dados cujos itens de dados fazem parte do seu registro.

Sintaxe

[REGISTRO:]

<nome_item> [{[<rep>]/(<caminho>)/(0)}]

... <tipo>:<tamanho>[,<num_decimais>]

... [(<num_nivel_ler>,<num_nivel_grav>)]

... [{POS <nome_item_rd>[+<deslocamento>] /

... VIRTUAL (<nome_item_part>, ..., <nome_item_part>)}]

... [UNICA]

Descrição

Declaração dos itens de dados. Opcionalmente para documentar o inicio das declarações dos itens de dados que compõem o registro de um arquivo de dados, utiliza-se a declaração da palavra REGISTRO seguida de dois pontos (:).

<nome_item> É o nome de um dos itens que compõem o registro do arquivo de dados o qual compõe-se de uma cadeia com até 12 caracteres com as seguintes restrições:

[<rep>] É o fator de repetição de um item. A LDBD     não permite que seja implementado itens multivalorados.

Para tanto, o usuário pode definir que um item seja repetido tantas vezes quanto for determinado em <rep>. <rep> consiste de um valor numérico inteiro contido entre colchetes.

Este recurso quando utilizado faz com que o DEFINE associe aos nomes do itens repetitivos, um número seqüencial que varia de 1 a <rep>.

Assim sendo, se o nome do item for telefone e o fator de repetição for 3, três itens serão criados com os respectivos nomes: telefone1, telefone2 e telefone3.

Observações:

 

<caminho>)

É o nome do arquivo Entidade com o qual o item de dados ira fazer associação (procedência). Indica que o item e uma chave estrangeira (Atributo Associativo / Item Associativo).

Este argumento define de forma declarada o Relacionamento entre as Entidades e assim sendo, determina para o OpenBASE a obrigatoriedade do controle da Integridade Referencial.

Observações:

(0)

Indica que o item é uma chave alternativa, porém e for a 1a chave de um arquivo tipo Entidade, define que a Entidade não possui ligações mas assume o papel de chave primária. Caso contrário corresponde a uma chave alternativa que pode ser declarada tanto em arquivos tipo Entidade quanto em arquivos tipo relacionamento.

Observações:

<tipo>:<tamanho>[,<num_decimais>

Define o tipo e o tamanho do Item, assim como o número de casas decimais no caso do item suportar valores numéricos.

Tipo do Item

O tipo do item a ser declarado em <tipo>, consiste de uma letra, no qual pode ser:

U        Universal

N        Numérico sem sinal

S        Numérico com sinal

P        Numérico compactado sem sinal

C        Numérico compactado com sinal

I        Numérico Binário (positivo)

B        Numérico Binário (positivo/negativo)

F        Numérico Ponto Flutuante (positivo ou negativo)

D,D2,D4    Data

L        Lógico

M         Multimídia (Objeto Binário Longo)

No OpenBASE um item de dado do tipo D2, só aceita datas compreendidas entre 01/01/1901 e 04/06/2080, inclusive, na conversão de uma variável de memória para o item D2 do banco. Caso a data esteja fora deste intervalo, é emitida a mensagem "OPUS(varite) => Estouro na conversão numérica". Para datas com tipo D4 esta conversão pode ser feita para datas dentro ou fora do intervalo mencionado anteriormente.

O item D4 indica uma data no formato aaaa/mm/dd onde aaaa ocupa 2 bytes, mm 1 byte e dd 1 byte. O dia 1 é considerado 01/01/0001. A data 31/12/1900 ainda é considerada como data nula para se manter compatibilidade com o tipo D2.

Para sua utilização na OPUS em conjunto com as datas tipo D2 foram feitas as seguintes alterações:

DTOC

Para itens do banco do tipo D2 retorna uma cadeia de caracteres no formato dd/mm/aa se set century off e 1901 <= ano <= 1999. Caso contrário retorna uma cadeia no formato dd/mm/aaaa.

Para itens do banco do tipo D4, retorna uma cadeia no formato dd/mm/aaaa, mesmo para datas menores do que 1901 e datas maiores do que 1999.

CTOD

Considera uma cadeia no formato dd/mm/aa como dd/mm/19aa.

Conversão de variável para item do banco.

Se tipo D2, 01/01/1901 <= data <= 04/06/2080, caso contrário é emitida a mensagem OPUS (varite) => Estouro na conversão numérica.

Conversão do tipo do item D2 para D4.

Os itens tipo D2 de um banco de dados podem ser descarregados e carregados no mesmo banco de dados com os itens alterados de tipo D2 para tipo D4.

Tamanho do Item

O tamanho do item a ser declarado em <tamanho>, consiste de um valor numérico que varia em função do tipo do item. Este tamanho nem sempre representa o número de bytes para armazenar o conteúdo do item.

Para melhor compreensão, consulte a Tabela a seguir.

Tabela de Tipos e Tamanhos

Tipo

item

Tamanho a

Declarar

Tamanho em Bytes (tb)

Valores

Suportados

Tipo Interno

U

1 a 2048

1 a 2048

Caracter (qualquer)

Cadeia

N

1 a 18

1 a 18

Numérico
de 1 a 18 dígitos

Cadeia

S

1 a 18

1 a 18

Numérico de 1 a 18 dígitos mais sinal

Cadeia

P

2 a 18 (par)

1 a 9

Numérico
de 1 a 18 dígitos

Compactado

C

1 a 17 (impar)

1 a 9

Numérico de 1 a 18 dígitos mais sinal

Compactado

I

2 ou 4

2 ou 4

Numérico entre 0 e 2

Binário

F

4 a 8

4 a 8

Numérico de n dígitos.

Se tb=4 então n=7
senão n=15.

Ponto flutuante

B

1 ou 7

1 ou 7

Numérico entre –2(8*tb-1) e 2(8*tb-1)-1.

Binário

D

2

2

Data no formato dd/mm/aa entre
00/00/00 e 31/12/99.

Binário

D2

Data no formato dd/mm/aaaa entre
01/01/1901 e 04/06/2080.

Binário

D4

Binário

L

1

1

0 -> falso

1 -> verdadeiro

Binário

M

4 (**)

1 a 4 Gb

String de Bits

Binário

(**) Itens tipo Multimídia (M4) são implementados pelo OpenBASE como arquivos em disco de tamanho variável. Caso o Arquivo de Dados possua este tipo de item, no diretório onde se encontra o arquivo de dados é criado um subdiretório que será composto por outros subdiretórios, tantos quantos a quantidade de itens Multimídia declarados no Arquivo de Dados.

A aplicação deste tipo de item destina-se a armazenar textos longos, imagens ou sons.

Número de Casas Decimais

Se o item suportar valores numéricos é possuir casas decimais, o número de casas decimais e informado em <num_decimais>, que consiste de um valor numérico entre 1 a 18. Neste caso, o separador entre o tamanho do item e as casas decimais é obrigatoriamente a vírgula (,).

As casas decimais são virtuais, assim sendo, internamente, o valor contido em <tamanho>, corresponde ao conteúdo do item com suas respectivas casas decimais: internamente não apresenta separador entre a parte inteira e as casas decimais.

(<num_nivel_ler>,<num_nivel_grav>)

Especifica um par de números inteiros que declaram o nível de privacidade para leitura e gravação do item de dados.

<num_nivel_ler>

É o número do nível de leitura que consiste de um número de nível declarado anteriormente em nível, tem que ser menor ou igual ao nível de gravação.

<num_nivel_grav>

É o número do nível de gravação que consiste de um número de nível declarado anteriormente em nível, tem que ser maior ou igual ao nível de leitura.

Os níveis de leitura e gravação estão associados às suas respectivas palavras de níveis e funcionam da maneira seguinte: Na abertura do Banco de Dados, o usuário declara a sua palavra de nível e o OpenBASE converte esta palavra para o número do nível associado à palavra (Numero de Nível do usuário - NNU). Desse modo, permite consistir se o usuário tem ou não autorização para ler ou gravar (atualizar) o item. Assim sendo, se NNU for maior ou igual ao nível de leitura do item, o usuário pode ler o item. Se NNU for maior ou igual ao nível de gravação, o usuário pode gravar o item.

Caso o usuário, num procedimento de leitura não seja autorizado a acessar o item, o valor de retorno do item é mascarado em função do seu tipo. Veja tabela abaixo.

Tipo dos itens

Máscaras

U

Brancos

N,S,P,C,I,B.F

Cadeia de dígitos preenchida com o número nove

(999999999)

D,D2,D4

Data em branco ("//")

L

Falso (zero)

POS <nome_item_rd> [ + <deslocamento> ]

Define que o item é uma redefinição de um outro item de dados, permitindo assim que um item seja decomposto em subitens ou que um item seja composto por itens contíguos.

A implementação da redefinição de um item baseia-se na superposição de itens na mesma área de registro. Assim sendo, um item que redefine um outro, não ocupa espaço adicional no registro, em função de utilizar a mesma área de registro ocupada por um ou mais itens já declarados.

<nome_item_rd> É o nome do item a ser redefinido que consiste do nome de um item já existente (não pode ser o nome de um item repetitivo).

<deslocamento> É o deslocamento em bytes, em relação a posição inicial do item a ser definido que consiste de um número inteiro.

Se <nome_item> iniciar na mesma posição de registro, ocupada por <nome_item_rd>, não é necessário informar o <deslocamento>.

VIRTUAL (<nome_item_part>, ..., <nome_item_part>)

Define que o item é um item virtual.

A implementação de itens virtuais, baseia-se na montagem em memória da composição de itens. Assim sendo, itens virtuais não ocupam espaço adicional no registro.

<nome_item_part>, ..., <nome_item_part>) É a lista dos nomes dos itens que compõem o item virtual.

Observações sobre itens virtuais:

ÚNICA

Estabelece restrição de unicidade para chave secundária (chave única).

Não pode ser declarado em chaves primárias devido ao fato deste tipo de chave ser única por definição.

Exemplo

NOME: arq_dpto E << Entidade Departamento >>

<< Declaração dos itens da Entidade Departamento >>

sigl_dpto (1)    u2

nome_dpto     u30

NOME: arq_func E << Entidade Funcionário >>

<< Declaração dos itens da Entidade Funcionários >>

matr_func (1)     u5

nome_func    u30

data_nasc     u6

dian     u2 POS data_nasc

mesn     u2 POS data_nasc + 2 <<ou POS dian + 2 >>

anon     u2 POS data_nasc + 4 <<ou POS mesn +2 >>

sexo_func(0)     u1

salario [12]     B4,2 (5,10)

cpf_func (0)     u11 UNICA

chave_aux(0)     u4 VIRTUAL (anon, mesn)

NOME: arq_lota R << Relacionamento Lotação >>

<< Declaração dos itens do Relacionamento Lotação >>

dpto_lota (arq_dpto)     u2

func_lota (arq_func)         u5

data_lota         d2

Anterior Próximo Sumário Fale conosco! OpenBASE! o Banco de Dados inteligente!