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

FUNÇÕES

ADIR( )

<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

Exemplos

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

ABASE()

Propósito

Retornar o número de itens básicos (não redefinidos) ou preencher com a definição do arquivo selecionado.

Argumentos

<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.

Utilização

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.

Exemplos

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)

BADINDEX( )

Propósito

Verificar a consistência de um arquivo externo indexado.

Sintaxe

BADINDEX ( )

Utilização

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.

Exemplos

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

Consulte

REINDEX( ).

CENTSECONDS ( )

Propósito

Retorna o número de centésimos de segundos da hora atual.

CHAIN ( )

Propósito

Retorna o número de registros inicializados com a cadeia utilizada na pesquisa Seek <item> $=cadeia.

Sintaxe

Seek <item do banco>$= <string>

? chain( )

Argumentos

<item do banco>

Campo do arquivo utilizado na pesquisa.

<cadeia de caracter>

Cadeia de caracter a ser pesquisada.

Exemplos

select a

use pessoa

Seek nome$="Ana"

?chain && Exibe a quantidade de nomes inicializados com Ana.

CHARTOOEM

Propósito

Converter uma cadeia escrita em um aplicativo (editor texto) Windows, para o formato ASCII, utilizada em um aplicativo não Windows (console application).

Sintaxe

CharToOem ("texto")

Argumentos

"texto"

Representa a expressão cadeia a ser convertida para o formato ASCII.

Utilização

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.

Exemplos

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

CONNECT ( )

Propósito

Inicializar a conexão com um servidor.

Sintaxe

Connect (<host>)

Argumentos

<host>    Nome ou endereço IP do servidor a se conectar.

Utilização

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.

DISCONNECT ( )

Propósito

Finaliza a conexão com um servidor.

Sintaxe

Disconnect (<host>)

Argumentos

<host>    Nome ou endereço IP do servidor a se conectar.

Utilização

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.

ENCRYPT( )

Propósito

Criptografar ou De-criptografar uma cadeia de caracter.

Sintaxe

<varc> = encrypt (<expc1>, <exp2>, <expn>)

Argumentos

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

Utilização

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.

Exemplos

res = encrypt ("12345678", "abc", 1)

? encrypt (mes, "abc", 0 "    && retorna 12345678

FACUM ( )

Propósito

Acumular somatório de itens numéricos.

Sintaxe

FACUM (<exp.C>, <vet.C>, <vet.N>)

Argumentos

<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.

Utilização

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).

FAFIELDS( )

Propósito

Retornar o número de itens de um arquivo.

Sintaxe

FAFIELDS (<expC>[, <vetC1>[, <vetC2>[,<vetN1>[, <vetN2>]]]])

Argumentos

<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.

Utilização

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.

Exemplos

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

FAJOINS( )

Propósito

Retornar o número de itens que podem ser lido através de JOINS.

Sintaxe

FAJOINS (<expC>[, <vetC1>[, <vetC2>[, <vetN1>[, <vetN2>]]]])

Argumentos

<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.

Utilização

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

Exemplos

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)

FAKEYS( )

Propósito

Retornar o número de chaves de um arquivo.

Sintaxe

FAKEYS (<expC>[, <vetC1>[, <vetC2>[, <vetN1>[, <vetN2>]]]])

Argumentos

<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.

Utilização

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.

Exemplos

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)

FCLOSE ( )

Propósito

Fechar o banco de dados em uso.

Sintaxe

FCLOSE ( )

Utilização

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.

Exemplos

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

FGACUM ( )

Propósito

Acumular somatório de itens numéricos de uma cadeia.

Sintaxe

FGACUM (<expC1>, <expC2>, <expC3>, <vetC>, <vetN>).

Argumentos

<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.

Utilização

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).

FGPACUM ( )

Propósito

Acumular somatório de itens numéricos de uma cadeia de prefixo.

Sintaxe

FGPACUM (<expC1>, <expC2>, <expC3>, <vetC>, <vetN>) 

Argumentos

<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.

Utilização

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).

FILE ( )

Propósito

Serve para verificar a existência de um arquivo externo.

Sintaxe

FILE(<expC>)

Argumentos

<expC>

representa o nome do arquivo.

Utilização

Retorna verdadeiro (.T.) se o arquivo for encontrado, falso em caso contrário.

Exemplos

? file ("config.sys")    && retorna .T. se tiver o arquivo

FILETOMEMO( )

Propósito

Lê de um arquivo em Disco e grava em um campo memo.

Sintaxe

