.ps 62,70
.lm 1
.flags bold
.nf
.nj
.nap
.keep
.b 3
                                                                    ^*>@\*

.tp 3
^*Funo:\* o comando @ permite "executar" ficheiros de comandos.

.tp 3
^*Exemplo:\*

    "@ procura.all" provoca a  "execuo"  de  todos  os comandos que
     existam no ficheiro "procura.all" (um comando por linha)

.tp 3
^*Sintaxe:\*

   @ <ficheiro_>

.tp 3
^*Observaes:\*

   1.  Pode haver at 3 nveis de ficheiros de comandos,  isto ,  um
       ficheiro de comandos pode invocar um segundo e este,  por  sua
       vez, um terceiro.

   2.  Quando o  DBAG  esgota os comandos  existentes num ficheiro de
       comandos volta  situao anterior.

   3.  Normalmente,  a execuo dum  ficheiro de comandos  feita sem
       interrupes e o seu resultado   mostrado no  terminal.  Pode
       modificar-se esse modo de funcionamento com os  comandos  "SET
       PAUSE ON" e "SET ECHO OFF", respectivamente.
       

   4.  A extenso por "defeito" dos ficheiros de comandos  ".BAT" ou
       ".CMD".  Assim,  se se der o comando "@ procura",  o DBAG  vai
       tentar encontrar os ficheiros "procura.bat"  e  "procura.cmd",
       por esta ordem.

.tp 3
^*Comandos relacionados:\*

   SET PAUSE
   SET ECHO
.pg
.b 3
                                                               ^*>APPEND\*

.tp 3
^*Funo:\* o comando APPEND transfere dados de e para uma base.

Assim, pode ser usado para:

    1.  Acrescentar novos records directamente numa base

    2.  Acrescentar records num ficheiro em disco, usando a estrutura
        duma base

    3.  Carregar records numa base a partir dum ficheiro em disco

    4.  Descarregar records duma base para um ficheiro em disco

.tp 3
^*Exemplos:\*

    1.  "APPEND" transfere dados do terminal, atravs  do  editor  do
         DBAG para a base corrente

    1'. "APPEND TO pessoal" transfere dados do  terminal, atravs  do
         editor do DBAG para a base "pessoal"

    2.  "APPEND TO pessoal.rec" transfere dados do terminal,  atravs
         do  editor  do  DBAG para o ficheiro "pessoal.rec", usando a
         estrutura da base corrente

    3.   "APPEND  FROM  pessoal.rec"  transfere  dados  do   ficheiro
         "pessoal.rec" para a base corrente

    3'.  "APPEND FROM pessoal.rec  TO  pessoal"  transfere  dados  do
          ficheiro "pessoal.rec" para a base "pessoal"

    4.   "APPEND FROM pessoal TO pessoal.rec" transfere dados da base
         "pessoal" para o ficheiro "pessoal.rec"

.tp 3
^*Formatos:\* consoante o caso, algumas opes podem ser acrescentadas:

Formato 1:  APPEND BLANKS TO <base_>

         BLANKS:  acrescenta  base um  novo  record  preenchido  com
         espaos sem chamar o editor do DBAG

Formato 2:  APPEND BLANKS TO <ficheiro_> OLD

         BLANKS:  acrescenta ao ficheiro um  novo  record  preenchido
         com espaos sem chamar o editor do DBAG

         OLD:   se o ficheiro ainda no existe, cria-o; se j existe,
         acrescenta no fim

Formato 3:  APPEND FROM <ficheiro_> TO <base_> BYNAME

         BYNAME:  ignora os nmeros dos campos,  transferindo  apenas
         os  contedos  dos  campos  com  igual  nome  (mnemnica) no
         ficheiro e na base

Formato 4:  APPEND FROM <base_> TO <ficheiro_> OLD

                SCOPE  <lista de "scopes"_>
                FOR    <expresso "for"_>
                FIELDS <lista de campos_>

         OLD:   se o ficheiro ainda no existe, cria-o; se j existe,
         acrescenta no fim

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         FIELDS: lista de campos a transferir

         Neste caso, so tomados os seguintes valores "por defeito":

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                   - a "pesquisa corrente", se houver

                   - se  no  houver  "pesquisa corrente",  todos  os
                     records da base

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  transferidos todos os campos de cada record

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

1. APPEND  [ BLANKS ]    [ TO <base_> ]

2. APPEND  [ BLANKS ]      TO <ficheiro_>

                           [ DBAG ]
                           [ NEW | OLD ]
 
3. APPEND  FROM <ficheiro_> [ DBAG ] TO <base_> 
           [ BYFIELDNUMBER | BYNAME ]

4. APPEND  FROM <base_> TO <ficheiro_>

           [ [ SCOPE ]  <lista de "scopes"_> ]
           [ FOR    <expresso "for"_> ]
           [ FIELDS <lista de campos_> ]

                       [ DBAG ]
                       [ NEW | OLD ]

N.B. - As opes  BYFIELDNUMBER:  transferir os  contedos dos campos
       com igual  nmero de campo no ficheiro e na base e  NEW: criar
       um ficheiro novo,  so sempre tomadas  "por defeito";  a opo
       DBAG: formato do ficheiro em disco,   actualmente a nica que
       est implementada.        

.tp 3
^*Observaes:\*

   1.  "Performance"

       Quando um ou vrios campos duma base esto indexados,  sempre
       que se inclui um novo record na base o DBAG  encarrega-se  de
       actualizar os correspondentes ficheiros de ndices.

       Pode  portanto  valer a  pena  suspender TEMPORARIAMENTE esta
       actualizao dos ndices,  sobretudo quando este comando est
       a ser usado para carregar sem interrupo um grande nmero de
       records.   normalmente o caso  sempre que h uma operao de
       recuperao da totalidade  duma base a partir dum ficheiro em
       disco no qual anteriormente foram "salvos" os records da base.

       Claro  que  deve  reactivar-se  logo  a seguir o  sistema  de
       indexao do  DBAG  e a  base deve ser re-indexada de modo  a
       poder continuar a tirar partido dos campos indexados.

       Seria ento a seguinte successo de comandos:

       SET INDEXES OFF                       (desactiva indexao)
       APPEND FROM <ficheiro_> TO <base_>      (carrega records)
       SET INDEXES ON                        (re-activa indexao)
       REINDEX DATABASE <base_>               (re-indexa a base)

   2.  Atribuio do nmero ao novo record

       Se nunca fr usado o comando KILL  (supresso de records),  o
       DBAG atribui um novo nmero sequencial a cada novo record.

       Sempre que se suprimirem records,  os  respectivos nmeros de
       record no so, regra geral, re-utilizados pelo DBAG.  Porm,
       este modo de funcionamento  estabelecido quando se define  a
       estrutura da base  (comando CREATE)  e pode ser modificado em
       qualquer altura (comando MODIFY STRUCTURE).

.tp 3
^*Comandos relacionados:\*

   CREATE
   KILL
   MODIFY STRUCTURE
   REINDEX
   SET INDEXES
.pg
                                                               ^*>CANCEL\*

.tp 3
^*Funo:\* o comando  CANCEL  cancela a  "pesquisa corrente" ou o  "sort
        corrente" duma base.

.tp 3
^*Exemplos:\*

    1.  "CANCEL SEARCH"  cancela  a  " pesquisa  corrente "  da  base
         corrente

    2.  "CANCEL SORT"  cancela  o  " sort corrente ",  isto  ,  se a
        "pesquisa corrente" estiver ordenada, deixa de o estar

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

   CANCEL    SEARCH | SORT    [ DATABASE <base_> ]

       A opo DATABASE permite indicar de que base se trata. Se esta
       esta opo no for mencionada, o comando CANCEL actua  sobre a
       base corrente.

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   RESTORE SEARCH
   RESTORE SORT
   SAVE SEARCH
   SAVE SORT
   SEARCH
   SORT
