He buscado y no he encontrado ninguna forma sencilla de obtener la configuración de Preferencias del sistema desde JSL. Estoy desarrollando en una Mac (JMP 14 y 15), pero también me gustaría saber cómo hacerlo en Windows. Lo más cerca que estuve fue una discusión sobre cómo obtener el código de idioma:
System Service( Get Language Code );
System Service sounds like and interesting function, but I couldn't find any documentation on it. I'm looking for a general solution but am immediately interested in finding the date format, (per setting in System Preferences ➔ Language & Region ➔ Advanced... ➔ Dates ➔ Short), as shown below:

The Corto date delimiters are normally set to slashes by default, but were modified by me to dashes in the image above. The specific issue I find with changing this setting is that it affects what arguments are valid to the Input Format function. For example, the following statement will generate a runtime error:
col << Input Format( "y/m/d h:m:s" );
Entonces el código debe verse así:
col << Input Format( "y-m-d h:m:s" );
And the reverse it true if the user has their System Preferences set to slashes. Furthermore, with the Format function, if the wrong date string is given, there won't be a runtime error, but the relevant datetime column will ignore the format setting, and the data will be left in its raw, unintelligible form.
Por lo tanto, el conjunto de argumentos válidos depende de la configuración del usuario y el código primero debe leer esta configuración para determinar qué formato usar.
Como solución alternativa, pude recopilar la información de configuración de un comando del sistema Unix y analizarla en consecuencia:
// implement Unix command:
// $ defaults read com.apple.mail DateCellWidthCache | grep M.d.yy
Clear Log();
// read System Preferences from 'defaults' that contains date format string.
sDefaults = Run Program(
Executable( "/usr/bin/defaults" ),
Options( { "read", "com.apple.mail", "DateCellWidthCache" } ),
Read Function( "text" )
);
//Write( sDefaults );
ss1 = Munger( sDefaults, 1, "M/d/yy" ); // check for slash style.
ss2 = Munger( sDefaults, 1, "M-d-yy" ); // check for dash style.
Show( ss1, ss2 ); Write("\!n");
If( ss1 > 0,
Write( "Using slashes.\!n");
,
/* else if */ ss2 > 0,
Write( "Using dashes.\!n");
,
/* else */
Write( "***ERROR: unrecognized date delimiter.\!n");
Write( "defaults read com.apple.mail DateCellWidthCache:\!n");
Write( sDefaults );
);Sin embargo, esto parece un poco complicado e imagino que hay una forma más sencilla. Es evidente que el motor JMP puede leer esta configuración, ya que presenta un conjunto muy diferente de formatos de hora en el cuadro de diálogo Propiedades de columna según esta configuración, como se muestra a continuación (presentando aquí solo las opciones de guión):

So, my question is: Is there a simple way to get arbitrary System Preferences values (and the date format specifically) by using System Service or some other function?