DE2062165A1 - Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen - Google Patents

Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen

Info

Publication number
DE2062165A1
DE2062165A1 DE19702062165 DE2062165A DE2062165A1 DE 2062165 A1 DE2062165 A1 DE 2062165A1 DE 19702062165 DE19702062165 DE 19702062165 DE 2062165 A DE2062165 A DE 2062165A DE 2062165 A1 DE2062165 A1 DE 2062165A1
Authority
DE
Germany
Prior art keywords
index
key
register
address
entries
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE19702062165
Other languages
English (en)
Inventor
Luther Jay Poughkeepsie NY Woodrum (V St A )
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 DE2062165A1 publication Critical patent/DE2062165A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
    • 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
    • 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/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Description

IBM Deutschland Internationale Büro-Maschinen Gesellschaft mbH
Böblingen, 16. Dezember 1970 km-hn
Anmelderin: International Business Machines
Corporation, Armonk,N. Y. 10 504
Amtliches Aktenzeichen: Neuanmeldung
Aktenzeichen der Anmelderin: Docket PO 9-69-061
Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen
Die Erfindung betrifft ein Verfahren zum maschinellen Sortieren oder Mischen von Datensätzen, denen je ein den Ordnungsbegriff darstellender Schlüssel zugeordnet ist, sowie eine Anordnung zur Durchführung dieses Verfahrens. ·
Es ist bereits bekannt, gespeicherte Datensätze dadurch zu sortieren oder zu mischen, daß man nicht die Datensätze selbst, sondern nur ihre Adressen in eine Reihenfolge bringt, die der sortierten Reihenfolge der in den Datensätzen enthaltenen Sortiermerkmale: entspricht. Anschließend können die Datensätze in der sortierten Reihenfolge dem Speicher entnommen und auf einen internen oder externen Speicher übertragen werden. Zur Herstellung der sortierten Adressenfolge wird eine Adressentabelle gebildet, in die
108827/1737
w ■ ■■""
jeweils die Adressen neu hinzukommender Datensätze einzuordnen sind. Dies geschieht durch Vergleich der Sortiermerkmale der Datensätze, deren Adressen in der Tabelle bereits gespeichert sind, mit dem Sortiermerkmal der neuen Datensätze. Wenn dabei zwei Adressen in der Tabelle ermittelt werden, zwischen die eine neue Adresse einzuordnen ist, erfolgt eine Verschiebung der Adressen im einen Teil der Tabelle, um für die einzusetzende Adresse Platz zu machen.
Da die Adressen üblic! c. .*'eise aus mehreren Bytes bestehen (die Zahl der Bytes hängt von der Größe des Datenbestandes ab), nimmt diese Verschiebung eine erhebliche Operationszeit in Anspruch. Ein weiterer Nachteil des bekannten Verfahrens besteht darin, daß mit zunehmender Zahl der Datensätze die Adressentabelle sehr groß wird, weshalb oft ein Teil der Tabelle auf einen externen Speicherplatz gebracht werden muß. Diese verteilte Speicherung und die damit verbundene Anschlußadressierung beim Zugriff zur Tabelle erschwert das Einsortieren neuer Adressen.
Aufgabe der Erfindung ist es, ein Verfahren zum maschinellen Sortieren oder Mischen von Datensätzen anzugeben, bei dem die Zahl der zu verschiebenden Bytes klein gehalten wird und das deshalb kurze Operationszeiten erlaubt. Gemäß der Erfindung wird dies dadurch erreicht, daß die Adressen der Datensätze oder der Schlüssel dieser Datensätze in beliebiger Reihenfolge in den Positionen einer ersten Tabelle gespeichert werden, d*..6 Index-Eintra-
10 9 8 2 7/1737
PO 9-69-061 - 2 - BA0
gungen zur Kennzeichnung der Positionen der ersten Tabelle in den Positionen einer zweiten Tabelle gespeichert werden und daß die Index-Eintragungen in der zweiten Tabelle in eine Reihenfolge gebracht werden, die der vom Ordnungsbegriff in den Schlüsseln der Datensätze bestimmten Reihenfolge entspricht, so daß die Reihenfolge der Index-Eintragung en eine Sortierbeziehung zwischen den Schlüsseln darstellt.
Das Verfahren gemäß der Erfindung ermöglicht es, bei der Aufnahme neuer Datensätze die Zeit für die notwendigen Verschiebeoperationen in doppelter Hinsicht zu verkürzen. Da die in der zweiten Tabelle gespeicherten Index-Eintragungen als Positionsangaben für die in der ersten Tabelle gespeicherten Adressen relativ kurz sind, mitunter haben sie nur eine Länge von einem Byte, ist einerseits die Verschiebedistanz klein und andererseits können bei einem Verschiebezyklus die Eintragungen von wesentlich mehr Datensätzen erfaßt werden als beim bekannten Verfahren. Die Zahl der Bytes, die pro Verschiebezyklus bewegt werden können, hängt üblicherweise von der Wortgröße der Datenverarbeitungsanlage ab. Beträgt die Wortgröße beispielsweise 4 Bytes und werden 4 Byte lange Adressen verarbeitet, so ist ein Verschiebezyklus pro Adresse notwendig. Dagegen können beim angegebenen Verfahren vier Index-Eintragungen, von denen jede ein Byte lang ist, in einem Verschiebezyklus behandelt werden.
Eine vorteilhafte Anordnung zur Durchführung des Verfahrens ist gekenn-
109827/1737
PO 9-69-061 - 3 -
zeichnet durch eine Anzahl Hilfsregister zur Speicherung von Konstanten und zur Verwendung als Arbeitsregister, durch mindestens eine Verarbeitungseinrichtung zum Addieren/Subtrahieren, Verschieben und Vergleichen der Inhalte der Hilfsregister, durch Torschaltungen zur wahlweisen Kopplung des Hauptspeichers einer Datenverarbeitungsanlage, der Verarbeitungseinrichtung und einzelner Hilfsregister und durch eine Steuereinrichtung zur Auswahl einzelner Hilfsregister und zur Steuerung der Torschaltung en und fc der Verarbeitungs einrichtung.
Weitere vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind aus den Ansprüchen ersichtlich. Nachfolgend ist ein Ausführungsbeispiel der Erfindung anhand von Zeichnungen dargestellt. Es zeigen:
Fig. IA, lB:Speicherungspläne mit Datenbeispielen zur Erläuterung der Erfindung;
k Fig. 2: eine allgemeine Datenverarbeitungsanlage in Blockdarstellung,
Fig. 3: eine Anordnung zur Durchführung des erfindungsgemäßen Ver
fahrens in einer Datenverarbeitungsanlage;
Fig.4A-4C: Ablaufdiagramme zur Veranschaulichung der Durchführung des Ausführungsbeispiels;
Fig. 5: einen Speicherungsplan mit den in der Beschreibung benutzten
Symbolen.
109827/1737
PO 9-69-061 . - 3a -
Fig. 1 zeigt im Bereich T eine Anzahl von Datensätzen mit Schlüsseln, die ziu" Sortierung dieser Datensätze verwendet werden. Die Datensätze können irgendwo in einer externen Speichereinheit an verschiedenen Stellen stehen. Die Adressen der zugehörigen Schlüsselfelder sind die einzigen Informationen, die über die Datensätze bekannt sein müssen. Einer der Datensätze hat z. B. den Schlüssel 0000, ein anderer Datensatz den Schlüssel 2222, ein dritter den Schlüssel Olli und ein vierter Datensatz den Schlüssel 3333. Jedes dieser Schlüsselfelder hat eine Adresse, die als Eintragung in der Tabelle A steht. Die Adressanordnung in der Tabelle A spielt für die Arbeitsweise keine Rolle. Diese Adressen können also beliebig in der Tabelle A stehen, z.B. in der Reihenfolge, in der sie nacheinander angeliefert wurden. Die Pfeile von den Eintragungen in der Tabelle A zu den zugehörigen Datensätzen T verdeutlichen die beliebige Reihenfolge der Schlüsseladressen in der Tabelle A. Die Eintragungen in der Tabelle A können durch Angabe eines Index (0, 1, 2, 3. ,.) lokalisiert werden. Eine Eintragung in Tabelle A kann nämlich durch ein A mit einem Index gekennzeichnet werden ; z.B. stellt "A, " die Adresse der.Datenaufzeichnung mit dem Schlüsselfeld 3333 dar.
Die Indexangaben für die Adresseintragungen in Tabelle A werden zum Sortieren in einer· Tabelle S gespeichert. Jede Anzahl von Datensätzen kann mit Hilfe der Tabelle S sortiert werden. Wenn je ein Byte
109827/173?
PO9-09-061 _4„
(8 Bits) zur Darstellung eines Index benutzt wird, kann die Tabelle A maximal 25(J Eintragungen aufnehmen. Die Tabelle S enthält die gleiche Anzahl von Eintragungen wie die Tabelle A.
Die Sortieroperation ordnet die Indexzahlen der Tabelle A in der Tabelle S. Die Indexzahlen sind z. B. in Fig. IA derart in aufeinanderfolgende Positionen Θ + 1. . . θ + 4 der Tabelle S eingetragen, dass ihre räumliche Reihenfolge der Sortierreihenfolge der Schlüssel in den zugeordneten Datensätzen entspricht. Im gezeigten Beispiel weist die aus einem Byte bestehende Indexzahl an der Stelle Θ+1 in der Tabelle S auf die Adresse A (PPPP) hin, Welche zum Schlüssel 0000 gehört ; diese Indexzahl ist 1. In der nächsten Stelle θ + 2 in der Tabelle S findet sich eine 3. Dieses ist die Angabe für die Adresse A (RRRR) in der Tabelle A, die zum Schlüssel Olli
gehört. In ähnlicher Weise zeigt der Inhalt der nächsten Stelle θ -f- 3 in der Tabelle S zur Adresse A (SSSS)1 die den Datenschlüssel 2222 lokalisiert. Die letzte Eintragung in der Tabelle S an der Stelle ö + enthält den Index 2, der die Adresse A (QQQQ) in der Tabelle A lokalisiert, die dann direkt den Schlüssel 3333 im letzten Datensatz adressiert.
POD-60-061 - δ -
109827/1737 .
^D ORIGINAL
Jetzt wird angenommen, dass ein neuer Datensatz in die .Sortierfolge eingeschoben-werden sol]. Die Adresse dieser neuen Dateneintragung ist mit X bezeichnet und wird an eine verfügbare Stelle in der Tabelle A gesetzt ; im Beispiel ist es die nächstfolgende freie Stelle mit dem Index 4, der auch mit Z bezeichnet ist.
In der Tabelle S soll zunächst die erste Bytestelle θ den Index Z enthalten, der die Adresse der neuen Dateneintragung in der Tabelle A darstellt. Die Sortieroperation verschiebt dann die Indexeintragung Z aus der Stelle© auf eine Position zwischen den folgenden Indexeintragungen in Tabelle S, die der Sortierposition des neuen Datenschlüssels unter den sortierten andei'en Datenschlüsseln entspricht.
Die riclitige Position für den einen neuen Schlüssel darstellenden Index kann im Prinzip mit jedem beliebigen-Suchverfahren bestimmt werden. So kann z. B. mit einer sequentiellen Suche, einer binären Suche, einer ,quadratischen Suche, usw. , gearbeitet werden. Grundsätzlich wird jedoch die binäre Suche für die geeignetste gehalten und in einem detaillierten Ablaufdiagramm in Fig. 4B dargestellt.
109827/1737
PO9- 69-061 - 6 -
2082165
Wenn eine neue Dateneintragung z. B. 2233 lautet, dann wird der Index Z (der in diesem Beispiel 4 ist) in der Tabelle S auf eine Position zwischen den Index-Eintragungen 0 und 2 verschoben und wird dadurch zum vorletzten Index in der Tabe^e. Die neue Index-Eintragung wird auf die Stelle Θ + 3 gesetzt, wo sie die Eintragung ersetzt, die auf die benachbarte Stelle Θ + 2 verschoben werden muss. Dementsprechend werden alle Eintragungen von Anfang der Tabelle bis zur Eintragung© + 3 um eine Stelle verschoben. Das kann z.B. durch Speichern der neuen Eintragung Z, die in diesem Beispiel 4 ist, in einem ebenfalls Z genannten Register und anschliessende Verschiebung der Eintragung 1 von der Stelle Θ + 1 zur Stelle Θ, weiterhin folgende Verschiebung der Eintragung 3 von der Stelle Θ-ί zur Stelle Θ+ 1, und anschliessende Verschiebung der Eintragung 0 von der Stelle Θ + 3 zur Stelle Θ + 2 erfolgen. Dadurch wird die Stelle Θ + 3, auf welche der Inhalt des Registers Z gesetzt werden soll, freigemacht. Nun wird der Wert 4 in der Stelle Θ + 3 gespeichert, so dass sich eine Reihenfolge der Indexeintragungen in der Tabelle S folgender Art ergibt :' 1, 3, 0, 4 und 2 (siehe Fig. IB). Dies entspricht der geordneten Reihenfolge der Datenschlüssel 0000, Olli, 2222, 2233 und 3333.
PO9-69-061 - 7 _
109827/1737 '
Bei jeder neuen Dateneintragung kann deren Schlüsseladresse am Ende der Tabelle Λ hinzugefügt werden, indem man den laufend höchsten Indexwert erhöht. In gleicher Weise kann die Tabelle S 'durch Erniedrigen des laufenden Wertes von ©erweitert werden.
Mit Hilfe der soeben anhand von Fig. 1 beschriebenen Methode kann man eine sortierte Folge auf einem Ausgabemedium erstellen, z. B. im Kernspeicher, auf Magnetband oder Magnetplatte. Die Erstellung einer Ausgabefolge wird damit begonnen, dass man den Datensatz mit dem Schlüssel T^ ausgibt, welcher durch die Index-Eintragung in der Stelle Θ der Tabelle S angegeben wird. Diese Eintragung in der Stelle Θ wird benutzt, um die Adresse A~ aus der Tabelle A zu entnehmen, und mit dieser Adresse erfolgt dann der Zugriff zum Feld T^ . So "kann nach der Sortieroperation die Folge von Index--Einträgen in der Tabelle S sequentiell entnommen werden, um die Datensätze T in der sortierten Reihenfolge auszugeben.
Andererseits könnte'man die sortierten Adressen der Datensätze ausgeben, z. B. als sequentiellen Wortstrom in den Hauptspeicher der Datenverarbeitungsanlage, um damit anschliessend eine sortierte Ausgabe der Datensätze vorzunehmen. Diese Vorgehensweise ist im allgemeinen vorteilhafter, weil sie eine Weiterarbeit der Zentraleinheit mit einem Minimum von Eingabe-ZAusgabc-Unterbrechungen erlaubt.
109827/1737 ' roo-.eo-oei „β-- '
Fig. 2 /eigt eine Datenverarbeitungsanlage allgemeiner Art, mit der das Verfahren ausgeführt werden könnte. Die Datenverarbeitungsanlage enthält eine Zentraleinheit 20, einen Hauptspeicher 21, bei ' dem in jede Bytestelle geschrieben und aus jeder Bytestelle gelesen werden kann, einen oder mehrere Kanäle 22, die mit der Zentraleinheit 20 und dem Hauptspeicher 21 verbunden sind, sowie eine oder mehrere Eingabe-/Ausgabe-Geräte, die mit den Kanälen 22 ver- ^ bunden sind.
Zur Durchführung des Verfahrens in dem in Fig. 2 gezeigten Datenverarbeitungssystem ist in seinem Hauptspeicher 21 ein Bereich so eingeteilt, dass er die für die in Fig. 1 gezeigten Vorgänge erforderlichen Register enthält. Dementsprechend werden die in Fig. gezeigten Speicherbereiche für die Tabellen S, A und T zugeordnet. Es sind weiterhin Bereiche für die Konstantenregister vorgesehen, die (nach Initialisierung) die Adressen für den Anfang der Tabellen T und A sowie den Wert M (Ilöchst/ahl von Tabellen-Eintragungen) enthalten. Ein weiterer Bereich ist für Arbeitsregister vorgesehen, die bei der Verarbeitung benötigt werden. Die Arbeitsregister tragen die Bezeichnungen N, X, Z, Θ, B1 i, j, n, a und d. Die folgende Zeichentabelle erklärt die Bedeutung der Symbole für die Tabelleneintragungen und Ilegistet\
109827/1737
!»O9-69-061 - 9 -
BAD ORiGINAL
SYMBOIvERKLAER UX G
A - Adresstabelle der Datenschlüssel.
S = Tabelle der 1-Byte-Index-Eintragungen.
"Θ = . Adresse der ersten Eintragung in Tabelle S.
T = gespeicherte Datensätze.
J — = "Rechtsverschiebung* des Inhaltes von Register i um eine
Position. Die rechts herausgeschobene Stelle wird nicht mehr
berücksichtigt.
X = Register, welches die Adresse des neuen Datenschlüssels
aufnimmt, der in die Reihe der anderen Schlüssel· einzuordnen ist, deren Adressen bereits in Tabelle A stehen.
Z = Register, welches den einer neuen Schlüsseladresse X zugeordneten Index aufnimmt. Z = S .
B = Adresse der ersten Eintragung in dem Teil der Tabelle S1
der noch abzusuchen ist. Wenn i = 0, ist B die Einschubadresse in.Tabelle S für Z.
η = Anzalü der Eintragungen im noch abzusuchenden Teil der
Tabelle S.
M - Höchstzahl der in Tabelle A oder S zulässigen Eintragungen.
PO9-69-061 - 10 -
109 827/1737
2082165
i = ■ Differenz zwischen dem jeweiligen Wert für B und der
• Adresse der nächsten, während einer binären Suchoperation
zu untersuchenden Eintragung in Tabelle S. j = Laufindex, der benutzt wird zur Verschiebung der Eintragungen
in der Tabelle S als Vorbereitung zum Einschieben einer neuen
Eintragung in die richtige Position. S= Die nächste während Verschiebeoperationen nach S. zu
verschiebende Eintragung in Tabelle S. S. = Laufende offene Eintragungsposition in Tabelle S während
der Verschiebeoperation.
DARSTELLUNG DER INDIREKTES APRESSIERUXG Die indirekte Adressierung wird durch Indexzeichen dargestellt. So ist z. B. "S " der Inhalt der Eintragung in Tabelle S an der Adresse Θ. "Ag " ist der Inhalt der Eintragung in Tabelle A an der Stelle S . " 3st der Inhalt eines Datenfeldes T an der Adresse
Die Fig. 4A, B und C stellen den Ablauf eines Verfahrens zur Bearbeitung der in Fig. 5 gezeigten Tabellen und Register dar, das in einem in Fig. 2 gezeigten allgemeinen Datenverarbeitungssystem durchgeführt oder mit Hilfe der in Fig. 3 gezeigten Anordnung ver-
ΓΟ9-69-061 109827/1737
BAD ORiGiNAL
wirklicht werden kann. Wenn ein Programmierer die Fig. 4A1 B und C studiert hat, hat er keine besonderen Schwiei'igkeiten mehr bei der Programmierung eines Rechners für diese Aufgabe. In gleicher Weise bedeutet die konstruktive Ausführung der Steuerung in Fig. 3 für einen Datenverarbeitungs-Ingenieur keine besondere Schwierigkeit.
Fig. 3 zeigt eine Verarbeitungs-Anordnung, die in ihrem Aufbau auf die Durchführung des beschriebenen Verfahrens zugeschnitten ist. Es ist ein Arbeitsspeicher 31 vorgesehen, der alle Konstanten- und •Arbeitsregister enthält, die in Fig. 5 gezeigt sind. Für die Tabellen
ist ein Bereich im Hauptspeicher der betreffenden Datenverarbeitungsanlage vorgesehen. Der Hauptspeicher ist mit der in Fig. 3 gezeigten Torschaltung 32 so verbunden, dass er die erforderlichen Operanden entsprechend dem in den Fig. 4A, B und C gezeigten Ablaufdiagramm zur Verarbeitung an den Arbeitsspeicher oder andere dargestellte Stellen liefert. Die Steuerung 30 in Fig. 3 enthält entweder Mikroprogramme in einem Schreib~Lese-Stouex*speicher oder in einem Festwertspeichor, oder sie enthält UXD-, ODER- und NICHT-Glieder, mit denen das Ablaufdiagramm der Fig. 4A, B und C verwirklicht ist. Jede dieser Ausführungen kann von einem Datenverarbeitungsfachmann bei Kenntnis der vorliegenden Beschreibung gebaut werden. Zum Beispie] werden die Torschaltungen 32 bis 37 über die Leitungen
2082165
43 bis 48 von der Steuerung 30 so gesteuert, dass sie die in den Fig. 4A, B und C angegebenen Operanden in der dort dargestellen'Weise verschieben.
Das in den Fig. 4A, B und C gezeigte Verfahren erzeugt Informationen, die die nach Schlüsseln sortierte Reihenfolge für Datensätze T angeben, unter Verwendung der Indexieinmg kombiniert mit indirekter Adressierung in der in Fig. 1 dargestellten Weise.
Die Reihenfolge der Blöcke in den Ablaufdiagrammen der Fig. 4A, B und C entspricht der Reihenfolge der in ihnen angegebenen Opei^ationen. Unter mehreren Schritten innerhalb eines Blocks besteht diese Beziehung der Reihenfolge jedoch nicht ; sie können parallel oder auch überlappt ausgeführt werden.
Das Verfahren beginnt in Fig. 4A mit dem Initialisierungsschritt 50, in welchem M und die Adressen für den Bereich T und für die Tabellen A und S in die angegebenen Register geladen werden.
Der Wert 1 wird in die Register N und Z eingegeben. Dann wird die erste Adresse für ein Dalenschlüsselfeld in das Register X eingegeben, was in Fig. 4A durch den Schritt 51 dargestellt ist. Im nächsten
1 0 9 B 2 7 / 1 7 3 7
It)O-(JO-OGl -.13 -
BAD ORIGINAL
Schritt 52 wird der Inhalt des Registers X in die erste Position in Tabelle A übertragen, und diese Position ist durch die Adresse im Konstantenregister mit der Bezeichnung "Adresse von A " angegeben.
Anschliessend wird im Schritt 53 die Adresse für das nächste Daten-, schlüsselfeld geholt und in das Register X geladen. Im Schritt 54 wird dieser laufende Wert vom Register X injdie Stelle Z in Tabelle A übertragen. Diese Stelle ist momentan A da zu dieser Zeit der Initialwert 1 im Register Z steht.
Der laufende Wert von Z wird dann in das Register i geladen und im Schritt 55 wii'd der laufende Wert vom Register θ in das Register B eingegeben. Im Schritt 56 wird dann der Wert im Register Θ um 1 erniedrigt und im Schritt 57 der laufende Wert vom Register Z in die Stelle Θ in Tabelle S geladen ; das ist dann die neue Anfangseintragung in Tabelle S-. -
Im Beispiel enthält also jetzt die Stelle S eine 1 als Index-Eintragung. Es ist angenommen, dass die Stelle der Index-Tabelle, welche jetzt S+ heisst (im Anfang Mess sie S^)1 die Index-Eintragung 0 enthält. Dieser Indexwert 0 entsteht entweder vor Beginn der Bearbeitung durch Löschen der gesamten Tabelle auf 0, oder er muss in der betreffenden Stelle am Anfang der Bearbeitung initialisiert werden.
ι t
109827/1737 .
PO9-G9-061 .14- . ' , ^0 0B!G1NAL
Von dieser Stelle gelangt man über den Ausgang A zum Schritt 58 in Fig. 4B. 'Mit Schritt 58 beginnt die Einschub-Sorlieropcration. Im Schritt 58 wird der Inhalt des Registers i in das Register η übertragen, und im Schritt 59 der Inhalt im Register i um eine Bitposition nach rechts verschoben, wobei die äusserste rechte Bitposition des Registers i, die vor der Verschiebung vorhanden ist, verloren geht. Im Schritt GO wird geprüft, ob der laufende Wert im Register i gleich ist. Dieses ist der erste Schritt in einer binären Suchoperation in der Tabelle S. Die binäre Suchoperation wird beendet, wenn i gleich 0 wird oder wenn im Schritt 64 eine Gleichbedingung für das Suchargument in Bezug auf den durch die momentan untersuchte Index-Eintragung in Tabelle S dargestellten Schlüssel festgestellt wird. Im Schritt GO wird festgestellt, dass i gleich 0 ist (infolge der Verschiebung im Schritt 59). In diesem Fall geht das Verfahren weiter mit Schritt 71, von wo aus der Gleich-Ausgang benutzt wird, da B gleich Θ H- 1 ist. Es folgt der Schritt 72, in welchem die beiden ersten Schlüssel miteinander verglichen werden, die durch die beiden jetzt in den Tabellen Λ und S stehenden Eintragungen dargestellt werden. Wenn der durch den Index in der Stelle θ vertretene Datenschlüssel gleich gross wie oder kleiner als der durch den Index in der Stelle Θ H- 1 vertretene Schlüssel ist, .läuft die Bearbeitung weiter über den Ausgang B zur Fig. 4C. Wenn jedoch der durch den Index in der Stelle Θ dargestellte Schlüssel
109827/17 3 7
IK)O-KO-OGI - 15 -
'. · BAD ORIGINAL
20Θ2ΊΘ5
grosser als der durch den Index in der Stelle Θ + 1 dargestellte Schlüssel ist, müssen die beiden Index-Eintragungen vertauscht werden, damit sie in der Tabelle S in der richtigen Reihenfolge erscheinen. Für den Uebergang vom Schritt 72 zum Schritt 73 wird in diesem Fall der Ausgang für "grosser als" benutzt, um die beiden Eintragungen an den Stellen Θ und θ + 1 miteinander zu vertauschen.
Die Einschuboperation beginnt mit dem Schritt 73. An diesem Punkt ist i nodi gleich 0 und deshalb bleibt auch B gleich Θ + 1. Der laufende Wert von Θ wiri in das Register j übertragen. Im Schritt 74 wird der Wert von der Stelle θ + 1 in die Stelle θ der Tabelle S verschoben. Somit ist j am Anfang Θ und daher erhält die Stelle Θ das Byte, das* zu diesem Zeitpunkt auf der Stelle Θ + 1 steht. Im Schritt 7G wird dann der Index j um eins -erhöht und wird dadurch zu θ -f 1. Im Schritt-77 ■wird der laufende Wert im Register j mit dem laufenden Wert im Register B verglichen. Tm vorliegenden Beispiel ist jetzt j gleich 13.. Es folgt daher der Schritt 78/ in welchem der Wert vom Register Z auf die Position S übertragen wird, in diesem Falle die Position Θ + Dann läuft das Verfahren über den Ausgang B zur Fig. 4C.
POO-Oü-Ofil _ If; _
109827/173 7
BAD ORIGINAL
Die Verschiebung der Index-Eintragungen in Tabelle S kann auf die Ausrüstung der benutzten Anlage zugeschnitten werden, indem man so viele Index-Eintragungen gleichzeitig verschiebt, wie der'Speicher der Anlage erlaubt. Eine Angleichung an die Maschinencharakteristik erfolgt automatisch in einer Anlage, die für die Verschiebung einer beliebigen Anzahl von Bytes nur eine Instrukton braucht, in der also eine Folge von Bytes um 1 Byte ver- ^ schoben werden kann. Im IBM System/3GO erhält man mit der MVC-
Instruktion eine Verschiebung einer beliebigen Anzahl aufeinanderfolgender Bytes (bis zu 255) um ein Byte bei einer einzigen Ausführung der Instruktion, und zwar erfolgt die Byteverschiebung automatisch parallel entsprechend dem Speicherzugriff dos jeweiligen Modells. Wenn also der Speicher einnr Maschine einen gleichzeitigen Zugriff zu 4 Bytes erlaubt, dann werden jeweils vier Index-Eint ragungen der Tabelle S verschoben und die Byte-Verschiebungsgesehwindigkeit um den Faktor 4 erhöht. Eine höhere Geschwindigkeit erhält man ebenfalls beim Suchen in uvr Tabelle S durch gleich/eiligen Abruf von 4 Index-Eintragungen.
In dom in Fig. -IC gezeigten Schritt 81 wird festgestellt, ob die laufende Zahl von Eintragungen N kleiner als M-I ist, welches die höchste Anzahl ist, die in die Tabelle S eingetragen werden kann. Di(1Se Zahl kanu den Wert ;i.:>."> annehmen, wenn man Index-1 ;int)-a:'ini;;en
, r
Ί09 8 27/173 7 :
" ιlf" '·'·:''·■■ ι ! .' BAD ORIGINAL
von einem Byte (8 Bits) benutzt. Zum Zeitpunkt dieser Prüfung ist eine Eintragung mehr vorhanden, als der Wert von X angibt. Wenn M = 250 ist, dann ist K kleiner als M-I und es folgt der Schritt Im Schritt 82 wird der Wert in den Registern N und Z um 1 erhöht, lieber den Ausgang C-] geht das Verfahren dann zu dem in Fig. 4A gezeigten ScIiritt 53. Im Schritt 53 wird die Adresse des nächsten neuen Datenschlüssels geholt uiid in das Register X übertragen. Dann überträgt Schritt 54 den laufenden Wert vom Register X in die
Stelle A (in Tabelle A) für die neue Datenschlüsse]adi'esse. Im /.j
Schritt 54 wird ausserdem das Register i mit dem Inhalt des Registers Z geladen. Im Schrill 55 wird der laufende Wert vom Register Θ in das Register B geladen und im Schritt 56 dann der "Wert im Register Θ um 1 erniedrigt, wodurch die Anfangs-Byteposition der Tabelle S um eine Byteposition nach vorn verschoben wird. Im Schritt 57 wird die Adresse der nächsten Eintragung in Tabelle A vom Register Z in die Tabelle S an ihre Stelle Θ übertragen.
ΙΌ9-69-061 - 18 -
109827/1737
BAD
" 20B2165
Das Verfaliren läuft dann über den Ausgang bei Λ zur Fig. 4B in den Schritt 58, wo der laufende Wert von i in das Register η gesetzt wird. Anschließend wird im Schritt 59 der Inhalt von i um eine Position nach rechts verschoben und ein neuer Wert von i erzeugt, der im Schritt 60 überprüft wird. Nunmehr wird über den Ungleich-Ausgang von Schritt 60 nach Schritt 61 übergegangen. Dadurch wird auf eine Index-Eintragung gesprungen, die ungefähr in der Mitte der Tabelle S steht, was· dem ersten Schritt einer binären ™ Suchoperation entspricht. Mit den Schritten 61, 62 und 63 wird der
Datenschlüssel T wiedergewonnen, der durch die Eintragung in der Tabelle S an der Stelle B + i dargestellt ist.
Im Schritt 64 wird der Schlüssel T , mit dem Schlüssel Tv verglichen,
d λ
der der in die Reihenfolge neu einzuordnende Schlüssel und für die laufende binäre Suchoperation das Suchargument ist. Wenn dieses Suchargument grosser ist als T ., muss die Suchoperation in der* P ' oberen Hälfte der Tabelle S beginnend mit dem Schritt 65 fortgesetzt werden. Wenn das Suchargument jedoch kleiner als T ist, muss die Suchoperation beginnend mit Schritt 58 in der unteren Häufte der Tabelle S fortgesetzt werden. Die untere Hälfte der Tabelle S besteht aus den Eintragungen von der Stelle B bis zur Stelle B + i - 1. Die obere Hälfte der Tabelle S besteht aus den Eintragungen von der Stelle B + i bis zur Stelle Bh M- 1.
109827/1737
PQQ-.G9-0G1 - 19 -
BAD ORiGtNAL
208216&
Wenn eine Gleieliheit zwischen dem Suchargument Ty und dem Schlüssel T festgestellt wird, folgt im Verfahren die Einschuboperation ab Schritt 73.
Wenn das Suchai'gument Tv grosser ist als der Schlüssel T „ wird beginnend mit Sehritt 65 der neue in das Register B zu setzende Wert bestimmt, der die Adresse der ersten Eintragung im laufenden noch abzusuchenden Teil der Tabelle S ist, in diesem Fall also dem oberen Teil. Der Inhalt von B wird durch Addition von i erhöht. Der Wert im Register η wird ebenfalls neu eingestellt auf die verminderte Zahl von Eintragungen, die in der Tabelle S noch abzusuchen sind. Dementsprechend wird i-vom letzten Wert im Register η subtrahiert und so der neue laufende Wert erzeugt, der in das Register η eingegeben wird. Im Schritt 66 wird der Inhalt des Registers η in das Register i übertragen. ,
Im Schritt 07 erfolgt eine Reehlsverschiebung des Inhaltes von Register i um eine Bitposition, also die Erzeugung eines neuen laufenden Wertes im Register i. Im Schritt 68 wird festgestellt, ob der Inhalt des Registers i auf 0 reduziert wurde. Wenn das der !•"'all ist, ist die binäre Suchoperation beendet, und die Einschuboperation beginnt mit Schritt Wenn der Inhalt von i jedoch von 0 verschieden ist, wird in (lon
.. 1 0 9 8,^7 / 1 7 3 7
J'C)O-Oi)-OOl - 20 -
Schritten Gl, 62 und G3 in die Mitte des noch abzusuchenden Teils der Tabelle S gesprungen und ein anderer, dieser Index-Eintragung entsprechender Schlüssel T wiedergewonnen und das Suchargument damit verglichen. Im Schritt 64 wird der nächste Teil der Suchoperation festgelegt. Bei einem Yergleichsergebnis "gleich" wird die PJinsehuboperation eingeleitet ; die Bedingung "grosser als'1 führt zu einer Wiederholung der zuletzt beschriebenen und mit Schritt N beginnenden Operationen, und die Bedingung "kleiner als" löst eine Operationsfolge beginnend mit Schritt 58 aus, bis entweder i gleich 0 oder T gleich T . ist.
.X. d .
Wenn die vorgegebene Maximalarr/ahl von Eintragungen in der Tabelle S erreicht ist, d.h. M-I Eintragungen (z. B. 255 Eintragungen) vorliegen, läuft das Verfahren vom Schritt 81 zum Schritt 90. Jetzt wird der Index des niedrigsten dargestellten Schlüssels aus der Tabelle S und seine Adresse aus dor Tabelle A entnommen, um extern eine sortierte Reihenfolge zu erzeugen. Tm Schritt 91 wird der Inhalt der Stelle θ in das Register Z und im Schritt 92 die Adresse aus der Position Z in die Tabelle A in das Register X übertragen. Damit ist der durch die laufende Adresse im Register X dargestellte Schlüssel der niedrigste Schlüssel in der durch alle Adressen in der Tabelle A dargestellten Reihenfolge. Im Schritt 93 wird entweder die Adresse vom Register X oder de)' Datensatz mit dem Schlüssel T als nach.' te (bzw. erste) Eintragung in die Ausgabelisle übertragen.
109827/ 1737
■''■■·■■■' BAD ORIGINAL
Die Stelle Z in der Tabelle A steht jetzt für die Adresse des nächsten zu sortierenden Schlüssels zur Verfügung. Im Schritt 95 wird daher die Adresse des nächsten eingegebenen Datenschlüssels in die Stelle Z der Tabelle A übertragen, wenn nicht bereits das Ende der Eingabe-Datei erreicht ist. Ausserdem werden die Register i und B für das Einschieben der neuen Eintragung im Schritt 95 wieder initialisiert, indem der Inhalt des Registers N in das Register Ϊ und der um 1 erhöhte Inhalt des Registers Θ in das Register B übertragen wird. Das Verfahren geht dann über den Ausgang C-2 zum Sehritt 58 in Fig, 4B. Bei Erreichen des Endes der Eingabe-Datei werden alle Datensätze in der durch die Index-Eintragungen in der Tabelle S dargestellten sortierten Reihenfolge ausgegeben.
Man kann vorsehen, dass sich die Index-Eintragungen, welche zur Adressierung aufeinanderfolgender Stellen der-Tabelle A dienen^nicht, wie eben beschrieben, ttni den Wert Ijsondern jeweils um den Wert 4 unterscheiden. Das erlaubt eine direkte Verwendung jedes Indexweries als Verschiebungsadre'sse für die entsprechende Eintragung in der Tabelle A, wenn dort jede Eintragung 4 Bytes einnimmt. Es ist grundsätzlich vorteilhaft, mit einer Indexerhöhung von H zu arbeiten, wenn die Eintragungen in der Tabelle A jeweils eine Anzahl von Il Bytes erfordern.
PO9-69-061 - 22 -
1098 27/1737
Das folgende Beispiel zeigt eine binäre Einschuboperation, bei der der Index für den letzten Schlüssel im Bereich T in die bereits sortierte Keihenfolge der Indexwerte der vorangehenden Schlüssel einzuschieben ist. Wenn X die Adresse des neuen Schlüssels ist, wird sie in die Tabelle A an der Stelle 4 eingeschoben, und der Index zunächst in die Stelle Θ in Tabelle S eingegeben. Dann läuft folgende Operationsfolge ab :
FJINSCIIIEBEBEISPIEL
Die Operationsfolge beginnt mit Schritt 95 in Fig. 4C, wobei die Daten gemäss Darstellung in Fig. 3A geordnet sind.
Einleitung
der Suchoperation
Tv = 2233, N = 4 und Z = 4.
Mach Ausführung von Schritt 95 Fortsetzung mit Schritt 58 in Fig. 4B wie folgt :
A7=A4-X, i= N= 4, B- Θ + 1.
POi)-G9-OGl
- 23 -
109827/ 1737
BAD ORIGINAL
Erster
It e ratio ns -
schritt in
Suchschleife
Nach Schritt 58 η= i= 4.
Nach Schritt 59 i= U- = 2.
if O , es folgt Schritt 61.
Nach Schritt 61 a=B+i=0+l+2=0+3.
Nach Schritt 62 d= S = S- =0:
a Θ+3
Nach Schritt 63 d= A = Adresse von "2222" in T.
Schritt 64 vergleicht 2233 mit 2222, findet 2233 grosser als 2222, und geht weiter nach Schritt Nach Schritt 65 B=B+i=0+l+2-0+3 und n=n-i-4-2=2. Nach Schritt 66 i=2. . Nach Schritt 67 i = |~ = 1. „ Da i f 0, folgt auf Schritt 68 Schritt
Zweiter und
letzter
Iteration.ss eh ritt
Nach Schritt 61 a=B+i=0+3+l=©+4.
, Nach Schritt 62 d=S = S_ , =
a 0+4
Nach Schritt 63. d=A »Adresse von "3333" in T.
Ci
Schritt 64 vergleicht 2233 mit 3333, findet 2233 kleiner K 3333 und läuft weiter zu Schritt
Nach Schritt 58 n=i=l.
Nach Schritt
Da-i--0-, läuft Schritt 60 weiter-nach Schritt
chritt 59 i= ~ = 0.
PO Ö- 69-061
10 9827/1737
- 24 -
Prüfung ob
neue Eintragung
kleiner als die
anderen.
20Θ2165
Da B = Θ + 3, ist B f Θ + 1, und Schritt 71 läuft weiter nach Schritt 73.
Einschuboperation
Nach Schritt 73 Β=Θ+3 und j=0.
Nach Schritt 74 S = S0+1 =
Nach Schritt 76 j = Θ + 1.
Da j = Θ + 1, j < B = Θ + 3 und Schritt 77 läuft weiter
nach Schritt 74.
Nach Schritt 74 S
Nach Schritt 76 j = θ + 2.
= 3.
Da j<B, läuft Schritt 77 nach Schritt Nach Schritt 74 S = S =
fc/ "τ* ώ vT/ ' *5
Nach Schritt 76 j = Θ + 3.
Da j = B = Θ + 3,. ist j >_ B, und Schritt 77 läuft
nacli Schritt 78.
Nach Schritt 78 S = S = Z = 4 und die Einschiebum
ist beendet.
TaI)OlIe S erscheint an diesem Punkt wie in Fig. IB
dargestellt.
1 09827/ 1737
BAD ORIGINAL

