pourquoi ::labelslist ?Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
labelsList = {"F" = "A", "M" = "B"}; //here namespace
::labelsList = {"F" = "①", "M" = "②"}; // global variable
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ; // local variable
dt:sex << Set Property( "Value Labels", labelsList ) // which variable will JMP pick?
);
f
JMP 19.1 : ①,②
JMP 18.2.2 et JMP 20EA : X,Y
solutions de contournement :
- utiliser dt:sex <
- utiliser Eval (Eval Expr( ... Expr (liste d'étiquettes) ))
Automatisation et scriptage
Re: pourquoi ::labelslist ?Le message d'erreur initial était beaucoup plus difficile à comprendre :

delete symbols (::labelsList);
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
f = function ({},
{default local},
labelsList = {"F" = "X", "M" = "Y"} ;
dt:sex << Set Property( "Value Labels", labelsList )
);
f
Re: pourquoi ::labelslist ?« Inconnu » signifie que JMP a rencontré une erreur inattendue sans explication. Signalez-la et expliquez le comportement attendu ; un développeur pourra ainsi la corriger, soit en proposant une solution acceptable, soit en améliorant le message d'erreur.
Re: pourquoi ::labelslist ?Il est possible que JMP19 effectue l'évaluation dans la table de données, ce qui explique l'utilisation d'une valeur globale. On peut se demander si cette évaluation est vraiment nécessaire.
La colonne stocke la propriété de colonne avec les valeurs fournies sans évaluation ni validation des arguments. Pour ajouter des propriétés de colonne contenant des variables à l'aide de code JSL, le script doit convertir les variables en leurs valeurs réelles. Guide de script > Tables de données > Utilisation des colonnes > Définir ou obtenir les propriétés de colonne.
Vous pouvez également faire planter JMP avec JMP19 si vous enveloppez votre variable avec {} (JMP18 ne plantera pas et vous obtiendrez une erreur de tentative d'affectation ).