The Nameless City

何故か製薬やSAS関連のブログ、の予定。

SAS Tips

UTF-8で勘違いしてた事。

wつかないlatin-1領域でも、UTF-8に変換すると非ASCIIの所で2バイトになる。 完全にASCIIなら同じに出来るが、latin-1、wlatin-1なら変換が必要で、 latin-1 最悪二倍 wlatin-1 最悪三倍 だなと。 S-JIS領域での最悪は3倍になる事がある。 半角カナが1バイト…

SASのUTF-8で考える事アレコレ。

簡単ながら。 データセットの内容自体はほぼ対応出来る。 文字の固定長指定を長めにしなければいけないとか色々あるけど、とりあえずは出来る。 問題が残る所がある。 SASのラベルの長さが制限されているが、この為、うっかりすると文字が切れる。日本語で25…

トランスエンコーディング、というお話を見て。

namelesscity.hatenadiary.com SASユーザー総会でも誰ぞの発表ありましたが。 エンコーディング情報がないレガシーデータの地獄。 そんなデータあらへんやろーという人に一つだけ言うと。 SAS V6辺りではエンコーディング情報がデータセットにくっついてませ…

立派な客よりマトモな客求む。

もう、あのシステム保守自体切りたいんだけどマジで。 某製薬会社向けの受託開発やったのおそらく十年は前。 システム綺麗にしましょうとかバージョンアップさせましょうとか延々と伸ばされ提案は却下され、保守費用も月数時間とお客さん環境に接続する為のe…

多分、前のDISのは、当面直らないんではと思う。

namelesscity.hatenadiary.com あれからも、このバグって簡単かねえと思いながら見てたのですが、 そういや、 ・Oracleの場合二重引用符で列名を指定する事が出来た なと。 SASは名前リテラル('~'n)というのを持っているので二重引用符と一重引用符の使い…

意外と知られていない、データセットの指定方法。

ネタ用のソース。 手持ちのSASで試して見て下さい。 しかし、SAS On Demandの場合にはこれで動くかはやってないので正確な所は分かりませんが多分出来ないです。SAS University Editionも同様で、SAS Integration Technology上に乗っかってるのでは、XCMDが…

SASの各種ツールはSAS構文全てに対応している訳ではない、例としてのDISの変な挙動の話。

DISのマッピングで出てる警告について聞かれたのですが。 DISにはDISに食わせる為の書き方というのがあって、例えソースが一種類であっても、「テーブル.列名」という記述をする必要があったんじゃないかと記憶しているのです。 面倒臭いなと思ったら生SASを…

COMPRESS=オプションの活用。

実は、V6時代から存在するけど、その実あまり使われていないような気がするオプションですが、 パフォーマンス等にメチャクチャ影響するので、適度に使う事を推奨したいオプションです。 個人的にはCOMPRESS=YESってデフォルトでもいいと思うんですけどね。 …

SASデータセットでストレージが圧迫されて困る人へのTips。もう少し深めに。

「○○ではサイズがちょっとだったのに、SASデータセットにすると大きくなる」というのは、あるあるなので。 その予断を地上から消し去りたい。 SASデータセットでストレージが圧迫されて困る人へのTips - The Nameless City SASの固定長文字列型という所が悪…

SASデータセットでストレージが圧迫されて困る人へのTips

とりあえずの策 COMPRESSを有効にして保存してみる事をお勧めします。 特に文字データが多い場合には有効です。固定長文字列を採用している事もあって、SASデータセットは文字データを含んでいると無駄な容量食ってる事が多いです。 暇なら、固定長文字列の…

SASのResponseファイルが文字化けを起こす。

SAS Deployment Wizardを使うと、%userprofile%\AppData\Local\SAS\SASDeploymentWizard の中にいろいろSDWの実行ログができるんだが、その中には、画面からの選択を記憶しておいてくれるResponseファイルというのがあるんだが。 これを使って記録していた情…

HRESULT系のエラーがSASに絡むと大変だよなあという。

頭を悩ませて来た問題ではあるんだけど。 混ざって来てたから一緒の問題だと思い込んでたけど、違うわ・・・・・・ HRESULT 800ac472 from set operations in Excel Yes, you are getting the VBA_E_IGNORE error that Excel will return when you try to in…

SAS Hot Fix Analysis, Download and Deployment Tool(SASHFADD)に残念感を覚えつつ、FTPを使わずにHotfixを取得する。

うんまあ、一応言っておくと、SASのせいとは言わない。 言わないんだが、もう少しどうにかしてくれてもいい感じはある。 FTPのプロキシ設定を超えるのが、ここんとこ難しい。 ウチのProxyはPACファイル仕様である。そもそも、Windows謹製のFTPがProxyに対応…

SASの技術情報の場所として、Knowledge Baseはもう少し使われてほしい。

英語翻訳の仕事をしている訳ではないんで、ホント「日本語の情報だせ」とか要望されるのは勘弁。 Knowledge Baseには、おおよそ日本語モノより十倍以上のノウハウがあります。 support.sas.comというかまあ、日本語ソースがあまりにも貧弱なのですが。 オス…

SASでバグを発見したら・・・・・・

色々とプロジェクトに関わってきていての経験知です。 障害として急ぎ対応される事は稀。 障害の内容によりますが、基本的にクライアントの挙動とかの場合には、修正されてもだいぶ後です。 やった事ないですが、Caryへダイレクトアタックかけられる方が対応…

