Ich habe gesucht, aber kein klares Beispiel gefunden. Ich habe ein Skript, das ein assoziatives Array zwischen Spaltenpaaren in einer Tabelle erstellt. Dieses Array möchte ich nun nutzen, um eine Formel zu erstellen, die sowohl auf den Wert als auch auf den Schlüssel verweist. Wie geht das?
For( i = 1, i <= N Items( SpecCols ), i++,
key = Column( dt, SpecCols[i] );
value = Column( dt, Char(SpecCols[i])||" Pass/Fail");
assocArray[key] = value;
dt << New Column( (Column( dt, SpecCols[i] ) << get name) || " Best",
Set Property( "Notes", Notes ),
Set Property( "Limits", Limits ),
Formula(If(
:RETEST == Col Minimum(
If(
Col Mean( value, :LOT, :WAFER, :RETEST ) ==
Eval( Parse( value)),
:RETEST
),
:LOT,
:WAFER,
:SiteY,
:SiteX
),
Eval( Parse(key))
))
);
);
Ausdrucksauswertung und in solchen Fällen verwende ich gerne Eval(Substitute())
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
aa = Associative Array();
aa["NPN1"] = "NPN2";
aa["PNP1"] = "PNP2";
aa["INM1"] = "INM2";
new_cols = {};
For Each({{key, val}}, aa,
new_col = Eval(Substitute(
Expr(dt << New Column(key ||" "|| val, Numeric, Continuous, Formula(
_term1_ + _term2_
))),
Expr(_term1_), Name Expr(AsColumn(dt, key)),
Expr(_term2_), Name Expr(AsColumn(dt, val))
));
Insert Into(new_cols, (new_col << get name))
);
dt << Move Selected Columns(new_cols, To First);