home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1991-10-26 | 5.9 KB | 137 lines |
- DEFINITION MODULE IndexFiles;
-
- (* Von Michael H. *)
- (* portiert nach M-2 August '91 von Christian Felsch und Peter Oleski. *)
- (* Diese ISAM ist Public Domain und darf von jedem für zivile Aufgaben *)
- (* benutzt werden. Eine Nutzung für militärische Zwecke ist untersagt ! *)
- (* Diese ISAM ist Peace-Ware ! *)
- (* --------------------------- *)
- (* Diese ISAM darf verändert und erweitert werden. Bei guten Erweiterungen *)
- (* und Fehlern benachrichtigung bitte an uns senden. *)
- (* Die ISAM hat unsere Platte NICHT zerstört aber wir übernehmen keine *)
- (* Verantwortung für nichts. *)
- (* Wir bitten aber, falls diese ISAM einmal eine Verwendung findet, uns *)
- (* mit dem Satz ' ISAM by Jau-Team ' zu erwähnen. *)
- (* Wird mit dieser Bibliothek ein kommerzielles Programm erstellt, so ist *)
- (* uns ein kostenloses Exemplar zuzusenden *)
- (* Zu erreichen unter: *)
- (* *)
- (* E-Mail: Peter Oleski oder Christian Felsch @ HH (MausNet) *)
- (* gelbe Post: Eißendorfergrenzweg 83a Bevenser Weg 18 *)
- (* 2100 Hamburg 90 *)
-
-
- (* Modul zur Verwaltung der Indexdateien *)
-
- (* Erläuterungen zu den zu übergebenden Variablen: *)
-
- (* I : Eingabewerte vom Benutzer *)
- (* o : nur interne Statusinformationen werden geändert *)
- (* O : relevante Informationen werden zurückgeliefert *)
-
-
- FROM IsamGlobals IMPORT IndexType, IdxFile,IsamKeyStr;
- FROM SYSTEM IMPORT BYTE;
-
-
- PROCEDURE IndexMake(VAR Index : IdxFile; (* O *)
- FName : ARRAY OF CHAR; (* I *)
- KeyLen : BYTE; (* I *)
- Typ : IndexType); (* I *)
-
- (* Kreiert neue Indexdatei *)
-
-
- PROCEDURE IndexOpen(VAR Index : IdxFile; (* O *)
- FName : ARRAY OF CHAR; (* I *)
- KeyLen : BYTE; (* I *)
- Typ : IndexType); (* I *)
-
- (* Öffnet Indexdatei *)
-
-
- PROCEDURE IndexReset(VAR Index : IdxFile); (* I/o *)
-
- (* Ein folgendes IndexNext liefert den ersten, ein folgendes IndexPrev *)
- (* den letzten Index. *)
-
-
- PROCEDURE IndexFlush(VAR Index : IdxFile); (* I/o *)
-
- (* Führt ein Flush auf Indexdatei aus *)
-
-
- PROCEDURE IndexClose(VAR Index : IdxFile); (* I *)
-
- (* Schließt Indexdatei *)
-
-
- PROCEDURE IndexErase(VAR Index : IdxFile); (* I *)
-
- (* Löscht Indexdatei *)
-
-
- PROCEDURE IndexAdd(VAR Index : IdxFile; (* I/o *)
- DataRecNum : LONGINT; (* I *)
- ProcKey : ARRAY OF CHAR); (* I *)
-
- (* Fügt einen neuen Index ein *)
-
-
- PROCEDURE IndexDel(VAR Index : IdxFile; (* I/o *)
- DataRecNum : LONGINT; (* I *)
- ProcKey : ARRAY OF CHAR); (* I *)
-
- (* Löscht einen Index. Bei Dups: man muß erst die DataRecNum ermitteln *)
- (* und dann übergeben um den richtigen von mehreren gleichen ProcKeys *)
- (* zu löschen . *)
-
-
- PROCEDURE IndexFind(VAR Index : IdxFile; (* I/o *)
- VAR DataRecNum : LONGINT; (* O *)
- ProcKey : IsamKeyStr); (* I *)
-
- (* Findet ein Listeneintrag. Der Eintrag muß garantiert in der *)
- (* Liste enthalten sein, sonst gibt es einen Fehler ! *)
- (* Bei Dups wird der passende Index mit der kleinsten DataRecNum *)
- (* zurückgeliefert. *)
-
-
- PROCEDURE IndexRefind(VAR Index : IdxFile; (* I/o *)
- DataRecNum : LONGINT; (* I *)
- ProcKey : IsamKeyStr); (* I *)
-
- (* Wie IndexFind, zuzätzlich wird DataRecNum berücksichtigt. *)
- (* Dient zum Wiederaufsetzen an einem zuvor gefundenen Index. *)
- (* Wenn der IndexZeiger durch z.B. ein Abspeichern verbogen ist *)
- (* kann man ihn hiermit wieder auf den vorherigen Index setzen *)
-
-
- PROCEDURE IndexSearch(VAR Index : IdxFile; (* I/o *)
- VAR DataRecNum : LONGINT; (* O *)
- VAR ProcKey : ARRAY OF CHAR); (* I/O *)
-
- (* Sucht nach einem Eintrag in der Liste. Wird keiner gefunden *)
- (* wird derjenige zurückgegeben, der alphabet. nach dem gesuchten folgt. *)
- (* Es reicht den Anfang vom ProcKey anzugeben. *)
- (* Sollte der Gesuchte nach dem Letzten der Liste folgen *)
- (* so wird ProcKey nicht geändert und fFileNotFound wird geliefert *)
-
-
- PROCEDURE IndexNext(VAR Index : IdxFile; (* I/o *)
- VAR DataRecNum : LONGINT; (* O *)
- VAR ProcKey : ARRAY OF CHAR); (* O *)
-
- (* Liefert den alphabet. Nachfolger zurück. Zuvor muß mit IndexFind/Search *)
- (* ( und ggf. IndexNext/Prev ) der interne Zeiger gesetzt werden. *)
-
-
- PROCEDURE IndexPrev(VAR Index : IdxFile; (* I/o *)
- VAR DataRecNum : LONGINT; (* O *)
- VAR ProcKey : ARRAY OF CHAR); (* O *)
-
- (* Liefert den alphabet. Vorgänger zurück. Zuvor muß mit IndexFind/Search *)
- (* ( und ggf. IndexNext/Prev ) der interne Zeiger gesetzt werden. *)
-
-
- END IndexFiles.