2016-12-12 5 views
2

SASストアド・プロセス・サーバーの「機能」の1つは、クライアントのコンテキストに応じてロケール設定can changeが設定されていることです。私の場合、同じリクエストがExcelまたはChromeによって送信されたかどうかによって、セッションはen_gbまたはen_usになる場合があります。ロケールによる違いの理由

これは、ANYDTDTEを使用する場合など、同じレポートに対して異なる結果を引き起こす可能性があります。スタイルのインフォーマット。クイックフィックスはoptions locale=xxx;を明示的に設定することですが、この意味を理解するには、理解しておくとよいでしょう:

同じプログラムが異なる結果を与えることができる主なセッションロケールに?

答えて

1

ロケールがプログラムに与える主な方法は、文字セット/エンコーディングと日付/時刻のデフォルトです。

ロケールによって部分的に文字セット(またはエンコーディング)が決まります。たとえば、あるロケールがen-us、1つがutf8のようなものであれば、大きな違いがあります。 SASは、ファイルの読み込み(プログラムやファイルのヘッダーのいずれかに明示的に指定されていない場合)のセッションエンコーディングにデフォルト設定されるだけでなく、SASデータセットに読み込まれた文字をSASが処理する方法もあります。 DBCSエンコーディングは1文字当たり2バイトの記憶域を持ちますが、ロケールがen-usで、utf8と予想される場合、2つの間でトランスコードしない文字を処理できないことがあります。

日付のデフォルトも関連性が高いです。 en-gbは、10/8/2015が2015年8月10日であると想定していますが、en-usは2015年10月8日であると想定しています。これは、避けることができる場合にはanydtdte.を使用しない理由です。 DATESTYLE system optionを明示的に設定することで、この問題を回避できます。区切り文字(ddmmyy10.など)など、デフォルトの出力形式にはいくつかの相違点があります。

ロケールによって異なる可能性がある場合は、documentation for the LOCALE system optionを参照してください。

  • DATESTYLE
  • (DATESTYLEと同様に、日付が読まれる方法に影響)DFLANG
  • ENCODING
  • PAPERSIZEまた、TRANTABは、設定の一部として設定されている:これは、4つの設定が言及しますENCODING

関連する問題