&-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