.ap
.flags bold
.sp 2
.spr 4,1,3
.b 3
^*1. Introduo  utilizao interactiva\*
.b 3
	^*Definio da estrutura duma base (record) [ >CREATE ]\*
.b
	Para definir uma base (record), use o comando CREATE. Por exemplo, o
comando "CREATE pessoal" inicia a definio duma base de nome "pessoal".
.b
	Uma base  definida atravs dos seus campos, que podem ser dos
seguintes tipos:
.nf
.nj
.b
	c - caracter			ex: Antnio Carlos
.b
	n - inteiro			ex: -128, 200 ...
.b
	x - decimal			ex: -12.3, 120.0
.b
	d - data			ex: 10-jan-85
.b
	l - lgico			ex: t (verdadeiro), f (falso)
.b
	db - outra base de dados	ex: 12
.f
.j
.b
	Para os trs primeiros tipos (caracteres, nmeros inteiros e decimais),
 necessrio definir tambm o seu tamanho total e, no caso dos decimais, o
nmero mximo de casas decimais que se pretende  direita da vrgula.
.b
	No caso de datas ou campos lgicos no se indica o tamanho, pois o
DBAG impe os tamanhos de 11 e 1 respectivamente.
.b
	O tipo "outra base de dados"  utilizado para ligar entre si bases
distintas e ser apresentado na seco "ligao entre duas bases por
referncia explcita".
.b
	Cada campo ter tambm um nome, ou mnemnica, destinado a identificar
completamente esse campo no record. Note que, para facilitar a
referncia explcita a qualquer campo, poder tambm usar o seu NMERO
DE ORDEM sequencial na definio do record, isto , o primeiro campo pode
ser referido como %1 (campo no. 1), o segundo como %2 (campo no. 2), etc.
.b
	Pode igualmente atribuir um "valor por defeito" a cada campo, ou seja,
um valor que ser atribudo sempre que o campo no for preenchido.
.b
	Exemplo de record:
.nf
.nj
.b
	campo 1: cdigo   , inteiro ,   tamanho =  4
.b
	      2: nome     , caracter,   tamanho = 18
.b
	      3: data__nasc, data
.b
	      4: sexo     , caracter,   tamanho =  1,
	                    valor por "defeito" = 'M'
.b
	      5: salrio  , decimal ,  tamanho = 7, casas dec. = 1
.f
.j
.b
	Alm das caractersticas j referidas, pode atribuir uma descrio
genrica  base, bem como a cada um dos seus campos. A partir da altura em 
que carregar dados na base, a cada ocorrncia do record  atribudo um
nmero sequencial, que comea geralmente em 1. No entanto, na altura do
"CREATE" da estrutura pode indicar o comeo noutro nmero, por exemplo
em 100.
.b
	H ainda a possibilidade, para cada campo, de:
	- torn-lo obrigatrio (no pode ficar por preencher);
	- atribuir-lhe um valor por "defeito".
.b
	Finalmente, no caso de campos inteiros, decimais ou datas, para evitar
enganos no seu preenchimento devero ser indicados os limites inferior e
superior. Por exemplo, no record indicado acima poderia ser "cdigo de
1 a 9999",  "data__nasc de 1-jan-1900 a 31-dez-1999", "salrio de 50000.0 a
150000.0".
.b 2
.tp 14
	^*Tornar uma base "corrente" [ >USE ou >OPEN ]\*
.b
	Para simplificar o uso do DBAG, a maioria dos comandos podem ser dados
sem mencionar a base a que respeitam.
.b
	^*Exemplo:\* o comando "DISPLAY STRUCTURE" mostra no terminal a
estrutura da "base corrente", se houver alguma. Se no houver, o DBAG pede-lhe
em seguida o nome da base que pretende tornar "corrente".
.b
	Para tornar uma base "corrente" use o comando USE (ou OPEN).
.b
	^*Exemplo:\* o comando "USE pessoal" torna "corrente" a base "pessoal".
.b
	Assim, a forma talvez mais simples de usar a maior parte dos comandos
do DBAG  preced-los do comando USE.
.b
	^*Exemplo:\* a sucesso de comandos "USE pessoal" e "DISPLAY STRUCTURE"
mostra no terminal a estrutura da base "pessoal", independentemente de j haver
ou no outra "base corrente".
.b
	No entanto, tambm pode indicar no prprio comando a base cuja estrutura
pretende visualizar no terminal, atravs da palavra DATABASE.
.b
	^*Exemplo:\* o comando "DISPLAY STRUCTURE DATABASE pessoal" mostra no
terminal a estrutura da base "pessoal".
.b 2
.tp 14
	^*Visualizao da estrutura duma base [ >DISPLAY ou >LIST ]\*
.b
	Para visualizar a estrutura duma base use o comando DISPLAY,
seguido da palavra STRUCTURE (estrutura).
.b
	Pode ainda indicar no comando a base que quer visualizar, atravs da
palavra DATABASE.
.b
	^*Exemplo:\* o comando "DISPLAY STRUCTURE DATABASE pessoal" mostra no
terminal a estrutura da base "pessoal".
.b
	Note que, na primeira linha da descrio da estrutura, aparece o
nome da base - PESSOAL - e, entre parnteses, a indicao "[#]PESSOAL",
isto , a base a que decidiu dar o nome lgico PESSOAL reside em
ficheiros em disco na rea onde est a trabalhar, e esses ficheiros tm
um nome idntico. Isto significa que pode referir uma base atravs
dum nome lgico qualquer  sua escolha. Para mais detalhes, consulte 
a seco onde  referida a possibilidade de inicializao atravs de
ficheiros ".INI".
.b
	O comando DISPLAY pra de "ecran" em "ecran" e espera que lhe diga para
