DE1964570A1 - Verfahren zum Wiederauffinden gespeicherter Informationen - Google Patents

Verfahren zum Wiederauffinden gespeicherter Informationen

Info

Publication number
DE1964570A1
DE1964570A1 DE19691964570 DE1964570A DE1964570A1 DE 1964570 A1 DE1964570 A1 DE 1964570A1 DE 19691964570 DE19691964570 DE 19691964570 DE 1964570 A DE1964570 A DE 1964570A DE 1964570 A1 DE1964570 A1 DE 1964570A1
Authority
DE
Germany
Prior art keywords
key
byte
bytes
code
register
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.)
Ceased
Application number
DE19691964570
Other languages
English (en)
Other versions
DE1964570B2 (de
Inventor
Salmond Kent Adams
Clark Iv William Albert
Stafford Thomas Sanderson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE1964570A1 publication Critical patent/DE1964570A1/de
Publication of DE1964570B2 publication Critical patent/DE1964570B2/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

Verfahren zum Wiederauffinden gespeicherter Infοr-iaationen
Die Erfindung betrifft ein Verfahren zum ti?i@ds:£ auffinden gespeicherter Informationen in Verbindung mit @iae»B ¥©i*fahren zur Erseugung yerdichteter Schlüssel aus eines' Folg© sortierter, verschiedenen Informationsgegenstäsiden zug<s@TänQt®%0 unverrichteter Schlüssel«
allgemein handelt es sich hei ein Verfallen zvm Ifiederauf» finden von in geeigneter Weise gespeieheri©sa Isaf© Stationen, die in Form eines Verzeichnisses sortiert sind«
fall aa In
formationen verschiedenster Art ist ständig iai Wachsen begriffen* Selbstverständlich erhöht sich dadurch auch die Anzahl der Fälle» in denen eine in der Masse von Informationen.enthaltene Information nicht mehr mit der erforderlichen Geschwindigkeit wieder-
009829/U15
aufgefunden werden kann. Obgleich bereits große Anstrengungen hinsichtlich einer optimalen Lösung dieses Problems unternommen ' wurden, ist bisher noch kein grundsätzlicher Weg bekannt geworden, der das Wiederauffinden von Informationen aus einer großen Anzahl von Dokumenten oder Aufzeichnungen in gewünschter Weise erlaubt.
Das erfindungsgemäße Verfahren zeigt einen brauchbaren Weg zur maschinellen Lokalisierung von mittels Schlüsseln oder Kennworten registrierten Informationen. Die Erfindung gestattet es, jegliche Art alphanumerischer Schlüssel, die in einer sortierten Folge angeordnet sind, in verdichtete Schlüssel umzuwandeln und in dieser Form auch wieder zu suchen. Jeder verdichtete Schlüssel liefert eine Abgrenzung für den unverdichtetei: Schlüssel, den er repräsentiert. Eine örtliche Besiimr\ung für die dem Schlüs-sel zugeordnete Information kann einer hinzugefügten Adresse, einem söge-
nannter Zeige; qumt c!©m Schlüssel seihst entnommen werden.
" Verfahren und Einrichtungen zum Wiederauffinden toe Informationen^ die in unverdienteteτ sortierter Folge registriert sind, sind im großer 2ahl bekannt« Bei diesen Verfall?en werden Computer eingesetzt, wobei spezielle Zugriffsmet ho den» und elektronische .Katalogisierung angewandt werden. Als Stand der Technik auf dies©ai Gebiet ,sind insbesondere die US-Patents 3.408.631, 3.5JS.233.. 3.366.928, 3.242*470 und 3.030.609 zu erwähnen*
Die gegenwärtig gebräuchlichen, mit Computern arbeitenden Ve*»
Docket PO 968 024 A 009829/1*1«
BAD ORIGINAL
fahren weisen in vieler Hinsicht Mängel auf. Ein wesentlicher Mangel ergibt sich aus dem großen Bedarf an Speicherkapazität. Die unverdichteten Schlüsselformate bedingen, daß bei jedem Zugriff eine große Anzahl von Bytes in jedem Schlüssel abgetastet werden muß. Diese Verfahren sind demnach zeitlich und kostenmäßig sehr aufwendig, wenn ein großer Index abgesucht oder auch wenn ein kleiner Index wiederholt abgesucht werden muß. Die Erfindung vermeidet diese Mängel, da durch sie die Anzahl der abzutastenden Bytes je Zugriff wesentlich herabgesetzt wird. Auf diese Weise wird der Bedarf an Speicherkapazität und die Suchzeit wesentlich herabgesetzt.
Bei der gegenwärtigen, Computer verwendenden Suchtechnik, wie sie in den angegebenen US-Patentsehriften beschrieben ist, sind den auf Magnetplatten- oder Magnettrommelspeichern gespeicherten Dokumenten zum Zwecke der Indexierung unverdichtete Schlüssel zugeordnet. Eine Suche nach einem Dokument kann über den Schlüssel oder über die Adresse des Dokumentes erfolgen. Beispielsweise sind in den US-Patentschriften 3.408.631, 3.350.693, 3.343.134, 3.344.402, 3.344.403 und 3.344.405 unverdichtete Schlüssel auf Magnetplattenspeichern registriert. Ein besimmter Schlüssel kann durch Vergleich mit einem entsprechenden Suchargument ermittelt werden. Sobald Gleichheit zwischen Schlüssel und Suchargument festgestellt wird, wird eine mit dem unverdichteten Schlüssel gespeicherte Hinweisadresse dazu verwendet, das an einer anderen Stelle des Speichers gespeicherte Dokument abzurufen.
Docket PO 968 024 A 009828/141S
Das erfindungsgemäße Verfahren zum Wiederauffinden gespeicherter Informationen verwendet dagegen verdichtete Schlüssel, bei denen die durch die Indexierung vorhandene Redundanz entfernt ist.
Auf dem Gebiet der Beseitigung von Redundanz durch Maßnahmen zur Informationsverdichtung sind mehrere Methoden bekannt· Die US-Patente 2.978.535 und 3.225.333 betreffen beispielsweise die fc Verdichtung von digitalisierten Fernsehsignalen. Die US-Patente 3.185.824 und 3.237.170 zeigen Verfahren, bei denen die Anzahl der Nichtübereinstimmungen zwischen aufeinanderfolgenden Verläufen digitaler Obertragungssignale festgestellt wird. Das US-Patent 3.237.170 verwendet Maßnahmen zur Codierung sich wiederholender Bitmuster. Das US-Patent 3.275.989 befaßt sich mit Befehlen, die jeweils nur den Teil enthalten, der sich vom vorhergehenden Befehl unterscheidet. In entsprechender Weise betrifft US-Patent 3.233. 982 ein Verfahren, bei dem bei einer Adresse jeweils nur der Teil verwendet wird, der sich von der vorhergehenden Adresse unter-
scheidet.
Diese bekannten Maßnahmen bedienen sich größtenteils einer Informationsverdichtung, die reversierbar sein soll. Die Informationen werden zunächst verdichtet, dann übertragen und schließlich wieder in ihre originale, unverdichtete Form gebracht. Dagegen befaßt sich die Erfindung mit einem Verfahren zur Beseitigung von durch Sortiermaßnahmen hervorgebrachter Redundanz, wobei die Forderung der Reversierbarkeit nicht besteht.
Docket PO 968 024 A 0 0 9 8 2 9/1416
■ ~ 5 "
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zum Wiederauffinden gespeicherter Information anzugeben, wobei in erster Linie Wert darauf gelegt wird, mit einem Minimum an Speicherkapazität und ebenso mit einem Minimum an Suchzeit auszukommen.
Zur Lösung dieser Aufgabe wird gemäß der Erfindung ein Verfahren zum Wiederauffinden gespeicherter Informationen in Verbindung mit einem Verfahren zur Erzeugung verdichteter Schlüssel aus einer Folge sortierter, verschiedenen Informationsgegenständen zugeordneter, unverdichteter Schlüssel derart vorgeschlagen, daß aus der sortierten Folge nacheinander jeweils ein Schlüssel zusammen mit dem nächstfolgenden Schlüssel aufgerufen wird, daß die in der Sortierfolge gleichwertigen Bytepositionen beider Schlüssel miteinander verglichen werden und dabei die höchst© uagleiehe Byteposition ermittelt wird, daß ein diese Byteposition kennzeichnender Code erzeugt wird und daß dieser Code als Teil ©im@s einem der beiden Schlüssel zugeordneten verdichteten Schlüssels gespeichert wird.
Vorteilhafte Ausgestaltungen des erfindungsgemäßsn Verfahrens ergeben sich aus den nachstehenden Einze!maßnahmen.a
Es werden in Einern der beiden Schlüssel die Bytes υθώ der werthöchsten bis zur höchsten ungleichen Position markiert und es werden als Teil eines verdichteten Schlüssels nur Schlüsselbytes aus diesen markierten Positionen ausgewählt.
po 968 024 A 00 98 29/1415
BAD ORIGINAL
Die Auswahl von Bytes aus einer niedrigeren als der höchsten ungleichen Byteposition im zweiten unverdichteten Schlüssel wird blockiert.
Mit dem verdichteten Schlüssel wird eine Hinweisadresse (Zeiger) auf die vom ersten der beiden unverdichteten Schlüssel repräsentierte Information gespeichert.
Die höchste ungleiche Byteposition eines Schlüsselpaares wird bis nach der Erzeugung des nächsten verdichteten Schlüssels gespeichert·
Die Code zweier aufeinanderfolgender Schlüsselpaare werden verglichen und es wird ein Vergis ichersignal abgegeben, das angibt, ob der jeweilige Code niedriger, glsich oder höher als der vorhergehend® Code ist, und es wird in Abhängigkeit davon ein entsprechender verdichteter Schlüssel erzeugt.
Bei einem Vergleichersignal, das angibt, daß der jeweilige Code niedriger als der vorhergehende Code ist, wird ein diesen Code, aber keine Schlüsselbytes enthaltender verdichteter Schlüssel erzeugt*
Bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code gleich den vorhergehenden Code ist» wird nur ein Schlüsselbyte der höchsten ungleichen Byteposition des zweiten Schlüssels des je-Docket PO 968 024 A 008829/1416
BAD ORlOINAL
weiligen Schlüsselpaares ausgewählt·
Bei einem Vergleichersignal, das anzeigt» daß der jeweilige Code gleich dem vorhergehenden Code ist, wird das Vorhandensein eines Schlüsselbytes im vorhergehenden verdichteten Schlüssel abgefühlt, und es wird aufgrund dieser Abfühlung ein verdichteter Schlüssel ohne Schlüsselbytes erzeugt, der den ersten der beiden unverdichteten Schlüssel kennzeichnet.
Bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code gleich dem vorhergehenden Code ist, wird das Fehlen eines Schlüsselbytes im vorhergehenden Code abgefühlt und aufgrund dieser Abfühlung ein verdichteter Schlüssel erzeugt, der mindestens ein Schlüsselbyte in der höchsten ungleichen Byteposition des zweiten der beiden unverdichteten Schlüssel aufweist.
Bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code größer als der vorhergehende Code ist, wird abgefühlt, ob im vorhergehenden verdichteten Schlüssel wenigstens ein Schlüsselbyte vorhanden ist. Bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code größer als der vorhergehende Code ist, wird ein verdichteter Schlüssel für den zweiten unverdichteten Schlüssel eines Schlüsselpaares erzeugt, wobei die Bytepositionen von der höchsten ungleichen Byteposition des vorhergehenden Schlüsselpaares bis zu der höchsten ungleichen Byteposition des anstehenden Schlüsselpaares verwendet werden.
Docket PO 968 024 A 009829/1415
Das Fehlen eines Schlüsselbytes im vorhergehenden verdichteten Schlüssel wird abgefühlt und es wird ein verdichteter Schlüssel für den zweiten unverdichteten Schlüssel eines Schlüsselpaares erzeugt, wobei die Bytepositionen von der höchsten ungleichen Byteposition des vorhergehenden Schlüsselpaares bis zu der höchsten ungleichen Byteposition des anstehenden Schlüsselpaares verwendet werden.
Es wird ein Kontrollfeld vorgesehen, das einen der Anzahl der nicht durch Schlüsselbytes dargestellten hohen Bytepositionen des anstehenden verdichteten Schlüssels entsprechenden Codewert enthält, wobei diese Anzahl aber nicht größer ist als die Anzahl der Bytes bis zur höchsten ungleichen Byteposition.
Zn das Kontrollfeld wird ein Code gestellt, der die Anzahl der Schlüsselbytes im jeweiligen verdichteten Schlüssel angibt.
Die beim erfindungsgemäßen Verfahren erzeugten verdichteten Schlüs sei gewährleisten eine optimale Beseitigung der durch Sortiermaßnahmen hervorgebrachten Redundanz, so daß für die Abspeicherung der erzeugten verdichteten Schlüssel nur eine relativ geringe Speicherkapazität benötigt wird. Gleichzeitig wird beim Suchvorgang eine hohe Geschwindigkeit erzielt, da jeweils nur relativ wenige Bytes abgefragt werden müssen.
Docket PO 968 024 A 0 0 9 8 2 9/1415
Die Erfindung wird im folgenden anhand eines Ausführungsbeispiels und der zugehörigen Zeichnungen näher erklärt. Es zeigen:
Fig. 1 den Datenfluß in einem ersten Ausführungsbeispiel der Erfindung,
Fig. 2A schematisch eine Folge- und Verzweigungssteuerung für das in Fig. 1 gezeigte Ausführungsbeispiel,
Fign. 2B-1
und 2B-2 eine Taktgeberschaltung und Taktimpulse für das Ausführungsbeispiel der Fig. 2A9
Fign. 2C-1
bis 2N ein Ausführugsbeispiel der in der Folg©- und Verzweigungssteuerung der Fig. 2 verwendeten Schaltungen,
Docket PO 968 024 A 0 0 9 8 2 9 / U 1 S
Fign. 2Q-1
bis 2Q-3 in einer Tabelle den Steuersignalablauf für ein Beispiel von Steuersignalen, die erzeugt werden, um die in Fig. 1 gezeigte Datenbahn nach dem in Fig. 3 gezeigten Verfahren durchzuschalten,
Fig. 3 die Zusammengehörigkeit der Fign. 3A - 3F,
Fign. 3A
bis 3F ein genaues Ablaufdiagramm eines erfindungsgemäßen
Verfahrens für die in Fig. 1 gezeigte Datenbahn,
Fig. 4 bestimmte Grundmerkmale eines in der vorliegenden Erfindung verwendeten ÜK-Paares,
Fig. 5 bestimmte Grundmerkmale zweier in der vorliegenden Erfindung verwendeter nebeneinanderliegenden UK-Paare,
Fig. 6A ein Ausführungsbeispiel eines erfindungsgemäßen Verfahrens für die in Fig. 1 gezeigte Datenbahn,
Fig. 6B ein anderes erfindungsgemäßes Verfahren für die in Fig. 1 gezeigte Datenbahn,
Fig. 7 das in Fig. 6A gezeigte Verfahren mit CK-Indexblockbildung,
Docket PO 968 024 A 009829/1416
Fign. 8A, B + C sortierte UK-Folgen, bei denen die CK1s nach links, rechts oder überhaupt nicht verschoben sind,
Fig. 9 eine sortierte UK-Folge und eine daraus erzeugte CK-FoIge mit maximaler Byteverdichtung,
Fig. 10 eine sortierte UK-Folge und eine daraus erzeugte CK-Folge, in welcher jeder nichtverschobene Schlüssel ein K-Byte hat,
Fig. 11 ein anderes erfindungsgemäßes Verfahren für die Datenbahn in Fig 1,
Fign. 12A
bis 12C weitere Varianten des erfindungsgemäßen Verfahrens,
Fig. 13 schematisch das Aufzeichnungsformat für eine sortierte UK-Folge,
Fig. 14A das Aufzeichnungsformat für eine erzeugte CK-Folge,
Fign. UB
bis 14E verschiedene Aufzeichnungsformate verdichteter Schlüssel,
Fig. 15 die Zugehörigkeit der Fig. 15A zu den Fign. 3A, B und 3D-F,
Docket PO 968 024 A 0 0 9 8 2 9/1416
Fig. 15A schematisch ein weiteres Ausführungsbeispiel der Erfindung,
Fig. 15B eine Tabelle mit der Steuersignalfolge für ein anderes Ausführungsbeispiel und
Fign. 15C
bis 15F Änderungen der in den Fign. 2C-2 bis 2N gezeigten
Schaltungen für ein anderes Ausführungsbeispiel
" der Folge- und Verzweigungssteuerung zur Erzeugung
der Steuersignalfolge in Fig. 15B.
Das Verfahren zur Erzeugung verdichteter Schlüssel wird auf eine Reihe von Indexschlüsseln angewandt, die in normaler nichtverdichteter Form in sortierter Reihenfolge stehen. Sie können in aufsteigender oder absteigender Reihenfolge sortiert und unterschiedlich lang sein. An jeden Schlüssel kann eine zusätzliche Information wie z.B. eine Hinweisadresse angehängt werden, die entweder direkt oder indirekt eine Aufzeichnung lokalisiert, zu welcher der entsprechende Schlüssel gehört.
Fig. 4 zeigt zwei nebeneinanderliegende Schlüssel in einer nichtverdichteten Indexreihe, in der die nichtverdichteten Schlüssel (UK's) x...x und y...y zwei aufeinanderfolgende Schlüssel in der sortierten Folge sind. Jeder Schlüssel besteht aus mehreren Bytes (Zeichen). Die X's und Y's in den entsprechenden UK's stellen ihre Byteposition dar, die sich zahlenmäßig
Docket PO 968 024 A 0 0 9 8 2 9/ 1 4 1 B
■ - 13 -
in den verschiedenen UK*s ändern kann. Die Bytepositionen ändern sich in ihrer Bedeutung während der Sortieroperation von der äußersten linken Byteposition mit der größten Bedeutung zur äußersten rechten Byteposition mit der kleinsten Bedeutung. Die Schlüssel sind in Fig. 4 nach den äußersten linken Bytes ausgerichtet dargestellt, welche sowohl in der Sortierfolge als auch für die vorliegende Erfindung die wichtigsten Bytes sind. Die Bytes in jedem Schlüssel nehmen in Bezug auf diese Erfindung in ihrer Bedeutung genauso ab, wie sich ihre Position in einem Schlüssel von links nach rechts verschiebt.
Das erfindungsgemäße Verfahren liefert verdichtete Schlüssel (CK*s) mit Hilfe einer Folge von Vergleichen zwischen nebeneinanderstehenden UK's in einem Register oder Unterregisterβ Ein derartiger Vergleich wird zwischen dem Paar (j«f) und j und dann zwischen dem nächsten Paar j und (j+1) duyehgeführt. Somit ist jeder UK mit Ausnahme des ersten und des letzten der zweite UK eines Vergleichspaares und a8ßerd@m d©r erste UK des nächsten Vergleichspaares. Jeder Vergleich erfolgt zwischen den Bytepositionen mit derselben Sortiarwertigkeit, d.h. die am weitesten links stehenden X- und Y-Bytes werden verglichen, dann werden die iron links gesehen auf dew zwaiten Stelle stehenden Bytes verglichen usw. Als Ergebnis dieser Byfcevergleiche ergibt sich dann einmal ein Vergleich^ bei dem Ungleich« heit festgestellt wird, da sich jeder Schlüssel im· Register ab einer bestimmten Position von jedem anderen Schlüssel unterscheidet« Ein derartiger Unterschied in einen Verzeichnis kann z.B.
Q09829/U16
- 14 bei identischen Namen in den Adressen festgestellt werden.
Jeder UK-Vergleich braucht nicht über die am weitesten links stehende Byteposition D mit einem ungleichen Vergleichsergebnis hinauszugehen. Die ungleiche Byteposition D kann die am weitesten links stehende oder jede andere Byteposition sein. Ist es nicht die am weitesten links stehende Position, weist der Schlüssel gleiche Bytes (E) auf seiner linken Seite auf. Die wertniedrigeren Bytepositionen rechts von der ungleichen Byteposition D werden als Leerbytes N bezeichnet, da sie für die Erzeugung der verdichteten Schlüssel nicht erforderlich sind.
Somit sind bei einem Vergleich nebeneinanderstehender nichtverdicliteter Schlüssel entweder ksine odsr alle ßytepositionen mit Ausnahme der wertniedrigstsn Byteposition gleiche Positionen "E". Bei den meisten UK-Paaren liegt die Differenzbyteposition (D) hea deia äußersten linken und dem äußersten rechten Byte.
Oft haben zwei miteinander verglichen® Schlüssel χ··*χ und y*,.y unterschiedliche Bytelängen. In diesem Fall ist das erste Byte des längeren Schlüssels» welches jenseits der wsrtniedrig« sten Byteposition des kürzeren Schlüssels steht, gemäß Definition eine ungleiche Byteposition. Dieser ungleiche Bytevergleich bewertet das Byte vom längeren Schlüssel höher als das Fehlen eines Bytes aus dem kürzeren Schlüssel· Sobald diese Situation
Docket PO 968 024 A 009829/UT6
BAD ORIGINAL
si«tritt, kann angenommen werden, daß der kürzere Schlüssel auf seiner rechten Seite das niedrigste Byte der verwendeten Sortierfolge hat, z.B. ein Leerbyte.
In Fig. 4 wird angenommen, daß für den nichtverdichteten Index eine aufsteigende Sortierung verwendet wird. Wenn eine absteigende Sortierung verwendet wird, sind im Ausführungsbeispiel die Operationen "größer als" und "kleine'r als" zu vertauschen.
Fig. 4 zeigt einen Vergleich A zwischen Ukx und UKy, die in der unverdichtet sortierten Indexfolge die Positionen (j-1) und j einnehmen. Diese Positionen werden mit E., die werthöchste ungleiche Byteposition mit D und die Leerbytes mit N bezeichnet.
•Tv A.
Fig. 5 zeigt den nächstfolgenden Vergleich B zwischen UKy und UKz, die das nächste Paar aus den Indexpositionen j und (j+1) bilden.
Der Vergleich B benutzt den zweiten nichtverdichteten Schlüssel y...y des vorhergehenden Vergleiches als den ersten nichtverdichteten Schlüssel. Der nichtverdichtete Schlüssel z...z
Q09823/U15
Docket PO 968 024 A
folgt somit unmittelbar dem nichtverdichteten Schlüssel y...y in der Sortierfolge der nichtverdichteten Schlüssel.
Die Beschriftungen A und B in den Fign. 4 und 5 stellen je zwei aufeinanderfolgende Vergleiche dar, aus denen die entsprechenden Werte E, D und N abgeleitet werden.
Die Erfindung setzt die Differenzbytepositionen (D) in zwei aufeinanderfolgenden Vergleichen in Beziehung zueinander. Dabei gibt es drei Möglichkeiten, die in der Fig. 5 durch die Fälle I, II und III dargestellt sind. Im Falle I liegt die Differenzbyteposition Dß auf derselben Stelle wie die Differenzbyteposition D. im unmittelbar vorhergehenden Vergleich. Im Falle II steht das Differenzbyte an der gegenüber DA in Fig. 4 werthöheren Byteposition D . In diesem Fall ist D gegenüber DÄ nach links verschoben. Im Falle III steht das
v Differenzbyte auf der Position Dß auf einer wertniedrigeren Stelle als das Differenzbyte auf der Position D. in Fig. 4· In diesem Falle ist also D relativ zu D nach rechts verschoben.
Da sich die Lage der Differenzbyteposition D7, relativ zur vorher-
gehenden Differenzbyteposition D ändert, ändert sich natürlich
Docket PO 968 O24 A 009829/1416
auch die Anzahl der gleichen Bytepositionen E_ und die Anzahl der Leerbytes N entsprechend. Da die Differenzbyteposition D immer eine Stelle rechts neben den gleichen Bytepositionen steht, ist D a E+1.
Jeder UK in einer Indexfolge stellt eine Dateneinheit dar. Jede dieser UK-Dateneinheiten muß in einer erzeugten Folge von verdichteten Schlüsseln (CK's) repräsentiert werden. Der j-ste CK stellt die Informationseinheit dar, die durch den j-sten UK wiedergegeben wird.
Jeder Vergleich des j und des j+1 UK1S erzeugt den j CK, wozu bestimmte Informationen benutzt werden, die aus dem unmittelbar vorhergehenden Vergleich des j-1 UK's und des j UK's abgeleitet werden. Der Vergleich hängt von der Information des unmittelbar vorhergehenden Vergleiches ab, wobei die wichtigste Information die Position D ist, die während des vorhergehenden Vergleiches bestimmt wurde.
Außerdem kann eine Information darüber benötigt werden, ob die vorhergehenden CK-Bytes O waren oder nicht. Die Information über die D -Position-kann auf die verschiedenste Weise gegeben
A-werden, z.B. indem die Bytezahl gezählt von der werthöchsten Stelle angegeben wird oder indem die Anzahl gleicher Positionen (E.) angegebnen wird, die während desselben Vergleiches festgestellt wurde, da die D.-Position um ein Byte höh@r ist als der E -Wert. Wenn das srste UK»Paar verglichen wird, wird angenommen, daß vor diesem ersten Vergleich Anfangsbedingungen vor-
Itaetot PO .6. 024 A 0 0 9 M 9 / U 1 S
lagen*
Der erste Vergleich beginnt vorzugsweise mit einem Vergleich zwischen den beiden ersten UK's in der sortierten Reihenfolge. Dieser erste Vergleich dient der Erzeugung des ersten verdichteten Schlüssels. (CK), der die durch den ersten unverdichteten Schlüssel (UK) dargestellte Information wiedergibt. Bei dem folgenden zweiten Vergleich des zweiten mit dem dritten UK wird die Information aus dem ersten Vergleich dazu benutzt, den zweiten CK zu erzeugen, der dann die durch den zweiten UK dargestellte Information wiedergibt. Dann werden im dritten Vergleich der dritte und der vierte UK in der sortierten Folge verglichen usw. bis zum Ende der Indexfolge. Somit repräsentiert jeder GK die Information, die in dem ersten UK des Paares stand, aus welchem der CK erzeugt wurde.
Das kleinste Format eines CK hat eine Mindestanzahl von Schlüsselbytes (K-Bytes), die während des Vergleiches aus einem der UK's abgeleitet wurde. Das kleinste CK-Format umfasst eines oder mehrere K-Bytes aus einem nach rechts verschobenen UK, kein K-Bytu aus einem nach links verschobenen UK und entweder ein oder null K-Bytes aus einem nichtverschobenen UK. Das kleinste Byteformat für einen CK kann immer dadurch überschritten werden, daß man dem UK, aus welchem die K-Bytes abge-
Docket PO 968 024 A 008829/1415
leitet wurden, weitere Bytes hinzufügt, liährend die relativen Positionen unter den K-Bytes aufrechterhalten werden. Eine derartige Information ist zwar redundant» kann aber z.B. bei fehlerhaften Informationen sehr nützlich sein.
Jeder GK benötigt außer den K-Bytes noch zwei weitere Informationselemente, um ihn für eine Suchoperation geeignet zu machen. Ein derartiges Informationselement lokalisiert jedes K-Byte eines CK entsprechend seiner Bytepositionszahl beginnend mit dem werthöchsten Byte im UK, aus welchem das K-Byte abgeleitet wurde, Das zweite zusätzliche Element lokalisiert-den nächsten CK. In diesem Ausführungsbeispiel nehmen diese beiden Informationselemente die Form von zwei Feldern an, die mit Faktorenlängenfeld (F) und Längenfeld des verdichteten Schlüssels (L) bezeichnet werden und Teil eines jeden CK's sind. Abhängig davon, ob in dem Format zuerst F oder L auftauchen soll, hat das vollständige CK-Format dann die Form FLK oder LFK.
Die Bytelänge (L) des K-Feldes in einem CK hängt davon ab, welcher der drei in Fig. 5 gezeigten Fälle während eines Vergleiches vorliegt. In dem zweiten der in Fig. 5 gezeigten Fälle (Linksverschiebung), erscheinen keine K-Bytes im CK und L = 0. Im ersten in Fig. 5 gezeigten Fall (keine Verschiebung) hängt der Wert L=O oder L = 1 für die minimale Länge des K-Feldes davon ab, ob der vorhergehende CK null K-Bytes oder eine andere Anzahl von K-Bytes
Docket PO 968 024 A 0 0 9 8 2 9/1415
196457
enthält. Wenn somit die D-Position in einer ununterbrochenen Folge von Vergleichen mit demselben Wert weiterläuft, weisen die CK1S abwechselnd IC-Bytes mit dem Wert L = O und L=I auf, da dieser Wert von den unmittelbar vorhergehenden PC-Bytes abhängt· Im dritten der in Fig. 5 gezeigten Fälle (Rechtsverschiebung), ist L Φ 0, enthält also eines oder mehrere K-Bytes. Somit enthält im dritten Fall das K-FeId eine unterschiedliche Anzahl von Bytes, die gleich der Anzahl von Bytepositionen ist, die hinter der D -Position und \ror der Dg-Position stehen. Eine Definition ist auf vielerlei Weise möglich, z.B. durch L=Dn-D.=(E +1)-E.+1)=E--E..
Der Faktor (F) eines CK stellt die Anzahl von kontinuierlichen Bytepositionen beginnend mit der werthöchsten Byteposition, dar, die kein K-Byte im laufenden CK sind, durch vorhergehende K-Bytes im verdichteten Index jedoch dargestellt sind. Der Index B bezeichnet einen Wert im laufenden CK, während der Index A einen Wert im unmittelbar vorhergehenden CK angibt*
Der Faktor F wird davon beeinflusst, ob das laufende UK ti
überhaupt nicht, nach links oder nach rechts verschoben ist, wie es im Zusammenhang mit Fig. 5 beschrieben wurde und ob L^ 0 ist oder nicht. Für die Mindestbedingungen des K-Bytefeldes hat das F„-Feld die folgenden Werte: Für einen CK mit gar keiner oder einer Verschiebung nach links hängt der F-
Wert davon ab, ob der L «Wert für den unmittelbar vorhergehen-
den CK 0 ist oder nicht. Ist der L.-Wert bei keiner Ver-Docket PO 968 024 A 009829/U1S
BAD ORIGINAL
Schiebung O, stimmt der F -Wert mit dem Eß=Wert überein» Ist L, bei keiner Verschiebung verschieden von O, kann F jeden Wert zwischen dem Höchstwert E.+1 bis zu einem Mindestwsrt EB+1 einnehmen. Bei einer Vsrschiebung nach links kann der F -Wert jeden Wert zwischen E^M und Eß+1 einnehmen ungeachtet dessen, ob L = O ist. Ist bei einer Rechtsverschiebung L = O, ist Fn=E., und, wenn
Jt) A
L verschieden 0 ist, ist F =E =1. In der folgenden Tabelle 1 ist ein Beispiel für CK1s mit den kleinsten K-Feldern gegeben.
Tabelle - UK I E F CK K
11 0 L Engelhard, L
Englehard, Hans 3 12-4 12
Engelhard, Ludwig 9 3 O lish, J
English, Irvine J 1 10-2 7
English, Jas J 1 1 O S
Ericson, Oscar 2 2 1 P
Eskind, Ralph R, 1 3-2 1
Esposito, Blas 1 1 O ζ
Evancie, Kenneth G 0 2-1 1
Ezequelle, Jonathan A 2 O O Farn
Fahnestock & Co 2 3 3
Famularo, Jos J 3 2 O rr
Farewell, Richd L 1 4-2 2
Farrar, Carl E 2 j O en
Feeney, Kermit 2 3 2
Fennel1, Lee T 8 2 O rriä, R
Ferris, Harriet Akin, Mrs-j 7
Ferris, Raymond W
Docket PO 9ό8 024 A 009829/Ηΐδ
BAD ORIGINAL
- 22 -
Bei dem in Fig, 5 gezeigten Fall I kann man die Operation dadurch vereinfachen, daß man ein K-Byte, nämlich das Dß-Byte hat und L immer = 1 ist. Das führt jedoch zu einer geringeren Verdichtung bei jeder Liste, in der Folgen ohne Verschiebung auftreten, was bei großen Listen häufig der Fall ist. Ein Beispiel für CK's, die dieses Prinzip anwenden, ist in der folgenden Tabelle 2 gegeben.
Tabelle - II
UK E F CK K
11 O L Engelhard. L
Englehard, Hans 3 4 12
Engelhard, Ludwig 9 3 O lish, J
English, Irvine J 1 2 7
English, Jas J 1 1 0 S
Ericson, Oscar 2 2 1 P
Eskind, Ralph R. 1 3 1
Esposito, Blas 1 1 O Z
Evancie, Kenneth G O 1 1
Ezequelle» Jonathan A 2 O O Farn
Fahnestock & Co 2 2 3 r
Famularo, Jos J 3 3 1 r
Farewell, Richd L 1 2 1
Farrar. Carl E 2 1 O en
Fueney, Kermit 2 3 2 r
Fennel1, Lee T 8 3 1 ris, R
Ferris, Harriet Akin, Mrs. 6
Ferris» Raymond W
Docket PO 968 Ü24 A
009829/UlI
Daraus ist zu entnehmen, daß jedes verdichtete Verzeichnis durch das Format FLK dargestellt werden kann. Die Werte von F und L können durch je ein Byte dargestellt werden oder sie können den Bruchteil eines Bytes, z.B. je ein Halbbyte einnehmen. Wenn F und L je die Hälfte von einem 8 Bit großen Byte einnehmen, kann jeder der beiden Größemverte zwischen O und 15 annehmen, was in der Praxis für fast alle verdichteten Verzeichnisse ausreicht, da die Durchschnittszahl von IC-Bytes pro CK in großen Verzeichnissen als kleiner ermittelt wurde. Im allgemeinen ist der Wert für K umgekehrt proportional zur Größe der Verzeichnisse, da größe Verzeichnisse meist dichter gepackt sind, d.h. sie weisen mehr Redundanz auf.
Um für F und L mehr als 15 Bytes bereitzustellen, kann einer der 4-Bit-Codes für jedes der Halbbytes F und L dazu benutzt werden, einen CK auf den nächsten folgenden CK-Eintrag zu erweitern. Durch diese Erweiterung wird die größte Länge für F oder L bei jedem nichterweiterten CK auf 14 reduziert. Der erweiterte CK stellt eine ERweiterung entweder für F oder für L oder für beide dar, indem der vier Bit große Erweiterungscode (z.B. 15) entsprechend in den F-Teil oder den L-Teil oder in beide gesetzt wird. Wenn nur F einen Erweiterungscode aufweist,
Docket PO 968 024 A 009829/UU
BAD ORIGINAL,
verfügt der erweiterte CK über keine K-Bytes und es ist L = O, da der erweiterte CK nur 1 Byte lang ist. Wenn der Erweiterungscode im L-FeId steht, hat dasselbe CK 14 K-Bytes und das L-FeId im folgenden Erweiterungs-CK zeigt an, wieviel zusätzliche K-Bytes im Erweiterungs-CK geführt werden und an die K-Bytes im unmittelbar vorhergehenden Registereintrag angehängt werden sollten. Auf diese Weise lässt sich jeder CK auf " eine beliebige Länge für F oder L erweitern. In bekannten Verzeichnissen sind CK*s mit mehr als 14 K-Bytes jedoch sehr selten, dagegen sind CK's mit mehr als 14 K-Bytes gebräuchlicher. Durch jede derartige Erweiterung des CK wird für die zusätzlichen F- und L-Felder nur ein weiteres Byte hinzugefügt. Verkettete K-Bytes führen zu keiner Redundanz im System.
Bei der Ableitung der K-Bytes in den CK's eines Verzeichnisses ergeben sich jeweils zwei Alternativen. Da die K-Bytes von beiden UK's eines Paares abgeleitet werden können, liegt eine erste Alternative, wenn die K-Bytes vom ersten UK des verglichenen Paares abgeleitet werden und eine zweite Alternative, wenn die K-Bytes vom zweiten UK des verglichenen UK-Paares abgeleitet werden.
Hat man sich für eine der beiden Alternativen entschieden, müssen anschließend alle CK's entsprechend abgeleitet werden. Allgemein wurde festgestellt, daß die zweite Alternative der
Docket PO 968 024 A "009829/UIB
BAD ORIGINAL
196A570
ersten vorzuziehen ists da die aus dem zweiten UI abgeleiteten K-Bytes größer sind als di© aus dos ersten UiC sines Paares. Die Bedingung "größer als" ist vorteilhaft bei
Die meisten Verzeichnisse £ühr©s sei ©iaos1 gTUT&äl®g®nä®T©n Ia- formationsquelle als das fefgeieteis gelbst; i§tD ©fet-iofel ia einige» Fällen die Iii-form-atien diir@!r£ aa das '/©ygeidSiais abgehängt wird. In den EiG is tea Fäll®a ist jedoch dio ©igeatlieh© lafermatiön zu groß, um sie ^.trfsgaja &n dea UE ©des1 d©a CK ansöftäagen-: Daher ißuii ia den rasistea Ffillea sä j©d©a Sdülliss5©leiatifsg eine weiter© ißforG-StionseiiihGit sag@lia.agt ι-ΐΘταΦΈί. ii© di^elst ©dcsr
lafos^atioa filiiito
oa iiöaiaea di© Adresse üteitsii Ißförsictioa ©dos* stssa di© Adh?©gs@ @1eq? aitiere sifif ^eleli^ Toil eia©5? Ads"essls@tt@ i§t0 di© da®a eu
T" ~/r ?·'■' " ""^--A-' r ~"? '" :; r~ ".,'■. i^R ρ*.? ^. ji?tv.f ■·.;■'? fJOj/j r?v 13.":. @g 2""'Q2, J-'':·?7^ 'i'.r'·■''■ ^
BAD ORIGINAL
1-964578
zweiten Möglichkeit der Hinweis des zweiten UK. Wenn einmal . zwischen diesen beiden Möglichkeiten entschieden worden ist, muß anschließend immer in derselben Regel weitergearbeitet wsrdsn. Beim Treffen der Auswahl ist zu berücksiclitigenf daß ein I-iinweis meht vorhanden ist, als CEss durch Vergleich zwischen tatsächlich vorhandenen·UKfs erzeugt werden, d*iu jeder UK hat süiasa Hinweis s rad ά&ϊι&τ vjird sin CK weniger erzeugt, als ™ UK3S verglichen werden. Dieser Unterschied zwischen der Anzahl tatsächlicher"GK*s und tatsächlich vorhandener Hinweise ksH& vorteilhaft dadurch ausgeglichen wsrji-a, daß man am Anfang oder Ende Quie-T Lists einen fiktiven UE hiii
Verdichtete Schlüssel mit einer kleineren oder größeren Ansahl VOK Bytes $ G.bgeioiyst ans finem entpp^eehenden unverdichteten Schltiggsi ward©E ber&i^E "töschricban. Der kleinste verdichtete Schlüssel sc&altst alle t'y^-::ciiiuiai^z aus, die in dsr sortierten Liste iiiditVsrdieirte-""-?"- Sr~Klls?^ .' ~-hi'iόζη wiird-s^ Uiitsr b®-5 st}ji:3.Zü,ii ymsi,i'n.d^n £ΖΛ.1 -^-f:.L :::·ικ ;;5.::^^5 Il5dii!;d£j:ä auf rächt ^
feen £
en
BAD OR(GINAt
Tabelle - III
UK E CK K
11 L Engelhard, L
Enßlehard. Hans 3 12 Eng
Engelhard, Ludwig 9 3 English, J
English, Irvine J 1 10 E
English, Jas J 1 1 Es
Ericson. Oscar 2 2 Esp
Eskind, Ralph R. 1 3 E
Esposito, Blas 1 1 Ez
Evancie, Kenneth G O 2 F
Ezequelle. Jonathan A 2 1 Farn
Fahnestock & Co 2 3 Fa
Famularo, Jos J 3 2 Farr
Farewell, Richd L 1 4 F
Farrar. Carl E 2 1 Fen
Feeney, Kermit 2 3 Fe
Fennell, Lee T 8 2 Ferris, R
Ferris, Harriet Akin, Mrs. 8
Ferris. Raymond W
Zu jedem in Tabelle III aufgeführten CK können ein oder mehrere zusätzliche Leerbytes aus demselben UK rechts von den K-Bytes hinzugefügt werden, die aus den UK's abgeleitet wurden. Der Grenzfall tritt dann ein, wenn der CK alle Bytes seines UK enthält und somit keine Verdichtung vorliegt.
Als Alternative zu dem in Tabelle III gezeigten Fall können Docket PO 968 024 A 009829/U16
auch die mindestens erforderlichen K-Bytes und die Leerbytes erhalten» die F-Bytes jedoch ausgeschaltet werden. Wie in
der nachfolgenden Tabelle IV, die nach dem erfindungsgemäßen Verfahren nicht abgesucht werden kann, gezeigt ist, ist
dieses Verfahren jedoch nicht gleichbedeutend mit der Erhaltung des D-Byte und des N-Byte.
Tabelle - IV
UK
Englehard, Hans
Engelhard, Ludwig English, Irvine J English, Jas J Ericson, Oscar Eskind, Ralph R. Esposito, Blas Evaneie, Kenneth G Ezequelle. Jonathan A Fahnestock & Co Famularo, Jos J Farewell, Richd L Farrar. Carl E CK
E F
11 0 6 Ludwig
3 4 14 lish, Irvine J
9 3 11 lish, Jos J
1 2 13 ricson, Oscar
1 1 14 skind. Ralph R
2 2 12 posito, Bias
1 3 17 vancie, Kenneth G
1 1 20 zequelle, Jonathan A
0 1 15 Fahnestock & Co
2 0 13 mularo, Jos J
2 2 15 rewell, Richd L
3 3 11 rar, Carl E
1 2 14 eeney. Kermit
Feeney, Kermit 2
Fennell, Lee T 2
Ferris, Harriet Akin, Mrs. 8
Ferris» Raymond W
12 nnell, Lee T 23 rris, Harriet Akin, Mrs 9 Raymond, W
Docket PO 968 024 A
003829/1415
Eine andere Variante besteht darin, daß man wenigstens das werthöchste Leerbyte zu dem Mindestfeld an K-Bytes hinzusieht, indem man dieses werthöchste Leerbyte auf das nächsthöhere Zeichen in der verwendeten Sortierfolg© erhöht. Das gilt besonders bei Anwendung der in der Alternative I beschriebenen Regain, da sich dort für die K-Bytes die Situation "größer als58 ©rgibtg die beim Absuchen des verdichteten Verzeichnisses vorteilhaft ist. Sobald im zuletzt genannten Fall das ©rst© Lesrbyt© das höchste Zeichen in der Folge ist, wird das nächst© Leerbyte ebenfalls su den K-Bytes hinzugefügt, da das höchste Zeichen im Wert nicht erhöht werden kann. Wenn ein hinzugefügtes Lesrbyt® das höchste Zeichen ist, wird das nächste Leerbyt© hinzugefügt;, bis ein hinzugefüg tes Leerbyte nicht das höchst© Z©ieh©a ia der Folgs-ists. in der
Folge wird nur das zuletzt hinzugefügte Leerbjt© auf d@n nächst höheren Wert angehoben« Hierbei wird selten Mulls' als ©ia Leer-
byte benötigt· Die folgende Tabeli© se-igt sia B@ispi@l der
Index verdichtung auf die zuIqZzZ b@schffi©bea® l'feis© mit einer
öinüreodis-rten BQzim%l£®lgGü ia iiGlokm das Byiä© A d@E Ζ&μ&ο,
folgt*
BAD ORiGINAV
- 30- V L K
Tabelle - 5 BOONA
UK F O -
BOON, CLYDE E O 2 SA
BOONSTRA, PIET W 4 5 TH, RJ
BOOS, DONALD 3 2 OC
BOOTH, RICHARD R 3 O -
BOOTH, ROBERT A 7 O mm
BOOTH, RONALD 8 1 mm mimt
BOOTH, VERNON 6
BORCHLEWICZ, ROBERT J 2
196A570
BOYD, DARRELL C
0 0
F = Anzahl der mit einem Faktor versehenen Bytes vom linken Ende
des Schlüssels. L s Anzahl der Bytes des in dieser Eintragung aufgezeichneten
Schlüssels.
Fig, öÄ zeigt öiii ÄhlaiifdlaprsrnK eines erfindiiE.gsgemäßen Verfahrens« Mit ä&äi S^LViz ehr lit 10 wcr&'i di© Register aaf 0 zis» r;U".kgösteiltg die die Werte für F. und L. enthalten» Ir. Schritt I : .-ichsIiJi aas Sy^t^m ^im nächsten Paar iiicht¥:3rdieliteter
BAD ORlGIJÜAt. ,
196457Ö
nommen werden. Im nächsten Schritt 12 wird mit einer Indexende-Prüfung festgestellt, ob Schritt 11 das Ende des nichtverdichteten Verzeichnisses erreicht hat. Das Ende des Verzeichnisses kann auf vielerlei Art dargestellt werden, z.B. durch ein Sonderzeichen, eine besondere Aufzeichnung, eine bestimmte Kombination von Zeichen oder durch Abfühlen einer ungültigen Bytezahl für einen UK.
Wenn das Ende des Verzeichnisses nicht erreicht ist, wird der Vergleicherschritt 13 ausgeführt, welcher feststellen muß, daß UK-Y kleiner ist als UK-Z, da die Schlüssel in dem nichtverdichteten Verzeichnis in sortierter Reihenfolge stehen müssen und jeder Schlüssel nur einmal im Verzeichnis enthalten sein darf. Wenn also bei dem Vergleich festgestellt wird, daß UK-Y gleich oder größer als UK-Z ist, stehen die Schlüssel nicht in der richtigen Sortierfolge und ein Fehler wird durch den Schritt 48a bzw. 48c angezeigt. Normalerweise sollte ein derartiger Fehler nicht vorliegen, da die vorhergehende Sortieroperation für die UK1S richtig abgelaufen sein sollte. Die Anzahl gleicher Bytepositionen E wird durch den Vergleicherschritt
13 festgestellt und im Schritt 14 werden diese Positionen gezählt. Der Schritt 14 erhöht Eß für jeden gleichen Vergleich zwischen entsprechend stehenden X-und Z-Bytes um Eins und verzweigt für einen Vergleich der nächsten Y-und Z-Bytes zurück zu Schritt 13. Sobald ein Z-Byte größer ist als das Y-Byte, läsift die Operation zu Schritt 16 weiter. Das letzte, vor Schritt 16 i;a Schritt 14 gezählte E
Docket PO 968 024 A 009829/U1 6
BAD ORIGINAL
wird als die richtige E -Zahl für den laufenden CK gespeichert und definiert die Differenzbyteposition D , die um eines
höher liegt als der Wert für E . Der E -Wert wird in einem
Β B
Register oder einer Wortstelle gespeichert, die jLhm zugeordnet ist.
Im Schritt 16 wird dann mechanisch oder elektronisch der in einei E.-Register stehende Wert von dem in einem E -Register stehenden Wert.subtrahiert und das Ergebnis in einem S-Register gespeicheri
Der Wert im S-Register wird dann im Schritt 17 mit O verglichen und es wird festgestellt, daß S kleiner gleich oder größer als O ist. Auf diese Weise ergibt sich, ob die D -Position relativ zur früheren D -Position nach links, rechts
Jj 13
oder überhaupt nicht verschoben ist. Im ersten UK-Paar eines Verzeichnisses ist die Dß-Position nach rechts verschoben, da für die vorhergehende Dß-Position O angenommen wurde. Abhängig * von der im Schritt 17 getroffenen Feststellung wird einer der drei Wege 21, 22 bzw. 23 ausgewählt. Die Wege 22 und 23 untersuchen zunächst einmal in A auf O und teilen sich dann in zwei weitere Wege abhängig davon, ob L * O ist oder nicht. Daraus ergeben sich fünf mögliche Wege. Einer dieser Wege führt zu einer Wiederholung des Schrittes 17. Für L und F können auf verschiedenen Wegen verschiedene Werte erzeugt werden. Wenn S kleiner als O ist, läuft Schritt 30 ab, in welchem eine Null in das L -Register gesetzt und der L -Wert als L-Komponente
D B
des gegenwärtig erzeugten CK gespeichert wird. Dann beginnt Docket PO 968 024 A 00.9829/141 8
BAD ORfGJNAL
Schritt 31, in welchem der Wert des Eg-Registers um Eins erhöht und in das F -Register gesetzt wird. Der resultierende F -Wert wird als F-Komponente des gerade erzeugten CK gespeichert. Wenn S kleiner als ü ist, werden keine K-Bytes erzeugt und nach Schritt 31 folgt Schritt 43a, in welchem die UK-Y-Hinweisadresse mit dem gerade erzeugten CK übertragen wird.
Vor Schritt 43a läuft der Schritt'44 ab, um bei dem in Fig. 6a gezeigten Verfahren die nächste Wiederholung vorzubereiten. In diesem Schritt wird der Wert im E -Register als EA-Wert und der Wert im L -Register als L.-Wert neu zugeordnet. Anschließend läuft wieder der Schritt 11 ab, in welchem das nächste Paar nichtverdichteter Schlüssel untersucht wird. Dieses nächste Paar umfasst den zweiten Schlüssel UK-Z des ersten Paares A, der der erste Schlüssel UK-Y des zweiten Paares B wird, und den UK, der hinter dem UK-Z des ersten Paares stand. Dieser wird der UK-Z des zweiten Paares. Auf dies© Weise erhält man alle folgende Paare von unverdichteten Schlüsseln UK-Y und UK-Z, bis die Reihe der unverdichteten Schlüssel durchlaufen ist, was im Schritt 12 dargestellt ist.
Solange von Schritt 12 auf Schritt 13 übergegangen wird, laufen auch die Wiederholungen weiter. Jedesmal wenn Schritt 17 erreicht wird, erfolgi eine Verzweigung zu einem der drei Wege 21, 22 oder 23. Weg 21 ist gemäß obiger Beschreibung für die Linksverschiebung gedacht. Weg 22 wird gewählt, wenn Schritt 17 feststellt,
Docket PO 968 024 A 009829/1415
daß keine Verschiebung erfolgte. Dann wird mit einem Prüfschritt 26a festgestellt, ob das gegenwärtig gespeicherte L.. gleich O ist, Ist das nicht der Fall und liegt keine Verschiebung vor, beginnen die Schritte 30 und 31 und laufen genauso ab, wie es oben für die Linksverschiebung beschrieben wurde. Ist L» jedoch gleich O und liegt keine Verschiebung vor, folgt nach Schritt 26a der Schritt 32. Im Schritt 32 wird die Zahl 1 in das Lg-Register gesetzt und dieser Wert im L-FeId für den gerade erzeugten CK gespeichert. Dann wird Schritt 33 ausgeführt, in welchem der Wert vom Eß-Register auf das Fß-Register übertragen wird; dieser F-Wert wird als Teil des laufenden CK gespeichert. Anschließend wird Schritt 41 begonnen und die L -Anzahl von K-Bytes übertragen, die aus dem Register genommen ist, in welchem das laufende UK-Z gespeichert ist. Das erste K-Byte wird aus Byteposition (FD + 1) der werthöchsten Byteposition des UK-S genommen. Dieses Byte wird als das erste K-Byte gespeichert. Andere K-Bytes werden . bei Bedarf von danebenliegenden wertniedrigeren Bytepositionen entnommen, bis die LD-Anzahl von Bytes aus dem UK-Z entnommen ist. Dann folgt Schritt 43, in welchem die zu dem UK-Z gehörige Hinweisadresse gespeichert wird. Anschließend folgt die nächste Wiederholung.
Bei einer Wiederholung kann im Schritt 17 eine Rechtsverschiebung testgestellt werden, angezeigt dadurch, daß S größer als 0 ist, Dann wird Weg 23 eingeschlagen. Das LA-Register
DccKet PO 968 024 A Q09829/1416
wird im Schritt 26b auf ü geprüft. Ist LA = O, beginnt Schritt 34, wodurch eine Eins zum Wert im S-Register addiert und der erhöhte Wert dann in das L_.-Register gesetzt wird. Dieser L«-Wert wird als L-Wert des laufenden CK gespeichert. Nach Beendigung des Schrittes 34 beginnt Schritt 35, in welchem der Wert im E.-Register in das FB-Register als F-Wert des laufenden CK übertragen und im laufenden F-FeId gespeichert wird. Dann beginnt Schritt 41, in welchem die K-Bytes" genauso erzeugt werden, wie es oben beschrieben wurde.
Wenn jedoch im Schritt 26b festgestellt wird, daß der Inhalt des L.-Registers verschieden von 0 ist, beginnt Schritt 36 und der Wert im S-Register wird als L„-Wert gespeichert. Dann läuft Schritt 37 ab, in welchem der Wert im E -Register um die Zahl 1 erhöht und dieser erhöhte Wert in das F -Regi-
ster geladen und dort im F-FeId für den laufenden CK gespeichert wird. Dann werden die K-Bytes im Schritt 41 auf bekannte Weise erzeugt.
Die Schritte 43 und 44 beginnen nach Beendigung der Schritte 31 oder 41· Schritt 44 definiert die laufenden E- und Lg-Werte neu als E -und L -Werte für die nächste Wiederholung. Schritt 43 speichert den zum laufenden UK-Y gehörenden Hinweis als Hinweis für den laufenden CK. Da die Schritte 43 und 44 voneinander unabhängig sind, ist die relative Reihenfolge ihrer Ausführung nicht kritisch.
Docket PO 968 024 A 0 0 9 8 2 9/1416
Wenn im Schritt 12 das Indexende festgestellt wird, wird ein letzter CK auf besondere Weise dadurch erzeugt, daß in den L- und F-Feldern O Bytes und keine K-Bytes gespeichert werden. Der Hinweis des letzten UK wird als Hinweis des letzten CK durch Schritt 43b gespeichert und die Operation durch Beginn des Schrittes 47 beeendet.
In Fig. 6B ist der in Fig. 6A gezeigte Schritt 31 durch die Schritte 31B, 26C und 31A ersetzt, während die übrigen in Fig. 6A gezeigten Schritte beibehalten werden. In dem in Fig. 6A gezeigten Schritt 31 wird ein Mindestwert für F bei Linksverschiebung erzeugt, während im Schritt 31A in Fig. 6B ein Höchstwert F für linksverschobene CK's erzeugt wird. Der Mindestwert für F wird vorgezogen, obwohl jeder Wert zwischen dem kleinsten und größten Wert für die Suche des verdichteten Verzeichnisses benutzt werden kann*
Die für den laufenden CK erzeugten L-, F- und K-Bytes werden der Reihe nach in einem Speicher bekannter Bauart gespeichert. Dabei ist zwischen beiden CK*s keine leere Byteposition erforderlich. Diese sequentielle Ausgabe der CK's kann ohne Unterbrechung bis zum Indexende weiterlaufen. Andererseits kann der Strom kurzzeitig bei einer bestimmten Blockgröße unterbrochen werden, die vom Speichermedium abhängt. Somit kann der Block ein ganzes Verzeichnis umfassen oder auch enden, sobald ein bestimmtes Byte erreicht ist, der Block kann also unterschiedliche Längen haben.
00S829/U16 Docket PO 968 024 A
In Fig. 7 sind zusätzlich zu den in Fig. 6A gezeigten Schritten noch Blockbestimmungsschritte vorgesehen. Während des Startschrittes 10 wird ein Blockzähler Q auf die ungefähre erforderliche Byteblockgröße BL gesetzt, die im Schritt 51 nach Ausführung eines der Schritte 30 bis 37 und 41 geprüft wird. Zähler Q wird im Schritt 51 um die Bytelänge Lß des laufenden CK und dessen Hinweislänge Cn für jeden, der bei
einem der Schritte 30 bis 37, 41 und 43a ausgegebenen CK*s zurückgesetzt. Die Rücksetzung pro Schritt 51 beträgt Lß (die Anzahl der laufenden K-Bytes) plus 1 (die Bytezahl für die F-und L -Felder) plus CR (die Hinweisbytezahl) plus 1 (das CR-Byte selbst bei einer Gesamtrücksetzung von L1, + Cn + 2). Wenn der Zähler Q den Wert O erreicht, wird im Schritt SSb ein Block geschrieben«
Schritt 52 untersucht den laufenden Inhalt des Zählers Q. So« lange im Schritt SI festgestellt wird, daß dieser Inhalt des Zählers Q größer als O ist, beginnt nach Schritt 52 Schritt 44 und die nächste Wiederholung. Ist der Inhalt von Q jedoch gleich oder kleiner als 0f beginnt Schritt 55 und der gerade erzeugte Teil des verdichteten Verzeichnisses wird geschrieben. Schritt 55c leitet die Zählung des Zählers Q für den nächsten Block ein. "Über Schritt 55b und Schritt 44 beginnt die nächste Wiederholung. Die Wiederholungen laufen ab, bis im Schritt 12 das Indexende festgestellt wird·
Dock.t FO >«l 024 A 009829/U1S
An den UK-Folgen in den Fign. 8A, B und C werden die Operationen der in den Fign. 6A, B oder 7 gezeigten Verfahren für die verschiedenen Wiederholungen unter Benutzung der Wege 21 bzw. 22 und 23 gezeigt* Die UK's und die entsprechenden CK*s in Fig. 5 sind in der linken senkrechten Spalte mit der Beschriftung "Schlüsselnummer" numeriert. An der Oberkante der Fig. 5A sind die Bytepositionen in jedem UK mit den Zahlen 1 bis 11 durchnumeriert. Jedes UK-Byte ist mit dem Buchstaben B bezeichnet, Es kann sich dabei ti jedes beliebige Zeichen aus einem Zeichensatz innerhalb der durch die Sortierung vorgegebenen Grenzen handeln. Das bedeutet, daß jedes Byte in einer Spalte nur gleich oder höher in 4er Sortierfolge als das unmittelbar vorhergehende Byte in dieser Spalte sein kann· Bei einer aufsteigenden Sortierfolge kann es nicht niedriger als das vorhergehende Byte sein· Bei absteigender Sortierfolge gilt das Gegenteil·
* Obwohl für jeden in den Fign. 8 gezeigten UK eine feste Anzahl von Bytepositionen angenommen wird» gilt die Darstellung für verschiedene Bytezahlen in den UK's· Die in Fig· 5 mit D be-
B zeichnete Differenzposition ist in den Fign. 8At B und C mit D bezeichnet, um damit die unterschiedliche Byteposition im zweiten UK eines jeden verglichenen Paares wiederzugeben· Gleiche Ε-Bytes für jedes Vergleichspaar finden sich links von jedem D-Byte und die Leerbytes N stehen rechts von jeden D-Byte,
Docket PO 968 024 A Q09S29/141S
Rechts von jedem D-Byte ist in den Fign. 8A, B und C eine vertikale Linie durchgezogen, rechts von jedem Faktorbyte F ist eine gestrichelte Linie gezogen.
Die Spalte F stellt die Mindestwerte für F dar, die durch das
N
in Fig. 6A gezeigte Verfahren erzeugt werden. Die Spalte F
zeigt die Maximalwerte für F für die durch das in Fig. 6B gezeigte Verfahren erzeugten CK1s. Die Werte für F und F unter
NX scheiden sich nur für einige nach links verschobene CK1s und sind für nicht oder nach rechts verschobene CK1s gleich. Die vertikalen gestrichelten Linien stehen rechts von den F -Posi-
tionen, die sich von den F -Positionen bei demselben UK unter-
scheiden. Wo Ρχ und F.. gleich sind, stellen die vertikalen gestrichelten Linien F und F dar.
Das KrBytefeld für einen CK ist links durch eine vertikale gestrichelte Linie und rechts durch eine vertikale ausgezogene Linie begrenzt. Wo die ausgezogene Linie und die gestrichelte Linie dasselbe UK-Byte begrenzen, oder wo die durchgezogene Linie links von der gestrichelten Linie steht, liegt für den entsprechenden CK kein K-Bytefeld vor und sein Lg ist O. Die Bytelängen der Felder F und £ sind in den Fign. 8A, B und C in den entsprechend bezeichneten Spalten eingetragen. Das zu jedem UK gehörige Hinweisadressen- oder Zeigerbyte ist in den "Figuren mit dem Buchstaben R bezeichnet.
Der. erste CK stellt in jeder der Fign. 8A, B oder C immer einen Docket PO 968 024 A 009829/1416
nach rechts verschobenen CK dar, weil L und F am Anfang
A A
im.Schritt 10 auf 0 gesetzt werden. Somit kann sich die Position des Differenzbytes beim Vergleich des ersten mit dem zweiten UK nur nach rechts verschieben. In Fig. 8A verschiebt sich dann die durch die durchgehende Linie bezeichnete Position des Differenzbytes nach links, um den Fall einer Linksverschiebung einzeln darzustellen. Aus Fig. 8A ist zu ersehen, daß der F- ^ Wert des ersten CK Null ist und durch die Position des Differenzbytes im UK-2 neun K-Bytes definiert sind, daß also das L-FeId den Wert 9 hat. Die dem ersten in Fig. 8A folgenden CK1S sind nach links verschoben, wie aus den abnehmenden Werten für E zu ersehen ist. Die linksverschobenen Schlüssel weisen keine K-Bytes auf und somit ist für jeden nach links verschobenen Schlüssel L=O. Die Beträge für F und L der CK's sind in den entsprechend bezeichneten Spalten in Fig. 8A angegeben, wobei jeweils der Zeiger zugeordnet ist.
" Fig. 8A zeigt den Mindestwert F„, den man durch das in Fig. 6A gezeigte Verfahren und den Höchstwert Ρχ, den man durch das in Fig. 6B gezeigte Verfahren erhält. In jedem Fall kann das F-FeId einen beliebigen Wert zwischen Fn und F^ enthalten. Die mit einer gestrichelten Linie markierte F^-Position ist vorzuziehen, da sie einen niedrigeren numerischen Wert enthält. In jedem Fall ist bei einem linksverschobenen CK kein K-Byte erforderlich.
Fig. 8B zeigt einen nach rechts verschobenen Schlüssel mit einem
009829/1415 Docket PO 968 024 Λ
BAD ORIGINAL,
. - 41 -
L -Wert dahinter, der gleich oder verschieden von O ist. Bei einem CK-3 mit einem F-Wert von 5 und einem L-Wert von 3 hat ein nach rechts verschobener Schlüssel einen L-Wert von 2. Der
Schlüssel Nr. 5 ist jedoch ein nach rechts verschobener Schlüssel, der einem Schlüssel mit einem L.-Wert von O folgt. Wenn bei einem rechts verschobenen Schlüssel L.= O ist, ist die vorhergehende Differenzbyteposition als ein K-Byte eingeschlossen, welches für die Fortführung der Suche benötigt wird. Wenn der vorhergehende Wert für L. verschieden von O ist, ist die vorhergehende Differenzbyteposition nicht als K-Byte eingeschlossen, da sie durch ein E-Byte im F-FeId des laufenden CK dargestellt ist. Die Werte für F und F„ sind bei rechtsverschobenen Schlüsseln gleich.
Fig. 8C zeigt die Änderung von Lß zwischen O und 1, wenn eine Folge von Fällen ohne Verschiebung auftritt, d.h., wenn die Differenzbyteposition D_ während einer.Folge von UK-Vergleichen gleich bleibt. Ist demgemäß ein vorausgegangenes L. nicht O, so wird Ln = O, ist ein vorausgegangenes L = 0, so wird Lsi. Die Änderung erfolgt, wenn L von 0 nach 1 und zurück nach 1 wechselt, während F umgekehrt zwischen 7 und 6 wechselt. Die Fj.- und Fütterte sind für Schlüssel ohne Verschiebung gleich.
Fig. 9 zeigt eine Folge von UK's, in welcher gepunktete, gestrichelte und durchgezogene Linien, die die Grenzen für F , Fj, und K-Bytes definieren, die Arbeitsweise des in den Fign. 6A und B gezeigten Verfahrens darstellen. Die entsprechenden F- und L-Werte für die aus den gezeigten UK1S erzeugten CK1S sind darin »ecket PO 968 024 Λ 009829/1418
BAD ORIGINAL
196A570
zusammen mit dem zugehörigen Zeiger wiedergegeben. Diese Tabelle gibt eine Übersicht über die Vorgänge bei der Erzeugung von CK's aus einer Folge von UK's. In Fig. 9 stellen insgesamt 48 K-Bytes die 37 CK's aus einer Gesamtzahl von 518 UK-Bytes dar. Fig. 9 zeigt somit eine Schlüsselverdichtung auf weniger als 1/1G der Anzahl von UK-Bytes. Mit einem zusätzlichen Byte für jeden CK zur Darstellung der F- und L-Werte, beträgt die Verdichtung für die CK's in Fig. 9 ungefähr 1/7 der nichtverdichteten Schlüsselbytes. In der Praxis zeigte sich bei großen Verzeichnissen eine durchschnittliche Verdichtung mit weniger als einem K-Byte pro Schlüssel.
βα9Ι29/141Ι
Fig. 11 ändert das in Fig. 6A gezeigte Verfahren für die Fälle, in denen keine Verschiebung vorliegt, in dem der Wechsel zwischen O und 1 für L und die abwechselnde Existenz bzw. Nicht-
Existenz eines K-Bytes ausgeschaltet wird, d.h. wo Dß für eine Folge von UK's auf derselben Byteposition bleibt. Durch das in Fig. 11 gezeigte Verfahren ist Lg immer 1 und das Differenzbyte D_. ist das K-Byte für alle nichtverschobenen Schlüssel. Fig. 11
ersetzt den Teil der Fig. 6A zwischen dem Ende des Schrittes 16 und dem Anfang des Schrittes 43, der in Fig. 6A durch die Unterbrechungspunkte 20a und 20b gekennzeichnet ist. Der einzige Unterschied zwischen den in den Fign. 11 und 6A gezeigten Verfahren besteht im Weg 22, der in Fig* 11 nur zum Schritt 32 läuft. Der Schritt 26a in Fig. 6A findet sich also in Fig. 11 nicht und der Eingang zum Schritt 30 erfolgt vom Weg 22 her.
Fig. 10 zeigt dieselbe UK-Folge wie Fig. 9. Auf die in Fig. 10 gezeigte UK-Folge wird das Verfahren der Fig. 11 angewendet, während auf die in Fig. 9 gezeigte UK-Folge das in den Fign. 6A und 6B gezeigte Verfahren angewendet wird. In Fig. 10 findet sich also nicht der Wechsel wie bei Folgen ohne Verschiebung, die ein einzelnes K-Byte und ein L von 1 aufweisen. Die offensichtliche
Vereinfachung des in Fig. 11 gezeigten Verfahrens gegenüber dem
Docket PO 968 024 A 0 0 9 8 2 9/141S
196A570
Verfahren in den Fign. 6A oder 6B führt zu einer geringeren durchschnittlichen Verdichtung des Schlüssels, wenn Folgen ohne Verschiebung auftreten, was bei großen Verzeichnissen im allgemeinen der Fall ist. In Fig. 10 ergeben sich 51 K-Bytes gegenüber 48 K-Bytes in Fig. 9 aus einer Gesamtzahl von 518 UK-Bytes.
In Fig. 12A wird der Schritt 41 in Fig. 6A zwischen den Unterbrechungspunkten 40 und 50 durch den Schritt 41a ersetzt. Dadurch ergeben sich für die Operation der Fig. 6A die in der Tabelle IV gezeigten CK's. Diese CK's schalten die Faktorenbytes aus, behalten jedoch die K-Bytes und alle Leerbytes bei. Wie bereits gesagt, sind die Leerbytes redundant, unter bestimmten Bedingungen, wie z.B. Fehlerermittlung oder Korrektur, jedoch erforderlich.
Fig. 12B wird in die Fig. 6A zwischen den Punkten 2OA und 2OB ψ gesetzt und ersetzt somit den entsprechenden Teil in Fig. 6A. Dadurch erhält man CK1S von der in der Tabelle III gezeigten Art. Diese CK's behalten ihre Faktorenbytes und die K-Bytes und schalten sämtliche Leerbytes aus. Da diese CK's alle von der werthöheren Seite entfernten Bytes wiedergeben, hat jeder CK einen F-Wert von 0. Somit braucht im CK-Format der Tabelle III und in dem Verfahren der Fig. 12B kein F-Wert enthalten
zu sein, da L ja immer 0 ist. Somit wird bei dem in Fig. 1.2B B
•gezeigten Verfahren nur L-Wert mit den K-Bytes gespeichert. Obwohl die Werte für L^ und Fg, die wie bei dem in Fig. 6Λ ^e-Docket FO 968 024 A 009829/U1S
BAD ORIGINAL
zeigten Verfahren in den Registern gehalten werden, nicht im CK-Format gespeichert sind, werden sie durch das Verfahren in der Fig. 12B bestimmt. Dafür ist in Fig. 12B ein zusätzlicher Schritt 39 vorgesehen, der die laufend bestimmten Werte für
L und F in ein L~-Register addiert. Dann beginnt Schritt 41b Ii B L
mit der gespeicherten Lp-Anzahl von Bytes vom Anfang des laufenden UK-Z. Dann beginnt das Verfahren wieder von vorne und läuft bis zum Ende des UK-Verzeichnisses weiter.
Fig. 12C zeigt ein Verfahren, welches die in Tabelle V gezeigten verdichteten Schlüssel erzeugt. Dabei werden die K-Bytes aus einem UK-Y und nicht aus einem UK-Z ausgewählt, wie es bei dem in Fig. 6A gezeigten Verfahren der Fall ist.
Ein weiterer Unterschied besteht darin, daß eine ungleichförmige Codezunahme in der verwendeten Zeichensortierfolge für das in Fig. 6A gezeigte Verfahren keine Rolle spielt, während das in Fig. 12C gezeigte Verfahren besonders daran angepasst werden muß, weil dort ein nächsthöheres Zeichen in der verwendeten Zeichensortierfolge wählbar sein muß. Wenn der Sortiersatz durch aufeinanderfolgende Codes dargestellt ist, kann jedes folgende Zeichen durch Addieren einer 1 zu einem Code für ein gegebenes Zeichen gewählt werden. Andererseits kann man das nächste Zeichen auf anderem ί'/oge, z.B. durch eine Tabellensuche erhalten, wenn die Zeichenfolge in einem Sortiersatz eins entsprechende Fortschaltung um den Wert, 1 nicht gestattet. Bei der Tabellen-
Docket PO 968 024 A 008829/1416
BAD ORiGtNAl.
1SS4570
suche kann die Zeichenfolge in aufeinanderfolgende Adresspositionen in einer Tabelle gesetzt werden, die in einem frei adressierbaren Speicher gespeichert ist. Somit erhält man das nächste Zeichen durch Fortschalten der Adresse für ein gegebenes Zeichen um 1, wodurch man die Adresse zum Abruf des nächsten Zeichens in der Sortierfolge ungeachtet der tatsächlichen Codewerte der Zeichen erhält.
Der erste Teil der Fig. 12C vom Startschritt 10 bis zum Vergleicherschritt 17 ist mit den entsprechend numerierten Schritten in Fig. 6A identisch. Außerdem sind diese Figuren identisch in bezug auf die Linksverschiebung über den Weg 21, wenn S kleiner als 0 ist, und in den Schritten 30, 31, 43, 44 und im Rückweg zu Schritt 11. Unterschiede zwischen den Fig. 6A und 12C treten auf, wenn Schritt 17 auf dem Weg 22 verlassen wird, weil keine Verschiebung vorliegt, oder auf dem Weg 23 bei Vorliegen einer Rechtsverschiebung.
Wenn keine Verschiebung vorliegt, führt Weg 22 zum Schritt 66. Im Schritt 66 wird die Differenzbyteposition D im unver* dichteten Schlüssel Y .dressiert; dieses Zeichen ist hier
mit Y bezeichnet. Dann wird das nächsthöhere Zeichen hinter Yn D D
in der Sortierfolge gewählt und dieses nächsthöhere Zeichen ist mit Y1 bezeichnet. Anschließend folgt Schritt 67, in welchem Y' mit dem Z_-ßyte im ϋΚ-Ζ an der Differenzposition D auf Gleichheit od©r Ungleichheit verglichen wird. Mit dieser
c^t PO S63 024 A
1984570
Prüfung wird sichergestellt, daß Z_ größer ist als-Y1, was sich durch ein Vergleichsergebnis "ungleich" zeigt. Dann werden die Schritte 32, 33a und 68 ausgeführt, in denen als LR eine 1, E als F_ und Y1 als das K-Byte des laufenden CK gespeichert werden. Wenn auf der andern Seite Gleichheit zwischen Y1 und Z festgestellt wird, müssen eines oder mehrere Leerbytes hinter Yjj dem UK-Y entnommen werden, um eine Unterscheidung zwischen erzeugten K-Bytes und den Bytes in den entsprechenden Positionen des UK-Z herbeizuführen. Diese Unterscheidung erhält man, indem man das erste Leerbyte N1-Y aus dem UK-Y nimmt und den Schritt 66 ausführt, um das nächsthöhere Byte Y1 nach N1-Y in der Sortierfolge zu bekommen. Dann wird im Schritt 67 der Vergleich ausgeführt und wenn dieser das Ergebnis "ungleich11 hat,, ist L a 2 und Y und Y1 werden als K-Bytes gespeichert« E wird für diesen CK als F gespeichert. Das K-FeId wird solange er-
B
höht, wie eine Gleichheit zwischen Y1 und Z und N im Schritt 32 festgestellt wird und zwar wird für jede so festgestellte Gleichheit der Wert um 1 erhöht.
Nach Schritt 33 folgt Schritt 41c, in welchem die K-Bytes aus dem UK-Y genauso gespeichert werden wie im Schritt 41 in Fig, 6A aus dem UK-Z.
Nach Schritt 41c folgt Schritt 69, in welchem das letzte der gespeicherten K-Bytes zum Byte Y' wird, das bei Feststellung einer ungleichen Vergleichsbedingung im Schritt 67 benutzt wird.
Docket PO 968 024 A
009828/1416
Anschließend verläuft das Ablaufdiagramm in Fig. 12C genauso wie das in Fig. 6A.
Bei jedem Ausführungsbeispiel des erfindungsgemäßen Verfahrens muß ein bestimmtes Format für die unverdichteten und für die verdichteten Schlüssel benutzt werden. Die Formatauswahl ist freigestellt, ein einmal gewähltes Format muß jedoch beibehalten werden, da jedes Ausführungsbeispiel grundsätzlich auf ein bestimmtes Format beschränkt ist. Fig. 13 zeigt ein bestimmtes Format für die einzugebenden UK1S und die zugehörigen Hinweisadressen und Fig. 14A ein bestimmtes Format für die resultierenden GK's und zugehörigen Hinweisadressen.
In Fig. 13 trägt jeder UK eine Indexnummer von 0 bis N zur Bezeichnung der Lage des UK in der Sortierfolge. Das Eingabeformat in Fig. 13 ist UK's mit veränderlicher Länge durch ein UK-Zahlenfeld (UK CT) vor jedem UK angepaßt. Zur Anpassung W an .UK-Längen bis 255 Bytes kann dieses Feld ein Byte oder acht Bits umfassen. Das Zahlenfeld trägt dieselbe Indexnummer wie jeder zugehörige UK. Außerdem gehört zu jedem UK eine mit derselben Indexnummer gekennzeichnete Hinweisadresse. Die Hinweisadresse adressiert den vom UK angegebenen Punkt und kann ebenfalls in der Länge veränderlich sein, wobei die Länge von einem Hinweis-Zahlenfeld (PTR CT) vor jedem Hinweisfeld mit derselben Indexzahl angegeben wird. Die Hinweiszahl (PTR CT) benötigt auch nur ein Byte von acht Bits für Hinweisadressen bis zu
Docket PO 968 024 A 009829/'1416
einem Umfang von 255 Bytes.
Das Ende einer UK-Folge wird dadurch angegeben, daß nach der letzten Hinweisadresse (PTR-n) ein aus lauter Nullen bestehendes Byte gesetzt wird. Dieses Byte tritt auf, wenn ein nächstes UK-Zahlenfeld erwartet wird, daher kann ein gültiges Zahlenfeld nicht O sein. Dementsprechend endet der UK-Erzeugungsvorgang, wenn eine UK-Zahl festgestellt wird, die O ist. Das CK-Format in Fig. 14A hat, willkürlich gewählt, für jeden CK die Form LFK. L ist die Anzahl der K-Bytes im CK, F die Anzahl der mit einem Faktor von der werthöchsten Seite des UK versehenen Bytes und K stellt die UK-Bytes im CK dar, die fehlen können. Zwischen L und F kann jede Reihenfolge benutzt werden, eine einmal gewählte Reihenfolge muß jedoch ohne Ausnahme beibehalten werden. Das Format in Fig. 14A wird vorgezogen. Das Grund-CK-Format ist in Fig. 14B gezeigt. Die L- und F-Felder können je ein Byte von acht Bits belegen oder zusammen ein Byte mit acht Bits, also je vier Bits. Die Wahl hängt ab von der Größe der für die in Frage kommende Liste erwarteten L- und F-Felder. Wenn überhaupt K-Bytes vorhanden sind, stehen sie am Schluß im Format in derselben Reihenfolge wie in dem UK, aus dem sie abgeleitet sind. Die Hinweisadressenzahl (PTR-CT) und die Hinweisadresse (PTR) stehen immittelbar hinter dem LFK-FeId und werden direkt von den entsprechenden Feldern entnommen, die zu dem UK ge hören, der durch den CK dargestellt wird. Der letzte CK in einer verdichteten Liste in Fig. 13 wird durch O-Bits in seinem L-FeId und F-FeId bezeichnet, denen die Felder PTR CT-N und Docket PO 968 024 A 009 8 2 9/1416
196457Ö
PTR-N folgen. Diese Felder entsprechen dem zu dem letzten UK im unverdienteten Verzeichnis zugehörigen Feld.
Die L- oder F-Felder können so erweitert werden, daß sie große Mengen von Zeichen für relativ wenige CK's liefern, auch wenn die durchschnittliche CK-Länge für ein verdichtetes Verzeichnis klein ist, z.B. zwischen ein und zwei Bytes. Im allgemeinen umfaßt nur ein kleiner Prozentsatz von CK's in einem Verzeichnis eine größere Anzahl von Bytes. Dementsprechend benutzt man am besten eine kleine LF-Darstellung von z.B. einem Byte, die beispielsweise 95 % der CK's in diesem Verzeichnis wiedergeben kann. Für die verbleibenden weniger als 5 % der CK's können dann besondere Erweiterungsfelder vorgesehen werden.
Fig. 14C zeigt ein Erweiterungsformat, mit welchem L- und F-Felder von einem halben Byte bis zu je 255 Bytes erweitert werden können. Wie bereits gesagt, können in dem in Fig. 14A w gezeigten Format nur im letzten CK eines verdichteten Verzeichnisses L und F Null sein.
Die vier Bits für L b„,i. F können in 15 von 0 verschiedenen Codes codiert werden· Einer dieser 15 Codes, z.B. der Code für 15, kann für die Anzeige der Erweiterung eines jeden Feldes reserviert werden. Dann können die L- und F-Felder auf einen Höchstwert von je 15 Bytes gebracht werden, d.h. auf einen Maximalwert von 14. Wenn jedoch entweder beii&e oder ein©s der Felder L und F einem Überlauf über 14 hinaus aufweist» wird s PO 963 024 A 0 0 9 8 2 8 / 1 4 1 S
dies dadurch angezeigt, daß der 15er-Code in das entsprechende Feld gesetzt wird, welches den Wert 14 überlaufen hat. Der 15erCode für eines der beiden Felder L oder F zeigt an, daß ein oder zwei Erweiterungsbytes, wie die in Fig. 14C1 D oder E gezeigten, unmittelbar den Grundbytes für L und F folgen und vor den K-Bytes stehen.
Ein Erweiterungsbyte wird hinzugefügt, wenn eines der beiden Grundfelder L oder F den einen Oberlauf anzeigenden 15er-Code enthält· Das Erweiterungsbyte enthält dann ganz die Felder L oder F und umfasst bis zu 255 Bytes. Ein Erweiterungsbyte kann somit als einzige Darstellung des L- oder F-Wertes dienen. Wenn das L-FeId erweitert wird, ist die Anzahl der folgenden K-Bytes gleich dem im Erweiterungsbyte für L angegebenen Wert.
Fig. 14E zeigt einen Fall, in dem beide Felder L und F über 14 hinaus erweitert werden müssen. Somit werden zwei Erweiterungsbytes hinzugefügt, Jeder Erweiterungswert enthält die entsprechenden echten Werte für L und F. Wenn z.B. 33 K-Bytes vorliegen und der F-Wert 21 ist, enthalten die Felder L und F im Grund-CK-Format für diesen CK je einen 15er-Code, welcher anzeigt, daß die folgenden L- und F-Erweiterungsbytes die Werte 33 bzw· 21 haben. 33 K-Bytes folgen dem F-Erweiterungsbyte im CK.
Docket PO 968 024 A Q 0 9 8 2 9 / 1 4 1 S
Fig» 1 zeigt den Datenfluß bei der Erzeugung verdichteter Schlüssel aus unverdichteten Schlüsseln·
Die hier gezeigten Ausführungsbeispiele benutzen das in Fig. 13 gezeigte Format für die UK1S von N UK-Feldern, wobei N jede ganze Zahl sein kann. Diese einzugebenden UK's sind das Ergebnis einer vorhergegangenen UK-Sortieroperation in einem Rechner. Unmittelbar vor jedem UK steht ein Zahlenfeld mit der Anzahl von Bytes im folgenden Schlüssel und hinter jedem UK steht ein Hinweisfeld zur Lokalisierung der durch den UK dargestellten Daten. Das Ausführungsbeispiel arbeitet mit einem Hinweisfeld veränderlicher Länge, wobei ein Hinweisfeld mit fester Länge als Sonderfall eingeschlossen ist. Ein Hinweis mit fester Länge kann z.B. zwei Bytes enthalten, aus denen die Adresse des entsprechenden Schlüsse durch einen passenden Algorithmus abgeleitet werden kann, wie er z.B. in dem Basic Direct Access Method (BDAM) genannten IBM OS/360 System Programm verwendet wird. Die Adressierung unter ψ diesem Programm ist in einem allgemein erhältlichen IBM Handbuch mit der Form Nr. Z28-6617 genauer beschrieben.
Die Anzahl der dem UK-Zahlenfeld zugeordneten Bytes muß natürlich der höchstzulässigen Länge für die UICs angepaßt sein. Das eine in Fig. 13 verwendete Bytezahl feld (UK CT) ist für eine maximale UK-Länge von 255 Bytes eingerichtet und dürfte damit den meisten Situationen gerecht werden. Bei Bedarf kann ein zwei Byte langes Z aiii feld benutzt werden, welches dann oine
üocket PO 968 Ü24 A Q09829/U1I
1984570
maximale ÜK-Länge von über 16000 Bytes gestattet.
Die in Verbindung mit Fig. 13 beschriebene Eingangsbytefolge wird von einer Datenquelle 81 in den in Fig. 1 gezeigten Datenspeicher 83 übertragen, der als Magnetkernspeicher, Dünnfilmspeicher, monolithischer Speichers usw. ausgebildet sein kann.
Fig. 14A zeigt das Format der von einem Bestimmungsspeicher 84 in Fig. 1 an einen Verbraucher 82 ausgegebenen CK's. Dieser CK-Strom hat eine Form, die hinterher zum Aufsuchen der darin bezeichneten Information benutzt werden kann.
In Fig. 1 liefert eine Datenquelle 81, z.B. eine E/A-Einheit, eine nichtverdichtete Kette von Bytes in dem in Figa 13 gezeigten Format an einen Datenspeicher 83.
Ein Verbraucher 82 in Fig» 1, beispielsweise auch wieder eine E/A-Einheit, empfängt die Ausgabe des Systems in Fig. 1 in Form einer Kette von verdichte tan Schlüsselbytes in dem in Fig. 14A gezeigten Format von einem Bestimmungsspöicher 84«
Der DatsnäptfiehOi' 83 uud dar Bestimmurigssp^iehsr 84 können verschieden« fip^iciiör jai»; körnig«, abs? auch verschiedene oder sich übörl ipp^ntLi Oero ichö in demselben Speicher wie eiiiäm Kern speicher, -oinesa Miiuolichisiihen Speicher, einem Trommelspeicher oder einmal iHatc^« spoieiur
κ *>■ on λ 009*29/1411
BAD ORIGINAL
Die zwischen die Speicher 83 und 84 geschaltete Rechenanlage umfaßt mehrere Register, Eingangsschaltungen, Ausgangsschaltungen und Leitungen.
Ein Speicherdatenregister (SSDR) verbindet den Ausgang des Datenspeichers 83 mit einer Ausgangsleitung 86. Das SSDR liefert ein Byte an die Ausgangsleitung 86, wenn der Speicher 83 durch ein Startsignal SS betätigt wird, während er eine Adresse entweder von einem Y-Speicheradressregister (YSAR) oder einem Z-Speicheradressregister (ZSAR) empfängt, wenn eines der beiden Register entsprechend durch ein OG (YSAR)-2 oder ein OG(ZSAR)-2-Signal ausgelesen wird.
Ein Addierer 88 liefert sein Ausgangssignal an eine Addiererverriegelung 89, die die an den Addierer 88 über Eingänge A und B gegebenen Werte speichert. Die Verriegelung 89 verfügt über eine Vorzeichenstelle G zur Anzeige des Vorzeichens der gespeicherten Größe.
Ein Vergleich zwischen den Eingängen A und B des Addierers 88 erfolgt durch Addition von A zum Zweierkomplement von B. Dabei sind A und B gleich, wenn sich in der Verriegelung 89 die Größe C) orgibt. Eine von 0 verschiedene Größe zeigt eine Ungleichheit zwischen A und B an und dann zeigt die Vorzeichenstelle G an, welcher von beiden Werten grüßer als der andere ist. Ist G=I1, ist A größer als B, ist G « 0„ ist A kleiner aLs B9
Dockst PO 968 024 A 009829/1 Al 5
19B4570
Das Zweierkomplement eines auf eine Komplementierschaltung 93 gegebenen echten Wertes von B erhält man über ein Signal IG(C), welches das 1er«Komplement von B liefert und ein© 1 addiert«
Eine EingangsIeitung 91 ist mit dem Α-Eingang und eine Eingangsleitung 92 mit der Komplementierschaltung 93 am B-Eingang des Addierers 88 verbunden· Der echte Wert der Signale auf der Leitung 92 durchläuft die Komplementierschaltung 93, wenn deren Steuersignal IG(C) nicht vorhanden 'ist.
An die Komplementierschaltung 93 sind zwei weitere Eingänge IG(BI) und IG (B 2) angeschlossen, die ©elii© Eingangs signale für die Zahlen 1 bzw« 2 auf die wertniederste Stell© d@s Addierereinganges B geben, wenn nicht das das Zweierkomplement liefernde Signal IG(C) vorhanden ist.
Mit der AddiererausgangsIeitung 87 ist ein Nullprüfer 94 verbunden, der alle Ausgangssignale der Verriegelung 89 mit Ausnahme des Signals der Vorzeichenstelle G empfängt.
Ein Takt-, Verzweigungs- und Torsteuerung 95 empfängt die Signale vom Nullprüfer 94 auf Leitungen 94a und b und die Signale von der Vorzeichenstelle G der Verriegelung 89 und liefert die entsprechenden Eingabe« tind Ausgabesignale sowie dig Speicher-Steuersignale, die in dem in Fig«, 1 gezeigten System erforderlich sind, um es nach dem in Fig. 6A gezeigten Verfahren in Betrieb zu setzen.
Docket PO P68 024 A 0Q9329/141S
BAD ORfGINAt
196457C
Zwischen der Leitung 91 für den Addierereingang A und der Addiererausgangsleitung 87 liegen mehrere Register. In jedes dieser Register können von der Leitung 87 Signale geleitet werden, wenn die Eingangsschaltung der Register durch IG-Steuersignale entsprechend betätigt werden. In gleicher V/eise kann jedes dieser Register ein Ausgangssignal auf die Leitung 92 geben, wenn seine Ausgangsschaltung durch entsprechende OG-Steuersignale betätigt wird. Diese Register sind in der folgenden Tabelle definiert, in der in der linken Spalte die Symbole für die Register und in der rechten Spalte deren Bedeutung angegeben ist«
ZSAR Das Z-Speicheradressregister. Es enthält
die Adresse für das nächste Byte des UK-Z^ das vom Datenspeicher 83 abzurufen ist.
YSAR Das Y-Speieheradressregister enthält die
Adresse des nächsten Bytes des UK-Y, das vom Datenspeicher 83 abzurufen ist.
F Das laufende F-Register empfängt den F«°Wert
für den gerade erzeugten CK.
E- Laufende? Register für gleiche Bytes spei
chert die Anzahl gleicher Bytes im gerade verglichenen UE-V und UI-Z*
Lg Laufendes L-Register empfängt den laufenden
L-Wert» der die Anzahl von K-Bytes im gerade erzeugten CK darstellt.
Docket PO 968 024 A QQgg29/14i5
BAD ORlQfNAL
ZCNT Z-Zahlregister speichert die Anzahl der
übrigen Bytes im gerade verarbeiteten UK-Z, die nicht abgerufen wurden.
DSAR BestiramungsSpeicher-Adressregister enthält
die Adresse des nächsten im Bestimmungsspeicher 84 zu speichernden Byte.
L. Letztes L-Register speichert den L-Wert des
letzten erzeugten CK.
E. Register für letzte gleiche Bytes speichert
die Anzahl gleicher Bytes, die im unmittelbar vorhergehenden UK-Vergleich bestimmt wurden.
Z Z-Byteregister speichert das laufende Byte
des gerade verarbeiteten UK-Z, kann außerdem zum Speichern des Hinweiszahlenbytes (PTR CT) benutzt werden.
Y Y-Byteregister speichert das laufende Byte
des gerade verarbeiteten UK-Y.
S S-Wertregister speichert den F-Wert, der
die Differenz zwischen den laufenden Werten E und E. darstellt.
YCNT Y-Zahlrögister speichert die Anzahl der in * dom g-*jrad«3 verarbeiteten laufenden UK-Y vsrfcl&ibenden Bytes, die niehfc abgerufen Ie ii.,
hetat N Mt on » 00 98 3 9/1*1 8
BAD ORIGiNAi
Der Datenspeicher S3 in Fig. liest in einem CLK-Taktzyklus ein Byte in das Datenregister SSDR, das im nächsten folgenden Zyklus das Byte auf die Datenspeicher-Ausgangsleitung 86 gibt.
Ein Startspeichersignal SS wird auf Datenspeicher 83 gegeben, so daß das adressierte Byte ins SSDR-Register gestellt und auf Leitung 86 gegeben wird»
Der Bestimmungsspeicher 84 benötigt zwei CLK-Zyklen zum Schreiben eines vom Bestimmungsspeicher-Datenregister DSDR empfangenen Byte. Während eines CLK-Zyklus empfängt der Speicher 84 ein Bestimmungsspeicher-Startsignal SD, wird aufgrund eines Signales OG(D) vom DSAR adressiert und löscht die adressierte Byteposition. Im nächsten CLK-Zyklus wird der Inhalt des DSDR auf die im Speicher 84 adressierte Byteposition übertragen.
Einige Register verfügen über eine zweite Eingangs- oder Ausgangsschaltung, so daß sie Daten auf mehr als einer Leitung ausgeben oder von mehr als einer Leitung empfangen können. Wo ein Register über mehr als eine Eingangs- oder Ausgangsschaltung verfügt, sind diese Schaltungen durch hinter die entsprechende Bezeichnung der Steuersignale in Fig. 1 gesetzte Zahlen von einander unterschieden*
Die Register ZGNT oder YCNT verfügen über je eine zweite Eingangsschaltung, die mit der Datenspeicher-Ausgangsleitung 86 verbunden ist, über die sie das adressierte Byte aus den Bock« PO 968 024 A 009828/1418
Datenspeicher 83 empfangen können, wenn sie entsprechend durch Steuersignale IG(ZCNT)-Z, IG(YCNT)-Z gesteuert werden. Die anderen Eingangsschaltungen sind mit der Addiererausgangsleitung 87 verbunden, wenn sie entsprechend durch die Steuersignale IG(ZCNT)-I oder IG(YCNT)-I betätigt werden.
Die Register ZSAR und YSAR verfügen auch über einen zweiten Satz von Ausgangsschaltungen, die mit dem Adressiereingang des Datenspeichers 83 verbunden sind, wenn sie entsprechend durch Steuersignale OG(ZSAR)-Z oder OG(YSAR)-Z betätigt werden. Die anderen Ausgangsschaltungen der erwähnten Register sind bei entsprechender Steuerung durch die Signale OG(ZSAR)-I oder OG(YSAR)-I mit Addierereingang A verbunden.
Die Register E , S und YCNT verfügen über zweite Ausgangsschal»
tungen, die sie mit der Leitung 9Z verbinden, wenn sie durch die entsprechende Steuersignale OG(EJ-Z, OG(S)-Z und OG(YCNT)-I eingeschaltet werden. Ihre anderen Ausgangsschaltungen verbinden sie mit. Leitung 91, wenn sie durch Steuersignale OG(E )-1,
OG(S)-I oder OG(YCNT)-2 betätigt werden. Das DSAR kann entweder mit Addiex'ereingang A durch das Signal IG(DSAR) oder mit dem Bestimmungsspeicher 84 durch das Signal OG(D) verbunden werden.
Die Fign* 2A bis H zeigen ein bestimmtes Ausführungsbeispiel der Takt-, Verzweigungs- und Steuersehaltungen 95.
Fig. 2B-1 zeigt einen Impulszyklus am Ausgang des in Fig« 2B-Z Docket PO 968 024 A 008829/1415
BAD ORIGINAL
gezeigten Taktgebers 101. Bei diesem Taktgeber 101 handelt es sich um einen konventionellen binären Taktgeber, der die gezeigten Impulse mit den Bezeichnungen CLA, CLB, CLC, CLR und CLL liefert. Der Impuls CLB beginnt gleichzeitig mit dem Impuls CLA, CLB fällt jedoch vor CLA wieder ab. Der Impuls CLC beginnt mit dem Abfallen von CLA und hat ungefähr die gleiche Dauer wie CLB* Der Impuls CLR hinter CLC hat ungefähr die gleiche Dauer wie CLC während des Mittelteiles des Taktzyklus. Der Impuls CLL am Ende des Taktzyklus hat ungefähr die gleiche Dauer Wie der Impuls CLC. Die Impulse CLA, CLB und CLC steuern die in Fig. 2C und 2D gezeigten Schaltungen für den Ablaufsteuerungstakt,
Ein Oszillator 102 oder eine andere Zeitsignalquelle liefert einen Ausgangs impuls, der den Taktgeber 101 über eine Torschaltung 103 treibt. Der Oszillator 102 kann z.B. 10 Millionen oder mehr Impulse pro Sekunde liefern. Die Torschaltung 103 wird über eine Verriegelung 104 einer Taktsperre 105 gesteuert.
Eine Startsignalleitung 100«steht mit dem Rückstelleingang der Verriegelung 104 in Verbindung, die bei Empfang eines Impulses die Torschaltung 103 öffnet, so daß die Oszillatorimpulse zum Taktgebers 101 gelangen, bis durch Setzen der Verriegelung 104 mit einem Signal von der Oder-Schaltung 106 wieder eine Sperrung erfolgt.
Die Oder-Schaltung 106 liefert ein Stoppsignal, wenn eine Operation in Fig. 6A gezeigten Verfahrens beendet werden muß. So
009829/U15
Docket PO 968 024 A
BAD ORiGfNAL
tritt z.B. am Ende eines Indexes oder wenn eine Fehlerbedingung festgestellt wird, die ein weiteres zuverlässiges Arbeiten des Verfahrens verhindert, ein Stoppsignal auf. Der Zeitpunkt bestimmter Stoppsignale ergibt sich aus den Bezeichnungen an den Eingängen der Und-Schaltungen 107 bis 110 in Fig. 2A-a.
Fig. 14Q zeigt den Steuersignalablauf für das in den Fign. 3A bis E in Verbindung mit der Fig. 1 gezeigte Verfahren. Die Tabelle der Fig. 2Q zeigt die Reihenfolge mehrerer CLK-Zyklen und die während jedes CLK-Zyklus gelieferten Steuersignale. Die Tabelle umfaßt 62 verschiedene CLK-Zyklen, die an der linken Seite der Tabelle durch Zahlen zwischen 0 und 127 bezeichnet sind. Die Tabelle verfügt über drei Spalten, deren mittlere mit 11T oder F" bezeichnet ist und die Normalspalte für aufeinanderfolgende Zyklusoperationen darstellt. Die beiden andern Spalten, von denen die linke T (richtig) und die rechte F(falsch) bezeichnet ist, werden für Verzweigungsoperationen benutzt·
Die Ausgangsstellung eines Verzweigungstriggers 110 in Fig. 2N steuert, welche der beiden Spalten T oder F in Fig. 2Q zur Anwendung gelangt. Die Stellung dieses Triggers wird jedoch ignoriert, wenn die mittlere Spalts in Fig. 2Q benutzt wird. Die Auswahl von T oder erfolgt über die Eingangs- und Ausgangsschaltungen in den Fign» 2F-K zusammen mit den Eingangsschaltungen für die Taktgeber in den Fign, 2B-2 und 2C, Dies© Taktgeber-Eingangssitfiiale unterbrechen den normalen Taktsepp dureh Aufashaltan ihrü3 lykVii auf; uinmi gefiziiittmv d©r in FIg6 20 gazeigteii GLK-*
BAD ORIGINAL
1984570
Folge vorwärts oder rückwärts verschobenen CLK.
Die CLK-Zyklen in Fig. 2Q beginnen bei 127 mit der Rückstellung aller kritischen Schaltungen. Die Zyklen enden beim CLK-Zyklus 73, in welchem eine Rückverzweigung zum CLK-Zyklus O erfolgt. Jede Zyklusfolge von CLK O bis 73 stellt einen Durchgang durch das in Fig. 6A gezeigte Verfahren zur Erzeugung eines CK aus zwei UK's dar.
Am Anfang wird von CLK 127 auf CLK 0 übergegangen. Der Zyklus 127 wird zu Beginn der Erzeugung eines CK-Verzeichnisses nur jeweils einmal ausgeführt. Danach laufen die CLK-Zyklen in der Reihenfolge 0-11, 16-27, 32-44, 48-60 und 62-73 ab. Während der Folge von CLK-Zyklen können bestimmte CLK-Zyklen übersprungen oder wiederholt werden, was durch die Datenkonfiguration der verarbeitenden UK-Paare bedingt sein kann. Die Verzweigungssteuerschaltungen sprechen auf die Datenkonfiguration an.
Die in Fig. 2Q gezeigten CLK-Zyklen führen die in dem Ablaufdiagramm der Fign. 3A bis E gezeigten einzelnen Operationen aus. In den Fign. 3A-E ist eine Beziehung zwischen jedem durch einen Kasten dargestellten Schritt und den entsprechenden CLK-Zyklen gezeigt, die den betreffenden Schritt ausführen.
Alle Steuersignale, die in einer Spalte der Fig· 2Q durch Kommas in Gruppen geteilt sind werden während desselben CLK-Zyklus
auf die Torschaltungen in Fig. 1 gegeben. Einige Signale werden während derselben Zyklen wie z.B. CLC, CLR oder CLL zu verschiedenen Zeitpunkten auf die Torschaltungen gegeben.
Alle Signale in Fig. 2Q sind in Fig. 11 gezeigt mit Ausnahme der Rückstellsignale, sowie der Verzweigungssignale TZ, TP und TN. Die Verzweigungssignale werden durch die in den Fign. 2M und N gezeigten Schaltungen erzeugt. Diese Rückstellsignale für die Register sowie die Register selbst sind herkömmlicher Art und nicht näher beschrieben.
Es folgen Beispiele für die Arbeitsweise der ersten vier CLK-Zyklen in Fig. 2Q. Daraus werden mit Hilfe der Fign. 3A-E alle CLK-Zyklen in der Fig. 2Q verständlich.
Während des ersten CLK-Zyklus 127 sind das YSAR und DSAR auf Startadressen für die Erzeugung eines CK-Verzeichnisses gesetzt. Das YSAR ist auf die Adresse des Byte UK CNT-O im Datenspeicher 83 am Anfang des. unverdichteten Verzeichnisses der in Fig. 13 gezeigten Art gesetzt· Das DSAR ist am Anfang auf die Adresse einer ersten Byteposition im Bestimmungsspeicher 84 gesetzt, in der das L-Byte für den ersten CK der resultierenden CK-Kette in dem in Fig. 14A gezeigten Format gespeichert werden soll.
Während des CLK-Zyklus 0 treten die Signale OG(YSAR)-2 und SS auf. Durch diese Signale wird die Adresse im YSAR in den Daten-Speicher 83 gebracht und das Zahlbyte (UK CT-O) des ersten
009829/1415
Docket PO 968 024 A
1964S70
UK adressiert. Das Signal SS startet einen Speicherzyklus, in welchem das adressierte Byte, das auf der Speicherleitung während der nächsten Zykluszeit zur Verfügung steht, in das SSDR gelesen wird.
Der CLK-Zyklus 1 betätigt IG(YCNT)-2 und OG(YCNT)-2 so, daß das Byte UK CT-O auf der Leitung 86 in das Register YCNT geleitet und aus diesem auf die Addierereingangsleitung 91 geleitet wird. Wenn der Addierer 88 ein Eingangssignal empfängt, wird dieses am Ende desselben Zyklus durch CLL in die Verriegelung 89 geleitet und steht auf der Addiererausgangsleitung 87 für den Nullprüfer 94 während des nächsten Zyklus zur Verfügung.
Der CLK-Zyklus 2 löst ein TZ-Signal aus, durch welches der Ausgang des Nullprüfers 94 untersucht wird, das Signal OG(YSAR)-I leitet den Inhalt des Registers YSAR auf den Α-Eingang des Addierers 88 und das Signal IG(BI) leitet eine Zahl 1 zum ™ B-Eingang des Addierers 88. Während des Taktimpulses CLL am Ende des laufenden Zyklus enthält die Addiererverriegelung 89 die um 1 erhöhte YSAR-Adresse.
Während des CLK-Zyklus 3 erfolgt eine Verzweigung, die während des TZ-Signa'os im CLK-Zyklus 2 durch die Stellung T oder F des Verzweigungstriggers 110 in Fig. 2N bestimmt war. Die Verzweigungsrichtung T oder F hängt von den Bedingungen der Ein-•gangsdaten ab, die in Fig. 3A gezeigt sind, die das Byte UK CY-O auf lauter Nullen untersuchten. Ein UK-Zählbyte kann normaler-Docket PO 968 024 A 009829/U1 S
BADORIQJNAL
weise nur O sein, wenn es das Indexende anzeigen soll. Somit wird durch ein UK-Zählbyte aus lauter Nullen die Operation dadurch gestoppt, daß eine Verzweigung nach 3T erfolgt. Wenn die UK-Zahl verschieden von 0 ist, läuft die Operation mit einer Verzweigung nach 3F weiter. Das Signal IG(YSAR) leitet die erhöhte YSAR-Adresse in das YSAR, das Signal OG(YCNT)-I bringt den Inhalt des YCNT-Registers auf Leitung 91 und das Signal OG(YSAR)-I leitet den Inhalt des YCNT-Registers auf Leitung 92 aus. Die Summe steht im nächsten Zyklus am Verriegelungsschalter 89 zur Verfügung und ist die Adresse des Byte UK CT-1 im Speicher 83. Beim ersten Vergleich von UK-Y und UK-Z liird dieses UK-1 zu UK-Z.
Auf diese Weise kann man den Dateafluß in Fig. 1 mit Hilfe des Steuersignalablaufs in Fig. 2Q und des Ablaufdiagramms in den Fign. 3A-E verfolgen und erhält so das in Fig. 6A gezeigte Verfahren.
Die Verzweigungs-Steuersignale TZ, TP und TN werden in den in den Fign. 2M und N gezeigten Schaltungen erzeugt. Das Steuersignal TZ wird durch die Oder-Schaltung 122, das Signal TP durch die Torschaltung 123 und das Signal TN durch die in Fig. 2N gezeigte Oder-Schaltung 126 erzeugt·
Das Signal TZ legt den Zeitpunkt fest, zu welchem die Stellung eines Nullprüfungsverriegelungsschalters 127 in Fig. 2M auf den Verzweigungstrigger 110 übertragen werden muß, Ist die Verriegelung 127 gesetzt, bedeutet das für die Verriegelung 89 ^n .... . . ... A Qiii-m/ir^
BAD ORHSINAt
«64670
Weft O und ist die Verriegelung 127 zurückgestellt, wird dadurch ein von O verschiedener Wert angezeigt. Somit gilt ein Null-Ausgangssignal der Verriegelung 127 als T-Ste.llung für den Trigger 110 und ein von O verschiedenes Ausgangssignal als F-Stellung.
Die Steuersignale TP und TN bestimmen, wann die Stellung einer Vorzeichen-Prüfverriegelung 128 in Fig. 2M auf den Verzweigungstrigger 110 zu übertragen ist. Der Unterschied zwischen diesen beiden Signalen besteht darin, daß für dieselbe Ausgangsstellung der Verriegelung 128 der Verzweigungstrigger 110 in entgegengesetzte Stellungen gestellt wird. Somit setzt ein TP-Signal die Verriegelung 110 auf ein T-Ausgangssignal für ein G1-Ausgangssignal von der Verriegelung 128, während ein TN-Signal die Verriegelung 110 in die F-Ausgangsstellung zurückstellt.
Die jeweiligen CLK-Zyklen in Fig. 2Q, in denen die Signale TZ, TP und TN auftreten, sind an den Eingängen der jeweiligen Schaltungen 122, 123, 124 und 126 bezeichnet·
Eine Prüfschaltung 121 in Fig. 2M stellt fest, wann der Inhalt der Addiererverriegelung 89 auf O und auf das Vorzeichen hin untersucht werden muß, indem die Ausgangsstellung der Schaltung 95 und der Verriegelungsschalter 89 in Fig. 1 auf die Verriegelungsschalter 127 bzw. 128 übertragen wird. Die Schaltung 121 liefert dieses Prüfsignal aufgrund eines Steuersignales an Sie Addiererverriegelung 88 von einem der Register L.? Lg, ZCNT, L., Z oder YCNT. Das Prüfsignal wird auf die in Fig. 2M gezeigten
Und-Schalttmgg-ft 131 bis 134 gegeben. Somit werden die beiden
:.o.,t« t^ca 024 a 009829/U16
BAD ORIGINAL,
Verriegelungsschalter 127 und 128 am Ende eines Zyklus durch einen Taktimpuls CLL aufgrund eines Eingangssignales zur Prüfschaltung 121 entsprechend gesetzt und zeigen den Nullinhalt und das Vorzeichen des Addiererverriegelungsschalters an.
Wenn der Nullprüfungsverriegelungsschalter 127 oder der Vorzeichenprüfverriegelungsschalter 128 gesetzt sind, behalten sie ihre Schaltstellung bei, bis die Prüfschaltung 121 wieder ein Eingangssignal empfängt, was viele·Zyklen später der Fall sein kann. Somit wird durch eines der Signale TZ1 TP oder TN die Stellung der Verriegelungsschalter 127 oder 128 auf den Verzweigungstrigger 110 übertragen und damit die Operation des Systems entsprechend der in Fig. 2Q gezeigten Folge gesteuert. Der Verzweigungstrigger 110 wird außerdem am Ende eines Taktzyklus durch einen Taktimpuls CLL gesetzt, w®an das Signal TZ, TP oder TN anliegt, so daß dieser spezielle T-oder F-Ausgang beim nächsten und den folgenden CLK-Zyklen zur Verfügung steht, bis der Trigger 110 wieder betätigt wird.
Da.s Aus gangs signal des Verzweigungstriggers 110 wird also gemäß Darstellung in Fig. 2A dazu benutzt, phasenverschobene CLK-Zyklen für die Ablaufsteuerung in Fig. 2C mit CLA-Taktimpulsen auszuwählen. Die in Fig. 2Q gezeigte normale Reihenfolge läuft dadurch ab, daß die Ablaufsteuerung in Fig. 2C die CLB-Impulse und der Ablaufsteuerungstaktschalter in Fig. 2D die CLC-Impulse empfängt.
Docket PO 968 024 A Q09829/1415
Die Ablaufsteuerung in Fig. 2C liefert ihr Ausgangssignal auf den Eingang des Ablaufsteuerungstaktschalters in Fig. 2D. Durch einen Impuls auf der Startsignalleitung 100 werden alle Binärtrigger der Ablaufsteuerung auf 1 gesetzt und der Taktgeber 101 in Fig. 2B-2 gestartet, so daß er seine Taktimpulse abgibt. Die aus Einsen bestehenden Ausgangssignale der binären Trigger 1 bis 64 werden auf die Verriegelungsschalter 1 bis 64 in Fig. 2D durch den CLC-Taktimpuls übertragen. Dadurch werden die Leitungen CL 1 bis 64 zum binären Decodierer 23 in Fig. 2E erregt, der daraufhin einen Impuls auf seine Ausgangsleitung CLK 127 gibt. Dieser Aus gangs impuls auf der Leitung CLK 127 bereitet die Und-Schaltung 208 in Fig. 2C vor, die beim nächsten CLA-Impuls den Taktgeber dadurch auf lauter Nullen stellt, daß sie alle binären Trigger (BT) auf 0 setzt. Diese Schaltstellungen werden in der oben beschriebenen Art auf die Schaltungen in den Fig. 2D und E so übertragen, daß die Leitung CLK 0 erregt wird. Dadurch beginnt die normale CLK-Zyklusfolge, in der die einzelnen CLK-Zyklen durch CLC-Impulse eingeleitet werden, die die Obertragung in die Verriegelungsschalter L1-L64 veranlassen. Durch CLB-Impulse wird dann die Ablaufsteuerung der Reihe nach durch ihre Zyklen geschaltet, bis diese Operation durch Betätigen einer der Eingangsschaltungen in Fig. 2C unterbrochen wird.
Jeder CLB-Taktimpuls durchläuft die Und-Schaltung 201 in Fig. 2C und schaltet den Binärtrigger 1 um. Davon ausgenommen sind die Zeiten während der Impulse CLK 11T, 35F, 54T, 60 und 62F. Die Ünd-Schaltungen 211 bis 215 in Fig. 2D koppeln ihre Ausgangs-
Docket PO 968 024 A 009829/U1B
Signale C 2 bis 64 auf die Und-Schaltungen 203 bis 207 in Fig. 2C zurück. Die Und-Schaltung 202 empfängt das echte Ausgangssignal C1 vom Verriegelungsschalter L1 in Fig. 2D.
Nachdem CLK O einen Taktimpuls CLA dazu veranlaßt, alle binären Trigger auf O (F-Stellung) zu stellen, schaltet der folgende CLB den Binärtrigger 1 in die T-Stellung, so daß die Ablauf» Steuerung auf 1 steht. Die folgenden CLC-Impulse übertragen diese Zahl 1 auf Taktschalter in Fig. 2D, der dann CL1 auslöst und das Ausgangssignal C1 auf die Schaltung 202 zurückkoppelt. CLK 1 erzeugt CK 1 aus der in Fig. 2E gezeigten Decodierschaltung. Der nächste CLB-Impuls während der Phase CLK 1 läuft durch die Schaltungen 201 und 202 und setzt den Taktgeber auf die Zahl 2, die dann auf den Taktschalter übertragen wird0 Impuls CLC bringt CL2 und beginnt CLK 2. Es erfolgt keine Rtickkoppelung von der Ünd-Schaltung 211. Der CLB-Impuls schaltet in den nächsten Zyklen nur den Binärtrigger 1 um und liefert di© Zahl 3 an die Ablaufsteuerung, wobei diese Zahl durch CLC auf den Taktschalter übertragen wird. Dadurch wird Und-Schaltung 211 durchgeschaltet, so daß CL1 und CL2 geliefert und CLK 3 gestartet werden. C2 wird auf die Schaltung -203 in Fig. 2C zurückgekoppelt und CI auf die Schaltung 202. Somit schaltet der CLB-Impuls des nächsten Taktzyklus die Binärtrigger 1, 2 und 3 so um, daß man die Zahl 4 für die Taktsteuerung erhält.
Auf diese Weise wirken die Ablaufsteuerung und der Ablaufsteuerungstaktschalter als eine Einheit so» daß aufeinanderfolgende iHwk*ί. ^ :'„i*O34 , 09*3329/HIS
BAD ORIGINAL
Zyklen vom Taktgeber 101 sie binär weiterschalten. Diese binäre Schrittfolge wird durch Erregung eines der Eingänge der Und-Schaltungen zur Schaltung 14C unterbrochen. Diese Unterbrechung erfolgt unter Steuerung der T- und F-Stellungen des Verzweigungstriggers 110 in Fig. 2N, und zwar entsprechend der in Fig. 2Q angegebenen Verzweigungen.
Die Signale CL 1 bis 64 von der Taktgeberverriegelung in Fig. 2D werden als binäre Eingangssignale auf einen Binärdecodierer gegeben, der in Fig. 2E gezeigt ist. Der Decodierer kann herkömmlicher Art sein, der bei jeder Kombination binärer Eingangssignale eine bestimmte Ausgangsleitung erregt. Die Ausgangsleitungen 62 vom Decodierer entsprechen den 62 verschiedenen CLK-Zyklen, die in d®r linker* Spalte In Fig. 2Q aufgeführt sind. Jede Leitung für" einen CLK-Zyklus ist zu jedem beliebigen Zeitpunkt während " einer Periode des Taktgebers 101 stromführend,
Die Ein- und Ausgabesteuersignale IG und OG für die Register werden durch die in der Fign* 2F-L gezeigten Steuerschaltilgen erzeugt, die die CLK-Signale und die T- und F-Signale von dem Verzweigungstrigger 110 in Fig. 2N, von dem alle IG- und QG-Signale abgeleitet werden, empfangen.
Die in den Fign. 2F-1 und 2F-2 erzeugten IG-Steuersignale st©u™ em den Addiererausgang« Diese IG-Steuersignale werden mit CLR-Impulsen getaktet·
Docket PO 968 024 A
009829/1416
BAD ORIQINAt.'
Alle anderen IG- und OG-Signale sind während des ganzen erforderlichen CLK-Zyklus vorhanden, der mit der CLC-Taktzeit beginnt und solange dauert, wie ein Zyklus des Taktgebers 101. Die in den Fign. 2G-1 und 2G-2 erzeugten Steuersignale steuern die Ausgabe zum Addierereingang A, die in Fig. 2H erzeugten Steuersignale die Ausgabe zum Addierereingang B. Die Steuersignale in Fig. 2J steuern die Ausgabe zum Datenspeicher 83. Die Steuersignale in Fig. 2K veranlassen die Eingabe aus der Datenspeicherausgangsleitung 87 und die Steuersignale in .Fig. 2L die Eingabe in den Bestimmungsspeicher 84.
Die Tabelle der Fig. 2Q faßt das Verfahren der Fig. 6A, angewendet auf den in Fig. 1 gezeigten Datenfluß unter Verwendung der im Ablaufdiagramm der Fign. 3A-F gezeigten Steuersignalfolge, -sammen. Fig. 3 zeigt die Zusammengehörigkeit der Fign. 3A-F.
In Fig. 3A werden im Schritt 10 alle kritischen Schaltungen der Fig. 1 zurückgestellt. In Fig. 6A erfolgt diese Rückstellung im Schritt 10, da.die Register F. und L durch die Rückstellung
A A
auf 0 gesetzt werden. Außerdem werden YSAR und DSAR auf die erforderlichen Startadressen in den Speichern 83 und 84 gesetzt·
Anschließend wird Schritt 11 eingeleitet, um das Schlüsselpaar UK-Y und UK-Z beginnend mit dem ersten Paar zu erhalten. Schritt 11 wird ausgeführt, wenn zwei aufeinanderfolgende UKCT-Bytes entsprechend in die Register YCNT und ZCNT geholt werden. Zuerst Docket PO 968 024 A 001829/1416
wird das YSAR auf die Adresse des Zählbytes (UK CT) für das erste UK-Y gesetzt. Dann wird dieses Byte in das SSDR geholt und während der Taktzyklen 0 und 1 in das Register YCNT geleitet. Wie alle abgerufenen UK CT-Bytes ergibt auch das Byte YCNT bei der Prüfung einen O-Wert. Als nächstes wird die Adresse für UK-Z erzeugt, in dem das Y-Hinweiszahlenbyte (PTR CT) abgerufen, zum Inhalt von YCNT addiert, diese Summe zum Inhalt von YSAR addiert und das Ergebnis in das ZSAR geladen wird. Zu diesem Zweck wird während der CLK-Zyklen 3 und 4 der Inhalt der Register YCNT und YSAR auf den Addierer 88 und ihre Summe von der Addiererverriegelung 89 auf das Register ZSAR übertragen, um die Adresse des ersten PTR CT-Byte zu erhalten. Dann adressiert das ZSAR den Datenspeicher 83, um das Y-Hinweiszahlenbyte (PTR CT) abzurufen, welches während der CLK-Zyklen 4 und 5 in das Y-Register übertragen wird. Während der CLK-Zyklen 5, 6 und wird die nächste UK CT-Byteadresse erzeugt, indem der Inhalt des Y-Registers und des ZSAR auf den Addierer 88 und deren Summe von der Addiererverriegelung 89 auf das ZSAR übertragen werden, um dieses mit der Adresse des UK CT-Byte für den laufenden UK-Z zu versorgen.
Schritt 12 umfaßt die Nullprüfung für jedes abgerufene UK-Z-Zahlenbyte (CT BT) juach seiner Übertragung auf die Addiererverriegelung 89 während des CLK 8. Ergibt sich bei der Prüfung eine O, wird das Ende des Verzeichnisses angezeigt und die CLK-Zyklen 9T und 1OT stellen die Register Lß und F auf O zurück. Ist das Ergebnis verschieden von O1 läuft Schritt 13 als nächster ab. Docket PO 968 024 A 009829/1416
Schritt 13 wird ausgeführt, wenn die entsprechenden Y- und Z-Bytes vom Speicher 83 abgerufen, auf die Register Y und Z übertragen und während der CLK-Zyklen 8F, 9F, 1OF und 16 verglichen werden. Den Vergleich zwischen den Y- und Z-Bytes in den Registern erhält man durch deren Übertragung auf den Addierer 88, der das echte binäre Z-Byte zur Zweierkomplementform des Y-Byte addiert. Gleichheit zwischen den Bytes Y und Z wird durch eine 0 in der Verriegelung 89 angezeigt und durch die Nullprüfschaltung 94 festgestellt. Ungleichheit wird durch einen von O verschiedenen Wert in der Verriegelung 89 angezeigt. Wenn Z größer als Y ist, ergibt sich durch die Addition des Zweierkomplementes kein Überlaufbit auf den Vorzeichentrigger G, Ist Z kleiner als Y, ist ein Überlaufbit für den Vorzeichentrigger G vorhanden. Ob der Addierer 88 addiert oder subtrahiert (vergleicht) wird von einem IG (C)-Signal an die Komplementiereinrichtung 92 gesteuert*
Der Abruf von Y- und Z-Bytes endet für ein UK-Paar, wenn seine höchste ungleiche Byteposition (D -Position) dadurch festgestellt, daß Y kleiner als Z aufgefunden wird. Dann beginnt Schritt 16.
Schritt 14 beginnt stets, wenn während CLK 17 und 1ST im Schritt 13 Gleichheit zwischen den Y- und Z-Bytes festgestellt wird. Dann wird eine 1 zu der Zahl im Register Eß während CLK 18T und 19T addiert, ändern der Eß-Inhalt durch den Addierer 88 übertragen wird, während das IG (B1)-Signal vorhanden ist. Das erhöhte Ergebnis wird vom Verriegelungsschalter 89 in das EB«Register geladen. Dann werden die nächsten Y- und Z-Bytes im UK-Paar abge-
cke* PO Ui Q2A Λ HM 9923/1415
BAD ORJGINAU
rufen» indem man den Inhalt des YSAR und des ZSAR über den Addierer 88 um 1 erhöht und so die Adressen für die nächsten Y- und Z-Bytes im Speicher 83 erhält. Außerdem müssen die übrigen UK-Bytezahlen in den Registern YCNT und ZCNT für jedes abgerufene Y- und Z-Byte um 1 erniedrigt werden. Das erfolgt entsprechend in den CLK-Zyklen 19T, 21, 22, 23F, 24F und 23F, 24F, 26 oder 23T, 24T. Der Registerinhalt wird erniedrigt, indem der Inhalt der Register YCNT oder ZCNT auf den Α-Eingang des Addierers 88 übertragen wird, während die Steuersignale IG(C) und IG (B1) vorhanden sind. Jedes erniedrigte Ergebnis in der Verriegelung 89. wird während der CLK-Zyklen 21, 22 und 27 oder 25 auf O untersucht, um festzustellen, ob das Ende eines UK erreicht ist. Ist das nicht der Fall, wird das in der Verriegelung 89 stehende Ergebnis entsprechend auf das Register YCNT oder ZCNT übertragen.
Solange die Dg-Position im Schritt 13 nicht festgestellt und der Inhalt weder des Registers YCNT noch des Registers ZCNT im Schritt 14 gleich 0 ist, werden im Schritt 14 die nächsten Y- und Z-Bytes abgerufen, indem man die Adresswerte im YSAR \-?-A DSAR um 1 erhöht.
Sobald im Vergleicherschritt 13 die Dg-Byteposition festgestellt wird, endet die Vergleichsoperation und es läuft Schritt 16 ab. Die momentan gespeicherte Eß-Zahl ist gültig und stellt die UK-Byteposition (Dß-1) dar·
Bis zum Abfühlen der D -Position werden Y- und Z-Bytes abgerufen f,.'te: » im w a 00 9 829/ UI 6
B^ OR(QlNAL
und verglichen, der Inhalt der Register YCNT und ZCNT erniedrigt, und der Inhalt des E_-Registers erhöht, so, wie die Schritte 13 und 14 abwechselnd ablaufen. Die Dß-Postion wird grundsätzlich festgestellt, bevor der Inhalt eines der Register YCNT oder ZCNT auf O erniedrigt wird, d.h. bevor die- Endposition entweder für UK-Y oder für UK-Z erreicht ist. Wenn YCNT vor ZCNT Null wird, was während des CLK-Zyklus 25F angezeigt wird, wird der laufende ED- Wert gespeichert und dieser definiert die D15-PoSition. ZCNT kann nur vor YCNT Null werden, wenn.ein UK-Sortierfehler vorliegt und dieser Fehler durch 48C-1 angezeigt ist. Außerdem kann ZCNT nicht auf derselben Byteposition 0 werden wie YCNT; dieser Fehler wird durch 48C-2 angezeigt. Somit bedeutet die Fehleranzeige 48C-1 oder 48C-2, daß UK-Y größer oder gleich UK-Z ist, also ein Sortierfehler vorliegt. Die Operation kann nicht weiterlaufen, { ;vor nicht alle Sortierfehler in der Folge bnverdichteter Schlüssel behoben sind.
Bei der Ausführung des Schrittes 16 wird der Inhalt des Eg-Registers auf den Α-Eingang des Addierers 88 übertragen und der Inhalt des E.-Registers über die Komplementiereinrichtung 93 auf den B-Eingang, und so erhält man den subtrahierten Wert S in der Verriegelung 89. Dieser Wert wird von dort in den CLK-Zyklen 32 und 33 auf das S-Register übertragen. Im Schritt 17 wird durch Untersuchung auf 0 und Vorzeichen festgestellt, ob S kleiner, gleich oder größer als 0 ist. Wenn der Nullprüfer 94 einen von 0 verschiedenen Wert anzeigt, gibt die Vorzeichenstelle G an, ob F größer oder kleiner als 0 ist. Ist es kleiner als 0, Docket PO 968 024 A 009828/1418
BAD ORIGINAL
steht in der Position G bei einem von O verschiedenen Ausgangsergebnis des Nullprüfers 94 kein Bit. Dann läuft Schritt 30 während der CLK-Zyklen 34F und 35T ab und der Inhalt des L-Re-
gisters wird auf 0 gesetzt, indem ein Addiererzyklus eingeleitet wird, ohne daß Eingangssignale auf den Addierer gegeben werden· Dadurch wird die Addiererverriegelung 89 auf lauter Nullen gesetzt und dieser Inhalt dann auf das L -Register übertragen, um während
der CLK-Zyklen 36T und 37T den Schritt 30 abzuschließen.
Anschließend wird während der CLK-Zyklen 37T und 38T der Schritt 31 ausgeführt, in welchem der Inhalt des Eß-Registers um 1 erhöht wird, indem dieser über den Addierer 88 geschickt wird, während ein Einersignal auf die Steuerleitung IG (B1) gegeben wird. Die erhöhten Ergebnisse in der Addiererverriegelung 89 werden auf das Fg-Register übertragen und damit der Schritt 31 abgeschlossen.
Wenn im Schritt 17 jedoch festgestellt wird, daß S gleich 0 ist, läuft der Schritt 26A während der CLK-Zyklen 34T und 35T ab und der Inhalt des L^-Registers wird auf den Α-Eingang des Addierers 88 übertragen und kein Eingangssignal auf den B-Eingang gegeben. Da der unveränderte L^-Wert dann aus der Addiererverriegelung 89 kommt, stellt der Nullprüfer 94 fest, ob der L -Wert gleich oder verschieden von 0 ist und der Schritt 26A wird ausgeführt. Wenn
der L.-Wert verschieden von 0 ist, laufen die oben beschriebenen A *
Schritte 30 und 31 ab. Stellt der Nullprüfer 94 jedoch fest, daß gleich 0 ist, wird anstelle des Schrittes 30 der Schritt 32
Docket PO 968 024 A 0 0 9 8 2 9 / U 1 S
ausgeführt und ein echter Einerwert auf die Addiererverriegelung 89 gegeben, indem die Steuerleitung IG (B1) erregt wird· Der Inhalt der Verriegelung wird dann zum Abschluß des Schrittes 32 auf das Lß-Register übertragen. Anschließend wird der Inhalt des Ε,,-Registers auf den Α-Eingang des Addierers 88 übertragen, der , B-Eingang nicht erregt und zum Abschluß des Schrittes 33 der Eg-Wert in der Verriegelung 89 in das F -Register geleitet.
Wenn auf der anderen Seite im Schritt 17 festgestellt wird, daß S größer als O ist, beginnt während der CLK-Zyklen 34F und 35F der Schritt 26B, in welchem der Inhalt des Registers LA in die Verriegelung 89 übertragen und genauso wie oben für Schritt 26A beschrieben auf O geprüft wird. Wenn in diesem Fall L. gleich ist, was durch den Nullprüfer 94 angezeigt wird, wird der Inhalt des S-Registers auf den Addierer 88 gegeben, um 1 erhöht und das Ergebnis in der Verriegelung 89 während des CLK-Zyklus 4OT und 41T in das L -Register übertragen und damit der Schritt 34
abgeschlossen. Anschließend wird Schritt 35 ausgeführt, in welchem der Inhalt des E.-Registers unverändert durch den Addierer 88 und die Verriegelung 89 geleitet und in das F -Register über-
tragen wird, wodurch der Schritt 35 während der CLK-Zyklen 41T und 42T abgeschlossen wird.
Wenn LA verschieden von 0 und S größer als 0 ist, wird während der CLK-Zyklen 4OF und 41F der Schritt 36 ähnlich ausgeführt wie der Schritt 34, jedoch wird kein Steuersignal IG (B1) auf den Addierer 88 gegeben. Anschließend läuft ähnlich wie der
Docket Pi) 968 024 A 0 0 9 8 2 9 / U 1 B BAD ORIGINAL
Schritt 35 während der CLK-Zyklen 41F und 42F der Schritt 37 ab, jedoch wird jetzt mit dem Inhalt des Ε-Registers auch ein Steuersignal IG (BI) auf den Addierer 88 gegeben.
Der in den Schritten 30 bis 37 erzeugte Inhalt der Register Lß
und F wird während der CLK-Zyklen 48 bis 52 gespeichert» Nach B
Beendigung der Schritte 33, 35 oder 37 beginnt somit in allen nach rechts verschobenen Fällen der Schritt 41. Bei einem von 0 verschiedenen Wert für L^ und keiner Verschiebung beginnt der Schritt während des CLK-Zyklus 54F. Da in diesem Zeitraum der Inhalt der Register Lß und Eß übertragen wird, führt man zweckmäßigerweise gleich den Schritt 44 während der CLK-Zyklen 52 bis 54 durch und überträgt die Registerinhalte in die Register
L. und E4. Ln wird während der CLK-Zyklen 52 und 53 auf 0 unter-AAB
sucht, um festzustellen, ob Schritt 41 übersprungen werden soll. Wenn Lg verschieden von O ist, beginnt Schritt 41. Bei Beendigung des Schrittes 31 und einer Verschiebung nach links wird der Schritt 41 jedoch umgangen. Liegt keine Verschiebung vor und ist der Wert für LA gleich 0, beginnt die Operation bei CLK-Zyklus 54T.
Während der CLK-Zyklen 42 bis 44 adressierte der Inhalt des ZSAR das erste K-Byte, das aus dem UK-Z zu nehmen ist. Dieser Vorgang hing davon ab, ob bei einer Verschiebung nach rechts L. gleich 0 war oder nicht· War L. gleich 0, enthielt der vorhergehende CK keine K-Bytes und die laufenden K-Bytes beginnen , an der Deposition des laufenden UK-Z. Dieser Vorgang läuft in * Docket PO 968 024 A 008828/U18
Schritt 35A ab.
Wenn L jedoch verschieden von O ist, enthielt der vorhergehende CK K-Bytes und die laufenden K-Bytes beginnen an der Position (D +1) im laufenden UK-Z. In dem nun ablaufenden Schritt 37A wird anstelle der Zahl 1 im Schritt 35A die Zahl 2 addiert. Während der CLK-Zyklen 24 bis 41 enthält das ZSAR den Adresswert für die Dg-Byteposition im Speicher 83. Während der CLK-Zyklen 42 und 43 erhält man den D -Wert durch Subtraktion des S-Wertes vom D -Wert
A B
und Addition einer 1 bzw. 2 in den Schritten 3SA oder 37A, Dieser ZSAR-Wert steht zur Verfügung, um das erste K-Byte abzurufen,
wenn L. gleich O ist, wie es nach dem Schritt 33 oder 35 der Fall A
Wenn L. von O verschieden ist, wie es nach Schritt 36 der Fall ist, wird die Adresse D^+1 benötigt und der eingestellte ZSAR-Wert auf den Α-Eingang des Addierers übertragen, während ein Signal IG (B1) auf den B-Eingang gegeben wird. Das Ergebnis D.+1 wird dann aus der Verriegelung 89 in- das ZSAR geladen und bildet die .erste K-Byteadresse.
Während des Schrittes 41 wird jedes K-Byte vom Datenspeicher
83 in den Bestimmungsspeicher 84 dadurch übertragen, daß das Byte in der ZSAR-Adresse während der
CLK-Zyklen 55 und 56 abgerufen, unverändert durch den Addierer
88 und die Verriegelung 89 auf das DSDR geleitet und während der CLK-Zyklen 56 und 57 auf der laufenden DSAR-Adressposition Docket PO 968 024 A 009829/1416
im Speicher 84 gespeichert wird.
Jedesmal, wenn ein K-Byte im Bestimmungsspeicher 84 gespeichert wird, wird der Inhalt der Register ZSAR und DSAR um je 1 erhöht, so daß jeder die nächste Bytestelle in den entsprechenden Speichern 83 und 84 adressieren kann. Während der CLK-Zyklen 57, 58 oder 58, 59 erfolgt dieses Speichern durch Obertragen des Inhaltes des YSAR oder des DSAR auf den Α-Eingang des Addierers 88 und Abgabe einer echten 1 auf den B-Eingang sowie die anschließende Übertragung des erhöhten Inhaltes in der Verriegelung 89 zurück auf das YSAR bzw. DSAR.
Auf diese Weise steht die Adresse für die nächste Byteposition immer im YSAR und DSAR zur Verfügung. Das wird immer nur vorwärts um 1 erhöht im Gegensatz zum YSAR oder ZSAR, die sich zeitweise nicht gleichmäßig ändern.
Nachdem das ZSAR und DSAR um jeweils 1 erhöht und das nächste K-Byte übertragen ist, wird der Inhalt des L -Registers während
Jd
der CLK-Zyklen 59 und 60 um 1 erniedrigt und auf 0 geprüft, um festzustellen, ob weitere K-Bytes übertragen werden müssen. Wenn L« von 0 verschieden ist, wird im CLK-Zyklus 62F das nächste K-Byte vom UK-Z geholt und der Schritt 41 in Fig. 3 für jedes weitere K-Byte wiederholt. Schließlich wird Lß auf 0 reduziert und dadurch angezeigt, daß alle K-Bytes übertragen sind. Der CLK-Zyklus 62 zeigt an, daß der zum UK-Y gehörende Hinweis in den Bestimmungsspeicher übertragen werden und der Schritt 43 Docket PO 968 024 A 009829/1415
begonnen werden soll. Im Schritt 43 werden das PTR CT-Byte und die zum UK-Z gehörigen Hinweisbytes übertragen.
Bei Beginn des Schrittes 43 enthält das Register YCNT einen Wert, der die Anzahl der Leerbytes im UK-Y angibt (das sind die Bytes nach der D -Position), da das Register YCNT seit dem CLK-Zyklus 22 nicht mehr verändert wurde. Das Register YSAR enthält dann außerdem die Adresse des Byte hinter dem Dg-Byte im UK-Y, da das YSAR seit dem CLK-Zyklus 21 nicht mehr verändert wurde. Wenn in der Prüfung während des CLK-Zyklus 62T und 63 festgestellt wird, daß YCNT gleich 0 ist, enthält das YSAR die Adresse des PTR CT-Byte. Ist YCNT von O verschieden, muß die Adresse dieses Byte im CLK-Zyklus 63 und 64F erzeugt werden, indem der Inhalt des YCNT zum Inhalt YSAR addiert wird. Während der CLK-Zyklen 63 und 64F werden die Inhalte beider Register in den Addierer 88 gegeben und die gebildete Summe aus der Verriegelung 89 in das YSAR übertragen, welches jetzt die Adresse des Y-Hinweiszahlenbyte (PTR CT) enthält.
Als nächstes wird das Y-Hinweiszahlenbyte unter Verwendung der im YSAR stehenden Adresse während der CLK-Zyklen 64 und 65 aus dem Speicher 83 abgerufen und in das ^SDR und das YCNT-Register gesetzt· Der Inhalt des YCNT-Registers wird dann während der CLK-Zyklen 65 undv66 auf das DSDR übertragen und im Bestimmungsspeicher 84 an der momentan vom DSAR adressierten Position gespeichert. Während dar CLK-Zyklen 66 und 67 wird der Inhalt des YSAR dann in der oben beschriebenen Art über den Addierer 33 um 1
Doc*« PO 968 024 A
erhöht, das Register YCNT wird erniedrigt und auf O geprüft. Dann wird das erste Y-Hinweisbyte abgerufen und in das Y-Register übertragen. Während der CLK-Zyklen 67 und 68 wird der Inhalt des DSAR um 1 erhöht. Während der Zyklen 68 und 69 wird das Hinweisbyte vom Y-Register auf das DSDR übertragen und im Bestimmungsspeicher 84 gespeichert. Dann wird in den CLK-Zyklen 69 und 70 der Inhalt des YCNT-Registers auf die Addiererverriegelung 89 übertragen und auf O geprüft. Wenn der erniedrigte Inhalt des YCNT-Registers von O verschieden ist, wird der CLK-Zyklus 71F ausgeführt und damit der Inhalt des Registers YSAR erniedrigt und das nächste Y-Hinweisbyte abgerufen. Anschließend läuft der CLK-Zyklus 68 ab und der Inhalt des DSAR wird erhöht.
Wenn bei der Prüfung festgestellt wird, daß der Inhalt des YCNT auf O erniedrigt ist, ist die Übertragung des Y-Hinweises beendet und es läuft der CLK-Zyklus 71T ab. Dann wird der Inhalt des YSAR und des DSAR in den CLK-Zyklen 71T und 72 erhöht und so die Speicherung des nächsten Byte in den Speichern 83 und vorbereitet und das Eß-Register im CLK-Zyklus 73 auf O gesetzt.
Am Ende des Schrittes 43 läuft wieder Schritt 11 ab und i* CLK-Zyklus 0 wird das nächste UK-Paar abgerufen. Nach Übertragung des letzten Y-Hinweises im Schritt 43 enthält das YSAR die Adresse für das Zahlbyte (UK CT) des UK-Z in der jetzt abgeschlossenen Operation* Somit enthält das Register YSAR die Adresse für den UK-Y im nächsten UK-Paar und steht für den Anfang der nächsten Operation mit Eintritt in den Schritt 11 bereit.
Hocket PO 968 024 A 009g2Ä/141B
Ein- zweites Ausführungsbeispiel der Erfindung ist in der in den Fign. 15 und 15A-F gezeigten Schaltungen wiedergegeben. Dieses Ausführungsbeispiel arbeitet mit einem größten Feldformat F(Faktor) für ein verdichtetes Verzeichnis, daß durch Ablaufdiagramm in Fig. 6B erzeugt wird· Der Hauptunterschied zwischen den beiden Ablaufdiagrammen in den Fign. 6A und B liegt hinter dem Ausgang des Schrittes 30. In Fig. 6B wird das E^-Register dazu benutzt, den größten Wert für Fß zur erzeugen, während in Fig. 6A das Eß-
Register zur Erzeugung des kleinsten Wertes für F dient. In
Fig. 6B wird in einem Prüfschritt 26 der Inhalt des LA-Registers untersucht und so bestimmt, ob zur Erzeugung von F zum Inhalt des E -Registers eine 1 addiert werden muß oder nicht. Wenn L. verschieden von 0 ist, beginnt der Schritt 31A, in welchem eine 1 zur Erzeugung von Fß zu E addiert wird. Wenn andererseits L O ist, was im Schritt 26C festgestellt wird, beginnt der Schritt 31B, in welchem der laufende Inhalt des E -Registers in das F_- Register gespeichert wird. Die beiden Schritte 31A und 31B münden in den Schritt 44 in Fig. 6B.
In den Fign· 15A bis F ist die Steuerschaltung für das zweite Ausführungsbeispiel gezeigt, die die in den Schaltungen notwendigen Änderungen für das in den Fign. 2A bis N gezeigte erste Ausführungsbeispiel enthält. Somit zeigt die Fig. 15 das Verfahren der Fig. 6B angewandt auf den in Fig. 1 gezeigten Datenfluß. Die Fig. 15 unterscheidet sich von der Fig. 3 dadurch, daß anstelle der Fig. 3C die Fig. 15A tritt. In Fig. 15A erhält
Docket PO 968 024 A 009·29/141Β
19S4570
man den höchsten F -Wert durch die Schritte 31A, 26C und 31B in einer etwas anderen aber gleichwertigen Folge, als sie in Fig. 6B vorliegt*
In Fig. 15 wird während des CLK-Zyklus 37T, 38 im Schritt 31A eine 1 zum Inhalt des Registers E. addiert und das Ergebnis im Register F gespeichert.
Es folgt eine unbedingte Verzweigung zum CLK-Zyklus 45, in welchem im Schritt 26C der Inhalt des Registers LA, der im CLK-Zyklus 37T auf die Addiererverriegelung 89 übertragen wurde, auf 0 geprüft wird. Wenn L. von 0 verschieden ist, verzweigt Schritt 26C zum CLK-Zyklus 46F, der unbedingt zum CLK-Zyklus 48 verzweigt. Wenn andererseits L gleich 0 war, verzweigt der Schritt 26C zum CLK-Zyklus 46T, der seinerseits den Inhalt des Registers E. auf
den Addierer 88 überträgt. Im CLK-Zyklus 47 wird der in der Addiererverriegelung stehende Inhalt des EA-Registers in das Register Fg geleitet und der Schritt 31B ausgeführt. Anschließend beginnt der Schritt 48 und danach läuft die Operation genauso weiter wie beim ersten Ausführungsbeispiel.
Die Fig. 15B zeigt Steuersignalablauf beim zweiten Ausführungsbeispieles. Dort sind nur die CLK-Zyklen im einzelnen gezeigt, die sich von den CLK-Zyklen des ersten in den Fign. 2Q-1 bis 2Q-3 gezeigten Ausführungsbeispiels unterscheiden. Die in Fig· 1.5B gezeigten Zyklen ergeben die in Fig. 15A gezeigten Schritte.
Docket PO 968 024 A 009829/1415
Fig« 15F zeigt die Änderung der in Fig. 2N gezeigten Schaltung, die für die Nullprüfung benötigt wird, welche die in den Fign. 15A und B gezeigten Schritte und Zyklen erfordert. Die in Fig. 15F gezeigte Schaltung wird für die entsprechende Schaltung 122 in Fig· 2N eingesetzt und alle anderen Schaltungen der zuletzt genannten Figur werden unverändert übernommen. Fig. 15C ist ein Ersatz für die Schaltungen in Fig. 2C-2 die für die nötige Ablaufsteuerungstaktierung beim zweiten Ausführungsbeispieles benötigt werden. Das zweite Ausführungsbeispiel übernimmt den Ablaufsteuerungstaktschalter der Fig. 2D und den zugehörigen Decodierer in Fig. 2£ unverändert* Außerdem wird im zweiten Ausführungsbeispiel die in Fig. 15D gezeigte Schaltung für die entsprechende Schaltung in der Fig. 2F-1 eingesetzt. Alle anderen Schaltungen in den Fign. 2F werden unverändert übernommen. Die in Fig. 15E gezeigte Schaltung ersetzt die entsprechenden Schaltungen in den Fign. 2G-2 und übernimmt die übrigen Schaltungen in den Fign. 2G unverändert«
009828/141S

Claims (1)

1I64S7Ö
PATENTANSPRÜCHE
1. Verfahren zum Wiederauffinden gespeicherter Informationen in Verbindung mit einem Verfahren zur Erzeugung verdichteter Schlüssel aus einer Folge sortierter, verschiedenen Informationsgegenständen zugeordneter, unverdichteter Schlüssel, dadurch gekennzeichnet, daß aus der sortierten Folge nacheinander jeweils ein Schlüssel zusammen mit dem nächstfolgenden Schlüssel aufgerufen wird, daß die in der Sortierfolge gleichwertigen Bytepositionen beider Schlüssel miteinander verglichen werden und dabei die werthöchste ungleiche Byteposition ermittelt wird, daß ein diese Byteposition kennzeichnender Code erzeugt wird und daß dieser Code als Teil eines einem der beiden Schlüssel zugeordneten verdichteten Schlüssels gespeichert wird*
2» Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in einem der beiden Schlüssel die Bytes von der werthöchsten bis zur höchsten ungleichen Position markiert werden und daß als Teil eines verdichteten Schlüssels nur Schlüsselbytes, aus diesen markierten Positionen ausgewählt werden.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß die Auswahl von Bytes aus einer niedrigeren als der höchsten ungleichen Byteposition im zweiten unverdichi,ten Schlüssel blockiert wird.
0Q9829/U15
Docket PO 968 024 A
4..Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß mit dem verdichteten Schlüssel eine Hinweisadresse (Zeiger) auf die vom ersten der beiden unverdichteten Schlüssel repräsentierte Information gespeichert wird.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die höchste ungleiche Byteposition eines Schlüsselpaares bis nach der Erzeugung des nächsten verdichteten Schlüssels gespeichert wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Code zweier aufeinanderfolgender Schlüsselpaare verglichen werden und ein Vergleichersignal abgegeben wird, das angibt, ob der jeweilige Code niedriger, gleich oder höher als der vorhergehende Code ist, und daß in Abhängigkeit davon ein entsprechender verdichteter Schlüssel erzeugt wird*
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code niedriger als der vorhergehende Code ist, ein diesen Code, aber keine Schlüsselbytes enthaltender verdichteter Schlüssel erzeugt wird*
8· Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code gleich dem vorhergehenden Code ist, nur ein Schlüsselbyte
Docket PO 968 024 A 00 9 829/1416
1S84I70
der höchsten ungleichen Byteposition des zweiten Schlüssels des jeweiligen Schlüsselpaares ausgewählt wird«
9. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code gleich dem vorhergehenden Code ist, das Vorhandensein eines Schlüsselbytes im vorhergehenden verdichteten Schlüssel abgefühlt wird, und daß aufgrund dieser Abfühlung ein verdichteter Schlüssel ohne Schlüsselbytes erzeugt wird, der den ersten der beiden unverdichteten Schlüssel kennzeichnet.
10« Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code gleich dem vorhergehenden Code ist, das Fehlen eines Schlüsselbytes im vorhergehenden Code abgefühlt und aufgrund dieser Abfühlung ein verdichteter Schlüssel erzeugt wird, der mindestens ein Schlüsselbyte von der höchsten ungleichen Byteposition des zweiten der beiden unverdichteten Schlüssel aufweist.
11. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code größer als der vorhergehende Code ist, abgefühlt wird, ob im vorhergehenden verdichteten Schlüssel wenigstens ein Srhlüsselbyte \Torhandc?n ist«
12. Verfahren nach den Ansprüchen 6 oder 11, dadurch gekennzei-Docket I1O 968 024 A 00S82U/141S
. - 89 -
chnet, daß bei einem Vergleichersignal, das anzeigt, daß der jeweilige Code größer als der vorhergehende Code ist, ein verdichteter Schlüssel für den zweiten unverdichteten Schlüssel eines Schltisselpaares erzeugt wird, wobei die Bytepositionen von der höchsten ungleichen Byteposition des vorhergehenden Schlüsselpaares bis zu der höchsten ungleichen Byteposition des anstehenden Schlüsselpaares verwendet werden.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß das Fehlen eines Schlüsselbytes im vorhergehenden verdichteten Schlüssel abgefühlt wird und daß ein verdichteter Schlüssel für den zweiten unverdichteten Schlüssel eines Schlüsselpaares erzeugt wird, wobei die Bytepositionen von der höchsten ungleichen Byteposition des vorhergehenden Schlüsselpaares bis zu der höchsten ungleichen Byteposition des anstehenden Schlüsselpaares verwendet werden.
14« Verfahren nach den Ansprüchen 1 bis 13, dadurch gekennzeichnet, daß ein Kontrollfeld vorgesehen wird, das einen der Anzahl der nicht durch Schlüsselbytes dargestellten hohen Bytepositionen ' des anstehenden verdichteten Sc lüssels entsprechenden Codewert enthält, daß dieser Wert aber nicht größer ist als die Anzahl, der Bytes bis zur höchsten ungleie!i@n Byteposition.
15» Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß in das Kontrollfal« ein Code gestellt wird, der dia Anzahl dar 4Ji Lm jt^UHgtm verdichteten Schlüssel angibt.
Itoefcor P^ ·)Γ)0 OU A
BAD ORlGtNAL
DE19691964570 1969-01-03 1969-12-23 Verfahren zum wiederauffinden gespeicherter informationen Ceased DE1964570B2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US78880769A 1969-01-03 1969-01-03

