RZ-News April 97


Titelblatt

IMPRESSUM

Herausgeber: Prof. Dr. Adolf Schreiner
Redaktion: Ursula Scheller, Klaus Hardardt
Erscheinungszeitraum: monatlich
Tel.: 0721/608-4865
Email: scheller@rz.uni-karlsruhe.de, hardardt@rz.uni-karlsruhe.de
Rechenzentrum der Universität Karlsruhe
Postfach 6980
Zirkel 2
76128 Karlsruhe
ISSN 1432-7015

INHALT

Schneller als fünf Milliarden Taschenrechner - neuer Supercomputer am Rechenzentrum
Leistung für Wissenschaft und Wirtschaft zugänglich

Wie der "Schwarzwald" ins RZ kam ...

Profiling von MPI1)-Programmen auf dem SP-Parallelrechner
Zusätzliche Bibliothek verfügbar

Anwendungssoftware
Raffinierte Grafiken und grafische Benutzeroberflächen mit dem Simulationsprogramm MATLAB
EnSight - das Nonplusultra im Postprocessingbereich - ab sofort allgemein verfügbar
Neu auf dem SP-Parallelrechner:IMSL Fortran 90 Library
SNI VPP 300 Benutzerhandbuch

Erstellen von Makros in Word für Windows
Bevor es so richtig los geht: die Dokumentvorlagen
Der Makrorecorder
Starten eines Makros
Eigene Makros schreiben mit dem Makro-Editor
Speichern von Informationen: Variablen in Makros
Informationen anzeigen
Informationen eingeben
Einfache Kontrollanweisungen

Kurz berichtet ...
Computerdiebe an deutschen Universitäten

Personalia


Schneller als fünf Milliarden Taschenrechner - neuer Supercomputer am Rechenzentrum


Leistung für Wissenschaft und Wirtschaft zugänglich


(red)

Nach der Genehmigung durch die Landesregierung am 10.3.1997 konnte der bereits vor einem Jahr gelegte Grundstock eines Hochleistungsparallelrechners IBM RS/6000 SP auf eine hochmoderne Großanlage in neuester Technologie im Wert von insgesamt 10,5 Mio. DM aufgestockt werden. Damit verfügt die Universität Karlsruhe über den leistungsfähigsten Rechner der Firma IBM in Europa.

256 einzelne Prozessoren, von denen jeder für sich eine Hochleistungs-Workstation darstellt, sind in dieser Maschine zu einer Gesamtanlage zusammengefaßt. Damit können beispielsweise komplexe Aufgaben innerhalb eines Tages gelöst werden, an denen eine einzelne dieser Hochleistungs-Workstations 256 Tage zu rechnen hätte, abgesehen davon, daß die meisten dieser groben Probleme in einer einzigen Workstation gar nicht untergebracht werden könnten.

Prof. Dr. Adolf Schreiner, Chef des Rechenzentrums, erläuterte  die enorme Leistungsfähigkeit anhand von Beispielen: So könnte beispielsweise  in den Speicher-Chips dieses Supercomputers spielend der Text einer Buchreihe von 4 km Länge untergebracht werden. Ein weiteres Beispiel: Würde man jeden Menschen dieser Erde mit einem Taschenrechner ausstatten und mit Höchstgeschwindigkeit 8-stellige Zahlen addieren oder multiplizieren lassen, so würde im Vergleich der Supercomputer diese Leistung einige 100 - 1000 mal schneller als die gesamte Menschheit erbringen.

Eingesetzt werden derartig große Computer heute als Labors, in denen man  neu konzipierte Pharmaka, Katalysatoren, Turbinenschaufeln etc. durchspielt und optimiert, wobei nur die am meisten erfolgversprechenden Varianten tatsächlich umgesetzt und physikalisch oder chemisch erprobt werden.

Da ein solcher Großrechner infolge der raschen technischen Entwicklung in wenigen Jahren wieder von anderen Modellen übertroffen wird, versucht man von Anfang an, ihn möglichst vielseitig zu nutzen. Aus diesem Grunde wird der Supercomputer auch vom Forschungszentrum Karlsruhe, das etwa 10 Prozent der Rechenprozessoren beigesteuert hat, über eine Hochgeschwindigkeitsleitung im Rahmen des Virtuellen Hochleistungsrechenzentrums Karlsruhe genutzt.

Die Universität Karlsruhe hat diesen Rechner auch in den Computerverbund der “HWW - Höchstleistungsrechner für Wissenschaft und Wirtschaft Betriebsgesellschaft mbH” eingebracht, deren Gesellschafter neben der Universität Karlsruhe, die Universität Stuttgart und die Firmen debis und Porsche sind. In diese GmbH ist auch die Leistung der Hochleistungsrechner der Universität Stuttgart sowie der Firmen debis und Porsche eingebunden und wird sowohl anderen Universitäten und Forschungeinrichtungen als auch der Wirtschaft über Datennetze angeboten.

Die Universität Karlsruhe hat mit der Installation dieser Anlage auch von der Rechenleistung her zur internationalen Spitze aufgeschlossen. Bereits vor einem Jahr hat sie sich mit den vorab installierten 100 Rechenprozessoren des IBM-Rechners im Softwarebereich in der internationalen Rechner-Community einen Namen gemacht: Und zwar mit dem nahtlosen Übergang von der Workstation am Arbeitsplatz zum Supercomputer, der durch die weltweit erste Installation des “Distributed File System” und dem “Distributed Computing Environment” auf einem IBM-Supercomputer per Mausklick möglich wurde. Nun ist sie zum engen Kooperationspartner der Firma IBM auf diesem Gebiet geworden.