continuar ou desistir. Se em seu lugar usar o comando LIST, a escrita no
terminal  feita ininterruptamente at final.
.b 2
.tp 14
	^*Carregamento de dados numa base [ >APPEND ]\*
.b
	O carregamento de dados numa base  sempre feito utilizando o comando
APPEND, que os coloca em NOVOS RECORDS acrescentados  base. Assim, se
por exemplo carregar trs novos records numa base, e esta estiver vazia, esses
records iro utilizar os trs primeiros nmeros de record. Se voltar a
carregar records, sero ento utilizados o quarto, o quinto, etc.
.b
	^*Exemplo:\* o comando "APPEND TO pessoal" pede os dados dos
records a acrescentar  base "pessoal".
.b
	No comando APPEND pode incluir duas palavras, FROM e TO, atravs das
quais indica de onde provm os dados e qual o seu destino. Se a palavra FROM
no for indicada, significa que pretende introduzir dados directamente atravs
do terminal.
.b
	Note ainda que, normalmente, os dados so carregados directamente na
base. Pode no entanto carregar os dados num ficheiro intermdio, em
disco, e mais tarde, tambm utilizando o comando APPEND, carregar esse
ficheiro na base.
.b 2
.tp 14
	###^*Interactivo\*
.b
	O carregamento interactivo de dados numa base utiliza um editor
semelhante ao EDT (editor de texto do VMS), apresentando um campo por linha.
Assim, se est habituado a utilizar o EDT usar comandos de edio semelhantes
quando utilizar o editor do DBAG, nomeadamente "<CTRL_Z EXIT" ou
"<CTRL_Z QUIT" para sair do editor. 
.b
	Cada campo introduzido  verificado, quer no tipo (por exemplo, um campo
numrico s pode receber nmeros) quer nos limites, quando existam. Sempre
que um campo tem definido um valor por "defeito", este -lhe atribudo
automaticamente.
.b
	Tal como noutros comandos do DBAG, pode restringir os campos que
pretende preencher usando a palavra FIELDS. Os restantes campos ficaro vazios,
a menos que tenham um valor por "defeito".
.b 2
.tp 14
	######^*Directamente na base de dados\*
	^*Exemplo:\* o comando "APPEND TO pessoal" pede ao utilizador os dados
dos records a acrescentar  base "pessoal".
.b 2
.tp 14
	######^*Num ficheiro intermdio\*
.b
	Se, em vez de carregar os dados directamente na base,
optou por criar um ficheiro intermdio, tudo se passa como no
exemplo anterior,  excepo do resultado imediato: os dados so carregados
nesse ficheiro em vez de serem logo carregados na base. 
.b
	Como pode haver mais do que uma base j definida, neste caso o comando
"APPEND" deve ser precedido do comando "USE" para identificar a base que
pretende.
.b
	^*Exemplo:\* a sucesso de comandos "USE pessoal" e
"APPEND TO pessoal.rec" pede ao utilizador os dados a registar no ficheiro
"pessoal.rec".
.b 2
.tp 14
	###^*A partir de ficheiros em disco\*
.b
	Pode carregar dados numa base a partir dum ficheiro em disco, usando o
comando APPEND e as palavras TO (base) e FROM (ficheiro). O ficheiro em disco
deve ter sido tambm criado por intermdio do comando APPEND.
.b
	^*Exemplo:\* o comando "APPEND TO pessoal FROM pessoal.rec" carrega
na base "pessoal" os dados previamente carregados no ficheiro "pessoal.rec".
.b 2
.tp 14
	^*Descarregamento de dados duma base [ APPEND ]\*
.b
	O descarregamento de dados duma base  sempre feito utilizando o comando
APPEND, usando as palavras FROM (base) e TO (ficheiro).
.b
	^*Exemplo:\* o comando "APPEND FROM pessoal TO pessoal.rec" descarrega
no ficheiro "pessoal.rec" os records da base "pessoal".
.b 2
.tp 14
	^*Visualizao dos dados duma base [ >DISPLAY ou >LIST ]\*
.b
	Para visualizar os dados carregados numa base use o comando DISPLAY.
.b
	Este comando, talvez o mais utilizado interactivamente, pode realizar
praticamente qualquer espcie de consulta duma base (por exemplo, mostrar
um conjunto de records da base que obedeam a um determinado critrio). 
.b
	Pode indicar no comando a base que quer visualizar, atravs da
palavra DATABASE.
.b
	^*Exemplo:\* o comando "DISPLAY ALL DATABASE pessoal" mostra no terminal
todos os records da base "pessoal" (ALL significa TODOS os records).
.b
	Deve indicar no comando QUE records pretende visualizar, havendo
duas possibilidades, que podem ser empregues isoladamente ou combinadas
entre si:
	- restringindo a visualizao a um conjunto bem definido de records, ou
seja, definindo um "SCOPE", por exemplo:
.nf
.nj
.b
        ALL               todos os records da base;
.b
        100:150           do record nmero 100 ao record nmero 150,
                          inclusiv;
.b
        100, 104, 101     os records nmero 100, 101 e 104.
.f
.j
	- especificando uma ou vrias condies lgicas sobre os campos da base,
relacionadas por unies (.OR.) ou interseces (.AND.), ou seja,
definindo uma condio "FOR".
.b
	  Exemplos:
