
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.
prog
tel = space (10)
@ 10,20 say "telefone..." get tel pic (&&&) &&& - &&&&
read
Encerrar um programa retornando o controle ao processo chamador.
CANCEL
QUIT [(<numero>)]
<numero> status do término do programa.
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).
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
EXIT, FUNCTION, PROCEDURE, PROGRAM, RETURN, RUN, SLEEP e DBERR( ).
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.
declare long vetopt[70000]=space (70).
DECLARE, STORE, GET, INCR, DECR, AFILL( ), ASORT( ).
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.
STATIC DYNAMIC <VARIAVEL> [(C)]
Variável – Nome da variável de trabalho.
private dynamic stor(c)
public dynamic stor(c)
static dynamic stor(c)
PRIVATE, PUBLIC, STATIC.
Esvaziar todo um arquivo.
EMPTY
ZAP
Esvaziar todo o conteúdo do arquivo selecionado.
prog
database EXEMPLO 1 a 2
use PESSOA
empty && Irá esvaziar o arquivo PESSOA.
ZAP.
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.
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
Re-indexar um arquivo externo.
REINDEX
É utilizado para reorganizar o índice de um arquivo externo que está sendo usado. Deve ser utilizado quando a função BADINDEX( ) retornar verdadeiro (.T.).
PROG
USE *
diary I LEN (60)
phone_num n10KEY
name U20
addr U30
ENDUSE
IF BADINDEX ( )
? "reorganiza o arquivo diário"
REINDEX
ENDIF
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
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.
