Puede que no haya entendido completamente el requisito. Por lo que veo, todas las columnas son caracteres y no hay información adicional que identifique una columna de fecha y hora, excepto su nombre. Si ese nombre es siempre el mismo, no necesita recorrer las columnas, simplemente puede nombrarlo en su secuencia de comandos. La alternativa es escribir un pequeño cuadro de diálogo que permita al usuario elegir la columna que se transformará. Además, no entiendo exactamente cuál es el objetivo: ¿se mostrará la fecha en el mismo formato en todas partes del mundo, o se mostrará de acuerdo con la configuración local? Por el momento, supongo que la columna respectiva siempre tiene el mismo nombre y que el formato de fecha se mostrará en formato local. Luego, el script adjunto puede hacer al menos partes de lo que hay que hacer.
Tengo una tabla que me gustaría formatear adecuadamente (adjunta también)

La principal complejidad proviene de los siguientes tres problemas:
- Los usuarios de este script tendrán diferentes formatos de fecha, ya que tendrán diferentes máquinas de Windows en diferentes idiomas. Por ejemplo, la entrada de la base de datos para la columna fecha y hora está (siempre) en formato dd-mon-aaaa hh: mm: ss que no existe en español o alemán.

2) Los usuarios también tendrán diferentes formatos de números. Todas las columnas darán como resultado valores numéricos vacíos, ya que se espera una coma para decimales (3.14 no se reconocerá como 3,14).
3) Después de la primera columna, que siempre es una fecha y hora, las columnas pueden contener valores numéricos o categóricos. En el ejemplo adjunto, la columna 3 contiene comentarios, por lo que no es necesario cambiar el formato.
Posibles soluciones:
Problema n. ° 1 (fecha y hora utilizando la configuración regional)
Quizás lo más fácil es verificar que JMP langague esté en inglés, activar / desactivar la opción de ignorar la configuración regional:
dt = Current Data Table();
<BR />// TODO assert that JMP language is English
Preferences( Use JMP Locale Settings( 1 ) );
dt:datetime<< Set Data Type( Numeric ) << Modeling Type( continuous ) << Format( "Locale Date Time h:m:s" );
Preferences( Use JMP Locale Settings( 0 ) );
dt:datetime<< Format( "Locale Date Time h:m:s" );
Problema # 2
Para cambiar el formato de inglés a local, podemos hacer algo similar. Más información en este post
https://community.jmp.com/t5/Martin-Demel-s-Blog/JMP-and-Excel-A-Never-ending-story-Part-2/ba-p/35099
dt = Current Data Table();<BR />
// TODO assert that JMP language is English
Preferences( Use JMP Locale Settings( 1 ) );
dt:column1 << Set Data Type( Numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 0 ) );
dt:column1 << Set Data Type( Numeric ) << Modeling Type( continuous );
Problema # 3
¿Cómo codificar usar la mejor conjetura de JMP para que las columnas solo pasen de caracteres a números?
Siguiendo esta publicación: https://community.jmp.com/t5/Discussions/Convert-data-to-numeric-Only-If-Appropriate/td-p/106692
dt = CurrentDataTable();
// TODO Assert that JMP is in English
Preferences( Use JMP Locale Settings( 1 ) );
// Convert to numeric only if nedeed
For( i = 2, i <= N Cols( dt ), i++,
isNumeric = "NO";
For( theRow = 1, theRow <= 10, theRow++,
If( Column( i )[theRow] != "" & Is Missing( Num( Column( i )[theRow] ) ) == 1,
isNumeric = "NO";
Break();
,
isNumeric = "YES"
)
);
If( isNumeric == "YES",
Column( i ) << set data type( numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 0 ) );
Column( i ) << set data type( numeric ) << Modeling Type( continuous );
Preferences( Use JMP Locale Settings( 1 ) );
);
);
Preferences( Use JMP Locale Settings( 0 ) );
Me falta la afirmación que asegura que JMP esté en inglés y si hay una forma más eficiente de hacerlo (podría tener 100,000 filas y cientos de columnas).
Hola,
NO se puede acceder a todas las preferencias en la pestaña "Windows" a través de JSL. Por lo tanto, solo son posibles soluciones alternativas. Una propuesta, prueba si el idioma actual es el inglés, si no, explica al usuario cómo cambiarlo.
If( (Num( "2.1" ) == 2.1),
"English",
lw = New Window( "Warning: inappropriate formatting options",
V List Box(
Spacer Box( Size( 600, 20 ) ),
H List Box(
Spacer Box( Size( 20, 20 ) ),
V List Box(
Text Box( "Warning\!n", <<SET wrap=""> Preferences --> Windows-specific
Set \!"Display Language\!" to \!"English\!" AND
check the box next to \!"Use JMP language rather than System locale settings,...\!n
Then re-start this program\!n",
<<SET wrap=""></SET></SET>
Atentamente
Bernd