Mit der Installation des Rechners wurde bereits in der Woche nach Ostern begonnen, der interne Betrieb wird Anfang Mai aufgenommen. In Anwesenheit des Wissenschaftsministers des Landes Baden-Württemberg, Klaus von Trotha, wird die Großanlage am 17. Juni eingeweiht und ab 1. Juli steht er dann  in vollem Umfang auch der Wirtschaft zur Verfügung.


Wie der "Schwarzwald" ins RZ kam ...

Helmut Kempermann/Ursula Scheller

"Black Forest" - das ist der Name, den die Mitarbeiter des Rechenzentrums ihrem neuen Superhirn wegen seiner schwarzen Farbe und der vielen Einzelkomponenten gegeben haben. Der Höchsleistungsrechner, der am 17. Juni feierlich eingeweiht wird, verfügt über eine Spitzenleistung von 110 Giga Flops, einen Hauptspeicher von 130 Giga Byte und eine Plattenkapazität von 2,1 Tera Byte.

Ankunft des "Black Forest" im RZ

... die neue Heimat des "Black Forest"

Der Oberförster der Betriebssystemgruppe freut sich
über den neuen Baumbestand

Waldarbeiter bei der Kontrolle des Unterholzes

Kurze Rast auf einer Lichtung

Nun wachse und gedeihe o Black Forest!


Profiling von MPI1)-Programmen auf dem SP-Parallelrechner


Zusätzliche Bibliothek verfügbar


Nikolaus Geers

Wesentlich für die effiziente Nutzung eines Parallelrechners ist die optimale Aufgabenverteilung auf die verschiedenen Tasks einer parallelen Applikation. Leider stellt das Parallel Environment der IBM RS/6000 SP dem Programmierer aber kaum Werkzeuge für die Untersuchung der Aufgabenverteilung zur Verfügung. Zwar kann die von den einzelnen Tasks verbrauchte CPU-Zeit sehr einfach mit den Kommandos time bzw. timex festgestellt werden, doch sagen die gemessenen Zeiten wenig darüber aus, ob die CPU-Zeit für die Kommunikation oder für Berechnungen verbraucht wurde.

Bei Programmen, die auf der SP in der Klasse p (Produktion) ausgeführt werden, stellt man in der Regel fest, daß alle Tasks in etwa die gleiche CPU-Zeit verbraucht haben. Dies kann zu dem Schluß verleiten, das eine optimale Lastverteilung vorliegt, daß also alle Tasks etwa gleichgroße Aufgaben gerechnet haben. Das muß allerdings nicht der Fall sein:  Da die Knoten der SP den Jobs der Klasse  p exklusiv zugeteilt werden, kann die CPU-Zeit auch für das Warten auf eine Botschaft von einer anderen Task verbraucht worden sein.

Um feststellen zu können, wie hoch der Anteil an der CPU-Zeit und der Realzeit ist, der in den MPI-Routinen verbraucht wurde, hat das RZ eine zusätzliche Bibliothek libtime_mpi.a im Verzeichnis /usr/segment/lib bereitgestellt, die diese Informationen liefert. Für die Benutzung dieser Library sind beim Aufruf der Compilerscripts mpxlf oder mpcc lediglich die zusätzlichen Optionen -L/usr/segment/lib -ltime_mpi anzugeben. Bei Beendigung des Programms, d.h. beim Aufruf von MPI_Finalize, wird dann für jede Task eine Übersicht ausgegeben, welche die in den MPI-Routinen verbrauchte Realzeit, User-CPU-Zeit und System-CPU-Zeit enthält. Ein Vergleich dieser Zeiten mit den von time bzw. timex gelieferten Werten gibt einen ersten Eindruck über die Aufgabenverteilung innerhalb der parallelen Applikation. Zusätzlich wird für jede parallele Task eine Ausgabedatei erzeugt, welche die oben genannten Zeiten sowie die Anzahl der Aufrufe für jede MPI-Routine enthält. Extrem hohe Zeiten für Send-, Receive- oder Wait-Routinen deuten darauf hin, daß eine ungünstige Aufgabenverteilung zwischen den parallelen Tasks vorliegt. Eine weiterführende Analyse des Programms kann nun unter Benutzung von prof oder gprof oder durch Erstellung eines Tracefiles und dessen Visualisierung mittels vt erfolgen.

N. Geers, Tel. -3755, Email: geers@rz.uni-karlsruhe.de.

1)Anmerkung der Redaktion:
Das Message Passing Interface (MPI) ist eine herstellerunabhängige Programmierschnittstelle zur Entwicklung paralleler Applikationen für Parallelrechner oder Workstation-Cluster, die zu einem Parallelrechner mit verteiltem Speicher zusammengeschaltet werden sollen. Weitere Infos unter
http://www.rz.uni-karlsruhe.de/~MPI.


Anwendungssoftware


Raffinierte Grafiken und grafische Benutzeroberflächen mit dem Simulationsprogramm MATLAB

Dr. Paul Weber


Für das Simulationsprogramm MATLAB, das in allen RZ-Workstation-Pools installiert ist,  steht eine neue Toolbox zur Verfügung, mit deren Hilfe man sehr einfach grafische Oberflächen für MATLAB-Anwendungen erzeugen kann. Die Box heißt GuiMaker und wird von Patrick Marchand als Shareware vertrieben. Ruft man also im MATLAB Fenster guimaker auf, wird die Toolbox geöffnet.

