JMP 16.2.0(MacOS)を使用してJSLで列の表示幅を設定しようとすると、JMP15では見られなかったいくつかの問題が発生します。
1.表示幅の設定関数は、使用方法に応じて2つのモードで動作しているように見えます。 ハードコードされたarg値で呼び出された場合、永続的であるように見えます。
col = Column("SN");
col << Set Display Width( 200 );ただし、var argで呼び出された場合は、希望どおりに表示されますが、ファイルとともに保存されていないようです。 (または、少なくとも、期待どおりに保存されません。)
x = 100;
col << Set Display Width( x );
後者の場合、ファイルを保存してから再度開くと、幅200でレンダリングされます(おそらく、前のコードを実行したことによるものです)。 したがって、200はfile-save-close-and-reopenを通じて存続しますが、100は存続しません。
さらに奇妙なことに、JMP 15でテーブルを開くと、幅が100になります(そしてy = col << Get Display Width()指示はそれを確認します)。 ただし、戻ってJMP 16で開くと、幅が200になります。これは、実際、両方の値がファイルとともに保存され、JMPがJMP16の列幅属性に新しいモードを追加したことを示しています。 参考までに、添付ファイルに問題があります。
2.表示幅の設定()関数はJSLスクリプトの最後の関数であり、可変引数を使用し、 Scriptable []エラーが発生し、操作が行われていないように見えます。 ただし、ハードコードされた値が指定されている場合は、すべてが正常に機能しているように見えます(設定値はログに表示されます)。 この関数またはJMP16のJSLスクリプトの終了に新しい構文要件がありますか? この動作はJMP15では発生しないことに気付きました。
3.少し無関係ですが、これを理解しようとしたときに発見されました。JMP16では、改行文字を含む文字列には、少なくとも1つの他の非空白文字が必要なようです。それ以外の場合は無視されるようです。 これが設計変更なのか、SQAの見落としなのかわからない。
col << Set Display Width( 200 );
y = col << Get Display Width();
Show(y); Write("\!n");
Write("---");
x=100;
col << Set Display Width( x );
y = col << Get Display Width();
Show(y);出力:
y = 200;---
y = 200;
たとえば、文字列の改行の前にピリオドが追加された場合、 "。\!n" 、改行が認識されます:
y = 200;.
---
y = 200;
やあ@SteveTerry -<< Set Display Width()に一貫性がないように見えます。データテーブルは式の引数を処理しませんが、データテーブルビューは処理します。このようなJSLメッセージを処理する1つの方法は、メッセージが送信される前に引数の評価を強制することです。
Eval(EvalExpr(col << Set Display Width( Expr(x) )));
将来のリリースで評価を修正することを検討します。
改行の問題については、「\!n」ではなく「\!N」を試すことをお勧めします。前者はホスト環境に依存する改行を挿入しますが、後者は特定の「改行」文字です。私のMacでのあなたの例は変更なしで動作するようですが、これがシステム設定に依存するかどうかはわかりません。
回避策をありがとう、 @danschikore 。 孤独な「\!n」の問題では、「\!N」は違いを生みませんでした-(そして「\!n」は常にMacでうまく機能していました)。 同僚もこの動作を確認しています(16.1)。 それをJMPチームに報告する最良の方法は何ですか?