Parâmetros para MX e aplicações programadas para ambiente multiusuário

{netws | 14} | <dbn>.net ={0 | single | MONONETS} | {1 | full | FULLNETS} |{ 2 | master | MASTNETS}
Os valores do parâmetro correspondem aos valores 0, 1, 2, do parâmetro 14 do SYSPAR.PAR. O valor por default é MONONETS. Também é possível atribuir o parâmetro de rede a uma base de dados específica através de <dbn>.net=<n>
Exemplos:

14=1
netws=MASTNETS
cds.net=FULLNET

Parâmetro maxmfrl maxmfrl=<n>
Realiza a mesma especificação que o parâmetro mfrl=<n> da linha de comandos do
programa MX.
Parâmetro mstxl no CIPAR mstxl=<n> mstxl | <dbn>/mstxl=<n>
n=0 … 4 (0 é o valor por default, predefinido na Interface CISIS)
Determina o tamanho máximo que o arquivo .MST pode ter. Este parâmetro é lido e considerado somente durante a criação da base de dados.

<n> Máximo .MST Registro em bytes múltiplo de
0 512 MB 2(valor por default)
1 1GB 2
2 2GB 4
3 ou 4 4GB 8

Exemplo:

cds/mstxl=3

Estes parâmetros também se aplicam ao WinISIS, ISIS.DLL e WWWISIS e a todas as aplicações desenvolvidas com a Interface CISIS. Como superar o limite de 512 MB para o arquivo mestre:
O ponteiro de cada registro do .MST está armazenado no .XRF. Este ponteiro se divide em dois campos: o campo número do bloco e o campo deslocamento (offset) dentro do bloco. Estes dois campos ocupam respectivamente 20 e 9 bits.
Dica:
Além destes campos, há 2 bits para flags de “I/F update is pending” (um para registro Novo e outro
para registro Modificado). O ponteiro tem 4 bytes e é tratado como inteiro com sinal (um valor negativo indica fisicamente/logicamente apagado). Desta forma o limite é de 512 MB, como indicado mais abaixo: 2**20-1 = 1048675 blocos de 512 (offset a partir de 0 até 2**9-1 = 511)
A implementação do MSTXL na Interface CISIS usa offset para blocos de 512 bytes em unidades de 2, 4 e 8 bytes (usando por tanto 8, 7 e 6 bits para armazenar o offset) e número de bloco em 21, 22, e 24 bits, respectivamente, para mstxl = 1, 2, e 3 (ou 4). A indicação de um arquivo mestre em formato MSTXL está armazenada no byte mais à esquerda do campo MFTYPE do registro de controle do .MST, que é reinicializado quando é carregado na memória para processamento. Esta indicação é “recordada” por CISIS durante as leituras/gravações posteriores até que esse arquivo mestre seja fechado. É suficiente criar um arquivo mestre com um CIPAR que contenha mstxl=<n> ou <dbn>/mstxl=<n> para que os processos subseqüentes respeitem essa inicialização independentemente do CIPAR.
Parâmetro dbxtrace=y dbxtrace=y
EXIBE mensagens na saída padrão (stdout – standard output ):

dbxopen - <dbn><.ext> fd=<n> [R]
dbxopen - <dbn><.ext> fd=<n> [RW]