Claims (12)

  1. 2165
    PATENTANSPRÜCHE
    Verfahren zum maschinellen Sortieren oder Mischen von Datensätzen, denen je ein den Ordnungsbegriff darstellender Schlüssel zugeordnet ist, dadurch gekennzeichnet, daß die Adressen der Datensätze oder der Schlüssel dieser Datensätze in beliebiger Reihenfolge in den Positionen einer ersten Tabelle gespeichert werden, daß Index-Eintragungen zur Kennzeichnung der Positionen der ersten Tabelle in den Positionen einer zweiten Tabelle gespeichert werden und daß die Index-Eintragungen in der zweiten Tabelle in eine Reihenfolge gebracht werden, die der vom Ordnungsbegriff in den Schlüsseln der Datensätze bestimmten Reihenfolge entspricht, so daß die Reihenfolge der Index-Eintragungen eine Sortierbeziehung zwischen den Schlüsseln darstellt.
  2. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Tabellen schrittweise aufgebaut werden, indem jeweils nur für einen Datensatz
    eine neue Adresse und eine neue Indexeintragung in die Tabellen aufgenommen werden, und daß die Einordnung einer neuen Index-Eintragung in die übrigen Index-Eintragungen der zweiten Tabelle für jeden Datensatz einzeln vorgenommen wird.
  3. 3» Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß bei Aufnahme eines Datensatzes zunächst seine Adresse oder die Adresse
    109827/1737
    PO 9-69-061 - 26 -
    seines Schlüssels in die der letzten Eintragung folgende freie Position der ersten Tabelle eingegeben und die Index-Eintragung zur Bezeichnung dieser Position in die der ersten Eintragung vorangehende Position der zweiten Tabelle eingegeben wird, daß durch einen Suchvorgang- in der
    die
    zweiten Tabelle die Position bestimmt wird, in derWieue Index-Eintragung zur Erreichung der richtigen Sortierfolge gespeichert werden muß, daß die Index-Eintragungen in dieser und allen vorangehenden Positionen um einen Platz verschoben werden und daß die neue Index-Eintragung in die so ermittelte und freigemachte Position eingegeben wird.
  4. 4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Verschiebung der Index-Eintragungen in der zweiten Tabelle vor dem Einsetzen der neuen Index-Eintragung in Richtung des Tabellenanfangs erfolgt,
  5. 5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, ψ daß der Suchvorgang durch direkten Zugriff zu den den Index-Eintragungen entsprechenden gespeicherten Schlüsseln und durch Vergleich dieser Schlüssel mit dem Schlüssel des neuen Datensatzes erfolgt.
  6. 6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß zur Ausführung des Suchvorganges eine Anzahl Bits in einem Register gespeichert wird, die die Zahl der Index-Einträge in der zwei-
    1 D9827/ 1737
    PO 9-69-061 - 27 -
    !62i65
    ten Tabelle darstellen, daß der Inhalt des Registers um eine Stelle verkürzt wird, daß ein Zugriff in der ersten Tabelle zu der Adresse erfolgt, deren Index durch den neuen Inhalt des Registers angegeben wird, daß mit dieser Adresse ein Zugriff zu dem zugeordneten Schlüssel erfolgt, daß dieser Schlüssel mit dem Schlüssel des neuen Datensatzes verglichen wird, ob er niedriger, gleich oder größer als dieser ist, wobei im Falle einer Niedriger-Anzeige eine erneute Stellenverkürzung des Registerinhaltes und eine Wiederholung der Zugriffs- und Vergleichsoperationen erfolgt, im Falle einer Gl eich-Anzeige der Index des neuen Schlüssels in der zweiten Tabelle auf eine Position eingeschrieben wird, die auf die Index-Eintragung des durch die Vergleichsoperation ermittelten Schlüssels folgt, und daß im Falle einer Größer-Anzeige der Inhalt des Registers von der Zahl der verbleibenden Index-Einträge in der zweiten Tabelle subtrahiert und das Resultat als neue Anzahl der noch zu durchsuchenden Einträge in das Register eingeschrieben wird.
  7. 7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß im Falle einer Größer-Anzeige vor oder nach der Subtraktion des Registerinhaltes von der Zahl der verbleibenden Index-Eintragungen eine Anfangsadresse des Teils der zweiten Tabelle, der zuletzt durchsucht wurde;, zum Inhalt des Registers addiert wird.
    109827/1737
    ßAD
    PO 9-69-061 - 2« -
  8. 8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß bei Vorliegen eines Null-Inhaltes im Register eine Anzeige erfolgt, wenn der als letzter den Zugriffs- und Vergleichsoperationen unterzo-
    zugeordnet gene Schlüssel der ersten Index-E int ragung in der zweiten Tabeller ist, und daß hierauf eine Anzeige der richtigen Abspeicherung der neuen Index-Eintragung erfolgt, wenn deren Schlüssel gleich oder kleiner als der Schlüssel der ersten Index-Eintragung ist.
  9. 9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß nach Aufnahme der Adressen und der Index-Eintragungen sämtlicher zu sortierender Datensätze in die beiden Tabellen mit deren Hilfe die Datensätze oder deren Schlüssel in der geordneten Reihenfolge einem Speicher entnommen und auf ein Ausgabemedium übertragen werden.
  10. 10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß nach Aufnahme der Adressen und der Index-Eintragungen sämtlicher zu sortierender Datensätze in die beiden Tabellen zunächst mit Hilfe der zweiten Tabelle alle Adressen aus der ersten Tabelle sortiert auf ein Zwischenmedium übertragen werden und daß danach mit Hilfe der sortierten Adressen alle Datensätze oder deren Schlüssel in sortierter Reihenfolge auf ein Aus gabemedium übertragen werden.
  11. 11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet,
    109 827/1737
    PO 9-69-061 - 2.9 -
    daiS bei Erreichen einer vorgegebenen Maximalanzahl von Eintragungen in den beiden Tabellen jeweils der der Index-Eintragung am Anfang der zweiten Tabelle entsprechende Datensatz mit dem niedrigsten Schlüssel und/oder seine Adresse auf ein Ausgabemedium übertragen werden, um in den Tabellen je eine Position für die Adresse und die Index-Eintragung des nächsten einzusortierenden Datensatzes freizumachen.
  12. 12. Anordnung zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 11, gekennzeichnet durch eine Anzahl Hilfsregister (31) zur Speicherung von Konstanten und zur Verwendung als Arbeitsregister, durch mindestens eine Verarbeitungs einrichtung (38) zum Addieren/Subtrahieren, Verschieben und Vergleichen der Inhalte der Hilfsregister, durch Torschaltung en (32 bis 37) zur wahlweisen Kopplung des Hauptspeichers einer Datenverarbeitungsanlage, der Verarbeitungseinrichtung und einzelner Hilfsregister und durch eine Steuereinrichtung (30) zur Auswahl einzelner Hilfsregister und zur Steuerung der Torschaltungen und der Verarbeitungs einrichtung.
    109827/17 37
    PO 9-69-061 - 30 -