Eine kurze Dokumentation steht in der MATLAB- WWW-Seite http://www.rz.uni-karlsruhe.de/~MATLAB unter “Handbücher” zur Verfügung. Wem diese zu knapp ist, der kann sich bei mir das Buch “Graphics and GUIs with MATLAB” von P. Marchand ausleihen. Hier findet man ein komplettes Handbuch und Tutorial für GuiMaker im Anhang.

Das Buch ist außerdem all jenen zu empfehlen, die raffinierte Grafiken und Animationen mit MATLAB machen wollen. Neben einer allgemeinen Beschreibung der dokumentierten grafischen Fähigkeiten von MATLAB finden sich hier auch viele nichtdokumentierte Möglichkeiten. Es wird eine ausführliche Beschreibung des “Graphics Handle System” und der “Graphical User Interfaces” von MATLAB gegeben, deren Funktionen wichtig für anspruchsvolle Grafiken und eigene Benutzeroberflächen sind.

Nützliche M-Files stehen im MATLAB-Pfad bereit, zum Beispiel:

Alle diese M-Files werden im oben genannten Buch vorgestellt.

Dr. Paul Weber, Tel. -4035, Email: Paul.Weber@ rz.uni-karlsruhe.de.


EnSight - das Nonplusultra im Postprocessingbereich - ab sofort allgemein verfügbar


Dr. Paul Weber

EnSight ist ein Postprozessor, mit dem die Ergebnisdaten vieler Ingenieurprogramme aufbereitet, dargestellt und animiert werden können. Das Programm besteht aus einem Server- und einem Clientteil. Der Serverteil ist auf einer SGI Indigo (rzsgi10), die in Raum -122 (HP-RZ-Pool) steht, installiert. Der Client-teil liegt auf allen HP- und SGI-Workstations, auf denen die “kleine Baumschule” realisiert ist. Um also mit EnSight arbeiten zu können, ist eine Zugangsberechtigung für die rzsgi10 nötig und eine Workstation, auf welcher der Clientteil installiert ist.

Viele Datenformate von Ingenieurprogrammen, insbesondere von Finite Elemente Programmen lassen sich verarbeiten, u.a. von ABAQUS, ANSYS, FIDAP, VECFEM und vielen anderen.

Genauere Informationen, eine Kurzeinführung und Demos findet man im WWW unter http://www.rz.uni-karlsruhe.de/~ENSIGHT/.

Dr. Paul Weber, Tel. -4035, Email: Paul.Weber@ rz.uni-karlsruhe.de.


Neu auf dem SP-Parallelrechner: IMSL Fortran 90 Library


Nikolaus Geers

Neben den in den RZ-News vom Februar angekündigten Versionen der IMSL Fortran 90 MP Library steht jetzt auch eine Version für IBM RS/6000 Systeme ab dem Betriebssystem AIX 4.1.4 zur Verfügung, die am Rechenzentrum auf der SP installiert ist.

Die Bibliothek besteht aus neu entwickelten Fortran 90- Routinen, Interface-Definitionen für die IMSL Fortran 77 Library sowie Operator-Definitionen für Aufgaben aus der Linearen Algebra. Die Fortran 90 Unterprogramme werden i.a. über generische Namen aufgerufen, so daß der gleiche Unterprogrammname für unterschiedliche Datentypen (z.B. REAL, DOUBLE PRECISION oder COMPLEX) benutzt werden kann.

Die neuen Fortran 90-Module gehören zu folgenden Anwendungsbereichen:

Die über diese Bibliothek definierten Operatoren erlauben für viele Aufgaben aus der Linearen Algebra eine sehr kompakte und leicht lesbare Schreibweise der Programme, wie nachfolgendes Beispiel zeigt:

program demo
USE linear_operators
integer, parameter      :: n = 3
real   , dimension(n,n) :: A
real   , dimension(n)   :: y, b, r
A = rand(A); b = rand(b)
y = A .ix. b
r = b - (A .x. y)
end

Hierbei stehen die Operatoren .ix. für die Lösung eines linearen Gleichungssystems und .x. für die Matrix-Vektor- bzw. Matrix-Matrix-Multiplikation.

Weitere Informationen zu dieser Bibliothek findet man im WWW unter der URL http://www.rz.uni-karlsruhe.de/~IMSL_F90.

N. Geers, Tel. -3755, Email: geers@rz.uni-karlsruhe.de.


SNI VPP 300 Benutzerhandbuch


Nikolaus Geers

Vom Rechenzentrum des Forschungszentrums Karlsruhe wurde ein Handbuch mit den wesentlichen Informationen für die Benutzung des Vektor-Parallelrechners SNI VPP 300 erstellt. Dieses Handbuch liegt sowohl in einer HTML- als auch in einer PostScript-Version unter folgenden Adressen vor:

http://www.fzk.de/hikwww/VPP-Handbuch.html
bzw.
http://www.fzk.de/hikwww/VPP-Handbuch.ps


Erstellen von Makros in Word für Windows


Gerd-Michael Sens, HRZ Gießen

aus: LOGIN, Jahrgang 16, Nr. 4, 96

Inhalt:

Wer kennt nicht das Problem, daß bei der Erstellung eines neuen Dokuments in Word für Windows (kurz WinWord) immer wieder bestimmte Grundeinstellungen für das Dokument durchgeführt werden sollen, diese aber nicht automatisch von WinWord vorgenommen werden. Oder in einem anderen Beispiel sind über das gesamte Dokument Literaturhinweise verstreut, die Sie am Ende des Dokuments zusammenfassen und mit den zugehörigen Seitenzahlen Ihres Dokuments versehen wollen.

