Wie das Makro arbeitet
Es soll ein Makro geschrieben werden, das die Schlüsselwörter aus den Abschnitten der Hilfedatei (help) extrahiert und in eine neue Datei schreibt.
Der folgende Ausschnitt aus der Hilfedatei (help) verdeutlicht, was unter einem "Schlüsselwort" zu verstehen ist.
=======================================================
^AUTO_NEW_SCREEN
AUTO_NEW_SCREEN function
---->(AUTO_NEW_SCREEN)---->+------>(ON)----->+---->
| |
`------>(OFF)---->'
The AUTO_NEW_SCREEN function allows you to select ...
.
.
=======================================================
In diesem Beispiel beschreibt der Abschnitt die AUTO_NEW_SCREEN-Funktion. Das Schlüsselwort ist AUTO_NEW_SCREEN. Das ist die Zeichenfolge, die in die Ausgabedatei geschrieben werden soll.
Nach einem Schlüsselwort kann auf zwei Arten gesucht werden:
• Suchen Sie nach ^, und ziehen Sie die Zeichenfolge hinter ^. oder
• Suchen Sie die Zeichenfolge command oder function. Verwenden Sie dann die vorhergehende Zeichenfolge.
Für die Programmierung ist die erste Methode besser. Der Prozessor muss eine Datei nur vorwärts prüfen. Bei der zweiten Methode muss der Prozessor vorwärts suchen, bis er command oder function findet und dann rückwärts, um die vorangehende Zeichenfolge zu finden. Wir verwenden die erste Methode.
Nächstes Beispiel:
=======================================================
^CANCEL ESC STOP INTERRUPT BREAK
^ABORT
^Meview_cancel
CANCEL command
---->(CANCEL)---->
CANCEL cancels the current activity ...
.
.
=======================================================
In diesem Beispiel ist ^CANCEL, ^ABORT und ^Meview_cancel ^ vorangestellt. Wir möchten jedoch nur CANCEL in unserer Ausgabedatei verwenden. Wir möchten nicht ABORT oder Meview_cancel einschließen, da sich diese Zeichenfolgen auf andere Abschnitte der Hilfedatei (help) beziehen. Das Makro muss den Rechner also anweisen, in einem Abschnitt nur die erste Zeichenfolge nach ^ als Schlüsselwort zu erkennen und alle weiteren Zeichenfolgen zu ignorieren.
Vor der Beschreibung des Textmakros muss Folgendes erwähnt werden. Unser Makro muss nach Leerzeichen in den Zeilen suchen. Im vorherigen Beispiel ist ^CANCEL von der folgenden Zeichenfolge ESC durch ein Leerzeichen getrennt. Manchmal werden Leerzeichen verwendet, um das Ende von Zeichenfolgen zu markieren. Sehen wir uns nun diesen Abschnitt der Hilfedatei (help) erneut an:
=======================================================
^AUTO_NEW_SCREEN
AUTO_NEW_SCREEN function
---->(AUTO_NEW_SCREEN)---->+------>(ON)----->+---->
| |
`------>(OFF)---->'
The AUTO_NEW_SCREEN function allows you to select ...
.
.
=======================================================
Die erste Zeile des Abschnitts ist ^AUTO_NEW_SCREEN. Es ist wichtig zu wissen, dass diese Zeile bei der Anzeige am Bildschirm mit Leerzeichen aufgefüllt wird. Diese Leerzeichen sind jedoch in der Datei nicht enthalten. Direkt hinter dem letzten N von AUTO_NEW_SCREEN befindet sich ein Zeilenvorschubzeichen, das nicht auf dem Bildschirm, sondern nur in der Datei angezeigt wird. Das Zeilenvorschubzeichen hat den hexadezimalen ASCII-Wert 0A. In der Programmiersprache C wird als Zeilenvorschubzeichen ein "\n" verwendet. Die erste Zeile im Beispiel enthielte also demnach in der Datei folgende Zeilenvorschubzeichen:
^AUTO_NEW_SCREEN\nAUTO_NEW_SCREEN function\n\n ... (and so on)
"\n" ist hier mit zwei Zeichen dargestellt. In Wirklichkeit besteht das Zeilenvorschubzeichen jedoch nur aus einem Zeichen.