2015-11-17 49 views
6

Trong SAS, sự khác biệt giữa 'thoát' và 'chạy' là gì? các câu lệnh? Tôi không thể tìm ra khi nào nên dùng 'quit' và khi nào thì dùng 'run'? Ví dụ: tại sao là proc datasets sử dụng quit nhưng proc contents sử dụng runCác câu lệnh Quit vs Run trong SAS

Trả lời

12

Ngày này trở lại nơi SAS từng là một chương trình máy tính lớn (và vẫn có thể!).

RUN; là lệnh cho SAS chạy các câu lệnh được gửi. Quay trở lại những ngày trước của khung máy tính lớn, các câu lệnh sẽ được gửi đến SAS một lần (hoặc theo lô, nhưng khái niệm cốt lõi ở đây là mỗi dòng tách biệt với quan điểm của SAS). SAS chấp nhận các tuyên bố mà không làm bất cứ điều gì cho đến khi nó chạm vào một số RUN; hoặc một thứ khác sẽ tạo ra một ranh giới bước (một đường khác là DATA hoặc PROC, thường). Trong một bước dữ liệu, hoặc một proc không tương tác (proc có nghĩa là, ví dụ - một proc chỉ có thể làm một bộ hướng dẫn, và sau đó thoát), run yêu cầu nó làm (bất kỳ) và sau đó quay trở lại một phương tiện trống.

QUIT; được sử dụng trong môi trường lập trình tương tác. IML, SQL, nhiều quy trình hồi quy và mô hình hóa, FORMAT, TEMPLATE, DATASETS, v.v. - tất cả đều có thể được sử dụng tương tác, có nghĩa là, nhiều hơn một bộ hướng dẫn có thể được gửi đến chúng.

Trong các trường hợp tương tác này, bạn muốn SAS tiếp tục và chạy một số hướng dẫn, nhưng vẫn giữ môi trường PROC mở - câu lệnh tiếp theo của bạn sẽ nằm trong cùng một PROC, ví dụ. Một số người chạy ngay lập tức - PROC SQL là một ví dụ tốt về điều này - trong khi một số (đặc biệt là các PROC mô hình) RUN; làm điều gì đó (yêu cầu nó chạy mô hình cho đến nay) nhưng nó sẽ không thoát khỏi proc cho đến khi QUIT; gặp phải. ranh giới bước yêu cầu nó thoát, tức là dữ liệu/lệnh proc). Chúng được gọi là "nhóm chạy" và "chạy xử lý nhóm" là cụm từ bạn sẽ thấy được liên kết với nhóm đó.

Bạn sẽ thấy rằng một số người đặt run; quit; tại mọi điểm run; hoặc quit; có thể phù hợp; điều đó không làm hại bất cứ thứ gì, mặc dù nó cũng không thực sự là 'đúng'. Và có một số trường hợp cần phải làm điều đó!

Một ví dụ:

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

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

(từ run-group processing)

+1

Cảm ơn bạn, đó là hardcore. – Victor

Các vấn đề liên quan