
따라서 이 데모에서는 반복을 위해 For 함수를 사용하는 방법을 보여줍니다. 지금까지 스크립트 편집기에서 로그를 사용하여 스크립트를 테스트하고 결과를 관찰했습니다. 하지만 이제 디버거를 사용하여 이를 살펴보겠습니다. 스크립트 편집기 창을 열고 Names Default to Here를 입력하여 시작하겠습니다. 그리고 부울을 입력하겠습니다. 지금은 공백을 추가하지 않겠습니다. 모든 것을 한 줄에 입력한 다음 자동 재포맷이 자동으로 정리하도록 하겠습니다. 세미콜론을 입력한 다음 For, 괄호 열기, a = 세미콜론, b = 세미콜론, i = 쉼표-- 세 개의 변수를 초기화합니다. 그런 다음 테스트를 입력할 것입니다. i는 쉼표보다 작습니다. 그런 다음 b와 i를 모두 업데이트합니다. 그래서 b는 업데이트합니다.-- b+ equal 그래서 제자리 할당 함수, add to 함수는 b의 현재 값을 덮어쓰고 세미콜론으로 증가시킵니다.두 가지를 업데이트하고 있기 때문입니다.그리고 i++, 그 ++는 다시 i에 제자리를 더하는 후위 증가 연산자입니다.그리고 쉼표, 그리고 이 간단한 루프의 본문은 Show 함수가 될 것입니다.그리고 a, 쉼표, b, 쉼표를 표시한 다음 연산자를 사용하여 곱셈 함수를 호출합니다.즉, a 곱하기 b입니다.그리고 모든 괄호를 닫고 세미콜론을 추가한 다음 마우스 오른쪽 버튼을 클릭하고 다시 포맷합니다.여기서 주목할 두 가지가 있습니다.하나는 JMP가 저를 위해 몇 개의 추가 세미콜론을 추가했다는 것입니다.첫 번째 인수에서 함수를 함께 붙이고 있다는 것을 보았습니다.세 번째 인수에서 함수를 함께 붙이고 있다는 것을 보았습니다.그래서 이 세미콜론을 추가했습니다.그것은 해롭지 않습니다. 실제로, 더 많은 함수를 추가하거나 결합하지 않는 한 필요하지 않기 때문에 스크립트에서 제거할 것입니다.그리고 내가 할 수 있는 또 다른 일은 각 인수가 자체 줄을 갖도록 이것을 재정렬하는 것입니다.하지만 디버거로 갈 때 이것이 코스 PDF에 있는 것과 일치하기를 원합니다.따라서 세미콜론을 제거한 것을 제외하고는 JMP에서 다시 포맷한 방식대로 두려고 합니다.디버거를 시작할 수 있는 방법은 여러 가지가 있습니다.편집 메뉴로 가면 디버그 스크립트 옵션이 있습니다.키보드 단축키는 Ctrl+Shift+R입니다.스크립트 편집기 창에서 디버그 도구 모음 버튼을 클릭할 수 있습니다.또는 마우스 오른쪽 버튼을 클릭하고 디버그 스크립트를 선택할 수 있습니다.그리고 이것이 제가 보여드릴 마지막 방법이므로 계속해서 그 방법을 사용하겠습니다.따라서 이 디버거는 JMP의 두 번째 인스턴스입니다.그리고 JMP의 원래 인스턴스는 일시적으로 중단되었습니다. 따라서 스크립트에 필요한 대화 상자와 같은 상호 작용이 있는 경우 해당 작업을 수행할 때까지 디버거 창이 일시 중단됩니다. 그런 다음 완료되면 제어가 디버거로 반환됩니다. 디버거를 마치면 간단히 닫습니다. 오른쪽 상단 모서리에 있는 X나 도구 모음에 있는 중지 버튼을 사용하면 됩니다. 그러면 JMP의 원래 인스턴스로 돌아갑니다. 우선, 중단점을 넣지 않고 그대로 이 루프를 실행하겠습니다. 여기에는 두 개의 버튼이 있습니다. 하나는 실행이고 다른 하나는 중단점 없이 실행입니다. 지금은 중단점이 없으므로 이 버튼도 같은 작업을 수행합니다. 지금 사용하려는 중단점이 있는 경우 맨 왼쪽에 있는 이 버튼을 사용합니다. 그러니 이 버튼을 클릭합니다. 그러면 잠시 후 다시 시작하지 않으면 프로그램 실행이 종료된다는 것을 알려줍니다. 유일한 옵션은 디버거를 닫는 것입니다. 하지만 다시 시작하기 전에 스크립트가 표시되는 아래 패널의 로컬 탭으로 이동하고 싶습니다.그리고 기본 네임스페이스는 여기입니다.이것은 제가 줄에서 호출한 것입니다.그리고 스크립트 실행이 끝나면 a의 값은 다음과 같습니다.b의 값은 다음과 같습니다.그리고 i의 값은 다음과 같습니다.이제 디버거를 사용하여 반복의 각 단계에서 a, b, i의 값을 살펴보겠습니다.그러므로 다시 시작 버튼을 클릭하겠습니다.그리고 줄에 중단점을 추가하고 싶습니다.그러려면 줄 번호 바로 오른쪽을 클릭합니다.그리고 원하는 만큼 많은 중단점을 가질 수 있습니다.이 간단한 스크립트에서는 실제로 하나만 필요합니다.즉, 줄을 평가하고 여기 네임스페이스를 설정한다는 의미입니다.그리고 for 루프 내에서 초기화 인수를 평가합니다.우리는 테스트를 평가합니다.우리는 Show 함수인 for 루프의 본문을 평가합니다.그리고 일시 중지하고 로컬 탭에서 값을 확인합니다. 다시 그쪽으로 돌아가 보겠습니다. 그런 다음 실행을 다시 클릭하면 업데이트하고, 테스트를 수행하고, 본문을 실행하고, 일시 중지하고, 해당 값을 확인합니다. 테스트가 실패하고 루프를 종료할 때까지 이 작업을 계속합니다. 아무것도 선택하지 않으려고 합니다. 왼쪽 실행 버튼을 사용하려고 합니다. 다시 말하지만, 중단점 없이 실행하고 싶지 않습니다. 이것을 실행하겠습니다. 그것을 평가한 후 줄에서 멈춘 것을 볼 수 있습니다. a, b, i의 값은 각각 및 입니다. 반복의 다음 단계를 실행하려면 실행 버튼을 다시 클릭합니다. 이제 a, b, i의 값이 각각 및 입니다. 한 번 더 실행할 수 있습니다. a, b, i의 최종 값에 도달합니다. 프로그램 실행이 종료되었다는 메시지가 표시됩니다. 다른 작업을 하려면 다시 시작할 수 있습니다. 중지 버튼을 클릭할 수 있습니다. 또는 오른쪽 상단 모서리에 있는 X를 사용하여 닫을 수 있습니다. 그리고 계속해서 중지 버튼을 클릭하겠습니다.그러면 제어가 JMP의 원래 세션으로 돌아갑니다.이제 생산 중인 어떤 화합물의 경화 시간을 측정했다고 가정해 보겠습니다.그리고 생산 중에 모든 실행은 5번 샘플링되고, 각 샘플에 대해 이 경화 시간을 결정합니다.그리고 각 샘플의 경화 시간 분포를 살펴보고 싶습니다.그러므로 코스 저널의 섹션에서 경화 시간 데이터를 클릭할 것입니다.그리고 스크립팅할 때 권장하는 것 중 하나는 대화형으로 시도하여 시도하려는 작업이 실행 가능한지 확인하는 것입니다.따라서 경화 시간에 대한 히스토그램이 필요합니다.그러므로 시작하기 위해 간단한 예를 하나 들겠습니다.분석 메뉴로 가서 분포를 선택합니다.그리고 경화 시간을 Y 역할에 넣습니다.그리고 여기서 역할은 Y라는 것을 기억하십시오.그리고 확인을 클릭합니다.그리고 이것을 보면서, 음, 훌륭하다고 생각합니다.이것은 정확히 내가 다섯 가지 경화 시간 분포에 대해 원하는 것입니다. 그래서 제가 사용하고 싶은 플랫폼은 바로 그것입니다. 그리고 이 보고서를 다시 만들 스크립트의 작은 템플릿을 작성했습니다. 홈 창으로 돌아가서 열겠습니다. 배포 플랫폼 시작, Y 역할, 그리고 문자열로 Cure Time이 있는 열 함수가 있는 이 스크립트는 해당 보고서를 다시 만듭니다. 그리고 이 템플릿을 기반으로 루프를 작성하려고 합니다. 계속해서 이 Cure Time 창을 닫고 스크립트 편집기로 돌아가서 내용을 지워서 같은 창을 계속 사용할 수 있도록 하겠습니다. 그리고 다시 스크립트를 Names Default to Here로 시작하겠습니다. 그리고 이전과 마찬가지로 JMP가 자동 재포맷을 사용하여 스크립트를 정리하도록 하겠습니다. 따라서 제 for 루프는 인수 c로 시작합니다. 그리고 c에 값을 할당하려고 합니다. 이것이 제가 초기화할 유일한 변수입니다. 쉼표를 입력하겠습니다. 테스트는 c가 열 개수보다 작다는 것입니다. 그리고 대용량 데이터 테이블로 작업하는 경우 가장 좋은 방법은 루프 외부의 열 개수를 세고 그 결과를 변수에 저장한 다음, 그 변수를 c와 비교하는 변수로 사용하는 것입니다. 이 경우 두 번째 열부터 시작하므로 열이 5개입니다. 총 열이 5개입니다. 따라서 매번 이 계산을 다시 하는 것에 대해 크게 걱정하지 않습니다. 하지만 가장 좋은 방법은 그것을 꺼내는 것입니다. 그 뒤에 쉼표를 입력하겠습니다. 업데이트 인수는 c와 후행 증가 연산자, 두 개의 더하기 기호, 또 다른 쉼표, 그리고 괄호 안에 Distribution, y를 입력하고 다시 괄호를 열고 column을 입력한 다음, 그 괄호 안에 카운터인 c를 입력합니다. 이제 모든 괄호가 일치하는지 확인하기 위해 화살표를 위로 이동합니다. 사실, 여기서 닫는 괄호가 누락되었고 서식을 변경하려고 하면 누락된 항목이 있다는 메시지가 표시됩니다. 따라서 실제로 재포맷은 디버깅을 수행하는 간단한 방법입니다.세미콜론을 입력하고 계속해서 스크립트 재포맷 버튼을 사용합니다.그런 다음 스크립트를 실행합니다.그리고 스크립트를 그대로 작성하면 경화 시간 값의 각 관찰에 대해 별도의 창이 나타납니다.분산을 시작하면 스크립트 편집기 창으로 돌아가서 반복의 모든 단계에서 다시 분산 플랫폼을 시작합니다.하지만 분포에 익숙하다면 분석 메뉴로 돌아가 분포를 선택하고 5개의 경화 시간 값을 모두 해당 Y 역할에 넣습니다.분산에 익숙하다면 동일한 창에서 모든 것을 얻을 수 있다는 것을 알고 있습니다.따라서 저널에는 모든 열 이름으로 Y 역할을 구축하고 동일한 창에 5개의 분포가 모두 포함된 동일한 보고서를 생성하는 루프를 실행하도록 미리 작성된 스크립트가 있습니다.그러므로 시작하기 전에 이 모든 보고서 창을 닫고 싶습니다. 메뉴 모음으로 가서 창 아래에서 모든 보고서 닫기를 선택합니다.그런 다음 저널을 찾을 것입니다.그리고 치료 시간 분포 스크립트를 클릭하고 싶습니다.그리고 디버거에서 이것을 살펴볼 것입니다.그래서 스크립트 편집기 창이 아닌 디버거 환경에서 각 단계에서 무슨 일이 일어나는지 설명하겠습니다.그러므로 마우스 오른쪽 버튼을 클릭하고 디버그 스크립트를 선택합니다.다시 말하지만, 디버거를 시작할 수 있는 여러 가지 방법이 있습니다.그리고 이전의 간단한 예에서와 같이 반복의 각 단계에서 무슨 일이 일어나는지 보기 위해 줄에 중단점을 추가하고 싶습니다.그리고 c 변수와 yCol 변수에 대한 감시를 추가하고 싶습니다.그러므로 감시 탭으로 갈 것입니다.그리고 감시를 추가하기 위해 녹색 더하기 기호를 클릭할 것입니다.이것은 스크립트에서 특정 변수를 볼 수 있는 방법입니다.자, 여기에는 변수가 많지 않습니다. 하지만 변수가 많은 큰 스크립트가 있고 디버깅하는 동안 주시해야 할 변수가 몇 개뿐인 경우 Watch 탭을 사용하는 것이 좋은 방법입니다.그러므로 녹색 더하기 기호를 클릭하여 watch를 추가합니다.변수 c를 입력하고 확인을 클릭합니다.그리고 변수 yCol에도 watch를 추가하고 싶습니다.그리고 확인을 클릭합니다.이제 실행을 시작하기 전에 스크립트 전체에서 무슨 일이 일어나는지 조금 이야기하고 싶습니다.그리고 디버거를 실행하는 과정을 살펴보면서 그것을 볼 수 있습니다.그러므로 맨 첫 번째 줄은 yCol이라는 변수를 만듭니다.그리고 yCol은 배포 플랫폼의 Y 분석 역할을 저장하고 그 뒤에 빈 괄호가 옵니다.내 루프는 해당 Y 역할 뒤의 괄호에 열 이름을 추가하여 이 표현식을 작성할 것이기 때문입니다. 그리고 Expr로 인용하는 이유는 yCol이라고만 말하고 뒤에 괄호를 붙여 y 값을 할당하려고 하면 JMP가 이것을 정의된 변수로 인식하지 못해 오류가 발생하기 때문입니다. 함수로 인식하지 못합니다. 그래서 JMP가 이를 평가하려고 하지 않고 yCol에 저장된 이 리터럴 값을 가져오고 싶습니다. 그래서 line이 할 일이 그것입니다. line through는 for 루프인데, column으로 시작합니다. 열이 모두 소진될 때까지 반복합니다. 그리고 다시, 프로덕션 수준 스크립트에서, 특히 더 큰 데이터 테이블이 있는 경우 루프 외부의 열 수를 세어 변수에 넣고 싶습니다. 그런 다음 for 루프의 본문은 단순히 열 c를 추가합니다. 즉, 첫 번째 라운드에서 column을 yCol에 저장된 표현식에 추가합니다. 그리고 Insert Into는 첫 번째 인수를 평가하려고 하지 않습니다. 따라서 yCol 변수에 특별한 작업을 할 필요가 없습니다. 간단히 보고 연산을 수행합니다. 이 경우 y 뒤의 괄호에 column을 추가합니다. Show 함수는 각 단계에서 무슨 일이 일어나는지 보도록 설명하기 위한 예시일 뿐입니다. 디버거를 사용하지 않으면 로그에 표시됩니다. 값을 감시하는 기능은 Show 함수를 사용하는 것과 같습니다. 업데이트합니다. 테스트를 수행하고 c가 여전히 열 수보다 작거나 같다고 가정하고 다음 열을 yCol에 삽입합니다. 루프가 완료되면, 즉 열이 모두 소진되면 마지막 코드 줄이 나오는데, 이에 대해 내부에서 외부로 설명하겠습니다. Insert 함수를 사용하여 분포 표현식을 수정하려고 합니다. 분포는 JMP에 내장된 플랫폼 실행 기능이기 때문에 Insert Into 대신 Insert를 사용합니다. 사용자는 실제로 분포 자체를 수정할 수 없습니다. 분포를 사용하는 표현식은 수정할 수 있습니다. 따라서 insert를 사용합니다. 그런 다음 JMP가 분포를 평가하지 않도록 Expr 함수로 분포를 래핑합니다. 제가 실행했다면—이 부분을 강조하겠습니다—이 코드 줄의 이 부분을 실행하면 JMP는 "Y 역할에 필요한 인수를 제공하지 않았습니다."라고 말합니다. 따라서 배포 플랫폼 실행을 제공합니다. 그런 다음 사용자는 열을 입력하지만 실제로는 스크립트의 목적에 어긋나지 않습니다. 그렇죠? 이것이 첫 번째 인수입니다. 두 번째 인수—두 번째 인수로 yCol을 입력하면 JMP는 이를 평가하려고 합니다. 루프를 완료한 후 어떻게 보일지 확인할 수 있습니다. 하지만 대문자 Y와 괄호, 그리고 여러 열 이름만 볼 것입니다. JMP는 이를 어떻게 처리해야 할지 모릅니다. 변수 이름이나 함수로 인식하지 못합니다. 따라서 Name Expr을 사용하면 yCol에 저장된 내용을 평가하지 않고도 확인할 수 있습니다. yCol에 저장된 평가되지 않은 표현식이 distribution 뒤에 괄호 안에 들어갑니다. 그런 다음, 그렇게 하면 모든 열에 Y 역할이 있는 분포가 여전히 인용되므로 전체를 Eval로 래핑합니다.그리고 JMP의 일반 인스턴스로 돌아가서 조금 더 자세히 분석할 수 있습니다.그래서 시계가 있습니다.그리고 현재 변수는 정의되지 않았습니다.그래서 값으로 표시됩니다.첫 번째 중단점으로 실행해 보겠습니다.그러므로 업데이트하기 전에 첫 번째 실행 후 c는 값을 저장합니다.그리고 이제 yCol은 빈 괄호가 있는 Y 대신 Column Cure Time을 갖습니다.그리고 내 작은 템플릿에서 배경에서 볼 수 있듯이 디버거가 활성화되어 있기 때문에 탐색할 수 없지만 이것이 한 열에 대한 분포를 생성합니다.그러므로 다음 반복을 다시 실행하겠습니다.이제 c는 다음과 같고 y 분석 역할은 두 개의 경화 시간 열을 시작합니다.다시 실행하겠습니다.이제 세 개가 있습니다.계속할 수 있습니다. 백그라운드 로그에서 해당 결과가 Show 함수 덕분에 표시되는 것을 볼 수 있습니다. 루프가 종료될 때까지 이 작업을 계속합니다. 5개의 경화 시간 열이 모두 저장됩니다. JMP의 일반 세션에서 로그를 보면 더 쉽게 확인할 수 있지만, 지금은 모두 yCol에 저장됩니다. 프로그램 실행이 종료되었습니다. 디버거에서 중지를 클릭합니다. 이제 마지막 줄이 계산되었습니다. 같은 창에 5개의 히스토그램이 모두 포함된 경화 시간 분포가 있습니다. 이제 스크립트 편집기 창으로 돌아가 이 줄에 대해 간략하게 설명하겠습니다. 표현식을 내부에서 외부로 작성하는 방법에 대해 생각하는 것이 중요하다고 생각하기 때문입니다. 이 줄을 실행하고 오류를 여러 개 만들어서 왜 이런 식으로 작성했는지 명확하게 보여드리겠습니다. 미리 작성된 줄을 주석으로 처리하겠습니다. 디버거 인스턴스에서 설명했던 방식으로 돌아가서 Insert라는 단어를 입력하겠습니다. 스크립팅을 처음 접하는 경우 Insert를 언제 사용해야 할지, Insert Into를 언제 사용해야 할지 시행착오가 있을 수 있습니다. 하지만 이 경우에도 특정 분석 역할이나 분석 역할의 특정 열을 사용하여 플랫폼을 시작하려고 합니다. 하지만 플랫폼을 수정할 수 없습니다. 사용자가 만든 변수만 수정할 수 있습니다. 이를 L 값이라고 합니다. 이렇게 해 보겠습니다. 시작에 Distribution을 입력하고 괄호를 열고 괄호를 닫은 다음 쉼표를 입력하고 yCol을 삽입해 보겠습니다. 다시 말하지만, yCol에 저장된 내용과 distribution 뒤의 괄호가 필요하다는 순진한 관점에서 접근하고 있습니다. 이 한 줄을 실행하면 어떻게 되는지 보겠습니다. [오류 차임] 오류가 발생합니다. 이름이 확인되지 않았습니다. 모든 열의 Y에 대한 액세스 또는 평가에서 Y가 실패했습니다. 따라서 이를 무시하면 JMP가 이를 평가하려고 했다는 의미입니다. 평가할 수 없었습니다. 따라서 오류가 발생했습니다. 완료되지 않았습니다. 따라서 저장된 표현식이나 인용된 표현식을 평가하지 않고 검색해야 할 때 사용하는 함수는 Name Expr입니다.그래서 래핑할 것입니다.어휴, 여는 괄호.Name Expr로 yCol을 래핑할 것입니다.그리고 이것을 테스트할 수 있습니다.그렇다면 무슨 일이 일어날까요?yCol을 실행하면 방금 발생한 오류를 볼 수 있습니다.Name Expr yCol을 실행하면 로그에서 볼 수 있습니다.어휴, 크기를 조정하려고 합니다.로그에서 볼 수 있듯이 JMP는 이에 대해 오류를 표시하지 않습니다.그냥 인용된 표현식을 반환합니다.그래서 이제 오, 이번에는 줄을 실행하려고 할 때 문제는 JMP가 이번에는 yCol 변수에 문제가 없었다는 것입니다.하지만 이제 필요한 값 없이 분포를 보았습니다.그래서 JMP가 이 플랫폼을 시작하지 않도록 하고 싶습니다.그것을 취소하겠습니다.분포를 Expr로 래핑하여 JMP가 이를 전혀 평가하려고 하지 않도록 하고 싶습니다. 그리고 다시, 그것을 강조 표시하고 테스트하기 위해 실행할 수 있습니다.알겠습니다.문제가 발생하지 않습니다.그리고 지금 이것을 실행할 때 로그를 보면 내가 실행한 코드 줄이 있습니다.결과는 Y 역할과 그 안에 포함된 모든 열이 있는 분포입니다.그러므로 줄에서 보았듯이 마지막 부분은 전체를 래핑하는 것입니다.이것은 이것을 하는 한 가지 방법일 뿐입니다.전체 줄을 Eval 함수로 래핑합니다.그리고 그것을 실행합니다.그리고 모든 분포 보고서가 있는 또 다른 분포 창이 있습니다.그래서 저는 사람들이 우리가 왜 이런 것들을 이런 방식으로 쓰는지 이해하는 데 도움이 된다고 생각하기 때문에 이것을 개발하면서 몇 가지 실수를 겪으면서 살펴보고 싶었습니다.제가 언급할 또 다른 것은 일반적으로 권장하는 것입니다.처음 치료 시간 분포를 했을 때, 기억하시겠지만 분석, 분포로 가서 치료 시간을 Y 역할에 넣고 확인을 클릭했습니다. 영어: JMP가 이 경우에 대해 작성한 스크립트를 가져와서 이 루프를 작성하는 기준으로 사용하는 것이 좋습니다. 분포에서 그렇게 하지 않은 유일한 이유는 y 분석 역할만 있는 구문이 이전 구문이기 때문입니다. 분포 옆에 있는 빨간색 삼각형으로 가서 스크립트 창에 스크립트 저장을 선택하면 새 구문은 각 열에 대해 연속 분포인지 명목 분포인지 개별적으로 지정합니다. 따라서 이전 구문보다 해당 루프에서 스크립팅이 약간 더 많아집니다. 이전 구문은 잘 작동합니다. 하지만 이 새 구문을 사용하는 것이 좋습니다. 약간 더 복잡한 루프일 뿐입니다. 하지만 대부분의 플랫폼에서 JMP가 작성한 스크립트를 가져와도 괜찮습니다. 이 스크립트 창을 닫겠습니다. 그리고 대화형으로 작업하는 또 다른 예를 살펴보겠습니다. 이번에는 해당 스크립트를 캡처하겠습니다. 하지만 제 루프는 미리 작성되어 있습니다. 5가지 경화 시간 값의 관리도를 보고 싶다고 가정해 보겠습니다.그러므로 분석 메뉴로 가서 대화형으로 시작하겠습니다.품질 및 프로세스에서 관리도 작성기를 선택합니다.하위 그룹 역할에 일을 넣고 Y 역할에 치료 시간을 넣고 싶습니다.그러면 자동으로 관리도 작성기가 치료 시간의 개별 측정값과 이동 범위 차트를 제공합니다.그게 시작점입니다.완료를 클릭하여 제어판을 숨깁니다.그런 다음 관리도 작성기 옆에 있는 빨간색 삼각형으로 가서 스크립트를 스크립트 창에 저장합니다.그러므로 이 스크립트 편집기 창은 이제 해당 결과를 다시 만들 관리도 작성기를 포함합니다.이제 미리 작성한 스크립트와 일치시키기 위해 크기를 설정하는 줄을 삭제합니다.물론 이렇게 할 필요는 없습니다.시연 목적으로 단순화한 것입니다.그러면 플랫폼 실행에 관리도 작성기가 표시됩니다.그리고 몇 가지 옵션이 있습니다. 부울을 사용하여 제어판을 숨기고 있습니다. 기능을 표시하지 않습니다. 그리고 이 변수 역할이 있습니다. 변수 역할에는 하위 그룹이 있습니다. 모든 경화 시간 값에 대해 동일합니다. 그리고 경화 시간과 함께 Y 역할이 있습니다. 이 경우 경화 시간입니다. 따라서 실제로 해야 할 일은 세 가지를 만드는 것입니다. 경화 시간 열로 y 분석 역할을 만들고, 모든 경화 시간 열을 Y 역할에 추가한 후 여기에 추가하여 변수 부분을 만들어야 합니다. 그런 다음 해당 변수 부분을 제어 차트 작성기 시작으로 가져옵니다. 저널로 돌아가서 경화 시간 제어 차트를 클릭합니다. 다시 말해, y 분석 역할을 만드는 세 가지 부분입니다. 그리고 이것은 우리가 한 것과 같습니다. 이 선은 분포에서 본 것과 같습니다. 그리고 저는 변수에 다른 명명 규칙을 사용하고 있습니다. 그런 다음 변수 부분을 만들고 싶습니다. 그래서 저는 삽입 함수를 사용하고 있습니다. 하위 그룹 Day가 있는 변수가 있는데, 이는 모든 경화 시간 값에 대해 동일합니다. 하지만 JMP에서 단어 변수를 평가하려고 하지 않도록 하려고 합니다. 오류가 발생합니다. 그래서 Expr을 사용하겠습니다. 그런 다음 해당 스크립트의 분포와 마찬가지로 yExpr에 저장된 열 목록을 검색하여 변수 부분에 추가합니다. 그런 다음 이 스크립트에서 변수 부분 없이 Control Chart Builder의 기본 템플릿을 작성하여 ccExpr 변수에 저장합니다. 마지막으로 변수 줄을 추가합니다. 따라서 백그라운드에서 해당 코드를 살펴보면 해당 변수 줄이 Control Chart Builder 시작에 추가됩니다. 이 경우 이미 정의한 따옴표로 묶인 표현식이기 때문에 두 가지 모두에 Name Expr을 사용했습니다. 이 삽입 함수를 eval로 래핑하는 대신 해당 결과를 자체 변수에 저장합니다. 그런 다음 스크립트에서 cc를 사용하여 작성된 표현식을 평가합니다. 계속해서 이것을 디버거로 가져가 보겠습니다.그러니 마우스 오른쪽 버튼을 클릭하고 디버그를 선택하겠습니다.감시 탭으로 이동하겠습니다.그리고 다른 스크립트에서 현재 감시 변수를 제거하고 싶으므로 모든 감시를 삭제하는 버튼을 클릭하겠습니다.그리고 이 스크립트의 네 변수에 대해 네 개의 감시를 추가하겠습니다.그러니 녹색 더하기 기호를 클릭하겠습니다.그리고 먼저 yExpr을 입력하고 확인을 클릭합니다.그리고 다시 녹색 더하기 기호를 클릭하고 varExpr을 추가합니다.그리고 대문자로 작성해도 상관없지만 스크립트의 텍스트와 일관성을 유지하고 싶습니다.그러니 확인을 클릭합니다.ccExpr을 추가하고 싶습니다.확인을 클릭합니다.그리고 마지막으로 cc를 추가하고 확인을 클릭합니다.여기서 세 개의 다른 위치에서 멈추고 싶기 때문에 세 개의 중단점을 넣을 것입니다. 따라서 첫 번째 중단점은 온라인에 있을 것입니다.그러면 반복의 각 단계에서 무슨 일이 일어나는지 볼 수 있습니다.다음 중단점은 온라인에 있을 것입니다.그러므로 varExpr에 저장된 내용을 볼 수 있도록 일시 중지합니다.그리고 마지막으로 cc에 저장된 내용을 보기 위해 온라인에 중단점을 넣습니다.그리고 이것을 닫으면 평가됩니다.Step Over 버튼을 사용하여 디버거를 실행합니다.그러므로 그것을 클릭합니다.그리고 줄이 평가되고 루프에 도달합니다.그리고 아래의 Watch 탭을 보면 지금 저장된 내용과 yExpr을 볼 수 있습니다.그런 다음 Step Over를 다시 클릭하면 첫 번째 중단점으로 이동합니다.Step Over를 세 번째로 클릭하면 이제 yExpr에 Column Cure Time이 있는 것을 볼 수 있습니다.Step Over를 다시 클릭하여 해당 중단점으로 이동합니다.한 번 더 클릭합니다.이제 Y 역할에 Cure Time을 삽입했습니다.그러므로 for 루프가 끝날 때까지 계속합니다. 그리고 이것을 보면 5개의 경화 시간 열이 모두 Y 역할에 있음을 알 수 있습니다.이제 줄에서 varExpr을 정의합니다.그러므로 이제 하위 그룹 Day가 있는 변수와 모든 열이 있는 Y 역할입니다.Step Over를 다시 클릭하면 ccExpr을 정의한 곳으로 이동합니다.그리고 Watch 탭에서도 Control Chart Builder 시작을 저장하지만 중요한 부분이 누락된 것을 볼 수 있습니다.그리고 줄에서 모든 것을 함께 넣습니다.그러므로 Step Over를 한 번 더 하겠습니다.그리고 이제 이것을 조사하고 싶다면 Control Chart Builder, 제어판 표시 등에 varExpr에 저장된 값이 추가되었습니다.Step Over를 한 번 더 클릭합니다.프로그램 실행이 종료됩니다.Stop을 클릭합니다.이제 일반으로 돌아갑니다. JMP 세션에서 경화 시간 등에 대한 개별 측정값과 이동 범위 차트를 볼 수 있습니다. 이 예제에서는 For 함수, Expr 함수 사용, Insert 함수를 사용한 Expr 함수 이름 지정, 그리고 이러한 간단한 상황에서 디버거를 사용하는 방법을 살펴보겠습니다. 저널로 돌아가서 스크립트 창의 변경 사항을 저장하지 않고 모두 삭제, 저장 안 함(Delete All Save None)을 클릭하겠습니다. 이것으로 이 데모를 마무리하겠습니다.