What is the best way to update the New Table Variable value inside a function. At this moment, I am doing it as below. However, I found that this Days variable will not get updated and it will create a new variable called Days 2.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// assume below is a new function, and I'm passing dt as input and I want to update the Days variable
myFunction = Function ({dt},
// I want this Days variable get updated with new value below, 100
dt << New Table Variable ( "Days", 100);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
myFunction(dt)</CODE></PRE><P> </P></LINGO-BODY><LINGO-LABS id="lingo-labs-682883" slang="en-US" mode="NONE"><LINGO-LABEL>Automation and Scripting</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-682897" slang="en-US" mode="NONE">Re: How To Update New Table Variable value in Function</LINGO-SUB><LINGO-BODY id="lingo-body-682897" slang="en-US" mode="NONE"><P>Scripting Index</P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="jthi_0-1696242700313.png" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/57148iA94A611B5705E00A/jthi_0-1696242700313.png" role="button" title="jthi_0-1696242700313.png" alt="jthi_0-1696242700313.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P>so use << Set Table Variable instead of creating a new one</P></LINGO-BODY><LINGO-SUB id="lingo-sub-683259" slang="en-US" mode="NONE">Re: How To Update New Table Variable value in Function</LINGO-SUB><LINGO-BODY id="lingo-body-683259" slang="en-US" mode="NONE"><P>Hi,</P><P> </P><P>Thanks for this suggestion, and I think its working. Additional to this, I've some extra question about this variable update. Do you know how can JSL update the data table variable based on new variable that we declared outside from the function? I modified the code as below and I think that it is not working. I want the Set Table Variable to be able to load values from a and b variable.</P><P> </P><PRE><CODE class=" language-jsl">Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// declare new variable, this will be input from user
a = 100;
b = 200;
// assume below is a new function, and I'm passing dt and a as input
myFunction1 = Function ({dt, a},
// I want this Days variable get updated with new value based on a
dt << Set Table Variable ( "Days", :a);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
// assume below is a new function, and I'm passing dt and b as input
myFunction2 = Function ({dt, b},
// I want this Days variable get updated with new value based on b
dt << Set Table Variable ( "Days", :b);
dt << Select Where( :Name( "sex" ) == "M" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
myFunction1(dt);
myFunction2(dt);
With a table variable, if you don't use
dt << Set Table Variable
you will need to delete the variable first, and then create it again.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Table Variable( "Days", 42 ); // In original data table, Days set to default which is 42
// assume below is a new function, and I'm passing dt as input and I want to update the Days variable
myFunction = Function ({dt},
// I want this Days variable get updated with new value below, 100
dt << Delete Table Variable ( "Days");
dt << New Table Variable ( "Days", 100);
dt << Select Where( :Name( "sex" ) == "F" );
dt << Subset( Copy formula( 1 ), Suppress formula evaluation( 0 ), Selected Rows( 1 ), Selected columns only( 0 ) );
dt = Data Table (Current Data Table() << Get Name());
);
Oh, I missed that part. Got it.
Now it is working as expected. Thanks Jim.