Wenn Sie diese beiden Aufgaben durchführen möchten, müssen Sie unter Umständen sehr viele Einzelschritte selbst vornehmen, die sehr viel Zeit in Anspruch nehmen. Eventuell müssen Sie sich noch Notizen auf Papier machen, um das gewünschte Ziel zu erreichen. In solchen Fällen bietet es sich an, Makros in WinWord einzusetzen.

Ein Makro ist dabei nichts anderes als eine Zusammenstellung einzelner WinWord-Befehle, die über einen (einfachen) Startbefehl automatisch und schnell als Ganzes von WinWord ausgeführt werden.

In diesem Artikel möchte ich einen Einblick und einen einfachen Einstieg in die Erstellung von WinWord-Makros vorstellen. Da dieses Thema ganze Bücher füllt, kann ich hier wirklich nur einige wenige Grundlagen zeigen. Eventuell folgen Fortsetzungen in den nächsten LOGIN-Ausgaben.

Die in diesem Artikel dargestellten Methoden beziehen sich in erster Linie auf die Version 6.0 von Word für Windows, können aber im allgemeinen ohne große Änderungen auch in der Version 7.0 unter Windows 95 eingesetzt werden. Für die Erstellung und Ausführung eines WinWord-Makros werden keine speziellen Hardware-Anforderungen benötigt; es reicht ein PC, auf dem Windows (ab Version 3.1) und Word für Windows (ab Version 6.0) installiert sind.


Bevor es so richtig los geht: die Dokumentvorlagen


Bevor wir das erste WinWord-Makro erstellen, muß ich Ihnen zunächst die Dokumentvorlagen in WinWord vorstellen: Dokumentvorlagen dienen, wie der Name bereits andeutet, als Vorlagen für Dokumente. In Dokumentvorlagen können unterschiedliche Einstellungen (z.B. fertige Textteile [z.B. Briefkopf], AutoText-Einträge [früher Textbausteine genannt], selbst zusammengestellte Symbolleisten usw.) einmal eingetragen und bereitgestellt werden. Sie können dann beim Erstellen neuer Dokumente eingesetzt werden. Auch Makros werden in solchen Dokumentvorlagen abgespeichert. WinWord unterscheidet zwei “Typen” von Dokumentvorlagen:

Grundsätzlich sind alle Dokumentvorlagen von der Idee und der Durchführung her gleich aufgebaut (auch NORMAL.DOT); allerdings steht die Datei NORMAL. DOT immer zur Verfügung, während die anderen Dokumentvorlagen nur bei ausgesuchten Dokumenten zum Einsatz kommen. Damit stellt sich die Frage, ob Sie Ihr Makro global (in der Datei NORMAL.DOT) oder nur für bestimmte Dokumente einsetzen wollen. Grundsätzlich ist es empfehlenswert, eigene Dokumentvorlagen zu erstellen,

Um eine neue Dokumentvorlage zu erstellen, führen Sie die im folgenden aufgeführten Schritte aus:

[1] Rufen Sie den Befehl Neu... im Menü Datei auf
[2] Wählen Sie die Option Vorlage und bestätigen die Auswahl mit der Eingabetaste (oder durch Anklicken der Schaltfläche OK).
[3] Erstellen Sie das Makro (Vorgehensweise siehe weiter unten).
[4] Speichern Sie die Datei unter einem Namen als neue Dokumentvorlage (WinWord-Menue Datei, Befehl Speichern unter...). Achten Sie darauf, daß Sie die Angabe Dokumentvorlage im Dialogfeld Dateityp: wählen und als Dateinamenerweiterung .DOT (DOcument Template) im Dialogfeld Dateiname: angeben.

Anmerkung 1:
Dokumentvorlagen werden standardmäßig im WinWord-Verzeichnis auf der Festplatte abgelegt. Das ist im allgemeinen unerwünscht und unpraktisch. Legen Sie deshalb im Eintrag Benutzer-Vorlagen im WinWord-Befehl Extras Optionen..., Karteikarte Dateiablage fest, in welchem Verzeichnis Ihre eigenen Vorlagen abgelegt bzw. wo sie später gesucht werden sollen.


Der Makrorecorder


Auch wenn Sie noch keine Kenntnisse über die spezielle Makrosprache von WinWord besitzen, können Sie trotzdem Makros in WinWord erstellen. Hierzu steht Ihnen der Makrorecorder zur Verfügung, mit dem Sie Word-Befehle oder Aktionen, die mit der Tastatur durchgeführt werden, aufzeichnen und dann beliebig oft wiederholen können.

Bevor Sie ein Makro aufzeichnen lassen, sollten Sie sich zunächst alle notwendigen Schritte und die zugehörigen WinWord-Befehle und Tastenkombinationen auf einem Zettel aufschreiben. Ansonsten werden bei der Aufzeichnung auch alle “fehlerhaften” und unerwünschten Aktionen aufgezeichnet und beim späteren Ablauf mit ausgeführt. Dies kann dann zu unerwünschten Nebeneffekten führen.