.nf
.nj
.b
    DISPLAY ALL FOR data__nasc _>= 1/11/67 .AND. data__nasc <=
                    31-dez-1978
.f
.j
	mostra todos os records que tenham
"o campo DATA__NASC superior ou igual a 1/novembro/1967 e inferior
ou igual a 31/dezembro/1978";
.nf
.nj
.b
    DISPLAY 100:150 FOR (  %5 _> 90000.0 .AND. sexo='M'   ) .OR. 
                        ( salrio _> 80000.0 .and. %4='F' )
.f
.j
	mostra, de entre os records com nmero
entre 100 e 150, os que tenham "o campo nmero 5 superior a 90000.0 e o
campo SEXO = 'M' ou o campo salrio superior a 80000.0 e o campo
nmero 4 = 'F'".
.b
	Como foi assinalado, o comando DISPLAY actua sobre um conjunto de
records que so definidos por: 1) um "scope", por exemplo ALL; 2) uma expresso
FOR cuja validade  verificada para os records desse "scope".
.b
	Existe outra maneira de definir um "scope" para uma base de dados:
atravs do comando SEARCH, que efectua pesquisas em qualquer base. Se tiver
sido feito um SEARCH sobre uma dada base, ento o resultado desse SEARCH
define igualmente um "scope" para essa base. Para mais detalhes, consultar a
seco "Pesquisa numa base".
.b
	O comando DISPLAY pra de "ecran" em "ecran" e espera que lhe diga para
continuar ou desistir. Se em seu lugar usar o comando LIST, a escrita no
terminal  feita ininterruptamente at final.
.b 2
.tp 14
	^*Modificao dos dados carregados numa base\*
.b
	Pode corrigir os dados j carregados numa base de duas formas:
	- usando o editor para corrigir os records da base, atravs do comando
EDIT;
	- utilizando dados existentes num ficheiro em disco, atravs do
comando REPLACE.
.b 2
.tp 14
	###^*Usando o editor [ >EDIT ]\*
.b
	^*Exemplo:\* o comando "EDIT TO pessoal" chama o editor do DBAG para
modificar os records da base "pessoal".
.b
	Do mesmo modo que na visualizao dos dados duma base, pode definir
neste comando QUE records pretende editar, definindo um "scope" e uma
ou mais condies lgicas sobre os campos dos records. Reveja a propsito
a seco "Visualizao dos dados carregados numa base".
.b
	^*Exemplo:\* o comando "EDIT 120:130 TO pessoal" chama o editor para
modificar os records da base "pessoal" com nmero entre 120 e 130, inclusiv.
.b 2
.tp 14
	###^*Utilizando ficheiros em disco [ >REPLACE ]\*
.b
	^*Exemplo:\* o comando "REPLACE TO pessoal FROM pessoal.rec" modifica
os records da base "pessoal" para os valores contidos no ficheiro
"pessoal.rec"
.b
	As palavras TO e FROM indicam QUE BASE se pretende modificar e a
partir de QUE FICHEIRO em disco.
.b
	Pode usar este comando como alternativa ao comando EDIT, sempre que
tenha um ficheiro em disco cujos valores queira "impor" aos records duma base.
.b
	Por exemplo, pode descarregar alguns dos records da base num ficheiro
em disco com o comando APPEND, sair do DBAG, usar o editor EDT
(editor de texto do VMS) para mudar directamente nesse ficheiro alguns dos
valores dos campos, re-entrar no DBAG e, atravs do comando REPLACE, modificar
finalmente os records correspondentes na base.
.b 2
.tp 14
	^*Pesquisa (seleco de records) numa base [ >SEARCH ]\*
.b
	Com o comando SEARCH pode efectuar uma pesquisa em qualquer base.
.b
	^*Exemplo:\* o comando "SEARCH ALL DATABASE pessoal FOR
data__nasc _>= 1/11/67" procura na base "pessoal" todos os records que
tenham o campo DATA__NASC igual ou maior que 1-Jan-1967.
.b
	Note que esta procura no mostra os records encontrados, ao contrrio
do que acontece com o comando DISPLAY. Apenas se limita a memorizar, para esta
base, os nmeros dos records que obedecem quela condio. Isto , fica
definido para a base em questo um conjunto bem determinado de records,
designado por "pesquisa corrente". Se a seguir for utilizado um comando
reduzido  sua expresso mais simples,  a "pesquisa corrente" que  usada.
.b
	^*Exemplos:\* se o comando seguinte for apenas "DISPLAY", sero
mostrados os records seleccionados pelo SEARCH anterior; se o comando for
"EDIT", sero editados esses records, etc.
.b
	Mais: se o comando que se segue se limitar a definir uma condio "FOR",
esta ser apenas validada para os records que pertenam  "pesquisa corrente".
.b
	^*Exemplo:\* se o comando seguinte for "DISPLAY FOR sexo = 'M'", sero
mostrados, de entre os records que j obedeciam  condio
definida no SEARCH anterior, apenas aqueles que tenham o campo
SEXO preenchido com 'M'.
.b 2
.tp 14
	^*Ordenao dos records seleccionados numa base [ >SORT ]\*
.b
	Os records seleccionados com o comando SEARCH podem ser ordenados
segundo um critrio qualquer.
.b
	^*Exemplo:\* o comando "SORT DATABASE pessoal ON data__nasc A" ordena
