Scripting Guide > Compatibility Notes > Compatibility Issues in 15.0
Publication date: 08/13/2020

Compatibility Issues in 15.0

Concat To() Strings

String literals are no longer allowed as the first argument of Concat To(). Instead of the following syntax:

"abc" ||= "123" // throws an error


"abc" || "123"

Set Bookmarks in Projects

Invalid input results in the Set Bookmarks message produce an error. Previously, invalid input was silently ignored.

Importing URLs from a Web Page

Previously, when an HTML table contained a link with text, only the text was imported and the actual link was lost. Now, both are imported. The imported representation is still a character string column.

The strings can be turned into JSL lists by changing the column type to Expression. The first element of the list is the text that was displayed on the web page and captured in the JMP data table before. The second element is empty unless there was also a picture, in which case it is the URL for the picture (same as before if there was a picture). The third element is the URL. If there is a link, an Event Handler column property is also added.

Sorting Values

Values are identically sorted in data tables and on axes.

The Value Ordering column property has been renamed Value Order. The Row Order Levels column property can no longer be assigned to a column through the JMP interface; it is an option in the Value Order column property.

For compatibility, both Value Ordering and Row Order Levels column properties can be set and retrieved with the Get and Set commands.

JSON Import

The JSON import code no longer uses the JSON file’s numeric, Boolean, and string distinction; instead it determines the entire column can be numeric or not. This can be explicitly specified as character if the guess is not what you want.


JMP can have several projects open at the same time, as well as items not open in any project. Each project now has its own global scope, which prevents conflicts caused by identically named variables in different projects. Previously, variables from all projects were put in the same scopes unless each script included Names Default to("project"). In the rare case that you do want to share specific variables among all opened projects, use the new ::: root operator.

Scripts in different editor windows must use namespaces or globals to communicate with each other. If script 1 opens script 2, script 2 does not have access to the script 1 Here namespace variables. In JMP 14.1, if you opened script 2 from script 1, any variables defined in the Here namespace of script 1 were accessible by script 2.

Copy and Paste Columns and Metadata in Data Tables

Copy Multi Columns Properties and Paste Multi Columns Properties have been renamed Copy Column Properties and Paste Column Properties.

Copy Multi Columns Properties and Paste Multi Columns Properties are still supported for backwards compatibility.

Line Feed and Carriage Return Encoding

Line feeds and carriage returns now support the Unicode 0x0A standard. Because new scripts will be saved with LF line endings, any string literals in JSL would be changed. If a script parses those strings expecting a CR "\!r", the strings might have changed to LF "\!n" after saving the script in JMP 15.

Because the script editor uses CR line endings and the file on disk has LF endings, running a script from the editor could potentially be different than running directly from a file, like an add-in or selecting Edit > Run Script.

Make Validation Column

The Make Validation Column utility is now a platform. Search the Scripting Index for “Make Validation column” to read more about new script commands. Rewrite new scripts using the new commands.

Legacy scripts should run correctly, except for Stratify By Group (a rarely used command).

Data Filter Updates

For categorical filters in List Display and Check Box display modes, bars have been added to represent the number of items in each category. Continuous filters use a new range selector display, drawn on top of a histogram for reference. Continuous filters include the minimum and maximum values by default.

Scripting of the filter itself is backwards compatible. However, you might run into trouble with a script that uses the display boxes within the filter; the box structure has changed. One example is with scripts that expect the Check Box Display to have labels for each categorical level.

Instead of using:

Expr( Window( windowOfInterest )[checkboxbox( 4 )] << Get Selected )


ldf << ( Filter Column(:Brand) << Get Selected Items );

Adobe Flash is Deprecated

Save As SWF messages are no longer supported.

Deleted Object Reference with a Modal New Window

Display boxes in New Window() that uses the Modal message are no longer accessible after the window is closed. When a New Window is closed, the DisplayBoxes that make up the contents of the window are destroyed. Earlier versions of JMP on Windows operating systems incorrectly allowed scripts to access the DisplayBoxes due to a delay in the actual destruction of the objects.

There are several ways to extract information from the Display box objects before the window is closed. As explained in Construct a Modal Window, you can use the Return Result message so that the values are returned as a list. Other options are to write your own OK button with the desired actions in the script argument for the Button Box(). Also, you can use the OnClose message for the New Window(). Find more details in Interact with a Closing Window

Want more information? Have questions? Get answers in the JMP User Community (