.pg
                                                                ^*>CLOSE\*

.tp 3
^*Funo:\* o comando CLOSE fecha uma base.

.tp 3
^*Exemplos:\*

    1.  "CLOSE" fecha a base corrente

    2.  "CLOSE pessoal" fecha a base "pessoal"

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   CLOSE   [ DATABASE ] <base_>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   USE ou OPEN
.pg
                                                       ^*>COPY STRUCTURE\*

.tp 3
^*Funo:\* o comando  COPY STRUCTURE  cria uma  nova  base de  estrutura
        igual a outra base j existente.

.tp 3
^*Exemplo:\*

    "COPY STRUCTURE FROM pessoal TO pessoal__2"  copia a  estrutura da
     base "pessoal" para uma nova base, "pessoal__2"

.tp 3
^*Sintaxe:\*

   COPY STRUCTURE   FROM <base_> TO <nova__base_>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                                               ^*>CREATE\*

.tp 3
^*Funo:\* o comando CREATE inicia a  definio  da  estrutura  duma
        nova base.

   Normalmente, o comando CREATE  no utiliza o editor do  DBAG  para
   definir a estrutura duma base.

   Porm,  pode mudar-se o seu  modo  de  funcionamento dando antes o
   comando SET SCREEN ON.

.tp 3
^*Exemplo:\*

    "CREATE pessoal" inicia a definio da estrutura duma  nova  base
     de nome "pessoal"

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   CREATE   [ <base_> ]

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   SET SCREEN
.pg
                                                       ^*>DEFINE DISPLAY\*

.tp 3
^*Funo:\* o comando  DEFINE DISPLAY  inicia o  dilogo de  definio do
        "display" da base corrente.

.tp 3
^*Exemplo:\*

    "DEFINE DISPLAY" inicia o dilogo de  definio do  "display"  da
     base corrente

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   DEFINE DISPLAY   [ STANDARD ]

.tp 3
^*Observaes:\*

   1.  Quando se visualizam dados duma base (comando DISPLAY), estes
       so apresentados no  "ecran"  duma forma "standard": todos os
       campos que couberem aparecem na horizontal, separados por uma
       coluna em branco,  usando o tamanho e tipo de apresentao da
       estrutura da base, sendo cada campo encimado pelo  respectivo
       nome (mnemnica).

   2.  Para definir outra forma de apresentao  ("display"), usa-se
       o comando DEFINE DISPLAY.

   3.  Se a opo STANDARD fr mencionada,  ou seja,  se for dado  o
       comando DEFINE DISPLAY STANDARD, o "display standard" da base
       corrente volta a ser usado.

   4.  Em qualquer dos casos,  atravs dos comandos  SET NAMES OFF e
       SET RAW ON pode suprimir, respectivamente, a apresentao dos
       nomes dos campos e o espaamento entre eles.

.tp 3
^*Comandos relacionados:\*

   RESTORE DISPLAY
   SAVE DISPLAY
   SET NAMES
   SET RAW
.pg
                                                               ^*>DELETE\*

.tp 3
^*Funo:\* o comando DELETE elimina totalmente uma base.

.tp 3
^*Exemplo:\*

    "DELETE DATABASE pessoal"  elimina totalmente  a base  "pessoal",
     depois de confirmao

.tp 3
^*Sintaxe:\*

   DELETE   DATABASE <base_>

            ou

   DELETE   FILES <base_>

.tp 3
^*Observaes:\*

   1.  Como outros comandos de carcter  "destructivo", DELETE exige
       normalmente uma confirmao.  Pode  suprimir-se a necessidade
       de confirmao (!!!) atravs do comando SET CONFIRM OFF.

   2.  As opes DATABASE e FILES tm aqui o mesmo uso: designar sem
       ambiguidade a base a suprimir.

.tp 3
^*Comandos relacionados:\*

   SET CONFIRM
.pg
                                                      ^*>LIST\* ou ^*>DISPLAY\*

.tp 3
^*Funo:\* os comandos  DISPLAY e LIST  mostram estruturas ou records de
        bases, o estado global ou o "buffer" de comandos do DBAG.

Estes dois comandos so idnticos em tudo menos num aspecto:

    - DISPLAY normalmente pra de "ecran" em "ecran",  sendo possvel
      interromper a sua execuo;

    - LIST normalmente no pra at terminar.

    Na prtica,  pode  sempre usar-se qualquer deles, pois existe uma    
    opo  (WAIT ou NOWAIT) que contraria ou confirma o funcionamento
    habitual de cada um dos dois comandos.

Para evitar repeties, toma-se como base a descrio do DISPLAY.

Assim, o comando DISPLAY (ou LIST) pode ser usado para visualizar:

    1.  A estrutura duma base                   ( DISPLAY STRUCTURE )

    2.  Um record ou um conjunto de records     ( DISPLAY ... )

    3.  Que bases pode aceder num dado momento  ( DISPLAY FILES )

    4.  O estado global do DBAG                 ( DISPLAY STATUS )

    5.  O "buffer" de comandos do DBAG          ( DISPLAY COMMANDS )

.tp 3
^*Exemplos:\*

    1.  "DISPLAY STRUCTURE"  mostra no  terminal a  estrutura da base
         corrente

    2.  "DISPLAY 1, 2, 15" apresenta no terminal os records nmero 1,
         2 e 15 da base corrente

    3.  "DISPLAY  FILES   TO   bases.lst"   apresenta   no   ficheiro
        "bases.lst" a lista das bases que pode aceder

    4.  "DISPLAY STATUS" apresenta no terminal as caractersticas e o
         estado global do DBAG (bases em uso, limites globais, estado
         dos vrios parmetros do sistema, etc.)

    5.  "DISPLAY  COMMANDS"   mostra   no   terminal  os  ltimos  20
         comandos, que podem ainda ser acedidos

       Note-se  que  em  qualquer caso o resultado do comando DISPLAY
       pode, alternativamente ao terminal, ser colocado num  ficheiro
       em disco usando a opo TO.

.tp 3
^*Formatos:\* consoante o caso, algumas opes podem ser acrescentadas:

Formato 1:  DISPLAY STRUCTURE DATABASE <base_> TO <ficheiro_>

         DATABASE: especifica de que base se trata

         TO: a estrutura da base ser escrita no ficheiro

Formato 2:  DISPLAY DATABASE <base_> TO <ficheiro_>

                    SCOPE   <lista de "scopes"_>
                    FOR     <expresso "for"_>
                    SORT ON <lista de ordenao_>
                    FIELDS  <lista de campos_>

                    OFF
                    NOWAIT

         DATABASE: especifica de que base se trata

         TO: os records sero escritos no ficheiro

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         SORT ON: lista de ordenao na apresentao dos records

         FIELDS: lista de campos a considerar de cada record

         OFF: no mostra o nmero dos records

         NOWAIT:  mostra todos os records abrangidos pelo comando sem
         qualquer interrupo

         Neste caso, so tomados os seguintes valores "por defeito":

          DATABASE: se no fr  mencionada  nenhuma base,    usada a
                    base corrente

          TO: se no fr referido nenhum ficheiro,  os resultados so
              escritos no terminal

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                 - a "pesquisa corrente", se houver

                 - se no houver "pesquisa corrente" mas tiver  sido
                   usada uma expresso FOR, todos os records da base

                 - se no houver "pesquisa corrente" nem tiver  sido
                   usada uma expresso FOR, o record corrente

                 - se no houver record corrente,  o  primeiro record
                   da base

          SORT ON: se nenhuma ordenao fr pedida,  os records sero
                   apresentados por ordem do nmero de cada record

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  mostrados todos os campos de cada record

          OFF: se no fr empregue, cada record ser acompanhado pelo
               respectivo nmero de record

          NOWAIT:  se esta opo no for usada,  no  caso  do comando
                   DISPLAY,  pra de  "ecran"  em  "ecran" e pode ser
                   interrompido;  no caso do comando  LIST,  acontece
                   exectamente o contrrio; exemplos:
                      DISPLAY ALL    pra de "ecran" em "ecran"
                      LIST ALL       no pra