os records seleccionados na base
"pessoal" pelo campo DATA__NASC, duma forma ascendente (para
a ordenao ser descendente, o comando seria "SORT ... ON
data__nasc D").
.b
	Tal como SEARCH, este comando no mostra nada, apenas ordena e
memoriza os records previamente seleccionados atravs do SEARCH, que podem
depois ser mostrados atravs do comando "DISPLAY".
.b
	Note que poderia fazer isto duma s vez integrando a pesquisa e a
ordenao no comando DISPLAY, por exemplo:
.b
	"DISPLAY ALL ... FOR ... SORT ON data__nasc A"
.b
	Porm, esta ordenao no seria memorizada e, para voltar a mostrar
esses mesmos records ordenados segundo esse critrio, uma nova ordenao seria
necessria. Como a operao de ordenar pode ser demorada, h interesse em
no repetir ordenaes quando tal no seja absolutamente necessrio.
.b
	^*N.B.\* A ordenao duma base NO ALTERA os nmeros dos records. 
.b 2
.tp 14
	^*Apresentao de campos [ >DISPLAY ou ^>LIST\>, >DEFINE DISPLAY ]\*
.b
	O comando DISPLAY adopta para apresentao dos campos duma base o 
formato mais vulgar:
	- os nomes (mnemnicas) dos campos na parte superior do "ecran",
sublinhados
	- um record por linha, mostrando tantos campos do record quantos
caibam no "ecran" (sem truncaturas)
	- os campos so apresentados pela ordem e com o tamanho indicado na
definio (CREATE) da base
	- cada campo  separado do seguinte por um espao em branco
	-  apresentado tambm,  esquerda de cada record, o seu nmero
.b
	Alm disso, em funo do TIPO DO CAMPO indicado na definio da base,
este  apresentado na sua forma "standard", por exemplo:
.nf
.nj
.b
     c - caracter    Antnio Carlos             tal e qual
.b
     n - inteiro     -128, 200 ...              alinhado  direita
.b
    x  - decimal     -12.3, 120.0 ...           alinhado  direita
.b
    d  - data        10-jan-1985                tal e qual
.b
    l  - lgico      t (verdadeiro), f (falso)  tal e qual
.b
    db - outra base  12                         alinhado  direita
.f
.j
.b
	Este "display standard" pode ser alterado de duas maneiras:
	- no prprio comando DISPLAY, especificando QUE campos quer apresentar e
em que ORDEM
.b
	  ^*Exemplo:\* o comando "DISPLAY ALL FIELDS cdigo,
sexo, nome, cdigo OFF"
apresenta os campos especificados pela palavra FIELDS e por
essa ordem (neste caso, o campo CDIGO aparece duas vezes,
"enquadrando" os restantes); a palavra OFF suprime o nmero do
record  esquerda.
.b
	  O comando DISPLAY pra de "ecran" em "ecran" e espera que lhe diga
para continuar ou desistir. Se em seu lugar usar o comando LIST, a escrita
no terminal  feita ininterruptamente at final.
	- pela definio explcita do formato, atravs do comando "DEFINE
DISPLAY"; como pode haver mais do que uma base j definida, este
comando deve ser precedido do comando "USE" para identificar a
base que pretende.
.b
	  ^*Exemplo:\* a sucesso de comandos "USE pessoal" e "DEFINE DISPLAY"
entra num dilogo de definio do "display" para a base "pessoal".
.b 2
.tp 14
	###^*Definio do "display" [ >DEFINE DISPLAY ]\*
.b
	Com o comando DEFINE DISPLAY, pode escolher:
.b
	O FORMATO A USAR:
	formato 1 = horizontal, i.e., um record por linha, limitado portanto 
largura do "ecran";
	formato 2 = vertical, i.e., um campo por linha (o record 
apresentado "verticalmente").
.b
	OS CAMPOS A MOSTRAR: indique, pela ordem pretendida, os campos que
quer apresentar; caso queira, pode definir tambm o tamanho a usar, o
tipo de apresentao do campo (como "nmero" ou como "texto") e se o campo
deve ser alinhado  esquerda, alinhado  direita, centrado ou "tal e qual".
.b
	   Alguns dos tipos de campo podem ter uma apresentao diferente como
"nmero" ou como "texto". Exemplo de vrios campos:
.nf
.nj
.b
         tipo        contedo       como "nmero"  como "texto"
.b
      ----------------------------------------------------------
.b
       caracter    Antnio Carlos    indiferente    indiferente
.b
       inteiro     -128              indiferente    indiferente
.b
       decimal     120.0             indiferente    indiferente
.b
       data        10-jan-1985          19850110    10-Jan-1985
.b
       lgico      t ou f            1 ou 0         t ou f
.f
.j
.b
	^*N.B.\* Se acrescentar a palavra STANDARD (se der o comando DEFINE
DISPLAY STANDARD)  regressa,  para a base em uso,  ao "display" standard
inicial, i.e., anula quaisquer definies de "display" que tenha
utilizado at ento para essa base.
.b 2
.tp 14
	^*Salvar/repor pesquisas,ordenaes,"displays"[ ^>SAVE\>, >RESTORE ]\*
.b
	O resultado dos comandos SEARCH, SORT e DEFINE DISPLAY pode ser salvo
(guardado) num ficheiro em disco. Do mesmo modo, pode ser reposto a partir
desse ficheiro.    
.b
	^*Exemplos:\* o comando "SAVE SEARCH DATABASE pessoal TO pessoal.sea"
salva a "pesquisa corrente" da base "pessoal" num ficheiro em disco
de nome "pessoal.sea"; se mais tarde der o comando inverso
"RESTORE SEARCH DATABASE pessoal FROM pessoal.sea" aquela
pesquisa  reposta para aquela base.
.b
	Podem ser salvos em disco e restaurados de disco:
	- o "SEARCH corrente" duma dada base (resultado dum comando SEARCH)
	SAVE####SEARCH###TO#...
	RESTORE#SEARCH###FROM#...
	- o "SORT corrente" duma dada base (resultado dum comando SORT)
	SAVE####SORT#####TO#...
	RESTORE#SORT#####FROM#...
	- o "DISPLAY corrente duma dada base (resultado dum comando DEFINE
DISPLAY)
	SAVE####DISPLAY##TO#...
	RESTORE#DISPLAY##FROM#...