FILETOMEMO( Campo Memo, Nome do Arquivo).

Utilização

É utilizado como forma de atualização do campo memo, sem o limite de 64k, associa o campo ao ultimo registro lido.

Vantagens:    

Não precisa passar pela memória para ler ou gravar, ele lê direto.

Exemplo :

prog

database memopol 1 a 2

use unico

find 001

a= filetomemo(desc,"arqt")

...

Consulte

MEMOTOFILE().

FILETOSCREEN()

Propósito

Restaurar uma tela antes salva pela função SCREENTOFILE().

Sintaxe

FILETOSCREEN (<expC>)

Argumentos

<expC>

Representa o nome do arquivo de onde será lida a tela.

Utilização

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.

Exemplos

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

Consulte

SCREENTOFILE( ).

FJUDI

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).

Consulte

DATAJOIN.

FKEY( )

Propósito

Retornar características de item chave.

Sintaxe

FKEY (<expC1>, <expC2>[, <vetC>])

Argumentos

<expC1>

Representa o nome do arquivo do banco de dados.

<expC2>

Representa o nome de um item.

<vetC>

Representa um vetor caractere.

Utilização

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.

Exemplos

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]

FLENGTH( )

Propósito

Retornar o tamanho de um item do banco de dados.

Sintaxe

FLENGTH (<expC1>, <expC2>)

Argumentos

<expC1>

Representa o nome de um arquivo do banco de dados em uso.

<expC2>

Representa o nome de um item do arquivo.

Utilização

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.

Exemplos

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

FOFFSET ( )

Propósito

Retornar o deslocamento de um item dentro do registro.

Sintaxe

FOFFSET (<exp.C1>, <exp.C2>)

Argumentos

<expC1>

Representa o nome de um arquivo do banco de dados em uso.

<expC2>

Representa o nome de um item do arquivo.

Utilização

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).

Exemplos

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

Consulte

FOPEN( )

FONETV

Propósito

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.

Sintaxe

Fonetv (<nome>,<vetor>)

Exemplos

declare fons (10) = space (8)

?=fonetv ("JOSE DA SILVA", tons)

for j=1 ton

? fons [j]

next

FOPEN( )

Propósito

Abrir um banco de dados OpenBASE.

Sintaxe

FOPEN (<exp.C1>, <exp.C2>, <exp.N1>, <exp.N2>)

Argumentos

<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.

Utilização

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.

Exemplos

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

Consulte

DATABASE.

FSEEK, FSTART, FFIND

Propósito

Nas funções descritas acima, o parâmetro referente ao valor do campo pesquisado, pode se referir a um item virtual.

Sintaxe

Ret = FSEEK ("Nome_arq","Nome_item","virtual (Valor1, Valor2, … , Valorn),

  Vet1, Vet2)

Argumentos

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

Utilização

Útil para se pesquisar valores de itens virtuais, utilizando-se as funções de pesquisa FSEEK, START e FFIND.

FTPSEND – FTPRECEIVE

Propósito

Permitir o envio ou recebimento de arquivos, via ftp, a partir de um programa Opus.

Sintaxe

ftpsend (<ser>, <log>,<pas><ori>,<des>)

ftpreceive (<ser>, <log>,<pas>,<ori><des>)

Argumentos

<ser>

nome do servidor

<log>

login no servidor

<pas>

senha no servidor

<ori>

arquivo origem

<des>

diretório/arquivo destino

Utilização

Ú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

Exemplos

if ftpsend ("10.1.1.26", "root", "senha", "\tmp\teste", "/usr/tmp")

  ? "Arquivo foi enviado com sucesso"

endif 

GetDiskUsage( )

Propósito

Retorna a percentagem do espaço ocupado do disco solicitado.

Sintaxe

GetDiskUsage (<device>).

Argumentos

<device>    Indica o nome da participação do disco rígido, onde se verificará a percentagem ocupada.

Utilização

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.

Exemplos

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

GETCLIENT( )

Propósito

Esta função cadeia obtém o nome do cliente, armazenado no Registry do Windows e/ou no arquivo "FacPrint".

Exemplos

? GetClient( )

GETDIRECTORY( )

Propósito

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.

GETVERSION( )

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.

INDRECCOUNT( )

Propósito

Retorna o número de registros de um arquivo de índice.

Sintaxe

m=indreccount ("<nome arquivo índice>").

Argumentos

<Nome arquivo índice>    Arquivo de índice do qual se deseja obter o número de registros.

Exemplos