Formato 3:  DISPLAY FILES <nome genrico_> TO <ficheiro_>

         <nome genrico_>: nome genrico  ("wild card") duma ou vrias
                          bases, interpretado como tal  pelo  sistema
                          operativo; exemplos:
                          p_*          todas as bases cujo nome comece
                                      por "p"
                          p%%%%%l     todas as bases cujo nome comece
                                      por  "p", acabe em  "l" e tenha
                                      um total de 7 caracteres

         TO: a lista das bases ser escrita no ficheiro

         Se no fr  especificado nenhum  "nome genrico", ser feita
         uma lista de todas as bases acessveis, independentemente do
         nome que tiverem.

Formato 4:  DISPLAY STATUS TO <ficheiro_>

         TO:  as  caractersticas e o  estado  global do  DBAG  sero
              escritos no ficheiro

Formato 5:  DISPLAY COMMANDS TO <ficheiro_>

         TO:  o "buffer" de comandos do DBAG (os ltimos 20 comandos)
              sero escritos no ficheiro

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

1. DISPLAY ou LIST STRUCTURE   [ DATABASE <base_> ]  [ TO <ficheiro_> ]

2. DISPLAY ou LIST             [ DATABASE <base_> ]  [ TO <ficheiro_> ]

                               [ [ SCOPE ]  <lista de "scopes"_> ]
                               [ FOR     <expresso "for"_> ]
                               [ SORT ON <lista de ordenao) ]
                               [ FIELDS  <lista de campos_> ]

                               [ ON | OFF ]
                               [ WAIT | NOWAIT ]

3. DISPLAY ou LIST FILES   [ <nome genrico_> ]   [ TO <ficheiro_> ]

4. DISPLAY ou LIST STATUS      [ TO <ficheiro_> ]

5. DISPLAY ou LIST COMMANDS    [ TO <ficheiro_> ]

.tp 3
^*Observaes:\*

   1.  As opes  WAIT e NOWAIT tm  "valores  por defeito"  opostos
       consoante o comando: DISPLAY, "por defeito" pra (WAIT); LIST,
       no pra (NOWAIT).

   2.  O comando DISPLAY,  quando usado para apresentar records, vai
       considerar sempre um certo conjunto de records da base.  Este
       conjunto pode ser, ou no,  afectado pela "pesquisa corrente"
       da base, posicionado pelo comando SEARCH.

       Se no comando for dado um "scope",   este que ser utilizado,
       mesmo que exista uma "pesquisa corrente".

   3.  Os  records  sero apresentados sempre de acordo com um certo
       formato.  Este formato ("display"), que  partida  o formato
       "standard" para a base,  pode ser alterado em qualquer altura
       pelos comandos DEFINE DISPLAY ou RESTORE DISPLAY.

       Como no "display" duma base est explicitado que campos devem
       ser apresentados e como,  a opo FIELDS apenas pode efectuar
       uma RESTRIO a esses campos, nunca uma ampliao.  Assim, se
       por exemplo o  "display" definir como campos a mostrar o NOME,
       o SEXO e o SALRIO, e fr dado o comando  "DISPLAY ALL FIELDS
       sexo,  nome,  data__nasc",  apenas os campos SEXO e NOME sero
       apresentados, e por esta ordem; se pelo contrrio, fr dado o
       comando  "DISPLAY ALL",  sero  apresentados  os  campos NOME, 
       SEXO e SALRIO, por esta ordem.

   4.  Em cada record existe um campo implicitamente definido, que  
       o seu nmero de record.  Da mesma maneira,  se esse campo, que
       nos  comandos  de  apresentao de  records e de definio  do
       "display" pode ser indicado com _# (cardinal), estiver includo
       no "display",  a sua posio  no ser  alterada pelo  prprio
       comando DISPLAY. Assim e pela mesma razo que anteriormente, o
       comando  "DISPLAY ALL FIELDS sexo, nome, data__nasc, _#"  apenas
       apresentar os campos SEXO e NOME.

   5.  Em qualquer caso, atravs dos comandos SET NAMES OFF e SET RAW
       ON pode suprimir,  respectivamente,  a  apresentao dos nomes
       dos campos e o espaamento entre eles.

.tp 3
^*Comandos relacionados:\*

   DEFINE DISPLAY
   RESTORE DISPLAY
   RESTORE SEARCH
   SAVE DISPLAY
   SAVE SEARCH
   SEARCH
   SET NAMES
   SET RAW
.pg
                                                                 ^*>EDIT\*

.tp 3
^*Funo:\* o comando EDIT modifica records.

   Este comando utiliza o editor do DBAG para introduzir modificaes
   num conjunto bem definido de records.

   Regra geral, os campos a modificar so  lidos da  prpria base  e,
   depois de modificados, re-escritos directamente na base.

   Porm, duas variantes so tambm possveis:

   - ler da base os campos a  modificar e escrev-los j modificados
     num ficheiro intermedirio em disco

   - ler os campos a  modificar  dum ficheiro em disco e, depois  de
     modificados, re-escrev-los directamente na base

Assim, o comando EDIT pode ser usado para:

    1.  Editar records lidos duma base, na prpria base

    2.  Editar records lidos duma base, para um ficheiro em disco

    3.  Editar records lidos dum ficheiro em disco, directamente  na
        base

.tp 3
^*Exemplos:\*

    1.  "EDIT 28" edita o record nmero 28 da base corrente

    1'. "EDIT 28 TO pessoal"   edita  o  record  nmero  28  da  base
        "pessoal"

    2.  "EDIT 28 FROM pessoal TO pessoal.rec"   edita o record nmero
         28 da base  "pessoal"  e  coloca o  resultado da  edio  no
         ficheiro "pessoal.rec"

    3.  "EDIT FROM pessoal.rec TO pessoal" edita os records colocados
         previamente  no  ficheiro   "pessoal.rec"  e  re-escreve   o
         resultado da edio na base "pessoal"

.tp 3
^*Formatos:\* consoante o caso, algumas opes podem ser acrescentadas:

Formato 1:  EDIT    TO <base_>

                SCOPE  <lista de "scopes"_>
                FOR    <expresso "for"_>
                FIELDS <lista de campos_>

         TO: indica a origem e o destino dos records a editar (base)

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         FIELDS: lista de campos a editar

         Neste caso, so tomados os seguintes valores "por defeito":

          TO: se no fr  mencionada  nenhuma  base,   usada a  base
              corrente como origem e destino da edio

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                   - a "pesquisa corrente", se houver

                   - se  no houver  "pesquisa  corrente",  todos  os
                     records da base

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  editados todos os campos de cada record

Formato 2:  EDIT    FROM <base_> TO <ficheiro_> OLD

                SCOPE  <lista de "scopes"_>
                FOR    <expresso "for"_>
                FIELDS <lista de campos_>

         FROM: indica a origem dos records a editar (base)

         TO: indica o destino dos records editados (ficheiro)

         OLD:   se o ficheiro ainda no existe, cria-o; se j existe,
         acrescenta no fim

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         FIELDS: lista de campos a editar

         Neste caso, so tomados os seguintes valores "por defeito":

          TO: se no fr  mencionada  nenhuma  base,   usada a  base
              corrente como origem e destino da edio

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                   - a "pesquisa corrente", se houver

                   - se  no  houver "pesquisa  corrente",  todos  os
                     records da base

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  editados todos os campos de cada record

