<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />저는 매크로 변수를 사용하여 경로, 파일 이름, 배열 열 등과 같은 프로그램에서 반복적으로 사용되는 문자열의 자리 표시 자 역할을하는 오랜 기간의 SAS 사용자입니다.
JSL에도 비슷한 기능이 있습니까?
몇 가지 예가 크게 감사 할 것입니다.
또한. 표현식에 코드 블록을 넣을 수 있습니다 (외부 파일에 넣을 수 있고 필요하면 '포함'할 수 있음). 그런 다음 'Substitute ()'를 사용할 수 있습니다.
기본 이름은 여기에있다. ( 1 ) ;
codeBlock = Expr ( 인쇄 ( "매크로 변수는" || 숯 ( 에이% )))) ;
평가 ( 대용품 ( NameExpr ( codeBlock ) , Expr ( 에이% ) , 10 )) ;
평가 ( 대용품 ( NameExpr ( codeBlock ) , Expr ( 에이% ) , 20 )) ;
다음은 문자열에 대한 자리 표시 자 아이디어를 직접적으로 다룰 수있는보다 간단한 예제입니다. 따라서 SAS 매크로 변수와 직접적인 상응하는 것은 없지만 "||"매크로를 사용하여 JSL 변수를 사용하여 동일한 연결을 수행 할 수 있습니다. 연결 연산자 ( "+"는 JMP에서 문자열을 연결하는 데 사용되지 않습니다) :
경로 = "c : \ 사용자 \ 공공 \ 임시 \";
dt1 = 열기 (경로 || "bc_mcv.jmp");
dt2 = 열린 상태 (경로 || "공항 _ 비 _ 상태 _jmp");
희망이 도움이됩니다.
에릭
고마워, 이안. 그것은 올바른 방향으로 나를 가리켰다.
나는 보완적인 방식으로 JMP와 SAS를 사용하고 있습니다.
SAS 언어와 JSL은 구문, 구조 및 의도면에서 매우 다릅니다 (SAS 시스템과 JMP의 매우 다른 성격을 반영 함).
아마 가장 가까운 병렬 변수는 JSL에서 함수를 정의 할 수있는 능력이며, 전달되는 인수는 매크로 변수의 값과 유사합니다. 예를 들면 다음과 같습니다.
NamesDefaultToHere ( 1 ) ;
// 주어진 테이블과 열을 사용하여 Distribution을 만들고에 대한 참조를 반환합니다.
// 결과 객체
배분 =
기능 ({ inTable , 인 콜 } , { 기본 로컬 } ,
thisDistribution = inTable << 분포 ( 기둥 ( 인 콜 ))
) ;
// 테이블을 엽니 다.
dt = 열다 ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
// 배포판을 만들고 닫는다.
myDistribution = 배분 ( dt , 기둥 ( dt , "신장" )) ;
기다림 ( 삼 ) ;
보고서 ( myDistribution ) << closeWindow ;
기다림 ( 삼 ) ;
// 두 개의 배포판을 만들고 역순으로 닫습니다.
dist1 = 배분 ( dt , 기둥 ( dt , "무게" )) ;
기다림 ( 삼 ) ;
dist2 = 배분 ( dt , 기둥 ( dt , "신장" )) ;
기다림 ( 삼 ) ;
보고서 ( dist2 ) << closeWindow ;
기다림 ( 삼 ) ;
보고서 ( dist1 ) << closeWindow ;
스레드의 제목을 감안할 때 SAS와 JMP가 반대한다는 인식이 없다고 언급 할 의무가 있습니다. 실제로 JMP와 SAS는 손쉽게 사용할 수있는 유즈 케이스가있을 때 매우 잘 작동합니다.