Ordnet man den Computer in seiner Gesamtheit als Hilfe für den Menschen ganz oben auf einer Treppe an, so sind die Programme als Hilfen vielleicht auf einer mittleren Stufe zu sehen. Ganz unten indes finden sich die kleinsten Hilfen des Computerzeitalters, kleine selbstgebastelte Befehle, die immer wiederkehrende Abläufe speichern und bei Bedarf abspulen.
»K-SPREAD 4« nennt auch solche Befehle sein eigen - die Makros. Diese Befehle sind sogar so mächtig, daß es durchaus angemessen erscheint, im Zusammenhang damit von einer eigenen Programmiersprache zu sprechen, der Makroprogrammierung. K-SPREAD geht allerdings bei seiner Makroprogrammiersprache einen etwas anderen Weg als die bekannte Konkurrenz »VIP professional«, »LDW« oder »LOTUS 1-2-3«. In K-SPREAD 4 tragen Sie die Makros nicht in das aktuelle Arbeitsblatt ein, ein eigenes Makroarbeitsblatt ist nötig. Doch das bringt einige Vorteile mit sich. Muß man sich doch vorher nicht genau überlegen, wo in dem Arbeitsblatt denn noch etwas Platz für die Makros bleibt. Der zweite Vorteil besteht darin, daß die Makros sich auch für andere Arbeitsblätter ganz einfach verwenden lassen. Diesen Weg gehen auch einige neue Tabellenkalkulationen aus dem MS-DOS Bereich für Windows. Unseres Wissens ist K-SPREAD 4 auf dem Atari derzeit das einzige Programm, das dieses eigene Makrofenster besitzt. Leider gibt es bei der Verwendung von Makros in K-SPREAD 4 zwei kleine Nachteile. Zum einen sind die Befehle nicht ins Deutsche übersetzt worden, zum anderen sind die Erklärungen zum Makroteil im Handbuch etwas zu kurz geraten und es mangelt an Beispielen. Wir wollen Ihnen deshalb mit diesem Artikel einige Hilfestellungen und Lösungsvorschläge geben.
Starten Sie zunächst Ihr K-SPREAD 4. Mit »Arbeiten-Blatt anlegen« bereiten Sie Ihr erstes Makroarbeitsblatt vor. Nennen Sie es »TEST.SPM« (vgl. Bild 1). Tragen Sie das erste Makro als Text in das Makroarbeitsblatt ein. Für das Vorgehen der Eintragung hilft Ihnen das Bild 2 weiter. Es ist ein einfacher Überblick über die Vorgehensweise bei der Makroerstellung, sowohl von Hand als auch mit dem Makrorecorder. Was bedeuten nun die einzelnen Zeilen? Dazu müssen wir zunächst erklären, wie trickreich das Makro seine Zellen für die Ausführung findet:
Zweite Zeile: Spaltenbreite der aktuellen Spalte wird auf 5 gesetzt.
Dritte Zeile: der Zellzeiger wandert eine Spalte nach rechts
Vierte Zeile: Spaltenbreite der aktuellen Spalte wird auf 1 gesetzt.
Fünfte Zeile: der Zellzeiger wandert wiederum eine Spalte nach rechts.
Letzte Zeile: RETURN() beendet jedes Makro (bitte nie vergessen).
Wenn Sie das Makro richtig benannt haben, müßten Sie es erfolgreich aufrufen können (vgl. Bild 2). Geben Sie solch ein Makro mit dem Makrorecorder ein, ist es gelegentlich notwendig, nachträglich von Hand gerade solche Koordinaten des Zellzeigers anzupassen. Probieren Sie vielleicht sinnvollerweise nach erfolgreicher Handeingabe, dieses Makro mittels Makrorecorder einzugeben und von Hand in die vorgegebene Form zu bringen. Sie finden dieses Makro auch in der Datei »MAKRO.SPM« auf der TOS-Diskette zu dieser Ausgabe in dem Bereich A0 bis A5. Das Makro lösen Sie dann mit der Tastenkombination Alternate + F1 aus.
Hierzu gleich eine Bemerkung zu den Tastaturaufrufen. K-SPREAD 4 verwendet hierzu die Tasten ALT+(F1 ..F10), es stehen somit leider nur zehn Tasten für Makrobefehle zur Verfügung. Da ein normaler Anwender im Schnitt nur etwa drei Makros verwendet, dürfte diese Zahl durchaus reichen, doch sind die Aufrufe nicht so schön selbsterklärend wie mit Tastennamen: ALT+D für Drucke oder ALT-H zur Initialisierung sind sicherlich einprägsamer als ALT+F1 oder ALT+F2.
Zelleinträge lassen sich sehr einfach mit dem Makrobefehl »Formula« vornehmen. Im zweiten Makro, von <B0> bis <B14>, verwenden wir diesen Befehl, um auf Tastendruck (ALT+F2) die Anschrift der TOS-Redaktion in ein Arbeitsblatt einzutragen (vgl. Bild 3). Besonders schön ist die Steuerung des Makros per Timer. Als drittes Makro mit ALT+F3 ist dieses Beispiel aufzurufen. Wollen Sie rechtzeitig zur Sportschau von Ihrer Tabellenkalkulation eine Warnung bekommen, dann stellen Sie den Timer auf dieses Makro ein, geben Sie Datum (in der Form 28/03/92) und die Uhrzeit (in der Form 17:59) ein, schon startet das Makro rechtzeitig, sofern Ihr Rechner eine eingebaute Uhr besitzt und die auch richtig gestellt ist. Haben Sie die Befürchtung, daß dieses Makro Teile Ihres Arbeitsblattes überschreibt, dann bauen Sie sich eine Sicherheitsabfrage ein oder lassen sich ein leeres Arbeitsblatt öffnen (vgl. Bild 4).
Mit dieser Funktion lassen sich allerlei nützliche Dinge bewerkstelligen, von einem Tagesplaner bis hin zum automatischen Speichern des Arbeitsblattes. Selbst so böse Sachen wie das Löschen des Arbeitsblattes (beim Nachbarn) läßt sich realisieren, vielleicht noch mit einem schönen Gruß versehen, - aber nein, das ist dann doch zu boshaft...
Zu Beginn dieses Artikels sprachen wir vollmundig von der eingebauten Programmiersprache in K-SPREAD 4. Um als Programmiersprache zu gelten, müssen Bedingungen abzufragen (Wenn- oder If-Abfrage) und die Konstruktion von Schleifen realisierbar sein. Nun denn, das vierte Makro tritt den Beweis an (vgl. Bild 5).
Leider haben die Handbuchautoren bei der Dokumentation von K-SPREAD 4 die Beschreibung des IF-Befehls vergessen. Doch mit einigen BASIC-Kenntnissen bekommt man die Funktion des Befehls schnell heraus. Als Makro finden Sie den Befehl im Bereich von <D0> bis <D12> der mitgelieferten Datei. Das Makro startet nach ALT+F4. In der ersten Zeile wird im Makrofenster die Zelle <D10> mit der Zahl Eins belegt. Die zweite Zeile enthält die IF-Abfrage. Frei ins Deutsche übersetzt würde die Zeile heißen: Wenn die Zelle <D10> den Wert »100« enthält, dann höre auf; andernfalls zähle zum Inhalt von Zelle <D10> eins dazu. Beachten Sie nur die Klammer um die gesamte IF-Abfrage. Folgende Syntax liegt dem Befehl zugrunde:
IF ([Bedingung] THEN [Anweisung]
ELSE [Anweisung] )
In der dritten Zeile finden wir den ungeheuer beliebten »GOTO«-Befehl, der das Makro in Zelle <D1> fortsetzt. Damit erreicht das Programm niemals die Zelle <D3>. Offensichtlich haben die Spaghetti-Code-Produzenten nach der Vertreibung aus BASIC in den Makroprogrammiersprachen ein neues Betätigungsfeld gefunden.
Um nicht seitenlange Makros zu schaffen, greifen Sie am besten auf die Programmierung von Unterprogrammen zurück. Das Zauberwort zum Aufruf eines Untermakros heißt »GOSUB«. Mit diesem Befehl kehrt das Makro nach der Beendigung des Untermakros an die Stelle des Aufrufs zurück. Dies ist auch der entscheidende Unterschied zu den Befehlen »RUN« (ruft nur ein anderes Makro auf ohne zurückzukehren) oder »GOTO« (anspringen einer Stelle). Wollen Sie ein Makro an einer beliebigen Stelle ganz abbrechen, egal ob Sie sich in einem Untermakro oder dem Hauptmakro befinden, dann verwenden Sie den Befehl »HALT()« (vgl. Bild 6).
Sie werden auf den ersten Blick kaum einen Unterschied zum letzten Makro entdecken, doch der Effekt liegt im Detail. Hier ist es das Ende in der Zelle <E1> mit »GOSUB(A0)«. Dort liegt schließlich unser erstes Makro. Mit etwas Geduld sehen Sie, daß sich nun die fünf folgenden Spaltenpaare nach der aktuellen Cursorposition im Makroarbeitsblatt gemäß der Vorgabe ändern. Allerdings ist folgender Hinweis angebracht: Seien Sie nicht ungeduldig, diese Untermakroprogrammierung braucht seine Zeit. Sie rufen dieses Makro mit den Tasten ALT+F5 auf.
Wir hoffen, daß Sie nun reichlich Anregungen für eigene Makroprogrammierungen bekommen haben. Sollten es bei Ihrem Makro nicht gleich auf Anhieb klappen, noch ein guter Tip zuletzt. Schreiben Sie in die erste Zeile des Makros den Befehl »STEP()«. Damit schalten Sie in den Einzelschrittmodus um und der Ablauf des Makros läßt sich leicht nachvollziehen.
(wk)