Formato 3:  EDIT    FROM <ficheiro_> TO <base_>

                FIELDS <lista de campos_>

         FROM: indica a origem dos records a editar (ficheiro)

         TO: indica o destino dos records editados (base)

         FIELDS: lista de campos a editar

         Neste caso, so tomados os seguintes valores "por defeito":

          TO:  se no fr  mencionada nenhuma base,    usada a  base
               corrente como origem e destino da edio

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  editados todos os campos de cada record

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

1. EDIT    [ TO <base_> ]

           [ [ SCOPE ]  <lista de "scopes"_> ]
           [ FOR    <expresso "for"_> ]
           [ FIELDS <lista de campos_> ]

2. EDIT    FROM <base_> TO <ficheiro_>

           [ [ SCOPE ]  <lista de "scopes"_> ]
           [ FOR    <expresso "for"_> ]
           [ FIELDS <lista de campos_> ]

                       [ DBAG ]
                       [ NEW | OLD ]

3. EDIT    FROM <ficheiro_> TO <base_>

                           [ [ SCOPE ] <lista de "scopes"_> ]
                           [ FOR    <expresso "for"_> ]
                           [ FIELDS <lista de campos_> ]
           [ DBAG ]

N.B. - A opo NEW: criar um  ficheiro  novo,   sempre  tomada  "por
       defeito";   a  opo  DBAG:  formato do  ficheiro em disco,  
       actualmente a nica que est implementada.        

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   RESTORE SEARCH
   SAVE SEARCH
   SEARCH
.pg
                                                                  ^*>EDT\*

.tp 3
^*Funo:\* o comando EDT chama directamente o EDT do  VMS para editar um
        ficheiro em disco.

.tp 3
^*Exemplos\*

    "EDT procura.cmd" edita o ficheiro em disco "procura.cmd"

.tp 3
^*Sintaxe:\*

   EDT   < ficheiro _>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                                         ^*>QUIT\* ou ^*>EXIT\*

.tp 3
^*Funo:\* os comandos  EXIT  e  QUIT terminam a  sesso interactiva  do
        DBAG, regressando ao sistema operativo.

.tp 3
^*Exemplos:\*

    "EXIT" abandona o DBAG e regressa ao sistema operativo

.tp 3
^*Sintaxe:\*

   EXIT    ou    QUIT

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                          ^*<n_>\*, ^*>RECORD <n_>\* ou ^*>GOTO <n_>\*

.tp 3
^*Funo:\* os comandos <n_>,  RECORD <n_>  e  GOTO <n_>  tornam  corrente o
        record nmero n da base corrente.

.tp 3
^*Exemplo:\*

     "12", "RECORD 12" e "GOTO 12" tornam corrente o record nmero 12
      da base corrente

^*Sintaxe\* ( [ ] - facultativo ):

   [ RECORD ] <n_>    ou    GOTO <n_>


.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                                            ^*>_?\* ou ^*>HELP\*

^*Funo:\* os comandos HELP e _? do ajuda sobre os comandos interactivos
        do DBAG.

.tp 3
^*Exemplos:\*

     1.  "HELP zero" ou "? zero" apresentam no terminal uma descrio
          das funes e possibilidades de utilizao do comando ZERO

     2.  "HELP" d uma lista de todos os comandos do DBAG

     3.  "HELP _* TO help.doc"  escreve  uma  explicao de  todos  os
          comandos do DBAG no ficheiro em disco "help.doc"

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

   HELP ou _?   [ _* | <comando_> ]   [ TO  <ficheiro_> ]

.tp 3
^*Observaes:\*

    1.  Se for indicado um "_*",   mostrada uma descrio de todos os
        os comandos do DBAG.

    2.  A opo TO indica que o resultado do HELP dever ser  escrito
        no ficheiro em lugar de no terminal.

.tp 3
^*Comandos relacionados:\*
.pg
                                                                ^*>INDEX\*

^*Funo:\* o comando  INDEX  aplica-se a um campo duma base,  permitindo 
        que seja acedido atravs de uma tabela de ndices.

   A  declarao dum campo como "index" pode traduzir-se  numa  maior
   rapidez de pesquisa  de  records na  base  correspondente,  se  na
   condio de  pesquisa esse campo  figurar  numa condio lgica de
   "igualdade" ou de "desigualdade".

.tp 3
^*Extenso:\*

      No caso de campos do tipo caracter  (texto),  existe uma  opo
      complementar (KWIC) de indexao:  por palavras-chave, supostas
      separadas por espaos.

      Esta extenso possibilita a pesquisa de records em cujos campos
      (de tipo caracter)  exista pelo menos uma  "palavra" duma  dada
      lista.

.tp 3
^*Exemplos:\*

     1.  "INDEX  ON  FIELD  data__nasc"  declara o  campo data__nasc da
          base corrente como campo indexado.

     2.  "INDEX  KWIC  ON FIELD  nome"  declara o campo nome da  base
          corrente como campo indexado por palavras-chave.

.tp 3
^*Sintaxe\* ( [ ] - facultativo):

   INDEX   [ KWIC ]

           [ DATABASE <base_> ]    [ ON [ FIELDS ] <lista de campos_> ]

.tp 3
^*Observaes:\*

   1.  A opo DATABASE indica sobre que base actua o comando.

   2.  Se no fr mencionada nenhuma lista de campos,  o DBAG,  antes
       de indexar cada um dos campos da base, pede confirmao.

   3.  A opo KWIC define os campos em  causa  como campos indexados
       por palavras-chave. Exemplo:

          - o comando "INDEX KWIC ON FIELD nome" torna o campo nome
            pesquisvel por palavras-chave

          - o comando  "DISPLAY  ALL  FOR  nome  =  'Lus', 'Antnio'
            mostra todos os records da base em cujo campo nome exista
            pelo menos um dos textos 'Lus' ou 'Antnio'.

.tp 3
^*Comandos relacionados:\*

   NOINDEX
   REINDEX
   SET INDEXES
.pg
                                                                 ^*>JOIN\*

.tp 3
^*Funo:\* o comando JOIN cria  uma  nova base a partir de duas bases j
        existentes, "cruzando-as".

   Este  comando  permite  "cruzar"  records  de duas bases,  isto :
   primeiro,  associa um ou  mais  records da primeira base com um ou
   mais records da segunda,  segundo o critrio escolhido;  a seguir,
   para cada  "par"  de  records  assim obtidos  gera um novo  record
   constitudo por todos ou  apenas alguns dos campos de cada base de
   origem; finalmente, acrescenta esse record na nova base.

.tp 3
^*Exemplos:\*

    1.  "JOIN   pessoal  WITH  moradas  TO  pessoal__m  JFOR  cdigo =
         cdigo__m"  associa todos os records da base "pessoal" com os
         records da base "moradas",  segundo  o critrio de igualdade
         entre os campos  CDIGO e CDIGO__M da primeira e da segunda,
         numa nova base de nome "pessoal__m".

    2.  "JOIN  pessoal  FIELDS  sexo, nome  WITH  moradas FIELDS rua,
         localidade, cod__postal TO pessoal__m  JFOR cdigo = cdigo__m"
         s  diferente do exemplo 1., porque  restringe os  campos a
         incluir na  nova  base a 2  campos  da primeira (sexo, nome)
         mais 3 campos da segunda (rua, localidade, cod__postal).

    3.  "JOIN  pessoal  ALL FOR  sexo = 'M' WITH moradas TO pessoal__m
         JFOR cdigo  =  cdigo__m",   tambm uma variante do exemplo 
         1., em que o comando JOIN vai actuar apenas sobre os records
         da base "pessoal" cujo campo SEXO esteja preenchido com "M".

     Como se depreende dos exemplos,  no comando  JOIN h sempre duas
     possibilidades: seleccionar nas bases de origem os records sobre
     que se quer fazer o "JOIN",  e restringir os campos a incluir na
     nova base.

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

