## Editing chart with 'Dispatch'

Community Trekker

Joined:

Sep 12, 2014

JMP 9.0.3

Windows 7 Enterprise SP1

I am trying to edit some 'control chart' display parameters using 'Dispatch'. It seems like the only way I can get the command to work is if I use the string for the chart title directly. I need to be able to pass that name into the Dispatch command somehow. Here's my 'not working' script:

xbarname = eval("XBar of "||Testname);

Control Chart(

Sample Label( :Sample ),

Chart Col( :Testcolumn,

XBar(

Box Plots( 1 ),

Connect Points( 0 ),

),

),

SendToReport(

Dispatch(

{xbarname},

"2",

ScaleBox,

{Min(1), Max( 1.5 ), Inc( 0.05 ),

Minor Ticks( 1 )}

),

)

);

1 ACCEPTED SOLUTION

Accepted Solutions
Solution

I tried but couldn't find the magic combination of eval, parse, expr that will make it work directly.  When faced with situations like this I tend to use a brute force approach.  Basically you build a string dynamically and execute it with eval(parse()).  Using evalinsert allows clean insertion of parameters, in this case xbarname.  Also, using the constructs \[ and ]\ allow for embedding of double quotes without the need to escape them, which also gives the code a cleaner look.

testname = "Temperature";

xbarname = "XBar of " || Testname;

cc_expr = evalinsert("\[

Control Chart(

Sample Label( :Sample ),

Chart Col( :Testcolumn, XBar( Box Plots( 1 ), Connect Points( 0 ), ), ),

SendToReport(

Dispatch(

{"^xbarname^"},

"2",

ScaleBox,

{Min( 1 ), Max( 1.5 ), Inc( 0.05 ), Minor Ticks( 1 )}

),

)

)]\");

eval(parse(cc_expr));

Solution

I tried but couldn't find the magic combination of eval, parse, expr that will make it work directly.  When faced with situations like this I tend to use a brute force approach.  Basically you build a string dynamically and execute it with eval(parse()).  Using evalinsert allows clean insertion of parameters, in this case xbarname.  Also, using the constructs \[ and ]\ allow for embedding of double quotes without the need to escape them, which also gives the code a cleaner look.

testname = "Temperature";

xbarname = "XBar of " || Testname;

cc_expr = evalinsert("\[

Control Chart(

Sample Label( :Sample ),

Chart Col( :Testcolumn, XBar( Box Plots( 1 ), Connect Points( 0 ), ), ),

SendToReport(

Dispatch(

{"^xbarname^"},

"2",

ScaleBox,

{Min( 1 ), Max( 1.5 ), Inc( 0.05 ), Minor Ticks( 1 )}

),

)

)]\");

eval(parse(cc_expr));