<varn>=ADIR(<expc> [,<vetn>[,<vett.[,<veth>[,<vetd>[,<veta>]]]]] )
Retorna o número de arquivos encontrados em um diretório e opcionalmente características destes arquivos em vetores.
A expressão cadeia <expc> contém o nome do diretório e nome de arquivos a pesquisar.
O nome do diretório é opcional. O nome do arquivo pode conter "*" (asterisco) para indicar quaisquer caracteres.
O vetor cadeia <vetn> deve ter elementos de tamanho no mínimo 14 e conterá os nomes dos arquivos encontrados.
O vetor numérico <vett> conterá os tamanhos dos arquivos encontrados.
O vetor <veth> deve ter elementos de tamanho no mínimo 8 e conterá as horas de atualização dos arquivos encontrados.
O vetor <vetd> deve ter elementos de tamanho no mínimo 8 e conterá as datas de alteração dos arquivos encontrados.
O vetor <veta> deve ter elementos de tamanho no mínimo 6 e conterá os atributos dos arquivos encontrados.
Em DOS os atributos são:
para arquivo RDONLY R só leitura
para arquivo HIDDEN H escondido
para arquivo SYSTEM S do sistema
para arquivo VOLID V
para arquivo SUBDIR D diretório
para arquivo ARCH A arquivo normal
Em UNIX os atributos são:
para arquivos IFREG A arquivo normal;
para arquivos IFBLK B arquivo bloco
para arquivos IFDIR D diretório
para arquivos IFCHR C arquivo caracter
para arquivos IFIFO F arquivo fifo
n=ADIR("*.f")
if n>0
decl v1[n]=space(14)
decl v2[n]=0
decl v3[n]=space(8)
decl v4[n]=space(8)
decl v5[n]=space(6)
n=ADIR("*.f",v1,v2,v3,v4,v5)
for i=1 to n
?"nome=",v1[i],"tamanho=",v2[i],"hora=",v3[i],"data=",v4[i],"atributos=",v5[i]
next
endif
Retornar o número de itens básicos (não redefinidos) ou preencher com a definição do arquivo selecionado.
<vetC1> |
representa o nome do vetor que será preenchido com o nome dos itens básicos do arquivo. Deve ter no mínimo 12 caracteres. |
<vetC2> |
representa o nome do vetor que será preenchido com o tipo dos itens básicos do arquivo. Deve ter no mínimo 1 caracter. |
<vetN1> |
representa o nome do vetor que será preenchido com o tamanho dos itens básicos do arquivo. |
<vetN2> |
representa o nome do vetor que será preenchido com o número de casas decimais dos itens básicos numéricos do arquivo. |
Retorna a quantidade de itens básicos (não redefinidos) do arquivo selecionado preenchendo, opcionalmente, vetores com a característica do registro do arquivo de banco de dados.
Quando utilizada sem argumentos, retorna o número de itens básicos do arquivo.
Os vetores devem ser declarados com o número de elementos igual ao número de itens básicos do arquivo.
O exemplo a seguir mostra-nos como declarar vetores com o número de elementos igual ao número de itens básicos do registro.
USE tab_func
qtd_item = ABASE( ) && Retorna o número de itens básicos do registro
DECLARE vet_nom[qtd_item] = SPACE(12)
DECLARE vet_tip[qtd_item] = " "
* Exibe a quantidade de itens básicos (qtd_item) e preenche os
* vetores
? ABASE(vet_nom, vet_tip)
Verificar a consistência de um arquivo externo indexado.
BADINDEX ( )
Retorna verdade (.T.), quando não existir coerência entre o arquivo de dados e seu arquivo de índice, de um arquivo tipo I e X.
Caso contrário, retorna falso (.F.), indicando a exata relação entre dados e índice.
Quando BADINDEX( ) retornar verdadeiro (.T.), indicando que o arquivo de índice está incorreto, é aconselhável utilizar o comando REINDEX para corrigi-lo.
O exemplo a seguir demonstra a utilização desta função.
PROG
USE *
agenda I LEN(60)
tel_num n10 KEY
nome u20
endereco u30
ENDUSE
IF BADINDEX ( )
? "Reindexando arquivo agenda"
REINDEX
ENDIF
REINDEX( ).
Retorna o número de centésimos de segundos da hora atual.
Retorna o número de registros inicializados com a cadeia utilizada na pesquisa
Seek <item> $=cadeia.Seek <item do banco>$= <string>
? chain( )
<item do banco> |
Campo do arquivo utilizado na pesquisa. |
<cadeia de caracter> |
Cadeia de caracter a ser pesquisada. |
select a
use pessoa
Seek nome$="Ana"
?chain && Exibe a quantidade de nomes inicializados com Ana.
Converter uma cadeia escrita em um aplicativo (editor texto) Windows, para o formato ASCII, utilizada em um aplicativo não Windows (console application).
CharToOem ("texto")
"texto" |
Representa a expressão cadeia a ser convertida para o formato ASCII. |
Esta função é útil, quando se deseja exibir vogais acentuadas e o cedilha, em um texto escrito em um editar de textos do Windows (Notepad, Wordpad), em um aplicativo que rode em console application.
O programa abaixo foi escrito no wordpad e compilado na OPUS (console application):
prog
var=CharToOem ("Atenção")
010,10 say var pec "xxxxxxx"
wait
returm
Inicializar a conexão com um servidor.
Connect (<host>)
<host> Nome ou endereço IP do servidor a se conectar.
Função lógica que estabelece uma conexão com uma máquina servidora. Se já houver uma conexão anterior esta é mantida.
A cada conexão, um arquivo bdserv é carregado no servidor, indicando que tal conexão foi feita.
Inicialmente, antes que qualquer conexão cliente-servidor seja estabelecida, é necessário que pelo menos um bdserv esteja ativo no servidor.
Finaliza a conexão com um servidor.
Disconnect (<host>)
<host> Nome ou endereço IP do servidor a se conectar.
Função lógica que encerra a conexão estabelecida com um servidor, através da função connect.
Retira do ar o bdserv, ativado pela função connect, evitando com isso que haja vários processos (bdserv) ativos, sem necessidade.
Criptografar ou De-criptografar uma cadeia de caracter.
<varc> = encrypt (<expc1>, <exp2>, <expn>)
varc |
Recebe o valor criptografado da cadeia expc 1. |
Expc1 |
Cadeia de caracter a ser criptografada. |
Expec2 |
Cadeia de caracter, que funciona como senha, na de-criptografia de expc 1. Deve Ter tamanho máximo de 8 posições. |
Expn |
Expressão numérica, podendo ser: |
0 – Criptografa |
|
1 – Des-criptografia |
Criptografa uma cadeia de caracteres cujo tamanho deve ser múltiplo de 8, a partir de uma senha (cadeia caracter). O valor criptografado da cadeia de caracter é gerado como retorno da função. Tal valor é de-criptografado a partir da senha (cadeia de caracter) utilizado na criptografia.
res = encrypt ("12345678", "abc", 1)
? encrypt (mes, "abc", 0 " && retorna 12345678
Acumular somatório de itens numéricos.
FACUM (<exp.C>, <vet.C>, <vet.N>)
<exp.C> |
Representa o nome de um arquivo do banco de dados. |
<vet.C> |
Representa um vetor caractere com nome dos itens que serão acumulados. |
<vet.N> |
Representa um vetor numérico onde serão armazenados os resultados das totalizações. |
Esta função lê seqüencialmente o arquivo <exp.C> acumulando em <vet.N> os valores dos itens definidos em <vet.C>.
Os itens definidos em <vet.C> devem ser de tipo numérico (tipos N, P, S, C, B, I ou F).
Para cada elemento do vetor <vetC> corresponde um elemento do vetor <vetN> com o resultado da acumulação do item correspondente.
Esta função quando bem sucedida retorna 0 (zero). Caso contrário retorna -1, neste caso verificar se algum dos itens passados em <vetC> não numérico, a quantidade de elemento de <vetN> corresponde a quantidade de elementos de <vetC> ou se ocorreu erro durante o acesso ao banco de dados (ver se DBERR( ) # 0).
Retornar o número de itens de um arquivo.
FAFIELDS (<expC>[, <vetC1>[, <vetC2>[,<vetN1>[, <vetN2>]]]])
<expC> |
Representa o nome do arquivo do banco de dados. |
<vetC1> |
Representa o nome do vetor que será preenchido com o nome dos itens do arquivo. Deve ter no mínimo 12 caracteres. |
<vetC2> |
Representa o nome do vetor que será preenchido com o tipo dos itens. Deve ter no mínimo 1 caractere. |
<vetN1> |
Representa o nome do vetor que será preenchido com o tamanho dos itens. |
<vetN2> |
Representa o nome do vetor que será preenchido com o número de casas decimais dos itens numéricos. |
Retorna a quantidade de itens do arquivo <exp.C> preenchendo, opcionalmente, vetores com a característica do registro do arquivo de banco de dados.
Os vetores devem ser declarados com o número de elementos igual ao número de itens do arquivo, para isso basta invocar FAFIELDS( ) antes de declarar os vetores.
O exemplo a seguir declara vetores com o número de elementos igual ao número de itens do registro.
? FOPEN ("bdemp1", "a", 33, 2) && Abre o banco de dados
qtd_item = FAFIELDS("tab_func"))
DECLARE vet_nom[qtd_item] = SPACE(12)
DECLARE vet_tip[qtd_item] = " "
* Exibe a quantidade de itens do arquivo
Retornar o número de itens que podem ser lido através de JOINS.
FAJOINS (<expC>[, <vetC1>[, <vetC2>[, <vetN1>[, <vetN2>]]]])
<expC> |
Representa o nome do arquivo do banco de dados. |
<vetC1> |
Representa o nome do vetor que será preenchido com o nome dos itens. Deve ter no mínimo 12 caracteres. |
<vetC2> |
Representa o nome do vetor que será preenchido com o tipo dos itens. Deve ter no mínimo 1 caractere. |
<vetN1> |
Representa o nome do vetor que será preenchido com o tamanho dos itens. |
<vetN2> |
Representa o nome do vetor que será preenchido com o número de casas decimais dos itens numéricos. |
Retorna a quantidade de itens que podem ser lidos automaticamente a partir do arquivo definido por <exp.C>, preenchendo, opcionalmente, vetores com as características destes itens.
Os itens retornados pertencem aos arquivos que mantenham relação com o arquivo <exp.C>. Os vetores devem ser declarados com o número de elementos igual ao número de itens que permitam junções com o arquivo selecionado, para isso basta invocar a FAJOINS( ) antes de declarar os vetores.ens (qtd_item) e preenche os vetores
O exemplo a seguir declara vetores com o número de elementos igual ao número de itens lidos a partir do arquivo desejado.
? FOPEN ("bdemp1", "a", 33, 2) && Abre o banco de dados.
qtd_item = FAJOINS ("tab_func") && Retorna o numero de itens
DECLARE vet_nom[qtd_item] = SPACE(12)
DECLARE vet_tip[qtd_item] = " "
* Exibe a quantidade de itens (qtd_item) e preenche os vetores
* com a características dos itens
? FAJOINS ("tab_func", vet_nom, vet_tip)
? FAFIELDS("tab_func", vet_nom, vet_tip)
Retornar o número de chaves de um arquivo.
FAKEYS (<expC>[, <vetC1>[, <vetC2>[, <vetN1>[, <vetN2>]]]])
<expC> |
Representa o nome do arquivo do banco de dados. |
<vetC1> |
Representa o nome do vetor que será preenchido com o nome das chaves. Deve ter no mínimo 12 caracteres. |
<vetC2> |
Representa o nome do vetor que será preenchido com o tipo das chaves. Deve ter no mínimo 1 caractere. |
<vetN1> |
Representa o nome do vetor que será preenchido com o tamanho das chaves. |
<vetN2> |
Representa o nome do vetor que será preenchido com o número de casas decimais das chaves numéricas. |
Retorna a quantidade de chaves do arquivo definido por <exp.C>, preenchendo, opcionalmente, vetores com as características destas chaves.
Os vetores devem ser declarados com o número de elementos igual ao número de chaves do arquivo, para isso basta invocar FAKEYS( ) antes de se declarar os vetores.
O exemplo a seguir declara vetores com o número de elementos igual ao número de chaves do registro.
? FOPEN ("bdemp1", "a", 33, 2)
qtd_item = FAKEYS ("tab_func")
DECLARE vet_nom[qtd_item] = SPACE(12)
DECLARE vet_tip[qtd_item] = " "
* Exibe a quantidade de chaves (qtd_item) e preenche vetores
? FAKEYS ("tab_func", vet_nom, vet_tip)
Fechar o banco de dados em uso.
FCLOSE ( )
Fecha o banco de dados em uso, retornando um valor numérico correspondente ao código de erro desta operação (DBERR).
Quando o banco é fechado com sucesso o valor retornado é igual a zero. Caso seja diferente de 0, este valor pode ser utilizado pela função FDBMESS ( ), para que esta informe o erro ocorrido.
O exemplo a seguir mostra como utilizar esta função.
PROG
ret = FOPEN ("bdemp1", "a", 1, 2)
IF ret # 0
MESSAGE "Erro " + str(ret,2) + " na abertura do banco"
QUIT
ENDIF
MESSAGE "Banco aberto" bold
WAIT "Fecha o banco ? s/n " TO k
IF UPPER (LEFT (k, 1)) = "S"
ret = FCLOSE ()
IF ret # 0
MESSAGE "Nao foi possivel fechar o banco" BLINK
ENDIF
ENDIF
Acumular somatório de itens numéricos de uma cadeia.
FGACUM (<expC1>, <expC2>, <expC3>, <vetC>, <vetN>).
<expC1> |
Representa o nome de um arquivo do banco de dados. |
<expC2> |
Representa o nome de uma chave que determina a cadeia. |
<expC3> |
Representa o valor da cadeia. |
<vetC> |
Representa um vetor caractere com nome dos itens que serão acumulados. |
<vetN> |
Representa um vetor numérico onde será armazenados os resultados das totalizações. |
Esta função lê os registros cujo valor da chave <expC2> forem iguais a expressões <expC2> acumulando em <vetN> os valores dos itens definidos em <vetC>. Os itens definidos em <vetC> devem ser de tipo numérico (tipos N, P, S, C, B, I ou F).
Para cada elemento de do vetor <vetC> corresponde um elemento do vetor <vetN> com o resultado da acumula F/ D/o do item correspondente.
Esta função quando bem sucedida retorna 0 (zero). Caso contrário retorna -1, neste caso verificar se algum dos itens passados em <vetC> não é numérico, a quantidade de elemento de <vetN> corresponde a quantidade de elementos de <vetC> ou se ocorreu erro durante o acesso ao banco de dados (ver se DBERR() # 0).
Acumular somatório de itens numéricos de uma cadeia de prefixo.
FGPACUM (<expC1>, <expC2>, <expC3>, <vetC>, <vetN>)
<expC1> |
Representa o nome de um arquivo do banco de dados. |
<expC2> |
Representa o nome de uma chave que determina a cadeia. |
<expC3> |
Representa o valor para pesquisa de <exp.C2>. |
<vetC> |
Representa um vetor caractere com nome dos itens que serão acumulados. |
<vetN> |
Representa um vetor numérico onde serão armazenados os resultados das totalizações. |
Esta função lê os registros cujo valor do prefixo da chave <expC2> forem iguais a expressão <expC2> acumulando em <vetN> os valores dos itens definidos em <vetC>. Os itens definidos em <vetC> devem ser de tipo numérico (tipos N, P, S, C, B, I ou F).
Para cada elemento de do vetor <vetC> corresponde um elemento do vetor <vetN> com o resultado da acumulação do item correspondente.
Esta função quando bem sucedida retorna 0 (zero). Caso contrário retorna -1, neste caso verificar se algum dos itens passados em <vetC> não é numérico, a quantidade de elemento de <vetN> corresponde a quantidade de elementos de <vetC> ou se ocorreu erro durante o acesso ao banco de dados (ver se DBERR( ) # 0).
Serve para verificar a existência de um arquivo externo.
FILE(<expC>)
<expC> |
representa o nome do arquivo. |
Retorna verdadeiro (.T.) se o arquivo for encontrado, falso em caso contrário.
? file ("config.sys") && retorna .T. se tiver o arquivo
Lê de um arquivo em Disco e grava em um campo memo.
FILETOMEMO( Campo Memo, Nome do Arquivo).
É utilizado como forma de atualização do campo memo, sem o limite de 64k, associa o campo ao ultimo registro lido.
Não precisa passar pela memória para ler ou gravar, ele lê direto.
prog
database memopol 1 a 2
use unico
find 001
a= filetomemo(desc,"arqt")
...
MEMOTOFILE().
Restaurar uma tela antes salva pela função SCREENTOFILE().
FILETOSCREEN (<expC>)
<expC> |
Representa o nome do arquivo de onde será lida a tela. |
Exibe na tela do terminal o conteúdo do arquivo especificado pela expressão caractere, este arquivo obrigatoriamente deve conter uma tela anteriormente salva pela função SCREENTOFILE(). Retorna falso (.F.) caso não seja possível ler o arquivo especificado. Caso contrário retornará verdade (.T.).
A utilização desta função implica na utilização da opção $SCREEN ou $SSCREEN.
O exemplo a seguir demonstra como utilizar esta função.
$SCREEN
prog
if .not. FILETOSCREEN ("/usr/telas/telprog1")
beep
message "Nao foi possivel restaurar tela"
sleep 5
quit
endif
clear
SCREENTOFILE( ).
FJUDI (<banco>, <nivel>, <seguranca>, < modos>)
Indica que outro banco será aberto e seu dicionário será incorporado ao (s) dicionário do (s) banco (s) já aberto (s).
DATAJOIN.
Retornar características de item chave.
FKEY (<expC1>, <expC2>[, <vetC>])
<expC1> |
Representa o nome do arquivo do banco de dados. |
<expC2> |
Representa o nome de um item. |
<vetC> |
Representa um vetor caractere. |
Retorna um valor numérico correspondente ao tipo do item passado como argumento. Caso seja declarado <vet.C> como argumento, este vetor é preenchido com informações adicionais sobre a chave <exp.C2>.
O valor retornado corresponde a soma, ou a um, dos valores descritos a seguir:
1 |
Para chave primária, |
2 |
Para chave estrangeira |
3 |
Para chave de busca |
10 |
Para chave virtual |
100 |
Para chave única, |
1000 |
Para chave nula |
10000 |
Exclui em cascata, |
20000 |
Valor nulo em cascata na exclusão |
100000 |
Altera em cascata |
200000 |
Valor nulo em cascata na alteração |
O vetor <vet.C> é preenchido com informações adicionais. No caso de chave estrangeira, somente o primeiro elemento do vetor é utilizado, sendo preenchido com o nome do arquivo entidade associado a chave.
No caso de chave virtual, os elementos do vetor serão preenchidos com o nome dos itens que compõem a chave virtual. No caso de chave virtual estrangeira, o primeiro elemento é preenchido com o nome da entidade associada e os demais são preenchidos com o nome dos itens que compõem a chave virtual.
Esta função retorna -1 (menos um) quando:
<exp.C1> não for arquivo do banco de dados,
<exp.C2> não for chave no arquivo <exp.C1>,
ou qualquer outra incoerência.
Caso FKEY retorne -1, o vetor <vet.C> retornará com seus elementos preenchidos de brancos.
O exemplo a seguir mostra como utilizar esta função.
PROG
DECLARE vet_cad[3] = space (12)
ret = FOPEN ("bdemp1", "a", 33, 2)
IF ret # 0
MESSAGE "Erro na abertura do banco" blink
QUIT (2)
ENDIF
* Exibira 102 (estrangeira e unica)
? FKEY ("tab_vend", "id1_func", vet_cad)
* Exibira tab_func
? vet_cad[1]
?* Exibira 1 (chave primaria)
? FKEY ("tab_func", "id0_func", vet_cad)
* Exibira 0000000003
? vet_cad[1]
Retornar o tamanho de um item do banco de dados.
FLENGTH (<expC1>, <expC2>)
<expC1> |
Representa o nome de um arquivo do banco de dados em uso. |
<expC2> |
Representa o nome de um item do arquivo. |
Retorna um valor numérico correspondente ao tamanho do item <expC2> no arquivo <exp.C1> ou o valor numérico -1 (menos um), quando:
<expC2> não for um item de <expC1>,
<expC1> não for um arquivo do banco de dados em uso.
O valor retornado corresponde ao total em bytes ocupado pelo item no disco.
O exemplo a seguir mostra como utilizar esta função levando em consideração o arquivo tab_nfis.
* nome: tab_nfis L
* registro: id0_nfis (1) n03
* cli_nfis (tab_clie) n03
* ven_nfis (tab_func) n03
* tot_nfis p10,2
* dat_nfis d02
PROG
ret = FOPEN ("bdemp1", "a", 33, 2)
IF ret # 0
? "Erro na abertura do banco bdemp1"
? FDBMESS (ret)
ENDIF
? "Tamanho do item tot_nfis = "
?? FLENGTH ("tab_nfis", "tot_nfis") && Exibira 5
?
? "Tamanho do item id0_nfis = "
?? FLENGTH ("tab_nfis", "id0_nfis") && Exibira 3
?
? "Tamanho do item inexiste = "
?? FLENGTH ("tab_nfis", "inexiste") && Exibira -1
Retornar o deslocamento de um item dentro do registro.
FOFFSET (<exp.C1>, <exp.C2>)
<expC1> |
Representa o nome de um arquivo do banco de dados em uso. |
<expC2> |
Representa o nome de um item do arquivo. |
Retorna um valor numérico correspondente ao deslocamento do item <exp.C2> dentro do registro no arquivo <expC1> ou o valor -1 (menos um), quando:
<expC2> não for um item de <exp.C1>,
<expC1> não for um arquivo do banco de dados em uso.
O valor retornado corresponde ao total em bytes deslocados a partir do primeiro item do registro. Em registro inicia na posição zero (0).
O exemplo a seguir mostra como utilizar esta função levando em consideração o arquivo tab_nfis.
* nome: tab_nfis L
* registro: id0_nfis (1) n03
* cli_nfis (tab_clie) n03
* ven_nfis (tab_func) n03
* tot_nfis p10,2
* dat_nfis d02
PROG
ret = FOPEN ("bdemp1", "a", 33, 2)
IF ret # 0
? "Erro na abertura do banco bdemp1"
? FDBMESS (ret)
ENDIF
? FOFFSET ("tab_nfis", "tot_nfis") && Exibira 9
? FOFFSET ("tab_nfis", "id0_nfis") && Exibira 0
? FOFFSET ("tab_nfis", "inexiste") && Exibira -1
FOPEN( )
Devolve o número de códigos fonéticos encontrados na cadeia <nome> e guardados no vetor cadeia <vetor> que deve ter um número de elementos suficientes para contê-los e tamanho de elementos >= 8.
Fonetv (<nome>,<vetor>)
declare fons (10) = space (8)
?=fonetv ("JOSE DA SILVA", tons)
for j=1 ton
? fons [j]
next
Abrir um banco de dados OpenBASE.
FOPEN (<exp.C1>, <exp.C2>, <exp.N1>, <exp.N2>)
<expC1> |
Representa o nome do banco de dados. |
<expC2> |
Representa o nível de acesso às informações dos itens do banco de dados. |
<expN1> |
Representa o código de segurança definido para o banco de dados. |
expN2> |
Representa o modo de abertura do banco de dados. |
Abre o banco de dados definido por <exp.C1>, retornando um valor numérico correspondente ao código de erro desta operação (DBERR).
Quando o banco de dados é aberto com sucesso o valor retornado é igual a zero. Caso seja diferente de 0, este valor pode ser utilizado pela função FDBMESS(), para que esta informe o erro corrido.
Permite criar programas independentes do banco de dados, pois só verifica a existência do banco durante a execução do programa. Deste modo, as informações para a abertura do banco de dados podem ser passadas como argumentos para o programa.
O exemplo a seguir mostra como utilizar esta função.
PROG
ACCEPT "Informe o nome do banco ............ " TO nom_ban
ACCEPT "Informe a palavra de nivel ......... " TO pal_niv
INPUT "Informe o codigo de seguranca ...... " TO cod_seg
INPUT "Informe o modo de abertura ......... " TO mod_abe
cod_err = FOPEN (nom_ban, pal_niv, cod_seg, mod_abe)
?
IF cod_err # 0
? "Erro na abertura do banco de dados"
? FDBMESS (cod_err)
ELSE
? "Banco aberto"
ENDIF
DATABASE.
Nas funções descritas acima, o parâmetro referente ao valor do campo pesquisado, pode se referir a um item virtual.
Ret = FSEEK ("Nome_arq","Nome_item","virtual (Valor1, Valor2, … , Valorn),
Vet1, Vet2)
Nome_arq |
Nome do arquivo onde será feita a pesquisa. |
Nome_item |
Nome do item virtual onde será feita a pesquisa |
Valor1, valor2,...,valorn |
Valor do item virtual que se deseja pesquisar. |
Vet1 |
Vetor cadeia com o nome dos itens que serão lidos |
Vet2 |
Vetor cadeia que receberá o valor dos itens lidos |
Útil para se pesquisar valores de itens virtuais, utilizando-se as funções de pesquisa FSEEK, START e FFIND.
Permitir o envio ou recebimento de arquivos, via ftp, a partir de um programa Opus.
ftpsend (<ser>, <log>,<pas><ori>,<des>)
ftpreceive (<ser>, <log>,<pas>,<ori><des>)
<ser> |
nome do servidor |
<log> |
login no servidor |
<pas> |
senha no servidor |
<ori> |
arquivo origem |
<des> |
diretório/arquivo destino |
Útil em programas Opus, quando se deseja enviar ou receber arquivos de um servidor remoto, sem ter que se utilizar algum arquivo batch ou shell.
Caso o cliente seja Windows 9x, NT, 2000, deve estar instalada a biblioteca WININET.LIB
if ftpsend ("10.1.1.26", "root", "senha", "\tmp\teste", "/usr/tmp")
? "Arquivo foi enviado com sucesso"
endif
Retorna a percentagem do espaço ocupado do disco solicitado.
GetDiskUsage (<device>).
<device> Indica o nome da participação do disco rígido, onde se verificará a percentagem ocupada.
Esta função é útil para avisar ao usuário, a percentagem ocupada, de uma determinada partição do disco rígido, evitando que o mesmo fique cheio.
prog
database dbbanco 1 a 2
if GetDiskUsage ("/dev/hd2")>95
valor = GetDiskUsage ("/dev/hd2")
@10,10 say "Atenção seu disco rígido está cheio" + str (valor) blink
wait
endif
Esta função cadeia obtém o nome do cliente, armazenado no Registry do Windows e/ou no arquivo "FacPrint".
? GetClient( )
Esta função cadeia obtém o nome do diretório (ou pasta) default onde se encontram localizados os Bancos de dados OpenBASE. Esta informação é obtida a partir do Registry do Windows (ou do velho arquivo "FacPrint").
Por exemplo, o comando ?GetDirectory( ) poderá retornar a cadeia D:\USR\TSGBD\TSDIC ou qualquer outro percurso que tenha sido estabelecido como default pelo usuário através do programa de configuração WinCNFG.
Esta função cadeia obtém a versão do OpenBASE, armazenado no Registry do Windows e/ou no arquivo "FacPrint". Por exemplo, o comando ?GetVersion() poderá retornar: V8.1.
Retorna o número de registros de um arquivo de índice.
m=indreccount ("<nome arquivo índice>").
<Nome arquivo índice> Arquivo de índice do qual se deseja obter o número de registros.
select a
use PESSOA
? indreccount ("NomeP1)
Comparar expressões numéricas e retornar a de maior valor.
MAX (<exp.N1>,<exp.N2>)
<expN1> e <expN2> |
Representam as expressões numéricas a serem comparadas. |
Compara o resultado das expressões numéricas 1 e 2 retornando o valor numérico da que for maior.
O exemplo a seguir exemplifica a utilização desta função.
prog
var_num = -78
? MAX (var_num, var_num * -1) && Exibira 78
MIN( )
Lê de um campo memo e grava em um arquivo em Disco.
MEMOTOFILE( Campo Memo, Nome do Arquivo).
É utilizado como forma de atualização do campo memo, sem o limite de 64k, associa o campo ao ultimo registro lido.
Não precisa passar pela memória para ler ou gravar, ele lê direto.
prog
database memopol 1 a 2
use unico
find 001
x= memotofile(desc,"arqc")
.
FILETOMEMO()
Comparar expressões numérica e retornar a de menor valor.
MIN (<exp.N1>,<exp.N2>)
<expN1> e <expN2> |
Representam as expressões numéricas a serem comparadas. |
Compara o resultado das expressões numéricas 1 e 2 retornando o valor numérico da que for menor.
O exemplo a seguir exemplifica a utilização desta função.
prog
var_num = -78
? MIN (var_num, var_num * -1) && Exibira -78
MAX()
Converter uma cadeia, no formato ASCII para o Windows.
OemToChar ("texto")
"texto" |
Representa a expressão cadeia no formato ASCII a ser convertida para o formato Windows. |
Esta função é útil quando se deseja exibir vogais acentuadas e o cedilha de um texto escrito no formato ASCII (console application), em um aplicativo Windows.
O programa abaixo foi escrito no edit.com do DOS, e compilado na OpusWin:
prog
bt1=1
var= OemToChar ("Atenção")
Dialog 0,0,79,23
vartext Null var 02,02,10,01
defpushbutton "sair"
bt1 02,10,10,01 IDOK
enddialog
Carregar uma variável de ambiente.
Putenv ("<exp.c>=<conteudo>")
<expc> |
Representa o nome da variável de ambiente. |
<conteúdo> |
Cadeia a ser enviada para variável de ambiente. |
Atribui um conteúdo a uma variável de ambiente. Este conteúdo é uma cadeia de caracteres.
Putenv ("ABC=def")
? Getenv ("ABC") && retorna "def"
Restaura os endereços das rotinas especificadas nos comandos SET KEY <num> to <proc>. Salvos na <area> especificada.
$nolib
prog
private a (100)
set key 28 to p1
wait "1" to x
save keys
set key 28 to p2
wait "2" to x
restore keys
wait "3" to x
proc p1
? "p1"
return
proc p2
? "p2"
return
Salva os endereços das rotinas especificadas nos comandos SET KEY <num> TO <proc> na <area> especificada que deve Ter no mínimo 100 bytes. Caso não seja especificada uma área é criada automaticamente.
Gravar conteúdo de tela em um arquivo.
SCREENTOFILE (<expC>)
<expC> |
Representa o nome do arquivo para onde será copiado o conteúdo da tela. |
Copia o conteúdo da tela do terminal para o arquivo indicado pelo resultado da expressão caractere. Retorna falso (.F.) caso não seja possível gravar o arquivo especificado. Caso contrário retornará verdade (.T.). Para se utilizar o conteúdo dos arquivos criados por esta função usar a função FILETOSCREEN ( ). A utilização desta função implica na utilização da opção $SCREEN ou $SSCREEN.
O exemplo a seguir demonstra como utilizar esta função.
$SCREEN
prog
for linha = 5 to 15
@ linha, 20 say rep("*",40)
next
if .not. SCREENTOFILE ("/usr/telas/telprog1")
beep
message "Nao foi possivel salvar tela"
sleep 5
quit
endif
clear
quit
$NOSCREEN, ?, ??, @ ... SAY, SET DEVICE e SET PRINTER, FILETOSCREEEN.
Retornar a quantidade de registros selecionados pelo comando QUERY.
SELECTED()
Retorna um valor numérico correspondente a quantidade de registros que atenderam a pesquisa feita pelo comando QUERY.
Pode ser utilizada como alternativa na verificação do sucesso da leitura, em substituição a função EOF( ), por que o comando QUERY não acusa fim de leitura. Sendo assim só seria possível verificar o fim de leitura após a execução do comado LOCATE.
O exemplo a seguir mostra como utilizar esta função para verificar o fim da leitura.
PROG
DATABASE bdemp1 1 a 3
USE tab_nfis
QUERY id0_clie <> 543 .or. id0_clie <> 647
IF SELECTED ( ) = 0
? "Nenhum registro selecionado"
QUIT (1)
ENDIF
? "Foram selecionados ", SELECTED ( ), " registros"
LOCATE
DO WHILE FOUND()
? "Codigo Nf ", id0_nfis
? "Cliente ", nom_clie
? "Vendedor ", nom_func
CONTINUE
ENDDO
QUERY.
Permite que um programa Opus seja um servidor de aplicativo.
server <PORTA>
UNIX: nohup <programa> -t <timeout> -n<porta> &
Windows: <programa> -s <executavel> -n<porta>
<porta> indica o serviço TCPIP disponível, para atender os pedidos de mensagens enviadas ao servidor.( ver arquivo services)
<timeout> indica o tempo em segundos que o programa servidor pode permanecer no ar sem comunicação.
<executável> indica o percurso na máquina servidor onde se encontra o programa executável.
Carrega um programa Opus, deixando-o no ar, até que seja executada a função server (0). Permite ao usuário determinar o número de segundos (time-out) que o programa servidor permanece no ar sem receber comunicação do cliente, assim como o número do serviço TCPIP disponível para a comunicação (porta). Utilizado no protocolo de comunicação send/receive, onde o cliente (programa Opus) envia e recebe mensagens do servidor (programa Opus).
Permite a execução de um comando em uma máquina remota (servidor), a partir de um programa Opus.
ServerExecute("[Percurso] <comando>")
Útil quando se deseja executar um comando em uma determinada máquina, a partir de um programa Opus que está sendo executado em outra máquina.
$client = "10.1.1.26"
prog
if serverexecute ( "/usr/tmp/sh backup.l") = 0
? "Backup realizado"
endif
A função cadeia TTYIP ( ) retorna o endereço IP da estação de trabalho (cliente) que se conecta ao servidor UNIX, via emulador de terminal TELNET.
Var= ttyip ( )
Esta função é útil, quando se deseja conhecer qual a máquina cliente que esta conectada a um servidor UNIX. É necessário que a máquina cliente esteja configurada na rede local.
endereco = ttyip( )
? endereço
Seria exibido o endereço IP da máquina conectada ao servidor UNIX.
Retornar o nome da máquina do cliente conectado por um emulador de terminal a uma máquina UNIX.
m = ttyname ( )
Útil quando se deseja saber o nome da máquina que está ligada a um servidor UNIX, através de um emulador de terminal. Eqüivale ao "computer name" obtido no comando "Who am I" do UNIX.