1. JOIN    [ DATABASE ] <base1_>

               [ [ SCOPE ]  <lista de "scopes"_> ]
               [ FOR    <expresso "for"_> ]
               [ FIELDS <lista de campos_> ]
 
   WITH    [ DATABASE ] <base2_>

               [ [ SCOPE ]  <lista de "scopes"_> ]
               [ FOR    <expresso "for"_> ]
               [ FIELDS <lista de campos_> ]

   TO      [ DATABASE ] <base3_>

               [ JFOR  <expresso "for"_> ]
 
.tp 3
^*Observaes:\*

    1.  As bases a "cruzar" so a primeira mencionada no JOIN (base1)
        e a que se segue  opo WITH (base2).

    2.  A nova base a criar  a que se segue  opo TO (base3).

    3.  As opes  SCOPE e  FOR seleccionam records da  base a que se
        referem; a opo FIELDS restringe, para a base respectiva, os
        campos a copiar para a nova base.

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         FIELDS: lista de campos a copiar

         Neste caso, so tomados os seguintes valores "por defeito":

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                   - a "pesquisa corrente" da base, se houver

                   - se  no houver  "pesquisa  corrente",  todos  os
                     records da base

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  copiados todos os campos de cada record

    4.  A  opo  JFOR define o critrio propriamente dito do "JOIN", 
        ou seja, decide que records duma e doutra base sero reunidos
        na nova base.

         JFOR: expresso lgica validada para os records considerados
               em cada uma das bases de origem

         Neste caso,  tomado o seguinte valor "por defeito":

          JFOR:   se no for mencionado nenhum JFOR, so consideradas
                  TODAS  as  combinaes  possveis  entre os records
                  seleccionados em cada uma das bases de origem (!!!)

    5.  A  estrutura da nova base adopta as caractersticas gerais da
        primeira,  e os campos da nova base  adoptam a  definio dos
        campos de origem.  No  caso de haver campos com o mesmo  nome
        (mnemnica) para copiar,  o DBAG pede novos nomes para  esses
        campos  de  modo a no  haver  na  nova base nomes de  campos
        duplicados.

.tp 3
^*Comandos relacionados:\*

   SEARCH
   RESTORE SEARCH
.pg
                                                                 ^*>KILL\*

.tp 3
^*Funo:\* o comando KILL suprime records duma base.

        N.B. - O contedo dos records suprimidos  DEFINITIVAMENTE
               eliminado da base.

.tp 3
^*Exemplos:\*

    1.  "KILL 125, 68" suprime os records nmero  9, 68 e 125 da base
         corrente

    2.  "KILL 12 DATABASE pessoal" suprime o record nmero 12 da base
         "pessoal"

    3.  "KILL ALL FOR sexo = 'M'" suprime,  de entre todos os records
         da base corrente,  aqueles cujo campo SEXO esteja preenchido
         com "M".

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   KILL   [ DATABASE <base_> ]

          [ [ SCOPE ]  <lista de "scopes"_> ]
          [ FOR     <expresso "for"_> ]

.tp 3
^*Observaes:\*

   1.  Como  outros comandos de carcter  "destructivo",  KILL  exige
       normalmente uma confirmao. Pode suprimir-se a necessidade de
       confirmao (!!!) atravs do comando SET CONFIRM OFF.

   2.  Opes:

         DATABASE: especifica de que base se trata

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         So tomados os seguintes valores "por defeito":

          DATABASE: se no fr  mencionada  nenhuma base,    usada a
                    base corrente

          SCOPE:    se no for mencionado nenhum "scope",    usada a
                    "pesquisa  corrente";  se  no  houver  "pesquisa
                    corrente",  obrigatrio indicar um "scope"

   3.  Se numa base foram  suprimidos  records,  geralmente  os  seus
       nmeros so re-utilizados quando se  carregarem  novos records
       na base. Por exemplo, se uma base tiver um total de 20 records
       e tiverem sido suprimidos os records nmero 12 e 14,  em geral
       os novos records desta base  (comando APPEND)  ficaro  com os
       nmeros 12, 14, 201, 202, etc.

       No entanto, se no desejar re-usar eses nmeros, pode modificar
       essa caracterstica da base atravs do comando MODIFY STRUCTURE.

.tp 3
^*Comandos relacionados:\*

   SET CONFIRM
   MODIFY STRUCTURE 
.pg
                                                     ^*>MODIFY STRUCTURE\*

.tp 3
^*Funo:\* o comando MODIFY STRUCTURE modifica a estrutura duma base.

   Este comando utiliza o editor do DBAG para introduzir modificaes
   na estrutura duma base.

.tp 3
^*Exemplos:\*

     1.  "MODIFY STRUCTURE" modifica a estrutura da base corrente.

     2.  "MODIFY STRUCTURE  TO  pessoal"  modifica a estrutura da base
          "pessoal".

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   MODIFY STRUCTURE   [ TO <base_> ]

.tp 3
^*Observaes:\*

   1.  Se a base estiver vazia,  qualquer  das  suas  caractersticas
       pode ser modificada.

   2.  Se a base j tiver dados carregados, apenas as caractersticas
       da base que no possam entrar em  conflito  com os  records j
       existentes podem ser modificadas.

       Por exemplo, podem sempre ser modificados a descrio geral da
       base ou dos campos, os nomes (mnemnicas) dos campos,  os seus
       valores por "defeito",  os seus  valores  mximo  e  mnimo se
       for para os "alargar", etc.

   3.  Se for preciso modificar as outras  caractersticas duma  base
       que j tenha records,  estes  devero ser  salvaguardados  num
       ficheiro em disco antes de proceder ao "esvaziamento" da base.
       Uma vez a estrutura modificada,  os records salvaguardados  no
       ficheiro podero ser re-carregados na base.

       A sucesso de comandos ser neste caso a seguinte:

            i. APPEND ALL FROM <base_> to <ficheiro_>
               (descarrega todos os records da base no ficheiro)

           ii. ZERO DATABASE <base_>
               (suprime todos os records da base)

          iii. MODIFY STRUCTURE TO <base_>
               (modifica a estrutura da base)

           iv. APPEND FROM <ficheiro_> TO <base_>
               (re-carrega todos os records na base)

.tp 3
^*Comandos relacionados:\*
.pg
                                                              ^*>NOINDEX\*

^*Funo:\* o comando NOINDEX  retira a qualquer campo indexado duma base
        essa caracterstica e suprime a respectiva tabela de ndices.

   A nica consequncia do uso  deste  comando  pode  ser  uma  menor
   rapidez de pesquisa de records na base correspondente  (para alm,
   obviamente, de suprimir do disco as tabelas de ndices).

.tp 3
^*Exemplo:\*

        "NOINDEX ON FIELD data__nasc"  retira  ao  campo data__nasc  da
         base corrente a caracterstica de campo indexado.  Note-se que
         esta pode ser  posicionado em  qualquer  altura  pelo  comando
         inverso (INDEX).

.tp 3
^*Sintaxe\* ( [ ] - facultativo):

   NOINDEX  [ DATABASE <base_> ]   [ ON [ FIELDS ] <lista de campos_> ]

