Erreur de syntaxe avec "fonction" ou "pour"Bonjour les JMPers,
Mon intention (JMP 14.3.0, W10) est d'écrire une fonction qui prend une table (dt) et une liste de numéros de lot uniques (uids) en entrée, et de construire une table en concaténant une copie de dt pour chaque uid et en remplissant dans le lot approprié. N° d'informations pour chacun de ces spots. Le but est de pouvoir effectuer plus tard des opérations de jointure sur la table. Je suis au début de la courbe d'apprentissage JSL et je rencontre l'erreur suivante :
"Si" inattendu. Il manque peut-être un "," ou ")". Essayer d'analyser les arguments de la fonction "Pour".
Je suppose que j'ai un problème de syntaxe avec ma fonction ou ma boucle For, mais la syntaxe me semble la même que celle de mon autre code qui semble fonctionner correctement. Tous les conseils sont les bienvenus !
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 );
);
Salutations,
Scott
Automatisation et scriptsRe : Erreur de syntaxe avec "fonction" ou "pour"Je ne vois pas de problème de syntaxe dans le JSL que vous avez publié dans JMP 17.
Une fois que vous aurez surmonté ce problème, quel qu'il soit, vous souhaiterez peut-être utiliser certaines variables locales dans la fonction. Quelque chose comme ça:
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 );
);
il existe d'autres moyens ; c'est ce qui fonctionne le mieux pour moi. Cela ne résoudra pas le problème auquel vous êtes actuellement confronté.