Bonjour, j'écrivais du JSL pour traiter un fichier source et j'espérais pouvoir le réutiliser/l'adapter. Pour cela, j'ai créé quelques variables très simples que je prévoyais de modifier occasionnellement.
Voici un court extrait de JSL qui crée des variables et les utilise dans une formule de colonne. Ce ne sont pas les noms d'origine. J'ai modifié ces noms pour plus de simplicité :
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:
Je souhaite simplement que le script applique cette formule à la nouvelle colonne, c'est-à-dire qu'il évalue la partie variable du script. Mais je ne sais pas comment faire.
Je préférerais NE PAS utiliser de variables de table.
Merci d'avoir lu !
Vous devrez les évaluer. Insérez une expression dans une autre en utilisant Eval Insert, Eval Expr, Parse et Substitute.
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)
));
));