DE2527441A1 - Verfahren und vorrichtung zur kennzeichnung von datenfeldern - Google Patents
Verfahren und vorrichtung zur kennzeichnung von datenfeldernInfo
- Publication number
- DE2527441A1 DE2527441A1 DE19752527441 DE2527441A DE2527441A1 DE 2527441 A1 DE2527441 A1 DE 2527441A1 DE 19752527441 DE19752527441 DE 19752527441 DE 2527441 A DE2527441 A DE 2527441A DE 2527441 A1 DE2527441 A1 DE 2527441A1
- Authority
- DE
- Germany
- Prior art keywords
- field
- length
- separator
- fields
- symmetrical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 51
- 238000001514 detection method Methods 0.000 claims description 12
- 230000004807 localization Effects 0.000 claims description 6
- 230000002457 bidirectional effect Effects 0.000 claims description 5
- 239000002131 composite material Substances 0.000 description 6
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
Description
51-01449 Ge 19. Juni 1975
HONEYWELL INFORMATION SYSTEMS INC.
200 Smith Street
Waltham, Mass., USA
Waltham, Mass., USA
Verfahren und Vorrichtung zur Kennzeichnung von Datenfeldern.
Die Erfindung bezieht sich auf ein Verfahren sowie auf eine
Vorrichtung zur Kennzeichnung der Länge oder des Types von Datenfeldern innerhalb einer Reihe von aufeinanderfolgenden
Datenfeldern, wobei die Kennzeichnungen zwischen den Datenfeldern angeordnet sind.
Bei der seriellen Speicherung von Daten in einem Computersystem besteht ein grundlegendes Problem darin, den Typ und/oder die
Länge von nicht-vorhersagbaren Folgen von Datenfeldern zu bestimmen. Eine grundlegende Anforderung im Zusammenhang mit diesem
Problem besteht darin, daß die Datenfolge in jeder Richtung abtastbar sein muß.
Im Stand der Technik sind zwei Verfahren zur Codierung solcher Datenfolgen bekannt. Ein Verfahren besteht darin, ein oder mehrere
Feldseparatorzeichen vorzusehen, die ihrerseits keine legalen Zeichen darstellen. In diesem Zusammenhang sei auf die
Veröffentlichung von F.. IJ. Beitz, "The Interpretation of Structured Stored Data Using Delimiters", Proc. 1970 ACM
609883/0858
SIGFIDET Workshop on Data Description & Access, November 1970,
Seiten 188 - 200, verwiesen. Dort wird ein zyklischer FIFO-Puffer
benutzt, in welchem eine einzelne Hinweisadresse die laufende Daten-Eingangsstelle definiert. Feldnamen und/oder
Längen werden in unmittelbarerNachbarschaft der Folge von Feldwerten gespeichert. In Figur 1 ist dieser Stand der Technik
dargestellt, wobei die Feldnamen und/oder Längen A. , B , C, und D, in unmittelbarer Nachbarschaft der Feldwerte (A)1,
(B),, (C), und (D)1 gespeichert sind. Die Buchstaben L (A)-,
L (B),, L (C), usw. bezeichnen die Längen der entsprechenden Feldwerte. Um den Pufferspeicher von links nach rechts abzutasten
wird die Startadresse des nächsten Feldes durch Addition der vorhergehenden Feldlänge und der Startadresse berechnet.
Mit dieser bekannten Technik ist jedoch eine Abtastung von rechts nach links nicht möglich, da hierbei der Feldvert zuerst
registriert wird und sein zugehöriger Käme ohne Kenntnis der Länge des Feldes nicht ermittelt werden kann.
Eine andere im Stand der Technik bekannte Lösung ist in Figur dargestellt und vermeidet diese Beschränkung in der Abtastrichtung
indem die Feldnamen A3, B3, C3 und D2 von den Feldwerten (A)2, (B)2' (c)2 usw· abgetrennt werden, was einen wahlfreien
Zugriff gestattet. Die Feldnamen werden mit fester Länge angenommen und in einer getrennt angeordneten Liste gespeichert,
welche beginnend an jedem Ende indiziert oder abgetastet werden kann. Bevor ein Datenblock auf ein Magnetband geschrieben wird,
wird die Folge von Feldnamen der Folge von Feldwerten hinzugefügt. Figur 2 zeigt diese Lösung, wobei die Feldnamen A2/ B2,
C2 und D2 in umgekehrter Pveihenfolge wie ihre entsprechende
Wertfolge (A)3, (B)2, (C)2 usw. gespeichert sind und die
Auflistung der Feldnamen am Ende des Datenblockes beginnt. Namen und Werte werden gleichzeitig gespeichert und beide benutzen eine
gemeinsame Gruppe von unbenutzten Byte-Zellen in der Mitte des Datenblockes. Diese bekannte Technik erweist sich jedoch insofern
5G3883/Q858
als nachteilig, als sie die physikalische Verkettung der Daten und/oder ihre logische Verbindung verkompliziert.
Eine mögliche Lösung des vorliegenden ProblemeSj die bisher iir
Stand der Technik nicht bekanntgeworden ist, ist in Figur 3A dargestellt. Diese Lösung gestattet eine Abtastung der Kette
von Datenfeldern in beiden Richtungen, indem die Feldnamen A3, B_, C_ und D, vor und hinter jedem Feldwert (A) _, (E)3,
(C)- und (D)- angeordnet sind. Bei diesem Verfahren verdoppelt sich jedoch der erforderliche Speicherplatz für die Speicherung
der Feldnamen.
Es ist die Aufgabe der vorliegenden Erfindung ein Verfahren zur Kennzeichnung der Länge oder des Types von Datenfeldern innerhalb
einer Reihe von aufeinanderfolgenden Datenfeldern anzugeben, bei dem die Kennzeichnungen zwischen den Datenfeldern angeordnet
sind und das eine Abtastung der Datenfelder in beiden Richtungen gestattet, wobei jedoch der erforderliche Speicherplatz für die
Kennzeichnungen auf ein Minimum beschrankt bleibt. Die Lösung dieser Aufgabe gelingt gemäß der im Anspruch 1 gekennzeichneten
Erfindung. Weitere vorteilhafte Ausgestaltungen des Verfahrens sowie von Vorrichtungen zur Behandlung von nach dem erfindungsgemäßen
Verfahren gekennzeichneten Datenblöcken sind den Unteransprüchen entnehmbar.
Gemäß der Erfindung wird eine Zweirichtungs-Abtastung einer Folge von Feldern mit variabler Länge durch einesymmetrische Differenz
(oder Eool'sche Differenz) & AE gefördert, welche sich als
übertragsfreie Exklusiv-ODER-Summe (bitweise Modulo-zwei-Summe)
der die Länge beschreibenden Binärcodes darstellt, wobei diese Summe jeweils hinsichtlich zweier benachbarter Felder A und B
gebildet wird (z.B. AAB = A © B) . Die symmetrische Differenz
irgendzweier benachbarter Felder wird durch die Computer-Hardware erzeugt und als Trennmarke zwischen zwei benachbarten
503883/0858
Feldern benutzt. Sind die symmetrischen Differenzen für die
Folgen von benachbarten Feldern einmal erzeugt, wie dies in Figur 3B dargestellt ist, so können diese Folgen von Feldern
wahlweise in beiden Richtungen abgetastet werden.
Es sei beispielsweise angenommen, daß eine Abtastung von links nach rechts gemäß Figur 3B begonnen wurde. Bei gegebener Identität
des ersten Feldes (A) sei die Identifizierung des zweiten unbekannten Feldes (B) gefordert. Die Feldlänge des Feldwertes
(A) wird einer Tabelle von Feldlängen oder direkt dem Separator A entnommen. Das Δ AB-FeId wird sodann aufgesucht und die
Differenz Δ AB wird in einer Exklusiv-ODER-Addition dem bekannten
Feldnamen A hinzuaddiert, um B zu erhalten. In gleicher Weise ist Δ. BC bezogen auf Δ. AB über die Länge des Feldwertes
(E), die zuvor als B berechnet wurde, auffindbar, so daß sich
über eine Exklusiv-ODER-Addition C=D+ 4EC ergibt. Da E = C
+ Δ BC und A = B + Δ. AB usw. ist, arbeitet dieses Verfahren
in gleicher Weise zufriedenstellend, unabhängig davon, ob die Abtastung von rechts nach links oder von links nach rechts erfolgt.
Für den Fall, daß ein symmetrischer Differenz-Separator einen Fehler aufweisen sollte, kann dieser Fehler in vorteilhafter
Weise lokalisiert werden, indem eine Vorwärts- und eine Rückwärts-Abtastung vorgenommen wird und während jeder Abtastung
für jeden symmetrischen Differenz-Separator absolute Adressen erzeugt werden. Ein Vergleich dieser beiden Sätze von absoluten
Adressen zeigt den genauen Ort an, wo der Fehler aufgetreten ist, wenn die miteinander verglichenen Adressen übereinstimmen.
Anhand von in den Zeichnungen dargestellten Ausführungsbeispielen wird im folgenden das erfindungsgemäße Verfahren beschrieben
und es werden weiterhin Vorrichtungen beschrieben, die von
509883/0858
den durch das erfindungsgemäße Verfahren erzeugten Kennzeichnungen
Gebrauch machen. Es zeigen:
Figuren 1 und 2 im Stand der Technik bekannte Lösungen des vorliegenden
Problemes,
Figur 3A eine bisher nicht bekannte Lösung des Problemes, die
für die Erläuterung der vorliegenden Erfindung hilfreich ist, Figur 3B einen sequentiell codierten Datenaufbau gemäß der
Erfindung,
Figur 4 einen bekannten, baumartigen Datenaufbau, der bei der Erfindung benutzt wird,
Figur 5 einen anderen sequentiell codierten Datenaufbau gemäß der Erfindung, welcher von der baumartigen Datenstruktur gemäß
Figur 4 Gebrauch macht,
Figuren 6A und 6E logische Blockdiagramme gemäß der Erfindung für die Vorwärts- und Rückwärts-Abtastung der Datenstrukturen,
Figur 7 ein logisches Blockdiagramm gemäß der Erfindung für die Abtastung von baumartig geordneten Datenstrukturen,
Figuren 8A bis 8C Hardware-Diagramme für die Erzeugung eines symmetrischen Differenzcodes und
Figur 9 ein Hardware-Diagramm für die Feststellung und die Korrektur von Fehlern hinsichtlich eines symmetrischen Differenz-Separators
an irgendeiner Stelle.
Allgemeine Erläuterung Darstellung von veränderlichen Datenfeldfolgen
Eine sequentielle Dateneingabe und ihre Aufzeichnung auf einem Serienspeicher, beispielsweise einer Bandkassette, wird üblicherweise
durch die Verwendung eines FIFO-Pufferspeichers mit Doppelenden, eine Tastatureingabe (Laden) und eine Bandausgabe (Schreiben)
bewerkstelligt (siehe hierzu D. R. Knuth: "The Art of Computer Programming", Band 1 Fundamental Algorithms, Addison-Wesley,
Reading, Mass. 1968). Der Pufferspeicher ist zyklisch
SQ9383/0858
-G-
organisiert, so daß auf die physikalischen Start-und Endadressen
keine Rücksicht genommen werden muß. Logisch sind die Enden des Pufferspeichers miteinander verbunden durch Berechnung von
Adressen Modulo die Puffergröße, so daß wenn eine "1" an der Endadresse hinzuaddiert wird, das Ergebnis die Startadresse
darstellt. Im allgemeinsten Fall kann das Lesen oder Schreiben eines Bandblockes aus einem Sektor des Pufferspeichers gleichzeitig
mit der Einfügung oder Löschung eines Datenfeldes in einem anderen Pufferspeichersektor vonstatten gehen.
Das hier zu betrachtende Problem besteht in der Speicherung einer Folge von Datenfeldern von veränderlichem Typ. Zwei Anwendungsanforderungen
treten gemeinsam auf, wobei die FIFO-Pufferspeicherorganisation in Schwierigkeiten gerät:
1. Wahlfreie oder veränderliche Tabellenelemente (Occurrences): Einige Feldtypen können als Merkmale eine wahlfreie oder
veränderliche Anzahl von Tabellenelementen aufweisen. In einem solchen Fall ist der nächste Feldtyp manchmal nicht
vorhersagbar, so daß Feldtypidentifizierer (Namen) zusammen mit den Daten aufgezeichnet werden müssen.
2. Zweirichtungs-Abtastung: Wenn sowohl eine Rückwärts- als
auch eine Vorwärts-Abtastung der Datei gefordert wird, wobei diese Abtastung Feld für Feld erfolgen soll, so ergibt
sich eine Datenreihe mit zwei Enden auf dem Band oder der physikalischen Eingabe/Ausgabe-Seite.
Die erste Anforderung wird durch den Wunsch nach einer flexiblen Ursprungsdatenbildung oder gar durch eine Dateneingabe in freier
Form (selbstbeschreibend) bestimmt. Die zweite Forderung ist in Funktionen, die beispielsweise der Druckaufbereitung oder der
Korrektur im direkten Zugriff ^enthalten, wobei von einem Operator
oder einem Funktionskennschlüssel Gebrauch gemacht wird, der es erlaubt, ein Zeichen vor einem zuvor gesetzten Zeichen
5 0 98 8 3/0858
einzufügen oder bei einer Darstellung auf einer Kathodenstrahlröhre
durch Einschreiben einer neuen Zeile am Kopf oder Ende der Darstellung eine Verschiebung aller Zeilen um 1 nach unten
oder nach oben unter Löschung der jeweils letzten Zeile zu bewirken .
Empfohlene Lösung - Eine Lösung,die Beschränkung auf eine
Einweg-Abtastung bei einem Format gemäß Figur 1 zu umgehen, besteht darin, einen Feldnamen vor und hinter jedem Feldwert
anzuordnen, wie dies in Figur 3A dargestellt ist. Auf diese Weise wird jedoch der für die Speicherung der Feldnamen erforderliche
Platz verdoppelt. Die erfindungsgemäß empfohlene
Lösung besteht in einer einfachen Erweiterung dieses Formates, wodurch die doppelte Speicherung von Feldnamen vermieden wird
(siehe Figur 3B).
Figur 3A zeigt an beiden Enden eines jeden Feldwertes einen Namen A, B usw. bestehend aus einem Ein-Byte-Symbol. Gemäß
Figur 3B sind die beiden jeweils ein Paar von Feldwerten trennenden Symbole zu einem einzigen Symbol kombiniert worden
mit Ausnahme am Anfang und Ende der Feldreihe. Dieses eine Symbol bildet die "symmetrische Differenz" zwischen den beiden
Feldnamen, die es ersetzt. Die Feldnamen am Anfang und Ende der Feldreihe können als symmetrische Differenzen betrachtet
werden, die sich durch Kombination mit dem Feldwert Null ergeben .
Die symmetrische Differenz (oder Bool'sche Differenz) AB ist
definiert als die übertragsfreie, Exklusiv-ODER-Summe (bitweise
modulo-zwei-Summe) der Binärcodes von A und B: AB = A + B.
Wenn A und B k-Bit-Symbole sind, so erfüllt die vorzeichenrichtige
algebraische Differenz AB = (B-A) oder die Ringsumme
A + B (mod 2k) die gleiche Aufgabe. Die symmetrische Differenz
ist jedoch einfacher und schneller auf Maschinen mit einem
509883/0858
Exklusiv-ODER-Befehl. Die anderen beiden Operationen müssen
durch eine Subtraktion ersetzt werden, wenn die Abtastrichtung umgekehrt wird, während die Exklusiv-ODER-Operation unabhängig
von der Richtung der Abtastung ist.
Es gibt zwei verschiedene Interpretationen für die Codes A und B, auf welchen die symmetrische Differenz basiert. In Figur 3B
ist eine indirekte oder veränderliche Feldtypinterpretation angezeigt, wobei A und B die tatsächlichen Werte der Feldtypcodes
darstellen und die zu den Werten A und B zugehörigen Feldlängen in einer getrennten Tabelle gespeichert sind, auf die durch
den Feldtypcode Bezug genommen wird. Bei der zweiten Interpretation stellen A und B die tatsächlichen Werte der Feldlängen dar.
Diese zweite Interpretation, bei welcher die Typcodierungen direkt mit der Feldlänge übereinstimmen, soll später erläutert
werden.
Es sei beispielsweise angenommen, daß gerade mit einer Abtastung von links nach rechts in Figur 3B begonnen wurde. Bei gegebener
Identität des ersten Feldes (A) soll das zweite unbekannte Feld vom Typ B identifiziert werden. Es wird die Differenz Δ AB zu
dem ersten Feldnamen A addiert, nachdem Δ. AB ermittelt wurde,
indem die Länge des Feldes A in einer Tabelle aufgesucht wurde. Sodann wird & EC bezogen auf Λ AB ermittelt über die Länge des
Feldes von B und sodann wird C = E ® & BC errechnet, um das
dritte Feld zu bestimmen. Da B = C © Δ BC und A = Β® Δ AB usw.
ist, arbeitet dieses Verfahren gleich gut,unabhängig davon, ob mit der Abtastung von rechts oder links begonnen wird, wobei
jedoch Voraussetzung ist, daß auch die Identität des am weitesten rechts liegenden Feldes bei der Blockeingabe bekannt
ist.
509883/0858
Andere Anwendungen
Die zuvor skizzierte Lösung setzt eine relativ kleine Anzahl von Feldtypen voraus, wobei jeder Feldtyp von konstanter bekannter
Länge war und sich oft genug wiederholte, um eine gespeicherte Tabelle von Feldlängen zu rechtfertigen. Andere Anwendungen
sollen nunmehr betrachtet v/erden.
Textaufbereitung - Bezüglich einer Textaufbereitung besitzt eine bidirektionelle Abtastung augenscheinliche Vorteile. Eine
geringe Änderung hinsichtlich der Semantik des Abtastalgorithmus erlaubt seine Anwendung auf eine angrenzende Folge von
Worten oder anderen Grunde leinen ten des Textes.
Ein wesentlicher Gesichtspunkt ist der, daß nunmehr die Felder nicht mehr bloß aus einer Wiederholung einiger Weniger ( ^ 255
bei 8-Bit-Symbolen) Feldtypen von fester Länge bestehen. Tatsächlich
können nunmehr alle Felder als Glieder einer einzigen Feldklasse mit veränderlicher Länge betrachtet werden. Es sind
nunmehr wenigstens 255 Feldidentifizierer für andere Gebrauchszwecke
vorhanden (die Null ist für den Nullfeldidentifizierer
reserviert). Aus diesem Grund definieren alle Worte mit der Länge k, wobei 1 ■$: k $ 255 istfGlieder der K.tenfeldklasse
und ordnen den Einärwert von k als Identifizierer dieser Klasse zu. Der reservierte Nullfeldtyp ist mit dieser Übereinkunft
vereinbar. Symmetrische Differenz-Separatoren werden nun wie zuvor berechnet mit einem zusätzlichen Vorteil, der darin besteht,
daß die Tabelle, welche früher die Feldlänge definierte und durch den Feldtyp indiziert wurde, nunmehr zum Identitätsplan wird und nicht langer benötigt wird.
Die Einführung symmetrischer Differenzcodes als Feld-Separatoren beinhaltet keine Erweiterung des Textvolumens. Beispielsweise
sei angenommen, daß ein Grundelement des Textes als irgendeine
509883/0858
fortlaufende Folge von schrittfreien Zeichen zwischen Fchrittzeichen
definiert ist. Jedes aneinander grenzende Paar von Schrittzeichen kann sodann so angesehen x^erden, als würde es
ein Grundelement von der Länge Null zwischen sich einschließen. Auf diese Weise kann jede Folge von Fchrittzeichen durch eine
Folge von Feld-Separatoren mit gleicher Länge ersetzt werden, wobei die Separatoren als symmetrische Differenzen codiert
sind.
Nimmt man beispielsweise an, daß die Werte der beiden Felder A und B durch die Ausdrücke "das" und "Wort" gegeben sind
und nimmt man weiterhin an, daß eine unterstrichene Zahl ihre 8-Bit-Binärcodedarstellung repräsentiert, d. h. daß die Zahl 1_
die Bit-Zeichenfolge 00000111 bezeichnet, so ergeben sich die Typcodierungen für die Felder A und B durch ihre Längen und
werden zu 2 un<^ 4.· D^e symmetrische Differenz ergibt sich zu
A AB = 2 + i. ~ Z· D:*-e nachstehenden Textzeichenfolgen sind
als symmetrisch-differenzcodierte Equivalente dargestellt ohne Änderung ihrer Bytelängen wobei " # " einen Schritt darstellt:
a) "das #- Wort" "das ]_ Wort"
b) "das £ for Wort" "das 3± Wort"
c) "das## ... kW Wort" "das 30.. .04Wort"
Im Fall a) ersetzt AAB ein Schrittzeichen, im Fall b) ersetzt
& AO A OB zwei Schrittzeichen und im Fall c) ersetzt AAO
Δ 00 ... A 00 A OB eine entsprechende Anzahl von Schrittzeichen.
Ein Nachteil dieses längeerhaltenden Textcodierungsverfahrens besteht darin, daß es innerhalb der Textgrundelemente keine
Interpunktionszeichen von den alphanumerischen Zeichenfolgen trennt. Jedoch kann ein Interpunktionssymbol, welches unmittelbar
einer alphanummerischen Zeichenfolge vorangeht, oder nachfolgt, als ein getrenntes Ein-Eyte-Feld durch. Einfügung eines
SG9883/Ö858
Separators vor und/oder hinter dem Interpunktionssymbol codiert werden. Dies erweitert den Text um ein oder zwei Extra-Eytes
pro Interpunktionssymbol. Eei der Decodierung werden diese Separatoren durch Nullfelder anstelle von Schrittzeichen ersetzt.
Bei der später folgenden Eeschreibung von Eaumstrukturen wird die Übereinkunft getroffen, daß ein Kulifeld zwischen irgendzwei
benachbarten Separatoren existiert.
Wörterbuch-Absuche - Alle die vorstehend hinsichtlich der Textaufbereitung
angestellten Betrachtungen sind auch bei der TCörterbuch-Absuche anwendbar. Bei ausgedehnten Suchen wird eine
sehr lange Zeichenfolge von lexikographisch geordneten Worten in Blöcke unterteilt, für welche eine Indizierungstabelle erstellt
wird. Eingangsstellen innerhalb der Indizierungstabelle weisen auf Blockendpunkte, welche anstelle symmetrischer Differenzen
gemäß Figur 3B Feldlängen auf v/eisen. Dies erlaubt eine bidirektionale Abtastung, ausgehend von mehreren Eingangsstellen,
Veränderliche Längenfelder mit einer festen Folge von Typen -
Beide zuvor beschriebenen Anwendungen können als ein Spezialfall
(n = 1) eines Datenstromes mit vielfachen Feldtypen betrachtet werden, in welchem die Typfolge vorhersagbar ist und
die Feldlängen veränderlich sind und in Form symmetrischer Differenzen codiert werden müssen. Bei beispielsweise in Kartenformat
vorliegenden Daten mit genau einem vorliegenden Feldtyp kann eine symmetrische Differenzcodierung benutzt werden, um
führende Null und/oder abschließende Leerstellen zu unterdrücken.
Felder von unvorhersagbarem Typ und Länge - Wenn weder der Feldtyp
noch die Länge entnehmbar ist, so ist eine symmetrische Differenzcodierung sowohl der Länge als auch des Types möglich.
Im allgemeinen erfordert dies einen Separator von mehr als 8 Bit, beispielsweise kann ein Zwei-Byte-Separator Anwendung
finden.
509883/0858
Alle Codierverfahren, welche eine Feldadresse durch inkrementelle
Addition von vorangegangenen Feldlängen aufbauen, neigen zur Fehlerunsicherheit, wobei mehrfache Fehler durch eine einzige
fehlerhafte Feldlängenanzeige verursacht werden können. Im allgemeinen verursacht ein einziger Fehler eine Verschiebung aller
folgenden Feldgrenzen, so daß zum. Wiederauffinden der Daten eine
manuelle Interpretation erforderlich werden kann. Demgemäß wird zur Feststellung eines einzelnen Fehlers ein Verfahren mit einer
Einrichtungsabtastung und für die Korrektur des Fehlers ein Verfahren mit einer Zweirichtungsabtastung des Datensatzes benutzt.
Eine Fehlerausweitung kann vollständig vermieden werden, durch Aufzeichnung einer getrennten Tabelle von relativen Adressen
oder Offsets bezüglich individueller Felder, wie dies in Figur 2
dargestellt ist, wobei diese Anordnung der Daten jedoch die früher erläuterten Nachteile aufweist. Ein anderer Weg zur Lösung
dieses Problems macht von der Parity-Check-Möglichkeit der symmetrischen Differenzcodierung Gebrauch. Hierbei ergibt sich
eine vorteilhafte Fehlerfeststellung und Korrektur auf Grund des Gebrauchs von zwei redundanten Hinweisadressenketten, wie
weiter unten erläutert wird.
Auffüllen - Ein Erfordernis zur v/irksamen Fehlerkontrolle sieht
die Fähigkeit zur Unterteilung einer Folge von Feldern variabler Länge in Blöcke von fester Länge vor. Im allgemeinen stimmen die
Feldgrenzen nicht mit den Elockgrenzen überein. Um die Aufteilung eines Feldes in zwei Teile zu vermeiden, was ein neues
Codierungsproblem ergeben würde und um die Wiedersynchronisation der Feldhinweisadresse auf Zwischenblockgrenzen zu gestatten,
wird ein Block vorzugsweise durch ein Verfahren aufgefüllt, welches
die Logik des Abtastalgorithmus nicht verkompliziert.
509883/0858
Das Auffüllen wird durch Reservierung eines besonderen 8-Bit-Symboles
zur Anzeige eines Nullfeldtypes verwirklicht, wobei der Kulifeldtyp als ein Typ definiert ist, dessen Wertzeichenfolge
die Länge von Null aufweist. Um sich in Übereinstimmung mit jenen Anwendungen zu finden, welche einen Feldtypcode durch
seinen Längenwert in Bytes ersetzen, ist das 8-Bit-Nullsymbol
als ein Nullfeld-Typcode reserviert.
Die Kullfeidwerte nehmen keinen Platz ein, während ihre Separatoren
einen Platz beanspruchen. Der Abtastalgorithmus arbeitet jedoch und ein kleiner Aufwand an Logik ist erforderlich, um
die Nullfeldseparatoren zu erkennen.
Zwei Nicht-Nullfelder, beispielsweise die Feldtypen A und B mit
den mit V,, V , bezeichneten VJertzeichenfolgen und dem mit Δ AB
bezeichneten Separator erscheinen wie folgt gemäß Figur 3B: va AJ^ vB
Um ein Nullfeld (Typ 0) zwischen A und B einzufügen, ist es lediglich erforderlich Δ AB durch die zwei Separatoren A. A0,
Δ 0B zu ersetzen. Auf diese Weise wird ein gesondertes Byte in die Feldfolge eingefügt. Zwei Fullfeider zwischen A und B
erscheinen als V, Δ Α0 A 00 Δ0Β V_. Hierbei stellt jeder
unterstrichene Ausdruck einen Feldseparator mit der Länge von einem Byte dar. Jedes weitere Nullfeld macht die Einfügung
eines Separators Δ. 00 erforderlich, dessen Wert als 0 (£>
0 = gegeben ist.
Selbstidentifikation - Um eine Feldabtastung an irgendeiner
Blockgrenze beginnen zu können, ist es erforderlich, die Identität des ersten abzutastenden Feldes zu kennen. Zu diesem Zweck
ist es ausreichend, die Übereinkunft zu treffen, daß zumindest ein Nullfeld immer an jeder Blockgrenze eingefügt wird.
509883/0858
Es sei angenommen, daß eine Blockgrenze zwischen den Feldern A und E gemäß dem vorangegangenen Beispiel auftritt. Innerhalb
des Feldzuges V. A AB V muß der Separator Δ AB entweder
Xl .11.— . — JJ "'■- ' ■" "'-
dem Block mit dem Wert V. oder dem Block mit dem Wert V0 zugeordnet
werden. Keine Wahl aus beiden Möglichkeiten ist jedoch zufriedenstellend. Ist beispielsweise A, AB zusammen mit V_
gespeichert, so erfordert eine Rückwärtsabtastung innerhalb des Blockes mit V7. eine Bezugnahme auf vorangehende Blöcke, bevor
der Feldtyp A und seine Länge identifiziert werden kann.
Dieses Problem verschwindet, wenn die Blockgrenze durch zwei Nullfeld-Separatoren aufgespreizt wird. Mit einer Grenze beispielsweise
zwischen A. A0 und A 0B innerhalb der Feldfolge
V A Α0 Α0Β V erfaßt der Abtastalgorithmus unabhängig von
der Richtung, mit welchem er die Abtastung beginnt, einen Separator A A0 oder A 0B. Da die Null den Nullfeldtyp repräsentiert,
ergibt sich AA0 = A + 0 = A und Α0Β = E + 0 = B.
Mit anderen Worten besitzen die Nullfelder die vorteilhafte Eigenschaft, daß benachbarte Separatoren direkt den benachbarten
Feldtyp identifizieren. Dies bedeutet, daß die beiden Felder an
den Enden irgendeines Blockes selbstidentifizierend sind, wenn die Blöcke aufgefüllt werden, um eine Aufteilung der Felder zu
vermeiden und wenigstens ein Nullfeld an den Blockgrenzen eingefügt wird.
Wiedersynchronisation - Die Nullfeldeinfügung an den Blockgrenzen
macht jeden Elock unabhängig von benachbarten Elöcken, soweit das Feldabtastverfahren betroffen ist. Eine korrekte Feldabtastung
vom einen Ende eines Blockes zum anderen Ende erfordert jedoch noch, daß alle zwischengefügten Feldseparatoren korrekte
Werte aufweisen. Was geschieht, wenn ein Fehler auftritt?
509883/0858
Es sei zunächst das Problem der Fehlerfeststellung betrachtet.
Wenn Nullfelder an beiden Elockgrenzen eingefügt sind, so muß eine korrekte Folge von Feldseparatoren automatisch eine Parity-Querprüf
summe mit dem Wert Null ergeben. Es sei beispielsweise angenommen, daß ein Block vier Felder A, E, B und C aufweist,
so daß sich die Folge von Feldseparatoren und zwischengefügten Wertfolgen wie folgt ergibt
Δ 0A V7. Δ, AB V_ Λ BE V_ A BC V_ Λ C0
Durch Definition ist A 0A = A und Δ AB = A © B usw., so daß
sich die Parity-Prüfsumme von diesen fünf Separatoren wie folgt ergibt
Δ.0Α + Δ-ΑΒ + A. BB + A BC + Ac0 =
A ® (A © B) Φ (B φ B) Φ (E Φ C) & C =
(A © A) © (B φ B) φ (B © E) Φ (C (±) C) =0
Dieses Ergebnis der Paritätsprüfung ergibt sich auf Grund der Eigenschaft der Exklusiv-ODER-Addition. Da die Feldtypen oder
Längencodes paarweise auftreten, ergibt sich ihre Streichung in der Gesamtquersumme. Als Folge hiervon erlaubt die Prüfsumrre
mit dem Wert Null eine rasche Feststellung von Fehlern hinsichtlich der Separatoren. Dieses Prüfverfahren unterscheidet zwischen
Fehlern hinsichtlich der Separatoren und der Wertzeichenfolgen, wenn ein entsprechendes Codierungsschema für die Fehlerfeststellung
benutzt wird. Oftmals können die Elocklängen verkürzt werden, um die Wahrscheinlichkeit, daß mehr als ein Separatorfehler pro
Block auftritt vernachlässigbar klein zu machen.
VJie ist es nunmehr möglich, einen Fehler eindeutig zu lokalisieren,
wenn ein einziger Separator innerhalb eines Blockes fehlerhaft ist? Eine Prüfsumme mit einem Wert ungleich KuIl verweist
509883/0858
2527U1
auf einen fehlerhaften Feldseparator, ohne jedoch den Ort des Fehlerauftritts anzuzeigen. Die tatsächliche Prüfsumme ist jedoch
nicht errechenbar, da die errechnete Folge von Separatoradressen von den korrekten Positionen unterhalb des Fehlerpunktes
abweichen kann. Die Lösung des Problems ergibt sich, wenn die Prüfung beginnend mit dem entgegengesetzten Ende des Blockes
ebenfalls vorgenommen wird.
Es ist ohne weiteres ersichtlich, daß immer dann, wenn die beiden
Folgen von Separatoradressen ausgehend von entgegengesetzten Enden des Blockes nur eine gemeinsame Adresse aufweisen, dieser
gemeinsame Treffpunkt die Position des fehlerhaften Separators anzeigt. In diesem Fall ist der korrekte Separatorwert die
symmetrische Differenz der Feldtypcodierungen, die durch die beiden Abtastungen bis zu ihrem Treffpunkt errechnet wurden,
sofern die Errechnung bis zu diesem Punkt eine Gesamtprüfsumme
von Null ergab.
VJenn die beiden Adressenfolgen mehrere gemeinsame Berührungspunkte
aufweisen, so kann jeder Berührungspunkt als eine mögliche Fehlerposition betrachtet werden. Auf diese Weise ergibt
sich eine Doppelfehlerfeststellung, obwohl nicht alle Doppel-Byte-Fehler notwendigerweise auf diese Weise festgestellt werden.
Weisen beispielsweise die Feldtypen A und B die gleiche Länge auf, so führt ein doppelter Separator-Byte-Fehler der
Δ. AB mit A.AA = Δ BB = 0 verwechselt von der Feldfolge VA Δ AB
V0 Δ BB Vn zu V. ΔΑΑ V- Δ AB V_
Solche Doppelfehler sind durch die symmetrische Differenzcodieruna
nicht feststellbar.
509883/0858
2527U1
Das symmetrische Differenzverfahren soll nunmehr auf die
irredundante gepackte sequentielle Darstellung von hierarchischen bzw. baumstrukturierten Daten erstreckt werden. Hierdurch
ist eine bidirektionale Abtastung auf jedem Pegel des Baumes möglich ohne das Erfordernis, dazwischenliegende Daten
abtasten zu müssen.
Als Beispiel sei die Eaumstruktur gemäß Figur 4 betrachtet, bei welcher A, B usw. Feldtypen darstellen, deren Werte V-,
VR usw. sequentiell in der Reihenfolge (AECDEFG) gespeichert
werden sollen. Nicht-Endknoten P. (V7urzel) und T, können Datenfelder
(Elätter des Baumes) oder andere Knoten (Teilbäume) aufweisen, die mit ihnen verbunden sind. Zu jedem Teilbaum führende
Äste sind durch ein zusammengehörendes Klammerpaar umgeben. Die zugehörige lineare Klammerdarstellung des Baumes kann aus Figur
rekonstruiert werden, indem bei einer Umfahrung des Baumes im Gegenuhrzeigersinn alle Ast- und Elattbezeichnungen abgelesen
werden: Λ (B(CD)) (E(FG)). Hinsichtlich der Definitionen und
der Erläuterung der Baumstrukturen sei auf die Seiten 305 von Band 1 des Buches "The Art of Computer Programming" von
Donald E. Knuth, verwiesen, das von der Addison-Wesley Publishing Company veröffentlicht wurde.
Die zu dieser Darstellung zugehörige Wertzeichenfolge ergibt sich zu VA (VE (Vc V0)) (VE(VFVG}). Diese Zeichenfolge ist solange
nicht mehrdeutig, als "("und")" reservierte Zeichen sind, die in den Werten V, bis V_, nicht auftreten oder wenn V_ bis V-,
A (j A ta
bekannte feste oder errechenbare Längen aufweisen. Um die Reservierung
der Klammerzeichen zu vermeiden, seien sie als EinByte-Werte
eines speziellen Punktierungs-Feldtypes ρ betrachtet. Im vorliegenden Beispiel repräsentiert somit V entweder ")"
oder "(" und muß somit innerhalb der Feldseparatoren eingefügt
5G9883/Ö85S
werden, wie in jedes andere Feld. Die Anwendung der symmetrischen
Differenzcodierung auf diese Feldfolge ergibt somit nachstehendes Resultat, wobei pro Klammerzeichen zwei Bytes erforderlich sind:
A Ap Vp ApB VB ABp Vp ApC Vc A CD VD A Dp V
vp Aj2E v£ Ajg
A PP
Die zwei verschiedenen Halbklammerwerte "(" und ")" können durch zwei verschiedene reservierte Feldtypen ersetzt werden, in welchem
Fall ihre Werte Null sind. Benutzt man beispielsweise f und • zur Kennzeichnung der Typcodierungen für die Halbklammern vom
Typ "(" und ")" und Δ. AB zur Darstellung der symmetrischen Differenz
der Typcodierungen A und B, so wird der Baum gemäß Figur 4 in folgender Weise darstellbar:
Α0Α v. AaI AH Vn Abc v„ Acd Vn Ad fr Λ+t AU A^e
Diese Struktur kommt der Speicherung entgegen, da lediglich ein zusätzliches Byte für jedes eingefügte offene oder geschlossene
Klammersymbol benötigt wird. Jedes Feld muß jedoch noch abgetastet werden, indem der ganze Baum umfahren wird, was für viele
Anwendungszwecke nicht efficient ist. Es sei beispielsweise angenommen,
daß A eine "if"-Bedingung, B (CD) eine "then"-Bedingung und E (FG) eine "else"-Bedingung innerhalb einer Anweisung in
einer zergliederten Ursprungssprache bedeutet, die zu interpretieren ist. Nach der in der Ablaufzeit erfolgenden Auswertung
der Eedingung A will der Interpreter die Bedingung E (CD) abtasten
und die. Bedingung E (FG) auslassen oder beispielsweise die Bedingung B (CD) auslassen und die Bedingung E (FG) abtasten.
509883/0858
Hinsichtlich der vorstehend erläuterten Baumstruktur ergibt sich eine Ineffizienz in dem Sinne, daß jede Abtastung in
jeder Richtung jeden Knoten und jedes Elatt des Baumes erfassen muß, um vom einen Ende an das andere Ende zu gelangen.
Wenn der Baum viele verschachtelte Pegel aufweist und wenn lediglich
ein Interesse besteht, einen Knoten mit einem höheren Pegel auszuwählen, so wird bei einer solchen Abtastung viel
Zeit vergeudet. Es wird daher ein Teilbaum-Separator benötigt, der die Information bezüglich der Längen kompletter Unterstrukturen
zwischen benachbarten Knoten übermittelt. Im folgenden wird eine Baumstruktur beschrieben, die das Auslassen von
Teilbäumen gestattet, indem ein einzelner Feldtyp reserviert wird, der als Zwischenknoten-Separator bezeichnet wird und eine
symmetrische Differenztechnik zur Codierung seines Inhaltes benutzt.
Erweiterung für Schnellabtastung - Die vorangehende codierte
Darstellung einer Baumstruktur ist nicht sehr efficient, wenn ein bekannter Weg durch den Baum aufgefunden werden soll. Hinsichtlich
Figur 4 sei beispielsweise angenommen, daß das Feld F im voraus als mit dem ersten Blatt verbunden bekannt ist, wobei
das erste Blatt mit dem zweiten Ast und der zweite Ast über den dritten Ast mit dem Wurzelknoten verbunden ist. Die nachstehend
vorgeschlagene Erweiterung gestattet es der Abtastung, die ersten beiden Äste, die mit dem Wurzelknoten verbunden sind, auszulassen,
einen Pegel (auf den Knoten T2) herabzusteigen und das Feld E
auszulassen, so daß das Feld F in drei Schritten erreicht wird, andernfalls erfordert die Abtastung fünf Schritte über A, B, C,
D und E.
Ein neuer mit ρ bezeichneter Feldtypcode, der als Zwischenknoten-Separator
feld bezeichnet wird, wird benötigt. Sein von KuIl verschiedener Wert hängt lediglich von der Länge der Teilbäume ab,
509883/0858
die durch ihn begrenzt oder getrennt werden und dieser Wert wird benutzt, um über einen Teilbaum in irgendeiner Richtung zu springen.
Die symmetrische Differenzcodierung wird für die Zwischenknoten-Separatorfeldwerte
benutzt, um die Speicheranforderungen zu minimalisieren. Felder von dem Typ ρ werden wie Daten und
Nullfeldtypen in den Feldzug eingefügt. Während eine feldsequenzielle
Abtastung lediglich Zwischenknoten-Separatoren erkennt und über solche hinwegspringt, muß ein Algorithmus für die Baumabtastung
eine Logik aufweisen, um die Zwischenknoten-Separatoren zu erkennen und sie in geeigneter Weise zu verarbeiten.
Für die Zwischenknoten-Separatoren wird eine typische Länge von zwei Bytes angenommen, obwohl andere Längen
ebenfalls benutzt werden können. Auf diese Weise wird die maximale Teilbaumlänge auf 65K-Bytes begrenzt. Bei diesem Abtastverfahren
wird ein Stapel benutzt, um Stellenmarkierer (Hinweisadressen oder Offsets) für den Beginn und das Ende des abzutastenden Teilbaumes
zu sparen. Der Stapel erlaubt ebenfalls eine direkte Rückkehr von irgendeinem Teilbaum zu seiner Wurzel oder seinem Ursprung
sknoten, ohne daß hierbei über andere Äste des Teilbaumes gegangen werden muß.
Es ist einfach, die vorgeschlagene codierte Form eines Baumes durch eine sequenzielle^Abtastung seiner eingeklammerten Feldstruktur
zu konstruieren. Jede schließende Klammer und jede öffnende Klammer, die nicht eine schließende Klammer als unmittelbaren
Vorgänger aufweist wird durch ein Zwischenknoten-Separatorfeld mit einem Zwei-Byte-Wert ersetzt. Ein Paar von
Klammern der Form ")(" wird zu einem Zwischenknoten-Separatorfeld
kombiniert.
Innerhalb eines jeden zu einer einzigen offenen oder geschlossenen
Klammer gehörigen Zwischenknoten-Separatorfeldes wird die Entfernung (in Bytes) zu den gegenüberliegenden zugehörigen
509883/0858
Klammern abgelegt. Dies entspricht den zuvor beschriebenen selbstidentifizierenden Feldseparatoren an den Blockgrenzen.
Innerhalb des einem Paar von geschlossenen und offenen Klammern zugeordneten Zwischenknoten-Separators wird die symmetrische
Differenz der Entfernungen zu den zugehörigen Klammern abgelegt. Dieser Aufbau befindet sich in Übereinstimmung mit der zuvor erwähnten
Codierung der Feldlängen in den Feldseparatoren.
Jedes Paar zusammenwirkender Klammern zusammen mit all den darin eingeschlossenen Feldern und verschachtelten Klammerpaaren
entspricht einem Teilbaum und dem diesen mit dem Ursprungsknoten verbindenden Ast. Beispielsweise weist der Baum gemäß Figur 4
7 Blätter und 4 Teilbäume auf. Sein Wurzelknoten ist mit R bezeichnet und die Wurzelknoten seiner Teilbäume sind mit T,
T_ und T, bezeichnet.
3 4
3 4
Die codierte Darstellung eines Teilbaumes sei als Verbundelement bezeichnet und stellt einen neuen Datentyp dar, dessen Wert durch
seine Byte-Zeichenfolge gegeben ist. Das heißt, daß ein Verbundelement irgendeine Folge von Feldern darstellt, die Zwischenknoten-Separatorfelder
einschließt, die ihrerseits gewissen Zwängen bei ihren paarweisen Auftritten unterliegen und die
geeignete, die Länge definierende Werte enthalten.
Die Verbundelemente können verschachtelt sein. Es sei an dieser Stelle vermerkt, daß die Zwischenknoten-Separatoren, die den
geöffneten und geschlossenen Klammern zugeordnet sind, nur dadurch unterscheidbar sind, daß ihre Lage in Bezug auf die
Ursprungsknoten verfolgt wird. Die Lage und der Wert eines Separators bestimmt den Ort seines zugehörigen Separators. Die
dazwischengefügten Zwischenknoten-Separatoren kennzeichnen die innere Struktur des Baumes auf niedrigeren Pegeln.
509383/0858
In Figur 4 sind 4 Verbünde leinen te durch Klammern bestimmt, die
um die Äste gelegt sind, die zu den Wurzelknoten der zugeordneten Teilbäume führen. Lediglich ein Paar von Teilbäumen (T. und T?)
sind einander auf dem gleichen Baumpegel benachbart. Die anderen beiden Teilbäume (T_ und T4) sind durch Felder oder Klammern auf
höherem Pegel voneinander isoliert. V bezeichne, eine Wert-Zeichenfolge
hinsichtlich eines Feldes vom Typ A. L. bezeichne den Wert eines Feldes vom p-Typ. L. soll hierbei die Länge in
Bytes des Teilbaumes T. gemäß Figur 4 definieren und L.. = L. ©
L. soll die symmetrische Differenz von L. und L. bezeichnen. Die Baumstruktur gemäß Figur 4 erfordert somit die folgende Codierung
der Folge von Feldtypen:
ApBpCDppEpFGpp
Ersetzt man A durch V usw. und ρ durch L. oder L.. so erhält
man die folgende Folge von Feldwerten:
VA Ll VB L3 VC VD L3 L12 VE L4 VF VG L4 L2
Geeignete Feldseparatoren werden zur Interpunktion dieser Folge von Feldwerten eingefügt. Es sei angenommen, daß A AB den Einzel-Eyte-Feldseparator
zwischen zwei Wertfolgen von Feldern des Types A und B darstellt. Unter Verwendung dieses Ausdruckes ergibt
sich die volle codierte lineare Darstellung des Eaumes gemäß Figur 4 in der in Figur 5 dargestellten Form.
Figur 5 zeigt ebenfalls die Regeln zur Errechnung der Längen von Verbundelementen. Für jedes Feld, welches ein direkter Abkomme
des Verbundelementes ist, dessen Länge errechnet wird, wird die Zeichenfolgelänge des Feldwertes plus ein Byte hinzugefügt.
Für jedes verschachtelte Verbundelement, welches ein direkter Abkomme darstellt, wird seine Länge plus drei Bytes
addiert. Dies gilt für ein Feld vom p-Typ und seinen Separator.
509883/0858
Schließlich werden drei Bytes zu dem Verbundelement selbst hinzuaddiert
für den Feldvorsatzcode vom p-Typ. Dies ist in Figur 5 für den Teilbaum T3 = (E(FG)) dargestellt, wobei die Längen
von V_, V_ und V^ mit x, y und ζ entsprechend bezeichnet sind.
Um das Abtastverfahren zu erläutern sei auf das Beispiel der Figuren 4 und 5 Bezug genommen. Es sei beispielsweise angenommen,
daß Zugriff zu dem Feld F gewünscht wird, welches im voraus als auf dem ersten Ast des Teilbaumes T. liegend bekannt ist. Der
Teilbaum T. hängt seinerseits an dem zweiten Ast des Teilbaumes T_, der seinerseits wiederum an dem dritten Ast des Ursprungsknoten R des Baumes hängt.
Die Suche nach dem Feld F beginnt beispielsweise an der linken Ecke der codierten Darstellung (Figur 5) und folgt den gestrichelten
Linien:
1) Lese L· 0A, suche die Länge von VA auf und springe auf ÄAp
2) Lese Δ.Αρ, gehe weiter und lese L, und springe nach Δρρ,
welches direkt von L,_ gefolgt wird.
3) Lese L12' errechne L_ = L, + L,2 und stapele sodann die
Adresse sowohl von L-2 und L3. Dies erlaubt die Rückkehr
vom Teilbaum T. zur linken oder rechten Ecke des Teil-4
baumes T3.
4) Schreite weiter zu ApE, suche die Länge von V auf und
springe nach AEp. Schreite weiter und lese L4 und
stapele seine Adresse und die Adresse von L. (an der rechten Ecke des Teilbaumes T4), welches ist die Adresse
(L4) + Wert (L4).
5) Schreite nach ApF, wodurch F als nächstes Feld gekennzeichnet
wird.
509883/0858
Bei diesem Verfahren wird über drei Teilbäume gesprungen und über zwei Pegel nach unten in der Baumstruktur herabgestiegen.
Durch Entstapeln der Rückkehradresse kann eine Rückkehr sofort nach irgendeinem Ast des nächsthöheren Pegels des Baumes vorgenommen
werden. Die gestapelte Adresse der gerade vorliegenden linken oder rechten Teilbaumgrenze wird benutzt, um die Abtastung
in der Vorwärts- oder Rückwärtsrichtung je nach Wunsch zusammenzufassen. Zwischenknoten-Separatoren innerhalb eines Teilbaumes
sind innerhalb dieser Grenzen angeordnet.
Während dem Abtastverlauf können Mehrdeutigkeiten auftreten. Der Inhalt des Zwischenknoten-Separators legt nicht fest, ob
es sich um ein Ende des gerade bearbeiteten Teilbaumes oder um einen Zwischenknoten-Separator innerhalb dieses Teilbaumes handelt.
Diese Mehrdeutigkeit wird beseitigt durch Vergleich der Separatorposition mit dem Ende des gerade bearbeiteten Teilbaumes,
welcher einer von zwei Teilbaum-Grenzpositionen an der Spitze des Stapels entspricht. Ein anderer Weg um diese Mehrdeutigkeit zu
beseitigen, besteht in der Zuordnung dreier verschiedener Typcodierungen P,, P2 und P3 hinsichtlich der Zwischenknoten-Separatorfelder,
die den Klammersymbolen "(", ")" und ")(" entsprechen.
Gemäß den Figuren 6A und 6B ist ein erstes bevorzugtes Ausführungsbeispiel
der Erfindung dargestellt, wobei hardwaremäßig ausgeführte Logikschaltkreise und Register der Abtastung einer
codierten Textzeichenfolge in der Vorwärts- und Rückwärtsrichtung dienen. Figur 6A zeigt die Wirkungsweise der Hardware bei
der Abtastung in der Vorwärtsrichtung während eines Operationszyklus der Kardware, wobei ein Schritt einer links nach rechts
Abtastung von einem Textstück zu einem anderen Textstück der codierten Eingangszeichenfolge verwirklicht wird. Figur 6B zeigt
die gleiche Zeichenfolge eines Textes, der in Rückwärtsrichtung abgetastet wird. Es sei darauf verwiesen, daß die gleichen Bezugsziffern
für die gleichen Elemente benutzt werden, wobei
§09883/0858
lediglich die unterschiedlichen Datenwege unterschiedlich beziffert
sind. Weiterhin sei darauf verwiesen, daß die Datenwege in jeder Darstellung entsprechend ihres aufeinanderfolgenden
Auftrittes beziffert sind. Gemäß Figur 6A ist ein Teil einer codierten Textzeichenfolge dargestellt, welche zwei als Text C
und Text D bezeichnete Textstücke aufweist, die zusätzlich mit den Bezugsziffern 2 und 4 versehen sind. Dem Text C vorangehend
ist ein symmetrischer Differenz-Separator Δ EC-I und zwischen
dem Text C und dem Text D ist ein anderer symmetrischer Differenz-Separator &CD-3 angeordnet. Dieser Teil einer Textzeichenfolge
1,2,3 und 4 kann auf einem Magnetband oder einem anderen sequenziell adressierbaren Speichermedium angeordnet sein. Es
versteht sich von selbst, daß viele codierte Textzeichenfolgen in dem angewählten Speichermedium vorhanden sind. In dem besonderen
hier vorliegenden Fall ist die logisch definierte Textzeichenfolge in dem virtuellen Speicheradressenraum eines Rechenspeichers
angeordnet. Der Inhalt des Positionsregisters 8 repräsentiert einen Offset oder eine Anzahl von Zeichen zwischen
entsprechenden Bezugspunkten auf dem Speichermedium und einem besonderen Separator, z.E. ΔEC-I oder &.CD-3. Bei einer Abtastung
von links nach rechts,wenn das Positionsregister 8 ergänzt
ist, so daß es eine neue Position anzeigt, wird die relative Offsetadresse einer solchen Bezugsmarke des Separators
A.CD-3 beispielsweise bestimmt, indem zu der Länge des Textes
C-2 die relative Offsetadresse des Separators & EC-I hinzuaddiert
wird. Auf diese Weise wird die relative Offsetadresse
des Separators Ä.CD-3 in Bezug auf die zuvor ausgewählte Bezugsmarke auf dem Speichermedium bestimmt. Im allgemeinen stellt die
ausgewählte Bezugsmarke den Beginn der logisch definierten Textzeichenfolge in dem virtuellen Adress-Speicherraum des Rechenspeichers
dar. Es liegt klar auf der Hand, daß genau die gleiche Verfahrensweise bei einem Magnetband oder einem anderen sequenziellen
Speichermedium verwendet werden kann.
509883/0858
Gemäß Figur 6A weist die Schaltungsanordnung drei Register auf, ein Positionsregister 8, ein Längenregister 9 und ein symmetrisches
Differenzregister 5. Zusätzlich ist ein Binäraddierer 7
vorgesehen zur Ausführung einer gewöhnlichen binären Addition oder Subtraktion. Ein Exclusiv-ODER-Addierer oder Komplementierer
6 ist für die Ausführung einer übertragsfreien Exclusiv-ODER-Addition
vorgesehen. Es sei hier festgestellt, daß die Exclusiv-ODER-Addition der Komplementierung des Ausganges eines Registers,
beispielsweise des Längenregisters 9 in jenen Eit-Positionen entspricht, wo eine Exclusiv-ODER-Addition einer "1" durch den zweiten
Eingang angezeigt wird. Die Inhalte des Positionsregisters und des Längenregisters 9 bilden zusammen ein Feld-Deskriptorwort
10. Der erste Teil dieses Wortes bildet die Position des Beginns eines besonderen abzutastenden Textfeldes, welche in
dem Positionsregister enthalten ist. Der zweite Teil des Feld-Deskriptorwortes bildet die Länge des besonderen abzutastenden
Textstückes, welches in dem Längenregister 9 enthalten ist. In Figur 6 wurde von der Annahme ausgegangen, daß in vorangegangenen
Schritten einer links nach rechts oder rechts nach links Abtastung das Positionsregister 8 und das Längenregister 9 mit
einer Beschreibung des Textes C versehen wurden. In einem nächsten Schritt einer typischen Abtastung gemäß der Erfindung ist
die Abtastung des Inhalts des Positionsregisters 8 und des Längenregisters 9 sov/ie des symmetrischen Differenzregisters 5 erforderlich,
um die notwendigen Operationen ausführen zu können, die zur Ergänzung des Positionsregisters 8 erforderlich sind,
so daß dieses die Adresse der neuen Position^CD-3 aufweist und
die weiterhin erforderlich sind zur Ergänzung des Längenregisters 9, so daß es die Länge der nächsten Textzeichenfolge D-4 aufweist.
Vor der Ergänzung weist das Positionsregister 8 die Position des symmetrischen Differenz-Separators & BC-I auf, was durch den gestrichelten
Pfeil 11 angedeutet ist. Ferner enthält das Längenregister 9 die Länge des Textes C-2. Demgemäß werden bei der Ergänzung
der Register der Inhalt des Positionsregisters 8 zuerst entlang dem Datenweg 12 zu dem Binäraddierer 7 übertragen und es
509883/0858
wird zur gleichen Zeit der Inhalt des Längenregisters 9 entlang
den Datenwegen 13 und 13£ zu dem Binäraddierer 7 übertragen
und zu dem Inhalt des Positionsregisters 8 addiert. Kenn die binäre Addition vervollständigt ist, wird das Ergebnis dieser
Addition entlang dem Weg 14 zurück in das Positionsregister 8 übertragen. Das Positionsregister 8 enthält nunmehr die Position
des symmetrischen Differenz-Separators ÄCD-3, die dem Text D
vorangeht, was durch den gestrichelten Pfeil 15 angedeutet ist. Simultan mit der Übertragung des Inhalts des Längenregisters 9
nach dem Binäraddierer 7 wird der Inhalt des Längenregisters 9 ebenfalls über die Datenweg 13 und 13B zu dem Exclusiv-ODER-Komplementierer
6 übertragen. Der symmetrische Differenz-Separator ÄCD-3, der durch den ergänzten Inhalt des Positionsregisters
8 bestimmt wird, wird über den Datenweg 16 in das symmetrische Differenzregister 5 geladen und sodann über den Datenweg 17 auf
den Exclusiv-ODER-Komplementierer 6 gegeben, der eine Exclusiv-ODER-Addition
(modulo-2-Addition) ausführt und es wird sodann das Ergebnis der Exclusiv-ODER-Addition über den Datenweg 18
zurück zu dem Längenregister 9 übertragen. In diesem Zeitpunkt ist ein Zyklus der Vorwärtsabtastung vervollständigt und das
Positionsregister 8 enthält die Position des symmetrischen Differenz-Separators ACD-3. Ebenso enthält das Längenregister 9
die Länge des Textes D-4 der codierten Zeichenfolge und das symmetrische Differenzregister 5 enthält die codierte symmetrische
Differenz &CD-3.
Anhand von Figur 6B sei im folgenden ein vollständiger Zyklus einer Rückwärtsabtastung beschrieben. Beim Beginn eines Rückwärts-Abtastzyklus
sei angenommen, daß das Positionsregister 8 die Position (Adresse oder Offset) des symmetrischen Differenzseparators
Δθϋ-3 enthält, der den Text C von dem Text D einer kodierten
Zeichenfolge trennt. Das Längenregister 9 enthält die Länge des Textes D-4. Andererseits enthält das symmetrische Differenzregister
5 den codierten symmetrischen Differenzseparator ACD-3.
509883/0858
Bei der Rückwärtsabtastung geht es darum, die Position von ABC-!
aufzufinden. Im allgemeinen geschieht dies durch Erzeugung der Länge des Textes C-2 aus dem symmetrischen Differenzseparator &CD-3
und der Länge des Textes D-4, die in dem Exklusiv-ODER-Komplementierer
6 verknüpft werden und durch anschließende Subtraktion der Länge des Textes C-2 im Binäraddierer 7 von der Adresse des symmetrischen
Differenzseparators Δ. CD-3 im Positionsregister 8. Dementsprechend
wirdder symmetrische Differenzseparator Δ CD-3 zuerst über den Datenweg 12A in das symmetrische Differenzregister 5 geladen
und sodann über den Datenweg 13C dem Exklusiv-ODER-Komplementierer
6 zugeführt. Der Inhalt des Längenregisters 9 wird sodann über den Datenweg 14A zu dem Eklusiv-ODER-Komplementierer 6 übertragen,
welcher eine übertragsfreie Exklusiv-ODER-Addition ausführt
und das Resultat wird über den Datenweg 15B in das Längenregister 9 zurückübertragen. Zusätzlich wird das Resultat über den
Datenweg 15A dem Binäradddarer 7 zugeführt. Es sei hier vermerkt,
daß der Binäraddierer bei der Rückwärtsabtastung in Wirklichkeit eine binäre Subtraktion ausführt. Gleichzeitig wird der Inhalt des
Positionsregisters 8 ebenfalls dem Binäraddierer 7 zugeführt, der in diesem Fall die binäre Subtraktion ausführt, um die Position
(Adresse oder Offset) des symmetrischen Differenzseparators ^,BC-1
zu bilden und dieses Resultat wird über den Datenweg 17A zurück in das Positionsregister 8 geführt. Schließlich wird der symmetrische
Differenzseparator ZkBC-I über den Datenweg 19A in das symmetrische
Differenzregister 5 übertragen. Das Endresultat zu diesem Zeitpunkt des Rückwärts-Abtastzyklus ist wie folgt: Das Positionsregister 8 enthält nunmehr die Adresse des symmetrischen Differenzseparators
Δ BC-1, auf welchen durch den gestrichelten Pfeil 18A hingewiesen wird; das Längenregister 9 enthält die Länge des
Textes C-2 und das symmetrische Differenzregister 5 enthält den Inhalt des symmetrischen Differenzseparators &BC-3. Da die Rückwärtsabtastung
das genaue Gegenteil der Vorwärtsabtastung ist, sind die Rechenschritte bei der Vorwärts und Rückwärtsabtastung
jederzeit vertauschbar, so daß hinsichtlich des Schaltungsaufbaues
kein Unterschied in Abhängigkeit von der vorzunehmenden Abtastrichtung besteht.
509883/0858
Die Hardware-Struktur gemäß den Figuren 6A und 6B wurde benutzt, um aufzuzeigen, wie eine Vorwärts- und Rückwärtsabtastung vonstattengeht,
wenn ein Feld pro Rechenzyktus von dem Computer adressiert wird. Es ist jedoch auch möglich, eine Tabelle von
Felddescrjptorworten in einem Speicher zu speichern, die sodann
die Position und die Länge eines jeden codierten Textstückes exakt in einer Tableaudarsteilung enthalten, welche in einer für
Digitalrechner bekannten Wiese indiziert werden kann. Um die erforderliche Information zu erzeugen und eine solche Tabelle von
Felddescriptoren unter Heranziehung der Hardware gemäß den Figu-6A und 6B zu laden, wird ein Felddescriptorwort 10 erzeugt.
Dieses Felddescriptorwort besteht aus dem Inhalt des Positionsregisters 8 und des Längenregisters 9, deren Inhalte über die
Datenwege 19 und 20 entnommen werden. Unter Heranziehung eines
Rechners, der einen|3peicher aufweist, welcher mit einem Indexregister
versehen ist, das die Feldnummer jeweils zählt, beispielsweise die Nummern der Felder A, B, C und D und der für jedes solches
Feld ein Felddescriptorwort in ein entsprechendes Element einer Tabelle des Speichers ladet, kann die Abtastung über die
Tabelle in entsprechender Weise vorgenommen werden.
Eine Erweiterung der in den Figuren 6A und 6B dargestellten Harware
ermöglicht ein Verfahren der symmetrischen Differenzcodierung auf mehrfachen Pegel für hierarchische oder baumstrukturierte
Daten, wie dies zuvor anhand der Figuren 4 und 5 erläutert wurde. Figur 7 zeigt die zusätzliche Hardware, die
erforderlich ist, um eine Folge von Descriptoren für codierte Textfolgen auf unterschiedlich hohen Pegeln zu speichern. Aus
Gründen der Übersichtlichkeit bei der Beschreibung der Erfindung sind die verschiedenen Datenwege, der Exklusiv-ODER-Komplementierer
und das symmetrische Differenzregister jeweils nicht dargestellt. Es ist jedoch selbstverständlich, daß das oberste Register
in Figur 7 (A-1 und A-2) das Felddescriptorwort 10 gemäß Figur 6A enthält. Die Hardware für jeden zusätzlichen Datenpegel
ist in Figur 7 als ein Satz von Registern dargestellt. Bei der tatsächlichen Realisierung dieser Register bestehen diese aus
509883/0858
LIFO-Stapelmechanismen , was bedeutet, daß zusätzliche Register
nur an der Spitze der Registeranordnung gemäß Figur 7 hinzugefügt
oder hinweggenommen werden können. Bei der tatsächlichen Ausführung bezeichnet ein Indexregister jeweils das gerade
oberste Register gemäß Figur 7. Die Register, die sich über dem gerade obersten Register befinden, sind in dem Speicher des Rechners
angeordnet und werden je nach Wahl hinzugefügt oder ignoriert. Der Aufbau und die Datenwege gemäß den Figuren 6A und 6B
sind hinsichtlich des obersten Registers gemäß Figur 7 ebenfalls wirksam und anwendbar, wobei das oberste Register einem einzelnen
Knoten oder Teilbaum der codierten Datenstruktur gemäß den Figuren 4, 5 und 7 entspricht.
Gemäß den Figuren 6A und 6B wurde die codierte Textfolge als eine einzelne Folge individueller Textstücke betrachtet, die
durch alle auf dem gleichen Pegel auftretendem>symmetrische Differenzseparatoren
getrennt sind. Die hinsichtlich eines einzelnen Textstückes einzig mögliche Indentifizierung ist daher durch seine
Position im Hinblick auf den Beginn der Textfolge und seiner Länge gegeben. Gemäß Figur 7 können größere oder kleinere Textstücke
auf unterschiedlichen Pegeln bezüglich der Größe oder des Details beschrieben werden. Die in Figur 7 dargestellte Textfolge
ist gegenüber der zuvor erläuterten Textfolge komplexer. Eine Folge von Feldern, A, B usw. ist in einer mit G(K) bezeichneten
Gruppe zusammengefaßt. Diese Gruppe ist zwischen zwei Separatoren A G(K)-IC und Ag(K+1)-U eingeschlossen. Jedes Feld A, B usw.
innerhalb der Gruppe ist durch einen symmetrischen Differenzseparator, z.B. 4.AB-1F, ΔBC-1H usw. getrennt. Vor dem ersten
Feld innerhalb dieser besonderen Gruppe, d.h. dem Feld A-IE ist ein Separator 6.0A-1D angeordnet, der die Länge des Feldes A-1E
enthält. Es sei an dieser Stelle vermerkt, daß viele Felder innerhalb einer Gruppe bestehen können und daß ebenfalls viele Gruppen
sich zu einem Datensatz zusammensetzen können. Jedes Feld ist von einem anderen Feld durch einen symmetrischen Differenzseparator
getrennt und jede Gruppe ist von einer anderen Gruppe durch einen symmetrischen Differenzseparator getrennt usw.
509883/0858
Diese Zusammenfassung von Feldern und Gruppen ist auf einem nächst höheren Pegel, der als Datensatz bezeichnet wird, wiederum
unterteilt und jeder Datensatz ist von zwei symmetrischen Differenzseparatoren A>
R(N)-IA und AR(N+1)-1K eingeschlossen. Der
nächst höhere Datenpegel ist die Datei, die ebenfalls durch nicht dargestellte symmetrische Differenzseparatoren eingegrenzt ist.
In Figur 7 schließt die gestrichelte Linie 30 ein Feld zwischen zwei Separatoren, die gestrichelte Linie 31 eine Gruppe zwischen
zwei Separatoren und die gestrichelte Linie 32 einen Datensatz zwischen zwei Separatoren ein.
Bei der vorgegebenen besonderen hierarchischen Datenstruktur mit vier Pegeln enthält die gegenüber der Ausführungsform gemäß den
Figuren 6A und 6B erforderliche zusätzliche Hardware ein Datei-Positionsregister
D-1 mit einem Datei-Längenregister D-2, ein Datensatz-Positionsregister C-1 mit einem Datensatz-Längenregister
C-2, ein Gruppen-Positionsregister B-1 mit einem Gruppen-Längenregister
D-2 und ein Feld-Positionsregister A-1 mit einem Feld-Längenregister A-2. Im allgemeinen ist die Anzahl dieser Register
veränderlich und diese Register werden im Speicher des Rechners realisiert. Gemäß Figur 7 sind Binäraddierer D-3, C-3,
B-3 und A-3 vorgesehen, um die Inhalte des Positions- und des Längenregisters jeweils miteinander zu addieren und auf diese
Weise die Länge des entgegengesetzten Endes der gerade abgetasteten Datengruppe zu erhalten. Es kann jedoch ein einziger Binäraddierer
für alle diese Register verwendet werden, da nur das oberste Register des Stapels in Wirklichkeit an der Abtastoperation
gemäß den Figuren 6A und 6B teilnimmt. Der einzige Unterschied, wenn Gruppen-, Datensatz- oder Datei-Beschreibungen anstelle
von Feldbeschreibungen in dem oberen Stapelregister abgelegt sind, besteht darin, daß Zwischenknoten-Separatoren anstelle
von Feldseparatoren den Feldern entnommen werden müssen (siehe Figur 5). In gleicher Weise kann ein Exklusiv-ODER-Schaltkreis
für jeden Datenpegel vorgesehen sein oder es kann ein Exklusiv-ODER-Schaltkreis mit geeigneter Gatterschaltung für den jeweils
abzutastenden,sich zu^oberst befindlichen Datenpegel vorgesehen
509883/0858
sein. Die Technik der LIFO-Stapelverarbeitung ist in der Computertechnik
bestens bekannt und braucht an dieser Stelle nicht näher erläutert zu werden.
Gemäß Figur 7 sind die Position und Länge der Datei in dem Dateipositionsregister
D-1 und dem Datei-Längenregister D-2 entsprechend gespeichert. Das Datei-Positionsregisters D-1 enthält die
relative Offset-Position des Beginns der kompletten Datei oder
baumstrukturierten Datenorganisation. Dies wird durch den gestrichelten Pfeil 5A angezeigt, der auf den nicht dargestellten
Beginn der Datei hinweist. Durch Addition des Inhalts des Datei-Längenregisters D-2 zu dem Inhalt des Datei-Positionsregisters
D-1 im Binäraddierer D-3 wird der Endpunkt der endgültigen Position der kompletten Datei ermittelt, was durch den gestrichelten
Pfeil 5B angezeigt ist. Dieser Endpunkt kann den Beginn der nächstfolgenden Datei zwecks Bestimmung ihrer Länge markieren.
Die Datei wird nicht als eine Folge von Feldern geringer Größe betrachtet, sondern als eine Folge von Datensätzen, die ihrerseits
in Gruppen unterteilt sind, welche Gruppen sodann die Felder enthalten. Es sei nun angenommen, daß der Benutzer, Programmierer
oder das Operationssystem das Feld B innerhalb der Gruppe K des Datensatzes N in der Datenstruktur gemäß Figur 7 auffinden
möchte. Um den Datensatz N aufzufinden, wird zunächst der Beginn der Datei, wie er durch das Datei-Positionsregisters D-1 angezeigt
wird, ermittelt, wobei sich die Register D-1 und D-2 an der Spitze des Staoels befinden. Dieser Beginn bildet somit den Referenzpunkt
hinsichtlich der Position der in der Datei enthaltenen Datensätze. Dementsprechend wird ein zweites Register C-1, C-2
dem Stapel hinzugefügt und mit dem ersten Datensatz-Separator Ar(D geladen, wodurch die Position und die Datensatzlänge beschrieben
werden. Durch Anwendung der anhand von Figur 6A beschriebenen Technik wird eine Links-nach-Rechts-Abtastung hinsichtlich
aller symmetrischer Differenzseparatoren bezüglich der Datensätze durchgeführt. Diese Datensatzabtastung wird N-fach
wiederholt, wobei die symmetrischen Differenzseparatoren hinsichtlich der Gruppen und Felder unbeachtet bleiben, bis die Position
5098 8 3/0858
des gesuchten Datensatzes R(N)-IA erhalten wird. Wenn der gesuchte
Datensatz ermittelt ist, enthält das Datensatz-Positionsregister C-1 die Adresse oder den Offset des Datensatzes N von
dem Beginn der Datei und das Datensatz-Längenregister C-2 enthält die Länge des Datensatzes mit der Nummer N. Ist auf diese
Weise der Datensatz mit der Nummer N aufgefunden worden, so wird anschließend innerhalb des Datensatzes N eine Suche nach einer
Gruppe mit der Nummer K durchgeführt. Um diese Suche durchzuführen, während gleichzeitig die Fähigkeit erhalten bleiben soll
zu der Position des Datensatzes N zurückzukehren und von dort auf andere vorrangehende oder nachfolgende Datensätze zu springen,
wird in dem Gruppen-Positionsregister B-1 und dem Gruppen-Längenregister
B-2 ein neues Gruppen-Descriptorwort an der Spitze des Stapels gebildet. Anfänglich enthält das Gruppen-Descriptorwort
in den Registern B-1 und B-2 die Position und die Länge der ersten Gruppe innerhalb des Datensatzes N. Die Position der
ersten Gruppe links von dem Separator Ad(D ist in Figur 7 als Komponente 1B dargestellt. Die Vorwärtsabtastung der Gruppe führt
sodann K Abtastzyklen durch, bis die gewünschte Gruppe mit der Nummer K innerhalb der Datensatznummer N erreicht ist. In diesem
Zeitpunkt enthält das Gruppen-Positionsregister B-1 die Position des Gruppenseparators OlG(KMc . Dies wird durch den gestrichelten
Pfeil 3A gemäß Figur 7 angezeigt. Zur gleichen Zeit enthält das Gruppen-Längenregister B-2 die Länge der Gruppe K, die durch
die gestrichelte Linie 31 eingeschlossen wird. Durch die gestrichelte Linie 31 wird veranschaulicht, daß beginnend mit dem
linken Ende der Gruppe K die Gruppennummer K + 1 aufgefunden werden kann, indem der relative Gruppen-Offset im Gruppen-Positionsregister
B-1 zu der Gruppenlänge des Gruppen-Längenregisters B-2 im Binäraddierer B-3 hinzuaddiert wird. In diesem
speziellen Beispiel wurde jedoch angenommen, daß der Wunsch vorlag, die Gruppe K zu ermitteln und die Felder innerhalb dieser
Gruppe abzutasten, um ein spezielles Feld B-1G zu bestimmen. Um dies zu bewerkstelligen, wird ein Feld-Descriptorwort erzeugt,
indem die Feldregister A-1 und A-2, die die Position und Länge des ersten Feldes der Gruppe K enthalten, zu dem Stapel der
Descriptorregister hinzugefügt werden. Durch eine erneut aufeinanderfolgende Ausführung einer Anzahl von Vorwärts-Abtast-
589883/0858
zyklen auf dem Feldpegel werden die Positions- und Längenregister A1 und A2 solange ergänzt, bis sie auf den symmetrischen
Differenzseparator Ä.AB-1F hinweisen, welche die von dem Benutzer
gesuchte Adresse des Feldes B-1G beziffert. Zu diesem Zeitpunkt enthält daher das Feld-Positionsregister A-1 die
Adresse oder den Offset von einem Referenzpunkt, wodurch der
Feldseparator Λ AB-"IF bestimmt ist, während das Feld-Längenregister
A-2 die Länge des Feldes B-1G enthält. Zur Umkehrung des Verfahrens ist es lediglich erforderlich, den Stapel abzubauen,
indem die Inhalte der Feldregister A-1 und A-2 dem Stapel entnommen werden, d.h. ignoriert werden, um auf diese Weise zu
dem Gruppenpegel der Baumstruktur zurückzukehren, so daß auf diesem Pegel die Gruppen in Vorwärts- oder Rückwärtsrichtung abgetastet
werden können. Andererseits kann es beim Erreichen des Feldes B gewünscht sein, die Abtastung auf dem Feldpegel fortzuführen.
In diesem Fall werden die Positions- und Längenregister A-1 und A-2 bezüglich des Feldes nicht gelöscht.
Eine andere diese Technik benutzende Hardware zur Feststellung bestimmter Teile einer baumstrukturierten Datenorganisation., erfordert
zusätzliche bekannte Hardware-Einrichtungen, wie beispielsweise Vergleicher und einen Assoziativspeicher. Bei diesem
anderen Verfahren wird ein bestimmter Datensatz oder eine bestimmte Gruppe aufgrund des Inhalts eines bestimmten Feldes oder
bestimmter Felder innerhalb des Datensatzes oder der Gruppe ausgewählt. Die auf der Inspizierung des Inhalts des bestimmten
Feldes basierende Abtastung fährt wie zuvor fort und benutzt das Feld-Descrlptorregisterpaar D-1, D-2, um das Feld zu bestimmen,
das mit einem bestimmten Wert übereinstimmt, wobei die Abtastung dann auf den nächstniedrigeren Pegel hinabsteigen kann und das
Verfahren wiederholt wird. Eine Suche innerhalb einer Anzahl von Datensätzen zwecks Bestimmung eines Datensatzes mit einem bestimmten
Feld, wird beispielsweise ausgeführt, indem der Inhalt eines bestimmten Feldes eines jeden Datensatzes ausgewählt und
dieser Inhalt mit einem gesuchten Kennschlüssel verglichen wird, so daß im Falle der Obereinstimmung der Werte das gesuchte Feld
innerhalb des Datensatzes ermittelt ist. In gleicher Weise wie
S09883/0858
eine erfolgreiche Abtastung bei der Ermittlung eines vorgegebenen Datensatzes ausgeführt wird, kann eine Suche innerhalb des
vorgegebenen Datensatzes solange durchgeführt werden, bis Übereinstimmung
mit einem vorgegebenen Gruppen-Kennschlüsselwert gefunden wird und es kann anschließend die gleiche Suche auf dem
Feldpegel durchgeführt werden.
Gemäß den Figuren 8A bis 8C ist eine Schaltungsanordnung zur Erzeugung
eines symmetrischen Differenzcodes und zum Einfügen dieses Codes in eine Datenfolge enthaltend eine Folge von Datenfeldern
dargestellt. Die Hardware ist bezüglich aller drei Figuren 8A bis C identisch, jedoch zeigt beispielsweise Figur 8A
den Zustand der Hardware beim letzten Schritt der Code-Erzeugung. Durch Anwendung üblicher Verfahren wird zunächst eine Datenfolge
50 erzeugt, die die FeldearA, B, C usw. aufweist, wobei jedes Feld
durch ein 8-Bit-Separator von dem nächsten Feld getrennt ist und wobei die Separatoren anfänglich mit Nullbits aufgefüllt sind.
Gleichzeitig mit der Ablegung der Datenfolge im Speicher wird eine Längentabelle 61 erzeugt, in welcher die Länge eines jeden
Feldes der Datenfolge 50 gespeichert wird. Zu diesem Zeitpunkt enthält ein Teil des Hauptspeichers die gesuchte Datenfolge, wobei
jedes Feld innerhalb der Datenfolge ein leeres Separatorfeld aufweist und es enthält ferner eine Längentabelle, die die Länge
eines jeden Feldes innerhalb der Datenfolge 50 angibt.
Gemäß Figur 8 wird der anfängliche symmetrische Separator erzeugt,
indem zunächst die Hauptspeicherposition des Beginns der Datenfolge 50 in dem Positionsregister 60 abgelegt wird. Der Inhalt
des Positionsregisters 60 wird sodann über den Datenweg N-2 auf den Binäraddierer 62 gegeben. Zum gleichen Zeitpunkt wird der
Inhalt des ersten Wortes der Längentabelle 61, welcher Null ist, über den Datenweg N-3 auf den Binäraddierer 62 gegeben. Als Ergenis
der binären Addition ergibt sich die absolute Adresse des Beginns der Datenfolge 50, welche über den Datenweg N-4 in das
Positionsregister 60 übertragen wird. Zu diesem Zeitpunkt verweist das Positionsregister 60 auf den Beginn des Feldes A der
509883/0858
Datenfolge 50. Der symmetrische Differenzcode, der an der Stelle
51 der Datenfolge 50 einzufügen ist, wird durch Auslesen des Inhalts der ersten beiden Positionen der Längentabelle 61 über die
Datenwege N-3 und N-7 ermittelt. Diese beiden Werte werden auf den Exklusiv-ODER-Addierer 63 gegeben. Das Ergebnis der Addition
wird über den Datenweg N-8 in das symmetrische Differenzregister 64 eingeschrieben. Das symmetrische Differenzregister 64
enthält in diesem Zeitpunkt den anfänglichen symmetrischen Differenzseparator, der in das Feld 51 der Datenfolge 50 einzufügen
ist. Da die Position im Hauptspeicher der Datenfolge 50 im Positionsregister 60 gespeichert worden ist, wird der Code des anfänglichen
symmetrischen Differenzseparators im symmetrischen Differenzregister 64 in das Anfangsfeld 51 der Datenfolge 50
über den Datenweg N-I8 eingeschrieben, wobei das Positionsregister
60 die Hinweisadresse N-1 liefert.
Gemäß Figur 8B werden die verbleibenden symmetrischen Differenzcodierungen
für die Datenfolge 50 der Reihe nach erzeugt, um jedes Datenfeld der Datenfolge 50 von dem nächsten Datenfeld abzutrennen,
mit Ausnahme des letzten Feldes der Datenfolge. Zunächst wird der Inhalt des Positionsregisters 60, welches die anfängliche
Adresse der Datenfolge 50 enthält, über den Datenweg M2 auf den Binäraddierer 62 gegeben und zur gleichen Zeit wird die
Länge des Feldes A in der Längentabelle 61 über den Datenweg M-9 dem Binäraddierer 62 zugeführt, so daß sich durch binäre Addition
die Position des Feldes 53 innerhalb der Datenfolge 50 ergibt. Diese neue Position wird sodann im Positionsregister 60 über den
Datenweg M-4 abgelegt und ersetzt die ursprüngliche Anfangsadresse. Zu diesem Zeitpunkt enthält daher das Positionsregister
60 die Adresse des Feldes 53, welchem der symmetrische Differenzcode Δ AB bei seiner Erzeugung eingeschrieben wird. Der symmetrische
Differenzcode Δ AB wird durch Exklusiv-ODER-Addition der
Länge A und Länge B innerhalb der Tabelle 61 erzeugt. Die in der Längentabelle 61 gespeicherte Länge A wird über die Datenwege M9
und M6 auf den exklusiven ODER-Addierer 63 gegeben, während die Länge des Feldes B über den Datenweg M7 ebenfalls dem Exklusiv-ODER-Addierer
zugeführt wird. Das Ergebnis der Exklusiv-ODER-Addition wird über den Datenweg M-8 in dem symmetrischen Dif-
509883/0858
ferenzregister 64 abgelegt und anschließend über den Datenweg M-10 in das Feld 53 übertragen, auf welches durch Positionsregister 60 hingewiesen wird. Die Datenwege M-9 und M-7 werden
sodann an die nächsten Felder der Längentabelle 61 angeschlossen, um die Längen B und C während des nächsten Zyklus der Operation
auszuwählen. Dieses Verfahren wird immer wiederholt, um alle symmetrischen Differenzseparatoren für die Datenfolge 50 zu erzeugen,
mit Ausnahme für den Code des letzten symmetrischen Differenzseparators innerhalb der Datenfolge 50.
Ein leicht unterschiedliches Verfahren zur Erzeugung des Codes für den letzten symmetrischen Differenzseparator wird benutzt,
um sowohl eineRückwärts-als auch eine Vorwärtsabtastung zu ermöglichen.
Gemäß Figur 8C wird der Code des letzten symmetrischen Differenz^separators innerhalb der Datenfolge 50 durch
eine Exklusiv-ODER-Addition der Länge des Felde B in der Tabelle 61 mit einer ebenfalls in der Tabelle 61 abgelegten binären Null
erzeugt. Die Länge des Feldes D in der Tabelle 61 wird über den Datenweg 0-6 und die binäre Null wird aus der Längentabelle 61
über den Datenweg 0-7 dem Exklusiv-ODER-Addierer 63 zugeführt.
Nach entsprechender Addition wird das Ergebnis in das symmetrische Differenzregister 64 über den Datenweg 0-8 übertragen
und schließlich über den Datenweg 0-18 an der letzten Stelle der Datenfolge 50 abgelegt. Es sei vermerkt, daß zu diesem Zeitpunktf
nachdem zuvor der Reihe nach alle symmetrischen Differenzseparatoren erzeugt wurden, das Positionsregister 60 die Adresse D des
Feldes 59 enthält, welches die am weitesten rechts liegende Position der Datenfolge 50 ist.
Gemäß Figur 9 ist die Hardware zur Feststellung und Korrektur von Fehlern hinsichtlich des Inhalts der symmetrischen Differenzseparator-Positionen
einer Datenfolge dargestellt. Wie zuvor bereits erläutert, werden Positionsfehler hinsichtlich der symmetrischen
Differenzseparatoren während einer Vorwärts-oder einer Rückwärtsabtastung der Datenfolge 50 festgestellt, während ein
anderes Verfahren diese Fehler lokalisiert, nachdem sie fest-
509883/0858
gestellt worden sind. Die Hardware gemäß Figur 9 weist grundsätzlich
zwei Hauptabschnitte auf, die Fshlerfestellungs-Hardware 900, welche benutzt wird, um Fehler innerhalb der symmetrischen
Differenzseparatoren festzustellen und die Fehlerlokalisierungs-Hardware
901 , welche benutzt wird, um diese Fehler, nachdem sie festgestellt worden sind, zu lokalisieren. Wie
zuvor bereits erläutert, muß die Paritäts-Prüfsumme aller symmetrischen
Differenzseparatoren innerhalb eines gegebenen Blockes Null sein. Das muß so sein, da, wie zuvor gezeigt worden ist,
symmetrische Differenzseparatoren durch Exklusiv-ODER-Addition benachbarter Felder erzeugt werden. Demgemäß müssen die symmetrischen
Differenzseparatoren bei ihrer Exklusiv-ODER-Addition die Feldlängen erzeugen, die für ihre Bildung verantwortlich
waren. Da jedes Feld bei der Erzeugung der symmetrischen Differenzsepatoren zweimal benutzt worden ist, tritt der Feldtyp oder
Längencode in Paaren auf, wenn die symmetrischen Differenzseparatoren einerExklusiv-ODER-Addition unterworfen werden, wodurch
eine paarweise Streichung innerhalb der gesamten Prüfsumme verursacht wird. Dementsprechend führt eine Exklusiv-ODER-Addition
der symmetrischen Differenzseparatoren innerhalb eines vorgegebenen Blockes zu einem Ergebnis mit der Prüfsumme Null, wenn
alle symmetrischen Differenzseparatoren in der richtigen Weise vorhanden sind. Liegt jedoch ein Fehler hinsichtlich eines bestimmten
symmetrischen Differenzseparators vor, so>wird seine absolute Adresse bei der Vorwärtsabtastung gebildet, indem alle
vorangegangenen Feldlängen zu der anfänglichen Adresse des Blockes addiert werden, bis dieser bestimmte symmetrische Differenzseparator
erreicht wird. In gleicher Weise kann eine wahre Adresse des mit dem Fehler behafteten symmetrischen Differenzseparators
durch eine Rückwärtsabtastung gebildet werden, indem von der absoluten Endadresse des Blockes jede Feldlänge zwischen
dem Ende des Blockes und des fehlerhaften symmetrischen Differenz
separators subtrahiert wird. Alle diese Prinzipien werden zunächst benutzt um Fehler festzustellen und anschließend diese
Fehler zu lokalisieren.
§09883/0858
Es sei nun beispielsweise hinsichtlich Figur 9 angenommen, daß augenblicklich kein Fehler bezüglich des Feldseparators 55 vorliegt.
In diesem Fall müssen alle Feldlängen der Datenfolge 50 korrekt gewesen sein. Wenn unter Benutzung dieser Feldlängen
eine Positionstabelle 72 errichtet wird, so enthält diese die korrekten Adressen eines jeden symmetrischen Differenzseparators
einschließlich des letzten Separators, welcher das Ende des Blockes
anzeigt. Um festzustellen, daß die Adresse des Blockendes, welche unter Heranziehung all der verschiedenen Feldlängen erzeugt wurde,
korrekt ist, ist es lediglich erforderlich, die bekannte Adresse des Blockendes mit der erzeugten Adresse zu vergleichen. Wenn
diese einander gleich sind, so sind entweder alle Feldlängen und alle Feldpositionen korrekt oder es weisen mindestens zwei symmetrische
Differenzen einen Fehler auf. Ein Grenzregister 73 wird benutzt, um die bekannte korrekte Adresse des Blockendes zu speichern
und diese gespeicherte Adresse wird mit der erzeugten Adresse des Blockendes im Vergleicher 75 verglichen.
Es sei nun ein Zustand angenommen, wo ein Fehler hinsichtlich des symmetrischen Differenzseparators 55 vorliegt, der durch den Wert
/^ BC + E angezeigt wird. Bei einer Links-nach-Rechts-Abtastung
sind alle vorangehenden errechneten Feldlängen korrekt.Andererseits
sind jedoch alle Feldlängen, die hinter diesem Fehlerort errechnet werden, mit einem Fehler behaftet (siehe Längentabelle
71). Somit weist die Positionstabelle 72,die für eine Datenfolge 50 mit diesem Fehler errichtet wird, eine nicht-korrektv erzeugte
Adresse für das Blockende auf, die somit mit der bekannten, im Grenzregister 73 gespeicherten Adresse nicht übereinstimmt. Dementsprechend
wird für die Feststellung eines Fehlers in irgendeinem symmetrischen Feldseparator eine Längentabelle und eine
Positionstabelle mit Eingangsstellen für jedes Feld durch die Fehlerfeststellungs-Hardware 900 erzeugt. Da jede Position eines
jeden Feldes erzeugt und in der Positionstabelle 72 abgelegt wird, wird sie hierbei mit der bekannten rechten Endposition im
Grenzregister 73 mittels des Vergleichers 75 verglichen. Es sei an dieser Stelle vermerkt, daß die in der Fehlerfestellungs-Hardware
dargestellten Datenwege nur für einen bestimmten Augen-
609883/0858
blick die dargestellte Form einnehmen und in einem späteren Augenblick einen unterschiedlichen Verlauf aufweisen. Solang der
Inhalt des Grenzregisters 73 größer als irgendeine Position irgendeines Feldes innerhalb des Blockes 50 ist, wird kein Fehler
angezeigt. Da jedoch im vorliegenden Beispiel angenommen wurde, daß ein Fehler hinsichtlich des symmetrischen Differenzseparators
55 vorliegt, weisen alle Feldlängen, die auf diese Position folgen, einen Fehler auf und demgemäß wird irgendeine
erzeugte Position eines Feldes in der Tabelle 72 größer als der Inhalt des Grenzregisters 73. Es wird somit zu jedem Zeitpunkt,
zu dem der Inhalt des Grenzregisters kleiner als irgendeine erzeugte Position irgendeines Feldes innerhalb eines vorgegebenen
Blockes ist, ein Fehlersignal erzeugt. Ebenso wird ein Fehlersignal wiederum erzeugt, wenn bei der Erzeugung der letzten Position
des letzten Feldes innerhalb des Blockes und einem Vergleich mit dem Inhalt des Grenzregisters 7 3 gefunden wird, daß diese
letzte errechnete Position kleiner als der Inhalt des Grenzregisters ist.
Im allgemeinen ist das Blockende bekannt, da die Anzahl der Felder
bekannt ist oder vorbestimmte Blockgrößen benutzt werden oder die Baumstruktur auf die Länge des Blockes verweist.
Es sei nochmals auf die Fehlerfeststellungs-Hardware gemäß Figur Bezug genommen und es sei/ angenommen, daß der symmetrische Differenzseparator
& BC im Feld 55 fehlerhaft ist und daß die Längentabelle
71 und die Positionstabelle 72 der Datenfolge 50 mittels einer Links-nach-Rechts-Abtastung gebildet werden. Gleichzeitig
mit der Bildung dieser Tabellen wird ein Vergleich der erzeugten Position eines jeden Feldes mit der Position des rechten Endes
der Datenfolge 50 durchgeführt. Es ist 2t!ivorbereits erläutert
worden, wie irgendein symmetrischer Differenzseparator aus den Feldern auf seinen beiden Seiten erzeugt wird und wie eine Längentabelle
errichtet wird. Im folgenden soll die Bildung der Positionstabelle bei der Erzeugung eines jeden symmetrischen Differenzseparators
beschrieben werden, wobei ein Vergleich dieser
509883/0858
Position mit einer bekannten Position des Blockendes der Information
durchgeführt wird.
Ein eine Datenfolge 50 enthaltender Informationsblock mit Separatoren
von einem Byte zwischen jedem Feld wird an einem bekannten Speicherplatz im Hauptspeicher abgespeichert. Da die
Position bekannt ist, wird die Adresse des Blockes in das Positionsregister 70 geladen und da die Länge des Blockes ebenfalls
bekannt ist - in diesem Fall sei eine vorbestimmte bekannte Länge angeommen - ist die rechte Endposition des Informationsblockes der Datenfolge 50 ebenfalls bekannt und wird im Grenzregister
73 abgelegt. Das Feld A-52 beginnt am linken Ende des Blockes und es gibt somit kein Datenfeld innerhalb des Blockes 50,
das dem Feld A vorausgeht. Die anfängliche Feldlänge ist daher mit Null gegeben. Dieser Wert wird in der ersten Stelle der
Längentabelle 71 abgelegt. Um die absolute Position des linken
des
Endes Blockes 50 zu erhalten, wird die Länge Null in dem Binäraddierer
78 zu dem Inhalt des Positionsregisters 70 binär addiert, um auf diese Weise die absolute Position des Informationsblockes
50 im Hauptspeicher zu erzeugen. Diese Position wird in der Positionstabelle 72 abgelegt, wobei der entsprechende
Speicherplatz als linkes Ende bezeichnet ist. Die Länge des Feldes A-52 entspricht Δ. AO und wird dem Separatorfeld 51 entnommen
und am Speicherplatz für die Länge A innerhalb der Längentabelle 71 abgelegt. Die Länge A wird dem Binäraddierer 78 zugeführt und
zu dem Inhalt des Positionsregisters 70 addiert, dessen Inhalt über den Datenweg P-2 dem Binäraddierer 78 ebenfalls zugeführt
wird. Das Ergebnis dieser Addition wird über die DatenwegeP-4 und P4A dem Positionsregister 70 und über die Datenwege P-4,
P-4B und P-4C am Speicherplatz A der Positionstabelle 72 abgelegt. Weiterhin wird das Ergebnis der Addition über die Datenwege
P-4, P-4B und V-4C dem Vergleicher 75 zugeführt, der über den Datenweg V-4D zugleich an das Grenzregister 73 angeschlossen
ist. Wenn der Inhalt des Grenzregisters 73 größer als die errechnete Länge A ist, so wird das Verfahren fortgesetzt. Im
nächsten Schritt wird ein symmetrischer Differenzseparator ΔίΒ-53
609883/0858
erzeugt, indem das Feld A und das Feld B in dem Exklusiv-ODER-Addierer
77 einer zuvor anhand der Figuren 8A bis 8C erläuterten Addition unterzogen werden. Dieses Verfahren wird hinsichtlich
jedes Feldseparators wiederholt. Da der FeEseparator 55 als fehlerhaft
erzeugt angenommen wurde, sind alle symmetrischen Differenzseparatoren und Feldpositionen, welche nach diesem Separator
erzeugt werden, ebenfalls fehlerhaft. Die Hardware bemerkt jedoch diese Fehlerbildung zu diesem Zeitpunkt noch nicht. Sie
fährt mit der Erzeugung der Länge C fort, welche fehlerhaft ist und speichert diese in der Längentabelle 71, um sodann anschliessend
die Position D zu erzeugen, die ebenfalls fehlerhaft ist und in der Positionstabelle 72 abgelegt wird. Nach jeder Erzeugung
veranlaßt die Hardware eine Vergleichsprüfung im Vergleicher 75 zwischen der erzeugten Position und der bekannten Endposition.
An irgendeinem Punkt, bevor das Ende des Blockes erreicht ist, ergibt ein Vergleich der erzeugten Position, mit der
in dem Grenzregister 73 enthaltenen Endposition des Blockes, daß die Grenze des Grenzregisters 73 überschritten ist. Andererseits
wird durch Gleichheit zwischen dem Inhalt des Grenzregisters 7 3 und dem Inhalt des Positionsregisters 70 angezeigt, daß das rechte
Ende des Informationsblockes tatsächlich erreicht worden ist , aber die erzeugte absolute Position in der letzten Engangsstelle
der Längentabelle 71 (Fehler 3) ungleich Null ist. Somit ist angezeigt, daß ein Fehler irgendwo innerhalb des Blockes 50 aufgetreten
ist, wobei jedoch der Fehlerort unbekannt ist. Zur Bestimmung des exakten Ortes des Fehlers ist die Fehlerlokalisierungs-Hardware
901 gemäß Figur 9 erforderlich.
Das Grundprinzip zur Feststellung der absoluten Adresse, an der ein Fehler in einem symmetrischen Differenzseparator aufgetreten
ist, basiert auf der Tatsache, daß alle erzeugten Positionen eines jeden dem fehlerhaften Block vorausgehenden Feldes unabhängig
von der Richtung, in der die absolute Adressenposition erzeugt wird, korrekt sein müssen. Andererseits sind nach Fehlerauftritt
alle Adresspeicherplätze unabhängig von der Abtastrichtung, in der die Adressen erzeugt werden,inkorrekt. Durch zweifache Erzeugung
von absoluten Adressen für jedes Feld, wobei die Ergebnisse
5098 83/0858
einer Vorwärts- und einer Rückwärtsabtastung verwendet werden und durch anschließenden Vergleich der beiden absoluten Adressen für
jeden Feldpunkt wird festgestellt, ob die Adresse unabhängig von der Richtung, in der sie erzeugt wird, korrekt ist. Beispielsweise
wurde in Figur 9 die Annahme getroffen, daß der symmetrische Differenzseparator A BC + E-55 fehlerhaft ist. Somit sind
bei einer Vorwärtsabtastung alle Adresspositionen, die bis zu dem Feld 55 erzeugt werden, korrekt, während alle nach dem Feld
55 erzeugten Adresspositionen inkorrekt sind. Andererseits verhält es sich bei einer Rückwärtsabtastung so, daß alle Adressen
ausgehend vom Feld 59 bis zum Feld 55 korrekt sind, während alle Adressen nach dem Feld 55, d.h. die Felder 54,53,52 usw. inkorrekt
sind. Somit ist es zur Affindung der exakten Stelle, an der der Fehler auftritt, lediglich erforderlich, zusätzlich zu einer Positionstabelle
bei einer Vorwärtsabtastung eine andere Positionstabelle bei einer Rückwärtsabtastung zu erzeugen, wobei mit dem
Ende des Blockes begonnen wird und wobei die absolute Position eines jeden Feldes innerhalb des Blockes 50 durch Subtraktion
der Feldlängen von dem Ende des Blockes 50 erzeugt werden. Durch Vergleich der beiden erzeugten Feld-Positionstabellen, die im
Rahmen einer Vorwärts- und Rückwärtsabtastung erzeugt wurden, ergibt sich somit eine Stelle innerhalb des Blockes, in diesem Fall
das Feld 55, an welchem die absolute, bei der Vorwärtsabtastung erzeugte Position genau der absoluten, bei der Rückwärtsabtastung
erzeugten Position entspricht. Dies verhält sich deswegen so, da eine korrekte Adresse für die absolute Position des Feldes 55
bei der Vorwärtsabtastung verfügbar ist und ebenfalls eine korrekte Adresse für das Feld 55 bei der Rückwärtsabtastung verfügbar
ist und diese Adressen genau die gleichen sowohl in der Vorwärtsais auch in der Rückwärtsrichtung sind.
Das vorstehend erläuterte Verfahren wird durch die Fehler-Lokalisierungs-Hardware
901 gemäß Figur 9 wie folgt ausgeführt. Die Position des Endes der Datenfolge gemäß Block 50 wird im Positionsregister
80 abgelegt. Da &DO-59 das Ende des Blockes 50 bildet, besitzt irgendein Feld hinter dem Block in Bezug auf den
509883/0858
" 44 " 2527U1
Block die Länge Null. Diese Länge wird in der letzten Eingangsstelle der Längentabelle 81 der Fehlerlokalisierungs-Hardware abgelegt.
Um die Länge des Feldes D-58 bei der Rückwärtsabtastung zu erzeugen, wird der symmetrische Differenzseparator ^ DO in dem
Exklusiv-ODER-Addierer 87 zu dem Feld D-58 hinzuaddiert. Der symmetrische
Differenzseparator &DO-59 wird in dem symmetrischen
Differenzregister 86 abgelegt und sodann dem Exklusiv-ODER-Addierer 87 über den Datenweg V-3 zugeführt. Die Länge des auf
der rechten Seite des symmetrischen Differenzseparators Λ DO-59
liegenden Feldes ist gleich Null und wurde im vorangehenden Schritt in der Längentabelle 81 abgelegt. Diese Länge wird dem
Exklusiv-ODER-Addierer 87 über den Datenweg V-4A und V-4 zugeführt, so daß die addierten Werte die Länge des Feldes D-58 ergeben,
welche sodann über den Datenweg V-5B und V-4B in der Längentabelle 81 abgelegt wird. Als nächstes wird der symmetrische
Feldseparator Δ. CD-57 in dem symmetrischen Differenzregister
86 abgelegt und der Inhalt dieses Registers wird sodann dem Exklusiv-ODER-Addier 87 über den Datenweg V-3 zugeführt. Im selben
Zeitpunkt wird die gerade erzeugte Länge D, die in der Längentabelle 81 abgelegt ist, dem Exklusiv-ODER-Addierer 87 über den
Datenweg V-4 zugeführt und die beiden Größen werden zusammen addiert, um die Länge des Feldes C-56 zu ergeben, welche sodann
in die Längentabelle 81 über die Datenwege V-5B und V-5A eingeschrieben wird. Dieses Verfahren wird solange wiederholt, bis
alle Längen der Datenfolge 50 des Informationsblockes erzeugt sind. Wenn diese Längen durch eine Rückwärtsabtastung erzeugt
werden^ so sind die Längen der Felder D und C korrekt bis einschließlich
Feld 55. Die Feldlänge B-54 und Feldlänge A-52 sind jedoch nicht korrekt falls eine Rückwärtsabtastung erfolgt. Andererseits
wefet die Tabelle 71, deren Längen bei einer Vorwärtsabtastung
erzeugt wurden, die Feldlänge A-52 und die Feldlänge B-54 in korrekter Weise auf und es sind die Felder C-56 und D-58,
welche auf das inkorrekte Feld 55 folgen, mit Fehlern behaftet. Es ist zuvor erwähnt worden, daß zur Lokalisierung des Fehlers
ein Vergleich der bei der Vorwärtsabtastung erzeugten Positionen mit den bei der Rückwärtsabtastung erzeugten Positionen solange
509883/0858
durchzuführen ist, bis sich bei diesem Vergleich eine Gleichheit ergibt. Dementsprechend wird, da jede Länge eines jeden Feldes
bei der Rückwärtsabtastung erzeugt wird, die absolute Position dieses Feldes in dem Positionsregister 80 wie folgt ebenfalls erzeugt.
Ist beispielsweise die Länge D des Feldes D-58 erzeugt worden, so wird die absolute Position des Feldes D bei der Rückwärts
abtastung erzeugt, indem die Länge des Feldes D im binären Addierer/Subtrahierer 88 von der absoluten Endposition 59 des
Blockes 50 subtrahiert wird. Zu diesem Zweck wird die Adresse des Blockendes 59 über die Datenwege V-1A und V-1B dem binären
Addierer/Subtrahierer 88 zugeführt. Zur gleichen Zeit wird die Länge des Feldes D aus der Längentabelle 81 über die Datenwege
V-4B und V-4 dem Addierer/Subtrahierer 88 zugeführt. Das Ergebnis dieser Subtraktion wird sodann über den Datenweg V-1C dem Positionsregister
80 eingeschrieben. Demgemäß enthält nunmehr das Positionsregister 80 die absolute Position des Feldes 57, welches
bei einer Rückwärtsabtastung erzeugt wurde. Die Position des einen Fehler ET aufweisenden Feldes D, welches in der Positionstabelle 72 abgelegt ist, wurde durch eine Vorwärtsabtastung erzeugt.
Diese Position wird sodann in dem Vergleicher 84 mit der Position des Feldes D, wie es bei der Rückwärtsabtastung erzeugt
wurde, verglichen. Die Position des den Fehler E1 aufweisenden Feldes D wird dem Vergleicher 84 über den Datenweg D1B zugeführt
und der Inhalt des Positionsregisters 80 wird dem Vergleicher 84 über die Datenwege V-1A und V1A1 zugeführt. Sodann werden beide
Werte miteinander verglichen. In diesem Fall, wenn die bei der Vorwärtsabtastung ermittelte Position D die falsche Position ist,
während die bei der Rückwärtsabtastung ermittelte Position D die richtige Position ist, ergibt sich keine Übereinstimmung. Wenn dieses
Verfahren wiederholt wird, so wird durch es unter Umständen die Position des Feldes 55 ausgewählt, welches den tatsächlichen
Fehler aus der Tabelle 72 enthält, wie er bei der Vorwärtsabtastung korrekt erzeugt wurde (Position B in Positionstabelle 72).
Die Position des Feldes 55 wird ebenfalls während der Rückwärtsabtastung korrekt errechnet und ist zu diesem Zeitpunkt im Positionsregister
80 abgespeichert. Ein Vergleich des Inhalts des
Positionsregister 88 mit der Position C der Positionstabelle im Vergleicher 84 ergibt somit Übereinstimmung, .wodurch der Fehler
lokalisiert ist.
Es sei hier vermerkt, daß die Längentabelle 71 für die Fehlerlokalisierung
nicht erforderlich ist, da alle ihre maßgebliche Information in die Positionstabelle 72 übernommen ist. Die
Längentabelle 81 ist daher nicht erforderlich, da tatsächlich die Längentabelle 71 wieder bei der Rückwärtsabtastung während
des Fehlerlokalisierungsverfahrens verwendet werden kann.
509-883/0658
(Aus "Fundamental Algorithms" - Band 1 - "The Art of Computer Programming", Donald E. Knuth, Addison-Wesley Publishing
Company)
Grundelement (Atomic element)
Baum (Tree) ein Element aus einer Vielzahl
gesuchter Objekte
gesuchter Objekte
ein endlicher Satz T von einem oder mehreren Knoten dergestalt, daß
a) ein bestimmter Knoten als Wurzel des Baumes (T) bezeichenbar ist und
a) ein bestimmter Knoten als Wurzel des Baumes (T) bezeichenbar ist und
die verbleibenden Knoten (ausgenommen die Wurzel) in m^0
b)
zergliederte Sätze
T1
T.
Teilbäume (Subtrees) unterteilt sind und jeder dieser Sätze seinerseits ein Baum ist.
- die Bäume T.. . . .. , T werden als Teilbäume
der Wurzel bezeichnet
Wurzel (Root) ein speziell bezeichneter Knoten
eines Baumes
eines Baumes
Knoten (Node)
Grad eines Knoten (Degree of Node) ein oder mehrere aufeinanderfolgende
Worte eines Rechenspeichers, der in benannte, als Felder bezeichnete Teile unterteilt ist (Synonyme
für Knoten sind: Datensätze, Systemelemente usw.)
für Knoten sind: Datensätze, Systemelemente usw.)
die Anzahl der Teilbäume eines
Knoten
Knoten
Endknoten oder Blatt (Terminal Node or Leaf)
Astknoten (Branch Node) ein Knoten mit dem Grad Null
ein weiterführender Knoten
509883/0858
Pegel eines Knoten (Level of a Node)
Wald (Forest)
Linearliste (linear List)
Stapel (Stack)
Warteschlange Queue)
Doppelenden-Warteschlange JjDuble-ended queue)
der Pegel eines Knoten in Bezug auf T, wobei die Wurzel den Pegel 1 aufweist und andere Knoten einen
Pegel besitzen, der um 1 höher liegt gegenüber dem Teilbaum der Wurzel T., welche die Knoten enthält.
D
ein Satz von null oder mehreren nicht-ζusammenhängenden Bäumen.
Ebenso die Knoten eines Baumes unter Ausnahme der Wurzel
ein Satz von m > O Knoten, deren strukturelle Eigenschaften nur
die auf eine Dimension bezogene Position von Knoten einschließen.
eine Linearliste,hinsichtlich derer alle Einfügungen und Entnahmen am
einen Ende der Liste vorgenommen werden
eine Linearliste, bei der alle Einfügungen am einen Ende und alle Entnahmen (Zugriffe) am anderen
Ende der Liste vorgenommen werden
eine Linearliste, bei der alle Einfügungen und Entnahmen an den
Enden der Liste vorgenommen werden.
509883/085Ö
Claims (17)
- 51-°1449 -49- 2527U1PatentansprücheVerfahren zur Kennzeichnung der Länge oder des Types von Datenfeldern innerhalb einer Reihe von aufeinanderfolgenden Datenfeldern, wobei die Kennzeichnungen zwischen den Datenfeldern angeordnet sind, dadurch gekennzeichnet, daß die Kennzeichnungen als zwei benachbarte Datenfelder gleichzeitig kennzeichnende symmetrische Differenzseparatoren ausgebildet sind, wobei der jeweilige symmetrische Differenzseparator die Summe oder Differenz zweier benachbarter Feldwerte repr äsentiert.
- 2. Verfahren nach Anspruch 1,dadurch gekennzeichnet, daß jeder symmetrische Differenzseparator durch eine übertragsfreie Exklusiv-ODER-Addition der Werte benachbarter Datenfelder gebildet wird.
- 3. Vorrichtung zum Kennzeichnen der Länge benachbarter Datenfelder bei der Durchführung des Verfahrens nach Anspruch !,gekennzeichnet durcha. eine erste Einrichtung (61) zur Speicherung der Länge wenigstens zweier benachbarter Datenfelder, die durch einen der genannten symmetrischen Differenzseparatoren zu trennen sind undb. eine zweite mit der ersten Einrichtung (61) verbundene Einrichtung (63) zur Erzeugung des jeweiligen symmetrischen Differenzseparators.509833/0858
- 4. Vorrichtung nach Anspruch 3,dadurch gekennzeichnet, daß die erste Einrichtung eine Längentabelle (61) ist.
- 5. Vorrichtung nach Anspruch 3,dadurch gekennzeichnet, daß die zweite Einrichtung ein übertragsfreier Exklusiv-ODER-Addierer (63) ist, der die Länge zweier benachbarter Felder addiert.
- 6. Vorrichtung nach Anspruch 5, gekennzeichnet durch eine mit der ersten und zweiten Einrichtung verbundene dritte Einrichtung (62) zur Erzeugung einer absoluten Adresse für jedes der aufeinanderfolgenden Felder.
- 7. Vorrichtung nach Anspruch 6, gekennzeichnet durch eine an die dritte Einrichtung angeschlossene vierte Einrichtung (60) zum Speichern der laufenden absoluten Adresse des jeweils zuletzt erzeugten symmetrischen Differenzseparators.
- 8. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß die dritte Einrichtung aus einem Binäraddierer (62) besteht, der die Länge eines der benachbarten Felder zu der zuletzt erzeugten absoluten Adresse algebraisch addiert.
- 9. Vorrichtung nach Anspruch 7,dadurch gekennzeichnet, daß die vierte Einrichtung ein Positionsregister (60) ist.
- 10. \brrichtung zum bidirektionalen Abtasten der nach dem Verfahren nach Anspruch 1 gewonnenen symmetrischen Differenzseparatoren zwecks Bestimmung der Adresse eines nächstfolgenden Feldes innerhalb einer Folge von Feldern mit variabler Länge, gekennzeichnet durch509883/0858a. eine erste Einrichtung (9) zum Speichern der Länge wenigstens zweier benachbarter Datenfelder, die durch einen symmetrischen Differenzseparator getrennt sind,b. eine zweite mit der ersten Einrichtung verbundene Einrichtung (6) zur Erzeugung des symmetrischen Differenzseparators,c. eine mit der ersten und zweiten Einrichtung verbundene dritte Einrichtung zur Erzeugung der Länge des jeweils anderen der beiden benachbarten Felder in Abhängigkeit von dem jeweils vorliegenden Differenzseparator und des einen der beiden benachbarten Felder undd. eine mit der dritten Einrichtung verbundene vierte Einrichtung (7) zum algebraischen Addieren der Länge eines der beiden benachbarten Felder zu der Adresse des symmetrischen Differenzseparators.
- 11. Vorrichtung nach Anspruch TO, dadurch gekennzeichnet, daß die zweite Einrichtung aus einem übertragsfreien Exklusiv-ODER-Addierer/Subtrahierer besteht.
- 12. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die dritte Einrichtung aus einem übertragsfreien Exklusiv-ODER-Addierer/Subtrahierer besteht.
- 13. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß die vierte Einrichtung aus einem Binäraddierer (7) für eine vorzeichenrichtige algebraische Addition besteht.
- 14. Vorrichtung nach Anspruch 13, gekennzeichnet durch eine fünfte mit der vierten Einrichtung verbundene Einrichtung (5) zur Speicherung der Adressen der symmetrischen Differenzseparatoren.5098:83/0.850
- 15. Vorrichtung zur Fehlererkennung beim Abtasten der nach dem Verfahren nach Anspruch 1 gewonnenen Differenzseparatoren, gekennzeichnet durcha. eine erste Einrichtung (73) zur Erzeugung der absoluten Adresse des Endes eines die Datenfelder aufweisenden Informationsblockesb. eine zweite Einrichtung (78) zur Erzeugung der absoluten Position jeder der aufeinanderfolgenden Felder undc. eine dritte mit der ersten und zweiten Einrichtung verbundene Einrichtung (75) zum Vergleichen der absoluten Adresse des Blockendes mit jeder der absoluten Positionen der aufeinanderfolgenden Felder.
- 16. Vorrichtung nach Anspruch 15, dadurch g.ekennzeichnet, daß eine mit der dritten Einrichtung verbundene vierte Einrichtung angeordnet ist, die anzeigt, ob die absolute Adresse des Blockendes größer, kleiner oder gleich der absoluten Adresse der absoluten Position des gerade verglichenen Datenfeldes ist.
- 17. Vorrichtung zur Fehlerlokalisierung beim Abtasten der nach dem Verfahren nach Anspruch 1 gewonnenen Differenzseparatoren, gekennzeichnet durcha. eine erste Einrichtung zur Erzeugung der absoluten Adresse eines jeden symmetrischen Differenzseparators innerhalb eines Blockes von Datenfeldern mittels einer Vorwärtsabtastungb. eine zweite Einrichtung zur Erzeugung der absoluten Adresse eines jeden symmetrischen Differenzseparators innerhalb eines Blockes von Datenfeldern mittels einer Rückwärtsabtastung undc. eine dritte mit der ersten und zweiten Einrichtung verbundene Einrichtung zum Vergleichen der absoluten Adresse eines jeden bei einer Vorwärtsabtastung erzeugten symmetrischen Differenzseparators mit der absoluten Adresse eines jeden bei einer Rückwärtsabtastung erzeugten symmetrischen Differenzseparators.509883/0858
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US482125A US3918027A (en) | 1974-06-24 | 1974-06-24 | Scanning and error checking apparatus for address development utilizing symmetric difference encoded data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2527441A1 true DE2527441A1 (de) | 1976-01-15 |
Family
ID=23914791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19752527441 Pending DE2527441A1 (de) | 1974-06-24 | 1975-06-20 | Verfahren und vorrichtung zur kennzeichnung von datenfeldern |
Country Status (5)
Country | Link |
---|---|
US (1) | US3918027A (de) |
JP (1) | JPS5119454A (de) |
CA (1) | CA1031464A (de) |
DE (1) | DE2527441A1 (de) |
FR (1) | FR2279157A1 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS543848A (en) * | 1977-06-13 | 1979-01-12 | Toray Ind Inc | Water-soluble polyester adhesive |
US4200893A (en) * | 1978-05-17 | 1980-04-29 | Dictaphone Corporation | Instruction indicating apparatus for a record and/or playback device |
US4608633A (en) * | 1983-04-01 | 1986-08-26 | Honeywell Information Systems Inc. | Method for decreasing execution time of numeric instructions |
US5247505A (en) * | 1985-04-17 | 1993-09-21 | Canon Kabushiki Kaisha | Information recording method for reciprocally recording and verifying information |
CA1268252A (en) * | 1985-04-17 | 1990-04-24 | Fumiaki Kawaguchi | Information recording method |
US4910725A (en) * | 1986-04-23 | 1990-03-20 | Drexler Technology Corporation | Optical recording method for data cards |
DE3732983A1 (de) * | 1987-09-30 | 1989-04-13 | Thomson Brandt Gmbh | Cd-spieler mit einem speicher |
US5819297A (en) * | 1995-09-27 | 1998-10-06 | Emc Corporation | Method and apparatus for creating reliably duplicatable tape volumes without copying any padding |
US5860088A (en) * | 1996-12-06 | 1999-01-12 | International Business Machines Corporation | Method for extraction of a variable length record from fixed length sectors on a disk drive |
EP0945784A1 (de) | 1998-03-27 | 1999-09-29 | Motorola, Inc. | Verfahren und Vorrichtung zur Speicherung von Datenstrukturen unter Verwendung von Addressenzeigern |
DE19840835C2 (de) | 1998-09-07 | 2003-01-09 | Fraunhofer Ges Forschung | Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3366928A (en) * | 1964-06-29 | 1968-01-30 | Ibm | Accessing system for large serial memories |
US3439344A (en) * | 1966-08-09 | 1969-04-15 | Sperry Rand Corp | Continuous data recording apparatus |
-
1974
- 1974-06-24 US US482125A patent/US3918027A/en not_active Expired - Lifetime
-
1975
- 1975-06-11 CA CA229,080A patent/CA1031464A/en not_active Expired
- 1975-06-20 DE DE19752527441 patent/DE2527441A1/de active Pending
- 1975-06-23 JP JP50077509A patent/JPS5119454A/ja active Pending
- 1975-06-23 FR FR7519615A patent/FR2279157A1/fr not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
CA1031464A (en) | 1978-05-16 |
JPS5119454A (de) | 1976-02-16 |
FR2279157A1 (fr) | 1976-02-13 |
US3918027A (en) | 1975-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2527472A1 (de) | Vorrichtung zum abtasten von datenfeldern in zwei richtungen | |
DE2905328A1 (de) | Verfahren und vorrichtung zur assoziativen informationswiedergewinnung | |
DE69708654T2 (de) | Chipkarte mit gemäss einer baumartigen struktur gespeicherten dateien | |
DE2227148C3 (de) | Schaltungsanordnung zur Umsetzung digitaler Daten | |
DE2557553C2 (de) | Maschinelles Verfahren zur Verdichtung und -Wiederausdehnung eines beliebigen Schwarzweiß-Bildes und Einrichtung zur Durchführung des Verfahrens | |
DE3991231C2 (de) | Vektorprozessor und Verfahren zum Suchen einer Stichwortzeichenfolge in einer Textzeichenfolge | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE3788563T2 (de) | Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen. | |
DE2809623A1 (de) | Verfahren und vorrichtung zur assoziativen informationswiedergewinnung | |
Brooker et al. | The compiler compiler | |
DE2160412A1 (de) | Binärdatenumsetzer | |
DE69026885T2 (de) | Dynamische Selektion von Datenformaten für rekursiv geschachtelte logische Elemente | |
DE2527441A1 (de) | Verfahren und vorrichtung zur kennzeichnung von datenfeldern | |
DE2521436B2 (de) | Informationswiedergewinnungsanordnung | |
DE1474040C3 (de) | Einrichtung zur Bildung von Speicheradressen | |
DE2262070A1 (de) | Mit schieberegistern arbeitendes fehlerkorrektursystem | |
DE69814465T2 (de) | Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten | |
DE102008016179A1 (de) | Automatische Generierung von Kompaktcodetabellen | |
EP1719345B1 (de) | Verfahren und vorrichtung zur codierung und decodierung von strukturierten dokumenten | |
DE3511684A1 (de) | Verfahren zum korrigieren von daten in einem videoformatsignal | |
DE2647574C2 (de) | Vorrichtung zum Verarbeiten von durch ein Anfangs- und Endzeichen begrenzten Datenfeldsegementen variabler Länge bei einem Umlaufspeicher | |
DE69820230T2 (de) | N-weg verarbeitung von bitketten in einer datenflussarchitektur | |
DE3736455A1 (de) | Hierarchisches ablagesystem | |
DE1964570A1 (de) | Verfahren zum Wiederauffinden gespeicherter Informationen | |
DE2458331A1 (de) | Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OHJ | Non-payment of the annual fee |