.tp 3
^*Observaes:\*

   1.  A opo DATABASE indica sobre que base actua o comando.

   2.  Se no fr mencionada nenhuma lista de campos,  o DBAG,  antes
       de  desindexar  cada  um  dos  campos indexados da base,  pede
       confirmao.

.tp 3
^*Comandos relacionados:\*

   INDEX
   SET INDEXES
.pg
                                                                 ^*>NEWS\*

^*Funo:\* o comando  NEWS mostra as "novidades" do DBAG consideradas de
        interesse geral, por exemplo novos comandos ou facilidades.
         
.tp 3
^*Exemplos:\*

     1.  "NEWS" d uma lista de todas as "novidades"

     2.  "NEWS _* TO news.doc" escreve no ficheiro em disco "news.doc"
          todas as "novidades" 
 
     3.  "NEWS bugs" mostra no terminal os "bugs" (erros) conhecidos
          e ainda no corrigids no funcionamento do DBAG

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

   NEWS   [ _* | <novidade_> ]   [ TO  <ficheiro_> ]

.tp 3
^*Observaes:\*

    1.  Se for indicado um "_*", so mostradas todas as "novidades".

    2.  A opo TO indica que o resultado do comando NEWS dever ser
        escrito no ficheiro em lugar de no terminal.

.tp 3
^*Comandos relacionados:\*
.pg
                                                                ^*>PAUSE\*

.tp 3
^*Funo:\* o comando PAUSE provoca uma pausa na  "execuo" dum ficheiro
        de comandos.

   Essa pausa pode ter dois seguimentos,  escolha do utilizador:

      - passar para o comando seguinte do ficheiro de comandos

      - suspender a "execuo" do ficheiro de comandos

.tp 3
^*Sintaxe\*:

   PAUSE

.tp 3
^*Observaes:\*

    1.  Este comando pode ser intercalado entre quaisquer linhas dum
        ficheiro de comandos,  permitindo seguir a execuo  de cada
        comando lido do ficheiro.  Por exemplo,  se se quizer  fazer
        uma pesquisa seguida duma escrita dos records  seleccionados
        num ficheiro, pode-se  criar um ficheiro de comandos com  as
        linhas seguintes:

           OPEN pessoal
           SEARCH ALL FOR sexo = 'M'
           PAUSE
           DISPLAY TO pessoal.m

        e "execut-lo" atravs do comando @nome-do-ficheiro. Perante
        a pausa, sabendo quantos records foram seleccionados, poder
        optar-se por criar ou no o ficheiro de registo "pessoal.m"


    2.  Pode obter-se o mesmo efeito atravs do comando  "SET  PAUSE
        ON", que provoca uma pausa comando a comando sem ser preciso
        intercalar comandos de PAUSE no prprio ficheiro de comandos.

.tp 3
^*Comandos relacionados:\*

   @
   SET PAUSE
.pg
                                                         ^*>UP\* ou ^*>RECALL\*

.tp 3
^*Funo:\* os comandos  UP  e  RECALL  possibitam aceder aos ltimos  20
        comandos interactivos dados ao DBAG.

   Estes comandos  utilizam o  editor do  DBAG,  adaptado  edio  e
   "execuo" dos 20 ltimos comandos interactivos.

.tp 3
^*Exemplos:\*

    "RECALL"  torna presente para  edio/"execuo" o ltimo comando
     interactivo dado ao DBAG

.tp 3
^*Sintaxe:\*

   RECALL  ou  UP   [ <comando_> ]

.tp 3
^*Observaes:\*

    1.  O comando "chamado" por RECALL ou UP pode ser indicado, quer
        pelo seu nmero no "buffer" de comandos do DBAG,  quer dando
        o seu comeo. Exemplos:

          RECALL 10      acede ao comando nmero 10 do "buffer"

          RECALL DISP    acede ao ltimo comando comeado por DISP

    2.  Para saber que comandos existem  no  "buffer",  basta dar  o
        comando DISPLAY COMMANDS.

.tp 3
^*Comandos relacionados:\*

   DISPLAY COMMANDS
   RESTORE COMMANDS
   SAVE COMMANDS
.pg
                                                              ^*>REINDEX\*

^*Funo:\* o comando  REINDEX  recalcula os ndices para qualquer  campo
        indexado duma base.

   Os campos declarados como campos indexados podem ser  desactivados
   temporariamente (comando SET INDEXES OFF) para tornar mais rpidas
   as operaes de acrescento ou  modificao massiva de records duma   
   base (comandos APPEND e REPLACE).

   O comando REINDEX  a maneira mais simples de repor os ndices num
   estado utilizvel,  uma vez re-activados pelo comando  SET INDEXES
   ON.

.tp 3
^*Exemplo:\*

       "REINDEX"   re-calcula  as  tabelas  de  ndices  dos   campos
        indexados da base corrente, pedindo confirmao campo a campo.

.tp 3
^*Sintaxe\* ( [ ] - facultativo):

   REINDEX  [ DATABASE <base_> ]   [ ON [ FIELDS ] <lista de campos_> ]

.tp 3
^*Observaes:\*

   1.  A opo DATABASE indica sobre que base actua o comando.

   2.  Se no fr mencionada nenhuma lista de campos,  o DBAG,  antes
       de re-indexar cada um  dos  campos indexados  da  base,   pede
       confirmao.

.tp 3
^*Comandos relacionados:\*

   APPEND
   INDEX
   NOINDEX
   REPLACE
   SET INDEXES
.pg
                                                              ^*>REPLACE\*

.tp 3
^*Funo:\* o  comando  REPLACE  modifica  records  duma  base  a  partir
        dum ficheiro em disco.

   Este comando modifica directamente records duma base a partir  dum
   ficheiro em disco sem chamar o editor do DBAG, isto , limita-se a
   substituir nos records correspondentes da base os valores  de cada
   campo lido do ficheiro.

.tp 3
^*Exemplos:\*

    1.  "REPLACE FROM pessoal.rec TO pessoal" l valores de campos do
         ficheiro  "pessoal.rec" e impe esses  valores  aos  records
         e campos correspondentes na base "pessoal".

    1'. "REPLACE FROM pessoal.rec TO pessoal FIELDS nome" limita-se a
         ler  os  valores do  campo  NOME  que  existam  no  ficheiro
         "pessoal.rec"  e  impe  esses  valores  ao  mesmo campo dos
         records correspondentes na base "pessoal".

.tp 3
^*Sintaxe\* ( [ ] - facultativo ):

   REPLACE      FROM <ficheiro_>  [ DBAG ]

              [ TO <base_> ]

              [ FIELDS <lista de campos_> ]

N.B. - A opo DBAG:  formato do ficheiro em disco,   actualmente  a
       nica que est implementada.        

.tp 3
^*Observaes:\*

       Significado das vrias opes:

         FROM: indica a origem dos valores dos campos (ficheiro)

         TO: indica o destino dos valores dos campos (base)

         FIELDS: lista de campos a considerar

         Neste caso, so tomados os seguintes valores "por defeito":

          TO:  se no fr  mencionada nenhuma base,    usada a  base
               corrente como destino dos valores dos campos

          FIELDS: se no for mencionada nenhuma  lista de campos, so
                  considerados todos os campos lidos do ficheiro

.tp 3
^*Comandos relacionados:\*

.pg
.b 3
                                                              ^*>RESTORE\*

.tp 3
^*Funo:\* o comando RESTORE repe um dos  "contextos"  do DBAG a partir
        dum ficheiro em disco,  no qual dever ter sido anteriormente
        guardado (pelo comando SAVE).

