SPSS備忘録 -16ページ目

文字数が多いとダイアログから直接分析できない

SPSS16.0.1で普通にダイアログから分析すると、このようなエラーが出ることがあります。


**************************

SPSS は、現在のロケールでは無効な文字を含んでいるシンタックスの行を読み込みます。 これらの文字はクエスチョン マークに変換されました。

Text: <実際はここに変数名が入ります>
標準変数のみが許可されている変数リストの中で、定義されていない変数名、あるいはスクラッチやシステム変数が指定されました。この変数の存在を確認と スペルの検査をしてください。
This command not executed.

**************************


これについてSPSS社に確認を取ったところ、SPSS16.0の既知の不具合であることがわかりました。


すべての分析においてSPSSのダイアログに投入した変数名の全角文字の合計が約120文字を超えると、その位置の変数から切れてしまい、「現在のロケールでは無効な文字を含んでいるシンタックスの行を読み込みます。 これらの文字はクエスチョン マークに変換されました。」となってしまうそうです。ソフト内部が命令を理解できないため、分析は出来ません。


これでは日本語の変数名を何十個も使って分析できません。現在SPSSではこの問題の修正準備中だとのことです。


修正までの対処策は、


「ダイアログから[OK]で直接実行せず、ダイアログからいったんシンタックスに[貼り付け]てから実行すれば、この問題は起こらない」

「変数名を半角英数字にすれば、この問題は起こらない」

「変数名を短くして合計が100文字程度なれば、この問題は起こらない」


だそうです。急いでSPSS16.0で分析をする必要がある方は、いずれかの方法で対処してください。

<4月27日加筆:SPSS16.0.2パッチで修正されました。>

全角でも違反は違反。

SPSSにも変数名に命名規則があります。SPSSのマニュアルから引用すると、


* 名前は文字で始まる必要があります。残りの文字ではすべての文字、数字を使用でき、さらにピリオドまたは記号@、#、_、$ を使用することもできます。
* 変数名は、ピリオドで終わることはできません。
* 変数名を下線で終わらせることは避けてください(いくつかの手続きで自動的に作成された変数と混同しないようにするため)。
* 名前の長さは、64 バイトを超えることはできません。一般に64 バイトは、1 バイト言語(たとえば、英語、フランス語、ドイツ語、スペイン語、イタリア語、ヘブライ語、ロシア語、ギリシャ語、アラビア語、タイ語) では64 文字に相当し、2バイト言語(たとえば、日本語、中国語、韓国語) では32 文字に相当します。
* スペースおよび上記記号以外の特殊文字(たとえば、!、?、’、*) は使用できません。
* 各変数名は一意でなければなりません。
* 予約キーワードを変数名として使用することはできません。予約キーワードを次に列記します。ALL、AND、BY、EQ、GE、GT、LE、LT、NE、NOT、OR、TO、WITHです。
* 変数名は、大文字と小文字の組み合わせを使用できます。大文字と小文字は、表示目的で保持されます。
* 出力において長い変数名を複数の行に折り返す必要がある場合、SPSS は、下線、ピリオド、および小文字から大文字に変化する場所で行を分割します。


ところがSPSS15.0以前では、この規則を守っていなくても、全角で入力してしまえば、数字から書き出そうが、「(」などの記号を使おうが、半角の規則違反文字とはみなさず入力や分析に使用できてしまいました。 だからそのまま利用していた人も多いと思います。


しかし、SPSS16.0の変数名では、全角も半角も違反は違反として判定し、入力しようとしても「変数名に不正な文字が含まれています」と判定して、入力できません。


SPSSによると意図的にそうしているらしいので、不具合ではないです。元々上記のような命名規則があったわけですから、最初からそれを守っていれば問題なかったわけです。ただ今まで使えてしまっていたことをいいことにSPSS14.0やSPSS15.0でガンガン数字から始まる変数を作っていて、いきなりこのバージョンではダメといわれてしまうと、確かにがっかりですね。


そもそも2000年ごろのSPSSは変数名が半角8文字という制限だったので、古いユーザーはみんな変数名に気を使っておりましたが、なまじ半角128文字まで伸びてしまったために気を使わない人が出たのでしょう。私に聞いてきた同僚もそうでした。


「変数ラベル」はほとんど制限がなく、出力にも反映されるので、変数名ではなくこちらに「問1このブログをどう思いますか?」などを入力するようにトレーニングの講師にも言われますので、そうするようにしましょう。

パッチ公開

SPSS16.0.1のパッチがふたつ公開されました。


SPSS16.0.1 Hotfix 情報


SPSS16.0.1.2 HOTFIXが「ピボットテーブルのエクスポート出力されたピボットテーブルの情報が多い場合、外部アプリケーションにエクスポートできない現象」、SPSS16.0.1.3 HOTFIXが、12月30日の記事 にもある「日本語(漢字やカナなどの全角文字や半角カナ)のユーザー名でWindowsにログオンする環境で、SPSS16.0Jをインストールし、SPSS16.0Jを起動する場合で、SPSS16.0Jが利用するテンポラリフォルダ、あるいはユーザー環境変数(TEMP, TMP)のパスに日本語が含まれている場合に、SPSS16.0Jを起動するとエラーメッセージ( Error # 1216 )が表示され、SPSS16.0Jが起動できない現象。」を解決するパッチとのことです。


なお知人に問い合わせてみたところ、このHOTFIXは大きい番号に小さい番号の内容は入っていないらしいので、SPSS16.0.1.2 HOTFIXとSPSS16.0.1.3 HOTFIXをそれぞれインストールする必要があるそうです。


私の手元のコンピュータでError # 1216は起こっておらず、SPSS16.0.1.2 HOTFIXの問題はここで始めて知ったので、この問題がパッチで修正されるのかはわかりませんが、とりあえず問題なくインストールできてSPSSも使えたので、インストールしても大丈夫だと思われます。


今後もひとつひとつの問題に対してパッチが出るのでしょうか?。Windowsのパッチにもいえますが、管理が大変そうです。