2017-09-06 5 views
0

이 포럼에서는 아래 코드를 (손길이 닿지 않은) 발견했습니다.이 포럼은 내가 찾고있는 것과 매우 비슷하지만 조정할 때 약간의 문제가 있습니다. 난 내 데이터 집합 단지 dictionary.tables (LIBNAME, memname, modate)에서 메타 데이터를 포함 (위의 제거 Millennium_Falcon 단계)을 가리키고있는 경우를 변경하려고하지만 경우조건을 기반으로 이메일을 보내십시오. (SAS)

data Millenium_Falcon; 
han='1'; 
luke='0'; 
darth='0'; 
run; 

filename myemail EMAIL 
to="[email protected]" 
cc="[email protected]" 
from="[email protected]" 
subject="Millenium Falcon" 
importance="HIGH" 
; 

data _null_; 
set Millenium_Falcon ; 
file myemail; 
IF (Luke = '1' and Darth = '0') then do; 
    put "Han,"; 
    put " "; 
    put "Look out for the asteroids."; 
    put " "; 
    put "Thank you."; 
    put " "; 
    put "Obi"; 
end; 
else do; 
    put '!EM_ABORT!'; 
end; 
stop; 
run; 

조정하기 전에,이 코드는 잘 작동 성명서는

IF (memname = 'TEST' and datepart(modate) = date()) then do; 

으로 보내지 않습니다. 이 작업을 수행하려면 데이터 단계 (아래)가 있어야합니다 (데이터 행처럼 작동해야합니다).

data Millenium_Falcon; 
han='1'; 
luke='0'; 
darth='0'; 
run; 

어떤 도움을 주시면 감사하겠습니다.

많은 감사

아론

+0

FILE 문을 사용하여 최종 데이터 단계를 실행하면 어떻게됩니까? PUT '! EM_ABORT!' SAS 로그에? – Tom

+0

예, 로그에 표시됩니다. – Aaron

+0

그래서 EMAIL이 발송되지 않았습니다. 그것이 당신이 원하는 결과를 얻기 위해 당신의 논리를 디버깅하면 귀하의 데이터를 주어진 기대하지 않습니다. 예를 들어, 오늘 날짜의 MODATE 값을 가진 테이블이 있는지? – Tom

답변

0

당신은 아마 더 레코드가 기준을 충족하지 그렇지 않으면 할 수있는 값의 목록을 생성 할 때 중지 것 같은 것을 원한다.

data _null_; 
    file myemail; 
    if _n_=1 and eof then put '!EM_ABORT!'; 
    set have end=eof ; 
    where (memname = 'TEST' and datepart(modate) = date()) ; 
    put memname= modate= ; 
run;