DelphiからSASxptファイルにアクセスする(1)
いつの間にか、CDATAからSAS xptファイルへのアクセスコンポーネントがリリースされていました。
Delphi用のFireDAC Componentもしっかり用意されていた(&バグが修正されたらしい)ので、早速使ってみました。
(2020/10/14時点の最新はVer20.0 Build 7587です。その前のBuild7571にはバグがありますので注意してください)
まずは、CDATAからダウンロードします。
https://www.cdata.com/drivers/sasxpt/download/firedac/へアクセスし、DOWNLOAD BETAをクリックします。
メールアドレスを入力して、DOWNLOADをクリックします。
ダウンロードしたファイルを実行します
セットアップが始まります。ベータ版なので、リリースされた後、12週くらいで使用期限が来るようです。
同意を確認します
インストールフォルダを指定します
インストール対象のDelphiバージョンを指定します。私の環境ではDelphi10.3のみがインストールされているため、10.2と10.4のチェックは外しました。
スタートメニューフォルダを指定し、
インストールをおこないます。
インストールが完了したら、SASでxptファイルを作成します。
data test1; array v{100}; do i=1 to 100; do j=1 to 100; v{j}=i+j; end; output; end; drop i j; run; libname out xport 'c:\temp\test1.xpt'; proc copy in=work out=out mt=data; select test1; run; libname out clear;
PMDAの技術ガイドにもありますが、xptファイルを作成するためにはcportプロシージャではなく、xportエンジンを使用してライブラリ割り当てしたファイルにcopyする、という操作が必要になります。
作成されたデータセットはこんな感じです
続いて、Delphi側の設定です
新規VCLアプリケーションを作成し、
TFDConnectionをフォームに貼り付けます。
TFDConnectionのドライバIDにはCDataSASXpt、URIにはSAS xptファイルがあるフォルダを指定します。
URIはさながらXPTファイルに対するライブラリのようになるわけです。
さて、TFDConnectionでSQLスクリプトを実行してみます。
select * from test1;
あれれ、やっぱり直ってない(本当は100obsなので109rowsとなっている)
修正Buildはまだだったのかも…
まぁそれは置いておいて、SAS xportファイルなんて当局への提出用以外の用途ってあるんでしょうか。
古いバージョンの仕様を引きずって扱いづらいだけの旧規格、というイメージなんですが。
CDATA使うメリットとしてはデータストアからダイレクトにSAS xptファイル作って提出できるとか?
ぜひとも、CDATAさんにはSASデータセットにダイレクトアクセスできるコンポーネントを優先していただきたいものですお願いします。