Seite 1 von 1

Stop/Break/Pause

BeitragVerfasst: Do 20. Feb 2014, 16:33
von Paco
Hallo,

Ich doktor grad an einer viel zu lang geratenen Do-File rum und bin auch nach langem Suchen nicht schlauer als zuvor. Ich habe zwei Anliegen und hoffe, dass man mir helfen kann:

1.) Da das Script als solches durch seine Länge zu unübersichtlich geworden ist, würde ich gerne so etwas wie "stop"-Befehle einbinden. z.B. Ich drücke den Play-Button. Das Do-File läuft durch bis zu einem bestimmten Punkt X, dann kommt der Stopbefehl, das Script pausiert und wird erst nach einem Befehl von diesem Punkt aus fortgeführt - Ich möchte nicht die Buttons nutzen. Im Idealfall wäre es sogar noch so, dass ich über "di "Drücken Sie Taste XY um fortzusetzen"" aufgefordert werde.
Das ganze ist notwendig, weil ich aufgrund der bis zu diesem Punkt durchgeführten Schritte, händisch einige Zeilen nachtragen muss, im Anschluss soll das Do-File wieder seine Arbeit verrichten.

2.) Der Datensatz, auf den die Prozeduren angewandt werden sollen, ist das "Merge"-Produkt verschiedener kleinerer Datensätze. Dementsprechend sind im Do-File die Prozeduren logisch nach den einzelnen Bereichen, auf die sie angewandt werden sollen, sortiert. Könnte ich diese kleineneren Teilabschnitte auslagern und in einer übergeordneten Do-File alle anderen Do-Files einbinden? Ist es sinnvoll eine Art "Meta"-Do-File zu erstellen?

Vielen lieben Dank!
Grüße, Paco

Re: Stop/Break/Pause

BeitragVerfasst: Do 20. Feb 2014, 16:46
von daniel
Zu (1). Füge an die Stellen, an denen Du eine Unterbrechung wünschst

Code: Alles auswählen
se more on
di "press any key or click on -more- to continue"
more
se more off


Zu (2). Das kann sinnvoll sein. Do-files können einfach andere do-files aufrufen. Schau mal unter -help do- und -help run- nach. Das Grundprinzip ist etwa

Code: Alles auswählen
do merge1.do
do megre2.do

Re: Stop/Break/Pause

BeitragVerfasst: Fr 21. Feb 2014, 13:52
von Paco
Funktioniert wie gewünscht. Super! Danke!!!

Re: Stop/Break/Pause

BeitragVerfasst: Do 27. Feb 2014, 12:39
von Paco
Eine Frage hätte ich doch noch:

Ist es möglich, dass ich in dem Befehl zum Stoppen/Fortsetzen des dofiles exakt festlege welche Taste gedrückt bzw. welcher Text eingegeben werden muss, damit die Ausführung fortgesetzt wird?

Vielen Dank und Grüße
Paco

Re: Stop/Break/Pause

BeitragVerfasst: Do 27. Feb 2014, 13:01
von daniel
Lässt sich vielleicht programmieren, aber ich sehe nicht, wesshalb sich dieser Aufwand lohnen sollte.

Schau mal bei

Code: Alles auswählen
help pause


rein.

Re: Stop/Break/Pause

BeitragVerfasst: Fr 28. Feb 2014, 12:08
von Limerick
Hallo,

Ich hab ein ähnliches Problem. Ich möchte gerne die Pause in einer Bedingung einsetzen, etwa wie folgt:

list Var1 Var2 if (Var3=="Ausdruck")
if Var3=="Ausdruck" {
pause on
}
else {
pause off
}
pause Nachtragen fehlender Codes - Fortsetzung: Gebe "End" oder "q" ein!
// Hier folgt ein di nur um zu schauen, ob die Pause richtig funktioniert
di "hallo"

Leider bekomme ich durch Stata die Rückmeldung, dass die geschwungene Klammer am Ende von "pause on" problematisch ist. Wo ist der Haken?

Vielen Dank schon mal!

Re: Stop/Break/Pause

BeitragVerfasst: Fr 28. Feb 2014, 12:49
von daniel
Mal ganz ab von dem von Dir vermuteten Problem hast Du sehr wahrscheinlich noch ein anderes. Ich gehe davon aus, dass Var1-Var3 Variablennamen sind?

Die Bedingung

Code: Alles auswählen
if Var3=="Ausdruck"


prüft, ob die erste Beobachtung in Var3 "Ausdruck" entspricht. Sehr wahrscheinlich ist das nicht das, was Du möchtest. Beachte den enormen Unterschied zwischen einem -if- qualifier (z.b. -list if exp-), der sich im Sinne von Variablen auf (die Elemente von) Vecotren beziehen lässt, und dem -if- Befehel (-if exp ...), der zum programmieren Verwendet wird und sich nur auf scalare Ausdrücke beziehen lässt.