Assim, pode ser usado para repor:

    1.  A "pesquisa corrente" posicionada pelo comando SEARCH.

    2.  O "sort corrente" posicionado pelo comando SORT.

    3.  O "display corrente" posicionado pelo comando DEFINE DISPLAY.

    4.  O "buffer" de comandos do DBAG.

.tp 3
^*Exemplos:\*

    1.  "RESTORE SEARCH FROM salvo.src" repe a  "pesquisa  corrente"
         da base corrente a partir do ficheiro "salvo.src".

    2.  "RESTORE SORT FROM salvo.srt"  repe  o  "sort corrente"  da 
         base corrente a partir do ficheiro "salvo.srt".

    3.  "RESTORE DISPLAY FROM salvo.dsp" repe o  "display corrente"
         da base corrente a partir do ficheiro "salvo.dsp".

    4.  "RESTORE COMMANDS  FROM  salvo.cms"  repe  o  "buffer"  de
         comandos do DBAG a partir do ficheiro "salvo.cms".

.tp 3
^*Sintaxe\* ( | - alternativo ):

   RESTORE    SEARCH  |  SORT  |  DISPLAY  |  COMMANDS

              FROM  <ficheiro_>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   DEFINE DISPLAY
   SAVE
   SEARCH
   SORT
.pg
.b 3
                                                                 ^*>SAVE\*

.tp 3
^*Funo:\* o  comando  SAVE  guarda  num   ficheiro   em  disco  um  dos
        "contextos"  do  DBAG que  pode  ser  reposto  posteriormente
         (comando RESTORE).

Assim, pode ser usado para guardar num ficheiro em disco:

    1.  A "pesquisa corrente" posicionada pelo comando SEARCH.

    2.  O "sort corrente" posicionado pelo comando SORT.

    3.  O "display corrente" posicionado pelo comando DEFINE DISPLAY.

    4.  O "buffer" de comandos do DBAG.

.tp 3
^*Exemplos:\*

    1.  "SAVE SEARCH TO salvo.src"  guarda no ficheiro  "salvo.src" a
         "pesquisa corrente" da base corrente

    2.  "SAVE SORT TO salvo.srt"  guarda no  ficheiro  "salvo.srt"  o
         "sort corrente" da base corrente

    3.  "SAVE DISPLAY TO salvo.dsp" guarda no ficheiro  "salvo.dsp" o
         "display corrente" da base corrente

    4.  "SAVE COMMANDS TO salvo.cms" guarda no ficheiro "salvo.cms" o
         "buffer" de comandos do DBAG (os ltimos 20 comandos)

.tp 3
^*Sintaxe\* ( | - alternativo ):

   SAVE    SEARCH  |  SORT  |  DISPLAY  |  COMMANDS

           TO  <ficheiro_>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*

   DEFINE DISPLAY
   RESTORE
   SEARCH
   SORT
.pg
                                                               ^*>SEARCH\*

.tp 3
^*Funo:\* o comando  SEARCH  faz  uma  seleco nos records duma base e
        os nmeros dos records  seleccionados  so  memorizados  como       
       "pesquisa corrente" dessa base.

.tp 3
^*Exemplos:\*

    1.  "SEARCH  ALL" posiciona  como  "pesquisa  corrente"  da  base
         corrente todos os seus records

    1'. "SEARCH  ALL  DATABASE  pessoal"  posiciona  como   "pesquisa
         corrente" da base "pessoal" todos os records dessa base

    2.  "SEARCH  ALL   FOR  sexo  =  'M'"  posiciona  como  "pesquisa
         corrente" da base corrente todos os records dessa  base  que
         tenham o campo SEXO preenchido com "M".

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

   SEARCH     [ DATABASE <base_> ]

            [ [ SCOPE ]  <lista de "scopes"_> ]

              [ FOR      <expresso "for"_>   ]

.tp 3
^*Observaes:\*

       Significado das vrias opes:

         DATABASE: especifica de que base se trata

         SCOPE: lista de "scopes" (conjunto de records) a considerar

         FOR:   expresso lgica validada para os records do SCOPE

         So tomados os seguintes valores "por defeito":

          DATABASE: se no fr  mencionada  nenhuma base,    usada a
                    base corrente

          SCOPE: se no for mencionado nenhum "scope",   usado,  por
                 esta ordem:

                   - a prpria "pesquisa corrente" da base, se houver

                   - se  no houver  "pesquisa  corrente",  todos  os
                     records da base

.tp 3
^*Comandos relacionados:\*

   CANCEL SEARCH
   RESTORE SEARCH
.pg
                                                                  ^*>SET\*

.tp 3
^*Funo:\* o comando SET permite modificar vrios parmetros do sistema.

.tp 3
^*Exemplos:\*

    1.  "SET NAMES OFF" suspende a apresentao dos nomes dos  campos
         na visualizao dos dados, isto , s aparecem os  contedos
         dos campos, no as suas mnemnicas.

    2.  "SET WIDT TO 132" muda a largura do "ecran" para 132 colunas.

    3.  "SET ALTERNATE TO dbag.log" regista no ficheiro  "dbag.log" o
         que se passar na sesso interactiva.

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):

1. SET   <parmetro>    ON | OFF

2. SET   <parmetro>    [ TO ]   <valor>


   - Lista dos parmetros que podem ser posicionados ON ou OFF:

     ALTERNATE   Se estiver ON,  o DBAG  passa  a  registar a  sesso
                 interactiva no ficheiro correntemente declarado para
                 tal pelo comando SET ALTERNATE TO <valor_>.
                 Estado "por defeito": OFF

     BELL        Se estiver ON,  o  editor do DBAG "apita" sempre que
                 se tente preencher um campo com um valor invlido ou
                 que no caiba no espao previsto.
                 Estado "por defeito": ON

     CARRY       Se estiver ON, o comando APPEND  transporta os dados
                 do record corrente para o record seguinte.
                 Estado "por defeito": OFF

     COLON       Se estiver ON,  o editor do DBAG enquadra cada campo
                 a editar com o caracter correntemente declarado para
                 tal pelo comando SET COLON TO <valor_>.
                 Estado "por defeito": ON

     CONFIRM     Se estiver OFF, alguns dos comandos interactivos NO
                 PEDEM  CONFIRMAO  (comandos  JOIN,  KILL,  ZERO  e
                 DELETE)
                 Estado "por defeito": ON

     ECHO        Se estiver ON,  o desenrolar de execuo de comandos
                 a partir dum  ficheiro de  comandos  visualizado no
                 terminal.
                 Estado "por defeito": ON

     HEADER      Se estiver ON, o DBAG mostra na  primeira  linha  do
                 "ecran" alguns  indicadores  gerais:  base,  record,
                 pesquisa e "sort" correntes.
                 Estado "por defeito": ON

     INDEXES     Se estiver OFF, o sistema de indexao de campos NO
                  activado,  ou seja,  as correspondentes tabelas de
                 ndices no so nem utilizadas nem actualizadas.
                 Estado "por defeito": ON

     INTENSITY   Se estiver ON,  o editor do DBAG apresenta os campos
                 a editar em "reverse video".
                 Estado "por defeito": ON

     NAMES       Se estiver ON,  os nomes  (memnicas) dos campos so
                 mostrados sempre que haja visualizao de dados.
                 Estado "por defeito": ON

     PADDING     Se estiver ON, o editor do DBAG mostra a parte ainda
                 no preenchida de cada campo  como  se  contivesse o
                 caracter  correntemente  declarado  para   tal  pelo
                 comando SET PADDING TO <valor_>.
                 Estado "por defeito": ON

     RAW         Se estiver ON, os campos so mostrados separados por
                 um espao em branco sempre que haja visualizao  de
                 dados.
                 Estado "por defeito": OFF

     SCREEN      Se estiver ON,  a manipulao da estrutura duma base
                  sempre feita atravs do  editor do DBAG  (comandos
                 CREATE, DISPLAY STRUCTURE e MODIFY STRUCTURE).
                 Estado "por defeito": OFF

     TALK        Se estiver OFF,  o DBAG  fica  "mudo",  isto ,  no
                 mostra nada no  terminal,  excepto durante  qualquer
                 utilizao do seu editor.
                 Estado "por defeito": ON

     VERIFY      Se estiver ON,  qualquer manipulao de records duma
                 base  PRECEDIDA duma verificao dos mesmos,  sendo
                 portanto previamente excluidos eventuais records que
                 tenham sido eliminados atravs do comando KILL.
                 Estado "por defeito": OFF


   - Lista dos parmetros a que pode ser atribuido um valor:

     ALTERNATE   Atribui o nome do ficheiro de registo da sesso.
                 Valor "por defeito": 'DBAG.ALT'
 
     COLON       Atribui o delimitador a ser  usado  pelo  editor  do
                 DBAG na apresentao de campos.
                 Valor "por defeito": ':'

     PADDING     Atribui o caracter a ser usado pelo editor  do  DBAG 
                 no pr-preenchimento dos campos.
                 Valor "por defeito": '__'
 
     PROMPT      Atribui o "prompt" do DBAG.
                 Valor "por defeito": 'BAG_>'
 
     WIDTH       Atribui a largura do "ecran" (80 ou 132).
                 Valor "por defeito": 80

