The JMP Scripting Index is an important tool for learning JSL (JMP Scripting Language). Personally, it’s a window that I always have open when working in JMP! But do users know what it is? Where to find it? How to get the most out of it?
The Scripting Index is a collection of information for JSL functions, objects, and display boxes. This talk showcases the various features of the Scripting Index, including a breakdown of entry types, the information provided for each entry, and how to find additional help and examples. I also highlight the search feature, which provides customizable filtering options, some of which have been recently updated. Finally, I share some of the things my team has done to improve the statistical entries of the Scripting Index, as well as my favorite ways to use it.

Hi, my name is Colleen McKendry, and I'm a Senior Statistical Writer at JMP. That means I document a lot of the statistical platforms in the software. Prior to starting at JMP, which was about 9 years ago now, I hadn't opened JMP at all. Throughout my career, it's definitely been a learning process of learning JMP as I go so that I know enough about it to write about it. While I was learning about JMP, one of the things that I found really useful was the JMP Scripting Index. At the time, I also felt like it was lacking a little bit, and so I thought it had a lot of potential, but some of the information wasn't as complete as it could be, and things like that.
A couple years ago, starting around JMP 16, my coworker Michael Crotty and I started a project to revamp the statistical aspects of the JMP Scripting Index. This involved basically just making sure information was complete, robust, and just as useful as possible.
Recently, we just finished our first full pass of all of the stat platforms that we were looking at, and so I feel like the Scripting Index is in a really good place right now, and so I thought this would be a good time to give this presentation and let people know more about the Scripting Index. Whether you have never heard of it before or you're an advanced user, wherever you are on that spectrum, I hope you can get a little something out of this talk.
For those of you who don't know what the Scripting Index is, it is an important tool for learning JSL, which is the JMP Scripting Language, and so that's the native-coded language in JMP. Anytime you open up a script window, and you start typing anything out, you're coding in JSL. The Scripting Index is a collection of information for JSL functions, objects, and display boxes, which I'll talk more about in a little bit. Each entry includes a brief description and an embedded example script that can be run just within the index itself.
There's also a search feature, which provides customizable filtering options, some of which have been recently updated for hopefully an improved customer experience. Where can you find the JMP Scripting Index? In the product, there are a variety of ways to access the Scripting Index. The first is simply through the Help menu. If you click on the Help menu, there will be an actual Scripting Index option, and so you can use that to open it, or you have options to get to it while you're actually in a script. If you're in the middle of coding in a script window, and you want a little bit more information about a specific function or object, you can press the Alt key and double-click that function or object, and the Scripting Index will open and populate with the entry of interest.
Similarly, in a script, you can also right-click on the function or object, and there'll be an option, Help Scripting Index, and that performs in the same way. Then very recently, there's now actually an online version of Scripting Index available at jsl.jmp.com. This is the first time we've had Scripting Index information available online. This is one-to-one with the in product index. This is just a different way for users to access, share, or use the information in the Scripting Index.
Let's dive in. This is what the Scripting Index looks like when you open it. I've put boxes around the different areas of the Scripting Index that I'm going to be talking about, and so we'll start with this top left corner, which contain a bunch of navigation-type controls. First, we have this little toggle button here, and so that just changes the view of the Scripting Index if you want to change the layout of how you're looking at things. Then we have these navigation buttons, so backward and forward. If you're doing any type of searching, or you're clicking around, you can use those buttons to go back and forth without having to retype something.
Next, we have a dropdown list of all of the categories, and so these are all the categories in this left selection list. We have Functions, Objects, Python, and Display Boxes, and so if you select one of these, it'll show just the functions or just the objects in this list. In the Functions category, these are built-in functions that JMP provides. These are going to be more code-based, and so the results of the functions, you're going to see the output in the log as opposed to in the UI. Some examples of these are numeric functions, matrix functions, character functions, any type of probabilistic functions. Those are all going to be in there.
Objects, on the other hand, are very UI based. These are dynamic parts of JMP that can receive instructions via messages to perform certain actions. These are going to be things that you see in the UI, like data tables, data columns, platforms, results windows, and the entries in this category will be related to those. Changing a data column, adding an option to a result window, things like that.
The Python category contains features that are specifically related to Python integration, but I will not be talking about that at all in this talk. Finally, we have Display Boxes. These are different types of rectangular boxes that are used to make up reports or new windows in JMP. The relationship between these different Display Boxes in a report are represented by the display tree. All the entries within this category just relate to populating Display Boxes, adding options, say, like a launch window, so radio box options, checkboxes, things like that.
Next, we're going to talk about these two selection lists, and so the left-hand list contains category names and the right-hand list contains item names. These lists are related to each other in a hierarchical way, and so the items on the right are contained within the selected category name on the left. We can see just in this image that Control Chart Builder is selected on the left. All of these item names on the right are related to a Control Chart Builder object. Then any item name that you select in this right list, that is what populates the rest of the information in the Scripting Index.
That's what we're going to go over now. The remainder of the Scripting Index window contains all the information, like the useful stuff that you're looking for. We see that there is an item name at the top, and then there's a syntax or prototype. This is just a basic code structure of how the entry should be coded, including any options that are contained within that entry.
There's also a brief description that basically just tells you what the entry does, sometimes what platform it's in. Then you can see that there's an embedded script window and an embedded log window with an example already populated, and so you can run this example just within Scripting Index, and it'll run the code and give the output, whether it's in the log or the UI. This just lets you see some example code without actually having to do any coding yourself.
If you see a little dropdown icon in the example area, that means that there are multiple examples for that entry. You can click that and view the different examples and see if there's anything else that you're interested in. Finally, we have some additional help options. This See Also will also bring down a dropdown menu, and that will be a list of any other Scripting Index entries that are used within this example script. In this case, variables. I know that variables is another entry in the Scripting Index, so that would show up if I click this, and then I could navigate to the variables entry of the Scripting Index and get more information about that.
We also have a Topic Help button, and that will take you to the online documentation for whichever area you're looking at. In this case, if you click this, it would go to the online documentation for Control Chart Builder. Next, we have the filtering feature and the search bar, and so this enables you to search throughout the Scripting Index for any type of term or phrase that you're interested in. There are a few options in this dropdown list of how to narrow your search or just make it a little more specific to what you're looking for.
By default, when you search something, it searches through everything in the Scripting Index. It searches through all the names, prototypes, descriptions, and examples. If you want to change that, there are some options here in the bottom section where you can say just search through examples or just search through the category and item names if you were interested in that.
The top section of these options is single selection, so you can only choose one of these at a time. That just helps you narrow down your search based on these conditions. It's also worth noting that when you do search, the results are not ranked or reported in any significant order other than that they're shown in alphabetical order.
Now I'm going to do just a short little demo. I'll get out of here. Go to JMP. As I mentioned, you can get to the Scripting Index through the Help menu like this, or if you had a script, say I had this script open, I'm scripting something about Response Screening. I can press my Alt key and double-click on Response Screening. We can see that the Scripting Index opens, and that search field is populated with the thing that I double-clicked on, and so we have all kinds of results that are related to Response Screening that I could get more information from.
I'm going to exit out of this to start from the beginning. Here's that Toggle button that I mentioned, and that just changes the view. Then we have our navigation controls. Since there was a search before, I could go back to my Response Screening results without having to type it, or I could go back forward to when I cleared it.
These are the categories. I could look at just the Functions, just the Objects, Python, or Display Boxes. Then I didn't mention this in the PowerPoint, but there's also a Version button. You can also narrow down this list based on what version of JMP the entry was added in. If you wanted to only look at entries that were added after JMP 18, you could do that if you wanted to look for some new stuff.
Now we have our selection list. On the left, I'm going to go back to that Control Chart Builder if I can find it. There we go. You can see that on the right, all of these are related to Control Chart Builder objects. As I click on these, the Scripting Index updates dynamically with information about the specific item name that I'm clicking on.
Here's the entry Control Chart Builder, which was also shown in the PowerPoint, and so here's the script that's automatically populated. I can run this using this run example, and it will run that Control Chart Builder script for me. I can take a look at it. Maybe I'm trying to compare with the description to see if I can pick stuff out. I have this dropdown menu, so that means that there's more than one example for Control Chart Builder. In this case, there are several Control Chart Builder examples.
I can go down here, I can click on Rare Event Chart, and I can run the example for that instead. That'll give me the G chart. Here's that little See Also. Like I said, there's a bunch of other Scripting Index entries used within this example script. If I wanted to know more about how to specify the Sigma, for example, I could click on this. I go right to the Sigma entry and I can read about that it specifies the standard deviation. I can read about the default and just gain some more knowledge there. Then I can use the back button to go back to the example that I was looking at originally. If I click this TopicHelp button, the documentation for Control Chart Builder will get loaded. Minimize that.
I just want to do a few examples of the other categories. If I look at just Functions, just for demonstration purposes, I'm going to do some very simple examples. For Numeric, we have just the simple absolute value function that I can run here. You can see at the bottom, that's where the output is in the log. [inaudible 00:15:41] up a little bit.
I should also note that these examples, the embedded script is completely editable, so I can go in, and I can add a new line if I wanted to. I can run that as well and get that result. Anything you edit, anything you add or take away, that remains in this script window, no matter where you click around to. You can go here, you can go to different category names. If you come back to numeric and absolute value, it will still be there. All of that will remain either until you close the Scripting Index window or when I started editing, you might have noticed that this extra button appeared, and so I can also click on that and this will reset the example to the default, and so it'll take away anything that I edited.
Now for a Display Boxes example, like I said, this is about populating JMP windows or adding new things to existing JMP windows. Here's a basic example of creating a new window with a CheckBox, and so you can see that here. You can also add to an existing window. This is a frame box, and so basically, frame boxes are the big rectangles in a JMP window. Here in this script, I can run the first part of it, which is a bivariate script, and so that's just the normal JMP Bivariate report.
Then, using some extra code, I can run that, and it will add a polygon on top of the Bivariate report. This isn't Scripting Index related specifically, but I did want to mention that I did want to show how to access the display tree since I mentioned it in the PowerPoint. You can right-click on this disclosure icon, go to Edit, Show Tree Structure. These are basically all display box items, and so, all of these would have entries within the Scripting Index and you could figure out how border boxes play with frame boxes, what you can add, or how you can add markers to a graph or how you can get information about the markers in a graph, all these nitty-gritty details. I just wanted to show that real quick. Get rid of all these.
The last thing I wanted to do in the demo was to just do a few searches to show what options might be useful for narrowing down a search. I have all the defaults on and say I want to go back to control charts, so I'm interested in searching for control chart. The first hit that appears is actually this compare with Control Decision Chart located somewhere in Fit Model. This isn't what I was interested in that I wanted a control chart. This is because the search is looking for just the terms on their own, and so this contains control and chart, but not necessarily together, and so I can use the Contains Phrase option to make sure that all of my search results contain control chart as a phrase, the whole thing. That could be useful in making sure I have the examples that I'm interested in. I can clear that, set it back to the default.
Using the search bar is actually something that I think is really useful for new users, and not necessarily if you want to learn a lot about scripting. If I was a new user in JMP and I wanted to perform an ANOVA, we know that JMP doesn't always call things what standard literature does. I work at JMP and I know JMP. I know that I can find an ANOVA analysis in the Oneway platform. A new user, that might be really hard to figure out just using the just in the UI.
I could search for ANOVA in the search bar and I could see the first hit shows or hides an ANOVA report. This looks very promising. I can run this. I can see, it's related to this Oneway Analysis. I could even go as far as relaunching to see what the launch window looks like and just really get a good idea of what I would need to do in the UI on my own if I wanted to find how to do an ANOVA analysis.
If I wanted more examples, I could keep going down. Then, when I got to this third result, I would see that this is actually about a multivariate analysis of variance. I'm not interested in that necessarily. I just want strictly ANOVA, and so to narrow this down and make sure that none of my other search results contain any ANOVA entries, I can use the Match Whole Words. That gets rid of that result and a couple of other ones, and so now I'm searching for ANOVA as just a word by itself, not necessarily if ANOVA is contained within another word. That could be useful for something that you're searching for.
Back to default. Now, for my last search example, say that you were interested in coding. You're not necessarily a new user, but you want to know how to code some things on your own, in particular, you have some matrices for some reason, you want to do your own singular value decomposition. You're like, "How do I do that in JSL?"
You can search for singular value decomposition. We see we get a few hits, but these first few, they look like they're performing singular value decomposition within a platform and not necessarily just through code on your own. The search bar also plays with these filtered categories. You can change this to only display functions, and so now we have the four functions in JMP that enable you to do your own singular value decomposition in JSL. You could go through those and decide which one was the best for you and move forward with your SVD.
That's it for the demo. I just wanted to go back real quick to the presentation. Full-screen deck. I just wanted to end with a couple of my favorite ways to use the Scripting Index and hopefully reiterate that I really believe it's not just for advanced scripters, and there's also a place where it can be really useful for new users as well, and so the first, which I mentioned in the demo, is to utilize the search feature. It's really good for searching what JMP calls something else, ANOVA versus Oneway as an example.
It's good for finding what platform a certain statistical technique is in. If you have a technique you're interested in, but you're not sure where exactly it would fall into a platform, you can use the Scripting Index to figure that out pretty quickly. You can also just use the Scripting Index to find examples or data tables for a specific platform. Obviously, it's good for learning basic scripting. Beyond that, I feel like even now, anytime I'm doing any scripting at all, I also have the Scripting Index open as a reference.
For me, one particular time that it was useful was when I was creating an add-in. In our add-in, we had some custom launch windows, other dialogs, and we added things on top of existing JMP reports, and so that display box category in the Scripting Index was definitely extremely useful for learning how to add options to launch windows, like checkboxes and things like that, and also how to add different things to an existing JMP report.
Finally, I think it's a good way to get some basic documentation without leaving the product. If you're in the middle of working, maybe you don't necessarily want to go to a browser and search through our documentation, this way you can just stay in the product, get some basic information that hopefully will be helpful. In the case that it's not, you can use the TopicHelp button to get you directly to the page or area of the documentation where you can get more information.
That's it for me, and this was recorded, but I will be in the chat while you're watching this, so if you have any questions, feel free to send them there.
Presenters
Skill level
- Beginner
- Intermediate
- Advanced