2013-08-16 30 views
9

Domanda velocearresto SAS esecuzione

è un metodo c'è one-liner (o qualcosa di piuttosto breve) di annullare l'esecuzione di ulteriori dichiarazioni SAS da withing l'environement finestre.

Questi sono i methods che conosco ma diventano noiosi, specialmente in programmi enormi con molti commenti. Ho provato le istruzioni ABORT e STOP ma chiudono l'ambiente con finestre, ma tutto ciò che voglio è interrompere l'esecuzione a un certo punto e andare avanti alla mia maniera allegra.

Grazie

risposta

7

Questo è qualcosa che si apre su SAS-L ogni tanto. La risposta è che dipende in gran parte da quello che stai facendo.

Il metodo run cancel è probabilmente il migliore se si desidera interrompere l'esecuzione a causa di un errore. Nella parte superiore del vostro programma di fare:

%let cancel =; *or any macro variable name, but cancel is most logical; 

Poi in ogni passo familiare vi sono:

data whatever; 
... do stuff ...; 
run &cancel; 

E ogni volta che si ha un certo potenziale di errore, è controllare la condizione di errore e poi se colpisce , %let cancel=cancel; e tu sei bravo.

Se si utilizzano macro, è possibile uscire senza problemi da una macro con %abort se non si utilizzano opzioni o si utilizza solo cancel. A seconda di ciò che si sta facendo, è possibile impostare il codice in modo che venga eseguito in una macro (o macro) e utilizzare questa opzione (sebbene con lo svantaggio di perdere una certa chiarezza del registro).

Infine, se sei solo interessante nel riuscire a eseguire un sottoinsieme del tuo codice, ti consiglio di scrivere il codice in più programmi SAS per i bit che potresti voler eseguire separatamente, quindi utilizzare %include da un programma master a raggruppali tutti insieme con tutte le variabili macro che potresti desiderare impostate e condivise. Questo è simile a come in EG si dovrebbero costruire molti programmi più piccoli e quindi raggrupparli usando il diagramma di flusso del processo.

+2

FYI 'sql' proc ha anche un'opzione simile, chiamato' noexec'. La sintassi completa è 'proc sql noexec; .... fare cose.... ; quit'. Il contenuto del proc non verrà eseguito. Puoi usare la stessa tecnica descritta da Joe sopra anche per questo. –

1

ho usato il seguente

%abort cancel; 
+0

Questo ha funzionato per me. data _ null _; se e sitrouv> 0 quindi chiamare execute ( \t "proc sql noprint; \t \t ... sqlquery ...; \t" \t); \t altro annullamento annullamento; run; –