2012-06-06 3 views
0

나는 10 년 동안의 데이터를 가지고 있고 그 수를 계산할 필요가있다. 변수 =. 및 일부 변수의 경우 변수 = 1의 수입니다. 매년 공통 변수와 몇 가지 변수가 있습니다. 다음 코드는 에 문제가 있습니다. 여기서 문은 다음과 같습니다. 다음은 오류 메시지입니다. 도움을 주셔서 감사합니다.매크로 변수 where 문

* ERROR 22-322 : 다음 중 하나를 기대 구문 오류 : +, 이름, 인용 된 문자열, 숫자 상수, 날짜 시간 상수, 누락 된 값 (, -, ALL , ANY, BTRIM는 계산 CASE는 INPUT은 PUT는, SELECT는 일부, SUBSTRING은 USER, 번역, 여기

모든 데이터 세트이다.

Year N_community 
2000 15339 
2001 15246 
2002 15142 
2003 14916 
2004 14500 
2005 14701 
2006 14732 
2007 14804 
2008 13651 
2009 13751 

다음은 코드입니다 :

+0

pleast 사용 옵션 MPRINT 스풀 전체 오류 메시지를 얻을 수 있습니다. – Shuguang

답변

0

이 문제를 해결하기 위해 수행해야 할 첫 번째 작업은 모든 매크로 코드를 제거하는 것입니다. 그런 다음 코드를 리터럴과 함께 사용합니다. 매크로 코드가 수행 할 코드를 복제합니다. 일단 당신이 일하는 해결책을 가지고 있다면, 조각으로 매크로 코드를 다시 넣으십시오. % PUT 문을 사용하여 매크로 변수가 올바르게 해석되는지 확인하십시오. 도움이 더 필요하면

, 후 충분한 샘플 데이터가 누군가가 코드를 실행하고 게시 된 나는 그것이 가능하다고 생각하지 않습니다 ... 오류를 볼 수 있도록

0

프로그램이 게시 정확히 같은 경우, 문제는 다음 문과 같습니다.

**where %scan(&Cmlist., &L.)=.;** 

해당 행을 주석 처리하려고했을 수 있습니다. 그렇더라도 SELECT 문을 종료하기 위해 세미콜론이 누락되었습니다. 단어 "quit;" SELECT의 일부로 실행됩니다.

+0

죄송합니다. where 문이 명령이 아닙니다. 그냥 강조하고 싶습니다 여기는 정확한 코드입니다 : {% scan (& Cmlist., &L.)=.;}. 실제로 ** 오류 메시지는 ** 여기에서 ** 오류가 발생합니다. – user1238178

0

사용

%unquote(where %scan(&Cmlist., &L.))=.;