Um registro com estrutura ISIS tem duas características especiais que oferecem uma grande versatilidade para o tratamento de informação textual: campos repetitivos e de tamanho variável.
Considerando que os registros não têm um tamanho predeterminado, nem os campos têm um tamanho fixo, nem uma quantidade predeterminada de ocorrências, não é possível ter acesso direto a nenhuma porção de dados dentro da base. O acesso ao registro é feito de modo indireto, através de ponteiros em um arquivo auxiliar com extensão .XRF, e dentro do registro os dados são acessados através de ponteiros em um diretório. O arquivo .XRF contem toda a informação necessária para encontrar o ponto de início do registro solicitado dentro do .MST. Para todos os exemplos que seguem será usado o registro MFN=1 da base CDS, cujo conteúdo completo é o seguinte:
\cisis\bases\cds | Base de dados |
Nxtmfn nxtmfb nxtmfp t reccnt mfcxx1 mfcxx2 mfcxx3 RC 152 123 13 0 0 0 0 0 0 |
Registro de controle (control) |
Mfn= 1|mfrl= 370|mfbwb= 0|mfbwp= 0|base= 66|nvf= 8|status= 0| 0 |
leader |
Mfn= 1|dir= 1|tag= 44|pos= 0|len= 77 Mfn= 1|dir= 2|tag= 50|pos= 77|len= 11 Mfn= 1|dir= 3|tag= 69|pos= 88|len= 78 Mfn= 1|dir= 4|tag= 24|pos= 166|len= 68 Mfn= 1|dir= 5|tag= 26|pos= 234|len= 22 Mfn= 1|dir= 6|tag= 30|pos= 256|len= 20 Mfn= 1|dir= 7|tag= 70|pos= 276|len= 15 Mfn= 1|dir= 8|tag= 70|pos= 291|len= 12 |
dir |
Mfn= 1 44 «Methodology of plant eco-physiology: proceedings of the Montpellier Symposium» 50 «Incl. bibl.» 69 «Paper on: <plant physiology><plant transpiration><measurement and instruments>» 24 «Techniques for the measurement of transpiration of individual plants» 26 «^aParis^bUnesco^c-1965» 30 «^ap. 211-224^billus.» 70 «Magalhaes, A.C.» 70 «Franco, C.M.» .. |
fields |
O Registro de CONTROLE
Uma base ISIS tem um registro especial no início (MFN=0) ao qual CDS/ISIS não provê acesso. Este registro tem uma estrutura diferente dos demais registros do arquivo mestre (MST). A informação deste registro é mostrada com o parâmetro +control. A estrutura é:
Estrutura do registro de CONTROLE
Ctlmfn | Sempre 0. Este campo não aparece com o MX <dbn> +control. |
Nxtmfn | MFN a ser atribuído no próximo registro. |
Nxtmfb | Último bloco atribuído no .MST. Os blocos são de 512 bytes. |
Nxtmfp | Primeira posição livre dentro do último bloco atribuído. Um registro pode começar em qualquer posição livre entre 0-498 e estender-se por um ou mais blocos. Nenhum registro pode começar entre o byte 500 e 510. |
Mftype | Tipo de base de dados: 0 base do usuário, 1 base de mensagens do sistema. |
Reccnt | Reservado. |
Mfcxx1 | Reservado. |
Mfcxx2 | Bloqueio de entrada de dados, valores 0, 1…n, depende de quantos registros estão sendo editados em certo momento. |
Mfcxx3 | Bloqueio de leitura exclusiva, valores 0/1. |
O Registro de XREF
O arquivo .XRF está organizado como uma tabela de ponteiros para o arquivo mestre (.MST). O primeiro ponteiro corresponde ao MFN=1, o segundo ao MFN=2, etc. Cada ponteiro consiste de dois campos (4 bytes) que na tabela do exemplo anterior indicam que o MFN=1 começa no bloco 1 (comb) e dentro do bloco a partir do byte 65 (comp) e que não está pendente a atualização do arquivo invertido. O último valor é a referência real do ponteiro expressada em valor hexadecimal.
Cada bloco do .XRF é um arquivo de 512 bytes de tamanho e contem 127 ponteiros (dado importante para a reconstrução do .MST que é explicado no utilitário CTLMFN).
O Registro do Arquivo MST
Os registros do arquivo mestre são armazenados consecutivamente, um após outro, ocupando cada registro exatamente MFRL bytes. Cada arquivo é armazenado como blocos físicos de 512 bytes. Um registro pode começar em qualquer ponto entre a posição 0 e 498 e pode estender-se por um ou mais blocos. O registro MST tem tamanho variável e consiste de três seções:
• Uma de tamanho fixo (leader);
• Um diretório;
• Os campos de dados de tamanho variável.
Estrutura do LEADER
O leader consiste de um bloco de tamanho fixo de 18 bytes.
Mfn | Número de registro |
Mfrl | Tamanho total do registro, incluindo as três seções: leader, diretório e área de dados. Sempre é um número par. |
Mfbwb | Ponteiro para a versão anterior do registro, número do bloco dentro do MST. Inicialmente está com 0, e também após a atualização do arquivo invertido. |
Mfbwp | Ponteiro para a versão anterior do registro. Deslocamento dentro do bloco. |
Base | Posição onde começa a área de dados dentro do registro. Este valor é a soma do tamanho do leader mais o tamanho do diretório. |
Nvf | Quantidade de campos no registro, ou seja, a quantidade de entradas no diretório do Registro. |
Status | Indicador de apagado (0 = registro ativo; 1 = logicamente apagado) |
Estrutura do DIRETÓRIO
O diretório do registro é um índice para os conteúdos do registro no segmento de dados. Este índice é constituído por tantas entradas conforme o número de campos (nvf), permitindo o acesso aos dados. Cada entrada no diretório é formada por três partes:
Tag | Identificador de campo ou etiqueta |
Pos | ndereço em bytes onde começa o primeiro caráter na área de dados correspondente a esta ocorrência do campo. |
Len | Tamanho do campo em bytes. |