Publications (2)

Publication Number Publication Date
DE1964570A1 true DE1964570A1 (de) 1970-07-16
DE1964570B2 DE1964570B2 (de) 1972-10-05

Family

ID=25145616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19691964570 Ceased DE1964570B2 (de) 1969-01-03 1969-12-23 Verfahren zum wiederauffinden gespeicherter informationen

Country Status (5)

Country Link
US (1) US3593309A (de)
JP (1) JPS4939850B1 (de)
DE (1) DE1964570B2 (de)
FR (1) FR2027736A1 (de)
GB (1) GB1280483A (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3670310A (en) * 1970-09-16 1972-06-13 Infodata Systems Inc Method for information storage and retrieval
US3701111A (en) * 1971-02-08 1972-10-24 Ibm Method of and apparatus for decoding variable-length codes having length-indicating prefixes
US4031515A (en) * 1974-05-01 1977-06-21 Casio Computer Co., Ltd. Apparatus for transmitting changeable length records having variable length words with interspersed record and word positioning codes
GB2060226A (en) * 1979-10-02 1981-04-29 Ibm Data compression-decompression
US4606002A (en) * 1983-05-02 1986-08-12 Wang Laboratories, Inc. B-tree structured data base using sparse array bit maps to store inverted lists
US4633393A (en) * 1983-10-21 1986-12-30 Storage Technology Partners Ii Generic key for indexing and searching user data in a digital information storage and retrieval device
US5274805A (en) * 1990-01-19 1993-12-28 Amalgamated Software Of North America, Inc. Method of sorting and compressing data
US5276868A (en) * 1990-05-23 1994-01-04 Digital Equipment Corp. Method and apparatus for pointer compression in structured databases
US5270712A (en) * 1992-04-02 1993-12-14 International Business Machines Corporation Sort order preserving method for data storage compression
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
CA2125337A1 (en) * 1993-06-30 1994-12-31 Marlin Jay Eller Method and system for searching compressed data
US5832499A (en) * 1996-07-10 1998-11-03 Survivors Of The Shoah Visual History Foundation Digital library system
US6353831B1 (en) 1998-11-02 2002-03-05 Survivors Of The Shoah Visual History Foundation Digital library system
GB2406680B (en) * 2000-11-30 2005-05-18 Coppereye Ltd Database
US7203431B2 (en) * 2003-12-26 2007-04-10 Ricoh Company, Ltd. Abnormality determining method, abnormality determining apparatus, and image forming apparatus
GB2424722A (en) * 2005-03-21 2006-10-04 Think Software Pty Ltd Method and apparatus for generating relevance sensitive collation keys

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3275989A (en) * 1961-10-02 1966-09-27 Burroughs Corp Control for digital computers
US3185824A (en) * 1961-10-24 1965-05-25 Ibm Adaptive data compactor
DE1162398B (de) * 1961-10-24 1964-02-06 Ibm Verdichter fuer Daten, die aus Bits verschiedener Wertigkeit bestehen
US3225333A (en) * 1961-12-28 1965-12-21 Ibm Differential quantitized storage and compression
US3223982A (en) * 1962-04-06 1965-12-14 Olivetti & Co Spa Electronic computer with abbreviated addressing of data
DE1249924B (de) * 1962-07-17
US3289169A (en) * 1962-09-27 1966-11-29 Beckman Instruments Inc Redundancy reduction memory
US3278907A (en) * 1964-02-17 1966-10-11 Hughes Aircraft Co Time compressor
US3490690A (en) * 1964-10-26 1970-01-20 Ibm Data reduction system
US3413611A (en) * 1966-01-17 1968-11-26 Pfuetze David Method and apparatus for the compaction of data
US3422403A (en) * 1966-12-07 1969-01-14 Webb James E Data compression system

Also Published As

Publication number Publication date
US3593309A (en) 1971-07-13
JPS4939850B1 (de) 1974-10-29
FR2027736A1 (de) 1970-10-02
GB1280483A (en) 1972-07-05
DE1964570B2 (de) 1972-10-05

Similar Documents

Publication Publication Date Title
DE1964570A1 (de) Verfahren zum Wiederauffinden gespeicherter Informationen
DE2513862C2 (de) Vorrichtung zum Decodieren von Codes minimaler Redundanz und variabler Länge
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE2646163C3 (de) Schaltungsanordnung zum Ersetzen fehlerhafter Informationen in Speicherplätzen eines nicht veränderbaren Speichers
DE3587535T2 (de) Verfahren und Vorrichtung zur numerischen Datenkodierung.
DE2547035C3 (de) Datenverarbeitungseinrichtung
DE2519381C3 (de)
DE2227148B2 (de) Schaltungsanordnung zur Umsetzung digitaler Daten
DE3687285T2 (de) Verfahren und anordnung zur modifizierung eines lauflaengenbegrenzten codes.
DE2918223A1 (de) Schnittstelleneinrichtung zum einsatz zwischen einem digitalrechner und einem speicher
DE2809623A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE68920739T2 (de) Daten-Kodierung für den Sofortstart von PRML-Empfängern.
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE2610411A1 (de) Datenverarbeitungsanlage
DE2010772A1 (de)
DE2000340A1 (de) Verfahren und Vorrichtung zum Suchen verdichteter gespeicherter Informationen
DE2747196A1 (de) Vergleicheranordnung zum vergleichen von information variabler laenge
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE2515099A1 (de) Schaltung zur staendigen erzeugung eines longitudinalen paritaetswortes fuer den hauptspeicher eines digitalen rechenautomaten
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE2136270A1 (de) Verfahren und Vergleicher zum Vergleich zweier Binärzahlen
EP0856176A1 (de) Datenbankmanagementsystem sowie datenübertragungsverfahren
DE3443272C2 (de) Verfahren zum Ausbreiten eines Fehlers in Daten und Fehlererkennungssystem
DE1954475A1 (de) Zugriffsstelle einer Datenverarbeitungsanlage
DE1965507A1 (de) Verfahren zum Wiederauffinden gespeicherter Informationen

Legal Events

Date Code Title Description
SH Request for examination between 03.10.1968 and 22.04.1971
BHV Refusal