2009-04-28 5 views
2

Windows에서 SAS 9.1.3 SCL 코드 (N.B. 일반 SAS 코드가 아님)를 프로그래밍 방식으로 컴파일 할 수 있습니까? 필자가 발견 한 유일한 방법은 SAS GUI를 사용하는 것입니다. UI에 키 입력을 보내는 Perl 스크립트가 있습니다. 이 방법이 효과적이지만 (일종의) 추악하고 오류가 발생하기 쉽고 자동화 된 빌드 스크립트에 추가하기에는 너무 허약합니다.프로그래밍 방식으로 SAS SCL 코드 컴파일

편집 : 내 원래의 질문은 아마 다소 불투명합니다. 나는 proc build을 알고있다; 내 문제는 처음부터 SCL 항목으로 SAS 카탈로그에 일반 텍스트를 가져 오는 것입니다.

답변

4

나는 이것이 닭고기 및 계란 종류의 문제임을 발견했다. 나는 기존의 SCL 항목을 사용하여 SCL 항목으로 일반 텍스트를 가져 오는 것이 가능하다는 것을 알았습니다. ...

카탈로그 항목에서 SCL 코드를 읽고 쓰는 설정이 있습니다. 텍스트 파일. 나는 개정 통제 목적 (CVS)을 위해 이것을 사용한다.

CVS는 주로 일반 텍스트 코드로 사용되지만 바이너리 파일도 처리 할 수 ​​있습니다. 따라서 필자는 일반 텍스트를 다른 SCL 항목으로 가져올 수있는 SCL 항목 (FILE2SCL)을 만들었습니다. 그런 다음이 SCL 항목을 PROC CPORT'ed하여 이진 파일에 저장하고 CVS에 체크인했습니다.

이 방법은, 난 항상 프로그래밍 CPORT 파일에서이 SCL 항목을 가져 오기 및 기타 SCL 항목에 일반 텍스트에서 SCL 코드를 가져 오려면이 SCL 항목을 사용할 수 있습니다. 나중에 PROC BUILD를 사용하여 SCL 항목을 컴파일 할 수 있습니다.

내 FILE2SCL 항목은 다음과 같습니다

INIT: 
    /***************************************************************/ 
    /*                */ 
    /* Call this SCL like this:         */ 
    /* %let srcFile=D:\work\dummy.scl;        */ 
    /* %let dstEntry=WORK.NEW.DUMMY.SCL;       */ 
    /* proc display catalog=work.cat.file2scl.scl;     */ 
    /* run;              */ 
    /*                */ 
    /***************************************************************/ 

    length Rc   8; 
    length theFile $ 200; 
    length theEntry $ 128; 

    theFile=symget('SRCFILE'); * Source file *; 
    theEntry=symget('DSTENTRY'); * Destination entry *; 

    * Assign filename *; 
    Rc=filename('temp',theFile); 

    * Include external file into preview buffer *; 
    Rc=PREVIEW('INCLUDE','temp'); 
    * Save contents of preview buffer to SCL entry *; 
    Rc=PREVIEW('SAVE',theEntry); 
    Rc=PREVIEW('CLEAR'); 
    Rc=PREVIEW('CLOSE'); 

    * Deassign filename *; 
    Rc=filename('temp',''); 
return; 

주석이 그것을 사용하는 방법을 설명 : 당신의 SCL 소스 코드 파일의 경로를 포함, "SRCFILE의"SAS 매크로 변수를 설정 시작 , 그리고 다른 매크로 변수 인 "dstEntry"는 SCL 엔트리를 넣을 곳의 진입 경로를 포함합니다. 그런 다음 PROC는 FILE2SCL 항목을 표시하고 SCL 소스 코드를 지정된 SCL 항목으로 가져옵니다. 그런 다음 PROC BUILD를 사용하여 나중에 컴파일 할 수 있습니다.

0

또한, 당신은 아마도 EclipseESLink plugin을 사용하여 확인할 수 있습니다. 이 목적을 위해 특별히 설계되었습니다 (SCL 코드를 카탈로그로 컴파일 할 수있는 버전 제어용 일반 파일로 유지).

관련 문제