Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ m4(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

m4(1)                                                                 m4(1)

NAME
     m4 - Makroprozessor

SYNTAX
     m4 [Option...] [Datei...]

BESCHREIBUNG
     Das Kommando m4 ist ein Makroprozessor, der für C, Assembler und
     andere Sprachen geeignet ist. Alle Argument-Dateien werden der Reihe
     nach verarbeitet; sind keine Dateien vorhanden oder lautet ein Datei-
     name -, wird von Standardeingabe gelesen. Der verarbeitete Text wird
     auf die Standardausgabe geschrieben.

OPTIONEN
     -e     Interaktiver Betrieb. Unterbrechungen werden ignoriert, und die
            Ausgabe ist ungepuffert.

     -s     Zeilennummer-Anpassung für den C-Präprozessor einschalten
            (#line...).

     -B int Größe der Rückstell- und Argumentpuffer ändern (Standard
            4.096).

     -H int Größe des Hash-Feldes für die Symboltabellen ändern (Standard
            199).

            Diese Größe sollte eine Primzahl sein.

     -S int Größe des Aufrufpuffers ändern (Standard 100 Einträge).

            Makros benötigen drei Einträge im Aufrufpuffer, Nicht-
            Makroargumente einen Eintrag.

     -T int Größe des Token-Puffers ändern (Standard: 512 Bytes).

     Um wirksam zu sein, müssen die oben angeführten Optionen vor den
     Dateinamen und vor den Optionen -D oder -U erscheinen. Die Reihenfolge
     der Optionen -D und -U ist wichtig.

     -D Name[=Wert]
            Definiert Name zu Wert oder Null, falls Wert nicht angegeben
            ist.

     -U Name
            Löscht die Definition von Name.

     --     Ende der Optionenliste. Die Angabe ist nötig, wenn der erste
            Dateiname mit - beginnt.







Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

m4(1)                                                                 m4(1)

     Makroaufrufe haben das Format:

          Name(arg1,arg2, ..., argn)

     Zwischen Klammer und Makronamen darf kein Leerzeichen stehen. Wenn auf
     den Namen eines definierten Makros nicht ( folgt, wird angenommen, daß
     es sich um einen Aufruf des Makros ohne Argumente handelt. Makronamen
     bestehen aus alphanumerischen Ziffern und dem Unterstrich wobei das
     erste Zeichen keine Ziffer sein darf.

     Führende Leerzeichen ohne Anführungszeichen, Tabulatoren und Neue-
     Zeile-Zeichen werden während der Sammlung von Argumenten ignoriert.
     Für die Darstellung von Zeichenketten werden einfache Anführungszei-
     chen verwendet. Der Wert einer mit Anführungszeichen umschlossenen
     Zeichenkette ist die Zeichenkette nach Entfernung der Anführungszei-
     chen.

     Wenn ein Makroname erkannt wird, werden seine Argumente beim Suchen
     nach der zugehörigen rechten Klammer gesammelt. Wenn weniger Argumente
     geliefert werden als in der Makrodefinition enthalten sind, werden die
     nachfolgenden Argumente als Null verstanden. Die Makroauswertung läuft
     normalerweise während der Sammlung der Argumente ab, und Kommata oder
     rechte runde Klammern, die sich innerhalb des Wertes eines verschach-
     telten Aufrufs befinden, werden genauso behandelt, wie die entspre-
     chenden Zeichen im ursprünglichen Eingabetext. Nach der Argumentsamm-
     lung wird das Makro in die Eingabe zurückgeschrieben und wieder auf
     Ersetzung geprüft.

     m4 stellt nachstehende vordefinierte Makros zur Verfügung. Diese
     Makros können neudefiniert werden, dann geht jedoch ihre ursprüngliche
     Bedeutung verloren. Ihre Werte sind Null, sofern keine anderen Angaben
     vorliegen.

     changecom
          ändert die Standardeinstellung für linke (#) und rechte (Neue-
          Zeile) Kommentarmarkierung. Ohne Argumente ist der Kommentarme-
          chanismus abgeschaltet. Bei einem Argument wird die linke Markie-
          rung gemäß dem Argument gesetzt, und die rechte Markierung bleibt
          Neue-Zeile. Bei zwei Argumenten werden beide Markierungen geän-
          dert. Kommentarmarkierungen können bis zu fünf Zeichen lang sein.

     changequote
          ändert linke und rechte Anführungszeichen-Symbole (zwei Argu-
          mente).

          Die Symbole können bis zu fünf Zeichen lang sein. changequote
          ohne Argumente stellt die ursprünglichen Werte wieder her (d. h.
          "").

     decr gibt den um 1 verringerten Wert des Arguments zurück.

     define


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

m4(1)                                                                 m4(1)

          erwartet zwei Argumente, wobei das erste den Namen und das zweite
          den Wert des Makros angibt. Jedes $n im Ersatztext wird durch das
          n-te Argument ersetzt; n entspricht einem Wert von 1 bis 9. Feh-
          lende Argumente werden durch die Nullzeichenkette ersetzt; $#
          wird durch die Anzahl der Argumente ersetzt; $* wird durch eine
          Liste aller durch Kommata voneinander getrennten Argumente
          ersetzt; $@ hat dieselbe Bedeutung wie $*, wobei jedoch jedes
          Argument in (die aktuellen) Anführungszeichen gesetzt wird.

     defn gibt die Definition des Arguments in Anführungszeichen zurück.
          Dies ist für die Umbenennung von Makros, insbesondere vordefi-
          nierten, nützlich.










































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

m4(1)                                                                 m4(1)

     divert m4
          arbeitet mit 10 Ausgabedateien, die von 0 bis 9 numeriert sind.
          Die Endausgabe ist die Verkettung dieser Ausgabedateien in nume-
          rischer Reihenfolge. Am Anfang ist Datei 0 die aktuelle Datei.
          Das Makro divert (umlenken) legt die aktuelle Ausgabedatei auf
          das angegebene (Ziffernfolge-) Argument. Ausgaben, die in eine
          Datei umgelenkt werden, die keine Numerierung zwischen 0 und 9
          aufweist, werden gelöscht.

     divnum
          gibt den Wert des aktuellen Ausgabekanals als Zeichenkette
          zurück.

     dnl  liest und löscht Zeichen einschließlich des nächsten Neue-Zeile-
          Zeichens.

     dumpdef
          gibt aktuelle Namen und Definitionen für die angegebenen Einhei-
          ten aus oder für alle, wenn keine Argumente angegeben werden.

     errprint
          gibt sein Argument an die Fehler-Ausgabedatei.

     eval bewertet das Argument unter Anwendung der 32-Bit-Arithmetik als
          arithmetischen Ausdruck. Zu den Operatoren gehören +, -, *, /, %,
          ** (Potenzierung), bitweises &, |, ^ und ~, Relationen, runde
          Klammern. Oktal- und Hexadezimalzahlen können wie in C spezifi-
          ziert werden. Das zweite Argument liefert die Basis für das
          Ergebnis; der Standardwert ist 10. Das dritte Argument kann zur
          Angabe der Mindestanzahl von Ziffern im Ergebnis verwendet wer-
          den.

     ifdef
          Wenn das erste Argument definiert und ungleich 0 (Null) ist, ist
          der Wert das zweite Argument, sonst das dritte. Wenn es kein
          drittes Argument gibt, ist sein Wert Null.

     ifelse
          setzt Texte bedingt in den Ausgabetext ein.

          ifelse erwartet drei oder mehr Argumente. Wenn das erste Argument
          dieselbe Zeichenkette wie das zweite Argument ist, dann wird das
          dritte Argument zurückgeliefert. Ist dies nicht der Fall und lie-
          gen mehr als vier Argumente vor, wird der Prozeß mit den weiteren
          Argumenten wiederholt. Andernfalls ist der Wert entweder die
          vierte Zeichenkette oder Null, wenn es diese nicht gibt.

     include
          gibt den Inhalt der im Argument angegebenen Datei zurück.

     incr gibt den um 1 erhöhten Wert des Arguments zurück. Der Wert des
          Arguments wird berechnet, indem die Anfangsziffernfolge als


Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

m4(1)                                                                 m4(1)

          Dezimalzahl interpretiert wird.

     index
          gibt die Position im ersten Argument zurück, an der das zweite
          Argument (Nullursprung) beginnt, oder -1, wenn das zweite Argu-
          ment nicht vorhanden ist.

     len  gibt die Anzahl der Zeichen des Arguments zurück.

     maketemp
          füllt die Zeichenkette XXXXX im Argument mit der aktuellen Pro-
          zeßnummer auf.

     m4exit m4
           wird sofort beendet. Das erste Argument ist, falls angegeben,
          der Endestatus; der Standard ist 0.

     m4wrap
          das erste Argument wird an das endgültige Dateiende zurückge-
          stellt.

     popdef
          löscht die aktuelle Definition des Arguments und macht gegebenen-
          falls eine frühere Definition wieder sichtbar.

     pushdef
          hat dieselbe Bedeutung wie define, sichert jedoch die vorherge-
          hende Definition.

     shift
          gibt alle Argumente außer dem ersten Argument zurück. Die anderen
          Argumente werden mit Anführungszeichen versehen und nach Einfügen
          von Kommata zwischen den einzelnen Argumenten zurückgestellt.
          Durch die Anführungszeichen wird verhindert, daß die Argumente
          später zusätzlich überprüft werden.

     sinclude
          arbeitet wie include mit folgendem Unterschied: m4 gibt keine
          Meldung aus, wenn nicht auf die Datei zugegriffen werden kann.

     substr
          gibt eine Teilzeichenkette des ersten Arguments zurück. Das
          zweite Argument ist die Position des ersten Zeichens (von 0 ab
          gezählt); das dritte Argument zeigt die Länge der Teilzeichen-
          kette an. Fehlt das dritte Argument, endet die Teilzeichenkette
          mit der Original-Zeichenkette.

     syscmd
          führt das Reliant UNIX Systemkommando aus, das im ersten Argument
          angegeben wird. Ein Wert wird nicht zurückgegeben.

     sysval


Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

m4(1)                                                                 m4(1)

          ist der Rückgabewert des letzten Aufrufs von syscmd.

     traceon
          schaltet die Ablaufverfolgung für die angegebenen Makros ein

          Werden keine Makros angegeben, wird die Ablaufverfolgung für alle
          Makros, einschließlich eingebauter, eingeschaltet.

     traceoff
          schaltet die Ablaufverfolgung global und für angegebene Makros
          ab. Bei Makros, die explizit mit traceon verfolgt werden, kann
          die Ablaufverfolgung nur durch explizite Aufrufe von traceoff
          abgeschaltet werden.

     translit
          übersetzt die Zeichen des ersten Arguments, indem die Buchstaben
          der Menge des zweiten Arguments gegen die Buchstaben der Menge
          des dritten Arguments ausgetauscht werden. Abkürzungen sind nicht
          zulässig.

     undefine
          erwartet als Argument ein Makro, dessen Definition gelöscht wird.

     undivert
          liefert alle Ausgaben in numerischer Reihenfolge. Werden Argu-
          mente angegeben, liefert undivert die gewünschten Ausgaben aus
          den angegebenen Ausgabepuffern in der angegebenen Reihenfolge.

INTERNATIONALE UMGEBUNG
     Die Sprache der Meldungstexte wird durch die Umgebungsvariablen
     LCALL, LCMESSAGES oder LANG bestimmt.

     In der Standardeinstellung verhält sich das System so, als wäre es
     nicht internationalisiert, d. h. die Meldungstexte erscheinen in eng-
     lischer Sprache. Wenn Sie die Sprache der Meldungstexte ändern wollen,
     müssen Sie eine dieser Variablen entsprechend setzen.

     Ausführliche Informationen zu den Abhängigkeiten der Umgebungsvaria-
     blen und zur Internationalisierung im allgemeinen finden Sie im Hand-
     buch "Leitfaden für Programmierer: Internationalisierung - Lokalisie-
     rung". Zur Einstellung der Benutzerumgebung siehe auch environ(5).

SIEHE AUCH
     cc(1).

     Kapitel "m4" in "Leitfaden und Werkzeuge für die Programmierung mit
     C".







Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026