DE19702062165 1969-12-24 1970-12-17 Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen Pending DE2062165A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US88797969A 1969-12-24 1969-12-24

Publications (1)

Publication Number Publication Date
DE2062165A1 true DE2062165A1 (de) 1971-07-01

Family

ID=25392264

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19702062165 Pending DE2062165A1 (de) 1969-12-24 1970-12-17 Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen

Country Status (6)

Country Link
US (1) US3611316A (de)
JP (1) JPS5028306B1 (de)
DE (1) DE2062165A1 (de)
FR (1) FR2073125A5 (de)
GB (1) GB1277852A (de)
NL (1) NL7018085A (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4210961B1 (en) * 1971-10-08 1996-10-01 Syncsort Inc Sorting system
US3781808A (en) * 1972-10-17 1973-12-25 Ibm Virtual memory system
FR2226078A5 (de) * 1973-04-13 1974-11-08 Sodema
US4520456A (en) * 1983-02-18 1985-05-28 International Business Machines Corporation Dual reciprocating pipelined sorter
CA1265623A (en) * 1987-06-11 1990-02-06 Eddy Lee Method of facilitating computer sorting
US5247688A (en) * 1988-10-14 1993-09-21 Ricoh Company, Ltd. Character recognition sorting apparatus having comparators for simultaneous comparison of data and corresponding key against respective multistage shift arrays
AU5265290A (en) * 1989-03-14 1990-10-09 Kabushiki Kaisha Dainichi Data retrieval device and data editing apparatus using this device
US5261090A (en) * 1990-06-12 1993-11-09 At&T Bell Laboratories Search arrangement adapted for data range detection
DE69232425T2 (de) * 1991-07-10 2002-10-10 Hitachi Ltd Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu
US5355478A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for avoiding cache misses during external tournament tree replacement sorting procedures
US5551018A (en) * 1993-02-02 1996-08-27 Borland International, Inc. Method of storing national language support text by presorting followed by insertion sorting
JP2526802B2 (ja) * 1993-09-28 1996-08-21 日本電気株式会社 配列処理方式
US5678039A (en) * 1994-09-30 1997-10-14 Borland International, Inc. System and methods for translating software into localized versions
US5926815A (en) * 1995-07-27 1999-07-20 James, Iii; J. Colin Binary sort access method and apparatus
US5809501A (en) * 1996-01-30 1998-09-15 Telefonaktiebolaget L M Ericsson (Publ) Method and system of database management in an asynchronous transfer mode (ATM) environment
US5884297A (en) * 1996-01-30 1999-03-16 Telefonaktiebolaget L M Ericsson (Publ.) System and method for maintaining a table in content addressable memory using hole algorithms
AU5321998A (en) * 1996-11-15 1998-06-10 Michael Schindler Computer sorting system for data compression
US6088701A (en) * 1997-11-14 2000-07-11 3Dfx Interactive, Incorporated Command data transport to a graphics processing device from a CPU performing write reordering operations
US6178414B1 (en) * 1997-12-16 2001-01-23 Nortel Networks Limited Method and apparatus for updating and searching an ordered list of values stored within a memory resource
IL136297A0 (en) * 2000-05-22 2001-05-20 Hywire Ltd The implementation of a content addressable memory using a ram-cell structure
WO2003026308A2 (de) * 2001-09-14 2003-03-27 Siemens Aktiengesellschaft Verfahren und vorrichtung zur verbesserten codierung und decodierung von videosignalen
ATE368901T1 (de) * 2003-08-27 2007-08-15 Sap Ag Weiterleiten von änderungen in einer datenbank
WO2014109109A1 (ja) * 2013-01-11 2014-07-17 日本電気株式会社 インデックスキー生成装置及びインデックスキー生成方法並びに検索方法
CN113961477A (zh) * 2020-07-20 2022-01-21 科尔奇普投资公司 二进制搜寻的方法和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3015089A (en) * 1958-11-03 1961-12-26 Hughes Aircraft Co Minimal storage sorter
US3311892A (en) * 1963-09-30 1967-03-28 Gen Precision Inc Sorting system with two-line sorting switch
US3399383A (en) * 1965-07-26 1968-08-27 Philip N. Armstrong Sorting system for multiple bit binary records

Also Published As

Publication number Publication date
JPS5028306B1 (de) 1975-09-13
US3611316A (en) 1971-10-05
NL7018085A (de) 1971-06-28
GB1277852A (en) 1972-06-14
FR2073125A5 (de) 1971-09-24

Similar Documents

Publication Publication Date Title
DE2062165A1 (de) Verfahren und Anordnung zum Sortieren oder Mischen von Datensätzen
DE1499193C3 (de) Speicher-Adressierschaltung
DE2339636C2 (de) Einrichtung zur Adressierung eines schreibbaren Mikroprogrammspeichers
DE1901343C3 (de) Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen
DE1524099A1 (de) Verbessertes Kontroll- und Anzeigegeraet
DE2521436B2 (de) Informationswiedergewinnungsanordnung
DE1931966A1 (de) Elektronische Datenverarbeitungsanlage
DE3327379A1 (de) Einrichtung und verfahren zum umordnen von datensaetzen
DE2310631B2 (de) Speicherhierarchie fur ein Datenverarbeitungssystem
DE1190706B (de) In zwei abwechselnden Zyklen arbeitende programmgesteuerte elektronische digitale Rechenmaschine
DE2221442A1 (de) Assoziativspeicher
DE1180171B (de) Zahlenrechner
DE1474376A1 (de) Verfahren und Anordnung zum schnellen Zugriff bei grossen seriellen Speichern
DE2556357A1 (de) Adressiereinrichtung
DE2403039A1 (de) Verfahren zur adressenerweiterung einer elektronischen digitalrechenanlage
DE1549399A1 (de) Verfahren und System zur grafischen Aufzeichnung von Kurvenzuegen
DE2217565A1 (de) Steuerteil eines Rechenautomaten, der die relative Basisadresse von Befehlen bildet
DE2519195A1 (de) Assoziativspeicher
DE2527236C3 (de) Anordnung zum Einsetzen von Daten in ein Register
DE1499284A1 (de) Datenbearbeitungsanlage
DE2022921A1 (de) Verarbeitungseinheit fuer Buchungsmaschinen
DE1524006B2 (de) Vorrichtung zum erhoehen der informationsuebergaberate eines speichers
DE2150292C2 (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage mit überlagerter Ausführung und Entnahme von Befehlen
DE1549528A1 (de) Digitale Rechenanlage
DE1424756B2 (de) Schaltungsanordnung zum fehlergesicherten Einführen oder Wiedereinführer, von Programmen in den Hauptspeicher einer datenverarbeitenden Anlage

Legal Events

Date Code Title Description
OHN Withdrawal