SASに関する質問
SAS は2022年2月28日にサービスを終了いたしました。
掲載されているのは2022年2月28日以前の情報で、今後更新されることはありません。
SAS Add-In for Microsoft Office 関連
Windows 8, 8.1 Pro 64bit + Office 2013 64bit で、サーバ接続を[アクティブに設定]すると、Excelが異常終了して接続できません。 — 2013.11.01
原因と対処
<原因>
SAS Add-In for Microsoft Office 5.1 64bit版のバグによるものです。
Windows 8 Pro 及び Windows 8.1 Pro の64bit版と、Microsoft Office 64bit版 + SAS Add-In for MS Office 64bit版の組み合わせで、Excelが異常終了(Crash)します。
<対処>
当分の間(バグFix版が出るまで)、MS Office 32bit版 + SAS Add-In for MS Office 32bit版の組み合わせで使ってください。 (2013.12.20 頃にリリース予定の SAS 9.4 TS1M1 にて改修される予定)
SAS Add-Inのインストールの際にエラーとなり、「Microsoft Runtime Components 8.0 SP1が更新されませんでした」となるトラブルについて、問い合わせがありました。
原因と対処
<原因>
PCのアカウント名に日本語を使用している場合、Microsoft Runtime Components 8.0 SP1のインストール時に構文エラー(Syntax error)が発生する。
<対処>
もし、日本語のアカウント名を使っている場合は、Administrator か、管理者権限のあるアカウント(アルファベット、数字による)を作成し、インストールを行ってください。
<確認した手順>
- 日本語ユーザ名でインストールを行い、エラーとなることを確認
- 「コントロールパネル」→「ユーザアカウント」→「新しいアカウントの作成」で、アカウント名を kanri として作成し、パスワードを設定
- 一旦ログオフして、作成したアカウントでログイン
- sysreqwizard__92210__prt__xx__sp0__1\setup.exe を実行
- 正常にインストールされたことを確認
- msofficeint__92110__win__xx__sp0__1\setup.exe を実行
- 正常にインストールされたことを確認
次の項目「SAS Add-Inで、「予期しない例外が発生しました」となる。」を参照ください。
一元配置分散分析にTukeyの多重比較を加えたところ、「予期しない例外が発生しました」とエラーになります。
解析の手順は、測定値を処理区の一元配置の分散分析で解析し、Tukeyの多重比較の検定を加えました。 (Tukeyの多重比較を行わない場合は、正常に終了します。)
エラーメッセージは、以下の通りです。
SAS Add-In For Microsoft Office に予期しない例外が発生しました。 システム管理者にお問い合わせください。
<対処>
SAS Add-In 4.2 Foundation 9.2 での不具合であることを確認しています。
現在は、SAS 9.3 にバージョンアップしており、エラーは解消されました。 ただし、「10 - 5」の様な値が日付の形式で表示される不具合があることを確認しております。
SAS Add-In 5.1の場合は、一部の設定において正常な表示となることを確認しております。
- 「SAS」タブの「ツール」から、「オプション」を選択します。
- 「SASオプション」ウィンドウの「結果」タブを選択します。
- 「結果の出力形式」欄の「出力形式」を「SASレポート」にします。
- 「表示」欄の「ExcelにSASレポートテーブルの値の種類を変更させる」のチェックを外します。
この設定は、出力形式が「SASレポート」の場合のみ設定が可能であり、「HTML」「CSV」の形式では、この設定ができません。
「HTML」「CSV」形式の場合も「ExcelにSASレポートテーブルの値の種類を変更させる」のチェックを外す設定が可能で、Excelが値の種類を変更することを無効とするプログラム改修を要望しておりますが、改修されるまでは、「SASレポート」形式とし、上記の設定で出力してください。
なお、SAS Add-In 4.2には、上記設定項目がありませんので、手動で値を修正する必要があります。
SAS Add-Inのオプションで出力形式を「SASレポート」から「HTML」に変更すると、Tukeyの多重比較計算値を取り出すことができますが、比較の値が日付の様に不正な表示となってしまいます。
(手動で値を修正して頂ければ、使えると思いますが・・・)
修正版(アップデート版)の提供があるまでは、HTML形式で出力するようにしてください。
出力形式の設定変更は、「SAS」メニューの「オプション」を選択し、「結果」タブの出力形式を「HTML」とします。
今まで表示されていた Excel の SAS タブ(または SAS メニュー)が急に表示されなくなり、SAS Add-In が利用できなくなってしまいました。
<対処>
※Office2007 の場合
Excel を起動して、Officeボタン(画面左上)→ Excel のオプション → アドイン と選択します。
ここで、アドインの一覧の中の「無効なアプリケーションアドイン」に、以下の項目が表示されているか確認します。
≪SAS Add-In 4.22 の場合≫
- SAS Add-In Microsoft Office Loader
- SAS
≪SAS Add-In 4.3 の場合≫
- SAS Add-In 4.3 for Microsoft Office
- SAS Add-In Microsoft Office Loader
- SAS OlapViewer Add-In 4.3 for Microsoft Office
表示されている場合は、下記の手順で「アクティブなアプリケーションアドイン」に設定します。
- 「無効なアプリケーションアドイン」の項目に表示されている “SAS Add-In Microsoft Office Loader” を選択しておく。
- 画面下の「管理:」で「使用できないアイテム」を選択する。
- 隣の「設定」ボタンをクリックし、表示された画面でチェックを入れ、OK をクリックする。
- Excel を再起動する。
- 残りの項目についても同様に設定します。
「無効なアプリケーションアドイン」に含まれていた項目が「アクティブなアプリケーションアドイン」に含まれれば、SAS タブが表示されるようになります。
※Office2003 の場合
Excel 2003 の場合は、タブではなく、SAS のツールバーとなります。
Excel を起動して、メニューバーの [表示] - [ツールバー] で
- SAS データツール
- SAS による分析ツール
にチェックを入れて、Excel を再起動してください。
各種タスクを実行しようとすると、Excelが反応しなくなる。Excelを強制終了すると、次回Excel起動時に、SAS タブが表示されなくなる。
<原因>
SAS Add-In for Microsoft Office 4.3 の不具合であることをSAS社に確認しています。
一つのExcelファイル内にて多量のSASタスクの結果が存在する際に、本不具合が発生します。
<対処>
上記「Excel の SAS タブが表示されなくなってしまいました。」を参考に、SASタブを表示させてください。
次に、新規作成したExcelファイルにデータをコピーし、タスクを実行してください。
※不具合が発生するファイル内の別のsheetにコピーしても改善しません。
必ず新規にファイルを作成して下さい。
SASの起動
新システム移行後は、フロントエンドサーバで SAS を利用することができます。
ログインサーバ (scion.cc.affrc.go.jp
) に接続し、メニューから 1 を選択してフロントエンドサーバにログインしてください。
また、SSH2 のみの対応となっておりますので、PuTTY や Tera Term を使ってください。
GUI環境(X Window)で利用するには、SSH X11 Port Forwarding を有効にして接続してください。
Windows環境で、SSH2 X11 Port Forwarding が可能なSSHクライアント(ターミナル)は、PuTTY, TeraTerm があります。(Windowsで確認した範囲では)
SASの起動コマンド
- X Window 環境で通常の起動
norin@fe01 $ sas
- X Window 環境で英語モード
norin@fe01 $ sas_en
- キャラクタ端末での対話モード(旧システムのようなDMSは使用できません)
norin@fe01 $ sas -nodms # 英語モードは、 sas_en -nodms
- キャラクタ端末での非対話モード(バッチモード)
norin@fe01 $ sas sasprogram.sas
- X Window 環境で日本語SJISモードで起動
norin@fe01 $ sas_ja.sjis
- X Window 環境で [SAS:エクスプローラ] [SAS:結果] ウィンドウを非表示で起動 (起動時間が少し早い)
norin@fe01 $ sas -dms # 英語モードは、 sas_en -dms
- X Window 環境で [Getting Started Tutorial] ウィンドウを非表示で起動
norin@fe01 $ sas -notutorialdlg # 英語モードは、 sas_en -notutorialdlg
”Error: can't open display.” と言うメッセージが出たり、アプリケーションが全く表示されない等の場合、原因として以下の点が考えられます。
- パソコン側の X サーバが起動されていない。
Xサーバソフトの状態をご確認ください。 Windowsの場合、MS-DOSプロンプトを立ち上げて
“netstat -na”
を実行すると、 Xサーバが起動しているか最終的な確認ができます。
Xサーバは、デフォルトでは、6000番ポートで起動します。
C:¥Users¥norin>netstat -na アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:990 0.0.0.0:0 LISTENING TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING TCP 0.0.0.0:6000 0.0.0.0:0 LISTENING TCP 0.0.0.0:24800 0.0.0.0:0 LISTENING
- SSH X11 ポートフォワーディングが有効になっていない。
PuTTYの場合、接続するときのウィンドウ(PuTTY設定)のカテゴリ中の「接続」「SSH」「X11」の
項目で、「X11 フォワーディングを有効にする」をチェックします。
Unix(Linux)系、Mac OS Xなど、ssh (slogin) コマンドを使う場合は、ssh (slogin)
コマンドで -X (X はラージ X )オプションを使って接続します。
(例: ssh -X norin@scion.cc.affrc.go.jp
)
SSHオプションで、スモール x は、X11 ポートフォワーディング機能を OFF にしますので 注意してください。
SASの操作
X Window 版 SASのプログラムエディタで BS, DEL, INS キーが使えない場合、NumLockキーをOffにすると使えるようになります。
- Xming, Cygwin(X.Org)では、NumLockキーをOffにすることで、 BS, DEL, INS キーが有効になることを確認しています。
- Reflextion X, Exceed, Linux(CentOS)では、NumLockキーがONでも問題ありません。
デフォルトでは,上書きモードになっています。
これを [Ctrl]+[x](「コントロールキー」を押しながら「 x キー 」をおす)で 上書きモード/挿入モード を 切り替えることができます。
キャラクタ端末(VT100)でのDMS(ディスプレイマネージャーシステム)は、サポートされていません。
旧システム(SAS Ver.6.1)では、キャラクタ端末でのDMSが利用できましたが、SAS Ver.9.2(Ver. 8.2以降) では、キャラクタ端末でのDMSはサポートされていません。
キャラクタ端末でDMSを使わない場合は、sas -nodms として起動してください。
バッチモード(非対話モード)の利用方法は、以下の通りです。(SASのプログラムが sasprog.sas の場合)
norin@fe01 $ sas sasprog.sas
ログと実行結果は、sasprog.log, sasprog.lst のファイルに出力されます。
もし、グラフィックの出力がある場合は、プログラムの最初に、以下の記述をすることで、ファイルに出力することが出来ます。
filename graphout '/home/norin/sas/graph.png'; goptions reset=all device=PNG gsfname=graphout gsfmode=replace;
SASのグラフィックデバイス(PNGなど)は、PROC GDEVICE; を実行すると表示されます。 主なものは以下の通りです。
BMP BMP File Fmt--256 colors GIF GIF File Format JPEG JPEG/JFIF Format--256 Colors PDF Portable Document Format for Acrobat 3.0 PDFC PDF for Acrobat 3.0 -- color PNG PNG (Portable Network Graphics) Format PS PostScript devices
SASの起動オプション -memsize を指定することで、メモリを確保することが可能です。
例:sas -memsize 512m
通常の起動の場合
proc iml symsize=256000000 worksize=18000; NOTE: Assuming that the number is given in bytes and not kilobytes. NOTE: Could allocate only 130508800 bytes of symbol space, 256000000 bytes requested. NOTE: Worksize = 18432000 NOTE: Symbol size = 256000000 NOTE: IML Ready
sas -memsize 512m で起動した場合
proc iml symsize=256000000 worksize=18000; NOTE: Assuming that the number is given in bytes and not kilobytes. NOTE: Worksize = 18432000 NOTE: Symbol size = 256000000 NOTE: IML Read
テキストについては,プログラム,ログ,アウトプット(出力結果)などすべて同じ手順になります。 保存したい内容が記述されているウィンドウで,
[File] → [Save As...]
とすると,ファイルマネージャウィンドウがでてきます。 ディレクトリを指定し,適当なファイル名を入力します。
ファイルタイプ(拡張子)は,プログラムは .sas,ログは .log,アウトプットは .lst とするのが一般的です。 (これ以外の拡張子でも付けることはできます。)
外部ファイルに保存したあと,自分のパソコンにファイル転送し,パソコンのプリンタから印刷してください。
保存したい内容が記述されているウィンドウで [File] [Save As…] とすると,ファイルマネージャウィンドウがでてきます。 ディレクトリを指定し,適当なファイル名を入力します。
グラフなど画像の出力は、出力ウィンドウのメニューから[File] [Export as Image…] を選択すると、ファイルマネージャウィンドウが開きます。
保存するディレクトリを選択し、ファイル名を入力します。
File type: [Graphics Interchange Format, *.gif] の横の ▼ をクリックすると、画像フォーマットを選択することができます。
データの入力
表計算ソフトから、CSV形式でファイル保存したものを、SASプログラムのDATAステップで 読み込むには、次の様な方法があります。
リスト形式のデータを読み込む時、デリミタ(区切り記号)のデフォルトはブランクになっています。
DATA ステップ中のINFILEステートメントで、 DELIMITER オプション や DSDオプション を 使用することにより、ブランク以外の文字をデリミタ(区切り記号)として扱うことができます。
- a) DELIMITER オプション
デリミタで使用する文字列を引用符で囲んで指定します。 DELIMITER='デリミタ'(DLM='デリミタ'と省略可能)となります。
以下の例のように用います。
外部ファイルから読み込む場合
data sample2; infile 'sample2.dat' dlm=','; input name $ sex $ age height weight ; run ; 《 sample2.dat(外部ファイル)》 Aubrey,M,41,74,170 Ron,M,42,68,166 Carl,M,32,70,155 Antonio,M,39,72,167 Deborah,F,30,66,124
DATAステップ中にデータを記述する場合
data sample1; infile cards dlm=',' input name $ sex $ age height weight ; cards ; Aubrey,M,41,74,170 Ron,M,42,68,166 Carl,M,32,70,155 Antonio,M,39,72,167 Deborah,F,30,66,124 ;
- b) DSD オプション
DSD オプションは、以下のように使います。
data sample2; infile 'sample2.dat' dlm=',' dsd; input name $ sex $ age height weight ; run ;
DSDオプションでは、標準でコンマがデリミタとみなされますので、この場合、DLMオプションは省略可能です。
infile 'sample2.dat' dsd;
※ CSVファイルの欠損値
DLMオプションだけの場合、元データの欠損値が空白(スペース)で記述されていると、そのデータを 欠損値としてよみこみません。DSDオプションで このケースに対応できます。
つぎのようなデータの場合です。
Aubrey,M,41,,170 Ron,M,42,68,166 Carl,M,32,70,155
この点について、SASジャパンのFAQにあります。 http://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/ba041.html
※ 文字列がダブルコーテーションで囲ってある CSVファイル
文字変数をコーテーションではさんでいる CSV形式のファイルもあります。これを DLMオプションだけで 読みこんだ場合,コーテーション部分も含めて文字変数として認識してしまいます。 これについても,DSDオプションを指定すれば対応できます。
下のようなデータの場合です。
"Aubrey","M",41,74,170 "Ron","M",42,68,166 "Carl","M",32,70,155
表計算ソフトなどから、タブ区切りで保存したデータを読込には、次のような方法があります。
データのデリミタがコンマ区切りになっている時と同様に、 INFILEステートメントで、 DELIMITER(DLM)オプションをもちいます。
DATAステップで、つぎのように記述します。
data sample3; infile 'sample3.dat' dlm='09'x ; input name $ sex $ age height weight ; run ;
'09'x はタブの16進コードを表しています。
このことは、SASジャパンのFAQにもあります。 http://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/ba062.html
INFILEステートメント(もしくは、FILEステートメント)で指定した外部ファイルの 1行が長い場合、それに対する入出力時に読み込めないこともでてきます。
外部ファイルを読み込む時の最大レコード長はデフォルトで設定されています。
UNIX版SASでは、デフォルトが、256byteになっています。それ以上の長さがある場合は、切り捨ててしまいます。
このデフォルト値を変更するには、 INFILEステートメントの LRECLオプションを使用します。
論理レコード長のバイト数を、オプション指定します。
以下のようになります。
data long ; infile 'long-test.dat' LRECL=512 ; input var1-var100 ;
このオプションは、FILEステートメントで、外部ファイルにデータを書き出す時にも、 使用することができます。
この点について,SASのFAQにもあります。 http://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/ba053.html
元データは、以下のように、1行に複数の人のデータがならんでいます。
TANAKA F 33 170 66 YAMADA M 49 151 48 KIMURA M 41 182 89 YAMAMOTO F 28 165 50 NOMURA F 39 160 39 SUZUKI F 19 165 48 SATO M 30 179 66 YAMAGUCHI M 51 171 71
元データに手をくわえずに、SASデータセットを作成するには、次のような方法があります。
DATAステップの INPUTステートメントで,変数名の指定のあとに @@ (アットマークを2つ)をつけます。
この指定(後置@@)は,データ読み込みのポインタを,データ行の終わりまで,現在のデータ行に保持します。
複数のオブザベーションにわたって,同じデータ行を継続して読み込むときに使用できます。
つぎのように記述します。
data member ; infile 'member.dat' input name $ sex $ age height weight @@ ; run ;
テキスト(データ)ファイルの改行コードが、パソコンとUNIXで違っていることが原因と考えられます。
テキストファイルの改行コードを変更するには、nkf -Lu コマンドを使います。
nkf -Lu in-file.txt > out-file.txt
SCP, SFTP のファイル転送ツールで、改行コードの変換が可能なもの(WinSCP)もあります。
Webフロントエンドのファイル操作機能でも、コード変換を行う事が可能です。
以下に、nkf のオプションを記載します。 -s output MS-kanji (shifted-JIS) code. -e output EUC (AT&T) code. -L[wmu] new line mode -Lu unix (LF) -Lw windows (CRLF) -Lm mac (CR) 例:変換元ファイル(in-file.txt)を、文字コードを EUC に変換、同時に改行コードを unix 用に変換して、ファイル(out-file.txt)に保存する。 nkf -e -Lu in-file.txt > out-file.txt
データの出力
SAS 9.3からは、結果の出力がHTML形式となっています。 以前の様にリスト形式で出力するには、ODS LISTING; を指定しなければなりません。
プログラムの最初に、以下のプロシージャを挿入します。
ODS HTML CLOSE;
ODS LISTING;
場面によってリスト形式とHTML形式を使い分けることができるマクロプログラムが、SAS Technical News(SPRING 2013)に掲載されていましたので、紹介します。
以下のマクロプログラムをSAS起動後、最初に実行します。 プログラム実行後は、F11キーを押すとHTML形式、F12キーを押すとリスト形式に切り替わります。 以後、SASを終了するまでマクロは有効です。
- ods-change-macro.sas
%MACRO htmlstyle; /* HTML 出力を有効にするマクロ */ ODS _ALL_ CLOSE; ODS HTML PATH="%SYSFUNC(PATHNAME(work))"; %PUT NOTE: HTML 形式が有効になりました ; %MEND; %MACRO liststyle; /* リスト出力を有効にするマクロ */ ODS _ALL_ CLOSE; ODS LISTING; %PUT NOTE: リスト形式が有効になりました ; %MEND; /* htmlstyle マクロをショートカットキー F11 に登録 */ DM "KEYDEF 'F11' GSUBMIT '''%NRSTR(%%htmlstyle)'''"; /* liststyle マクロをショートカットキー F12 に登録 */ DM "KEYDEF 'F12' GSUBMIT '''%NRSTR(%%liststyle)'''";
DATAステップ中で,fileステートメントで外部ファイルへ書き出すことができます。
そのままの指定だと,スペース区切りで出力されます。
コンマ区切りにするためには,出力する変数を指定する put ステートメントで ',' を記述します。
つぎの例のように記述します。
data sample5 ; input name $ sex $ age height weight ; cards; TANAKA F 33 170 66 YAMADA M 49 151 48 KIMURA M 41 182 89 run ; data _null_; set sample5; file 'test.csv'; put name ',' height ',' weight ',' age ; run;
後段のDATAステップの説明
1行目 ヌル データセット作成。( data _null_; ) 2行目 setステートメントで,sample5データセット指定。 3行目 fileステートメントで,書きだす外部ファイル名(test.csv) を指定。 4行目 putステートメントで,書き出す変数名を指定。 変数名のあいだに,',' を記述しています。 指定した変数が順に出力されます。
SASプログラムのGOPTIONSステートメントで、device オプションや gsfname オプションを使用し、 非対話モードで実行することにより、結果を直接、外部ファイルに出力することができます。
SASプログラムは次のように記述します。
filename graphout '/home/ntarou/test.png'; goptions reset=all device=PNG gsfname=graphout gsfmode=replace; title 'Hello World'; proc gslide; run;
- FILENAMEステートメントで、出力先となる外部ファイルにファイル参照名 graphout (任意の文字列)を割り当てます。
- device = グラフィックオプションでは、ファイルの作成に必要なデバイスドライバを指定します。 主なデバイスドライバは(BMP, GIF, JPEG, PDF, PDFC, PNG, PS など)があります。 お使いのパソコンでハンドリング可能なファイル形式になるように、デバイスをお選びください。 指定可能なデバイスの一覧は、
proc gdevice;
を submit すると参照可能です。
- gsfname=グラフィックオプションでは、既出のFILENAMEステートメントで定義したファイル参照名 graphout (任意の文字列) を参照します。
- gsfmode=グラフィックオプションでは、ファイル内の既存レコードの置き換えを指定しています。
- グラフィックオプションには他に、グラフィックの背景色を変える cback = などがあります。
goption のより詳細なリファレンス等については、SAS社のSAS/GRAPHのマニュアルをご覧ください。
グラフィックストリームファイル(GSF)に関する記述が該当する部分です。
もし必要であれば、計算センタよりマニュアルを貸し出しいたします。
SASのグラフィックデバイス(PNGなど)は、PROC GDEVICE; を実行すると表示されます。
主なものは以下の通りです。
BMP BMP File Fmt--256 colors GIF GIF File Format JPEG JPEG/JFIF Format--256 Colors PDF Portable Document Format for Acrobat 3.0 PDFC PDF for Acrobat 3.0 -- color PNG PNG (Portable Network Graphics) Format PS PostScript devices
X Window(UNIX)版のSASを使った場合、グラフ出力は綺麗とは言えません。 特に日本語フォントが見辛く、プレゼンテーションなどで使えるレベルではありません。 (英数文字は、比較的綺麗に出力されます。 SAS社には改善を要求していますが、現在のところ対応はできない状況です。)
出力をHTML形式などに変換すると、グラフなどが直接ファイルに出力され、フォントやレイアウトが改善されます。
HTML形式で出力するには、ODS(アウトプット・デリバリ・システム)の機能を使います。
例:以下の様な記述をSASプログラムに入れておきます。
ODS html file="sasgraph-tset.html";
プログラムを実行すると、SASからブラウザが起動され、グラフなどが表示されます。 また、プログラムで指定した “sasgraph-test.html” ファイルと、グラフの画像ファイル “gplot.png” などが作成されます。
X Windowで表示したグラフと、ODSを使って出力した画像は、以下の様になります。
SASの日本語出力は、EUC-JPを標準設定にしています。 このため、このままフロントエンドサーバ(UTF-8環境)で表示したり、PCに転送すると文字化けして読むことができません。
お手元のWindows PCにファイルを転送する場合は、SJISまたはUTF-16に変換する必要があります。 変換するには、フロントエンドサーバにログインし、nkfコマンドを使います。
nkfコマンドを使って、ファイルの文字コードを確認することができます。
nkf -g ファイル名
フロントエンドサーバで表示するには、以下の様にします。
nkf -w ファイル名
ファイルを保存するには
nkf -w 変換前ファイル名 > 変換後ファイル名
とします。
- WindowsXP(SJISに変換)の場合
文字コード(SJIS)及び改行コードを変換するため、以下の様にnkfコマンドを使います。nkf –sc 変換前ファイル名 > 変換後ファイル名
例:
nkf -sc sasprog.out > sasprog_sjis.txt
- WindowsVista,7(UTF-16に変換)の場合
文字コード(UTF-16)及び改行コードを変換するため、以下の様にnkfコマンドを使います。nkf –w16c 変換前ファイル名 > 変換後ファイル名
例:
nkf -w16c sasprog.out > sasprog_utf16.txt
以上で、ファイル転送する準備が完了です。
参考:
SASを起動すると、起動した日時がシステムに記憶されます。この時間は、OUTPUTウィンドウへの出力だけではなく、&SYSDATEや&SYSTIMEなどの値としても使用されます。
残念ながらその内容を変更することはできません。
そこで、以下のプログラムのように、マクロ機能を使用して、実行時の日付時間をタイトル行に出力する方法を紹介します。
次のプログラムは、まずDATEおよびTIME関数を使用して現在の日付値や時間値を取得し、それをCALL SYMPUTルーチンでマクロ変数DATEとTIMEに格納します。 TITLEステートメントではこれらのマクロ変数を参照し、タイトル行に日時を表示させます。
[マクロ定義] %macro now; options nodate; data _null_; date=date(); time=time(); call symput("date",put(date,weekdate30.)); call symput("time",put(time,time5.)); run; %mend now; [マクロ実行] %now; title2 " &time.&date"; proc print data=sasuser.class; run;
その他
GUI(X-Window)では、問題なく実行できていたプログラムを、バッチモードで実行したところ、 「NOTE: a に対して、無効なデータが行 14 カラム 1-11 にあります。」の様なメッセージが表示されて、実行できません。
CARDS; で、データの区切りが TAB になっている場合、GUIでは問題なく実行できますが、バッチモードではエラーとなります。
エディタなどで、TAB をスペースなどに変換するとバッチモードでも実行することが出来ます。
SAS Enterprise Guide 4.2 において、Windowsのフォントに r_contro.ttf が登録されているとエラーとなることを確認しています。 (SAS Discussion Forumsにおいて、SASのサポートからの情報として掲載されています。)
SAS Enterprise Guide 4.2 で問題があることを確認しおり、HotFix 4.22, 4.3にて解決されています。
r_contro.ttfを削除すると、エラーが発生しないことを確認しています。
r_contro.ttfは、Reflection X(X Server Soft)に含まれていることを確認しています。 削除しても問題ないのかは不明です。
http://support.sas.com/forums/thread.jspa?threadID=8535&tstart=0
X Window環境(Ubuntu, KNOPPIXなど)でSASを利用中にGPLOTによるグラフを表示しようとすると、X Windowが再起動されることを確認しています。
この現象は、フロントエンドサーバのSAS起動スクリプトで、フォントパス(xset fp+ …)の指定をしていることに起因しています。 フォントパスの指定をしないスクリプト(sas_batch)を使うことで、X Windowの再起動は回避することができます。 ただし、フォントパスの指定が無い(sas_batch)場合、グラフの文字が潰れてしまいます。
Ubuntuでは、xfonts-100dpi, xfonts-75dpi パッケージをインストールすることで回避できる場合があります。(導入済みであっても回避できない場合もあります。)
KNOPPIXでは、xfonts-100dpi, xfonts-75dpiが導入済みですが、回避できませんでした。
Cygwinでは、X11を全てインストールするか、xfont関連を全てインストールすることで回避できます。