Je ne suis pas exactement sûr de ce que vous cherchez ... mais voici quelques points connexes: Stata est un peu comme écrire un Unix . script shell ou un fichier de commandes de Windows Chaque ligne exécute une commande, et le premier mot est le nom de la commande Par convention, la plupart des commandes ont la structure suivante:. [.]
command [varlist] [=exp] [if expression] [in range] [weight] [using filename] [, options]
Supports signifie qu'il est en option (ou indisponible , en fonction de la commande) Certaines commandes peuvent être préfixées (par exemple by:
, xi:
ou svy:
) La syntaxe des commandes de Stata Corp et des utilisateurs expérimentés est assez cohérente. Les utilisateurs de Stata écrivent aussi des commandes, vous voyez parfois des choses farfelues. Lorsque les utilisateurs Stata écrivent des commandes, ils sont enregistrés dans des fichiers .ado (pas .do) et sont définis à l'aide de la commande program
. (Voir help program
et la section « Fichiers Ado » du manuel.) L'écriture d'une commande est semblable à l'écriture d'une fonction dans d'autres langues (par exemple, Matlab)
La commande syntax
est utilisé pour vous aider à écrire votre propre commande. Lorsque vous exécutez une commande, tout ce qui suit le nom de la commande (command
ci-dessus) est transmis au programme dans la macro locale `0'
. La commande de syntaxe analyse cette macro locale, de sorte que vous pouvez référencer `varlist'
ou `if'
et ainsi de suite. En théorie, vous pouvez analyser vous-même `0'
, mais la commande de syntaxe le rend beaucoup plus facile pour vous et vos utilisateurs (tant que vous suivez la syntaxe conventionnelle). Je mets un exemple en bas.
Je ne sais pas exactement ce que vous entendez par «absence apparente de variables locales telles que connues dans d'autres langues». Les macros stockent une seule chaîne ou un seul numéro en mémoire. Here's a comment J'ai écrit sur les macros locales/globales de Stata. Ils sont en effet une caractéristique unique du langage de programmation de Stata. Comme leur nom l'indique, les macros "locales" ne sont disponibles que dans un fichier programme (commande) ou .do tandis que les macros "globales" sont disponibles dans une session Stata.
J'ai découvert que, une fois habitué aux macros dans Stata, j'ai commencé à les manquer dans d'autres langues. Ils sont très pratiques. En plus des macros (locales/globales) et de l'ensemble de données principal, vous pouvez également stocker des "choses" en mémoire avec les commandes scalar
et matrix
(et une ou deux autres choses obscures).
J'espère que cela aide. Here's a list resources qui pourrait aider.
Exemple:
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
Votre question est-elle juste "Y at-il un bon guide de démarrage rapide"? Ou voulez-vous savoir quelque chose sur les fonctionnalités du langage? Dans les deux cas, vous n'avez probablement pas besoin de ces fonctionnalités de programmation, du moins pour l'instant. – Marcin
@ Marcin: Je veux comprendre la langue, plutôt que de pouvoir l'appliquer à un problème. Qu'est-ce qui vous fait penser que je n'ai pas besoin de ces fonctionnalités? Je suis censé reprendre une base de code d'un collègue qui utilise ces fonctionnalités, c'est ainsi que je les ai découvert ... – blubb
Je pense que parce que je connais d'autres langages qui utilisent de telles fonctionnalités. Il n'y aura pas de calculs qui les exigent activement, à moins que votre langage soit très, très funky. Apprenez le reste de la langue avant d'essayer de déployer ces fonctionnalités dans un nouveau code. – Marcin