cómo cambiar la variable en múltiples JSL a la vezHola,
Uso include() para ejecutar varios JSL en cada JSL. Tengo la variable "todaydate". Sin embargo, ahora quiero ejecutar todos los JSL usando include, pero cambiar la fecha de hoy en todos los JSL al 03 de junio de 2023. Como puedo hacer eso ?
fechahoy = Fecha de formato(Hoy(), "ddmonyyyy");
Yo estaba pensando:
fechahoy = "03jun2023"; // esto reemplazará en todos los 10 jsl
incluir (jsl1);
incluir (jsl2);
.
.
.
incluir (jsl10);
Automatización y secuencias de comandosRe: cómo cambiar la variable en varios JSL a la vezDeberá colocar la "fecha de hoy" en un NameSpace separado.Puede ser un espacio de nombres que cree o puede usar el espacio de nombres global definido por un ":".A continuación hay 2 guiones.Ejecute el primer script y, a continuación, ejecute el segundo, y verá que la variable global de espacio de nombres "a", a la que se hace referencia como "::a", se conoce en ambos scripts JSL.
Guión 1
Names Default To Here( 1 );
a = 5;
::a = 7;
Guión 2
Names Default To Here( 1 );
Try( Show( a ), Show( "a is not known" ) );
Show( ::a );
Re: cómo cambiar la variable en varios JSL a la vezLo siento, soy un poco lento aquí.
¿Quiere decir que tendré que cambiar la fecha de hoy de mi 10 jsl a :: fecha de hoy? ¿Significa que toda la fecha de hoy ocurre en diferentes líneas que se usan en todos los 10jsl tienen que cambiar a :: fecha de hoy?
Re: cómo cambiar la variable en varios JSL a la vezLa respuesta corta es sí.Le sugiero que se tome el tiempo de leer la documentación sobre NameSpaces.
La única otra forma que podría usarse sería ejecutar siempre todos sus scripts en el espacio de nombres global.El problema con eso es que todas las variables estarán disponibles para todos los scripts, si una variable llamada "X" se cambia en un script, todos los scripts que tienen una variable llamada "X" también se cambiarán.
Lo que normalmente hago es definir un espacio de nombres que declaro en todos los scripts.Y por lo tanto, puedo controlar toda la información que quiero que esté disponible para todos mis scripts,
names default to here(1);
if(isNamespace(nsCommon)==0,
nsCommon = New Namespace("CommonSpace")
);
// Set today's date in the nsCommon namespace
nsCommon:todaydate = Format date( Today(), "ddmonyyyy" );
// set the local-to-this-script todaydate variable to the
// value of the nsCommon value of todaydate.
todaydate = nsCommon:todaydate;Re: cómo cambiar la variable en varios JSL a la vezHay muchas maneras diferentes de cómo puede manejar esto, pero depende mucho de sus scripts.
¿Cómo se define la fecha de hoy en sus otros scripts? ¿Qué tipo de scripts son jsl1, jsl2...? ¿Podría crear funciones/expresiones y llamarlas en el archivo jsl principal?
Cuando usa include, debería funcionar también en los otros scripts a menos que los sobrescriba, ya que las inclusiones sobrescribirán las variables como dijo Jim, pero puede "protegerlas" usando << New Context y << Names Default To Here in Include(). Esto, por supuesto, le impedirá usar fácilmente la misma variable en esos scripts y usar espacios de nombres es una solución bastante fácil para solucionar esto.
Names Default To Here(1);
Clear Log();
todaydate = Format Date(Today(), "ddmonyyyy");
jsl1_str = "\[Names Default To Here(1);
Show(todaydate);
]\";
jsl2_str = "\[Names Default To Here(1);
todaydate = 1;
Show(todaydate);
]\";
Save Text File("$TEMP/661243_jsl1.jsl", jsl1_str);
Save Text File("$TEMP/661243_jsl2.jsl", jsl2_str);
Include("$TEMP/661243_jsl1.jsl");
Include("$TEMP/661243_jsl1.jsl", << New Context);
Include("$TEMP/661243_jsl1.jsl", << New Context, << Names Default To Here);
Include("$TEMP/661243_jsl2.jsl", << New Context);
show(todaydate); // not overwritten
Include("$TEMP/661243_jsl2.jsl", << New Context, << Names Default To Here);
show(todaydate); // not overwritten
Include("$TEMP/661243_jsl2.jsl");
show(todaydate); // overwritten
Try(Delete File("$TEMP/661243_jsl1.jsl"));
Try(Delete File("$TEMP/661243_jsl2.jsl"));
Scripting Guide tiene mucha información sobre JMP Scripting, a continuación hay algunos enlaces relacionados con este tema
Guía de secuencias de comandos > Métodos de programación > Conceptos de programación avanzada > Incluir una secuencia de comandos
Guía de secuencias de comandos > Métodos de programación > Alcance avanzado y espacios de nombres
Guía de secuencias de comandos > Métodos de programación > Conceptos de programación avanzada > Funciones avanzadas
Guía de secuencias de comandos > Bloques de creación de JSL > Reglas para la resolución de nombres
También recuerde ver más temas presionando la flecha en la página de ayuda

o usando el menú del lado izquierdo

Re: cómo cambiar la variable en varios JSL a la vezMuchas gracias por la informacion. Estos son nuevos para mí y definitivamente me ayudarán en mi trabajo.