Um ein Makro aufzuzeichnen, führen Sie die folgenden Schritte aus:
[1] Rufen Sie den Befehl Makro... im Menü Extras auf.
[2] Wählen Sie die Schaltfläche Aufzeichnen ...
[3] Geben Sie einen Namen für das Makro ein. Der Name darf bis zu 36 Zeichen lang sein, aber keine Leerzeichen enthalten.
[4] Im einzeiligen Listenfeld Makro zur Verfügung stellen: wählen Sie den Eintrag Dokumente basierend auf Vorlage1 aus. Sofern die Vorlage gespeichert ist, erscheint anstelle von Vorlage1 der Name der Vorlagendatei.
[5] Im Textfeld Beschreibung: können Sie optional noch einen Kommentar eingeben.
[6] Wählen Sie die Schaltfläche OK.

Nach dem letzten Schritt startet die Makroaufzeichnung. Sichtbare Kennzeichen hierfür sind das Kürzel MAK in der Statuszeile und eine neue Symbolleiste mit zwei Symbolen (siehe Abb. 1). Alle Aktionen (außer der Mausbenutzung innerhalb des Textes, z.B. Markieren mit der Maus) werden nun solange aufgezeichnet, bis die Aufzeichnung beendet wird. Zum Beenden klicken Sie auf das erste Symbol in der speziellen Symbolleiste für die Makroaufzeichnung. Speichern Sie anschließend die Dokumentvorlage (wie weiter oben beschrieben) ab. Mit dieser Methode können Sie beliebig viele Makros erstellen und in Ihrer Vorlage abspeichern.


Abb1: Symbolleiste für die Makroaufzeichnung


Starten eines Makros


Nachdem Sie das Makro erstellt haben, können Sie es zwar gleich direkt in der Dokumentvorlage starten. Allerdings könnte ein fehlerhaftes Makro zu unerwünschten Effekten führen und evtuell Ihre Dokumentvorlage unbemerkt verändern. Es ist normalerweise besser, wenn Sie ein neues Dokument - basierend auf der Vorlage - erstellen und dann das Makro ausprobieren. Führen Sie hierzu folgende Schritte aus [es ist sinnvoll, wenn Sie vorher die Dokumentvorlage schließen (Menü Datei, Befehl Schließen)]:

[1] Wählen Sie den Befehl Neu... im Menue Datei.
[2] Wählen Sie den Namen Ihrer Dokumentvorlage aus der Liste Vorlage: oder geben den Dateinamen der Dokumentvorlage (ggf. incl. Laufwerksbuchstabe und Verzeichnis; z.B. A:\MAKRO\VORLAGE) ein.
[3] Wählen Sie die Schaltfläche OK.
[4] Um das Makro zu starten, wählen Sie den Befehl Makro... (Menue Extras), dann aus der Liste Makroname: den Namen des Makros und zum Schluß die Schaltfläche Ausführen.


Eigene Makros schreiben mit dem Makro-Editor


Die Möglichkeit, schnell ein Makro mit dem Makrorecorder zu erstellen, hat zwar den Vorteil, daß Sie ohne Vorkenntnisse über die Makrosprache ein Makro erstellen können. Sie beinhaltet aber auch einige Nachteile. Beispielsweise werden alle Aktionen im Makro nur genau einmal durchgeführt; eine beliebige Wiederholung von einzelnen Anweisungen ist nicht möglich. Außerdem können Sie den Ablauf nach dem Start z.B. durch Eingaben von Informationen während des Ablaufs nicht mehr beeinflussen. Diese (und weitere) Nachteile können Sie nur dadurch umgehen, indem Sie das Makro mit dem Makro-Editor “selbst” erstellen bzw. ein bereits bestehendes mit dem Makro-Editor “nachbearbeiten”. Hierzu müssen Sie allerdings die Sprache erlernen, in der WinWord-Makros erstellt werden.

Wie bereits oben erwähnt, kann ich hier nur einen kleinen Einstieg in die Makrosprache von WinWord geben. Im einzelnen möchte ich Ihnen aber zeigen, wie Sie mit Variablen umgehen, wie Sie den Ablauf eines Makros durch Eingaben von außen steuern, wie Sie sich verarbeitete Informationen anzeigen lassen können und wie Sie einfache Kontrollanweisungen einsetzen.

Anmerkung 2:
Die Makrosprache von WinWord basiert im Prinzip auf der Programmiersprache BASIC; daher wird auch häufig der Ausdruck WordBASIC verwendet. Das bedeutet, daß (die meisten) Befehle, die in BASIC enthalten sind, auch in WinWord-Makros eingesetzt werden können. Daneben gibt es aber auch einige spezifische WinWord-Befehle. Der Befehlssatz ist dabei so umfangreich, daß ich hier nur einige wenige Befehle zeigen kann.

Zum Erstellen eines eigenen Makros verwenden Sie, wie bereits angedeutet, den Makro-Editor. Zum Aufruf des Editors führen Sie folgende Schritte durch:

[1] Wählen Sie den WinWord-Befehl Makro... im Menü "Extras".
[2] Geben Sie im Textfeld Makroname: einen Namen für ein neues Makro ein (Regeln für den Makronamen siehe Makrorecorder) oder wählen aus der Liste den Namen eines vorhandenen Makros aus.
[3] Wählen Sie die Schaltfläche Erstellen (bei einem neuen Makro) oder die Schaltfläche Bearbeiten (bei einem vorhandenen Makro).

WinWord wechselt nun in den Makro-Editor. Im Editor erhalten Sie eine neue Symbolleiste, die Ihnen beim Erstellen und Testen des Makros behilflich ist (siehe Abb. 2).

Abb2: Symbolleiste im Makroeditor

