Un autre défi de syntaxe JMP ..........: 
J'essaie de formater correctement une instruction IF et je n'arrive pas à la faire fonctionner après une multitude d'itérations. Appréciez toute aide!
J'ai un tableau de données avec une colonne appelée "Description de l'étape de processus" ..... caractère du type de données
J'ai une autre colonne dans le tableau intitulée "Échecs de module" qui est de type de données numérique / continu; Je le crée avec succès en utilisant le segment de script ci-dessous
Je souhaite définir la valeur de la cellule dans la colonne "Échecs de module" en fonction de la valeur de la cellule "Description de l'étape de processus", comme suit:
Étape du processus Description ............... Défaillances du module
Contrôle qualité sortant .................... 0
Échec de l'unité ............................................ 1
J'ai les commandes suivantes dans mon script; pour autant que je puisse dire que tout fonctionne correctement, sauf pour l'instruction IF elle-même
dt << New Column ("Module Failures");
colonne ("Module Failures") << type de données (Numeric, Format ("Fixed Dec", 1,0));
colonne ("Panne de module") << Type de modélisation (continu);
If (Process Step Description == "Unit Fails", ("Module Failures" = 1), ("Module Failures" = 0));
Cela pourrait être quelque chose à voir avec les guillemets car je suis toujours confus par les règles de guillemet simple et double, mais j'ai essayé tant de permutations et rien ne semble fonctionner
Merci d'avance
ScriptingRe: Another JMP Syntax Challenge ..........: 
Y a-t-il des messages dans le journal?
Pouvez-vous joindre un échantillon de vos données?
Re: Another JMP Syntax Challenge ..........: 
Merci beaucoup!! Parmi les options que vous avez présentées, la mise en œuvre de la formule est la plus intuitive pour moi; J'ai pensé que peut-être le «si» devait être implémenté comme une formule, mais je n'en étais pas sûr; J'ai remplacé par le segment de script existant par celui ci-dessous. Malheureusement, il ne renvoie toujours qu'un "." dans la colonne de données des échecs de module, donc quelque chose ne va toujours pas. La nouvelle colonne est créée et le type de données est correct, mais le "si logique" ne semble pas être implémenté.
Merci pour tout autre conseil. Je pourrais également fournir plus d'informations si nécessaire.
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( If( :Proceess Step Description == "Unit fails", 1, 0 ) )
);Re: Another JMP Syntax Challenge ..........: 
Pourrait-il être aussi simple qu'une faute de frappe? Changer "Proce e ss "à" Process "
Re: Another JMP Syntax Challenge ..........: 
Oui, c'est aussi simple que ça! Fonctionne maintenant; Merci beaucoup!
Re: Another JMP Syntax Challenge ..........: 
Le problème que vous rencontrez est que vous n'étendez pas correctement les références de colonne. Lorsque vous référencez une colonne dans JSL, le nom de la colonne est précédé d'un ":" pour indiquer qu'il s'agit d'une référence de colonne. Bien que vous puissiez utiliser la fonction Column () en code ouvert pour référencer une colonne, elle est généralement utilisée lors du référencement d'une colonne via une variable de mémoire
myColumn = "Process Step Description";
column( myColumn ) << ……..
Vous trouverez ci-dessous 3 façons différentes d'accomplir ce dont vous avez besoin. Je vous suggère d'étudier le code ci-dessous et de lire le Guide de script pour bien comprendre l'étendue des colonnes et des variables de mémoire
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 10 ),
New Column( "Proceess Step Description",
Character,
"Nominal",
Set Values(
{"Unit Fails", "Outgoing Quality Check", "Unit Fails", "Unit Fails",
"Outgoing Quality Check", "Outgoing Quality Check", "Unit Fails",
"Outgoing Quality Check", "Unit Fails", "Outgoing Quality Check"}
)
)
);
dt << New Column( "Module Failures" );
:Module Failures <<
data type( Numeric, Format( "Fixed Dec", 1, 0 ) );
:Module Failures << Modeling Type( Continuous );
For Each Row(
If( :Proceess Step Description == "Unit Fails",
:Module Failures = 1,
:Module Failures = 0
)
);
// Or you can define your new column as a formula column
dt << New Column( "Module Failures 2",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( :Proceess Step Description == "Unit Fails",
1,
0
)
)
);
// or If the reference variable changes you may want to
// use the As Column()
zippy="Process Step Description";
dt << New Column( "Module Failures 3",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( as column(dt, zippy) == "Unit Fails",
1,
0
)
)
);
Re: Another JMP Syntax Challenge ..........: 
Soit dit en passant, vous n'avez pas besoin de la fonction If () pour votre objectif. La fonction Equal () (ou l'opérateur == dans ce cas) renvoie 1 si les deux arguments sont de valeur égale ou 0 s'ils ne le sont pas. Donc, ce script est juste un peu plus concis.
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( :Process Step Description == "Unit fails" )
);