Û¥-x@ €¥ã²¤²$²$$²$²$²$²$²2²2²2²2²2²B²^².Œ²²”²˜²œ²œ²œ²œ²œ²œ²œ²œ²œ²œ²œ²œ²4вœ²œ²œ²œ²SU@UEBER = Schneller als fünf Milliarden Taschenrechner - neuer Supercomputer am Rechenzentrum @UEBER LINIEN = Leistung für Wissenschaft und Wirtschaft zugänglich @AUTOR FUNKTIN = (red) @AUTOR FUNKTIN = 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, <%-2>der durch die weltweit erste Installation <%0>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. @UEBER = Profiling von MPI1)-Programmen auf dem SP-Parallelrechner @UEBER LINIEN = Zusätzliche Bibliothek verfügbar @AUTOR FUNKTIN = 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 d<%-2>es 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. @BODY VORN = <%-3>N. Geers, Tel. -3755, Email: geers@rz.uni-karlsruhe<%0>.de. @UEBER = Anwendungssoftware @UEBER LINIEN = <%-2>Raffinierte Grafiken und grafische Benutzeroberflächen mit dem Simulationsprogramm MATLAB @AUTOR FUNKTIN = 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.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. @BODY VORN = Nützliche M-Files stehen im MATLAB-Pfad bereit, zum Beispiel: @BODY VORN = @BODY BLICK 1 = eclabel zur Beschriftung von Konturlinienplots econtour @BODY BLICK 1 = fcontour zur Erzeugung von gefüllten Konturlinienplots @BODY BLICK 1 = sidetext zur Beschriftung von Grafiken toptitletxtblock @BODY BLICK 1 = piechart zur Erzeugung von Tortendiagrammen @BODY BLICK 1 = polardb zur Erzeugung von Polardiagrammen mit dB Skala @BODY BLICK 1 = viewer3d  zur komfortablen Drehung von 3D-Grafiken @BODY BLICK 1 = imgmaker <%-2>zur Erzeugung von einfachen MATLAB-Imagefiles<%0> @BODY BLICK 1 = u.v.m Alle diese M-Files werden im oben genannten Buch vorgestellt. @BODY VORN = Dr. Paul Weber, Tel. -4035, Email: Paul.Weber@ rz.uni-karlsruhe.de. @UEBER LINIEN = EnSight - das Nonplusultra im Postprocessingbereich - ab sofort allgemein verfügbar @AUTOR FUNKTIN = 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) <%-2>steht, installiert. Der Client-teil <%0>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. uni-karlsruhe.de/~ENSIGHT/. Dr. Paul Weber, Tel. -4035, Email: Paul.Weber@ rz.uni-karlsruhe.de. @UEBER LINIEN = Neu auf dem SP-Parallelrechner:IMSL Fortran 90 Library @AUTOR FUNKTIN = 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. <%-3>Die Bibliothek besteht aus neu entwickelten Fortran 90- <%0>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, s<%2>o daß der gleiche Unterprogrammname für unterschiedliche Datentypen (z.B. REAL, DOUBLE PRECISION <%0>oder COMPLEX) benutzt werden kann. Die neuen Fortran 90-Module gehören zu folgenden Anwendungsbereichen: @BODY BLICK 1 = Lösen linearer Gleichungssysteme @BODY BLICK 1 = Eigenwertberechnungen @BODY BLICK 1 = Approximation von Kurven und Flächen mittels Spline-Funktionen @BODY BLICK 1 = Hilfsroutinen 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.uni-karlsruhe.de/~IMSL_F90. @BODY VORN = N. Geers, Tel. -3755, Email: geers@rz.uni-karlsruhe. de. @UEBER LINIEN = SNI VPP 300 Benutzerhandbuch @AUTOR FUNKTIN = 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: @BODY VORN = http://www.fzk.de/hikwww/VPP-Handbuch.html bzw. @BODY VORN = http://www.fzk.de/hikwww/VPP-Handbuch.ps. @UEBER = Erstellen von Makros in Word für Windows @AUTOR FUNKTIN = Gerd-Michael Sens, HRZ Gießen @BODY VORN = aus: LOGIN, Jahrgang 16, Nr. 4, 96 @BODY VORN = @BODY VORN = Inhalt: @BODY BLICK 1 = Bevor es so richtig los geht: die Dokumentvorlagen @BODY BLICK 1 = Der Makrorecorder @BODY BLICK 1 = Starten eines Makros @BODY BLICK 1 = Eigene Makros schreiben mit dem Makro-Editor @BODY BLICK 1 = Speichern von Informationen: Variablen in Makros @BODY BLICK 1 = Informationen anzeigen @BODY BLICK 1 = Informationen eingeben @BODY BLICK 1 = Einfache Kontrollanweisungen 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. @UEBER LINIEN = 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: @BODY BLICK 1 = die Datei NORMAL.DOT und @BODY BLICK 1 = alle anderen 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, @BODY BLICK 1 = da Makros (oder Autotext-Einträge) nicht immer in jedem Dokument benötigt werden und @BODY BLICK 1 = da (wenn verschiedene WinWord-Benutzer an dem selben PC arbeiten) der Nachfolgende unter Ihrer NORMAL.DOT “leidet”. Um eine neue Dokumentvorlage zu erstellen, führen Sie die im folgenden aufgeführten Schritte aus: @AUSRUECKEN = [1] Rufen Sie den Befehl Neu... im Menü Datei auf @AUSRUECKEN = [2] Wählen Sie die Option Vorlage und bestätigen die Auswahl mit der Eingabetaste (oder durch Anklicken der Schaltfläche OK). @AUSRUECKEN = [3] Erstellen Sie das Makro (Vorgehensweise siehe weiter unten). @AUSRUECKEN = [4] Speichern Sie die Datei unter einem Namen als neue Dokumentvorlage (WinWord-Menü Datei, Befehl Speichern unter...). Achten Sie darauf, daß Sie die Angabe Dokumentvorlage im Dialogfeld “Dateityp:” wählen und als Dateinamen-erweiterung .DOT (DOcument Template) im Dialogfeld  “Dateiname:” angeben. @BODY VORN = 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. @UEBER LINIEN = 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: @AUSRUECKEN = [1] Rufen Sie den Befehl Makro... im Menü Extras auf. @AUSRUECKEN = [2] Wählen Sie die Schaltfläche Aufzeichnen... @AUSRUECKEN = [3] Geben Sie einen Namen für das Makro ein. Der Name darf bis zu 36 Zeichen lang sein, aber keine Leerzeichen enthalten. @AUSRUECKEN = [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. @AUSRUECKEN = [5] Im Textfeld “Beschreibung:” können Sie optio-nal noch einen Kommentar eingeben. @AUSRUECKEN = [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. @UEBER LINIEN = 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)]: @AUSRUECKEN = [1] Wählen Sie den Befehl Neu... im Menü Datei. @AUSRUECKEN = [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. @AUSRUECKEN = [3] Wählen Sie die Schaltfläche OK. @AUSRUECKEN = [4] Um das Makro zu starten, wählen Sie den Befehl Makro... (Menü Extras), dann aus der Liste “Makroname:” den Namen des Makros und zum Schluß die Schaltfläche Ausführen. @UEBER LINIEN = 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. @BODY VORN = 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: @AUSRUECKEN = [1] Wählen Sie den WinWord-Befehl Makro... im Menü Extras. @AUSRUECKEN = [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. @AUSRUECKEN = [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). @GANZE BREITE = 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. @UEBER LINIEN = 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 @EINRUECKEN = (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.) @BODY VORN = Anmerkung 3: Die Angaben in Klammern hinter den Anweisungen dürfen nicht mit eingegeben werden. Sie können allerdings auch Kommentare mit dem Zeichen ‘ (<>) von den Anweisungen trennen oder     separate Kommentarzeilen mit der BASIC-Anweisung REM einleiten. @UEBER LINIEN = Informationen anzeigen Es gibt mehrere Möglichkeiten, um Informationen (z.B. den Inhalt von Variablen) während des Ablaufs auszugeben: @BODY BLICK 1 = in der Statuszeile @BODY BLICK 1 = in einem Dialogfenster oder @BODY BLICK 1 = in einem leeren (oder auch bereits bestehenden) Dokument. 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. @BODY VORN = 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) @BODY VORN = 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 <>. Sie erhalten dann eine genaue Beschreibung des Kommandos (incl. Beispiele). @UEBER LINIEN = 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(). <%-2>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.<%0> @EINRUECKEN = Input Wertx, Name$, i @EINRUECKEN = Antwort$ = InputBox$(Bitte Ja oder           Nein eingeben!) @EINRUECKEN = Wert = Val(InputBox$()) @UEBER LINIEN = 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: @AUSRUECKEN = If Wert << 0 Then Wert = - WertPrint 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: @AUSRUECKEN = If Antwort$ = j Or Antwort$ = J ThenMsgBox Die Antwort ist Ja! @AUSRUECKEN = Else MsgBox Die Antwort ist Nein! @AUSRUECKEN = End If @AUSRUECKEN = @BODY VORN = 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 @BODY VORN = @BODY VORN = nicht fehlen darf, da sonst die Anweisungen endlos wiederholt werden: @BODY VORN = @AUSRUECKEN = i = 1 @AUSRUECKEN = While i <<= 10<%-10>Einfügen Str$(i) +  + Str$(i*i) + Str$(13)<%-9>i = i + 1 @AUSRUECKEN = 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. <%-2>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:<%0> @AUSRUECKEN = Anzahl = Val(InputBox$()) @AUSRUECKEN = For i = 1 To AnzahlPrint Zähler hat den Wert: , i @AUSRUECKEN = Next @BODY VORN = 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. @BODY TABS = 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 <%-6> print i*i sonst Quadratzahl berechnen<%-3> End If<%-7>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.) @GANZE BREITE = @BODY VORN = Erläuterungen: @AUSRUECKEN 2 = [1]   Beginn des Makros @AUSRUECKEN 2 = [2]   Cursor an den Anfang des Dokuments bewegen (entspricht <>). @AUSRUECKEN 2 = [3]  Zählervariable für die Anzahl der Absätze mit dem Wert 0 (Null) initialisieren. @AUSRUECKEN 2 = [4]   Zählervariable für die Anzahl der Zeichen mit dem Wert 0 (Null) initialisieren. @AUSRUECKEN 2 = [5]   Solange (Kontrollanweisung While) nicht (Operator Not) das Ende des Dokuments (<%-3>Funktion AmEndeDesDokuments()) erreicht <%-2>ist<%0> ... @AUSRUECKEN 2 = [6]   ...Absatz markieren (entspricht <>; die erste 1 hinter dem Befehlsnamen bedeutet, daß der <%0>Befehl einmal ausgeführt wird, die zweite 1 bedeutet, daß die Markierung eingeschaltet wird) @AUSRUECKEN 2 = [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)... @AUSRUECKEN 2 = [8]   ... dann die Anzahl der Zeichen zu den bereits gezählten Zeichen addieren, aber ohne die Absatz-endemarke (-1). @AUSRUECKEN 2 = [9]   Zählervariable für die Absatzzählung erhöhen. @AUSRUECKEN 2 = [10] Ende der Kontrollanweisung If @AUSRUECKEN 2 = [11] Cursor an den Anfang des nächsten Absatzes bewegen (1 Zeichen nach rechts) und dabei die Markierung aufheben. @AUSRUECKEN 2 = [12] Ende der Kontrollanweisung While @AUSRUECKEN 2 = [13] <%-2>Durchschnitt der Anzahl der Zeichen pro Absatz berechnen. <%0> @AUSRUECKEN 2 = [14] <%-2>Meldungstext für die Anzahl der Absätze erstellen<%0> (Chr$(13) bedeutet Absatzwechsel). @AUSRUECKEN 2 = [15] Meldungstext für die Anzahl der Zeichen erstellen. @AUSRUECKEN 2 = [16] <%-2>Meldungstext für den Durchschnittswert erstellen.<%0> @AUSRUECKEN 2 = [17] Ergebniszeile zusammenfügen und ausgeben. @AUSRUECKEN 2 = [18] Ende des Makros @UEBER = Kurz berichtet ... @UEBER LINIEN = Computerdiebe an deutschen Universitäten @AUTOR FUNKTIN = (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. @UEBER = 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: @BODY BLICK 1 = den Betrieb des DE-Nameservers @BODY BLICK 1 = die Automatisierung und Abwicklung der Aufträge @BODY BLICK 1 = 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: @BODY BLICK 1 = den Betrieb des DE-Nameservers @BODY BLICK 1 = die Automatisierung und Abwicklung der Aufträge @BODY BLICK 1 = die Bearbeitung allgemeiner Anfragen zur Domainvergabe. Sein Arbeitsplatz befindet sich im Raum 214, Tel. 373723, Email: Stefan.Dieterle@nic.de. uˆ€‰ÞNÈëðÓ"Ú"# ##$#j#r#”#©#¹#Á#ö#ý#>$F$‚$Š$í4ö4'D>DVDmD­DÄDFFMFQF8G=G G®G®H²H·H»HÙLÝLõL MaMeMNNRNiO€O¬TÃTîTòT0UGU_UvUÔUëU4W8W^WbWŸW£WèWÿWÏ\Ý\[___Š_Ž_á_å_»`Ò`'a+a7jEjAmXmVndn8qû÷û÷ûñû÷û÷û÷û÷û÷û÷û÷û÷û÷û÷ûëûëûëûëûëûëû÷ûëûëûëûëûëûëûëûëûëûëûëûëûëûëûëûëû÷ûëûëûëûëûëû÷ûëû÷û  [8qFq.:½Éە땘¡°¡£¸£›¥¥¥û÷û÷û÷û÷û÷û÷÷÷€Þ#;NÈÊ‹Áä¥ Ê tÑJkmà+}Îóc…*† f"h"´"Ã" #Z#©#æ#.$r$Ã$Ú$Ü$%%o%Ô%ö%3(ß(t)v)¼)*)*+*+½,¿,--:-a-±-Ð-Ò-.Ÿ.Ê.ý.1Î1Ð12E2f2ççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç& Рp@ à°€P ðÀ!Qf2ƒ3ã3=4p4 4Ñ4à4ö4:5^5…5Ã56-6U6ƒ6…6U8›9]:w;5=y=è?ê?1@a@c@B÷B™C›CþCD„DOEŸE‘G“G®GmIIØJWLYLLMzMNJOÎOP P¯RÕRUˆU—VáVXRXV[À\Â\Ý\|^__ _`^a`abbGbIbb¹bûbýbÙcççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç& Рp@ à°€P ðÀ!QÙcdgg7g‰gÝgßgšhœhÍh0i2i`i¯i±ißi(j*jEjƒk«kllBlolºl¼lGnIndn*p,pYpÀp)q+qFqÏr÷r¨wªwìw‡xËxùxazÈ}Ê}j~l~y{`€Ë€þ€!‚¨ƒ#…ȆʆՆä†8‡G‡y‡,ˆbˆ¸‰u‹½Œ¿Œ}®°ŠŽ¦¨’%•ççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç& Рp@ à°€P ðÀ!Q%•¼•Î•ë•–š–—¤—‚˜}™¯šT›™›ë›pœÅœ±úKž‹ž±ž³žµžÒž Ÿ$Ÿ&Ÿ¡ ~¡“¡{¢}¢®¢ð¢9£;£’£”£–£˜£¤ƒ¤´¤õ¤?¥A¥›¥›¥¥ççççççççççççççççççççççççççççççççççççççççççççççççâ& Рp@ à°€P ðÀ!1F  Þ¤¥€8q¥ST€f2Ùc%•¥UVWX. Tms Rmn RSymbol"Helv1þMS LineDraw¤"neÐaw