¿Ayuda con la conversión de un script de iteración SAS (9.1) a JSL ...?Buen día a todos.
Tengo problemas para intentar convertir un código SAS 9.1 antiguo, que ejecuta un cálculo iterativo ("hacer hasta"), en JSL (estoy ejecutando JMP 13).
Se adjunta el código SAS original tal como aparece en la ventana de JMP cuando abro el archivo * .SAS. He aislado la subsección pertinente del script del script SAS original y lo he adjuntado en formato * jsl como "mg_in_olivine.jsl".
También he incluido un conjunto de datos ficticios con 29 registros y ya se han calculado algunos de los parámetros necesarios (el resto de las numerosas columnas se han ocultado):
t_niK
PCr
dv
xmg_gt
xfe_gt
xca_gt
Apreciaría mucho cualquier ayuda que pueda obtener.
Muchas gracias.
Rob Preston (Johannesburgo).
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Creo que lo tengo, no tuve ningún problema con la simple declaración IF, fue solo la iteración.
Gracias de nuevo por su ayuda, voy llegando poco a poco.
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Muchas gracias por tu ayuda Jim.
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?1. Los aliento a que presten atención a la sugerencia de Mark sobre la lectura de la Guía de scripting. Lo que está solicitando en su última solicitud es simplemente saber cómo se ve una declaración "SI" en JMP. La conversión de la sintaxis de un idioma a otro suele ser simplemente resolver algunos problemas menores del idioma.
2. También puede utilizar el índice de secuencias de comandos
Ayuda ==> Índice de Scripting
para ver no solo la documentación en la declaración "SI", sino también un ejemplo
Aquí está el ejemplo del índice de secuencias de comandos para la función IF. Se traducirá directamente a su última solicitud.
Names Default To Here( 1 );
If( Random Uniform() < 0.5,
"heads",
"tails"
);
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Hola de nuevo Jim.
El final de la secuencia de comandos, el valor de salida final debe ser xmg_ol, ya que ii es el valor de entrada para la siguiente sección de código (de la siguiente manera):
/ ** ahora aplique la corrección de Gaul et al para cr2o3 - vea p. 225 ** /
/ ** nota que en Galia et al Delta-Fo está en porcentaje ** /
/ ** asegúrese de que cr2o3> 0 de lo contrario obtendremos ERROR ** /
si cr2o3 <= 0 entonces
cr_corr = 0;
más
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;
Estoy un poco desorientado (por decir lo menos) ... pero aprecio su ayuda.Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Hola Jim. Muchas gracias por responder.
Solo revisando...
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?¿Podría ser esto lo que estás buscando?
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: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Gracias Mark.
Re: ¿Ayuda para convertir un script de iteración SAS (9.1) a JSL ...?Mira el Mientras() Función para este tipo de iteración.
- Ayuda> Libros> Guia de Scripting