설명
기다리는 동안 스크립트 편집기에 조각 추가 완료하고 싶어서 스크립트 편집기에서 스크립팅하는 동안 최소한 일종의 조각을 가질 수 있도록 추가 기능을 신속하게 작성했습니다. 추가 기능은 상당히 빠르게 구성되었으며 여전히 버그와 문제가 있습니다(특히 UI의 다양한 요소에 초점을 맞추는 경우). 거기 현재 조각 및/또는 해당 위치의 기능을 손상시키는 이 추가 기능의 변경 사항이 있을 수 있습니다.
스니펫이란 무엇입니까? 스니펫은 재사용 가능한 소스 코드, 기계 코드 또는 텍스트의 작은 영역을 가리키는 프로그래밍 용어입니다( 위키피디아, Snippet_(프로그래밍) ). 스니펫을 사용하면 재사용 가능한 코드 블록을 코드에 빠르게 삽입할 수 있습니다. 이렇게 하면 시간을 절약하고 스니펫을 수동으로 입력할 때 발생할 수 있는 실수를 줄일 수 있습니다.
설치
추가 기능은 다음과 같이 구축되었습니다. 애드인 관리자 , 최소 JMP16이 필요하고 Windows를 지원합니다(OSX에서 작동할 수도 있지만 테스트할 수 없으며 지원되는 호스트가 추가 기능 관리자에서 Win으로 설정되었습니다).
이 페이지에서 추가 기능을 다운로드하고 일반적으로 JMP 추가 기능을 설치하는 것처럼 설치합니다(두 번 클릭). 추가 기능은 (기본적으로) 바로 가기 키 바인딩을 사용합니다. Ctrl+Shift+스페이스바 . 추가 기능을 처음 실행하면 $DOCUMENTS 사용자에게 폴더 생성 ~라고 불리는 jmp_script_editor_snippets 사용자 정의 스니펫을 저장하는 데 사용할 수 있는 사용자(전체 경로는 C:\Users\와 같습니다.) <사용자 이름> \Documents\jmp_script_editor_snippets\). 코드 조각 파일은 기본적으로 추가 기능의 코드 조각 폴더나 사용자 문서 조각 폴더에서 찾을 수 있는 .jsl 파일입니다.
용법:
쓰다 #snippet <선택적 검색어> (선택적으로 사용자는 전체 #snippet을 작성하는 대신 #sni 또는 #snip을 사용할 수 있습니다)를 스크립트 편집기에 입력합니다. #snippet은 조회 값으로 사용되며 선택적 검색어를 포함하는 경우 해당 검색어가 검색창을 미리 채우는 데 사용됩니다. 코드에 #snippet이 있으면 Ctrl+Shift+Space를 눌러 JMP 스크립트 편집기 Snippet 창을 실행하고 올바른 코드 조각을 검색한 다음 OK를 누릅니다(경우에 따라 Enter를 누르거나 Tab을 사용하여 Enter로 이동할 수도 있음). #snippet 행은 선택한 코드 조각으로 대체됩니다. 아래는 스니펫 창의 이미지입니다.

스니펫 창
사용자가 추가 기능을 실행했는데 스크립트 상자에 #snippet이 없으면 아무 일도 일어나지 않습니다. 스니펫을 삽입하지 않으려면 Esc를 누르세요. 실수로 스니펫을 삽입한 경우 Ctrl+Z를 눌러 변경 사항을 취소할 수 있습니다.
사용자는 이 커뮤니티 페이지에 액세스하여 도움말을 볼 수 있으며 추가 기능 메뉴에서 스니펫 폴더를 열 수 있습니다.

