2016-10-27 4 views
0

SAS에서 스크립트를 생성하려고합니다. , 'SAS : 인용문 문제

/* write the script to file */ 
filename outfile ".\temp.vbs"; 
data _null_; 
    file outfile; 
    put 'WScript.Echo "Hello, World!"'; 
run; 

/* run the script */ 
data _null_; 
    call system(".\temp.vbs"); 
run; 

/* housekeeping */ 
%let rc=%sysfunc(fdelete(outfile)); 
%symdel rc; 
filename outfile clear; 

불행하게도, put&에 친절하지 않습니다 불행히도, 난, 나는 다음과 같은 방법을 사용하고 파일에 스크립트를 작성하는 라인

strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _ 
     & "<script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _ 
     & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""" 

를 작성해야 , 및 ". macro quoting functions을 모두 시도했지만 아무 것도 작동하지 않습니다. 필요한 경우 & 대신 과부하 결합 연산자 +을 사용할 수 있습니다. 이렇게하면 ActiveXObject('Scripting.FileSystemObject')의 작은 따옴표로 인해 가운데 줄에 오류 만 남습니다. 어떤 아이디어?

답변

1

잘 모르겠습니다. 리터럴 문자열 바깥쪽에 큰 따옴표 대신 작은 따옴표를 사용하면 & 또는 %과 같은 매크로 트리거를 걱정할 필요가 없지만 생성해야하는 리터럴 작은 따옴표 문자를 두 번 올려야합니다.

put 
'strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _' 
/'  & "<script>FILE.click();new ActiveXObject(''Scripting.FileSystemObject'')" _' 
/'  & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>"""' 
; 

또한 문자열 리터럴을 여러 문자열 리터럴로 나누고 각기 다른 외부 따옴표를 사용할 수도 있습니다.

put 
'strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _' 
/'  & "<script>FILE.click();new ActiveXObject(' 
"'Scripting.FileSystemObject'" 
')" _' 
/'  & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>"""' 
; 
+0

고마워요! 바깥 쪽 작은 따옴표가 닫히지 않도록 이중 작은 따옴표를 사용할 수 있다는 것을 알지 못했습니다. 나는 또한'/'이 캐리지 리턴을 삽입하는 데 사용될 수 있다는 것을 모르고있었습니다. SAS 설명서에서 어느 부분에 대한 설명을 어디에서 찾을 수 있는지 알고 있습니까? –

+0

PUT 문의 맨 페이지를보십시오. 라인 포인터 컨트롤에 대한 섹션을 찾으십시오. SAS 언어의 단어에 대한 개념 페이지를 찾으십시오. http://support.sas.com/documentation/cdl/ko/lrcon/68089/HTML/default/viewer.htm#p1qge1g4ytqq41n1e8x8s7ugmyst.htm – Tom