Potrei non aver compreso appieno il requisito. Da quello che vedo, tutte le colonne sono di carattere e non ci sono informazioni aggiuntive che possano identificare una colonna di data e ora, tranne il suo nome. Se quel nome è sempre lo stesso, non è necessario scorrere le colonne, puoi semplicemente nominarlo nel tuo script. L'alternativa è scrivere una piccola finestra di dialogo che consenta all'utente di selezionare la colonna che deve essere trasformata. Inoltre non capisco esattamente quale sia l'obiettivo: la data deve essere visualizzata nello stesso formato in tutto il mondo o deve essere visualizzata in base alle impostazioni locali? Per il momento, presumo che la rispettiva colonna abbia sempre lo stesso nome e che il formato della data sia visualizzato in formato locale. Quindi lo script allegato può fare almeno parte di ciò che deve essere fatto.
Ho una tabella che vorrei formattare in modo appropriato (anche in allegato)

La complessità principale deriva dai seguenti tre problemi:
- Gli utenti di questo script avranno formati di data diversi in quanto avranno macchine Windows diverse in lingue diverse. Ad esempio, l'input del database per la colonna appuntamento è (sempre) in formato gg-lun-aaaa hh: mm: ss che non esiste in spagnolo o tedesco.

2. Gli utenti avranno anche diversi formati numerici. Tutte le colonne produrranno valori numerici vuoti poiché si aspetta una virgola per i decimali (3.14 non verrà riconosciuto come 3,14).
3. Dopo la prima colonna, che è sempre una data-ora, le colonne possono contenere valori numerici o categorici. Nell'esempio allegato, column3 contiene commenti, pertanto non è necessario modificare il formato.
Potenziali soluzioni:
Problema n. 1 (data-ora utilizzando le impostazioni locali)
Forse il più semplice è verificare che la lingua di JMP sia in inglese, attivare / disattivare l'opzione di ignorare le impostazioni locali:
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 n. 2
Per cambiare il formato dall'inglese alle impostazioni locali, possiamo fare qualcosa di simile. Maggiori informazioni in questo 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 n. 3
Come codificare utilizzare la migliore ipotesi da JMP in modo che le colonne vengano passate solo da caratteri a numerici?
Seguendo questo post: 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 ) );
Mi manca l'asserzione che assicura che JMP sia in inglese e se esiste un modo più efficiente per farlo (potrebbe avere 100.000 righe e centinaia di colonne).
Ciao,
tutte le preferenze nella scheda "Windows" NON sono accessibili tramite JSL. Pertanto sono possibili solo soluzioni alternative. Una proposta, verifica se la lingua corrente è l'inglese, se non spiega all'utente come modificarla.
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>
I migliori saluti
Bernd