2014-01-09 6 views
0

이 포럼을 사용하여 SAS EG 작업 및 쿼리에서 프롬프트 생성 및 사용에 대한 정보를 수집했습니다. 그러나 Base SAS에서 내 자신의 구문을 전송하거나, 내가 작성한 참조 프롬프트/매크로를 통합하여 작동시키지 못합니다.SAS EG로 구문 전송 및 프롬프트 통합

현재, SAS EG의 포인트 - 클릭 선택에 의해 생성 된 것보다는 내 자신의 프로그램에서 프롬프트를 참조 할 때마다 로그에서 SAS가 매크로 참조를 해석 할 수 없다고 알려줍니다.

내 프로그램을 SAS EG로 전송 한 다음 프롬프트를 통합하려면 어떻게해야합니까?

내가 테스트 데이터 세트를 개발하는 데 사용

예제 코드 :

102  PROC SQL; 
103   CREATE TABLE WORK.TESTSCORES2 AS 
104   SELECT &Genders 
WARNING: Apparent symbolic reference GENDERS not resolved. 
104   SELECT &Genders 
        _ 
        22 
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, 
       a numeric constant, a datetime constant, a missing value, BTRIM, INPUT, PUT, 
       SUBSTRING, USER. 

105    FROM WORK.TESTSCORES; 
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements. 
106  QUIT; 
NOTE: The SAS System stopped processing this step because of errors. 
NOTE: PROCEDURE SQL used (Total process time): 
     real time   0.00 seconds 
     cpu time   0.00 seconds 
:

data work.testscores; 
    input Gender $ 1-6 SATScore 8-11 IDNumber 13-20; 
    datalines; 
Male 1170 61469897 
Female 1090 33081197 
Male 1240 68137597 
Female 1490 9589297 
Male 1200 93891897 
Female 1080 26212897 
Male 1050 8945097 
Female 1200 51799397 
Male 1600 39196697 
; 
run; 

/생성 성별 성별 변수/

PROC SQL; 
    CREATE table WORK.testscores2 as 
     SELECT &Genders, SATScore 
    FROM WORK.TESTSCORES 
; 
QUIT; 

로그를 사용하여 프롬프트 관리자에서 프롬프트를

감사, A

+0

코드 및 로그의 예를 제공 할 수 있습니까? SAS 코드 또는 EG 프롬프트 관리자에 의해 매크로 변수가 어떻게 생성되었는지는 기본적으로 차이가 없습니다. 아마도 코드에 몇 가지 문제가있을 수 있습니다. –

+0

물론 Shopin에게 감사드립니다. – user3172035

+0

나는이 프롬프트를 프로그램에 할당 했으므로, 프로그램을 실행할 때 프롬프트 창이 나타나고 원하는 값을 입력한다고 가정한다. 어떤 가치를 입력 하시겠습니까? –

답변

1

예고편의 의견에 따라, EG 작동 방법에 대한 오해가있는 것처럼 보입니다. 프로그램을 실행하기 전에 일부 매크로 변수에 값을 할당하는 도구가 아닙니다. '프롬프트'는 프로그램이 실행 중일 때 값을 입력하라는 메시지를 표시한다는 의미입니다. 그러나이 경우, 당신은 당신이이 특정 프로그램을 실행할 때 SAS가이 특별한 프롬프트를 요구할 수 있도록 당신의 프롬프트를 협동 프로그램에 할당해야합니다. 그것을 위해 : right click on the task -> Properties -> Prompts -> Add.

+0

나는 이것이 붙어있는 것을 잘못 이해 했음에 틀림 없다는데 동의한다. – user3172035

+0

하지만, 오른쪽 클릭에 대한 마지막 비트가 프롬프트가 나타나 있습니다. – user3172035

0

프롬프트에서 생성 된 매크로 변수를 사용하려면 "프로젝트 전체에서 프롬프트 값 사용"확인란을 선택해야합니다.

Prompt

+0

고마워요,하지만이 문제가 해결되지 않는 것 같습니다. 매크로 변수가 두 번 이상 참조되면 프롬프트가 다시 나타나길 원할 때입니다. 프로그램 -이 시점에서 나는 한 번만 참조하고 있습니다. – user3172035

+0

해당 확인란을 사용하면 코드의 어느 지점에서나 매크로 변수에 액세스 할 수 있습니다. 예를 들어, "Period"라는 이름의 프롬프트가있는 경우이 상자를 선택하면, 프롬프트의 값은 프로그램에서'& period.' (매크로 변수)를 통해 액세스 할 수 있습니다. 확인하지 않으면 코드에서 액세스 할 수 없으므로 프롬프트가 나타나면 아무 관계가 없습니다. – Joe

+0

B 제공된 코드에 따라 내 대답과 Havard의 대답이 모두 필요하다고 생각합니다. 성별은 사용할 수 없습니다."남성"이 포함될 예정이라면 어디에서해야합니까? 그것이 데이터가 아니라 열 이름입니다. & Genders가 해결되지 않으면 해당 확인란을 선택하지 않았기 때문입니다. – Joe

1

나는 당신이 당신의 코드에 의해 달성하고자하는 것을 이해 해달라고. 프롬프트에 설정 한 매크로 변수 값을 기준으로 남성 또는 여성 SAT 점수 만 선택 하시겠습니까?

proc sql; 
    create table work.testscores2 as 
     select gender, satscore 
      from work.testscores 
       where gender = &genders.; 
/* Where the value of &genders is either 'Male' or 'Female' */ 
quit; 
+0

죄송합니다 - 남성 또는 여성만을 선택하고 싶지 않았습니다. 성별 컬럼을 선택하기 위해 간단한 SQL을 작성했습니다. 귀하의 버전을 수행하더라도 성별 값을 지정하라는 메시지를 작성하면 작동하지 않으며 같은 오류를 반환합니다. 또한 매크로 변수 다음에 완전히 멈춘다는 것을 알 수 있습니다. 이유가 확실하지 않습니다. 나는 SAS Base에서 그렇게하지 않았고, 이것도 시도해 보았지만 여전히 같은 오류를 리턴했다. – user3172035