It looks like the original request was to use jsl to load a limits table into the Manage Spec Limits platform and then save to column properties. Below is JSL that will do that.
dtLimits=New Table( "Limits",
Add Rows( 4 ),
New Column( "Variable",
Character,
"Nominal",
Set Values( {"OZONE", "CO", "SO2", "NO"} )
),
New Column( "_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.075, 5, 0.01, 0.01] )
),
New Column( "_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.25, 12, 0.09, 0.04] )
),
New Column( "_Target",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Show Limits",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1] )
),
New Column( "Importance", Numeric, "Nominal", Format( "Best", 12), Set Values([2,4,1,3])),
New Column( "Units",
Character,
"Nominal",
Set Values( {"lbs", "mi", "in", "ft"} )
),
New Column( "Centerline",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.05, 0.025] )
),
New Column( "Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [.05, 4, 0.03, 0.01] )
),
New Column( "Measurement Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 5, .5, .8] )
),
New Column( "Lower Tolerance",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.075, 5, 0.01, 0.02] )
),
New Column( "Upper Tolerance",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.25, 12, 0.1, 0.05] )
),
New Column( "Reference",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Resolution",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.05, 1, 0.08, 0.9] )
),
New Column( "Historical Mean",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0.15, 7, 0.04, 0.025] )
),
New Column( "Historical Process Sigma",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] )
)
);
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj=dt<<MANAGE spec="" limits=""></MANAGE>obj << Save to Column Properties;Here is a simple script that will create a limits table that can be used for Manage Spec Limits
Names Default To Here( 1 );
// point to your table that has limits
dt = Data Table( "your table name" );
// Create the new limits table
dtLimit = New Table( "Limits",
New Column( "Variable", character ),
New Column( "LSL" ),
New Column( "USL" ),
New Column( "Target" )
);
// Read through the original table and move to the new limits table
For( i = 1, i <= N Rows( dt ), i++,
dtLimit << add rows( 1 );
dtLimit:Variable[i] = dt:your column name that has the parameter name[i];
dtLimit:LSL[i] = dt:your column name that has the LSL value[i];
dtLimit:USL[i] = dt:your column name that has the USL value[i];
dtLimit:Target[i] = dt:your column name that has the Target value[i];
);
Do you want to populate Manage Spec Limits from spec table or do you want to set spec limits from spec table to measurement table? I'm not sure if you can fill Manage Spec Limits by using Load from Limits table by scripting, but there are most likely at least two ways to fill it otherwise:
- Add Spec Limits to measurement datatables columns as column properties from limits table by looping (and then open Manage Spec limits if needed)
- Manage Spec Limits platform is Table Box, so you could set values there most likely with some scripting
I would use option 1 as it is in my opinion simpler option.
This script should give some ideas how to do option 1:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
<BR />//create spec table
dt_spec = New Table("Limits",
Add Rows(2),
New Column("Variable", Character, "Nominal", Set Values({"height", "weight"})),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([50, 49])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([150, 151])),
New Column("Target", Numeric, "Continuous", Format("Best", 12), Set Values([100, 101]))
);
//Loop over spec table and look for matches in measurement table
meas_cols = dt << Get Column Names("String");
For Each Row(dt_spec,
If(Contains(meas_cols, :Variable),
Eval(
Eval Expr(
Column(dt, :Variable) << Add Column Properties(
Set Property("Spec Limits", {LSL(Expr(:LSL)), USL(Expr(:USL)), Target(Expr(:Target)), Show Limits(1)})
)
)
)
);
);
//open manage spec limits if needed
dt << Manage Spec Limits(Y(dt_spec[0, "Variable"]));
//Close(dt_spec, no save);