C-ISAM BESTANDEN

Het is onder BBx4 mogelijk om C-ISAM files te gebruiken. Men dient echter
zelf voor de run-time modules van Informix te zorgen.

Bij het openen van de bestanden moet worden aangegeven dat BBx met een
C-ISAM bestand aan de slag moet. Hiervoor dient elke open() te worden
uitgebreid met een MODE="CISAM". Indien dit achterwege wordt gelaten, kan
dit leiden tot een error 12, maar deze kan blijkbaar ook achterwege
blijven, waarna het bestand gewoon verziekt wordt.

De benadering van C-ISAM bestanden komt overeen met de benadering van
multikeyed MKEYED bestanden onder BBx. Dit betekent dat bij overgang naar
C-ISAM bestanden de BBx programma's moeten worden aangepast en dat een
aantal gebruikte methodes problemen kunnen geven. Het probleem is dat bij
het schrijven van een record niet langer de key mag worden opgegeven, omdat
de velden voor de sleutel uit het data deel worden gehaald.

Alle write() opdrachten zullen dus moeten worden aangepast. In sommige
gevallen wordt er een op lengte gebrachte key gebruikt met b.v. een masker
voor numerieke velden, terwijl in het datarecord de numerieke velden
zonder masker worden gebruikt. Dit kan bij C-ISAM files dus niet langer.
Het datarecord moet dan worden aangepast. Soms komt het voor dat de
sleutel niet (geheel) in het datarecord voorkomt, b.v. voor records met een
chronologisch volgnummer, waarbij het volgnummer alleen in de key is
opgenomen. Ook dit zal dan moeten worden aangepast.

In de "Additions and Corrections" worden nog een aantal C-ISAM afwijkingen
genoemd :

- Omgekeerde key volgorde wordt niet ondersteund door bestanden welke met
  C-ISAM zijn aangelegd
  *** wordt zelden of nooit gebruikt
- Als het eerste of laatste record door een andere gebruiker is verwijderd
  kunnen KEYF() en KEYL() verkeerd werken
  *** wordt zelden of nooit gebruikt
- FIND reset de filepointer wel, zodat errors 2 kunnen ontstaan bij verdere
  akties
  *** wordt weinig gebruikt
- TIM is niet beschikbaar als optie
  *** wordt waarschijnlijk nooit gebruikt
- Een geextract record wordt vrijgegeven bij de volgende READ, FIND of
  EXTRACT, voordat die aktie wordt uitgevoerd
  *** so what ?
- C-ISAM bestanden welke door INFORMIX4GL en ISQL zijn aangelegd krijgen
  niet noodzakelijk een primaire key. BBx verwacht een unieke primaire key,
  daarom gelden voor uitzonderingen de volgende regels :
  - READ loopt sequentieel door het bestand en slaat verwijderde records
    over
  - WRITE vervangt het geextracte record, als er geen record geextract is
    dat wordt het record over een voorheen verwijderd record heengeschreven
    of aan het einde van het bestand toegevoegd
  - Bij REMOVE moet i.v.m. de syntax KEY= worden gebruikt. Verder wordt
    niets met de key gedaan. KEY="" is dus geen probleem. Er wordt verwacht
    dat er een record geextract is en dit wordt verwijderd. Als er geen
    record geextract is, wordt er een error 17 afgegeven.
  *** alle bestanden hebben op de Pertec een unieke primaire key, dus dit
      is waarschijnlijk geen probleem
- Als via CISAM een single keyed bestand wordt aangelegd, dan wordt de
  recordlengte vergroot met de keylengte en wordt de key aan het einde van
  het bestand geplaatst. De flag ISNODUPS wordt gezet om aan te geven dat
  het bestand unieke primaire keys heeft.
  *** mogelijk heeft dit gevolgen voor het ALP en andere programma's welke
      records lezen en daarin gaan wroeten
- BBx kan niet overweg met variabele lengte C-ISAM files
  *** dat kon de Pertec ook niet
- C-ISAM file worden nooit gecached. Elk open kanaal verbruikt twee file
  handles en twee locks.
  *** Binnen DOS zijn zo'n 64 kanalen beschikbaar en daarvan worden er
      5 voor stdin, stdout, stderr, prn en com gebruikt. Er blijven er dan
      te weinig over voor b.v. een fakturering. Elk programma waarin UNT
      wordt gebruikt, vormt een mogelijk risico.
- Voor ERASE, OPEN en RENAME moet MODE=CISAM worden gebruikt.
  *** moet worden aangepast in de programmatuur, maar dat is met een search
      allemaal makkelijk op te sporen.
- Via SETOPTS kan op worden gegeven of BBx gecompileerd wordt met of zonder
  C-ISAM ondersteuning.
  *** Dit betekent waarschijnlijk dat alle programma's opnieuw gesaved
      moeten worden. Tegenwoordig wordt dit bijgehouden via byte 4 $01$.
      Vroeger werd byte 4 $10$ gebruikt om aan te geven dat C-ISAM
      bestanden werden ondersteund.
- Een C-ISAM file welke onder BBx is aangemaakt, is geen standaard file.
  Andere (niet INFORMIX) drivers kunnen mogelijk het bestand niet benaderen
  als het onder BBx is aangemaakt.
  *** hoe zit dit met Uniface ?


Terug naar het hoofdmenu... Terug naar het BBx menu... Alfabetische BBx inhoudsopgave...