cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Sign-in to the JMP Community will be unavailable intermittently Dec. 6-7 due to a system update. Thank you for your understanding!
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.
  • JMP 19 is here! Learn more about the new features.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
FN
FN
Level VI

Column() vs As Column() vs datable:column vs dt:As name("column")

JSL has several ways to refer to columns. Let's open a data table first.

 

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Bands data.jmp" );

Now we create a table script that has something like this.

dt = current data table();

print(dt:timestamp == Column(dt, "timestamp")); 
// 0

print(Column(dt, "timestamp")==As Column(dt, "timestamp")); 
//0

In automated scripts (for example, a graph), when a user changes the name of a column, it seems to adapt the script to the new column name. This failed in custom JSL, with something like Index() appearing.

 

How one would use all of these methods to make a JSL script robust to column name changes?

 

Regards,

 

13 REPLIES 13
FN
FN
Level VI

Re: Column() vs As Column() vs datable:column vs dt:As name("column")

Could you please include in your answer a reference that explains this bit?

"As Column() "accesses" a column (what this means depends on the case...)."

 

 

 

 

 

jthi
Super User

Re: Column() vs As Column() vs datable:column vs dt:As name("column")

Best reference (outside of my own experience and lots and lots of trial and error) is from scripting index:

jthi_0-1662735794267.png

jthi_1-1662735806153.png

 

Help pages is other place Column(<dt>, "name", "formatted")  and As Column(name). This also has some information  Scripting Guide > JSL Building Blocks > Rules for Name Resolution > Frequently Asked Questions abou... and  Scripting Guide > Data Tables > Columns > Send Messages to Data Column Objects also Iterate on Rows in a Table , so basically the documentation (especially Scripting Guide).

-Jarmo
hogi
Level XIII

Re: Column() vs As Column() vs datable:column vs dt:As name("column")

Nice video tutorial about the differences between column() and as column():
Most Common JSL Mistakes and How to Avoid Them (2020-US-30MP-571) 

(starting @ 5:18 min)

with the example

dt << Select Where( Column( colName )[Row()] == 14 );
dt << Select Where( As Column( colName ) == 14 );


Concerning 
How one would use all of these methods to make a JSL script robust to column name changes?

 

How about an error handling feature which catches missing-column-events after column name changes - with an option to auto-fix the code.

The idea:

In case of a missing column, instead of showing an error message, JMP could open a window with a column list to pick the correct one.

Then the execution of the code could continue to run - and the source code could be fixed automatically.

hogi
Level XIII

Re: Column() vs As Column() vs datable:column vs dt:As name("column")

Here is the wish :)
catch "missing column" error and provide a selection menu 

 

Should be easy to implement now for JSL Editor - as a similar functionality was just introduced with Jmp 17's new Workflow builder:
https://community.jmp.com/t5/JMP-Wish-List/catch-quot-missing-column-quot-error-and-provide-a-select...

 

Recommended Articles