何らかの理由で、動作していたスクリプトが停止し(JMP 16と17の両方で)、次のエラーが発生します。
subscripted key not in map in access or evaluation of 'aaa (bbb) [ccc]' , "aaa (bbb) [ccc]"
セカンダリ テーブルの列の名前をプライマリ テーブルに変更する小さなスクリプトがあります。まず、連想配列が作成されます (図示せず)。
次に、列を反復処理します。
new_colNames = dt_secondary << Get Column Names( "String" );
Print( "Iterating through new column names" );
For( i = 1, i <= N Items( new_colNames ), i++,
new_colName = new_colNames[i];
Print( "Changing name for column:", new_colName );
user_colname = dict_colNames << Get Value( new_colName );
Print( "To user column name:", user_colname );
Column( dt_transposed, new_colName ) << Set Name( user_colname );
);
理由はわかりません。デバッガーを使用すると、辞書にキーが存在することがわかります。
このエラーは、私には同一の文字列のように見える複数の列で発生します。
キーは空白も含めて正確でなければなりません。hex() 関数はキーを調べるのに便利です。次のようになります。
try( ... use the aa with key ...
, // catch errors, show the keys
show(exception_msg, hex(key), char(aa));
)
私は時々、JSL に try(...) を残します。そうすることで、予期しないエラーが発生したときに、ログに適切な情報が記録されます。これは、キーまたは aa が関数または拡張 for ループ内のローカル変数であり、エラー メッセージの後に消えてしまう場合に特に便利です。