TWIST - Die Datenbank der neuen Art

Zweifelsohne gibt es bereits einige Datenbanken im ATARI-Markt. „Warum bringt MAXON dann eine weitere heraus?", stellte sich die erste Frage. „TWIST ist einfach anders," sagte der MAXON-Mann, „drei Grundsätze waren den TWIST-Entwicklern wichtig: Bedienungsfreundlichkeit, Flexibilität und Geschwindigkeit". Wir haben das Produkt diesbezüglich unter die Lupe genommen.

Das Handbuch. Der Teil eines jeden Produktes, der von vielen zunächst gerne beiseite gelegt wird. Hier wäre das ein Fehler, denn obwohl man TWIST auch ohne Handbuch recht gut bedienen kann, gibt es doch viele Hinweise, wie man mit ihm gut und effektiv arbeiten kann. Es ist immerhin 300 Seiten stark und erscheint gleich auf den ersten Blick sehr übersichtlich. Der Datenbankprofi sieht gleich, was er sich im Handbuch ersparen kann und was wichtig ist. Auch der unerfahrene Datenbankbenutzer findet, wonach ihn gelüstet. Sehr ausführlich werden Beispiele durchgearbeitet, die das spätere Arbeiten sehr erleichtern. Das Handbuch ist zumindest schon mal als sehr bedienerfreundlich zu bezeichnen.

Die ersten Schritte

Als erstes muß man sich ein wenig Zeit, ein paar Zettel, einen Kugelschreiber und einen Kaffee nehmen. Dann sollte man sich ein grobes Konzept erstellen - was man überhaupt mit der Datenbank anfangen möchte. Bei diesem Test soll eine kleine Adreßverwaltung entstehen. Einfach nur Anrede, Name, Straße und Ort eingeben. Vielleicht eine Adreßdatei importieren. Mal sehen, was sich machen läßt.

Zur Installation wird ein kleines Programm mitgeliefert, das neben den eigentlichen Programmdateien auch ein im Lieferumfang enthaltenes GDOS auf der Festplatte installiert.

Let's do the TWIST

Die Benutzeroberfläche von TWIST erscheint im ersten Moment sehr spartanisch. Drei Icons am Rand und eine kleine Menüleiste sind alles, was zu sehen ist. Aber wie so oft im Leben kommt's dann doch dicker als man denkt!

Anstatt eine der Demodatenbanken zu benutzen, wollen wir eine eigene kreieren. Um ein neues Datensatzfeld zu erstellen, klickt man einfach den Button „Neu" an. Sofort erscheint eine Dialogbox, in der man ein Datensatzfeld definieren kann. Es kann entweder ein Text, eine Zahl, eine Ganzzahl ohne Nachkommastellen oder ein Datum definiert werden. Jedem Feld kann man einen INDEX zuweisen (wichtig für Relationen und zum schnellen Suchen) oder festlegen, ob es editierbar sein soll oder nicht. Ein nicht editierbares Feld kann durchaus sinnvoll sein, z.B. wenn darin das Ergebnis einer Berechnung eingetragen wird, das man selbstverständlich nicht einfach ändern darf. Ebenso läßt sich einstellen, daß ein Feld nach einmaliger Eingabe nicht mehr geändert werden darf oder daß der Anwender zur Eingabe gezwungen wird. Auch Kombinationen sind hier möglich.

Um zu verhindern, daß in einem Feld irgend etwas Unsinniges eingegeben wird, kann man eine Gültigkeit definieren. Hier wird eine Formel definiert, welche die Eingabe bestimmten Grenzen unterwirft. Zum Beispiel kann man festlegen, daß eine Zahl nicht größer sein darf als 100000. Sollte bei der Eingabe dann eine größere Zahl eingegeben werden, bringt TWIST automatisch eine Fehlermeldung, und die Eingabe muß erneut erfolgen. Auf diese Art lassen sich auch Fehleingaben einschränken. Das nächste Dialogfeld nennt sich „Berechne". Wie der Name sagt, kann man hier Berechnungen durchführen. Dies geschieht ähnlich wie bei der Gültigkeit. Jedoch wird hier der Wert berechnet, der eingegeben wurde. Man kann den Wert mit festen Konstanten wie zum Beispiel der Mehrwertsteuer (Wert* 1,15) oder zahlreichen anderen Funktionen verrechnen.