select a

use PESSOA

? indreccount ("NomeP1)

MAX( )

Propósito

Comparar expressões numéricas e retornar a de maior valor.

Sintaxe

MAX (<exp.N1>,<exp.N2>)

Argumentos

<expN1> e <expN2>

Representam as expressões numéricas a serem comparadas.

Utilização

Compara o resultado das expressões numéricas 1 e 2 retornando o valor numérico da que for maior.

Exemplos

O exemplo a seguir exemplifica a utilização desta função.

prog

var_num = -78

? MAX (var_num, var_num * -1)         && Exibira 78

Consulte

MIN( )

MEMOTOFILE( )

Propósito

Lê de um campo memo e grava em um arquivo em Disco.

Sintaxe

MEMOTOFILE( Campo Memo, Nome do Arquivo).

Utilização

É utilizado como forma de atualização do campo memo, sem o limite de 64k, associa o campo ao ultimo registro lido.

Vantagens

Não precisa passar pela memória para ler ou gravar, ele lê direto.

Exemplos

prog

database memopol 1 a 2

use unico

find 001

x= memotofile(desc,"arqc")

.

Consulte

FILETOMEMO()

MIN()

Propósito

Comparar expressões numérica e retornar a de menor valor.

Sintaxe

MIN (<exp.N1>,<exp.N2>)

Argumentos

<expN1> e <expN2>

Representam as expressões numéricas a serem comparadas.

Utilização

Compara o resultado das expressões numéricas 1 e 2 retornando o valor numérico da que for menor.

Exemplos

O exemplo a seguir exemplifica a utilização desta função.

prog

var_num = -78

? MIN (var_num, var_num * -1) && Exibira -78

Consulte

MAX()

OemToChar

Propósito

Converter uma cadeia, no formato ASCII para o Windows.

Sintaxe

OemToChar ("texto")

Argumentos

"texto"

Representa a expressão cadeia no formato ASCII a ser convertida para o formato Windows.

Utilização

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.

Exemplos

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

PUT_ENV

Propósito

Carregar uma variável de ambiente.

Sintaxe

Putenv ("<exp.c>=<conteudo>")

Argumentos

<expc>

Representa o nome da variável de ambiente.

<conteúdo>

Cadeia a ser enviada para variável de ambiente.

Utilização

Atribui um conteúdo a uma variável de ambiente. Este conteúdo é uma cadeia de caracteres.

Exemplo

Putenv ("ABC=def")

? Getenv ("ABC") && retorna "def"

RESTORES KEYS [<area>]

Restaura os endereços das rotinas especificadas nos comandos SET KEY <num> to <proc>. Salvos na <area> especificada.

Exemplos

$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

SAVE KEYS [<area>]

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.

SCREENTOFILE ( )

Propósito

Gravar conteúdo de tela em um arquivo.

Sintaxe

SCREENTOFILE (<expC>)

Argumentos

<expC>

Representa o nome do arquivo para onde será copiado o conteúdo da tela.

Utilização

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.

Exemplos

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

Consulte

$NOSCREEN, ?, ??, @ ... SAY, SET DEVICE e SET PRINTER, FILETOSCREEEN.

SELECTED( )

Propósito

Retornar a quantidade de registros selecionados pelo comando QUERY.

Sintaxe

SELECTED()

Utilização

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.

Exemplos

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  

Consulte

QUERY.

SERVER ( )

Propósito

Permite que um programa Opus seja um servidor de aplicativo.

Sintaxe

server <PORTA>

UNIX:    nohup <programa> -t <timeout> -n<porta> &

Windows:    <programa> -s <executavel> -n<porta>

Argumentos

<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.

Utilização

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).

ServerEecute

Propósito

Permite a execução de um comando em uma máquina remota (servidor), a partir de um programa Opus.

Sintaxe

ServerExecute("[Percurso] <comando>")

Utilização

Ú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.

Exemplos

$client = "10.1.1.26"

prog

if serverexecute ( "/usr/tmp/sh backup.l") = 0

   ? "Backup realizado"

endif

TTYIP

Propósito

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.

Sintaxe

Var= ttyip (  )

Argumentos

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.

Exemplos

endereco = ttyip( )

? endereço

Seria exibido o endereço IP da máquina conectada ao servidor UNIX.

TTYNAME ( )

Propósito

Retornar o nome da máquina do cliente conectado por um emulador de terminal a uma máquina UNIX.

Sintaxe

m = ttyname ( )

Utilização

Ú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.

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