사전 설치된 스니펫
이러한 조각의 이름은 의도적으로 짧게 유지되므로 사용자는 전체 이름을 다음과 같이 쉽게 쓸 수 있습니다. <선택 검색어> #스니펫 뒤에. 이 방법으로 스니펫을 사용하면 사용자가 즉시 Enter 키를 눌러 원하는 스니펫을 사용할 수 있습니다.
new_bg
더보기...
new_bg_gb
더보기...
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11)))
);
이름의 기본값은 여기에 있습니다(1); dt = open("$SAMPLE_DATA/Big Class.jmp"); gb = dt << 그래프 빌더( 변수(X(:weight), Y(:height), Overlay(:sex)), Elements(Points(X, Y, Legend(9))), Line Of Fit(X, Y , 범례(11))) );
만약에
더보기...
If(condition1,
//code1
, //else
//code2
);
If(조건1, //코드1 , //else //코드2 );
엘리프
더보기...
If(condition1,
//code1
, //condition2,
//code2
, //else
//code3
);
If(조건1, //코드1, //조건2, //코드2, //else //코드3);
기능
더보기...
function1 = function({param1, param2, param3 = .}, {Default Local},
/*"""function1 which returns missing.
More description regarding the function
Args:
param1 (displaybox):
param2 (char):
param3 (num):
Returns:
num: missing
Raises:
exception_msg
"""*/
return(.);
);
function1 = function({param1, param2, param3 = .}, {Default Local}, /*"""function1은 누락을 반환합니다. Args 함수에 관한 추가 설명: param1 (displaybox): param2 (char): param3 (num): 반환: num: 누락 발생: 예외_msg """*/ return(.); );
새로운
더보기...
/*"""One sentence description for this script
Author:
Creation Date:
Creation JMP Version:
Description:
Todo:
*
*
"""*/
Names Default To Here(1);
/*"""이 스크립트에 대한 한 문장 설명 작성자: 작성 날짜: 작성 JMP 버전: 설명: Todo: * * """*/ 이름 기본값은 여기에(1);
뉴
더보기...
nw = New Window("name",
V List Box(align("Center"),
)
, << Set Window Icon("JMP")
);
nw = New Window("name", V List Box(align("Center"), ) , << Set Window Icon("JMP") );
모달
더보기...
nw = New Window("Modal Window", << modal, << return result,
H List Box(
Panel Box("Options",
lb = List Box({})
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("OK"),
Button Box("Cancel")
)
)
)
, << Set Window Icon("Warning")
);
If(nw["Button"] != 1,
Throw("Cancelled");
);
nw = New Window("모달 창", << modal, << 반환 결과, H List Box( Panel Box("Options", lb = List Box({}) ), Panel Box("Actions", Lineup Box( N Col(1), Button Box("확인"), Button Box("취소") ) ) ) , << 창 아이콘 설정("경고") ); If(nw["버튼"] != 1, Throw("취소됨"); );
SQL
더보기...
dsn_string = "";
sql_template = "\[
select 1
from dual
]\";
dbc = Create Database Connection(dsn_string);
sql = Eval Insert(sql_template, "¤"); // use ¤ to avoid issues with regex when using ^
dt = Execute SQL(dbc, sql, "NewTable");
Close Database Connection(dbc);
dsn_string = ""; sql_template = "\[ 듀얼에서 1개 선택 ]\"; dbc = 데이터베이스 연결 생성(dsn_string); sql = Eval Insert(sql_template, "¤"); // ^ dt = Execute SQL(dbc, sql, "NewTable"); 사용 시 정규식 관련 문제를 방지하려면 ¤를 사용합니다. 데이터베이스 연결 닫기(dbc);
노력하다
더보기...
Try(
Show(a);
, // Catch
show(exception_msg);
);
Try( Show(a); , // show(Exception_msg); );
나도 추가했다 커뮤니티_템플릿.jsl JMP 커뮤니티의 스크립팅 솔루션을 저장하는 데 사용하는 $DOCUMENTS 조각 폴더에 저장됩니다.
더보기...
/*"""
author: jthi
date: YYYY-MM-DD
url: https://community.jmp.com/t5/Discussions/
keywords/tags: []
"""*/
Names Default To Here(1);
예
이 간단한 예에서는 새 스크립트를 생성하겠습니다. 스크립트에는 SQL 쿼리를 수행한 다음 결과 테이블을 반환하는 하나의 함수가 있습니다.
먼저 새 .jsl 스크립트 파일을 시작하겠습니다. 글부터 시작하겠습니다
#snippet new
다음으로 추가 기능을 실행하여 해당 조각을 대체하겠습니다. #snippet 줄에 전체 조각 이름을 미리 작성해 두었으므로 자동으로 선택됩니다.

추가 기능을 연 후 바로 Enter 키를 누르면 해당 코드 조각을 사용할 수 있습니다.
다음으로 func snippet을 사용하여 새 함수를 추가하겠습니다.
#snippet func
그런 다음 그 안에 SQL 스니펫을 추가하겠습니다.
#snippet sql
내 현재 코드는 다음과 같습니다
더보기...
/*"""This Add-In provides Snippet functionality to JMP Script Editor.
Author:
Creation Date:
Creation JMP Version:
Description:
Todo:
*
*
"""*/
Names Default To Here(1);
function1 = function({param1, param2, param3 = .}, {Default Local},
/*"""function1 which returns missing.
More description regarding the function
Args:
param1 (displaybox):
param2 (char):
param3 (num):
Returns:
num: missing
Raises:
exception_msg
"""*/
sql_template = "\[
select 1
from dual
]\";
dbc = Create Database Connection(dsnstring);
sql = Eval Insert(sql_template, "¤"); // use ¤ to avoid issues with regex when using ^
dt = Execute SQL(dbc, sql, "NewTable");
Close Database Connection(dbc);
return(.);
);
/*"""이 추가 기능은 JMP 스크립트 편집기에 조각 기능을 제공합니다. 작성자: 생성 날짜: 생성 JMP 버전: 설명: Todo: * * """*/ 이름 기본값은 여기에(1); function1 = function({param1, param2, param3 = .}, {Default Local}, /*" ""누락을 반환하는 function1입니다. Args 함수에 관한 추가 설명: param1(displaybox): param2(char): param3(num): 반환: num: 누락 발생: 예외_msg """*/ sql_template = "\[ select 1 from Dual ]\"; dbc = 데이터베이스 연결 생성(dsnstring); sql = Eval Insert(sql_template, "¤"); // ^ 사용 시 정규식 관련 문제를 방지하려면 ¤를 사용합니다. dt = SQL 실행(dbc, sql, "NewTable"); 데이터베이스 연결 닫기(dbc ); 반품(.); );
함수 내부에 들여쓰기를 추가하여 정리하고 문서 문자열을 입력하면 마지막으로 스크립트는 다음과 같습니다.
더보기...
/*"""Example on the usage of JMP Script Editor Snippets
Author: jthi
Creation Date: 2022-12-19
Creation JMP Version: JMP Pro 16
"""*/
Names Default To Here(1);
get_data = function({duration = 1}, {Default Local},
/*"""Function to query data from sql
Args:
duration (num): days to query
Returns:
datatable: queried data table
"""*/
dsn_string = "DSN=dBASE Files;DBQ=C:/Program Files/SAS/JMPPRO/16/Samples/Import Data/;"
sql_template = "\[
select *
from tables
where
data > sysdate - ¤duration¤
]\";
dbc = Create Database Connection(dsn_string);
sql = Eval Insert(sql_template, "¤");
dt = Execute SQL(dbc, sql, "Query Result");
Close Database Connection(dbc);
return(dt);
);
/*"""JMP 스크립트 편집기 사용 예 스니펫 작성자: jthi 생성 날짜: 2022-12-19 생성 JMP 버전: JMP Pro 16 """*/ 이름 기본값은 여기(1); get_data = function({duration = 1}, {Default Local}, /*"""sql에서 데이터를 쿼리하는 함수 Args: 기간(num): 쿼리하는 일수 반환: datatable: 쿼리된 데이터 테이블 """*/ dsn_string = "DSN=dBASE Files;DBQ=C:/Program Files/SAS/JMPPRO/16/Samples/Import Data/;" sql_template = "\[ 데이터 > sysdate - ¤duration¤ ]\"; dbc = 데이터베이스 연결 생성(dsn_string); sql = Eval Insert(sql_template, "¤"); dt = SQL 실행(dbc, sql, "쿼리 결과"); 데이터베이스 연결 닫기(dbc); return(dt); );
아래는 위의 예를 기반으로 한 추가 기능 사용법에 대한 짧은 비디오입니다.
가능한 향후 작업
- 적절한 .md 파일 작성
- 삽입된 코드가 올바른 들여쓰기를 갖도록 스니펫 앞에 공백/탭 처리를 추가합니다.
- 도움말 버튼 및 추가 기능 메뉴에 사용자 조각 폴더를 여는 버튼 추가
- 또한 "도움말" 페이지를 만들어야 합니다. 도움말 페이지는 .md를 .html로 변환하거나 이 커뮤니티 페이지를 사용하여 만들 수 있습니다.
- 초점 문제를 해결하려고 시도합니다.
- 설정 옵션 추가
- 비활성화된 조각, snippet_str, 목록 상자 nlines
- #snippet 요구 사항 없이 스크립트 창 끝에 스니펫을 추가할 수 있는 가능성
- "스니펫 추가"에 대한 다른 단축키가 있나요?
- 아마도 스니펫의 일부 값을 미리 채울 수 있는 더 복잡한 구문을 생각해 보세요.
- #snippet !param1 !param2 (또는 유사한 것)
- 어쩌면 스크립트에 있는 변수의 값을 평가할 수도 있을까요? 다른 구문이 필요합니까, 아니면 이미 있습니까? 기능 크립 ?
- 스크립트 편집기 옆에 스니펫 목록 삽입 가능
- 미리 작성된 스니펫을 더 추가하세요.
- 스니펫에 설명을 추가할 수 있는 기능 추가
변경 로그
버전 2.0(2022년 12월 20일)
- 새로운 스니펫이 추가되었습니다: 모달 및 if. 새로운 elif가 오래된 if 스니펫으로 교체되었습니다.
- 값 목록을 사용하도록 스니펫 검사를 변경했습니다. 추가 키워드로 #sni 및 #snip 추가(현재 목록 #sni, #snip, #snippet)
- 새로운 구성 가능한 변수가 추가되었습니다.
- 약 80자의 코드에 맞게 스크립트 미리보기를 더 넓게 만들었습니다.
- 추가 기능 메뉴에 도움말 버튼 추가
- 추가 기능 메뉴에 스니펫 폴더 열기 버튼을 추가했습니다.
- 스니펫 사용 중 들여쓰기에 대한 지원이 추가되었습니다.
버전 2.0.1(2022년 12월 22일)
- 스니펫에서 빈 줄이 제거되는 문제를 해결해 보세요.
@호기
JSL을 사용하여 Scripting Box의 사용자 커서 위치에 직접 액세스할 수 있는지 잘 모르겠습니다. Powershell 및 Windows dll을 사용하여 해결 방법을 수행할 수 있지만 이 추가 기능은 키워드 사용으로 충분히 잘 작동하므로 해당 작업을 수행하지 않을 것입니다.
@jthi , 이 추가 기능을 제공해 주셔서 감사합니다. 이것은 많은 도움이 될 수 있습니다.
버튼을 추가하여 C:\사용자\ <사용자 이름> \Documents\jmp_script_editor_snippets\ 폴더.
@jthi 썼다:- #snippet 요구 사항 없이 스크립트 창 끝에 스니펫을 추가할 수 있는 가능성
... 아니면 현재 커서 위치에 있나요?
당신은 #단편 다만 거기에서는 추가 기능이 코드의 다른 곳에서는 이를 찾지 못합니다.
하지만 그게 다행이야 #단편 그리고 ~ 아니다
#여기가 내 스니펫이 가야 할 곳입니다

아마도: 허용 # 단편 (공간 있음) 사용자 "오류"에 대해 기능을 더욱 강력하게 만듭니다.