Un'altra sfida di sintassi JMP ..........: 
Sto cercando di formattare correttamente un'istruzione IF e non riesco a farlo funzionare dopo mille iterazioni. Apprezzo qualsiasi aiuto!
Ho una tabella di dati con una colonna chiamata "Descrizione del passaggio del processo" ..... carattere di tipo di dati
Ho un'altra colonna nella tabella chiamata "Errori del modulo" che è il tipo di dati numerico / continuo; Lo creo con successo usando il segmento di script qui sotto
Voglio impostare il valore della cella nella colonna "Errori del modulo" in base al valore nella cella "Descrizione della fase del processo", come segue:
Descrizione della fase del processo .................. Errori del modulo
Controllo qualità in uscita .................... 0
Errore dell'unità ........................................... 1
Ho i seguenti comandi nel mio script; per quanto ne so, tutto funziona correttamente, tranne per l'istruzione IF stessa
dt << Nuova colonna ("Errori del modulo");
colonna ("Module Failures") << tipo di dati (Numerico, Formato ("Fixed Dec", 1,0));
colonna ("Errori del modulo") << Tipo di modellazione (continua);
If (Process Step Description == "Unit Fails", ("Module Failures" = 1), ("Module Failures" = 0));
Potrebbe essere qualcosa a che fare con le virgolette poiché mi confondo sempre con le regole delle virgolette singole e doppie, ma ho provato così tante permutazioni e nulla sembra funzionare
Grazie in anticipo
ScriptingRi: Un'altra sfida di sintassi JMP ..........: 
Ci sono dei messaggi nel registro?
Puoi allegare un campione dei tuoi dati?
Ri: Un'altra sfida di sintassi JMP ..........: 
Grazie mille!! Delle opzioni che hai presentato, l'implementazione della formula è la più intuitiva per me; Pensavo che forse il "se" dovesse essere implementato come una formula, ma non ero sicuro; Ho sostituito dal segmento di script esistente con quello qui sotto. Sfortunatamente, restituisce solo un "." nella colonna dati Errori del modulo, quindi qualcosa non va ancora bene. La nuova colonna viene creata e il tipo di dati è corretto, ma la "logica if" non sembra essere implementata.
Grazie per qualsiasi ulteriore consiglio. Potrei fornire anche maggiori informazioni se necessario.
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 ) )
);Ri: Un'altra sfida di sintassi JMP ..........: 
Potrebbe essere semplice come un refuso? Modifica "Procedi e da "a" Elaborazione "
Ri: Un'altra sfida di sintassi JMP ..........: 
Sì, così semplice! Funziona ora; grazie mille!
Ri: Un'altra sfida di sintassi JMP ..........: 
Il problema che stai riscontrando è che non stai analizzando correttamente i riferimenti di colonna. Quando si fa riferimento a una colonna in JSL, il nome della colonna è seguito da un ":" per indicare che si tratta di un riferimento a colonna. Sebbene sia possibile utilizzare la funzione Column () nel codice aperto per fare riferimento a una colonna, in genere viene utilizzata quando si fa riferimento a una colonna tramite una variabile di memoria
myColumn = "Process Step Description";
column( myColumn ) << ……..
Di seguito sono riportati 3 diversi modi per realizzare ciò di cui hai bisogno. Ti suggerisco di studiare il codice seguente e di leggere la Guida agli script per ottenere una comprensione completa dell'ambito delle colonne e delle variabili di memoria
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
)
)
);
Ri: Un'altra sfida di sintassi JMP ..........: 
A proposito, non hai bisogno della funzione If () per il tuo scopo. La funzione Equal () (o l'operatore == in questo caso) restituisce 1 se i due argomenti hanno lo stesso valore o 0 se non lo sono. Quindi questo script è solo un po 'più conciso.
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( :Process Step Description == "Unit fails" )
);