Hi. I would like to have the ability to set the USL equal to the LSL. I'm currently using JMP Pro 17.2.0. If I try to set the limits equal to each other in the Column Properties window, I get an error "USL must be greater than LSL and the target". Similar error if I try it using the Manage Limits platform.
Please see this thread for original discussion:
https://community.jmp.com/t5/Discussions/Setting-Spec-Limits-with-USL-LSL/m-p/717822#M89952
What inspired this wish list request?
If I try to set limits equal to each other in the Column Properties window or Manage Limits platform, I get an error. I can programmatically set the limits to be equal using the << Set Property message, but I cannot read them back using Manage Limits. This script helps to illustrate:
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:Height << Set Property("Spec Limits", USL(1), LSL(1)); //I can set USL=LSL in a script
//I can confirm they've been set by manually opening the Column Properties window.
//At some later date I need to reopen the table and get the limits to evaluate yield:
msl = dt << Manage Limits(Process Variables(:Height)); //The limits are now missing.
dtlim = msl << Save to Tall Limits Table;
Sometimes I also see a small window popup saying something to the effect of "Inconsistent Limits" with all the offending columns listed, but I haven't figured out yet how to reproduce this.
What is the improvement you would like to see?
I would like the ability to set limits equal to each other in the Column Properties and Manage Limits windows. I want to continue preventing USL < LSL though.
Why is this idea important?
Our data contains 1000s of columns. Some (but not all) columns represent codes (integers), where only one value means "ok" and all others indicate a different type of failure. For example, a "1" is passing, a "0" = did not test, and values 2 or greater indicate some other error. We wish to compute yields and other analyses on these data using scripts. But we're finding that these columns where USL=LSL are not getting checked because when the script reads back the limits using Manage Limits, they're missing.
Things we've considered:
1. Set the limits to (x-0.1, x+0.1) instead of (x,x). Cannot do bc that would require modifying hundreds of limits multiplied by several manufacturing steps multiplied by several programs, and would affect many other orgs in our company.
2. Set just the LSL for these columns, leaving the USL missing. Then, in our yield analysis script, add a clause that checks the column name against a list of columns whose values are "coded", and if matching, just check if the value matches the LSL instead of checking if the value lies between LSL-USL. Problematic bc it would require us to hardcode which columns need to be checked one way vs another within the script, constantly updating scripts as the list of names changes throughout development. Plus, there would have to be separate lists maintained for each manufacturing step and each program, as they don't share the same tests. Also problematic bc others are using different analysis scripts on the data, that may not be aware if we have deleted the USL and kept only the LSL.
3. Set the limits programmatically as in the script above. Then when we wish to read them back from the data table at a later date, use the << Get Property message instead of the Manage Limits. I'm still working on a script to try this, but I already have misgivings about this tact. First, it would need a For loop to read and parse each column's specs, which might take awhile for 10k+ columns. Second, I'm having difficulty parsing out the limits from the << Get Property("Spec Limits") message. (1) It just returns USL(1) (no quotes) and it's unclear to me how to extract the number from this. (2) it does not seem to return the LSL, even though I confirmed in the Column Properties window that it was also set to 1. The script below illustrates:
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:Height << Set Property("Spec Limits", USL(1), LSL(1)); //confirm limits set in col props window.
specs = dt:Height << Get Property( "Spec Limits" ); //returns USL(1) only
lsl = specs["LSL"]; //returns .
usl = specs["USL"]; //returns .
Apologies in advance if there are other obvious solutions I haven't thought of (or forgot to mention). Also apologies if I've glossed over some crucial detail. I've been working on this for awhile now, so I'm pretty deep in the weeds.
Thanks for considering.