Subscribe Bookmark RSS Feed

Editing chart with 'Dispatch'

pticguy

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));

1 REPLY
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));