
É possível selecionar as opções para o comando OPUS $ via as variáveis de ambiente do UNIX. Estas variáveis são:
OPUSOPT
Quando selecionada indica ao compilador quais opções este deve seguir durante a compilação de um fonte OPUS, o que eqüivale à usar estas opções dentro do próprio fonte com o comando "$".
DIRLIB
Quando selecionada indica o diretório onde as bibliotecas de sistema da OPUS estão localizadas (libfacbib.a e libbd.a).
DIRINC
Quando selecionada indica o diretório onde os arquivos de inclusão de sistema da OPUS estão localizados (types.h, tsobjetos.h, etc.)
Exemplos
Informar ao compilador OPUS que os programas compilados irão usar a versão 5.3 e as bibliotecas do usuário. Para fazer isto, selecione as variáveis seguintes:
$ PATH = /V5.3:$PATH
$ DIRLIB = /V5.3/lib
$ DIRINC = /V5.3/include
$ OPUSOPT = "library = mesmalib.a, dirlib, dirinc"
$ export PATH DIRLIB DIRINC OPUSOPT
Evitar conversões de dados desnecessárias.
$ CONVNEED
Nos comandos de leitura (FIND, SEEK e LOCATE), o conteúdo de todo o registro lido é convertido para item de memória, além destes são convertidos os itens de outros arquivos lidos por JOIN automático.
Esta opção inibe a conversão total e automática, sendo assim, os itens de banco de dados só serão convertidos no momento de sua utilização, agilizando em alguns casos o processamento do programa.
A utilização desta opção deve ser criteriosa pois não permite JOINS automáticos, pois isso inviabilizaria a otimização.
Permitir o acesso a uma base de dados ORACLE.
$ORACLE
Permite que um programa OPUS acesse bases de dados ORACLE e OpenBASE simultaneamente.
Este comando instrui ao compilador para gerar um código fonte para o pré-compilador C do ORACLE, o ProC, com extensão ".pc" ao invés de um fonte C com extensão ".c". O fluxo de compilação invoca o compilador ProC.
Os comandos de acesso a base de dados OpenBASE continuam ativos e a base ORACLE é acessada através do comando com sintaxe SQL do ProC.
Opções para o pré-compilador ProC podem ser passadas pela opção $PCC_OPTIONS.
O exemplo a seguir mostra um programa com esta característica
*
* Teste Opus acessando base de dados ORACLE
* Uso concomitante do ORACLE com OpenBASE.
*
$ORACLE, savec
$pcc_options = "include=/usr/ORACLE/c/lib errors=yes host=c reclen=132"
prog
database TORACLE 1 a 2
use emp
EXEC SQL INCLUDE sqlca;
empno, mgr, sal, comm, deptno = 0
hiredate, ename, job = space(10)
usernome = "SCOTT"
password = "TIGER"
EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
EXEC SQL CONNECT :usernome IDENTIFIED BY : password;
0,0 say "Conectado ORACLE ao usuario: "+usernome
EXEC SQL DECLARE salespeople CURSOR FOR
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
FROM EMP;
EXEC SQL OPEN salespeople;
EXEC SQL WHENEVER NOT FOUND GOTO end_of_fetch;
?
nlin = 0
do while .t.
EXEC SQL FETCH salespeople INTO :empno, :ename, :job,
:mgr, :hiredate, :sal, :comm, :deptno;
incr nlin
replace empno, ename, job, mgr, hiredate, sal, comm, deptno
insert
enddo
LABEL SQL end_of_fetch
EXEC SQL CLOSE salespeople;
? "Transferidas ", nlin, " linha", iif(nlin = 1, ".", "s.")
EXEC SQL COMMIT WORK RELEASE;
?
? "Tenha um ", "BOM DIA" bold
quit (0)
LABEL SQL sqlerror
clear
? get_string (sqlca.sqlerrm.sqlerrmc, get_short(sqlca.sqlerrm.sqlerrml))
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK RELEASE;
quit (1)
Permite que um programa OPUS acesse um banco de dados SQL através do driver ODBC.
O banco de dados SQL é derivado a partir do banco de dados OpenBASE, através do utilitário BDSQL OPENBASE. Os dados podem ser descarregados do banco OpenBASE no formato <INSERT INTO <arq> values (<val1>,...<valn>> através da opção –q no bddesc e incluídos no banco SQL.
$odbc
set odbc on
Permite que alguns comandos e funções da OPUS gerem código para ODBC, podendo acessar bancos de dados SQL.
Comandos:
database, find, locate [start], seek, insert, delete, modify, empty, save, restore, set order to, sort on, unlock e undo.
Funções
chain(), reccount(), indreccoundt(). A função automática também gera código para ODBC.
O comando database tem a seguinte sintaxe:
database <banco><seg><nivel><modo abertura>
onde:
<banco> é o nome do DSN utilizado no ODBC.
<seg> é ignorado no ODBC.
<nivel> deve ser: "UID = <usuário>; PWD = <senha>;"
<modo> é o modo de abertura do banco.
Deve existir na máquina o diretório \USR\TSGBD\ODBC\, para que ao ser acessado durante a compilação de um programa Opus, o banco SQL, cria um dicionário OpenBASE neste diretório. Se este dicionário existir o banco SQL não é acessado. Se o banco SQL for alterado, o dicionário OpenBASE deve ser removido do diretório \usr\tsgbd\odbc, para que possa ser recriado.
Com esta opção, um programa Opus pode acessar um banco de dados SQL, sem que o código fonte do programa seja alterado.
Basta apenas existir o driver ODBC instalado e configurado na máquina.
Passar parâmetros para o compilador ProC.
$ PCC_OPTIONS = <expC>
|
<expC> |
Representam as opções para o pré-compilador ProC. |
Utiliza-se esta opção em conjunto da opção $ORACLE, para passar parâmetros ao pré-compilador ProC da ORACLE.
O exemplo a seguir mostra a utilização deste comando.
*
* Teste Opus acessando base de dados ORACLE
* Uso concomitante do ORACLE com OpenBASE.
*
$oracle, savec
$PCC_OPTIONS = "include=/usr/ORACLE/c/lib errors=yes host=c ireclen=132"
prog
database TORACLE 1 a 2
use emp
EXEC SQL INCLUDE sqlca;
...
...
