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

Comandos

&

Propósito

Máscara de Edição para & valores numéricos.

Recebendo somente números, preenchendo com zeros à esquerda ou deixando brancos se o campo estiver vazio.

Exemplos

prog

tel = space (10)

@ 10,20 say "telefone..."      get tel pic (&&&)  &&& - &&&&

read

CANCEL

Propósito

Encerrar um programa retornando o controle ao processo chamador.

Sintaxe

CANCEL

QUIT [(<numero>)]

Argumentos

<numero>    status do término do programa.

Utilização

Na sua execução fecha todos os arquivos abertos e o banco de dados utilizado.

Através dos comando QUIT é possível retornar um código (para o sistema operacional) que representará o status de fim do programa.

Se o programa foi invocado por um outro programa escrito em OPUS, esse código pode ser capturado pela função DBERR(). Sob o sistema operacional UNIX, se um processo escrito em outra linguagem houver invocado um programa desenvolvido em OPUS, o status do comando QUIT estará armazenado na variável ambiental $?.

O comando CANCEL sempre retorna 0 (zero).

Exemplos

O exemplo a seguir mostra a utilização dos comandos CANCEL e QUIT retornando um código de erro.

IF tudobem    && tudo bem é uma variável lógica

  CANCEL

ELSE

  QUIT(1)

ENDIF

Consulte

EXIT, FUNCTION, PROCEDURE, PROGRAM, RETURN, RUN, SLEEP e DBERR( ).

DECLARE LONG

Declare Long <Vetor>[<numero>]=<expressão>

A palavra LONG indica que a dimensão do vetor <numero> pode ser maior que 65535.

Vetor pode ser acessado ou modificado utilizando os comandos STORE, GET, ACEITE, INCR, DECR, mas as rotinas AFILL, ASORT, etc... não podem indicar este vetor.

Exemplos

declare long vetopt[70000]=space (70).

Consulte

DECLARE, STORE, GET, INCR, DECR, AFILL( ), ASORT( ).

Cláusula DYNAMIC

Propósito

Serve para alocar uma variável dinamicamente, sem tamanho pré-definido.

A variável pode ser usada nos comandos MEMOGET, MEMOPUT, MEMOREAD, MEMOWRIT, MLCOUNT, MEMOLINE, MEMOEDIT, MEMOSAVE, MEMOSEEK, LEN, ENCRYPT, ?, + (Concatenação), = (Atribuição), TRIM, EMPTY, UPPER, LOWER, WORD, STRTRAN, SUBSTR, LEFT, RIGHT, LTRIM, ALLTRIM, HTML_GET, HTML_PUT, REPLACE.

As variáveis dinâmicas podem ser passadas como parâmetros.

A cláusula DYNAMIC pode ser associada com os comandos Static, Public e Private.

Sintaxe

STATIC DYNAMIC <VARIAVEL> [(C)]

Argumentos

Variável – Nome da variável de trabalho.

Exemplos

private dynamic stor(c) 

public dynamic stor(c)

static dynamic stor(c)

Consulte

PRIVATE, PUBLIC, STATIC.

EMPTY

Propósito

Esvaziar todo um arquivo.

Sintaxe

EMPTY

ZAP

Utilização

Esvaziar todo o conteúdo do arquivo selecionado.

Exemplos

prog

database EXEMPLO 1 a 2

use PESSOA

empty    && Irá esvaziar o arquivo PESSOA.

Consulte

ZAP.

GO [BYTE]

Observações

A opção BYTE foi criada para posicionar em arquivos externos, mesmo tipo L ou M. <expN> indica o byte a posicionar.

No caso de arquivos externos tipo S ou R, a <expN> corresponde ao número do registro menos 1 vezes o tamanho do registro.

No caso de arquivos externos tipo L ou M, <expN> corresponde a soma dos tamanhos dos registros mais 1 (UNIX) ou mais 2 (DOS) anteriores ao registro.

Exemplos

use*

  abc s len(20)

  a u20

enduse

go 2    && equivale a go byte 20

use*

  abc 1 len(20)

  a u20

enduse

decl posi[3]=0

locate

p=0

for i=1 to 3

  posi[i]=p

  p=p+len(a)+2

  continue

next

go byte posi[2]         && posiciona no segundo registro 

REINDX

Propósito

Re-indexar um arquivo externo.

Sintaxe

REINDEX

Argumentos

