Hallo, ich habe JSL geschrieben, um eine Quelldatei zu verarbeiten und wollte die Quelldatei wiederverwenden/anpassen. Zu diesem Zweck habe ich einige sehr einfache Variablen erstellt, die ich nur gelegentlich ändern wollte.
Hier ist ein kurzer JSL-Abschnitt, der Variablen erstellt und in einer Spaltenformel verwendet. Dies sind nicht die ursprünglichen Namen. Ich habe sie der Einfachheit halber geändert:
JMP v18.2.0
dt = current data table();
VariableA = 42; // A value I intend to change occasionally depending on the details of the source data
VariableB = 1; // Another value I'll change depending on the source data.
dt << New Column( "A_New_Formula_Coumn",
numeric,
ordinal,
Formula( :An_Existing_Data_Column - VariableA * VariableB )
);
dt << New Column( "A_Simpler_New_Formula_Coumn",
numeric,
ordinal,
Formula( :An_Existing_Data_Column - 42 )
); I've run this in an external script and from a script in the table. Both seem to have no trouble when the script is first run. The problem is that "VariableA" and "VariableB" are used in the column formula, almost as if they are local variables. But they aren't defined anywhere. So when I close JMP down completely and reopen it - only then do I get a warning that there is something wrong with the formula:
Ich möchte eigentlich nur, dass das Skript DIESE Formel auf die neue Spalte anwendet, also den Skriptvariablenanteil auswertet. Aber ich weiß nicht, wie das geht.
Ich würde es vorziehen, KEINE Tabellenvariablen zu verwenden.
Danke fürs Lesen!
Sie müssen sie auswerten. Fügen Sie einen Ausdruck in einen anderen ein, indem Sie Eval Insert, Eval Expr, Parse und Substitute verwenden.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
myvar = 100;
Eval(EvalExpr(
dt << new column("A", Numeric, Continuous, Formula(
:height * Expr(myvar)
));
));