.b 2
.tp 14
	^*Cancelar pesquisas e ordenaes [ >CANCEL ]\*
.b
	Como foi mostrado, uma pesquisa resultante do comando SEARCH torna-se
a "pesquisa corrente". Essa pesquisa pode ser ordenada atravs do comando
SORT (ordena sempre a "pesquisa corrente").
.b
	Se quizer desistir da "pesquisa corrente" ou do "sort" corrente, use o
comando CANCEL SEARCH ou CANCEL SORT respectivamente.
.b
	^*Exemplos:\* o comando "CANCEL SEARCH DATABASE pessoal" anula a
"pesquisa corrente" da base "pessoal"; o comando "CANCEL SORT DATABASE pessoal"
anula o "sort corrente" da base "pessoal".
.b
	^*N.B.\* Como o "sort corrente", quando existe, diz sempre respeito
 "pesquisa corrente", o cancelamento deste implica sempre o cancelamento do
primeiro.
.b 2
.tp 14
	^*#Apresentao#de#dados#num#ficheiro#[#>DISPLAY#ou#>LIST#...#TO#]\*
.b
	O resultado do comando DISPLAY  normalmente mostrado no terminal.
Se quiser guardar esse resultado num ficheiro em disco, basta incluir
a palavra TO.
.b
	^*Exemplos:\* o comando "DISPLAY ALL DATABASE pessoal TO pessoal.rec"
escreve no ficheiro "pessoal.rec" todos os records da base "pessoal"
(ALL significa TODOS os records); o comando "DISPLAY DATABASE
pessoal STRUCTURE TO pessoal.str" escreve no ficheiro 
"pessoal.str" a estrutura da base "pessoal".
.b
	Neste caso (escrita num ficheiro) os comandos DISPLAY e LIST no tm
qualquer diferena de funcionamento, isto , nenhum deles pra a meio.
.b 2
.tp 14
	^*Eliminao de todos os records duma base [ >ZERO ]\*
.b
	Para esvaziar uma base, isto , eliminar DEFINITIVAMENTE todos os seus
records mas sem eliminar a definio da sua estrutura, use o comando ZERO.
.b
	^*Exemplo:\* o comando "ZERO DATABASE pessoal" elimina, depois de pedir
confirmao, todos os records da base "pessoal".
.b 2
.tp 14
	^*Modificao da estrutura duma base [ >MODIFY STRUCTURE]\*
.b
	Para modificar a estrutura duma base, por exemplo suprimir, modificar
ou acrescentar campos, use o comando MODIFY STRUCTURE.
.b
	^*Exemplo:\* o comando "MODIFY STRUCTURE TO pessoal" chama o editor
do DBAG para modificar a estrutura da base "pessoal".
.b 2
.tp 14
	###^*Base vazia\*
.b
	Se a base estiver vazia, pode modificar qualquer das suas
caractersticas, ou seja, o comando  executado sem quaisquer restries.
.b 2
.tp 14
	###^*Base com dados j carregados\*
	Se a base j tiver dados carregados, apenas poder modificar as
caractersticas da base que no possam entrar em conflito com os records
j existentes.
.b
	Por exemplo, poder modificar a descrio geral da base ou dos campos,
os seus nomes (mnemnicas), os seus valores por "defeito", os seus valores
mximo e mnimo se pretender "alarg-los", etc.
.b
	Se precisar mesmo de modificar outras caractersticas, dever
salvaguardar todos os records j carregados num ficheiro em disco, suprimir
esses records na base, modificar a estrutura da base  sua vontade e,
finalmente, re-carregar esses mesmos records.
.b
	Neste caso, dever pois usar os seguintes comandos:
.nf
.nj
.b
	    1) APPEND ALL FROM pessoal to pessoal.rec
.b
	       (descarrega todos os records no ficheiro "pessoal.rec")
.b
	    2) ZERO DATABASE pessoal
.b
	       (suprime todos os records da base "pessoal")
.b
	    3) MODIFY STRUCTURE TO pessoal
.b
	       (modifica a estrutura da base "pessoal")
.b
	    4) APPEND FROM pessoal.rec to pessoal
.b
	       (re-carrega todos os records na base "pessoal")
.f
.j
.b 2
.tp 14
	^*Eliminao total duma base [ >DELETE ]\*
.b
	Para eliminar DEFINITIVAMENTE uma base, isto , eliminar no s os seus
records mas tambm a sua prpria estrutura, use o comando DELETE.
.b
	^*Exemplo:\* o comando "DELETE DATABASE pessoal" elimina, depois de
pedir confirmao, a base "pessoal".
.b 2
.tp 14
	^*Obteno de ajuda (help) [ >HELP ou >? ]\*
.b
	Pode obter uma explicao de todos os comandos que podem ser dados ao
DBAG atravs do comando HELP ou do comando ?.
.b
	^*Exemplos:\* o comando "HELP edit" mostra no terminal uma explicao do