É utilizado para reorganizar o índice de um arquivo externo que está sendo usado. Deve ser utilizado quando a função BADINDEX( ) retornar verdadeiro (.T.).

Exemplos

PROG

USE *

  diary I LEN (60)

  phone_num   n10KEY

  name           U20

  addr           U30

ENDUSE

IF BADINDEX ( )

  ? "reorganiza o arquivo diário"

  REINDEX

ENDIF

Comandos de Tabulação

Sintaxe

CATEGORIZE <var> <valor1> ... <valorn>

BREAK <var1> ... <varn>

RECODE <var1> <var2> [ ... <varn>]

       <val1>  <val2>[ ...  <valn>]

          ...    

       <val1> <val2> [ ...  <valn>]

GROUP <var1> <var2>

      <val1> <val2>

         ...

      <val1> <val2>              

SET FORMAT TO [<proc>]

SET LEVEL TO <num>

SET INVALID TO <num>

CROSS <ident> <varc1> <varc2> [QT = <varq>] [WT = <varw>] 

  [BY=<varb1>...<varbn>]

TABULATE <ident> <varc1><varq1> [<varq2>] ... [<varqn>] [WT = <varw>] 

   [BY=<varb1>...<varbn>]

TERMINATE

CONVERT <varqd1>    [...<varqdn> ]   <varc1>    [...<varcn>]

  <varqo11>  [...<varqon1> ] <valc11>  [...<valcn1>]

  ...

  <varqo1n>  [...<varqonn> ] <valc1n>  [...<valcnn>]

Onde:

<ident>    literal identificador da matriz (tamanho = 24)

<varc.>    variável numérica categorizada

<varq.>    variável numérica quantitativa

<val..>    valor numérico

Semântica

O comando CATEGORIZE indica as categorias de uma variável.

O comando BREAK indica as variáveis de quebra, isto é, se houver mudança de valor de qualquer variável as matrizes em memória deverão ser gravadas, contendo os campos de controle o valor destas variáveis.

O comando RECODE indica a criação de uma variável categorizada a partir dos valores de uma ou mais variáveis.

O comando GROUP indica a criação de uma variável categorizada a partir de uma variável quantitativa.

O comando SET FORMAT TO indica a subrotina a gravar os valores das matrizes.

Se o nome da subrotina não for informado, as matrizes são impressas.

Os valores são passados para a subrotina num parâmetro cadeia no formato:

<ident>:<varq1>;<varq2>; : <varb1>;<varb2>;<varb3>;<varb4>; :<val1>;...,<valn>

identificação : valores das variáveis de quebra : valores das variáveis por : valores das células da matriz Os grupos de valores são separados por : (dois pontos) e os valores são separados por ; (ponto e vírgula). Todos os campos são em formato texto (ASCII).

O comando SET LEVEL TO indica o nível a gravar no campo de controle da matriz de saída.

O comando SET INVALID TO indica o valor da categoria inválida para as variáveis categorizadas.

O comando CROSS indica uma matriz a ser calculada com número de linhas igual ao número de categorias da primeira variável e número de colunas igual ao número de categoria da segunda variável. Se a variável QT não for especificada soma um às células da matriz, caso contrário, soma o valor desta variável às células. Se a variável WT for especificada, multiplica-se este valor pelo valor a ser somado nas células. Se as variáveis BY forem especificadas, calcula-se uma matriz para cada combinação de valores destas variáveis, gravando-se estes valores em campo de controle.

O comando TABULATE indica uma matriz a ser calculada com número de linhas igual ao número de categorias da variável categorizada e número de colunas igual ao número de variáveis quantitativas especificadas. Para cada registro selecionado, soma-se o valor de cada variável quantitativa nas células da linha correspondente a categoria da variável categorizada. Se a variável WT for especificada, multiplica-se este valor pelo valor a ser somado nas células. Se as variáveis BY forem especificadas, calcula-se uma matriz para cada combinação de valores destas variáveis, gravando-se estes valores em campo de controle.

O comando TERMINATE indica a gravação final das tabelas em memória.

O comando CONVERT indica a conversão de valores de uma ou mais variáveis quantitativas origem para uma ou mais variáveis quantitativas destino associadas a categorias de uma ou mais variáveis categorizadas, causando no comando CROSS ou TABULATE que utilizem uma ou mais variáveis quantitativas destino a soma dos valores das variáveis quantitativas origem nas células das matrizes indicadas pelas categorias especificadas.

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