Propósito
A função VIRTUAL é utilizada, opcionalmente, nos comandos SEEK, FIND, LOCATE START e START. Seu objetivo é montar em memória o valor a ser pesquisado, permitindo que sejam efetuadas leituras a partir de chaves redefinidas por itens de vários tipos de dados, além de permitir a pesquisa de chaves com valor nulo.
Recebe como argumento expressões para pesquisa, que devem ser passadas, separadas por vírgula e na ordem da redefinição da chave.
Caso não haja correspondência entre os tipos passados e os definidos na chave, o erro será informado durante a execução.
Sintaxe
FIND VIRTUAL (<exp1>[,<exp2>,...<expn>])
SEEK <chave> {=|$=} VIRTUAL(<exp1>[,<exp2>,...<expn>])
START VIRTUAL (<exp1>[,<exp2>,...<expn>])
LOCATE START VIRTUAL (<exp1>[,<exp2>,...<expn>])
Exemplos
O exemplo a seguir mostra-nos a utilização desta opção.
Esquema do Banco de Dados:
BANCO exemp1 1
NOME: ARQ1 E
iten1 u1
iten2 n2
chave1(1) u3 pos iten1
NOME: ARQ2 R
iten3 u1
iten4 n2
chave2(ARQ1) u3 pos iten3
iten5 u5 nulo
chave3(0) u7 nulo virtual (iten4, iten5)
Inclusão pelo geral:
a) iten1 = A iten2 = 11
b) iten1 = 3 iten2 = 2
c) iten3 = A iten4 = 11 iten5 = 11
Programa:
DATABASE exemp1 1 a 2
USE ARQ1
FIND VIRTUAL ("a",11)
LOCATE START VIRTUAL ("b",2)
USE ARQ2
SEEK chave3 = VIRTUAL (11,"")
A função VIRTUAL, também pode ser utilizada para compor uma variável, com tipos diferentes de itens de dados que compõem um item chave redefinido.
Sintaxe
<VAR> = VIRTUAL(<tip.tam>)<exp>,...,<tipo.tam><exp>
onde:
<tip.tam> tipo e tamanho do item a pesquisar.
<exp> valor do item a pesquisar
Exemplos
Esquema de Banco de Dados:
nome: tabelaA E
chave(0) u22
codigo(0) u5 pos chave
data n2 pos chave+5
hora u5 pos chave+7
dest(0) u10 pos chave+12
Programa:
use tabelaA
v=virtual ((u5) "555", (n2) 9)
locate start v
? chave