SAS社テクニカルサポートを使ってきて、の雑感。

他に代わって質問する事も多々あります。・・・・・・出来れば、「SASテクニカルサポートにお願い出来ない事をこちらに聞かないでほしい」とか思うんだけど。だいぶ病んでます。 SASテクニカルサポートは、運用面でのサポートは引き受けないのが原則。 あそ…

レコード件数を取り出す「if 0 then set <dataset name> NOBS=<variable>」は、特定条件下で想定外の結果を返すので注意。

「if 0 then set 」って昔調べた時には情報ホント無かったんだけど、今SASプログラマの人がボチボチネットに書いてますね。 で、見てた時に、そういや某所でやってた時に、ここら辺で面倒臭い話あったなと思い出して調べてみた所、やっぱりこのコードは特定…

SAS9.4のサービス起動順序。

よく忘れるので。SAS(R) 9.4 Intelligence Platform: System Administration Guide, Fourth Edition/Starting, Stopping, and Checking the Status of Servers/Operating Your Servers/Overview of Server Operation/Starting Servers in the Correct Order …

Windowsでレジストリをいじって右クリックメニューに適当にS-JISでのバッチ実行用メニューを追加する。

こんな感じ。 改造元は、SAS9.4かで出て来ている、UTF-8でのバッチ実行のを見てです。まあ、要は拡張子連動の所で、明示的にコマンドを書いて上げるのです。 一応レジストリをなぶるので自己責任でどうぞ、とはいうけど、これぐらいはいじれるようになってた…

SASの移行問題アレコレ。

メモ書き。 クロスプラットフォームなのは、「データセット」だけ。 大変残念なお話ではある。 本質的に単なるテキストファイルなのでどうしようもないSASプログラムの問題はおいておくとしても。 非互換なのが、SASカタログ形式も含まれるのが地味に痛い。 …

SAS Enterprise Guideの「予期せぬエラー」「SASの実行に失敗」する場合には、落ち着いて、以下の事をチェックしておいてほしい。

少しでも無駄な悩みが減りますように。 こういうトラブルって、人を渡り歩くと本当に大袈裟な話になってくからなあ・・・・・・。 プロファイルを間違えてないか SASサーバに紐付ける形でのEGの設定なのにプロファイルを使わないローカルの設定になっていな…

WORKライブラリをメモリ上に載せる方法。

SSDが安定するのですが。Fusion-IOとかの大容量SSDも出てますし、256GBでも問題ないですし。 メモリだと、大容量メモリに個人用PCだとそれほど対応していないというのもあります。家のマシンだとほぼ16GB積んでいるんですが、これから上になるとレアモノだっ…

Windows-1252にある文字のUTF-8に変換した時最大で3バイトになる。

タイトル通り。 いわゆるISO-8859-1、通称Latin-1というヤツであるが、これ、Windows上では拡張されWindows-1252というものになっている。 この拡張された部分に埋められた文字が、UTF-8では3バイトになるものがある。ダガーやダブルダガーとか。 shift_JIS…

SASインストールに関するTip幾つか。

多くの人が、「インストーラーに従ってインストールすれば問題ないよね?」的な発想でインストールされると思います。 特に問題がなければそれでだいたいは大丈夫です。間違ってません。 ただ、たまーに問題が発生するのですが、そこら辺を自力解決というに…

SASでのトランスコーディングあれこれ。

トランスコーディングは、大抵の場合、データセットの別環境への移送も含みます。 ので、そこら辺も絡めてちょっと言及しておきます。 前振りとして。 SASの文字変数は、固定長文字列としてバイト長で定義されています。その為、トランスコーディングに伴う…

XPORTファイルとは何ぞやというお話。

何だか騒がしくなってきた所ですが(超白々しい)、最近話題のSAS transport fileというのを簡単にご説明させて頂きます。 マニュアル(日本語) SAS 9.4 ファイルの移動とアクセス(PDF)をご参照下さい。 もうそこに書いてる事です。 全ての人に言います。 1…

EXPORTプロシージャを使わないCSVの出力方法。

EXPORTプロシージャを使ってCSVを出力するのも間違いではないが、EXPORTプロシージャ内でも同様のSASプログラムを生成しているので、それに合わせて簡易なプログラムを作ってみた。 サンプルであり、マクロ化はしていないけど、マクロ化も難しい話ではない。…

倍精度浮動小数点型の限界はあるよ、という話。

データステップ100万回 SAS新手一生: マクロ変数に数値をいれて戻すと誤差がでちゃう場合がある問題について考える話を見て。 しばしば、お客さんに説明しても理解してもらえないので超絶面倒臭い話の周りになるんですがね。 確かぼんやりとした記憶ですが、…

SASプログラムを特定ファイルに展開して実行する方法

前のエントリのコメント欄で希望のあった、 call executeについても、わかりにくいですね。putでコード生成して、%includeで実行って方法、聞いたことはありましたが、まだ自分でやったことはありませんでした。ぜひコード例を紹介していただけたら嬉しいで…

SASマクロプログラムの要諦

ネット見てると、SASプログラマーも数えるほどだけどそれなりにいるという事で、昔に比べて色々あるんだけど。 SASマクロ関数でのクォート処理は面倒な部類に入るのでマクロ言語でやるよりdataステップでマクロ変数を読み込む方法とかを使う方が幸せになれま…