.tp 3
^*Observaes:\*

   1.  Todos os parmetros do DBAG tm um estado  ou  um  valor  "por
       defeito".

   2.  Normalmente, o utilizador apenas  modifica  os  parmetros que
       influenciam a visualizao dos dados  ( SET NAMES e SET RAW ),
       que aumentam ou diminuem a largura do "ecran" ( SET WIDTH ) ou
       que alteram o modo exterior de funcionamento do editor do DBAG
       ( SET BELL, SET COLON, SET INTENSITY e SET PADDING ).

   3.  Dos restantes parmetros, salientam-se os seguintes, pela  sua
       delicadeza ou implicao negativa na "performance" do DBAG:

         INDEXES - "SET INDEXES OFF" suspende temporariamente  todo o
                    sistema de indexao  do  DBAG:  apenas deve  ser
                    usado para acelerar o carregamento ou modificao
                    massivos de records duma base  ( comandos  APPEND 
                    ou REPLACE ),  tendo o cuidado de  RE-ACTIVAR  em
                    seguida o sistema de indexao e de RE-INDEXAR  a 
                    base afectada (comandos SET INDEXES ON e REINDEX)

         CONFIRM - "SET CONFIRM OFF"  suspende a  obrigatoriedade  de 
                    confirmar,  quer o comando JOIN  (que pode  criar
                    uma nova base de dimenso  inesperada),  quer  os
                    comandos KILL, ZERO e DELETE  (supresso de dados
                    ou eliminao total duma base)

         VERIFY  - "SET VERIFY ON" tem como consequncia  que  TODA E
                    QUALQUER manipulao de records ser precedida de
                    uma verificao prvia relativamente a  eventuais
                    records eliminados pelo comando KILL.
                    Por exemplo,  o comando  DISPLAY  ALL  far  essa
                    verificao antes de comear a mostrar os records
                    da base,  ou seja,  o tempo de  execuo  passar 
                    para o dobro.

.tp 3
^*Comandos relacionados:\*
.pg
                                                                 ^*>SORT\*

^*Funo:\* o  comando  SORT  introduz  uma  ordenao  nos  records   da
        "pesquisa corrente", ou seja, permite a sua visualizao duma
        forma ordenada.

.tp 3
^*Exemplos:\*

     1.  "SORT  ON  data__nasc" ordena a  "pesquiza corrente"  da base
          corrente pelo campo DATA__NASC, ordem ascendente.

     2.  "SORT  DATABASE  pessoal  ON  data__nasc d, cdigo" ordena  a
          "pesquiza corrente" da base "pessoal" pelo campo DATA__NASC,
          ordem descendente, e pelo campo CDIGO, ordem ascendente.

.tp 3
^*Sintaxe\* ( [ ] - facultativo):

   SORT   [ DATABASE <base_> ]    ON  <lista de ordenao_>

.tp 3
^*Observaes:\*

   1.  A opo DATABASE indica sobre que base actua o comando.

   2.  A lista de ordenao  uma lista de  campos  da base,  podendo
       cada campo ser acompanhado da letra A (ordem ascendente) ou  D
       (ordem descendente). Se a ordem no fr especificada,  o  DBAG
       considera ascendente.

.tp 3
^*Comandos relacionados:\*

   RESTORE SORT
   SAVE SORT
   SEARCH
.pg
                                                                  ^*>TPU\*

.tp 3
^*Funo:\* o comando TPU chama directamente o TPU do  VMS para editar um
        ficheiro em disco.

.tp 3
^*Exemplo:\*

    "TPU procura.cmd" edita o ficheiro em disco "procura.cmd"

.tp 3
^*Sintaxe:\*

   TPU   < ficheiro _>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                                          ^*>OPEN\* ou ^*>USE\*

.tp 3
^*Funo:\* os comandos OPEN ou USE "abrem" uma base, isto , tornam essa
        base corrente.

.tp 3
^*Exemplo:\*

    "OPEN pessoal" torna corrente a base "pessoal"

.tp 3
^*Sintaxe\* ( [ ] - facultativo, | - alternativo ):
xxy
   USE   [ DATABASE ] <base_>   [ UPDATE | NOUPDATE ]

.tp 3
^*Observaes:\*

   1.  A opo DATABASE indica sobre que base actua o comando.

   2.  As opces  UPDATE  (abrir a base para modificao) e  NOUPDATE
       (abrir a base para leitura) podem no ser usadas,  pois o DBAG
       re-abre automaticamente a base para "update" se fr necessrio

.tp 3
^*Comandos relacionados:\*

   CLOSE
.pg
                                                                  ^*>VMS\*

.tp 3
^*Funo:\* o comando  VMS   permite  executar  automaticamente  qualquer
        comando ao sistema operativo VMS.

.tp 3
^*Exemplo:\*

    "VMS type bases.lst" executa o comando ao VMS  "type bases.lst" e
     volta ao DBAG aps a execuo desse comando.

.tp 3
^*Sintaxe:\*

   VMS   < comando ao VMS _>

.tp 3
^*Observaes:\*

.tp 3
^*Comandos relacionados:\*
.pg
                                                                 ^*>ZERO\*

.tp 3
^*Funo:\* o comando ZERO elimina todos os records duma base.

        N.B. - O contedo de TODOS os records da base 
               DEFINITIVAMENTE eliminado.

.tp 3
^*Exemplo:\*

    "ZERO DATABASE pessoal" suprime os  records  da  base  "pessoal",
     depois de confirmao

.tp 3
^*Sintaxe:\*

   ZERO   DATABASE <base_>

            ou

   ZERO   FILES <base_>

.tp 3
^*Observaes:\*

   1.  Como outros comandos de carcter  "destructivo",  ZERO  exige
       normalmente uma confirmao.  Pode  suprimir-se a necessidade
       de confirmao (!!!) atravs do comando SET CONFIRM OFF.

   2.  As opes DATABASE e FILES tm aqui o mesmo uso: designar sem
       ambiguidade a base cujos records se quer suprimir.

.tp 3
^*Comandos relacionados:\*

   SET CONFIRM
.f
.j
.ap
.no keep
