我輩はブロガーではない。ネタもまだない

SASとかDelphiあたりの人様の役に立たないネタを提供します

CDATAにSAS.ds対応が来た! その2

はい、しつこすぎて直接ベータバージョンを送ってもらいました。

SAS Data Sets FireDAC Componentsについてのレビューは本家CDATA以外では唯一ではないかと(2021/6/11現在)

早速インストール、フォームに必要なコンポーネントをペタペタ貼り付けて検証しました。
検証内容がすごいボリュームになってしまったので結論をば。

  1. ODBC設定したり、SAS側でなにか設定したり一切していませんが、アクセスできました。OLEで接続を試した時以来のプチ感動。f:id:japelin:20210611182751p:plain(みんな大好きSASHELP.CLASS)
  2. SELECT、INSERT は大丈夫そう(JOINとか集約関数まだ試してない)
  3. update、deleteは動かない(はっきり言ってこれが致命的)
  4. パスワード付きデータセットはパスワードが無視される(考えようによっては
  5. 暗号化データセットは読めない(コマッタ)
  6. 圧縮データセットも読めない(コマッタ)
  7. SASデータセットにおける変数属性は取得できない(メタデータを別に作成しておく必要あり)
  8. CREATE TABLEはwlatin1固定なので困る(バグなのか)
  9. CREATEされたデータセットWin8 64bit、SAS9.4 M2で作成されたことになってる(多分開発バージョンがこれなんだろうなぁ、と)
  10. テーブル名がcase sensitiveなので、大文字小文字揃えないと正しく認識しない(まじかよ)
  11. DROP TABLEすると、空ファイルになり、SASで処理できなくなる。(データセットがDatabaseのように見立てると、table削除でそうなるのも理解できそう)

構築手順、それぞれの補足、解説は追って記事にする予定です。

CDATAにSAS.ds対応が来た!

昨日(6/3)のcdataのnewsメールの中にこんなものが…
f:id:japelin:20210604105228p:plain

来ました、ようやく来ました。ベータだけど、SAS datasett対応。
SAS XPTが未だベータなのも気になるけど)


早速ダウンロード(FireDAC)してみます!


メールアドレス等を入力して…Submit!




f:id:japelin:20210604105354p:plain


まだベータリリースできてないのか、12時間の間になにか問題が発生したのか。
仕方ない、もう少し待ちますかね。
仕事進めろってことですね。

MX Keys(KX800)のファームウェアアップデートに失敗

Logicool Optionsの最新版(正確には、新しいβ版ソフトウェア)がリリースされたという通知が来ていたのでアップデートをしてみました。

WindowsメニューかrLogicool Optionsを実行すると、アップデートのお知らせとともにファームウェアアップデートも表示されましたので、続行したところ、こんなことに
f:id:japelin:20210528170335j:plain


キーボードのランプは赤と緑に交互に点滅、

f:id:japelin:20210528170324j:plainf:id:japelin:20210528170326j:plain


再度使えるようになるまで結構かかりましたので備忘としてまとめておきます。
(キーボード汚ねぇ…)

続きを読む

0 obsのデータセットにobsを追加する

テンプレートで空のデータセットを使用することはよくあると思います。

このプログラムで作成されるテンプレートデータセットを使って

data a;
  length a b c 8;
  delete;
run;

f:id:japelin:20210524124132p:plain
こんな結果データセットを作成したいときはどうすればいいでしょうか。

続きを読む

FortiGateでIPSecVPN越しのsyslogサーバを指定する(GUI&CUI併用)

自拠点のFortiGateのログをIPSecVPNで接続したリモート環境にあるサーバに転送してみました。
(IPSecVPNが確立されていることが前提です)

FortiGateとサーバの接続は以下のような状況です

┌──────────────┐               ┌──────────────┐               ┌──────────────┐
│   FortiGate  │────────────── │   FortiGate  │───────────────│     QNAP     │
│    (SiteA)   │    IPSecVPN   │    (SiteB)   │      LAN      │ syslogServer │
│ 172.24.0.254 │               │ 192.168.1.1  │               │ 192.168.1.10 │
└──────────────┘               └──────────────┘               └──────────────┘
続きを読む

SAS UNICODE版での注意

よくUnicodeデータセットを読むときには、libnameステートメントでcvpオプションを指定して文字列サイズを拡張する必要がある、なんて言いますけど、別のエラーにぶち当たりました。


以下のコードはSAS日本語版で実行できるものです

data _null_;
  a='28apr2021'd;
  put a yymmdd10.;
  put a jdateymd14.;
  put a jnengo16.;
run;

2021/4/28を3種類のフォーマットで出力しています。
結果は以下のとおりです。
f:id:japelin:20210428122627p:plain


これを、SAS Unicode版で実行するとどうなるでしょうか。

f:id:japelin:20210428122637p:plain
エラーになりました。
幅が無効って言われちゃってます。


コメントアウトして実行してみると…
f:id:japelin:20210428122646p:plain

今度はjnengoフォーマットで「日」が出力されていません



これはちゃんと理由があって、日本語、つまりいわゆるダブルバイト文字は1文字2バイトというのが今までの常識でした。
しかしUNICODEでは、1文字3バイト(一部4バイト)のため、フォーマットの長さも変更する必要があります。

具体的には以下のように
jdateymdは年月日の3文字が含まれているため、3バイトを増やした17.に、
jnengoは年号、年月日の5文字が含まれているため、5バイト増やした21.にします。

data _null_;
  a='28apr2021'd;
  put a yymmdd10.;
  put a jdateymd17.;
  put a jnengo21.;
run;


f:id:japelin:20210428122658p:plain
これで正しく出力されました。


移行した後にjdateymdのようにエラーで止まってくれればいいんですが、jnengoのように、尻切れのようになってしまうと怖いですね。

SAS Software Depotの罠

SASをインストールする際、現在ではSAS Software Depotというものを使ってインストールすることが多くなりました。
以前はCDを10枚以上入れ替えたりしていたことを考えると、大変楽チンです。

SASのインストールディスクについては、メディアを希望すればDVDメディアが、ダウンロード形式を希望すればESD(ESD:Electronic Software Delivery)形式で入手することができます。

このダウンロード形式はメディア管理も不要でいきなりSoftware Depotの形式になるので扱いやすいのですが、罠が仕掛けられているので注意が必要です。(最近になってダウンロード回数制限が追加されたようです。M7だけなのか、M6以前も含めた全体でなのかは分かりませんが)

続きを読む