home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / misc / isam / indexfil.d < prev    next >
Encoding:
Modula Definition  |  1991-10-26  |  5.9 KB  |  137 lines

  1. DEFINITION MODULE IndexFiles;
  2.  
  3. (*                             Von Michael H.                               *)
  4. (*  portiert nach M-2 August '91 von Christian Felsch und Peter Oleski.     *)       
  5. (*  Diese ISAM ist Public Domain und darf von jedem für zivile Aufgaben     *)
  6. (*  benutzt werden. Eine Nutzung für militärische Zwecke ist untersagt !    *)
  7. (*                         Diese ISAM ist Peace-Ware !                      *)
  8. (*                         ---------------------------                      *)
  9. (*  Diese ISAM darf verändert und erweitert werden. Bei guten Erweiterungen *)
  10. (*  und Fehlern benachrichtigung bitte an uns senden.                       *)
  11. (*  Die ISAM hat unsere Platte NICHT zerstört aber wir übernehmen keine     *)
  12. (*  Verantwortung für nichts.                                               *)
  13. (*  Wir bitten aber, falls diese ISAM einmal eine Verwendung findet, uns    *)
  14. (*  mit dem Satz ' ISAM by Jau-Team ' zu erwähnen.                          *)
  15. (*  Wird mit dieser Bibliothek ein kommerzielles Programm erstellt, so ist  *)
  16. (*  uns ein kostenloses Exemplar zuzusenden                                 *)
  17. (*  Zu erreichen unter:                                                     *)
  18. (*                                                                          *)
  19. (*      E-Mail: Peter Oleski        oder   Christian Felsch @ HH (MausNet)  *)
  20. (*  gelbe Post: Eißendorfergrenzweg 83a     Bevenser Weg 18                 *)
  21. (*                             2100 Hamburg 90                              *)
  22.  
  23.  
  24.  (* Modul zur Verwaltung der Indexdateien    *)
  25.  
  26.  (* Erläuterungen zu den zu übergebenden Variablen:       *)
  27.  
  28.  (*  I  : Eingabewerte vom Benutzer                       *)
  29.  (*  o  : nur interne Statusinformationen werden geändert *)
  30.  (*  O  : relevante Informationen werden zurückgeliefert  *)
  31.  
  32.  
  33.  FROM IsamGlobals IMPORT IndexType, IdxFile,IsamKeyStr;
  34.  FROM SYSTEM      IMPORT BYTE;
  35.  
  36.  
  37.  PROCEDURE IndexMake(VAR Index  : IdxFile;                 (* O *)
  38.                          FName  : ARRAY OF CHAR;           (* I *)
  39.                          KeyLen : BYTE;                    (* I *)
  40.                          Typ    : IndexType);              (* I *)
  41.  
  42.   (* Kreiert neue Indexdatei *)
  43.   
  44.   
  45.  PROCEDURE IndexOpen(VAR Index  : IdxFile;                 (* O *)
  46.                          FName  : ARRAY OF CHAR;           (* I *) 
  47.                          KeyLen : BYTE;                    (* I *)
  48.                          Typ    : IndexType);              (* I *)
  49.  
  50.   (* Öffnet Indexdatei *)
  51.   
  52.   
  53.  PROCEDURE IndexReset(VAR Index : IdxFile);                (* I/o *)
  54.  
  55.   (* Ein folgendes IndexNext liefert den ersten, ein folgendes IndexPrev *)
  56.   (* den letzten Index. *)
  57.   
  58.   
  59.  PROCEDURE IndexFlush(VAR Index : IdxFile);                (* I/o *)
  60.  
  61.   (* Führt ein Flush auf Indexdatei aus *)
  62.  
  63.  
  64.  PROCEDURE IndexClose(VAR Index : IdxFile);                (* I *)
  65.  
  66.   (* Schließt Indexdatei *)
  67.   
  68.   
  69.  PROCEDURE IndexErase(VAR Index : IdxFile);                (* I *)
  70.  
  71.   (* Löscht Indexdatei *)
  72.   
  73.   
  74.  PROCEDURE IndexAdd(VAR Index      : IdxFile;              (* I/o *)
  75.                         DataRecNum : LONGINT;              (* I *)
  76.                         ProcKey    : ARRAY OF CHAR);       (* I *)
  77.  
  78.   (* Fügt einen neuen Index ein *)
  79.   
  80.  
  81.  PROCEDURE IndexDel(VAR Index      : IdxFile;              (* I/o *)
  82.                         DataRecNum : LONGINT;              (* I *)
  83.                         ProcKey    : ARRAY OF CHAR);       (* I *)
  84.  
  85.   (* Löscht einen Index. Bei Dups: man muß erst die DataRecNum ermitteln *)
  86.   (* und dann übergeben um den richtigen von mehreren gleichen ProcKeys  *)
  87.   (* zu löschen . *)
  88.   
  89.  
  90.  PROCEDURE IndexFind(VAR Index      : IdxFile;             (* I/o *)
  91.                      VAR DataRecNum : LONGINT;             (* O *)
  92.                          ProcKey    : IsamKeyStr);         (* I *)
  93.  
  94.   (* Findet ein Listeneintrag. Der Eintrag muß garantiert in der    *)
  95.   (* Liste enthalten sein, sonst gibt es einen Fehler !             *)
  96.   (* Bei Dups wird der passende Index mit der kleinsten DataRecNum  *)
  97.   (* zurückgeliefert. *)
  98.   
  99.  
  100.  PROCEDURE IndexRefind(VAR Index      : IdxFile;           (* I/o *)
  101.                            DataRecNum : LONGINT;           (* I *)
  102.                            ProcKey    : IsamKeyStr);       (* I *)
  103.  
  104.   (* Wie IndexFind, zuzätzlich wird DataRecNum berücksichtigt.  *)
  105.   (* Dient zum Wiederaufsetzen an einem zuvor gefundenen Index. *)
  106.   (* Wenn der IndexZeiger durch z.B. ein Abspeichern verbogen ist *)
  107.   (* kann man ihn hiermit wieder auf den vorherigen Index setzen  *)
  108.  
  109.  
  110.  PROCEDURE IndexSearch(VAR Index      : IdxFile;           (* I/o *)
  111.                        VAR DataRecNum : LONGINT;           (* O *)
  112.                        VAR ProcKey    : ARRAY OF CHAR);    (* I/O *)
  113.  
  114.   (* Sucht nach einem Eintrag in der Liste. Wird keiner gefunden  *)
  115.   (* wird derjenige zurückgegeben, der alphabet. nach dem gesuchten folgt.  *)
  116.   (* Es reicht den Anfang vom ProcKey anzugeben. *)
  117.   (* Sollte der Gesuchte nach dem Letzten der Liste folgen *)
  118.   (* so wird ProcKey nicht geändert und fFileNotFound wird geliefert *)
  119.   
  120.  
  121.  PROCEDURE IndexNext(VAR Index      : IdxFile;             (* I/o *)
  122.                      VAR DataRecNum : LONGINT;             (* O *)
  123.                      VAR ProcKey    : ARRAY OF CHAR);      (* O *)
  124.  
  125.   (* Liefert den alphabet. Nachfolger zurück. Zuvor muß mit IndexFind/Search *)
  126.   (* ( und ggf. IndexNext/Prev ) der interne Zeiger gesetzt werden. *)
  127.                                             
  128.  
  129.  PROCEDURE IndexPrev(VAR Index      : IdxFile;             (* I/o *)
  130.                      VAR DataRecNum : LONGINT;             (* O *)
  131.                      VAR ProcKey    : ARRAY OF CHAR);      (* O *)
  132.  
  133.   (* Liefert den alphabet. Vorgänger zurück. Zuvor muß mit IndexFind/Search *)
  134.   (* ( und ggf. IndexNext/Prev ) der interne Zeiger gesetzt werden. *)
  135.  
  136.  
  137. END IndexFiles.