comando EDIT; o comando "HELP" mostra-lhe a lista de todos os comandos
possveis; o comando "HELP *" mostra uma explicao de todos os
comandos do DBAG.
.b 2
.tp 14
	^*Caractersticas globais do DBAG [ >DISPLAY ou >LIST ]\*
.b
	Para visualizar o estado e caractersticas globais do DBAG use o
comando DISPLAY, seguido da palavra STATUS.
.b
	^*Exemplo:\* o comando "DISPLAY STATUS" mostra no terminal o estado e
caractersticas globais do DBAG.
.b
	Com este comando obtm algumas informaes teis sobre o DBAG, por
exemplo o nmero mximo de bases que pode "abrir" simultaneamente, que bases
esto abertas nesse momento, etc. Nomeadamente, pode ver o estado corrente
dos parmetros que pode modificar atravs do comando SET (cf. pargrafo
seguinte).
.b
	O comando DISPLAY pra de "ecran" em "ecran" e espera que lhe diga para
continuar ou desistir. Se em seu lugar usar o comando LIST, a escrita no
terminal  feita ininterruptamente at final.
.b 2
.tp 14
	^*Posicionamento de parmetros globais do DBAG [ >SET ]\*
.b
	Para posicionar qualquer dos parmetros globais do DBAG use o
comando SET.
.b
	^*Exemplo:\* o comando "SET NAMES OFF" "suspende" os nomes (mnemnicas)
dos campos das bases na visualizao dos dados, isto , se os nomes
estiverem "off" apenas aparecem os contedos dos campos, no as
suas mnemnicas.
.b
	Alguns dos parmetros que pode posicionar com o comando SET:
	-#ALTERNATE:  "SET ALTERNATE TO dbag.log" escreve no ficheiro "dbag.log"
uma cpia de tudo o que se passar na utilizao do DBAG;
	-#HEADER###:  "SET HEADER OFF" suprime a linha informativa que
normalmente aparece no topo do "ecran";
	-#WIDTH####:  "SET WIDTH TO 132" muda a largura do "ecran" para 132
colunas;
	-#PAUSE####:  "SET PAUSE ON", se estiver a usar um ficheiro de comandos,
provoca uma pausa antes de executar cada um dos comandos
lidos do ficheiro;
.b 2
.tp 14
	^*Ligao entre duas bases por referncia explcita\*
.b
	Para ligar explicitamente uma base de dados a outra (ou outras) use um
(ou vrios) campos do tipo "outra base de dados". Por exemplo, se tiver uma
base de dados de nome PASES, em que o record no. 1 seja PORTUGAL, o no. 2
ESPANHA, o no. 3 FRANA, etc., pode referi-los directamente noutra base
atravs dos valores 1, 2, 3, ...
.b
	Voltando ao exemplo de record apresentado no incio do manual, pode
acrescentar-lhe um ltimo campo, ficando o record com a estrutura seguinte:
.nf
.nj
.b
	campo 1: cdigo   , inteiro ,   tamanho =  4
.b
	      2: nome     , caracter,   tamanho = 18
.b
	      3: data__nasc, data
.b
	      4: sexo     , caracter,   tamanho =  1,
	                    valor por "defeito" = 'M'
.b
	      5: salrio  , decimal ,   tamanho = 7, casas dec. = 1
.b
	      6: pas     , db      ,   outra base = PASES
.f
.j
.b
	Claro que, previamente, dever ter definido com o comando CREATE a
base PASES, com pelo menos um campo do tipo "caracter" e tamanho = ao mximo
que quizer prever para o nome do pas, por exemplo:
.b
	campo 1: nome_pas, caracter,   tamanho = 15
.b 2
.tp 14
	###^*Apresentao do campo "outra base" (db) \*
.b
	Recapitulando, pode portanto ter um record da sua base com o campo PAS
preenchido com o valor 2, "apontando" assim para o record no. 2 da base
PASES.
.b
	Se se limitar a dar o comando DISPLAY desse record, obter o verdadeiro
contedo numrico do campo PAS, isto , 2.
.b
	Para que o DBAG faa automaticamente a substituio do valor
numrico 2 pela sua contrapartida na "outra base", ou seja, para aparecer
ESPANHA em vez de 2, dever declarar que quer "ver" o campo PAS, no como
nmero, mas como TEXTO. Para isso, use o comando DEFINE DISPLAY (descrito
na seco "Apresentao de campos").
.b 2
.tp 14
	^*Ligao entre duas bases atravs de "join" [ >JOIN ]\*
.b
	Pode "ligar" duas bases entre si atravs do comando JOIN, que cria
uma nova base a partir das duas bases iniciais. A estrutura desta nova base
 definida pela juno automtica das duas bases de origem. Os campos da
nova base so preenchidos com os contedos dos campos das bases de origem,
para os records duma e doutra que satisfaam  condio de "join" indicada
no comando.
.b
	Para exemplificar, vamos supr que, previamente, definiu com o comando
CREATE a base PASES, desta vez com dois campos: um campo do tipo "inteiro" e
outro do tipo "caracter", por exemplo:
.nf
.nj
.b
	campo 1: num_pas , inteiro ,   tamanho =  3
.b
	      2: nome_pas, caracter,   tamanho = 15
.f
.j
.b
	^*Exemplo:\* o comando "JOIN pessoal WITH pases TO pessoal_p JFOR
pas = num_pas" cria uma nova base de nome PESSOAL_P, a partir das duas bases
PESSOAL e PASES, para os pares de records que tenham o mesmo nmero de pas.
.b
	A palavra JFOR permite especificar a condio em que o JOIN deve ser
