2015-11-17 17 views
6

W SAS, jaka jest różnica między "zakończ" i "uruchom"? sprawozdania? Nie potrafię określić, kiedy użyć "zamknąć" i kiedy użyć "uruchom"? Na przykład, dlaczego jest proc datasets użyciu quit ale proc contents użyciu runInstrukcje "odejmij vs uruchom" w SAS

Odpowiedz

12

ta sięga gdzie SAS kiedyś program mainframe (i nadal może być!).

RUN; to polecenie dla SAS do uruchamiania złożonych oświadczeń. W starszych dniach mainframe, oświadczenia były przesyłane do SAS pojedynczo (lub partiami, ale podstawową koncepcją jest to, że każda linia jest odrębna od punktu widzenia SAS). SAS akceptuje instrukcje bez robienia czegokolwiek, dopóki nie trafi na RUN; lub coś innego, co tworzy granicę kroku (zwykle inna linia DATA lub PROC). W etapie danych lub nieinteraktywnym proc (proc oznacza na przykład - proc, który może wykonać tylko jeden zestaw instrukcji, a następnie kończy działanie), run mówi, że ma zrobić (cokolwiek), a następnie powraca do pustej planszy.

QUIT; jest używany w interaktywnych środowiskach programistycznych. IML, SQL, wiele regresji i modelowania PROC, FORMAT, SZABLON, DATASETY itd. - wszystkie mogą być używane interaktywnie, co oznacza, że ​​można do nich wysłać więcej niż jeden zestaw instrukcji.

W tych interaktywnych przypadkach, chcesz, aby SAS kontynuował i uruchamiał niektóre instrukcje, ale nadal utrzymuje to środowisko PROC otwarte - twoje następne oświadczenie będzie na przykład w tym samym PROC. Niektóre z nich działają od razu - PROC SQL jest tego dobrym przykładem - podczas gdy niektóre (w szczególności PROC modelowania) RUN; coś robią (mówi, aby uruchomić model do tej pory), ale nie wyjdzie z procesu dopóki nie napotkane zostanie QUIT; (lub inny granicę kroku, która wymaga, aby została zakończona, tj. instrukcja data/proc). Są one nazywane "grupami uruchomieniowymi", a "uruchom przetwarzanie grup" jest terminem, który można zobaczyć z tym związany.

Przekonasz się, że niektórzy ludzie umieszczają run; quit; w każdym punkcie, który może być odpowiedni dla run; lub; to nic nie boli, chociaż nie jest tak naprawdę "słuszne". I są pewne przypadki, w których jest to konieczne!

Jeden przykład:

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

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

(od run-group processing)

+1

Dziękuję, że był Hardcore. – Victor