9.4M5での動作確認結果です。 マニュアルには仕様が記載されていないので別バージョンで動くのかわかりません。 %よりも括弧のほうが問題っぽいです。 データセット名に括弧が無ければ次で動く データセット名:NAMES'%' PG抜粋: declare hash ht(dataset:"""names'%'""n"); ht.defineKey('first(''%'')', "last"); ht.defineData("born", "died", "title"); ht.defineDone(); データセット名に括弧があるとdeclare hash htは初めに出てきた括弧を データセットオプションの開始だと思ってしまうので 上記の書き方だとダメ。(ちなみに一つ目の括弧-括弧閉じの後続文字列は無視されるっぽい) マニュアルには記載されていないですが、 declare hash htの1バイト目から括弧だとsyslastマクロ変数に設定されている データセットから読み込むっぽい。さらに特殊文字大丈夫 データセット名:names('%') PG抜粋: %let syslast = WORK."NAMES%str(%(%'%%%'%))"n; /* Load and Find */ data _null_; length 'first(''%'')'n last title $ 16; length born died 8; declare hash ht(dataset:"(where=(1=1))"); ht.defineKey("first('%')", "last"); ht.defineData("born", "died", "title"); ht.defineDone();
... View more