Neben den Grundrechenarten.+,-,*,/stehen auch logische Operatoren, bedingte Ausführung (z.B. wenn,Firma' und Rechnung älter 14 Tage', dann ,Mahnung'), Typumwandlungen zwischen Text, Zahl und Datum, String-Funktionen (Mid$, Len, FillStr ...) sowie weitere nützliche Funktionen wie z.B. das automatische Einsetzen des aktuellen Datums zur Verfügung. Die Felder können nach dem Erstellen der Datenbank jederzeit verändert, gelöscht oder erweitert werden. Auch bei mehreren tausend Datensätzen geht das sehr, sehr schnell und vor allem, ohne die Datenbank erst verlassen zu müssen. Die Benutzerführung ist übrigens sehr einfach gestaltet. Man hat sich sehr eng an die GEM-Richtlinien gehalten.

So, der Datensatz wäre definiert. TWIST erzeugt nun eine Standardmaske, mit der man arbeiten kann. Die Verfeinerung der Maske wäre der nächste Schritt. Der „Grundsatz" der Flexibilität und Bedienerfreundlichkeit ist beim Erstellen der Datenbank erfüllt.

Optik der Maske

Im Beispiel sehen wir eine kleine Adreßverwaltung, die bereit ist, Daten zu empfangen. Um das Aussehen der Maske etwas zu verbessern, muß man die Programmfunktion „Maske ändern" im Datenbankfenster aufrufen. Es erscheint das Fenster „Ändere Maske" mit den einzelnen Datensatzfeldern.

In den Hintergrund kann man eine Box legen, welche man mit verschiedenen Mustern füllen kann. Auch die Farbe ist einstellbar, wenn man ein Farbsystem zur Verfügung hat. Umrandungen und Schatten lassen sich bequem einbauen. Mit der Maus kann man die einzelnen Felder positionieren. Eine Snap-Funktion ist dabei sehr behilflich. Man kann auch einfach ein Bildchen im IMG-Format einfügen, wenn man das möchte. In unserem Falle haben wir einfach ein Feld mit Disketten eingefügt, um die Maske ein wenig aufzulockern. Dann noch eine Überschrift, ein paar Rahmen darum - fertig. Das ging wirklich einfach!

Doch halt, wir können ja noch dank des beigefügten GDOS die Zeichensätze einsetzen. Unterstützt werden alle dem System zur Verfügung stehenden Zeichensätze, also auch die neuen SPEEDO-Vektor-Fonts. Wer bereits ein GDOS installiert hat (z.B. NVDI), findet die dort eingestellten Fonts auch in TWIST wieder.

Außer zur Betitelung der Felder können die Zeichensätze auch innerhalb der Datenfelder benutzt werden. Gerade hier machen sich proportionale Schriften besonders gut, denn sie sehen zum einen wesentlich ansprechender aus als die normale unproportionale Schrift, und zum anderen passen mehr Buchstaben in ein Feld. Sollte es in einem Eingabefeld trotzdem einmal zu eng werden, wird der Inhalt gescrollt. Damit lassen sich auch lange Texte kompakt verwalten.

Eine weitere nützliche Eigenschaft des Maskeneditors ist die Festlegung der Reihenfolge, in der der Cursor bei der Eingabe läuft.

Es ist ebenfalls möglich, sogenannte Radioknöpfe und Schalter in die Masken einzufügen. Diese sind möglicherweise bei Eingaben von Daten hilfreich, die nur die Zustände „Wahr" oder „Falsch" kennen. Zum Beispiel könnte man in der Adreßmaske noch zwei Radioknöpfe für das Geschlecht einfügen. Entweder männlich oder weiblich, nur ein Radioknopf darf aktiv sein (bei Uneindeutigkeit läßt sich auch schnell ein dritter Knopf hinzufügen - die Firma).

Man kann auch ein kleines Auswahlmenü zur Verfügung stellen. Dort hinein könnte man immer wiederkehrende Begriffe zum Anklicken legen. Beispielsweise könnte man hier angeben, ob es sich um einen Kunden, einen Lieferanten oder einen Mitarbeiter handelt.

Der TWIST-Maskeneditor erinnert stark an ein Recource-Construction-Set, in aller Konsequenz. Alles in allem ist dieser Maskeneditor einfach und schnell bedienbar. Das Beispiel auf der Abbildung ist wirklich sehr einfach gehalten und in nicht ganz zehn Minuten entstanden, was für TWIST spricht.

Datenim- und -export

Jetzt ist es geschafft, man kann Daten eingeben. Das ist noch die leichteste Übung. Wir wollen uns auch nicht damit aufhalten zu erkären, wie eine Adresse eingegeben wird. Vielmehr sollten Sie erfahren, daß man auch schon vorhandene Daten übernehmen kann. Als Beispiel benutzen wir eine Adreßdatei, die übernommen werden soll. Die Datei liegt im ASCII-Format vor. Jedes Datensatzfeld ist abgetrennt, der komplette Datensatz mit zwei Linefeeds. Mal sehen, was uns TWIST daraus zaubert. Es waren knapp 3000 Adressen, die TWIST innerhalb von drei Minuten importierte. Ansprechend schnell, und das auf einem 68000er mit langsamer Festplatte (der gleiche Import lief auf einem TT mit SCSI-Platte in 20 Sekunden). Durch die „intelligente" Importfunktion brauchte man nur wenige Mausklicks, bis TWIST das Datensatzformat erkannt hatte und selbsttätig einen Vorschlag vorlegte, wie die Daten in die vorher erstellte Maske importiert werden sollten.

Man hatte nicht mal Zeit, einen Kaffee zu trinken, so schnell ging der Import vonstatten. Bei etwas komplexeren Daten, die mit numerischen Feldern und möglicherweise mit einigen fehlerhaften Datensätzen besetzt sind, kann es auch etwas länger dauern, bis man die richtigen Importeinstellungen herausgefunden hat. Man kann diese Einstellungen abspeichern, falls man regelmäßig Daten übernehmen möchte. Dann braucht man nur noch die richtige Importdefinition zu laden, und schon geht' s los.

Der Export von Daten gestaltet sich ähnlich wie der Import. Man kann das Exportformat, die zu exportierenden Felder und deren Reihenfolge definieren und dann loslegen. Alle Einstellungen hierzu lassen sich ebenfalls sichern.

Eingeben und Ändern

Wenn man eine Datenbank erstellt hat, ähnlich der vorher beschriebenen Adreß-datenbank, kann man natürlich eigene Daten eingeben und ändern. Als Beispiel nehmen wir die mitgelieferte Kundendatenbank, die mit Musterbeispielen belegt ist. Mit dem Menüpunkt „Neu" kann man einen neuen Datensatz einfügen. Das geschiebt im Datensatzmodus. Das Ändern von Daten ist im Listenmodus etwas praktischer, da man dort einen sehr guten Überblick über die eingegebenen Daten hat. Man kann mit der Maus oder mit den Cursor-Tasten einen Datensatz auswählen. TWIST springt dann in den Datensatzmodus, um die Änderungen entgegenzunehmen. Man hat die Möglichkeit, im Listenmodus auch mehrere Datensätze auszuwählen und zu markieren - zum Löschen oder Ausdrucken beispielsweise. In der Eingabemaske selbst ist die Eingabe GEM-gesteuert, d.h. alle Felder werden vom Cursor angesprungen oder können mit der Maus angeklickt werden. Alle wichtigen TWIST-Funk-tionen sind durch Tastaturkommandos erreichbar. Auf diese Weise kann man sehr schnell und effizient arbeiten.

Suchen

Ein wichtiger Teil der Datenbank ist die Suchfunktion. TWIST bietet die QBE(Query by Example)-Methode (Suchen nach Beispiel) oder die Freitextsuche. Letztere ermöglicht das Suchen nach einem Textbruchstück innerhalb des gesamten Datensatzes und ist sehr praktisch, wenn man z.B. nicht genau weiß, in welchem Feld etwas steht. Die QBE-Metho-de hingegen verlangt die Eingabe eines Suchbegriffs in dem entsprechenden Datenfeld, wobei auch hier natürlich nur nach einem Bruchstück gesucht werden kann. Ferner ist die kombinierte Suche erlaubt, also z.B. eine 'Frau' 'Müller' in der Postleitzahlgegend '8000', die Ihren Jahresbeitrag noch, nicht bezahlt' hat. Die Information über das Geschlecht und gezahlt', würde dann auch beim Suchen per Anklicken eines Knopfes eingegeben. Suchbegriffe lassen sich mit einem Namen versehen und abspeichern (z.B. unter 'Münchener' oder, nicht bezahlt'. Sie stehen dann in jedem Programmteil von TWIST zur Verfügung.

Geschwindigkeit

Heutzutage wird die Geschwindigkeit einer Datenbank hoch gehandelt. Verständlich, denn wer will schon ewig lange auf ein Ergebnis warten? TWIST schlägt sich in diesem Punkt hervorragend. Selbst bei 10000 Datensätzen wird ein Feld in weniger als einer Sekunde gefunden. Man muß dazu bemerken, daß diese Zeit natürlich sehr stark von der Geschwindigkeit der Festplatte abhängt, denn TWIST verwaltet prinzipiell alle Daten auf Festplatte. Dennoch zeigt sich kaum ein Geschwindigkeitsunterschied zu Programmen, die alle Daten im RAM halten. Bei solchen ,kleineren' Datenmengen bietet TWIST nämlich die Möglichkeit, alle Daten zusätzlich im RAM zu halten (auch Daten-Cache genannt). Dazu muß allerdings genügend freier Speicher vorhanden sein. Damit nutzt TWIST jede Möglichkeit zur Geschwindigkeitsoptimierung ohne Beschränkung durch die RAM-Größe. Da TWIST alle Daten (auch die Indexdateien) auf Platte hält, führt auch ein Reset des Rechners nicht zum Datenverlust und macht auch keine Reorganisierung der Datenbank beim nächsten Start notwendig.

Auswertung von Daten

Keine Datenbank macht Sinn, wenn man die Daten nicht ordentlich auswerten kann. TWIST bietet dafür eine sehr ausführliche Methode. Mit der Report-Funktion lassen sich alle Datensatzfelder, die in der aktuellen Datenbank (und auch in anderen TWIST-Datenbanken) belegt sind, auswerten und auf einen Drucker, den Bildschirm oder auf eine Datei ausgeben. Die Handhabung dieser Funktion ist, wie in TWIST üblich, wieder grafisch gelöst; Klick und Drag&Drop sind angesagt. Zum Ausdrucken einer Adreß-liste zum Beispiel kann man erst einen Kopftext einsetzen, der einmalig am Anfang der Seite ausgegeben wird. Dann kann man frei die einzelnen Datensatzfelderpositionieren. Man setzt sich sozusagen grafisch ein Ausgabeformat zusammen. Das ist sehr hilfreich, wenn man die Daten als Formulare ausgeben möchte. Mit wenigen Mausklicks kann man Datensatzfelder hin- und herschieben, wie man sie braucht. Man kann beliebig Leerzeilen einfügen und Zwischenräume lassen.

Neben der reinen Datensausgabe können innerhalb des Reports auch statistische Berechnungen ausgeführt werden, z.B. die Ermittlung von Mittelwert, Standardabweichung, Minimum/Maximum oder einfach nur die Bildung einer Summe. Solche Berechnungen bietet TWIST entweder am Ende des Reports oder vor und nach einer Gruppe. Eine Gruppe wird von dem Inhalt eines Feldes bestimmt, nehmen wir zum Beispiel das PLZ-Feld. TWIST findet zunächst die PLZ 1000, listet alle Kunden in Berlin auf und bildet am Ende dieser Gruppe die Summe aller Kunden in Berlin. Man könnte jetzt innerhalb dieser PLZ-Gruppe noch eine weitere bilden, z.B. das Geschlecht. Jetzt könnte man sich eine Auswertung generieren lassen über die Kundenverteilung in ganz Deutschland.

Auch wenn das auf den ersten Blick recht kompliziert klingen mag, mit Hilfe der grafischen Art der Bedienung und anschaulichen Beispielen im Handbuch beherrscht man auch diesen TWIST-Teil schnell. Insgesamt erweist sich die Report-Funktion als sehr praktisch und mächtig. Man kann behaupten, daß dies eine der wichtigsten TWIST-Funktionen ist.

Datenausgabe auf Drucker

Der Ausdruck der Daten war recht einfach und gestaltete sich problemlos. Ausgegeben wurde auf einem SLM-Laserdrucker von ATARI. Aber auch beim 24-Nadler, der gerade beim Etikettendruck wegen der Endlosoption geschätzt ist, waren die Ergebnisse tadellos. Sicher ist es vom Drucker abhängig, was letztendlich herauskommt, aber die mitgelieferten Treiber decken alle gängigen Drucker ab: 9-Nad-ler, 24-Nadler, HP-kompatible Laser- und Tintenstrahldrucker sowie den ATARI-Laser.

Praktisch ist daher auch das einfache Einstellen eines Seiten-Layouts. Die Abbildung zeigt die Maske, durch die man Seiteneinstellungen für die Druckausgabe vornehmen kann - ohne viel Schnickschnack und leicht verständlich. Der Druck läuft grundsätzlich zunächst intern in eine Datei und wird von dort über die TWIST-Druckerschlange gedruckt. Der Vorteil: der Druck läuft im Hintergrund ab (auch ohne Multitasking-System), und man kann währenddessen ungehindert weiterarbeiten.

Updaten von Dateien

Die Update-Funktion von TWIST dient dazu, schon eingegebene Datenfelder komplett in der Datenbank zu ändern, sozusagen ein „Suchen & Ersetzen", das nicht nur auf ein Feld wirkt. Beispielsweise möchte man seine Adressen auf die neuen Postleitzahlen umstellen. Hierzu ist eine Änderung des Länderkennzeichens, der Postleitzahl und der Ortsbezeichnung notwendig, also von drei Feldern.

In TWIST kann man Datenfelder nach bestimmten Kriterien ändern, indem man eine Formel eingibt. Dann läßt man die Update-Funktion durchlaufen, und automatisch werden alle die Felder geändert, auf die die Kriterien zutreffen. Durch die mächtigen Möglichkeiten, die TWIST bietet, kann man durchaus auch kompliziertere Berechnungen bei einem Update durchführen. Gerade bei einem Datenimport aus anderen Datenbanken kann man noch erheblich an den Daten manipulieren. Das ganze erinnert etwas an die Programmiersprache BASIC; ohne Handbuch ist man hier verloren, aber man lernt recht schnell, damit umzugehen.

Der Editor

Der eingebaute Editor von TWIST erweist sich als sehr sinnvoll, denn hiermit kann man - ohne ein externes Textprogramm zu benötigen - direkt einen Brief mit Daten füllen lassen oder einen Serienbrief anfertigen. Der Editor arbeitet auch mit einem proportionalem GDOS -Font und bietet die notwendigen Funktionen zum Erstellen von mehrseitigen Dokumenten. Beim Druck wird allerdings auf die eingebauten Druckerzeichensätze zurückgegriffen. Laut Aussagen des Herstellers wurde auf Druck mit GDOS-Fonts aus Geschwindigkeitsgründen verzichtet. Durch die beigefügten Druckertreiber kann man jedoch zu dem Drucker-Font einen passenden Bildschirm-Font wählen und somit einen annähernden WYSIWYG-Eindruck erhalten.

Die Leistungen des Texteditors sind nicht mit denen einer heutigen Textverarbeitung zu vergleichen. Für seinen Zweck, nämlich Serienbriefe und keine wissenschaftlichen Arbeiten zu erzeugen, sind die Funktionen zweckmäßig, obwohl er nicht der Qualität der Datenbank selbst entspricht. Ein integrierter Texteditor in einer Datenbank dürfte aber trotzdem einmalig sein.

Für höhere Ansprüche kann man auf sein gewohntes Textsystem zurückgreifen und auf einfache Art Daten von TWIST in das Textsystem übertragen. Das geschieht bei einem einzelnen Brief z.B. über das Clipboard, denn TWIST kann einen Report, der in diesem Fall die gewünschten Daten eines angewählten Feldes enthält, auch direkt auf das Clipboard lenken. Durch die Rechenfunktionen des Reports kann man sich hier z.B. auch die Anrede berechnen lassen.

Der Datenaustausch für einen Serienbrief läuft ebenfalls über einen Report, denn damit lassen sich die Daten genauso aufbereiten, wie es das jeweilige Textprogramm benötigt. Entsprechende Beispiele sind für Tempus Word, Cypress, papyrus, That's write und Script enthalten. Mit wenigen Mausklicks ist aber auch jedes andere serienbrieffähige Textsystem angepaßt. In der Praxis sieht das dann so aus: die entsprechenden Daten auswählen, Taste drücken (ein Report läßt sich nämlich auf eine Taste legen). Jetzt muß man nur noch die Serienbrieffunktion des Textprogramms auslösen und von dort aus drucken.

Eine weitere Hilfe ist die praktische Benutzeroberfläche von TWIST, die man selbst gestalten kann. Jede Datenbankdatei, Textdatei, Updates, Im- und Exports kann man als Icon auf dem TWIST-Desk-top ablegen. Sogar andere Programme lassen sich hier ablegen und direkt aus TWIST heraus starten.

GDOS, Speedo, MultiTOS

Das mitgelieferte GDOS ist nur eine Grundversion. Man braucht es nicht unbedingt, aber es ist empfehlenswert. Am besten, man verwendet ein AMC-GDOS, NVDI oder das neue Speedo. Gerade beim Erstellen von Bildschirmmasken ist das eine sehr große Hilfe. Man kann mit verschiedenen Schriftarten in unterschiedlichen Größen arbeiten, was optisch ansprechende Bildschirmmasken ergibt. TWIST arbeitet auch mit MultiTOS zusammen, was gerade den Besitzern von TTs und Falcons entgegenkommt.

Relationen in TWIST

TWIST ist eine „Relationale" Datenbank. Relationen sind Datensatzverbindungen zwischen mehreren verschiedenen Dateien. Relationen spielen bei Reports und Updates eine Rolle. Damit kann man sich Informationen, z.B. die Anschrift, aus einer anderen Datenbank heraussuchen lassen. Auch bei einem Update läßt sich die Funktion prima einsetzen. So kann man damit in einer zweiten Datenbank etwas suchen und es in die Hauptdatenbank hineinschreiben. Hat man in seiner Hauptdatenbank z.B. nur die Postleitzahl, aber nicht den Ort (kann ja nach einem Import leicht passieren), kann man über ein Update aus der zweiten Datenbank den Ort ergänzen lassen.

Leider kommen diese Relationen nicht direkt bei der Dateneingabe zum Tragen, sondern erst nach dem Update. Ein Warenwirtschaftssystem ist mit TWIST dadurch z.B. nicht gut realisierbar. Jedoch lassen sich sehr einfach Serienbriefe mit Relationen erstellen.

TWIST läßt sich durch Umbenennen von .PRO in .ACC auch als Accessory benutzen. Das einzige, was hierbei eingespart wird, ist die TWIST-Oberfläche. Aber darauf verzichtet man gerne, wenn man dafür aus jedem GEM-Programm heraus TWISTen kann. Im Accessory-Betrieb kann man jede Programmfunktion von TWIST nutzen, auch das Erstellen von neuen Datenbanken.

Das letzte Wort

Was hatte der MAXON-Mann gleich noch gesagt? „Flexibel, bedienerfreundlich, schnell". Zweifelsohne trifft das zu. Das Arbeiten mit TWIST hat enorm Spaß gemacht, und aufgrund der vom Programm nicht gebotenen Kaffeepausen ist das zu Beginn eingeschenkte Getränk inzwischen kalt geworden. Ideen und Wünsche gibt es zwar noch, doch bei welcher Software gibt es das nicht? Bleibt nur noch zu fragen, für wen TWIST geeignet ist.

TWIST ist für alle geeignet, die damit nicht gleich ein Warenwirtschaftssystem betreiben wollen. Durch die enorme Bedienerfreundlichkeit beim Erstellen von Masken und Datenfeldern ist auch ein Einsteiger nicht überfordert. TWIST arbeitet auch bei Dateien mit mehreren Megabyte noch sehr zügig und zuverlässig. Alles in allem ist TWIST eine wirkliche Bereicherung der Datenbanksparte für den ATARI. TWIST kostet 298 DM. Dafür bekommt man mehr als genug für sein Geld.

Aus presserechtlichen Gründen sind wir zu folgendem Hinweis verpflichtet: MAXON Computer als Herausgeber dieser Zeitschrift ist gleichzeitig Vertrieb des beschriebenen Programmes TWIST.

Twist

Positiv:

einfache Bedienung
sehr schnelle Datenverwaltung
intelligente Importfunktion
integrierter Texteditor

Negativ:

kein GDOS-Druck
keine Programmiersprache



Aus: ST-Computer 08 / 1993, Seite 12

Links

Copyright-Bestimmungen: siehe Über diese Seite