It is obvious that you are still struggling with the very basic parts of JSL. A couple of pointers, based upon the code you are showing.
1. Don't make up code. When it doesn't work, it is just confusing. When guessing at code works, you don't know why, and you haven't learned anything.
2. Use the Log. In your many discussions that you have listed, I have not seen results from the log. These messages provide great detail and insight on what is going wrong with your JSL.
3. Use Help==>Scripting Index. It provides the correct syntax and examples on how the items work. The Scripting Index is the most complete documentation on JSL.
Let me critique your code
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
The description of the Summary Platform is found at:
Help==Scripting Index==>Data Table==>Summary
Here is an example almost itdentical to what is needed.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary( Group( :Age ), Mean( :Height ) );
But what seems to be missing is how to create a pointer to the summary table that will be produced by the Summary Platform. However, you don't seem to understand how to reference data tables. In the example, the variable "dt" points to the data table opened. So as can be seen it is used when the Summary Platform references it. However, you can also use a Data Table() function to point to the physical name of a data table. Which is kind of what I think you are trying to do, with Data Table("Data Table............."). Either one will work.......if you know the name of the data table. But as you are showing in your provided code, make sure you specify a variable to point to the data table you will be creating from the Summary Platform, so you can use it in your next step ( i.e. dt = )
The next section of code appears that you were just guessing at syntax.
//Create Tabs based on the F D
VariabilityWindow = New Window("Variability Chart",tb = Tab Box() );
For(i =1, i <=nTabs(dt2 << get row names()), i++,
tb << insert(
dt2: F D[i] || Char(i),
V list Box(
Button Box("Variability Chart #" || Char(i)),
)
)
);
What you are trying to do is to generate a new tab for each Value of F D from the summary data table.
A search of the Scripting Index shows that nothing by the name of nTabs or get row names() exists. I assume you were thinking that nTabs would give you the number of tabls you want. Which it cannot, since at this point in the program, no tabls have been produced, and just because a summary table has been produced, it would have know idea that the number of rows in the data table are the number of tabs you want to product. However, you can look into the Scripting Index and see what functions will tell you the number of rows there are in a data table "N Rows()" and simply change the made up code for N Rows() and you will have your solution
The following code is making the assumption that your original data table has a pointer variable called "dt" that is pointing to it.
dt2 = dt << Summary( Group( :F D ), Freq( "None" ), Weight( "None" ), invisible );
//Create Tabs based on the F D
VariabilityWindow = New Window( "Variability Chart", tb = Tab Box() );
For( i = 1, i <= nrows( dt2 ), i++,
tb << Insert(
dt2:F D[i] || Char( i ),
V List Box( Button Box( "Variability Chart #" || Char( i ) ), )
)
);
dt2 = Data Table(
"Data Table........") << Summary(
Group( :F D ),
Freq( "None" ),
Weight( "None" ),
invisible
);
Jim