(die Symbole bedeuten von links nach rechts: "Aktives Makro", "Aufzeichnen", "Nächsten Befehl aufzeichnen", "Start", "Protokoll", "Fortsetzen", "Beenden", "Schrittweise prüfen", "Subs prüfen", "Variablen anzeigen", "REM hinzufügen/entfernen", "Makro", "Dialog Editor")

Im Arbeitsfenster sehen Sie die drei Zeilen

Sub MAIN

End Sub

Mit der Zeile “Sub MAIN” wird ein Makro eingeleitet, mit der Zeile ”End Sub“ beendet. Dazwischen befinden sich die Zeilen mit den eigentlichen Makroanweisungen.


Speichern von Informationen: Variablen in Makros


Während der Ausführung eines Makros können Informationen zur späteren Verwendung zwischengespeichert werden. Hierzu dienen Variablen. Dabei bekommt jede Variable einen Namen (ohne Leerzeichen). Um in WordBASIC Zahlen-Variablen von Text-Variablen zu unterscheiden, wird an den Namen einer Text-Variablen noch das Zeichen $ angehängt. Eine Textvariable kann bis max. 255 Zeichen aufnehmen. Bei einer Wertzuweisung wird - durch ein Gleichheitszeichen getrennt - hinter dem Variablennamen der Wert angegeben. Wird einer Variablen ein neuer Wert zugewiesen, geht der alte Wert verloren. Bei Zahlen wird die Zahl direkt angegeben, Texte werden in doppelte Anführungszeichen (“) gesetzt. Die folgenden Beispiele sollen dies verdeutlichen:

Anzahl = 28
a$ = "Das ist ein Beispiel"
MeinName$ = "Meier"

Während des Ablaufs des Makros können die Inhalte von Variablen beliebig oft verändert oder anderweitig genutzt werden (z.B. Wert anzeigen). Dies soll an Beispielen verdeutlicht werden:

Wert = Anzahl + 56
(Die Variable Anzahl muß bereits einen Wert besitzen!)

Wert = Wert * 3
(Der Inhalt von Wert wird mit 3 multipliziert.)

Print MeinName$
(Der Inhalt von MeinName$ wird angezeigt.)

