2015-11-17 15 views
6

In SAS, qual è la differenza tra "esci" e "Esegui"? affermazioni? Non riesco a capire quando usare 'esci' e quando usare 'esegui'? Per esempio, perché è proc datasets utilizzando quit ma proc contents utilizzando runIstruzioni su Esci contro Esegui in SAS

risposta

12

Questo risale a dove SAS usato per essere un programma di mainframe (e ancora può essere!).

RUN; è un comando per SAS per eseguire le istruzioni inviate. Nei vecchi giorni del mainframe, le dichiarazioni sarebbero state inviate al SAS una alla volta (o in batch, ma il concetto base qui è che ogni linea è separata dal punto di vista di SAS). SAS accetta le istruzioni senza fare nulla finché non raggiunge uno RUN; o qualcos'altro che creerebbe un limite di passaggio (un'altra linea DATA o PROC, in genere). In un passaggio di dati o in un processo non interattivo (proc significa, ad esempio, un proc in grado di eseguire solo una serie di istruzioni e quindi uscire), run indica di eseguire (qualsiasi cosa) e quindi di tornare a una lavagna vuota.

QUIT; viene utilizzato in ambienti di programmazione interattiva. IML, SQL, molti dei PROC di regressione e modellazione, FORMAT, TEMPLATE, DATASET, ecc. - tutti possono essere utilizzati in modo interattivo, ovvero è possibile inviare più di un set di istruzioni.

In questi casi interattivi, si desidera che SAS esegua alcune delle istruzioni, ma mantenga aperto l'ambiente di PROC - la prossima istruzione si troverà nello stesso PROC, ad esempio. Alcuni di questi vengono eseguiti immediatamente - PROC SQL ne è un buon esempio - mentre alcuni (in particolare i PROC di modellazione) RUN; eseguono qualcosa (dice di eseguire il modello fino ad ora) ma non escono dal processo fino a quando non viene rilevato QUIT; (o altro limite di passo che richiede di uscire, cioè una dichiarazione di dati/proc). Questi sono chiamati "gruppi di esecuzione" e "elaborazione di gruppo di esecuzione" è il termine che vedrai associato a questo.

Troverete che alcune persone mettono run; quit; in ogni punto che run; o quit; potrebbe essere appropriato; ciò non danneggia nulla, anche se non è proprio "giusto". E ci sono alcuni casi in cui è necessario farlo!

Un esempio:

/* first run group*/ 
proc gplot data=sales; 
    title1 "Sales Summary"; 
    plot sales*model_a; 
run; 

     /* second run group */ 
    plot sales*model_b; 
run; 
quit; 

(da run-group processing)

+1

Grazie, che era hardcore. – Victor