Errore di sintassi con "funzione" o "per"Ciao JMPers,
La mia intenzione (JMP 14.3.0, W10) è quella di scrivere una funzione che prenda una tabella (dt) e un elenco di numeri di lotto (uid) univoci come input e costruisca una tabella concatenando una copia di dt per ciascun uid e riempiendo nel Lotto appropriato. N. informazioni per ciascuno di questi punti. Lo scopo è che in seguito posso eseguire operazioni di unione sul tavolo. Sono nella parte iniziale della curva di apprendimento JSL e riscontro l'errore seguente:
"Se" inaspettato. Forse manca "," o ")". Cercando di analizzare gli argomenti della funzione "For".
Presumo di avere un problema di sintassi con la mia funzione o con il mio ciclo For, ma la sintassi mi sembra la stessa di altro codice che ho e che sembra funzionare correttamente. Qualsiasi/tutti i consigli sono ben accetti!
pop_limits_with_uids = Function( {dt, uids},
For( i = 1, i < N Items( uids ), i++,
Print( "here" );
If( i == 1,
pop_dt = dt << Subset( Output Table( "dt_copy" ), All rows, Selected columns only( 0 ) );
dt_copy = pop_dt;
Print( i );
,
dt_copy = dt << Subset( Output Table( "dt_copy" ), All rows, Selected columns only( 0 ) )
);
Column( dt_copy, "Lot No." )[{1, 2, 3}] = uids[i]; //dt_copy should have 3 rows. Set all 3 Lot No. to latest uid
pop_dt << concatenate( dt_copy, append to first table( 1 ) ); //add to the primary list
);
Close( dt_copy );
);
Saluti,
Scott
Automazione e scriptingRi: Errore di sintassi con "funzione" o "per"Non vedo un problema di sintassi nel JSL che hai pubblicato in JMP 17.
Una volta superato questo problema, qualunque esso sia, potresti voler utilizzare alcune variabili locali nella funzione. Qualcosa come questo:
pop_limits_with_uids = Function( {dt, uids},
{ i, pop_dt, dt_copy }, // these are local to the function
For( i = 1, i < N Items( uids ), i++,
Print( "here" );
If( i == 1,
pop_dt = dt << Subset( Output Table( "dt_copy" ), All rows, Selected columns only( 0 ) );
dt_copy = pop_dt;
Print( i );
,
dt_copy = dt << Subset( Output Table( "dt_copy" ), All rows, Selected columns only( 0 ) )
);
Column( dt_copy, "Lot No." )[{1, 2, 3}] = uids[i]; //dt_copy should have 3 rows. Set all 3 Lot No. to latest uid
pop_dt << concatenate( dt_copy, append to first table( 1 ) ); //add to the primary list
);
Close( dt_copy );
);
ci sono altri modi; questo è ciò che funziona meglio per me. Non risolverà il problema che stai affrontando attualmente.