Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Bonne journée à tous.
Je ne parviens pas à convertir un ancien code SAS 9.1, qui exécute un calcul itératif ("faire jusqu’à"), en JSL (JMP 13)
Vous trouverez ci-joint le code SAS d'origine tel qu'il apparaît dans la fenêtre JMP lorsque j'ouvre le fichier * .SAS. J'ai isolé la sous-section pertinente du script du script SAS d'origine et l'ai jointe au format * jsl en tant que "mg_in_olivine.jsl".
J'ai également inclus un jeu de données factice avec 29 enregistrements et un certain nombre de paramètres requis ont déjà été calculés (le reste des nombreuses colonnes a été masqué):
t_niK
PCr
dv
xmg_gt
xfe_gt
xca_gt
J'apprécierais grandement toute aide que je pourrais obtenir.
Merci beaucoup.
Rob Preston (Johannesburg).
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Pensez-y: je n'ai pas eu de problème avec la simple déclaration IF, c'était juste l'itération.
Merci encore pour votre aide, j'y arrive bien lentement.
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Merci beaucoup pour votre aide, Jim.
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?1. Je vous encourage à tenir compte de la suggestion de Mark concernant la lecture du Guide de script. Dans votre dernière demande, vous demandez simplement à quoi ressemble une déclaration "SI" dans JMP. Convertir la syntaxe d'une langue à l'autre consiste généralement à résoudre certains problèmes de langue mineurs.
2 Vous pouvez également utiliser l'index de script
Aide ==> Index de script
pour voir non seulement la documentation sur l'instruction "IF", mais aussi un exemple
Voici l'exemple de l'index de script pour la fonction IF. Il traduira directement à votre dernière demande.
Names Default To Here( 1 );
If( Random Uniform() < 0.5,
"heads",
"tails"
);
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Salut encore Jim.
À la fin du script, la valeur de sortie finale doit être xmg_ol, car ii est la valeur d'entrée pour la section de code suivante (comme suit):
/ ** applique maintenant la correction de Gaul et al pour cr2o3 - voir p. 225 ** /
/ ** Notez que dans Gaul et al, Delta-Fo est en pourcentage ** /
/ ** assurez-vous que cr2o3> 0 sinon nous obtenons le journal ERROR ** /
si cr2o3 <= 0 alors
cr_corr = 0;
autre
cr_corr = (-1,2901 * log10 (cr2o3) + 0,69) / 100,0;
xmg_ol_corr = xmg_ol + cr_corr;
xmg_ol = xmg_ol_corr;
fo_oliv = xmg_ol * 100.0;
Je suis un peu désemparé (pour le moins) ... mais j'apprécie votre aide.Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Salut Jim. Merci beaucoup d'avoir répondu.
Je vérifie juste ...
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Est-ce que c'est ce que vous cherchez?
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "xmg_ol_diff" );
For( i = 1, i <= N Rows( dt ), i++,
counter = 0;
While( Abs( dt:xmg_ol_diff[i] ) > 0.00001 | Is Missing( dt:xmg_ol_diff[i] ) == 1,
counter++;
If( counter > 100, Break() );
logKd = (902 + dt:dv[i] + (dt:xmg_ol_est[i] - dt:xfe_ol_est[i]) * (498 + 1.51 * (dt:PCr[i] - 30)) - 98 * (dt:xmg_gt[i] - dt:xfe_gt[i])
+1347 * dt:xca_gt[i]) / dt:t_niK[i] - 0.357;
Kd = Exp( LogKd );
xmgfe_ol = Kd * (dt:xmg_gt[i] / dt:xfe_gt[i]);
xmg_ol = xmgfe_ol / (1 + xmgfe_ol);
dt:xmg_ol_diff[i] = xmg_ol - dt:xmg_ol_est[i];
dt:xmg_ol_est[i] = xmg_ol; /** reset xmg_ol_est for next iteration **/
dt:xfe_ol_est[i] = 1.0 - xmg_ol;
);
);

Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Merci Mark.
Re: Aide à la conversion d'un script d'itération SAS (9.1) en JSL ...?Regarde le Tandis que() fonctionner pour ce genre d'itération.
- Aide> Livres> Guide de script