<n> número de descritor de arquivo
[R] arquivo foi aberto para leitura (read)
[RW] arquivo foi aberto para leitura/gravação (read/write)
dbxtrace=y idem “trace=dbx” do MX ( como trace=rec, trm, giz, b40, par, mul, etc)
Parâmetro mstload=<n> mstload=<n>
Carrega na memória e fecha os arquivos mestres (default=0).
mstload=<n>
idem “load=<n>” do MX, para M/F
Parâmetro invload=<n> invload=<n>
Carrega na memória e fecha os arquivos invertidos (default=0).
invload=<n> idem “load=<n>” del MX, para I/F
Parâmetro mcose={y|n} mcose={y|n}
Fecha todos os arquivos mestres (default=n).
mcose=y só permanece aberto um arquivo mestre
Parâmetro iflush={y|n} iflush={y|n}
Esvazia todos os arquivos invertidos (default=n).
iflush=y  só permanece aberto um arquivo invertido com seu “data base descriptor” na memória.
Parâmetro mflush={y|n} mflush={y|n}
Esvazia todos os arquivos mestres (default=n).
mflush=y só permanece aberto um arquivo mestre com seu “data base descriptor” na memória. (data base descriptor inclui buffers de e/s e gizmos).
Parâmetro what={y|n} what={y|n}
Exibe a versão CISIS (default=n).
what=y idem “what” do MX (chamado como único parâmetro do MX)
Exemplos
• Criar um arquivo mestre sem registros ou reinicializar um existente mx seq=NUL create=NOVO
Se existir uma base de dados com esse nome, MX não avisará que esta será eliminada
irreversivelmente.
• Compactar uma base de dados
Este procedimento recuperará o espaço perdido no MST pelas sucessivas atualizações de registros.
mx DADOS -all now create=DBN_AUX tell=100
xcopy DBN_AUX.* DADOS.*
del DBN_AUX.*
FULLINV DADOS DADOS.FST DADOS
• Verificar elementos duplicados
Desejando-se verificar no catálogo de livros que não existem números de inventário duplicados. Os inventários são registrados no campo 7 e são indexados com técnica 0 com o prefixo INV=, isto é: |INV=|v7 .
mx LIVROS “pft=(if npost(|INV=|v7) > 1 then mfn,x3,v7/ fi)” tell=100 now >
duplic.lst
O procedimento requer que esteja presente o arquivo invertido.
• Fazer uma análise rápida dos campos usados em uma base de dados
São necessários os programas MX.EXE e MXF0.EXE e estes dois arquivos de formatos:
DMXF0A.PFT
‘Análise dos dados da base ‘,v1001/#
” 1001 = input master file name …………….. “v1001/,
” 1003 = date & time stamp …………………. “v1003/,
” 1009 = total number of records ……………. “v1009/,
” 1010 = number of active records …………… “v1010/,
182Utilitários CISIS – Manual de Referência
Apêndice II – Arquivo CIPAR
” 1011 = number of logically deleted records …. “v1011/,
” 1012 = number of phisically deleted records … “v1012/,
DMXF0B.PFT
/#
“TAG DOCS OCCS”d1020/
“———————“d1020/
,(v1020^t,v1020^d,v1020^o/),
Com este se prepara um arquivo .bat, como o siguinte:
MYSCAN.BAT
REM %1 = <dbn_name> %2 = <nro regs estimados>
REM
mxf0 %1 create=lista %2 tell=100
mx lista pft=@dmxf0a.pft now > %1.lst
mx lista pft=@dmxf0b.pft now >> %1.lst
A execução de MYSCAN.BAT requer dois parâmetros de entrada, a base de dados com
seu path e a quantidade estimada de registros que contem.
Como resultado será gerado um arquivo com o nome da base e extensão .lst.
Exemplo:
myscan c:\dbisis\cds\cds 150
• Eliminar termos duplicados em um campo repetitivo
Supondo que os descritores são registrados no campo v87, como campo repetitivo.
mx DADOS fmtl=20000 proc=@LIMPO from=1 to=100 now -all create=OUT
O arquivo LIMPO tem a seguinte especificação de formato:
proc(‘d870d871’),
( if v870[1] : s(v87|~|)
then
else proc(‘D870A870|’v870[1],v87’~|’,’A871|’v87’|’)
fi ),
proc(‘d870’),
proc(‘d87d871’,|A87~|v871|~|),
• Controle de qualidade dos dados
É oferecido um modelo simplificado de um arquivo .bat para realizar vários controles sobre uma base de dados. Para este exemplo, dispõe-se de uma base de dados chamada TEST para a qual são realizados os controles indicados no menu, e uma base THES (tesauro) contra a qual são validados os descritores de TEST .
CHK.BAT
@echo off
:BEGIN
cls
echo ———————————————————–
echo QUALITY CONTROL
echo ———————————————————–
echo.
echo E – Delete invalid characters (clean records)
echo O – Check mandatory fields
echo D – Check Descriptors
echo X – Exit
echo.
choice /c:EODX /N Select one option:
if errorlevel 4 goto END
if errorlevel 3 goto DESCRIPTORES
if errorlevel 2 goto OBLIGATORIOS
if errorlevel 1 goto CLEAN
:CONTINUA
echo.
echo (Press any key to continue…)
pause > nul
goto BEGIN
:CLEAN
call OPC_CLN. BAT
goto CONTINUA
:OBLIGATORIOS
call OPC_OBL.BAT
goto CONTINUA
:DESCRIPTORES
call OPC_DES.BAT
goto CONTINUA
:END
O procedimento é completado com uma série de arquivos .bat que realizam cada uma
das opções apresentadas. Os arquivos são denominados OPC_xxx , onde xxx representa cada uma das opções do menu. Cada OPC_xxx ativa um programa CISIS que chama um arquivo in=<text_file> que contem os parâmetros necessários para a função de validação. Associado a este <text_file> há um arquivo de formato com o mesmo nome e com extensão .pft , que será usado para a validação dos dados. Se a validação é realizada contra um arquivo invertido, o in=<text_file> deverá chamar
um procedimento de jchk .