Anmerkung 3:
Die Angaben in Klammern hinter den Anweisungen dürfen nicht mit eingegeben werden. Sie können allerdings auch Kommentare mit dem Zeichen ‘ (<Umschalten #>) von den Anweisungen trennen oder separate Kommentarzeilen mit der BASIC-Anweisung REM einleiten.


Informationen anzeigen


Es gibt mehrere Möglichkeiten, um Informationen (z.B. den Inhalt von Variablen) während des Ablaufs auszugeben:

Im letzteren Fall dürfen Sie das Makro nicht im Makro-Editor starten, sondern müssen erst in das Dokumentfenster (z.B. über das Menü Fenster) wechseln. Für den ersten Fall steht das Kommando Print, für den zweiten Fall MsgBox und für den dritten Fall Einfügen zur Verfügung.

Anmerkung 4:
Bei den beiden WordBASIC-Kommandos MsgBox und Einfügen müssen Zahlenwerte vor der Ausgabe in Texte umgewandelt werden. Hierzu steht die BASIC-Funktion Str$() zur Verfügung. In den folgenden drei Beispielen wird jedesmal der Inhalt der bereits oben benutzten Variablen a$ und Wert mit Leerzeichen ausgegeben:

Print a$, Wert
MsgBox a$ + + Str$(Wert)
Einfügen a$ + + Str$(Wert)

Anmerkung 5:
Viele WordBASIC-Kommandos (u.a. MsgBox) können durch optionale Angaben ergänzt werden. Wenn Sie sich über die genaue Syntax eines Kommandos informieren möchten, bewegen Sie den Cursor auf     das Kommando und drücken die Funktionstaste <F1>. Sie erhalten dann eine genaue Beschreibung des Kommandos (incl. Beispiele).


Informationen eingeben


Zur Eingabe von Informationen in einem laufenden Makro dienen Ihnen in erster Linie das WordBASIC-Kommando Input und die Funktion InputBox$(). Wird über InputBox$() eine Zahl eingegeben, muß diese zur weiteren Verwendung in eine für das Makro verständliche Zahl umgewandelt werden. Dies geschieht mit der Funktion Val(). Bei Input können Sie mehrere Werte, durch Kommata getrennt, eingeben, während InputBox$() nur die Eingabe eines Werts gestattet. In den folgenden Beispielen werden im ersten Fall für drei verschiedene Variablen (Wertx, Name$ und i) Werte über die Statuszeile eingelesen. Im zweiten Fall wird ein Text (Variable Antwort$) und im dritten Fall eine Zahl (Variable Wert) mit InputBox$() eingelesen. Bedenken Sie, daß im dritten Fall der Wert mit der Funktion Val() vor der Variablenzuweisung umgewandelt werden muß. Im zweiten Fall wird außerdem noch ein Aufforderungstext angezeigt.

Input Wertx, Name$, i
Antwort$ = InputBox$("Bitte Ja oder Nein eingeben!")
Wert = Val(InputBox$())


Einfache Kontrollanweisungen


Eine wichtige Eigenschaft von Makros ist die Fähigkeit, auf verschiedene Informationen unterschiedlich reagieren zu können. Zu diesem Zweck gibt es Kontrollanweisungen. In diesem Artikel werde ich nur auf die drei Anweisungen If ... Then ... Else ... End If, While ... Wend und For ... Next eingehen.

Mit der Anweisung If ... Then ... Else ... End If wird eine logische Abfrage auf ihren Wahrheitsgehalt überprüft. Ist der Wahrheitswert “wahr”, dann werden die Anweisungen ausgeführt, die dem Anweisungsteil Then folgen, im anderen Fall werden die Anweisungen ausgeführt, die dem Anweisungsteil Else folgen. In einigen Fällen sollen nur dann bestimmte Anweisungen durchgeführt werden, wenn der Wahrheitswert “wahr” ist. In diesen Fällen wird der Anweisungsteil Else weggelassen. In dem folgenden Beispiel wird überprüft, ob der Inhalt der Variable Wert kleiner als 0 ist. Ist dies der Fall, wird der Inhalt von Wert mit -1 multipliziert und das Ergebnis anschließend in der Statuszeile angezeigt:

IfWert < 0 Then
Wert = - Wert
Print Wert
End If

Im zweiten Beispiel wird der Inhalt der Textvariable Antwort$ auf den Inhalt “J” bzw. ”j“ überprüft. Je nach Wahrheitswert der Abfrage werden unterschiedliche Meldungen ausgegeben:

Anmerkung 6:
Das Einrücken der Anweisungszeilen innerhalb der Kontrollanweisungen ist nicht zwingend notwendig, dient aber der besseren Lesbarkeit. Das Einrücken kann mit Leerzeichen oder mit  Tabulatoren erfolgen.
In der Kontrollanweisung While ... Wend wird ebenfalls eine logische Abfrage auf den Wahrheitswert “wahr” überprüft. Dabei werden die Anweisungen innerhalb der Kontrollanweisung solange wiederholt, bis die Abfrage den Wahrheitswert “falsch” liefert. Wie oft die Wiederholung stattfindet, hängt im allgemeinen von verschiedenen Faktoren ab, auf die ich hier nicht näher eingehen möchte.

Ist die Überprüfung gleich beim ersten Durchgang “wahr”, muß innerhalb der Kontrollanweisung mindestens eine Anweisung existieren, die Einfluß auf die Abfrage besitzt. Ist dies nicht der Fall, kann es passieren, daß die Abfrage immer den Wert “wahr” liefert und damit die Anweisungen unendlich oft wiederholt werden. Für dieses Verhalten existiert der Begriff ”Endlosschleife".

Im folgenden Beispiel wird die Variable i mit dem Wert 1 initialisiert. Dann werden mittels der Kontrollanweisung While ... Wend die Quadratzahlen von 1 bis 10 berechnet und nacheinander im aktuellen Dokument eingefügt (die Funktion Str$(13) bewirkt einen Zeilenumbruch). Beachten Sie, daß die Zeile mit

i = i + 1
nicht fehlen darf, da sonst die Anweisungen endlos wiederholt werden:

i = 1
While i <= 10
Einfügen Str$(i) + " " + Str$(i*i) + Str$(13)
I = I + 1
Wend

Bei der Kontrollanweisung For ... Next werden Anweisungen mit einer festen Anzahl von Wiederholungen ausgeführt. Dabei wird ein Zähler beginnend mit einem vorgegebenen Startwert belegt und während des Durchlaufs immer um den Wert 1 erhöht, bis ein vorgegebener Endwert erreicht ist.

Wie oft die Wiederholungen vorgenommen werden, hängt davon ab, ob deren Anzahl fest vorgegeben ist oder während des Ablaufs des Makros über eine Eingabeanweisung (siehe weiter oben) dem Makro mitgeteilt wird. Im Gegensatz zur Kontrollanweisung While ... Wend wird hier keine spezielle Anweisung benötigt, die eine Abfrage beeinflußt, da bei For ... Next keine Abfrage vorgenommen wird.

Im folgenden Beispiel wird eine Zahl mittels der Anweisung MsgBox (siehe weiter oben) in der Variablen Anzahl gespeichert. Damit wird die Anzahl der Durchläufe festgelegt. Innerhalb der Kontrollanweisung wird ein konstanter Text und der Zählerwert ausgegeben:

Anzahl = Val(InputBox$())
For i = 1 To Anzahl
Print Zähler hat den Wert: ", i
Next

Anmerkung 7: Die Anweisung For ... Next kann immer in eine Anweisung der Art While ... Wend umgewandelt werden. Umgekehrt gilt das nicht immer.
Kontrollanweisungen (und nicht nur diese) können ineinander verschachtelt werden, um komplexere Strukturen zu ermöglichen. Damit können auch komplizierte WinWord-Probleme mittels Makros gelöst werden. Im folgenden Beispiel werden für die ungeraden Zahlen aus dem Intervall 1 - 100 die zugehörigen Quadratzahlen und für die geraden Zahlen die zugehörigen dritten Potenzen berechnet und angezeigt. Hierfür wird die Funktion Mod (modulo) benötigt, mit der der Rest bei einer ganzzahligen Division ermittelt wird.

For i = 1 To 100       'Zahlenreihe 1 bis 100	
  If i Mod 2 = 0 Then  'kein Rest bei i/2?	 
     print i*i*i       'dann Volumen berechnen	
  Else 	
     print i*i         'sonst Quadratzahl berechnen	
  End If
Next

Im abschließenden Beispiel stelle ich Ihnen noch ein Makro vor, in dem einige der bisher vorgestellten Anweisungen enthalten sind. Bedenken Sie, daß bei der Eingabe des Makros die erste Zeile (Sub MAIN) und die letzte Zeile (End Sub) bereits vorhanden sind und nicht noch einmal eingegeben werden dürfen. Die in dem Beispiel angezeigten Zeilennummern sollten Sie nicht mit eingeben; sie dienen hier nur für die anschließende Beschreibung der Zeilen. In diesem Beispiel werden mit dem Makro die Anzahl der Absätze und die Anzahl der Zeichen (ohne Absatzendemarken) ermittelt und die durchschnittliche Anzahl der Zeichen pro Absatz berechnet. Bedenken Sie, daß das Makro nur in einem Textfenster (nicht im Makro-Editor) ausgeführt werden kann.

(Die Angaben in eckigen Klammern sind nicht Bestandteil der Anweisungen. Sie wurden eingefügt, um besser auf die Anweisungen Bezug nehmen zu können.)


[1]     Sub MAIN 
[2]     BeginnDokument 
[3]     Zaehler = 0 
[4]     AnzZeichen = 0 
[5]     While Not AmEndeDesDokuments() 
[6]       AbsatzUnten 1, 1 
[7]       If Len(Markierung$()) >1 Then 
[8]          AnzZeichen = AnzZeichen + Len(Markierung$()) -1 
[9]          Zaehler = Zaehler + 1 
[10]      End If 
[11]      ZeichenRechts 1 
[12]    Wend 
[13]    Schnitt = AnzZeichen / Zaehler 
[14]    Meldung1$ = "Anzahl Absaetze: " + Str$(Zaehler) + Chr$(13) 
[15]    Meldung1$ = "Anzahl Zeichen:  " + Str$(AnzZeichen) + Chr$(13) 
[16]    Meldung1$ = "Durchschnitt Zeichen / Absatz: " + Str$(Schnitt) 
[17]    MsgBox Meldung1$ + Meldung2$ + Meldung3$
[18]    End Sub

Erläuterungen:
[1] Beginn des Makros
[2] Cursor an den Anfang des Dokuments bewegen (entspricht <Strg Pos1>).
[3] Zählervariable für die Anzahl der Absätze mit dem Wert 0 (Null) initialisieren.
[4] Zählervariable füer die Anzahl der Zeichen mit dem Wert 0 (Null) initialisieren.
[5] Solange (Kontrollanweisung While) nicht (Operator Not) das Ende des Dokuments (Funktion AmEndeDesDokuments()) erreicht ist ...
[6] ...Absatz markieren (entspricht <Strg *>; die erste 1 hinter dem Befehlsnamen bedeutet, daß der Befehl einmal ausgeführt wird, die zweite 1 bedeutet, daß die Markierung eingeschaltet wird)
[7] Wenn (Kontrollanweisung If) die Länge (Funktion Len) der Markierung (Funktion Markierung$()) größer als 1 ist (d.h. mehr als nur die Absatzendemarke ist markiert)...
[8] ... dann die Anzahl der Zeichen zu den bereits gezählten Zeichen addieren, aber ohne die Absatzendemarke (-1).
[9] Zählervariable für die Absatzzählung erhöhen.
[10] Ende der Kontrollanweisung If
[11] Cursor an den Anfang des nächsten Absatzes bewegen (1 Zeichen nach rechts) und dabei die Markierung aufheben.
[12] Ende der Kontrollanweisung While
[13] Durchschnitt der Anzahl der Zeichen pro Absatz berechnen.
[14] Meldungstext für die Anzahl der Absätze erstellen (Chr$(13) bedeutet Absatzwechsel).
[15] Meldungstext für die Anzahl der Zeichen erstellen.
[16] Meldungstext für den Durchschnittswert erstellen.
[17] Ergebniszeile zusammenfügen und ausgeben.
[18] Ende des Makros


Kurz berichtet ...


Computerdiebe an deutschen Universitäten


(red)

An den deutschen Universitäten geht der PC-Klau um. Alarmierend die Zahlen einer großen Universität im Ruhrgebiet:: Allein dort beläuft sich der Schaden, den PC-Diebe angerichtet haben, in den Jahren 1994 bis 1996 auf rund eine Million Mark. Dort sind den Wissenschaftlern neben den Computern als Arbeitsgerät gleichzeitig auch wichtige Forschungsergebnisse verloren gegangen.

Auch an der Universität Karlsruhe können solche Vorfälle nicht vermieden werden, aber dank des campusweiten Backup-Konzepts verbleiben immerhin die Daten auf dem Campus, so daß Forschungsergebnisse nicht gefährdet sind.


Personalia

Frau Dipl.-Inf. Dhouha Houssi ist seit dem 14.2.1997 in der Abteilung Kommunikation als wissenschaftliche Mitarbeiterin angestellt. Im Rahmen ihrer Tätigkeit im Deutschen Network Information Center (DE-NIC) ist sie zuständig für:

  • den Betrieb des DE-Nameservers
  • die Automatisierung und Abwicklung der Aufträge
  • die Bearbeitung allgemeiner Anfragen zur Domainvergabe

Ihr Arbeitsplatz befindet sich im Raum 214, Tel. 373723, Email: Dhouha.Houssi@nic.de.

Herr Dipl.-Phys. Stefan Dieterle ist seit dem 1.2.1997 in der Abteilung Kommunikation als wissenschaftlicher Mitarbeiter angestellt. Im Rahmen seiner Tätigkeit im Deutschen Network Information Center (DE-NIC) ist er zuständig für:

  • den Betrieb des DE-Nameservers
  • die Automatisierung und Abwicklung der Aufträge
  • die Bearbeitung allgemeiner Anfragen zur Domainvergabe.

Sein Arbeitsplatz befindet sich im Raum 214, Tel. 373723, Email: Stefan.Dieterle@nic.de.



10. April 1997