Ich bin mir nicht ganz sicher, wonach Sie suchen... aber hier sind ein paar verwandte Punkte. Stata ist so ähnlich wie ein Unix-Shell-Skript oder eine Windows-Batch-Datei. Jede Zeile führt einen Befehl aus, und das erste Wort ist der Befehlsname. Konventionell haben die meisten Befehle die folgende Struktur:
command [varlist] [=exp] [if expression] [in range] [weight] [using filename] [, options]
Klammern [.] bedeuten, dass es optional ist (oder nicht verfügbar, je nach Befehl). Einigen Befehlen kann ein Präfix vorangestellt werden (z. B. by:
, xi:
o svy:
) Die Syntax der Befehle von Stata Corp und erfahrenen Benutzern ist ziemlich einheitlich. Da aber auch Stata-Benutzer Befehle schreiben, sehen Sie gelegentlich Dinge, die verrückt sind.
Wenn Stata-Benutzer Befehle schreiben, werden diese in .ado-Dateien (nicht .do) gespeichert und mit der program
Befehl. (Siehe help program
und im Abschnitt "Ado-Dateien" des Handbuchs). Das Schreiben eines Befehls ist vergleichbar mit dem Schreiben einer Funktion in anderen Sprachen (z.B. MatLab)
En syntax
wird verwendet, um Ihnen beim Schreiben Ihres eigenen Befehls zu helfen. Wenn Sie einen Befehl ausführen, wird alles, was dem Befehlsnamen ( command
oben) wird im lokalen Makro an das Programm übergeben `0'
. Der Syntaxbefehl parst dieses lokale Makro, so dass Sie auf `varlist'
o `if'
und so weiter. Theoretisch könnte man `0'
selbst, aber der Syntax-Befehl macht es Ihnen und Ihren Benutzern viel einfacher (solange Sie sich an die konventionelle Syntax halten). Ich habe unten ein Beispiel angefügt.
Ich weiß nicht genau, was Sie mit "scheinbarem Fehlen von lokalen Variablen, wie sie in anderen Sprachen bekannt sind" meinen. Makros speichern eine einzelne Zeichenkette oder eine einzelne Zahl im Speicher. Hier ist ein Kommentar Ich habe über die lokalen/globalen Makros von Stata geschrieben. Sie sind in der Tat ein einzigartiges Merkmal der Programmiersprache von Stata. Wie ihre Namen andeuten, sind "lokale" Makros nur innerhalb eines bestimmten Programms (Befehls) oder einer .do-Datei verfügbar, während "globale" Makros in der gesamten Stata-Sitzung verfügbar sind.
Sobald ich mich an Makros in Stata gewöhnt hatte, stellte ich fest, dass ich sie in anderen Sprachen zu vermissen begann. Sie sind ziemlich praktisch. Zusätzlich zu den (lokalen/globalen) Makros und dem Hauptdatensatz können Sie auch "Dinge" im Speicher speichern, indem Sie die scalar
y matrix
Befehle (und ein oder zwei andere obskure Dinge).
Ich hoffe, das hilft. Hier ist eine Liste mit Ressourcen die helfen könnten.
例
program define myprogram
syntax varlist [if], [hello(string) yes]
macro list _0 _varlist _if _hello _yes
summarize `varlist' `if'
display "Here's the string in my hello option: `hello'"
if !missing("`yes'") di "Yes is on"
else di "Yes is off"
end
sysuse auto.dta
myprogram rep78 headroom if price > 5000 , hello("world") yes