Share via


&-Befehl

Nimmt eine Makrosubstitution vor.

& VarName[.cExpression]

Parameter

  • & VarName
    Gibt den Namen der Variablen oder des Arrayelements an, auf die bzw. das in der Makrosubstitution verwiesen wird. Es darf kein M.-Präfix hinzugefügt werden, durch das Variablen von Arrays unterscheiden werden. Hierdurch würde ein Syntaxfehler verursacht. Bezüglich der Länge sollte das jeweilige Makro die in Visual FoxPro für eine Anweisung maximal zulässige Länge nicht überschreiten.

    Eine Variable darf in einer Makrosubstitution nicht rekursiv auf sich selbst verweisen. Die beiden folgenden Anweisungen generieren z. B. eine Fehlermeldung:

    STORE '&gcX' TO gcX
    ? &gcX
    

    Anweisungen, in denen eine Makrosubstitution vorgenommen wird und die innerhalb einer DO WHILE-, FOR- oder SCAN-Schleife stehen, werden nur zu Beginn der jeweiligen Schleife ausgewertet. Änderungen an der Variablen oder dem Arrayelement, die innerhalb der Schleife auftreten, werden nicht erkannt.

  • .cExpression
    Das optionale Punkt-Trennzeichen (.) und .cExpression werden verwendet, um zusätzliche Zeichen an ein Makro anzuhängen. Mit .cExpression an das Makro angehängtes cExpression kann ebenfalls ein Makro sein. Ist cExpression der Name einer Eigenschaft, sollte ein zusätzlicher Punkt eingefügt werden (cExpression..PropertyName).

Hinweise

Bei einer Makrosubstitution wird der Inhalt einer Variablen oder eines Arrayelements als Zeichenfolgeliteral behandelt. Steht vor einer Variablen oder einem Arrayelement des Datentyps Zeichen (Character) ein Und-Zeichen (&), wird der jeweilige Makroverweis durch den Inhalt der Variablen bzw. des Elements ersetzt. Makrosubstitution können Sie in allen Befehlen und Funktionen einsetzen, für die Zeichenfolgeliterale zulässig sind.

Tipp   Verwenden Sie deshalb nach Möglichkeit einen Namensausdruck anstelle der Makrosubstitution. Ein Namensausdruck arbeitet wie die Makrosubstitution. Zu beachten ist jedoch, dass mit einem Namensausdruck nur Zeichenfolgen als Namen übergeben werden können. Wenn ein Befehl oder eine Funktion Namen (Datei-, Fenster-, Menünamen usw.) akzeptiert, sollten Sie Namensausdrücke verwenden, da diese erheblich schneller verarbeitet werden. Weiterführende Informationen zu Namensausdrücken finden Sie unter Überblick über die Sprache.

Die folgenden Befehle sind grundsätzlich völlig korrekt:

STORE 'customer' TO gcTableName
STORE 'company'  TO gcTagName
USE &gcTableName ORDER &gcTagName

Trotzdem sollten Sie stattdessen Namensausdrücke verwenden:

USE (gcTableName) ORDER (gcTagName)

Eine Makrosubstitution bietet sich immer dann an, wenn in einem Befehl ein Schlüsselwort ersetzt werden soll. Im folgenden Beispiel wird das aktuelle TALK-Setup in einer Variablen gespeichert, so dass dieses Setup an späterer Stelle des Programms wiederhergestellt werden kann. Das Original-TALK-Setup wird mit einer Makrosubstitution wiederhergestellt.

Beispiel

STORE SET('TALK') TO gcSaveTalk
SET TALK OFF
*  Additional program code
SET TALK &gcSaveTalk  && Restore original TALK setting

Siehe auch

STORE-Befehl | &&-Befehl | Überblick über die Sprache | Makrosubstitution