BookmarkSubscribeRSS Feed
twillkickers

Contributor

Joined:

May 21, 2018

User Defined Function with Specified Column Name (JSL)

I am trying to create a user defined function where you can specify a column name as one of the inputs. For example, I would like to use the below code to create a function that selects rows where the specified "ColumnName" equals the input "Value":

TestFunction = Function( {TableName, ColumnName, Value}, {},
TableName << Select where(:ColumnName == Value);
);

However, when I try and run this function, I get the following error:

Name Unresolved: ColumnName{1} in access or evaluation of 'ColumnName' , :ColumnName/*###*/

What am I doing wrong?

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
txnelson

Super User

Joined:

Jun 22, 2012

Solution

Re: User Defined Function with Specified Column Name (JSL)

Here is a script that will accomplish what you need.  It uses a pointer to the data table in the first example, and uses an actual table name in the second example

names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");


TestFunction = Function( {TableName, ColumnName, Value}, {},
TableName << Select where(as column(ColumnName) == Value);
);

testfunction(dt,"age",13);
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");


TestFunction = Function( {TableName, ColumnName, Value}, {},
data table(TableName) << Select where(as column(ColumnName) == Value);
);

testfunction("Big Class","age",13);
Jim
1 REPLY
Highlighted
txnelson

Super User

Joined:

Jun 22, 2012

Solution

Re: User Defined Function with Specified Column Name (JSL)

Here is a script that will accomplish what you need.  It uses a pointer to the data table in the first example, and uses an actual table name in the second example

names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");


TestFunction = Function( {TableName, ColumnName, Value}, {},
TableName << Select where(as column(ColumnName) == Value);
);

testfunction(dt,"age",13);
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");


TestFunction = Function( {TableName, ColumnName, Value}, {},
data table(TableName) << Select where(as column(ColumnName) == Value);
);

testfunction("Big Class","age",13);
Jim