¿Cómo puedo forzar que mi script se ejecute secuencialmente?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Mi script JSL actual funciona perfectamente cuando lo reviso, sin embargo, cuando lo ejecuto puede generar algunos errores.Puedo manejar esto de alguna manera poniendo la función wait() pero no siempre funciona.¿Existe una función simple que pueda invocar en la parte superior de mi script para que se ejecute secuencialmente?
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?Bueno, aparentemente no es tan color de rosa como esperaba. Parte del código no se ejecuta correctamente en ese comando onclose().Un 'dt << sort(...)' no funcionó correctamente en el onclose() interno, pero funcionó bien si comenté el onclose() interno.
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?Gracias por la respuesta. Intenté configurar funciones y todavía no esperó la entrada del usuario.Para las preguntas sobre recodificación y ordenación de valores, estoy familiarizado con ellas, pero debería haber puesto más énfasis en ejecutarlas (o cualquier función nativa en realidad) como modal que esperaba que pudiera ejecutarse de tal manera que completara la función antes de pasar a la siguiente línea de código.
Entiendo lo que estás diciendo sobre el uso de jsl para recodificar esto directamente, pero esperaba una combinación de jsl + interfaz de usuario nativa para ejecutar un montón de tareas comunes que son siempre las mismas (las secuencias de comandos codificadas están bien) con otras tareas. cuyas entradas/salidas cambian y, por lo tanto, se prestan a la interfaz de usuario nativa, como la ordenación y recodificación de valores. encontré La publicación de Craige de marzo donde publicó algo que puede hacer esto, pero es un poco restrictivo debido al nombre de la columna -> nombre de la ventana de función. En mi caso, tendré los nombres de las columnas en cadenas en la parte superior, así que está bien para mí. Aquí está modificado para 2 niveles de interactividad. Probado según el estándar JMP13.
dt = Open( "$sample_data/big class.jmp" );
dt << Go To( :sex ) << Recode; // First interactivity, as a test, change "F" to "Female"
Window( "Recode" ) << onclose(
dt << Go To( :sex );
main menu("column info"); // second interactivity, as a test, change value ordering properties.
Window( "sex" ) << onclose(
dt:Sex[ dt << Get Rows Where( :Sex == "M" )] = "Male";
);
);Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?Cuando codifico un script bastante complejo, normalmente uso la siguiente estructura para mi código:
Main = Expr(
returna = A(passing variables);
returnb = B(passing variables);
);
A = Function({Passed variables},
processing code
);
B = Function({Passed variables},
processing code
);
// Enter the script by executing the Main section
Main;
Con respecto a sus preguntas sobre los elementos de Recode y Col Info, las respuestas son No y Sí. No existe una función directa para ejecutar el elemento Recode desde JMP interactivo. Esto se debe a que es más fácil replicar la funcionalidad en JSL abierto.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt:Sex[ dt << Get Rows Where( :Sex == "F" )] = "Female";
dt:Sex[ dt << Get Rows Where( :Sex == "M" )] = "Male";
// or
For Each Row(
If( :Sex == "F", :Sex = "Female",
:Sex = "Male"
);
En cuanto a los elementos del cuadro de diálogo Información de columna, el formato, las propiedades de las columnas, como el orden de los valores, los límites de especificaciones, etc., están disponibles en JSL para cambiarlos a lo que necesitan cambiarse.
Todo esto está cubierto en la Guía de secuencias de comandos.
Ayuda==>Libros==>Guía de secuencias de comandos
y/o en el índice de secuencias de comandos
Ayuda==>Índice de secuencias de comandos
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?
@txnelson escribió:
El método que uso es dividir el script en componentes funcionales y luego hacer que la sección de control del script avance a través del script y llame a los componentes cuando los necesite.Normalmente coloco el código en secciones EXPR(()).El código colocado en EXPR() no se ejecutará hasta que lo llame la sección de control.
Cuando dice que llama a los componentes cuando los necesita, ¿quiere decir que llama a las expresiones dentro de la sección de control y las ejecuta directamente, o tiene que llamarlos manual e individualmente para que finalice la función anterior? Si es lo primero, ¿cómo está estructurada la sección de control para que realmente espere?
¿Hay alguna manera de llamar a funciones nativas como recodificar e información de columnas (para cambiar el orden de los valores) como ventanas/funciones modales?
Gracias,
Miguel
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?Es una buena práctica pasar a la tabla de datos un mensaje sobre qué plataforma ejecutar, en lugar de tener que realizar un seguimiento de qué tabla es la tabla activa actual.Entonces en lugar de:
dt = Tabla de datos( "tabla de datos xxx" );
dt << Borrar selección;
dt<
Bivariado(X(.......
dt = Tabla de datos( "tabla de datos xxx" );
dt << Bivariado(X(.........
asegura que la plataforma bivariada se ejecutará en la tabla de datos a la que hace referencia "dt"
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?Tuve varios errores al ejecutar scripts automáticamente, pero cuando los probé manualmente todo estuvo bien.
Para ese tipo de errores, normalmente me pasa cuando intento hacer un gráfico basado en una tabla incorrecta.
ahora agrego esas líneas antes de hacer gráficos/gráficos en guiones
dt = Tabla de datos( "tabla de datos xxx" );
dt << Borrar selección;
dt<Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?
Lamento saber que estás teniendo problemas aquí.
Nuestro objetivo es que usted nunca necesite un Esperar() para que su script se ejecute. Sabemos que hay ocasiones en las que los diversos elementos de la interfaz de usuario (ventanas, plataformas, etc.) necesitan un momento para crear instancias completas antes de que puedan responder adecuadamente al resto de su JSL. Sin embargo, queremos abordar esas situaciones internamente para que no tenga que preocuparse por ello en su JSL.
Entonces, cuando te encuentras con situaciones que se resuelven agregando un Esperar() en su código, envíelos a Apoyo técnico , para que podamos rastrearlos y resolverlos.
¡Gracias!
-Jeff
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?pongo esperar(0); declaraciones entre secciones de código que quiero ejecutar secuencialmente.
Re: ¿Cómo puedo forzar que mi script se ejecute secuencialmente?El método que uso es dividir el script en componentes funcionales y luego hacer que la sección de control del script avance a través del script y llame a los componentes cuando los necesite.Normalmente coloco el código en secciones EXPR(()).El código colocado en EXPR() no se ejecutará hasta que lo llame la sección de control.