OPC_CLN.BAT
@echo off
mxcp \dbisis\TEST \dbisis\TEST clean > garbage
OPC_OBL.BAT
@echo off
echo Wait..
mx in=chk00 >> errores.tmp
CHK00
\dbisis\test
pft=@chk00.pft
-all
now
CHK00.PFT (exemplo de um .PFT de validación)
if a(v02) then mfn,c8,'02->FATAL ERROR: field #2 missing!' fi/
if a(v01) then mfn,c8,'01->ERROR: field #01 missing!' fi/
if a(v923) and p(v23) then mfn,c8,'923->ERROR: field #923 missing!' fi/
if v31<>'ENG' then mfn,c8,'31->ERROR: field #31 invalid!' fi/
OPC_DES.BAT
@echo off
echo Wait...
mx in=chk620 >> errores.tmp
CHK620 (verifica el campo 620 contra um tesauro)
\dbisis\test
jchk=Thes=mhu,(v620/)
pft=@chk620.pft
-all
now
CHK620.PFT
if p(v32001) then ( if a(v32001^m) then mfn,c8,|620->|v32001^k,c65,'*invalid'/
fi ) fi
• Apêndice II - Arquivo CIPAR
Índice especial de títulos
Ao indexar o campo de título (séries ou monografias) com técnica 0 (campo completo), a ordenação alfabética destes no dicionário não respeita as normas biblioteconômicas de não considerar as palavras tais como: A, An, El, Os, The, etc. No CDS/ISIS é possível obter a saída impressa de forma correta se essas palavras estiverem entre <..>, mas esta solução não está disponível para o arquivo invertido. O seguinte exemplo resolve o problema. Será indexado o campo v24 (título), entre os registros 15 e 20, de três maneiras para comparar os resultados. Os exemplos 1 e 2 mostram o que é obtido através do CDS/ISIS padrão, e o exemplo 3 mostra a solução do problema.
Usando-se a seguinte FST: 240 0 v24
mx CDS from=15 to=20 now -all "fst=240 0 v24" ifupd/create=cds
ifkeys cds +tags
1| 240|<A> METHOD OF DETERMINING EVAP
1| 240|<THE> HEAT RESISTANCE OF PLANT
1| 240|<THE> MEASUREMENT OF DROUGHT R
1| 240|<THE> ROLE OF DEW IN PINE SURV
1| 240|GAUGES FOR THE STUDY OF EVAPOT
1| 240|MEASUREMENT OF DROUGHT RESISTA

Todos os títulos que tem <…> aparecem no início do dicionário, pois o caráter < tem um valor ASCII menor do que a letra “A”. Usando-se a seguinte FST: 240 0 mhu,v24 mx CDS “fst=240 0 mhu,v24” ifupd/create=cds now -all from=15 to=20
O seguinte resultado é apresentado no dicionário:
Ifkeys CDS +tags

1| 240|A METHOD OF DETERMINING EVAPOT
1| 240|GAUGES FOR THE STUDY OF EVAPOT
1| 240|MEASUREMENT OF DROUGHT RESISTA
1| 240|THE HEAT RESISTANCE OF PLANTS,
1| 240|THE MEASUREMENT OF DROUGHT RES
1| 240|THE ROLE OF DEW IN PINE SURVIV

Devido ao uso de MHU, os <..> não aparecem no dicionário. A alfabetação considera as palavras não significativas. A solução é obtida usando um gizmo= WORDS , cujo conteúdo é:

mfn= 1
1 «<The> »
mfn= 2
1 «<El> »
mfn= 3
1 «<An> »
mfn= 4
1 «<A> »
mfn= 5
1 «<L' >»
mfn= 6
1 «<LA> »
mfn= 7
1 «<La> »
mfn= 8
1 «<L'>»
..

Não há campo 2 no gizmo, porque a conversão transforma o dado do campo 1 em uma saída nula. Além disto, deixa-se um espaço em branco ao final de cada campo para que os campos de títulos, depois de aplicado o gizmo, não comecem com um espaço em branco.

mx CDS from=15 to=20 now -all "fst=240 0 v24" ifupd/create=cds gizmo=words,24
ifkeys CDS +tags
1| 240|GAUGES FOR THE STUDY OF EVAPOT
1| 240|HEAT RESISTANCE OF PLANTS, ITS
2| 240|MEASUREMENT OF DROUGHT RESISTA
1| 240|METHOD OF DETERMINING EVAPOTRA
1| 240|ROLE OF DEW IN PINE SURVIVAL I

Deixe um comentário