realizado. Note que a expresso definida por JFOR (Join FOR)  semelhante 
utilizada por FOR (descrita em apndice), tendo porm  esquerda e  direita
de cada condio lgica um campo da primeira e um campo da segunda base
invocadas, respectivamente.
.b
	No exemplo anterior, a base PESSOAL_P ficaria definida com 8 campos:
6 campos da base PESSOAL + 2 campos da base PASES. Se quizer, pode indicar
no comando que campos quer copiar para a base de destino.
.b
	^*Exemplo:\* o comando "JOIN pessoal FIELDS nome, salrio, sexo
WITH pases FIELDS nome_pas TO pessoal_p JFOR pas = num_pas" cria uma nova
base de nome PESSOAL_P, a partir das duas bases PESSOAL e PASES, para os
pares de records que tenham o mesmo nmero de pas, com os campos indicados.
.b
	Neste caso, a base PESSOAL_P ficaria apenas com 4 campos: 3 campos da
base PESSOAL + 1 campo da base PASES.
.b 2
.tp 14
	^*Indexao e desindexao de campos [ ^>INDEX\>, >NOINDEX ]\*
.b
	Se costuma fazer pesquisas frequentes numa base usando uma condio
de igualdade ou desigualdade dum campo com um valor (por exemplo,
"DISPLAY ALL FOR sexo = 'M'), pode valer a pena declarar esse campo como
"index", para acelerar esse tipo de pesquisas. Para esse efeito, use o
comando INDEX.
.b
	^*Exemplo:\* o comando "INDEX DATABASE pessoal ON FIELD sexo" indexa o
campo SEXO da base PESSOAL.
.b
	A partir da altura em que um campo  declarado como "index", a incluso
ou modificao de records (comandos APPEND e EDIT) ficam a ser um pouco mais
demoradas, mas as pesquisas que usem esse campo ficaro geralmente muito mais
rpidas.
.b
	Por outro lado, note que em qualquer altura pode, quer desistir da
indexao dum campo, quer voltar a defini-la.
.b
	^*Exemplo:\* o comando "NOINDEX DATABASE pessoal ON FIELD sexo"
desindexa o campo SEXO da base PESSOAL.
.b 2
.tp 14
	###^*Indexao por palavras-chave [ >INDEX KWIC ]\*
.b
	Como caso particular do sistema de indexao do DBAG, pode indexar um
campo por palavras-chave, tornando possvel a sua pesquisa, duma forma
eficiente. Para tal, basta acrescentar a palavra KWIC ao comando INDEX.
.b
	^*Exemplo:\* o comando "INDEX KWIC DATABASE pessoal ON FIELD nome"
indexa o campo NOME da base PESSOAL por palavras-chave, isto , pode por
exemplo usar o comando "DISPLAY ALL DATABASE pessoal FOR nome = lus, antnio"
para encontrar os records dessa base em cujo campo NOME figurem "lus" ou
"antnio".
.b 2
.tp 14
	^*Supresso de records duma base [ >KILL ]\*
.b
	Para suprimir records duma base, use o comando KILL.
.b
	^*Exemplo:\* o comando "KILL ALL DATABASE pessoal" suprime, depois de
pedir confirmao, todos os records da base "pessoal" (ALL significa TODOS
os records).
.b
	Claro que seria mais prtico, e muito mais rpido, usar o comando
"ZERO DATABASE pessoal" se quizer realmente suprimir TODOS os records desta
base. O comando KILL  normalmente usado duma forma selectiva. Exemplos:
.nf
.nj
.b
        KILL ALL FOR data__nasc _>=   1/11/67 .AND.
                     data__nasc <= 31-dez-1978
.f
.j
	suprime todos os records que tenham
"o campo DATA__NASC superior ou igual a 1/novembro/1967 e inferior
ou igual a 31/dezembro/1978";
.nf
.nj
.b
        KILL 100:110, 234
.f
.j
	suprime os records com nmeros entre 100 e 110, inclusiv, e ainda o
record nmero 234.
.b
	Na medida em que a supresso de records  DEFINITIVA (o contedo dos
records "killed" nunca mais pode ser recuperado), este comando pede sempre
confirmao.
.b
	Quando houver insero de novos records na base (comando APPEND), os
nmeros dos records "killed" so normalmente re-utilizados, isto , depois
de dar e confirmar o comando "KILL 100:110, 234", os prximos comandos APPEND
utilizaro sucessivamente os nmeros 100, 101, ..., 110 e 234 para os novos
records.
.b 2
.tp 14
	^*Cpia da estrutura duma base [ >COPY STRUCTURE ]\*
.b
	Para copiar (duplicar) a estrutura duma base, use o comando COPY
STRUCTURE.
.b
	^*Exemplo:\* o comando "COPY STRUCTURE FROM pessoal TO pessoal2"
copia a estrutura da base "pessoal" para uma nova base "pessoal2".
.b
	Pode usar este comando sempre que, por qualquer razo, queira
duplicar a estrutura duma base. Por exemplo, antes de modificar a estrutura
duma base (comando MODIFY STRUCTURE) pode querer "salv-la" para o caso de
se enganar na modificao.
.b 2
.tp 14
	^*Uso de ficheiros de comandos [ >@ ]\*
.b
	Pode ser mais simples, em lugar de escrever comandos ao terminal,
colocar os comandos que deseja executar num ficheiro (um comando por linha)
e indicar ao DBAG que pretende "executar" esse ficheiro de comandos.
.b
	^*Exemplo:\* o comando "@ m.out" vai lanar a execuo dos
comandos contidos no ficheiro "m.out".
.b
	No exemplo anterior, se tivesse colocado (usando o editor do VMS)
nesse ficheiro os seguintes comandos:
.nf
.nj
.b
	USE pessoal
	RESTORE DISPLAY FROM pessoal.dsp
	DISPLAY ALL FOR sexo = 'M' TO pessoal.m
.f
.j
.b
	iria, primeiro tornar corrente a base "pessoal", a seguir restaurar
um "display" (formato), previamente guardado atravs dum SAVE DISPLAY,
do ficheiro "pessoal.dsp", e finalmente escrever com esse formato todos os
records cujo campo SEXO estivesse preenchido com 'M'.
.b 2
.tp 14
	^*Escrita e edio da linha de comando [ >UP ou >RECALL ]\*
.b
	Um comando pode ter at um total de 256 caracteres. Se no couber numa
nica linha, use o caracter ";" para indicar que o comando continua na linha
seguinte.
.b
	^*Exemplo:\* a sucesso de linhas
.nf
.nj
.b
	DISPLAY ALL FOR sexo = 'M' ;
	SORT ON cdigo, nome ;
	TO pessoal.srt ;
	FIELDS nome, sexo, data__nasc
.f
.j
.b
	ser interpretada pelo DBAG como uma nica linha de comando: procurar
todos os records com o campo SEXO = 'M', orden-los por CDIGO e NOME, e
escrever no ficheiro "pessoal.srt" os campos NOME, SEXO e DATA__NASC.
.b
	Por outro lado, todas as linhas que comecem por "!" so ignoradas. Isto
pode ser-lhe particularmente til para documentar os seus ficheiros de
comandos, nos quais pode incluir os comentrios que quizer, desde que comecem
por "!".
.b
	Qualquer linha de comando pode ser editada. Nomeadamente, em caso de
erro sintctico o DBAG pergunta-lhe se quer editar a linha. Se responder
afirmativamente, vai automaticamente para o editor de comandos. Se responder
negativamente, o DBAG vai pedir-lhe o prximo comando.
.b
	Na realidade, o DBAG guarda os ltimos 20 comandos num "buffer de
comandos", que pode aceder atravs do comando UP (ou RECALL).
.b
	Pode usar este comando de vrias maneiras:
	^*Exemplos:\* o comando "UP" pe  sua disposio o ltimo comando
dado; o comando "UP 4" d-lhe o quarto comando do "buffer"; e o comando
"UP displ" procura um comando que comece por "displ".
.b
	A partir da altura em que "entrou" no "buffer" de comandos atravs
de UP, pode percorr-lo usando as "setas" ascendente e descendente do seu
terminal (teclas de posicionamento do cursor).
.b
	Pode igualmente editar o comando onde se encontra.
.b
	Para executar o comando, basta dar <ret_> (tecla RETURN).
.b
	Sempre que quiser visualizar todo o buffer de comandos, use o comando
DISPLAY seguido da palavra COMMANDS.
.b 2
.tp 14
	^*Comandos directos ao sistema operativo [ ^>VMS\>, ^>EDT\>, >TPU ]\*
.b
	Sem abandonar o DBAG, pode executar qualquer comando do sistema
operativo VMS, desde que o faa preceder da palavra VMS.
.b
	^*Exemplo:\* o comando "VMS direct" sai momentaneamente do DBAG,
executa o comando DIRECT do VMS (ver o catlogo de todos os ficheiros em
disco) e re-entra no DBAG.
.b
	No caso particular de querer utilizar um dos dois editores
de texto mais usados do VMS (EDT ou TPU), pode, em lugar de dar o comando
genrico "VMS ...", chamar directamente um desses editores.
.b
	^*Exemplo:\* o comando "EDT a.cmd" chama directamente o EDT (editor do
VMS) para editar o ficheiro de nome "a.cmd".
.b 2
.tp 14
	^*Novidades [ >NEWS ]\*
.b
	Algumas "novidades" consideradas do interesse geral dos utilizadores
do DBAG, por exemplo novas facilidades acrescentadas ao DBAG, podem ser
listadas atravs do comando NEWS.
.b
	^*Exemplos:\* o comando "NEWS" mostra no terminal a lista de todas as
novidades; o comando "NEWS *" mostra-lhe todas as novidades existentes.
.b 2
.tp 14
	^*Procedimento automtico  entrada do DBAG\*
	Como j sabe, pode executar os comandos ao DBAG que quizer, provenientes
do terminal (modo normal) ou dum ficheiro de comandos. Se, quando entra no
DBAG, existir na sua rea em disco um ficheiro de nome "autoexec.bat", este 
automaticamente interpretado como ficheiro de comandos.
.b
	^*Exemplo:\* se existir na sua rea em disco um ficheiro de nome
"autoexec.bat" com os comandos "set width to 132", "open pessoal" e "append"
(um comando por linha), sempre que entrar no DBAG o seu terminal  colocado
em 132 colunas, a base "pessoal"  tornada "corrente" e o editor do DBAG 
chamado para carregar novos records nessa base.
.b 2
.tp 14
	^*Sada do DBAG [ >EXIT ou >QUIT ]\*
.b
	Para abandonar o DBAG e regressar ao sistema operativo, use o comando
EXIT (ou QUIT).
.b
	^*Exemplo:\* o comando "EXIT" abandona o DBAG e regressa ao sistema
operativo.
