特集

Scalable Performance
Data Server
特集 Scalable Performance Data Server〜ユーザーの快適な環境を支えるデータサーバー〜〜ユーザーの快適な環境を支えるデータサーバー〜

Q&A

はじめに
今回ご紹介するSPD Server（Scalable Performance Data Server）

SASトレーニングのお知らせ

は、マルチユーザー対応のデータサーバーで、数多くあるSASシステムのプロダクトの中でも、特に、DWH（データウェアハウス）内に存在するデー

新刊マニュアルのご紹介

タの処理をつかさどるものとして位置づけられています。対象としては、比較的規模の大きなデータを扱っているサイト、特に、処理全体の中でディスクのI/O（入出力）にそのほとんどの時間を取られているサイトが挙げら

新教材販売開始のお知らせれます。このようなサイトにおいて、処理のボトルネックがディスクのI/Oにあると思われる環境、あるいはハードウェアの性能がありながらもそれを十最新リリース情報分に活用できていない環境などでは、
このSPD Serverを導入することによって、大幅なパフォーマンスの向上を図ることが可能となります。
また、個々のユーザーにおいても、日々扱うデータの量は増大し、その一方でマシンの性能も向上しています。こうした状況を受けて、SASシステム
バージョン9では、データへのアクセスに関する部分、すなわちエンジンにおいて、SPD Serverの持つ多彩な機能の一部を搭載することになりました。バージョン9のSPDEエンジン（Scalable Performance Data Engine）
は、SPD Serverと同様に、ユーザーが快適にデータを処理することに主眼を置いています。今回の特集では、SPDEエンジンの詳細よりも、SPD
Serverの基本的な動作や、SPD ServerとSPDEエンジンの違いを中心に解説します。これらについて理解しておくことは、今後SASシステム バー
ジョン9を使用して多様なデータを処理する際に、大きな助けとなるに違いありません。
なお、2002年12月現在、SPD Serverの最新バージョンは3.0（TSM3）で、SASシステム リリース8.2に対応しています。また、サポートされている環
境は、次のとおりです。
ハードウェアプラットフォーム
UNIX（AIX、HP-UX、Solaris、Compaq Tru64）

SMP対応
Windows NT、2000

今回は、
このSPD Serverについて、その機能を中心に次の順に説明しまBase SASソフトウェアで作成したデータセットをSPD Serverのテーブル

このように、複数のスレッドを生成することで、それらが複数のCPU間です。後半では、SPD Serverと関わる範囲で、バージョン9のSPDEエンジン

に変換

分散され、
またディスクに対しても効率的にアクセスできます。ただし、デについても簡単に触れることになります。

ィスクに対するI/Oは、実際にはRAIDやディスクコントローラーの構成も・SPD Serverの概要/* V8エンジンで、SASデータセットのためのライブラリを割り当てます。*/

・データサーバーとしての機能

libname v8lib '/sasdata';

関係するため、CPUごとにディスクが1対1で対応するということにはなりません。次に、実際にエンドユーザがSASシステムからSPD Serverに対・クライアントとサーバーの構成

してアクセスする上で、このマルチスレッドがどのような利点を持つか、・SPD ServerとSPDEエンジン/* SASSPDSエンジンを指定して、SPD Serverのドメインに対して *//* ライブラリを割り当てます。 */ウェア上で作成したデータセットをSPD Server上にテーブルとして保存

2. SPD Serverの概要

libname spdlib sasspds 'tmp'

し（処理1）、次にそのテーブルからある条件のもとに抽出を行ない（処2.1. 導入に適した環境

server=spdsrv.5150

理2と処理3）、最後にその抽出結果を別のテーブルとして保存する（処SPD Serverは、データの規模としては比較的大きなものを対象として

user='spduser' password='xxxxxx';ということについて説明します。たとえば、次の図では、Base SASソフト/* プロシジャの書式は、通常と同じです。 */に行ない、それらの結果を最後にまとめる（処理4）と効率を上げること

Serverのパフォーマンスはデータを参照するときに最大限に引き出されproc copy in=v8lib out=spdlib;ができる、ということに注目しましょう。

ます。たとえば、データの更新は週次/月次などの定期的なバッチ処理に

run;

データ5
（16MB）

データ6（12MB）

データ3（16MB）

データ4（16MB）

メタデータ

インデックスSPD Serverは、データの書き込みについては、並列処理をしません。上の図では、「データ1」のファイル、次に「データ2」のファイルというように、限られる、というデータを持つ環境などには適しています。このことは、逆「データ6」のファイルまで順に作成していきます。ここでは、「データ1」

並列処理に、頻繁な作成あるいは更新を必要とするデータには適さない、というこから「データ5」が16MB、「データ6」が12MBで、合計92MBとなります。
なお、上のプログラムの中で使用している「SASSPDSエンジン」については、「4.2. クライアント用のエンジン」で解説します。また、
「tmp」
（グレ

このように複数のディスクにまたがって作成することにより、読み込み時
処理1

シングルスレッド

処理2

処理3

処理4

には、並列処理が可能となります。なお、大規模な構成の場合には、上ーの部分）を指してSPD Serverの「ドメイン」という言葉使用しています

2.2. ハードウェアの設定

データ2（16MB）

ーブルの前半（処理2）と後半（処理3）というように作業を分担して同時ています。そのような用途に特化して機能を絞り込むことにより、SPD

その真価を発揮します。

データ1（16MB）

理4）、という一連の処理を想定しています。ここで、抽出についてはテいますが、機能の面ではデータの分析処理やクエリに対して最適化されとを意味しています。SPD Serverは、いったんデータを格納した後に、ファイルの分散が、これについては「3.2. ファイルの分散」で改めて解説します。

の図で1つのディスクとされているものが、さらにRAIDによって複数のデ
時間の短縮
処理1

マルチスレッド スレッド1

処理4

処理2

SPD Serverの機能を活かすためには、SMP（Symmetric Multiprocessing）

ィスクから構成されることもあります。ところで、上の図では、データのためのディスクが4つ、メタデータとインデックスのためのディスクが1つず対応のハードウェアおよびオペレーティングシステムが必要です。SMP

3. データサーバーとしての機能とは、1台のマシンに複数のCPUが搭載されたシステム形態を指します。

すでに触れているように、SPD Serverを使用する目的は、データを処理

この環境を前提として、SPD Serverは処理を分散し、パフォーマンスをする際のパフォーマンスの向上にあります。この章では、パフォーマンス

向上させることができます。また、後述するように、SPD Serverは、クラ向上を実現する機能、またデータサーバーとして持つ周辺の機能についイアント/サーバー・モデルを構成として持つので、クライアント側とサーて、掘り下げて説明します。

つとなっていますが、これはSPD Serverを起動する際に用意するファイ
スレッド2

処理3

ルの中にあるドメインの定義に基づきます。たとえば、次のように、デー
タのパスに4つの物理パスを記述し、そのそれぞれが別のディスクを指し

0

1

2

3

4
時間

バー側とのどちらにもソフトウェアをインストールする必要があり、サーバている場合には、上の図のような動作となります。
SPD Serverのドメイン定義

ー側では、インストール後に若干の設定も必要となります。さらに、SAS

3.1. 並列処理

上の図が示しているように、作業を分担して並列的に処理しているのが、の他のプロダクトと異なり、ハードウェアやオペレーティングシステムに並列処理とは、複数のデータ処理を同時に並行して行なうことを意味し、複数のスレッド（スレッド1とスレッド2）です。先の「マルチスレッド」の図対しても、適切な設定が必要です。SPD Serverは、ディスクのI/O、すな

SPD Serverの持つ機能のうちでも最も基本的で重要なものです。このと照らし合わせると、これらがそれぞれ別のCPUに対応することも分かり

わちハードウェアに大きく関わるため、ハードウェアの設定次第で、パフ

機能は、複数のスレッド（マルチスレッド）を生成することで実現されます。

ます。ユーザーからは、マルチスレッドによって並列処理が行なわれていォーマンスの伸びは大きく変わります。したがって、導入の際には、SPD

スレッドとは、プロセスよりも小さなプログラムを処理するための機構です。

ることは見えませんが、処理時間は短縮されます。SASシステム バージョ

libname=tmp pathname= /spddata/metaroptions="datapath=('/spddata/data1' '/spddata/data2''/spddata/data3' '/spddata/data4')
indexpath= '/spddata/index'";Serverによるファイルの分散をふまえたシステムによるRAID（ストライSPD Serverは、スレッドで動作することによってハードウェアの多様な

ン8以降、SAS/CONNECTソフトウェアの新機能として、MP CONNECT

ピングやミラーリングなど）の構成、
またハードウェアに合わせたオペレー

構成にも柔軟に対応できます。Base SASソフトウェアは、基本的に1つ（マルチプロセスCONNECT）が実装されています。この機能では、スレッ

ティングシステムの設定変更（UNIXにおけるカーネルの調整など）、とのプロセスにつき単一のスレッド（シングルスレッド）で動作するために、

ドではなくプロセスを複数生成することによって、並列処理が実現されいったシステム側に関する検討や配慮が必要となります。

マシンが複数のCPUを搭載している場合でも、SASシステムを複数起ています。この場合は、1つまたはいくつかのDATAステップやプロシジ

いての管理情報です。また、「インデックス」については「3.4. インデッ

動しない限りは、複数のマシンを有効に利用することができません。一ャを単位とし、並列化を行ないます。一方、SPD Serverがサポートするクス」で詳述します。

2.3. データへのアクセス

方SPD Serverでは、複数のスレッドそれぞれが複数のCPU上で処理をマルチスレッドでは、1つのDATAステップやプロシジャの中で並列処理

SPD Server上のデータに対するアクセスは、基本的にBase SASソフト

分担して実行することによって、処理をより短時間で完了することができがなされます。この違いを把握した上で、これらの機能を併用することは3.3. SQLパススルー

ウェア上におけるデータセットに対してのそれと同様です。外観上は、ます。また、複数のCPUを同時に利用できるので、ディスクのI/Oもそれ処理時間の短縮のためには非常に有効です。

SAS/ACCESSソフトウェアでは、パススルーと呼ばれる機能によって、

なお、先の図にあった「メタデータ」とは、SPD ServerのテーブルにつSQLで記述されたクエリをそのままデータベース（RDBMSなど）に引きBase SASソフトウェアのデータセットもSPD Serverのテーブルもほぼ同に応じて並行させられるため、後述のファイルの分散にも寄与し、パフォ

じです（ここでは、一般的なデータセットとSPD Serverのデータセットを区ーマンスの向上をもたらします。次の図は、プロセスとスレッドの関係、ま3.2. ファイルの分散

渡し、データベース側で処理を行ない、結果のみをSASシステム側で受別するために、便宜的に「テーブル」という言葉を使用しています）。 プ

たそれらとハードウェアの関係を示しています。

マルチスレッドとともにパフォーマンスの向上に大きく貢献するのが、ファイけ取るということが可能です。これによって、クライアントとサーバーの間ルを分散する機能です。通常、Base SASソフトウェアでは、1つのデータセの無駄なデータのやり取りをなくすことができます。SPD Serverにおい

マルチスレッド

ットが、ファイルシステム上の1つのファイルに対応します。これに対して、てもこの機能が実装され、また処理によってはマルチスレッドによって処ジャを記述することができます。また、後述のとおり、SQLプロシジャは

SPD Serverでは、1つのテーブルが設定に応じて自動的に複数のファイル

理されるので、より短時間で必要なデータを受け取ることができます。

SPD Serverに対するパススルーと呼ばれる機能もサポートしています。

に分割され保存されます。このようにファイルを複数に分けることによって、ログラム作成時も、Base SASソフトウェアと同じようにLIBNAMEステー
トメントでライブラリ参照名を割り当て、同じようにDATAステップやプロシ

この書式も、SAS/ACCESSソフトウェアと同様、基本的に業界標準の規格SQL92に準拠しています。並列処理やACL（アクセスコントロールリス

プロセス
スレッド

スレッド

スレッド

スレッド

並列処理の際に、各ファイルに対して同時にアクセスし、処理を行なうことが可能となります。次の図は、ファイルシステム上に用意された複数の物

ト）など機能の一部は、SPD Server独自の仕様であるため特別な書式に

理パスに対して、SPD Serverによって、どのようにファイルが分散されていなりますが、主に利用するのは管理者に限られます。エンドユーザーにとくかを示します。1つのテーブルをディスクに書き込んだときに、そのデータっては、SPD Serverへのアクセスに対し、特別な意識は不要です。ここで、

CPU1

CPU2

CPU3

CPU4

いて、下方のディスク部分を拡大したものにあたり、それぞれが「ディスク1」

ェアのデータセットをSPD Serverのテーブルに変換するプログラムを挙げます。次のように、LIBNAMEステートメントでそれぞれのエンジンを指定して、COPYプロシジャを使うことで、簡単に変換することができます。

の大きさと、
あらかじめ設定したファイルあたりのサイズに従って、複数のファイルに分けて格納されます。次の図は、先の「マルチスレッド」の図につ

データへのアクセスが容易であることを示す例として、Base SASソフトウ

ディスク

ディスク

ディスク

ディスク

等を表しています。例えば、データのサイズが92MB（メガバイト）、
ファイル
あたりのサイズが16MBとした場合、このように書き表すことができます。

今回は、このSPD Serverについて、その機能を中心に次の順に説明しまBase SASソフトウェアで作成したデータセットをSPD Serverのテーブル

このように、複数のスレッドを生成することで、それらが複数のCPU間です。後半では、SPD Serverと関わる範囲で、バージョン9のSPDEエンジン

に変換

分散され、
またディスクに対しても効率的にアクセスできます。ただし、デについても簡単に触れることになります。

ィスクに対するI/Oは、実際にはRAIDやディスクコントローラーの構成も・SPD Serverの概要/* V8エンジンで、SASデータセットのためのライブラリを割り当てます。*/

・データサーバーとしての機能

libname v8lib '/sasdata';

関係するため、CPUごとにディスクが1対1で対応するということにはなりません。次に、実際にエンドユーザがSASシステムからSPD Serverに対・クライアントとサーバーの構成

してアクセスする上で、このマルチスレッドがどのような利点を持つか、・SPD ServerとSPDEエンジン/* SASSPDSエンジンを指定して、SPD Serverのドメインに対して *//* ライブラリを割り当てます。 */ウェア上で作成したデータセットをSPD Server上にテーブルとして保存

2. SPD Serverの概要

libname spdlib sasspds 'tmp'

し（処理1）、次にそのテーブルからある条件のもとに抽出を行ない（処2.1. 導入に適した環境

server=spdsrv.5150

理2と処理3）、最後にその抽出結果を別のテーブルとして保存する（処SPD Serverは、データの規模としては比較的大きなものを対象として

user='spduser' password='xxxxxx';ということについて説明します。たとえば、次の図では、Base SASソフト/* プロシジャの書式は、通常と同じです。 */に行ない、それらの結果を最後にまとめる（処理4）と効率を上げること

Serverのパフォーマンスはデータを参照するときに最大限に引き出されproc copy in=v8lib out=spdlib;ができる、ということに注目しましょう。

ます。たとえば、データの更新は週次/月次などの定期的なバッチ処理に

run;

データ5
（16MB）

データ6（12MB）

データ3（16MB）

データ4（16MB）

メタデータ

インデックスSPD Serverは、データの書き込みについては、並列処理をしません。上の図では、「データ1」のファイル、次に「データ2」のファイルというように、限られる、というデータを持つ環境などには適しています。このことは、逆「データ6」のファイルまで順に作成していきます。ここでは、「データ1」

並列処理に、頻繁な作成あるいは更新を必要とするデータには適さない、というこから「データ5」が16MB、「データ6」が12MBで、合計92MBとなります。
なお、上のプログラムの中で使用している「SASSPDSエンジン」については、「4.2. クライアント用のエンジン」で解説します。また、
「tmp」
（グレ

このように複数のディスクにまたがって作成することにより、読み込み時
処理1

シングルスレッド

処理2

処理3

処理4

には、並列処理が可能となります。なお、大規模な構成の場合には、上ーの部分）を指してSPD Serverの「ドメイン」という言葉使用しています

2.2. ハードウェアの設定

データ2（16MB）

ーブルの前半（処理2）と後半（処理3）というように作業を分担して同時ています。そのような用途に特化して機能を絞り込むことにより、SPD

その真価を発揮します。

データ1（16MB）

理4）、という一連の処理を想定しています。ここで、抽出についてはテいますが、機能の面ではデータの分析処理やクエリに対して最適化されとを意味しています。SPD Serverは、いったんデータを格納した後に、ファイルの分散が、これについては「3.2. ファイルの分散」で改めて解説します。

の図で1つのディスクとされているものが、さらにRAIDによって複数のデ
時間の短縮
処理1

マルチスレッド スレッド1

処理4

処理2

SPD Serverの機能を活かすためには、SMP（Symmetric Multiprocessing）

ィスクから構成されることもあります。ところで、上の図では、データのためのディスクが4つ、メタデータとインデックスのためのディスクが1つず対応のハードウェアおよびオペレーティングシステムが必要です。SMP

3. データサーバーとしての機能とは、1台のマシンに複数のCPUが搭載されたシステム形態を指します。

すでに触れているように、SPD Serverを使用する目的は、データを処理

この環境を前提として、SPD Serverは処理を分散し、パフォーマンスをする際のパフォーマンスの向上にあります。この章では、パフォーマンス

向上させることができます。また、後述するように、SPD Serverは、クラ向上を実現する機能、またデータサーバーとして持つ周辺の機能についイアント/サーバー・モデルを構成として持つので、クライアント側とサーて、掘り下げて説明します。

つとなっていますが、これはSPD Serverを起動する際に用意するファイ
スレッド2

処理3

ルの中にあるドメインの定義に基づきます。たとえば、次のように、デー
タのパスに4つの物理パスを記述し、そのそれぞれが別のディスクを指し

0

1

2

3

4
時間

バー側とのどちらにもソフトウェアをインストールする必要があり、サーバている場合には、上の図のような動作となります。
SPD Serverのドメイン定義

ー側では、インストール後に若干の設定も必要となります。さらに、SAS

3.1. 並列処理

上の図が示しているように、作業を分担して並列的に処理しているのが、の他のプロダクトと異なり、ハードウェアやオペレーティングシステムに並列処理とは、複数のデータ処理を同時に並行して行なうことを意味し、複数のスレッド（スレッド1とスレッド2）です。先の「マルチスレッド」の図対しても、適切な設定が必要です。SPD Serverは、ディスクのI/O、すな

SPD Serverの持つ機能のうちでも最も基本的で重要なものです。このと照らし合わせると、これらがそれぞれ別のCPUに対応することも分かり

わちハードウェアに大きく関わるため、ハードウェアの設定次第で、パフ

機能は、複数のスレッド（マルチスレッド）を生成することで実現されます。

ます。ユーザーからは、マルチスレッドによって並列処理が行なわれていォーマンスの伸びは大きく変わります。したがって、導入の際には、SPD

スレッドとは、プロセスよりも小さなプログラムを処理するための機構です。

ることは見えませんが、処理時間は短縮されます。SASシステム バージョ

libname=tmp pathname= /spddata/metaroptions="datapath=('/spddata/data1' '/spddata/data2''/spddata/data3' '/spddata/data4')
indexpath= '/spddata/index'";Serverによるファイルの分散をふまえたシステムによるRAID（ストライSPD Serverは、スレッドで動作することによってハードウェアの多様な

ン8以降、SAS/CONNECTソフトウェアの新機能として、MP CONNECT

ピングやミラーリングなど）の構成、
またハードウェアに合わせたオペレー

構成にも柔軟に対応できます。Base SASソフトウェアは、基本的に1つ（マルチプロセスCONNECT）が実装されています。この機能では、スレッ

ティングシステムの設定変更（UNIXにおけるカーネルの調整など）、とのプロセスにつき単一のスレッド（シングルスレッド）で動作するために、

ドではなくプロセスを複数生成することによって、並列処理が実現されいったシステム側に関する検討や配慮が必要となります。

マシンが複数のCPUを搭載している場合でも、SASシステムを複数起ています。この場合は、1つまたはいくつかのDATAステップやプロシジ

いての管理情報です。また、「インデックス」については「3.4. インデッ

動しない限りは、複数のマシンを有効に利用することができません。一ャを単位とし、並列化を行ないます。一方、SPD Serverがサポートするクス」で詳述します。

2.3. データへのアクセス

方SPD Serverでは、複数のスレッドそれぞれが複数のCPU上で処理をマルチスレッドでは、1つのDATAステップやプロシジャの中で並列処理

SPD Server上のデータに対するアクセスは、基本的にBase SASソフト

分担して実行することによって、処理をより短時間で完了することができがなされます。この違いを把握した上で、これらの機能を併用することは3.3. SQLパススルー

ウェア上におけるデータセットに対してのそれと同様です。外観上は、ます。また、複数のCPUを同時に利用できるので、ディスクのI/Oもそれ処理時間の短縮のためには非常に有効です。

SAS/ACCESSソフトウェアでは、パススルーと呼ばれる機能によって、

なお、先の図にあった「メタデータ」とは、SPD ServerのテーブルにつSQLで記述されたクエリをそのままデータベース（RDBMSなど）に引きBase SASソフトウェアのデータセットもSPD Serverのテーブルもほぼ同に応じて並行させられるため、後述のファイルの分散にも寄与し、パフォ

じです（ここでは、一般的なデータセットとSPD Serverのデータセットを区ーマンスの向上をもたらします。次の図は、プロセスとスレッドの関係、ま3.2. ファイルの分散

渡し、データベース側で処理を行ない、結果のみをSASシステム側で受別するために、便宜的に「テーブル」という言葉を使用しています）。 プ

たそれらとハードウェアの関係を示しています。

マルチスレッドとともにパフォーマンスの向上に大きく貢献するのが、ファイけ取るということが可能です。これによって、クライアントとサーバーの間ルを分散する機能です。通常、Base SASソフトウェアでは、1つのデータセの無駄なデータのやり取りをなくすことができます。SPD Serverにおい

マルチスレッド

ットが、ファイルシステム上の1つのファイルに対応します。これに対して、てもこの機能が実装され、また処理によってはマルチスレッドによって処ジャを記述することができます。また、後述のとおり、SQLプロシジャは

SPD Serverでは、1つのテーブルが設定に応じて自動的に複数のファイル

理されるので、より短時間で必要なデータを受け取ることができます。

SPD Serverに対するパススルーと呼ばれる機能もサポートしています。

に分割され保存されます。このようにファイルを複数に分けることによって、ログラム作成時も、Base SASソフトウェアと同じようにLIBNAMEステー
トメントでライブラリ参照名を割り当て、同じようにDATAステップやプロシ

この書式も、SAS/ACCESSソフトウェアと同様、基本的に業界標準の規格SQL92に準拠しています。並列処理やACL（アクセスコントロールリス

プロセス
スレッド

スレッド

スレッド

スレッド

並列処理の際に、各ファイルに対して同時にアクセスし、処理を行なうことが可能となります。次の図は、ファイルシステム上に用意された複数の物

ト）など機能の一部は、SPD Server独自の仕様であるため特別な書式に

理パスに対して、SPD Serverによって、どのようにファイルが分散されていなりますが、主に利用するのは管理者に限られます。エンドユーザーにとくかを示します。1つのテーブルをディスクに書き込んだときに、そのデータっては、SPD Serverへのアクセスに対し、特別な意識は不要です。ここで、

CPU1

CPU2

CPU3

CPU4

いて、下方のディスク部分を拡大したものにあたり、それぞれが「ディスク1」

ェアのデータセットをSPD Serverのテーブルに変換するプログラムを挙げます。次のように、LIBNAMEステートメントでそれぞれのエンジンを指定して、COPYプロシジャを使うことで、簡単に変換することができます。

の大きさと、
あらかじめ設定したファイルあたりのサイズに従って、複数のファイルに分けて格納されます。次の図は、先の「マルチスレッド」の図につ

データへのアクセスが容易であることを示す例として、Base SASソフトウ

ディスク

ディスク

ディスク

ディスク

等を表しています。例えば、データのサイズが92MB（メガバイト）、
ファイル
あたりのサイズが16MBとした場合、このように書き表すことができます。

SQLパススルーのプログラム例
proc sql;
connect to sasspds (3.6. ACL（アクセスコントロールリスト）

態としては、次のものがあります。

ACLとは、SPD Serverが独自に管理する、ユーザーによるデータに対す

・直接の接続データサーバーとして機能するために重要な役割を果たしています。

るアクセス権限を設定する機能です。これらは、オペレーティングシステム

・ SAS/CONNECTソフトウェアを経由した、サーバー上のSASシステム

・spdsnsrvプロセスのユーザーや権限からは独立して扱われ、ライブラリ、
テーブル、列（カラム）

この出力の中で、特に、次の3つのプロセス（それぞれグレーの部分）が、・spdsservプロセスからの接続

dbq='tmp' server=spdsrv.5150

が権限設定の対象となります。管理者は、ユーザーまたはグループ単位で、・ODBCあるいはJDBCによる接続

・spdsbaseプロセス

user='spduser' password='xxxxxx'

読み込みや書き込みなどの許可を与えることができます。重要なデータがまた、その他の接続手段として、C言語に対応するAPIも提供されています。

以下で、それぞれのプロセスについて、詳しく見ていくことにしましょう。
4.3.1. ネームサーバー（spdsnsrvプロセス）);

不用意に削除されることを未然に防いだり、特定のユーザーのみを対象/* 括弧で囲われた部分が、サーバーに渡される部分です。 */としてデータを公開する、といったことを容易に実現することができます。

4.2. クライアント用のエンジン

select * from connection to sasspds (次のプログラムでは、SPD Serverの管理用に用意されたSPDOプロシジ

クライアント側（Base SASソフトウェア側）には、SPD Serverに接続す

SPD Serverに接続するクライアントは、
まずこのネームサーバーに接続

ャを使用して、テーブルに対してACLを設定しています。

るためのエンジン、SASSPDSエンジンが用意されています。クライアン

します。つまり、このネームサーバーは、クライアントとデータサーバーを

select * from tab1 where str1='a' and num1>0);

ACLを設定するプログラム

quit;

ト用のモジュールを設定した後には、V8エンジンなど、通常のBaseエン結ぶ窓口の役割を果たします。また、その一方で、データサーバーからは、

ジンと同様にデータに対してアクセスすることができます。このエンジン

そのサーバーが公開するドメインの登録を受け付けます。クライアントかを使用した接続方法は、次のとおりです。

らの接続を受けた際には、ここで登録された情報をもとにして、ユーザーが指定するドメインを実際にデータが存在するファイルシステム上の物/* ACLの設定ではSPDOプロシジャを使用します。 */3.4. インデックス
インデックスは、データを検索する際のパフォーマンスを向上させるためドメインに対するライブラリの割り当て（プログラム）

proc spdo lib=spdlib;に使われます。SPD Serverにおいても、Base SASソフトウェアと同様に、テーブル内の変数に対してインデックスを作成できます。インデック

たハイブリッドインデックスという方式を採用し、マルチスレッドと合わせ4.3.2. データサーバー（spdsservプロセス）

libname spdlib sasspds 'tmp'/* テーブルを作成したユーザーと同じグループにスの内部構造として、Base SASソフトウェアがB-treeという方式を採用しているのに対して、SPD ServerはB-treeとビットマップを組み合わせ

理パスに置き換えます。

set acluser;

属するユーザーにのみ参照を許可します。 */このプロセスは、
まず起動時にドメインの定義を読み取り、それをネーム

server=spdsrv.5150
user='spduser' password='xxxxxx';

サーバーに登録します。その後は、SPD Serverのデータにアクセスするために待機していますが、実際には、プロキシ（代理）のプロセスを起動

add acl tab1 / groupread;

し、そのプロキシにユーザーとデータの橋渡しを行なわせます。また、プ

quit;て、より高い検索効率を実現しています。また、インデックスには、作成

上記のように、LIBNAMEステートメントのエンジンに「SASSPDS」（グレー

時間がかかるという問題がありますが、SPD Serverは、インデックス作の部分）を指定し、続けてオプションとして、ドメイン、サーバー、SPD Server

ーを認証します。認証を受けたユーザーだけが、プロキシを経由してデー用のユーザー等を指定します。次に、このときのログを見てみましょう。

タにアクセスできます。データサーバー自体は、認証とプロキシ起動を処成の際もマルチスレッドでの並列処理を行なうため、より短時間で作業

3.7. データサーバーの管理を完了することができます。

その他、SPD Serverは、Base SASソフトウェアにはない、データ保守のための機能やユーティリティを用意しています。管理者はこれらを使用して、

インデックスを並列的に作成するプログラム/* インデックスの並列的な作成を有効にします。 */proc datasets lib=spdlib;
modify tab1;/* 単一インデックスVAR1とVAR2は、同時に作成されます。 */index create str1 num1;

理するだけなので、それ以外は常に待機状態にあり、複数のユーザーのドメインに対するライブラリの割り当て（ログ）

接続を受け持つことができます。

ユーザーアカウントの追加や削除、ファイルの整理、インデックスの保守などが実行できます。

%let spdsiasy=YES;

ロキシを起動する前には、先に述べたACLを利用して、接続するユーザ

NOTE: This is an production version of SPDS Engine

4.3.3. プロキシ（spdsbaseプロセス）

at SAS Version 8 level, TSM2

これは、データサーバーによって起動され、実際にデータにアクセスする

4. クライアントとサーバーの構成

NOTE: User spduser(ACL Group SPDGRP) connected to

役割を負ったプロセスです。ユーザーごとに独立してプロキシサーバー

ここでは、SPD Serverが、サーバーとして具体的にどのような構成をとってSPDS(HP-WIDE) 3.00 server at 192.168.1.1.

を立てることにより、あるプロキシに問題が発生した場合にも、他のユー

いるか、ということについて説明します。SPD Serverは、SAS/CONNECT

NOTE: ライブラリ参照名 SPDLIB を次のように割り当てました。

ザー、
ドメインの 接 続には影 響 が出ません。このプロセスは、S P D

ソフトウェアやSAS/SHAREソフトウェアと同じように、
クライアント/サーバ

エンジン : SASSPDS

Server起動時には見られませんが、ユーザーが接続した際に生成されまー・モデルを採用しています。このモデルにより、
コンピューター資源の分

物理名 : :256/spddata/meta/

す。接続後にSPD Serverに関するプロセスを確認してみましょう。

散が可能となるとともに、SPD Serverは、Base SASソフトウェアから独立して稼動することが可能になっています。

新たに起動されるspdsbaseプロセス（HP-UXの出力を一部編集）
ログ上には、Base SASソフトウェアでの一般的なライブラリの割り当て/* 複合インデックスIDX1とIDX2は、同時に作成されます。 */4.1. クライアント/サーバー・モデルとは多少異なった、一連の情報、ユーザーなど（グレーの部分）が表示さ$ ps -ef | grep spds

SPD Serverを、
クライアント側とサーバー側というように機能的に分割すれます。このとき、認証に失敗した場合には、その旨のエラーメッセージ

spdadm 2501

1

16:30:00 spdsnsrv -listenport 5150 ...

ることによって、それぞれの役割を活かすことが可能となり、クライアントが表示されます。なお、上記のログの「/spddata/meta/」は、「3.2. フspdadm 2503

1

16:30:05 spdsserv -nameserverport 5150

側のエンドユーザーは、高性能のサーバーに処理を実行させることができ

ァイルの分散」でのドメイン定義の中にある、メタデータへの物理パスと...

なお、SPD Serverは、
インデックスを管理するためのユーティリティixutil

ます。これはまた、スタンドアローン環境で動作するSPDEエンジンと大きなります。また、「256」は、このライブラリの処理を受け持つサーバープ

spdadm 2505 2503

16:30:05 spdslogを用意しています。このユーティリティにより、ディスク容量の節約と検索

く異なる点でもあります。

ロセスのPID（プロセスID）となります。詳細については、「4.3.3. プロキ

spdadm 2506

1

16:30:07 spdssnet -listenport 5151

シ（spdsbaseプロセス）」で説明します。

spdadm 2507 2503

16:30:17 spdsbase ... 0.0.0.0 ...

spdadm 2601 2503

16:35:00 spdsbase ... 192.168.1.1 ...

index create idx1=(str1 num1) idx2=(str2num2);
quit;

パフォーマンスの向上とを意図したインデックスの再構成、
インデックス構造の確認などが容易に実行できます。

SPD Serverの構成

50985 ...

4.3. サーバープロセス
3.5. ソート処理
ソート処理においても、SPD Serverは指定に応じて並列処理を行ないます。SPD Serverでは、ソートのアルゴリズムについて、
ヒープソートとクイ
ックソートのいずれかを指定する（SPDSSTYPマクロ変数）
ことができます。
デフォルト（何も指定しない場合）は、
ヒープソートとなります。それぞれのクライアントマシンSAS

サーバーマシン
SAS/CONNECT

SAS
直接

クライアントマシン

直接

SPD Server

サーバー側では、クライアントから処理を受けるためのサーバープロセスをあらかじめ起動しておきます。SPD Serverに関係するプロセスを表示してみましょう。

ロセスに加えて、もう1つspdsbaseプロセス（グレーの部分）が新たに起動されているプロセス（HP-UXの出力を一部編集）

ロセスIDは2601）が機能しなくなったとしても、spdsserv（プロセスID$ ps -ef | grep spds

は、
クイックソートのみとなっています。また、Implicitソートという機能を搭

クライアントマシン

載することによって、ソートされていないテーブルに対してBYステートメン

ODBC/JDBCODBC/JDBC

トを指定した場合にも、暗黙的に（implicitly）ソートを実行できます。
上記の図のように、
クライアントマシンの側からSPD Serverへの接続形起動されています。また、ここでは、IPアドレスが192.168.1.1（グレーの部分）のクライアントからの接続であることが分かります。このプロセス（プSAS

アルゴリズムに、長所と短所がありますが、並列処理をサポートしているのこの出力に見られるように、サーバー起動時に生成されるspdsbaseプ

spdadm 2501

1

16:30:00

spdsnsrv -listenport 5150 ...

は2503）自体は影響されないので、他のクライアントからの接続を受け

spdadm 2503

1

16:30:05

spdsserv -nameserverport 5150 ...

続けることができます。

spdadm 2505 2503

16:30:05

spdslog

spdadm 2506

1

16:30:07

spdssnet -listenport 5151

spdadm 2507 2503

16:30:17

spdsbase ... 0.0.0.0 ...

50985 ...

SQLパススルーのプログラム例
proc sql;
connect to sasspds (3.6. ACL（アクセスコントロールリスト）

態としては、次のものがあります。

ACLとは、SPD Serverが独自に管理する、ユーザーによるデータに対す

・直接の接続データサーバーとして機能するために重要な役割を果たしています。

るアクセス権限を設定する機能です。これらは、オペレーティングシステム

・ SAS/CONNECTソフトウェアを経由した、サーバー上のSASシステム

・spdsnsrvプロセスのユーザーや権限からは独立して扱われ、ライブラリ、
テーブル、列（カラム）

この出力の中で、特に、次の3つのプロセス（それぞれグレーの部分）が、・spdsservプロセスからの接続

dbq='tmp' server=spdsrv.5150

が権限設定の対象となります。管理者は、ユーザーまたはグループ単位で、・ODBCあるいはJDBCによる接続

・spdsbaseプロセス

user='spduser' password='xxxxxx'

読み込みや書き込みなどの許可を与えることができます。重要なデータがまた、その他の接続手段として、C言語に対応するAPIも提供されています。

以下で、それぞれのプロセスについて、詳しく見ていくことにしましょう。
4.3.1. ネームサーバー（spdsnsrvプロセス）);

不用意に削除されることを未然に防いだり、特定のユーザーのみを対象/* 括弧で囲われた部分が、サーバーに渡される部分です。 */としてデータを公開する、といったことを容易に実現することができます。

4.2. クライアント用のエンジン

select * from connection to sasspds (次のプログラムでは、SPD Serverの管理用に用意されたSPDOプロシジ

クライアント側（Base SASソフトウェア側）には、SPD Serverに接続す

SPD Serverに接続するクライアントは、
まずこのネームサーバーに接続

ャを使用して、テーブルに対してACLを設定しています。

るためのエンジン、SASSPDSエンジンが用意されています。クライアン

します。つまり、このネームサーバーは、クライアントとデータサーバーを

select * from tab1 where str1='a' and num1>0);

ACLを設定するプログラム

quit;

ト用のモジュールを設定した後には、V8エンジンなど、通常のBaseエン結ぶ窓口の役割を果たします。また、その一方で、データサーバーからは、

ジンと同様にデータに対してアクセスすることができます。このエンジン

そのサーバーが公開するドメインの登録を受け付けます。クライアントかを使用した接続方法は、次のとおりです。

らの接続を受けた際には、ここで登録された情報をもとにして、ユーザーが指定するドメインを実際にデータが存在するファイルシステム上の物/* ACLの設定ではSPDOプロシジャを使用します。 */3.4. インデックス
インデックスは、データを検索する際のパフォーマンスを向上させるためドメインに対するライブラリの割り当て（プログラム）

proc spdo lib=spdlib;に使われます。SPD Serverにおいても、Base SASソフトウェアと同様に、テーブル内の変数に対してインデックスを作成できます。インデック

たハイブリッドインデックスという方式を採用し、マルチスレッドと合わせ4.3.2. データサーバー（spdsservプロセス）

libname spdlib sasspds 'tmp'/* テーブルを作成したユーザーと同じグループにスの内部構造として、Base SASソフトウェアがB-treeという方式を採用しているのに対して、SPD ServerはB-treeとビットマップを組み合わせ

理パスに置き換えます。

set acluser;

属するユーザーにのみ参照を許可します。 */このプロセスは、
まず起動時にドメインの定義を読み取り、それをネーム

server=spdsrv.5150
user='spduser' password='xxxxxx';

サーバーに登録します。その後は、SPD Serverのデータにアクセスするために待機していますが、実際には、プロキシ（代理）のプロセスを起動

add acl tab1 / groupread;

し、そのプロキシにユーザーとデータの橋渡しを行なわせます。また、プ

quit;て、より高い検索効率を実現しています。また、インデックスには、作成

上記のように、LIBNAMEステートメントのエンジンに「SASSPDS」（グレー

時間がかかるという問題がありますが、SPD Serverは、インデックス作の部分）を指定し、続けてオプションとして、ドメイン、サーバー、SPD Server

ーを認証します。認証を受けたユーザーだけが、プロキシを経由してデー用のユーザー等を指定します。次に、このときのログを見てみましょう。

タにアクセスできます。データサーバー自体は、認証とプロキシ起動を処成の際もマルチスレッドでの並列処理を行なうため、より短時間で作業

3.7. データサーバーの管理を完了することができます。

その他、SPD Serverは、Base SASソフトウェアにはない、データ保守のための機能やユーティリティを用意しています。管理者はこれらを使用して、

インデックスを並列的に作成するプログラム/* インデックスの並列的な作成を有効にします。 */proc datasets lib=spdlib;
modify tab1;/* 単一インデックスVAR1とVAR2は、同時に作成されます。 */index create str1 num1;

理するだけなので、それ以外は常に待機状態にあり、複数のユーザーのドメインに対するライブラリの割り当て（ログ）

接続を受け持つことができます。

ユーザーアカウントの追加や削除、ファイルの整理、インデックスの保守などが実行できます。

%let spdsiasy=YES;

ロキシを起動する前には、先に述べたACLを利用して、接続するユーザ

NOTE: This is an production version of SPDS Engine

4.3.3. プロキシ（spdsbaseプロセス）

at SAS Version 8 level, TSM2

これは、データサーバーによって起動され、実際にデータにアクセスする

4. クライアントとサーバーの構成

NOTE: User spduser(ACL Group SPDGRP) connected to

役割を負ったプロセスです。ユーザーごとに独立してプロキシサーバー

ここでは、SPD Serverが、サーバーとして具体的にどのような構成をとってSPDS(HP-WIDE) 3.00 server at 192.168.1.1.

を立てることにより、あるプロキシに問題が発生した場合にも、他のユー

いるか、ということについて説明します。SPD Serverは、SAS/CONNECT

NOTE: ライブラリ参照名 SPDLIB を次のように割り当てました。

ザー、
ドメインの 接 続には影 響 が出ません。このプロセスは、S P D

ソフトウェアやSAS/SHAREソフトウェアと同じように、
クライアント/サーバ

エンジン : SASSPDS

Server起動時には見られませんが、ユーザーが接続した際に生成されまー・モデルを採用しています。このモデルにより、
コンピューター資源の分

物理名 : :256/spddata/meta/

す。接続後にSPD Serverに関するプロセスを確認してみましょう。

散が可能となるとともに、SPD Serverは、Base SASソフトウェアから独立して稼動することが可能になっています。

新たに起動されるspdsbaseプロセス（HP-UXの出力を一部編集）
ログ上には、Base SASソフトウェアでの一般的なライブラリの割り当て/* 複合インデックスIDX1とIDX2は、同時に作成されます。 */4.1. クライアント/サーバー・モデルとは多少異なった、一連の情報、ユーザーなど（グレーの部分）が表示さ$ ps -ef | grep spds

SPD Serverを、
クライアント側とサーバー側というように機能的に分割すれます。このとき、認証に失敗した場合には、その旨のエラーメッセージ

spdadm 2501

1

16:30:00 spdsnsrv -listenport 5150 ...

ることによって、それぞれの役割を活かすことが可能となり、クライアントが表示されます。なお、上記のログの「/spddata/meta/」は、「3.2. フspdadm 2503

1

16:30:05 spdsserv -nameserverport 5150

側のエンドユーザーは、高性能のサーバーに処理を実行させることができ

ァイルの分散」でのドメイン定義の中にある、メタデータへの物理パスと...

なお、SPD Serverは、
インデックスを管理するためのユーティリティixutil

ます。これはまた、スタンドアローン環境で動作するSPDEエンジンと大きなります。また、「256」は、このライブラリの処理を受け持つサーバープ

spdadm 2505 2503

16:30:05 spdslogを用意しています。このユーティリティにより、ディスク容量の節約と検索

く異なる点でもあります。

ロセスのPID（プロセスID）となります。詳細については、「4.3.3. プロキ

spdadm 2506

1

16:30:07 spdssnet -listenport 5151

シ（spdsbaseプロセス）」で説明します。

spdadm 2507 2503

16:30:17 spdsbase ... 0.0.0.0 ...

spdadm 2601 2503

16:35:00 spdsbase ... 192.168.1.1 ...

index create idx1=(str1 num1) idx2=(str2num2);
quit;

パフォーマンスの向上とを意図したインデックスの再構成、
インデックス構造の確認などが容易に実行できます。

SPD Serverの構成

50985 ...

4.3. サーバープロセス
3.5. ソート処理
ソート処理においても、SPD Serverは指定に応じて並列処理を行ないます。SPD Serverでは、ソートのアルゴリズムについて、
ヒープソートとクイ
ックソートのいずれかを指定する（SPDSSTYPマクロ変数）
ことができます。
デフォルト（何も指定しない場合）は、
ヒープソートとなります。それぞれのクライアントマシンSAS

サーバーマシン
SAS/CONNECT

SAS
直接

クライアントマシン

直接

SPD Server

サーバー側では、クライアントから処理を受けるためのサーバープロセスをあらかじめ起動しておきます。SPD Serverに関係するプロセスを表示してみましょう。

ロセスに加えて、もう1つspdsbaseプロセス（グレーの部分）が新たに起動されているプロセス（HP-UXの出力を一部編集）

ロセスIDは2601）が機能しなくなったとしても、spdsserv（プロセスID$ ps -ef | grep spds

は、
クイックソートのみとなっています。また、Implicitソートという機能を搭

クライアントマシン

載することによって、ソートされていないテーブルに対してBYステートメン

ODBC/JDBCODBC/JDBC

トを指定した場合にも、暗黙的に（implicitly）ソートを実行できます。
上記の図のように、
クライアントマシンの側からSPD Serverへの接続形起動されています。また、ここでは、IPアドレスが192.168.1.1（グレーの部分）のクライアントからの接続であることが分かります。このプロセス（プSAS

アルゴリズムに、長所と短所がありますが、並列処理をサポートしているのこの出力に見られるように、サーバー起動時に生成されるspdsbaseプ

spdadm 2501

1

16:30:00

spdsnsrv -listenport 5150 ...

は2503）自体は影響されないので、他のクライアントからの接続を受け

spdadm 2503

1

16:30:05

spdsserv -nameserverport 5150 ...

続けることができます。

spdadm 2505 2503

16:30:05

spdslog

spdadm 2506

1

16:30:07

spdssnet -listenport 5151

spdadm 2507 2503

16:30:17

spdsbase ... 0.0.0.0 ...

50985 ...

4.3.4. SNETサーバー（spdssnetプロセス）

まず、構成面における違いとして、SPD Serverがクライアント/サーバー・モ

ストアドマクロという言葉を聞いたことがありますが、DATAス

このサーバーは、ODBCやJDBCを経由してクライアントから接続する際デルをとっているのに対して、SPDEエンジンは、
スタンドアローン環境に特

テップにおいても、
あらかじめプログラムをコンパイルして保に使われます。これによって、クライアント側にSASシステムを導入して化されている、ということを挙げることができます。したがって、SPDEエンジ

存しておくことは可能でしょうか。

いない場合でも、SPD Serverを利用することができます。ただし、SPDンでは、それに対応するサーバーを起動するということはありません。処理を
通常、DATAステップでプログラムをサブミットすると、SAS

Serverは、
クライアントとしてSASシステムを利用するように最適化され実行させる側とその処理を実際に実行する側という区別もありません。そのているので、最大限のパフォーマンスを得るためには、クライアント側に分、個人で気軽に使用することができ、また複雑な管理も不要になる、
とい●ストアドマクロの使用法

SASシステムを導入する必要があります。この形態の接続を利用しない

う利点があります。位置づけとしてはBaseエンジンを拡張するものとなります。

●ストアドプログラムの作成方法

場合には、
このサーバーを起動しておく必要はありません。

●V8で外部ファイルを作成する場合、
SPDEエンジンを使用する構成

値をダブルクォーテーションで囲んで出力する方法

4.3.5. ログの管理（spdslogプロセス）●%IFマクロプログラミングステートメントにてスタンドアローンマシン
SAS

その他、
これまでの諸サーバープロセスとは別に、SPD Serverに対する小数点を含む式を評価する方法

システムはプログラムをコンパイルし、その後に実行します
が、ストアドプログラムはすでにコンパイル済みのため、コンパイルせずに直接実行することが可能です。したがって、多くのステー
トメントを含むDATAステップをストアドプログラムとして作成すれば、コンパイル時間を節約できるため、プログラムの実行時間が短縮されます。
また、ストアドプログラムの実行時に、元のプログラムで指定した入・出●LAG関数を使用したプログラムの注意点

力データセット名を変更することも可能です。定型的な処理を行なうのプロセスによって、所定の場所にログを書き出されるので、管理者は、●値の順番に応じて一定の割合でオブザベーションを取り出す方法

DATAステップを頻繁に使用する場合に向いている機能といえます。以いつどのユーザーによって、どのようなアクセスがあったのかを確認する●GPLOTプロシジャで、複数の参照線の色や線種を

下は、ストアドプログラムの作成、および実行例です。

アクセスのログを記録するために、spdslogプロセスが起動されます。こSPDEエンジン

ことができます。たとえば、次のような一連のアクセスがあった際に、ログ個別に指定する方法に書き出される情報を見てみましょう。

●Windows XP上でのSASシステムの利用について

1. あるクライアントがライブラリを割り当ててデータサーバーへ接続

また、機能面から見た場合、SPDEエンジンは、SPD Serverの機能の一

2. テーブルの作成

部を省略したものとなっています。主要な機能である、マルチスレッドや、

3. 作成したテーブルに対するACLの設定

ファイルの分散をサポートしているので、パフォーマンスの向上は十分●方程式の解法

4. そのテーブルの読み込み

期待することができます。ただし、SQLパススルーやACLといった機能は、●ロジスティック回帰におけるタイプ3分析について

5. サーバーからの切断

クライアント/サーバー・モデルではないということもあり、省かれています。

SPD Serverのログ

SPD ServerとSPDEエンジンの比較一覧/** ストアドプログラムの作成 **/●SAS/AFソフトウェアで「名前を付けて保存する」のダイアログ画面を利用する方法/* PGM=に作成するストアドプログラム名を指定 */DATA store1 / PGM=makedata;
SET sashelp.class;
RUN;/** ストアドプログラムの実行 **/SPD Server

SPDEエンジン

クライアント/サーバー

スタンドアローン

12/09/02 15:22:00:(596) SPDSBASE- AUDIT:
Lib=/spddata/ Res=*LIBNAM*.DATA
Owner=(_NONE_._NONE_) User=SPDUSER
Access=(ASSIGN.ACCESS) Perms=(READ.READ) ACL=N

構成/* PGM=実行するストアドプログラム名を指定 */ファイルの分散○○

SQLパススルー○×

コンパイル済みのマクロを特定のディレクトリに保存しておき、

DATA PGM=makedata;

後で呼び出して実行することはできますか。

RUN;

マクロをコンパイルしてライブラリに保存するためには、
まず/** 出力データセット名を変更 **/MSTOREDシステムオプションを指定して、コンパイル済み

DATA PGM=makedata;

パラレルWHERE○○

パラレルグループBY○×

Lib=/spddata/ Res=TAB1.DATA Owner=(SPDUSER.)

ハイブリッドインデックス○○

テムオプションを使用して、マクロを保存するライブラリ参照名を指定します。

User=SPDUSER Access=(OPEN.OUTPUT)

Implicitソート○○

さらに、マクロの定義時にSTOREマクロステートメントオプションを指定す

Perms=(WRITE.WRITE) ACL=N

ACL

○

×

ることで、SASMSTORE＝システムオプションで指定したライブラリ内に

12/09/02 15:22:06:(596) SPDSBASE- AUDIT:

12/09/02 15:22:32:(588) SPDSSERV- OPER client

ロックレベルレコード

メンバー

connection from IP address: 192.168.1.1

カタログ

○

×

12/09/02 15:23:35:(588) SPDSSERV- SPDS OPER client

バックアップ○×

disconnected
12/09/02 15:23:35:(588) SPDSSERV- SPDS OPER client

マクロ機能を有効にします。その上で、SASMSTORE=シス/* store1(旧出力データセット) = store2(新出力データセット) */REDIRECT OUTPUT store1=sotre2;
RUN;

SASマクロカタログ「SASMACR」として保存することができます。
例1：コンパイル済みマクロ「sample」を「C:¥temp」ディレクトリに保存

なお、入力データセット名を変更する場合は、REDIRECTステートメントにするて以下を指定します。

6. おわりにIP address: 192.168.1.1

今回ご紹介したSPD Serverは、SASシステムの中で、分析処理や参照に

LIBNAME mylib 'C:¥temp';

12/09/02 15:23:37:(596) SPDSBASE- AUDIT:

使われるデータをユーザーに円滑に提供するリポジトリとして機能します。

OPTIONS MSTORED SASMSTORE=mylib;

Lib=/spddata/ Res=TAB1.DATA Owner=(SPDUSER.)

このソフトウェアを導入して有効に活用することによって、目的の結果をUser=SPDUSER Access=(OPEN.INPUT) Perms=(READ.READ)

快適に引き出すことができます。ここで快適というのは、エンドユーザーに

ACL=Y

不必要な待ち時間を与えないことであり、その点から、SPD Serverは、PROC PRINT DATA=sashelp.class;

12/09/02 15:23:41:(596) SPDSBASE- SAS client with

SASが提供する多くのプロダクトを裏で支える役割を担います。

RUN;

id=SPDUSER has disconnected

標準のBaseエンジン、SPD Serverに加え、バージョン9のSPDEエンジン

12/09/02 15:23:41:(596) SPDSBASE- SAS clientが登場し、SASシステムが保持するデータの形態は多様化します。今後、connection is terminated

用途に応じてこれら3種の中から最適なものを選択することの重要性は高12/09/02 15:23:41:(588) SPDSSERV- SPDS User

まります。これら使い分けることで、業務に必要とされる作業の時間を短%MACRO sample /STORE;

REDIRECT INPUT 旧入力データセット = 新入力データセット;

その際、新しく指定する入力データセットに含まれる変数の数や属性は、元の入力データセットに含まれているものと一致している必要があります。

%MEND sample;

SASシステム バージョン8を使用して、SASデータセットの内容をCSVファイルにしています。その際、文字変数のデータ
例2：例1で保存したコンパイル済みマクロ「sample」を呼び出すに「"（ダブルクォーテーション）」をつけた形で出力したいのですが、何かよい方法はありますか。

spduser, OS User spdadm, at node=localhost has

縮し、エンドユーザーに無駄な障害を感じさせないことが、システムの管理

disconnected者に対しては求められることとなるでしょう。SPD ServerおよびSPDEエ

LIBNAME mylib 'C:¥temp';

12/09/02 15:23:41:(588) SPDSSERV- SPDSBAS PID = 596

ンジンに関する情報は、以下の弊社および米国SASインスティチュート社

OPTIONS MSTORED SASMSTORE=mylib;

SASシステム バージョン8から、FILEステートメントにDSDオ

terminatedのホームページから参照できます。

%sampleプションを指定できるようになったため、CSVファイルを簡単■SPD Serverの概要（日本語）
http://www.sas.com/japan/software/sp̲data.html

5. SPD ServerとSPDEエンジン
すでに述べたように、SASシステム バージョン9からBase SASソフトウェアにもSPD Serverの一部の機能を持ったSPDEエンジンが搭載されます。まずは、SPD ServerとこのSPDEエンジンとの違いを説明します。

■SPD Serverの概要（英語）http://www.sas.com/products/spds/■SPDEエンジンの概要（英語）http://www.sas.com/service/library/onlinedoc/spde/に作成できます。なお、文字変数のデータに「"（ダブルクォ
ーテーション）」を追加するには、$QUOTEフォーマットが便利です。次のサンプルプログラムを参考にしてください。

4.3.4. SNETサーバー（spdssnetプロセス）

まず、構成面における違いとして、SPD Serverがクライアント/サーバー・モ

ストアドマクロという言葉を聞いたことがありますが、DATAス

このサーバーは、ODBCやJDBCを経由してクライアントから接続する際デルをとっているのに対して、SPDEエンジンは、
スタンドアローン環境に特

テップにおいても、
あらかじめプログラムをコンパイルして保に使われます。これによって、クライアント側にSASシステムを導入して化されている、ということを挙げることができます。したがって、SPDEエンジ

存しておくことは可能でしょうか。

いない場合でも、SPD Serverを利用することができます。ただし、SPDンでは、それに対応するサーバーを起動するということはありません。処理を
通常、DATAステップでプログラムをサブミットすると、SAS

Serverは、
クライアントとしてSASシステムを利用するように最適化され実行させる側とその処理を実際に実行する側という区別もありません。そのているので、最大限のパフォーマンスを得るためには、クライアント側に分、個人で気軽に使用することができ、また複雑な管理も不要になる、
とい●ストアドマクロの使用法

SASシステムを導入する必要があります。この形態の接続を利用しない

う利点があります。位置づけとしてはBaseエンジンを拡張するものとなります。

●ストアドプログラムの作成方法

場合には、
このサーバーを起動しておく必要はありません。

●V8で外部ファイルを作成する場合、
SPDEエンジンを使用する構成

値をダブルクォーテーションで囲んで出力する方法

4.3.5. ログの管理（spdslogプロセス）●%IFマクロプログラミングステートメントにてスタンドアローンマシン
SAS

その他、
これまでの諸サーバープロセスとは別に、SPD Serverに対する小数点を含む式を評価する方法

システムはプログラムをコンパイルし、その後に実行します
が、ストアドプログラムはすでにコンパイル済みのため、コンパイルせずに直接実行することが可能です。したがって、多くのステー
トメントを含むDATAステップをストアドプログラムとして作成すれば、コンパイル時間を節約できるため、プログラムの実行時間が短縮されます。
また、ストアドプログラムの実行時に、元のプログラムで指定した入・出●LAG関数を使用したプログラムの注意点

力データセット名を変更することも可能です。定型的な処理を行なうのプロセスによって、所定の場所にログを書き出されるので、管理者は、●値の順番に応じて一定の割合でオブザベーションを取り出す方法

DATAステップを頻繁に使用する場合に向いている機能といえます。以いつどのユーザーによって、どのようなアクセスがあったのかを確認する●GPLOTプロシジャで、複数の参照線の色や線種を

下は、ストアドプログラムの作成、および実行例です。

アクセスのログを記録するために、spdslogプロセスが起動されます。こSPDEエンジン

ことができます。たとえば、次のような一連のアクセスがあった際に、ログ個別に指定する方法に書き出される情報を見てみましょう。

●Windows XP上でのSASシステムの利用について

1. あるクライアントがライブラリを割り当ててデータサーバーへ接続

また、機能面から見た場合、SPDEエンジンは、SPD Serverの機能の一

2. テーブルの作成

部を省略したものとなっています。主要な機能である、マルチスレッドや、

3. 作成したテーブルに対するACLの設定

ファイルの分散をサポートしているので、パフォーマンスの向上は十分●方程式の解法

4. そのテーブルの読み込み

期待することができます。ただし、SQLパススルーやACLといった機能は、●ロジスティック回帰におけるタイプ3分析について

5. サーバーからの切断

クライアント/サーバー・モデルではないということもあり、省かれています。

SPD Serverのログ

SPD ServerとSPDEエンジンの比較一覧/** ストアドプログラムの作成 **/●SAS/AFソフトウェアで「名前を付けて保存する」のダイアログ画面を利用する方法/* PGM=に作成するストアドプログラム名を指定 */DATA store1 / PGM=makedata;
SET sashelp.class;
RUN;/** ストアドプログラムの実行 **/SPD Server

SPDEエンジン

クライアント/サーバー

スタンドアローン

12/09/02 15:22:00:(596) SPDSBASE- AUDIT:
Lib=/spddata/ Res=*LIBNAM*.DATA
Owner=(_NONE_._NONE_) User=SPDUSER
Access=(ASSIGN.ACCESS) Perms=(READ.READ) ACL=N

構成/* PGM=実行するストアドプログラム名を指定 */ファイルの分散○○

SQLパススルー○×

コンパイル済みのマクロを特定のディレクトリに保存しておき、

DATA PGM=makedata;

後で呼び出して実行することはできますか。

RUN;

マクロをコンパイルしてライブラリに保存するためには、
まず/** 出力データセット名を変更 **/MSTOREDシステムオプションを指定して、コンパイル済み

DATA PGM=makedata;

パラレルWHERE○○

パラレルグループBY○×

Lib=/spddata/ Res=TAB1.DATA Owner=(SPDUSER.)

ハイブリッドインデックス○○

テムオプションを使用して、マクロを保存するライブラリ参照名を指定します。

User=SPDUSER Access=(OPEN.OUTPUT)

Implicitソート○○

さらに、マクロの定義時にSTOREマクロステートメントオプションを指定す

Perms=(WRITE.WRITE) ACL=N

ACL

○

×

ることで、SASMSTORE＝システムオプションで指定したライブラリ内に

12/09/02 15:22:06:(596) SPDSBASE- AUDIT:

12/09/02 15:22:32:(588) SPDSSERV- OPER client

ロックレベルレコード

メンバー

connection from IP address: 192.168.1.1

カタログ

○

×

12/09/02 15:23:35:(588) SPDSSERV- SPDS OPER client

バックアップ○×

disconnected
12/09/02 15:23:35:(588) SPDSSERV- SPDS OPER client

マクロ機能を有効にします。その上で、SASMSTORE=シス/* store1(旧出力データセット) = store2(新出力データセット) */REDIRECT OUTPUT store1=sotre2;
RUN;

SASマクロカタログ「SASMACR」として保存することができます。
例1：コンパイル済みマクロ「sample」を「C:¥temp」ディレクトリに保存

なお、入力データセット名を変更する場合は、REDIRECTステートメントにするて以下を指定します。

6. おわりにIP address: 192.168.1.1

今回ご紹介したSPD Serverは、SASシステムの中で、分析処理や参照に

LIBNAME mylib 'C:¥temp';

12/09/02 15:23:37:(596) SPDSBASE- AUDIT:

使われるデータをユーザーに円滑に提供するリポジトリとして機能します。

OPTIONS MSTORED SASMSTORE=mylib;

Lib=/spddata/ Res=TAB1.DATA Owner=(SPDUSER.)

このソフトウェアを導入して有効に活用することによって、目的の結果をUser=SPDUSER Access=(OPEN.INPUT) Perms=(READ.READ)

快適に引き出すことができます。ここで快適というのは、エンドユーザーに

ACL=Y

不必要な待ち時間を与えないことであり、その点から、SPD Serverは、PROC PRINT DATA=sashelp.class;

12/09/02 15:23:41:(596) SPDSBASE- SAS client with

SASが提供する多くのプロダクトを裏で支える役割を担います。

RUN;

id=SPDUSER has disconnected

標準のBaseエンジン、SPD Serverに加え、バージョン9のSPDEエンジン

12/09/02 15:23:41:(596) SPDSBASE- SAS clientが登場し、SASシステムが保持するデータの形態は多様化します。今後、connection is terminated

用途に応じてこれら3種の中から最適なものを選択することの重要性は高12/09/02 15:23:41:(588) SPDSSERV- SPDS User

まります。これら使い分けることで、業務に必要とされる作業の時間を短%MACRO sample /STORE;

REDIRECT INPUT 旧入力データセット = 新入力データセット;

その際、新しく指定する入力データセットに含まれる変数の数や属性は、元の入力データセットに含まれているものと一致している必要があります。

%MEND sample;

SASシステム バージョン8を使用して、SASデータセットの内容をCSVファイルにしています。その際、文字変数のデータ
例2：例1で保存したコンパイル済みマクロ「sample」を呼び出すに「"（ダブルクォーテーション）」をつけた形で出力したいのですが、何かよい方法はありますか。

spduser, OS User spdadm, at node=localhost has

縮し、エンドユーザーに無駄な障害を感じさせないことが、システムの管理

disconnected者に対しては求められることとなるでしょう。SPD ServerおよびSPDEエ

LIBNAME mylib 'C:¥temp';

12/09/02 15:23:41:(588) SPDSSERV- SPDSBAS PID = 596

ンジンに関する情報は、以下の弊社および米国SASインスティチュート社

OPTIONS MSTORED SASMSTORE=mylib;

SASシステム バージョン8から、FILEステートメントにDSDオ

terminatedのホームページから参照できます。

%sampleプションを指定できるようになったため、CSVファイルを簡単■SPD Serverの概要（日本語）
http://www.sas.com/japan/software/sp̲data.html

5. SPD ServerとSPDEエンジン
すでに述べたように、SASシステム バージョン9からBase SASソフトウェアにもSPD Serverの一部の機能を持ったSPDEエンジンが搭載されます。まずは、SPD ServerとこのSPDEエンジンとの違いを説明します。

■SPD Serverの概要（英語）http://www.sas.com/products/spds/■SPDEエンジンの概要（英語）http://www.sas.com/service/library/onlinedoc/spde/に作成できます。なお、文字変数のデータに「"（ダブルクォ
ーテーション）」を追加するには、$QUOTEフォーマットが便利です。次のサンプルプログラムを参考にしてください。

（実際のdif2の計算）

1

-20

.

.

のオブザベーションを取り出したいのですが、どのような方法

待と異なる場合があります。なぜでしょうか。

2

-18

.

-18 - .

がありますか？

3

0

.

.

month

INPUT key $ a1 a2;
CARDS;

あるデータセットから、値のもっとも小さいものから10%程度

kion dif2

LAG関数をIFステートメントの中で使用した場合、結果が期DATA test;

001 1 1;

この現象は、LAG関数は、キューの操作、つまり値の保存

4

10

.

10 - .

RUN;

を「実行されたときだけ行なう」という性質を持っているた

5

20

.

.

めです。LAG関数は、nオブザベーション前の値を返すの

6

15

33

15 - (-18) (2回前のmonth=2でDATA_null_;

ではなく、LAG関数を実行するたびに蓄積されたキューのn個前の値を

SET

test;

返します。nオブザベーション前の値を取得するには、LAG関数を毎回

7

20

.

.

FILE

"c:¥temp¥test.csv" DSD;

実行して全ての値をキューに蓄積する必要があります。プログラムを例

8

28

18

28 - 10に説明します。下記のプログラムは、「前月との気温差をdif、偶数月のPUT

ときにはその直前の偶数月（その月の2月前）との気温差をdif2」と出力

9

22

.

.

することを目的として作ったプログラムです。

10

17

2

17 - 15

key a1 a2;

RUN;

こではRANKプロシジャとPERCENTオプションを利用する保存された値)

FORMAT key $QUOTE.;

11

10

.

.

12

2

-26

2 - 28/* サンプルデータ */(2回前のmonth=6で

dif = kion - LAG1(kion) ;IF（中略）%IF 2 > 12.0 %THEN %DO;

= INT(RANUNI(0)*100+1);

OUTPUT;
END;

期待しているとおりの結果を出力させる場合は、次のようなプログラムを/* 値の小さいものから 10% を抽出 */dif2 = kion - LAG2(kion) ;実行します。

PROC RANK DATA=sample OUT=outdata(WHERE=(rank<=10))
PERCENT ;DATALINES;

例2

北海道

2 -18

北海道

3

0

結果には、
当然FALSEを期待しているのですが、TRUEになってしまいます。

北海道

4

10

INPUT chiku $ month kion ;理由と回避方法を教えてください。

北海道

5

20

dif

北海道

6

15

dif2 = kion - LAG2(kion) ;IF

VAR tensu;
RANKS rank;
RUN;

DATA lag ;= kion - LAG1(kion) ;%IFマクロプログラミングステートメントでは、
マクロ式の自動

北海道

7

20

評価が行なわれるため（暗黙の%EVALマクロ関数を適用）、

北海道

8

28

小数点を含む値が指定されていると、%IFマクロプログラミン

北海道

9

22

DATALINES;

グステートメントが、マクロ式を文字列と判断します。そのため、FALSEを期

北海道 10

17

北海道

1 -20

待しているにも関わらず、結果はTRUEになってしまいます。小数点を含む

北海道 11

10

北海道

2 -18

マクロ式の評価を行なう場合には、以下のサンプルプログラム（マクロcheck）

北海道 12

2

北海道

3

0

のように、%SYSEVALFマクロ関数を明示的に指定する必要があります。

;

北海道

4

10

RUN;

北海道

5

20

北海道

6

15

北海道

7

20

北海道

8

28

北海道

9

22

（期待していたdif2の結果）

北海道 1017

MOD(month,2) THEN dif2 = . ; /* 奇数月の場合は欠損値 */

例：%sysevalfマクロ関数の指定
例1で作成されたデータセットlagの内容%MACRO check(fnum,ope,snum);/* %sysevalfマクロ関数を使用 */

month

kion

dif

dif2

%IF %SYSEVALF(&fnum &ope &snum) %THEN

1

-20

.

.

.

北海道 11

10

2

-18

2

.

-18 - （欠損値） = （欠損値）

北海道 12

2

PROC PRINT DATA=sashelp.class;

3

0

18

.

.

;

RUN;

4

10

10

.

10 - (-18) = 28

RUN;

%END;

5

20

10

.

.

%ELSE %DO;

%DO;

tensu

MOD(month,2) = 0 THEN

1 -20

OPTIONS MLOGIC;

DO student = 1 TO 100;

RUN;

北海道

（中略）

DATA sample;(2回前のmonth=8で保存された値)

DATA lag ;> 12.0」を比較しています。

RANKプロシジャにより作成された順番を、抽出条件として利用しています。

保存された値)

例1

INPUT chiku $ month kion ;方法をご紹介します。RANKプロシジャは、データセットの変数の値に順番をつけるプロシジャですが、PERCENTオプションを使うことで、百分率での順番をつけることができます。以下のプログラムでは、(2回前のmonth=4で保存された値)%IFマクロプログラミングステートメントにて、下記のように「2SORTプロシジャを利用して取り出すことも可能ですが、こ(2回前のLAGは存在しない)

6

15

-5

33

15 - 10 = 5

PROC CONTENTS DATA=sashelp.class;

7

20

5

.

.

RUN;

8

28

8

18

28 - 15 = 13

例2で作成されたデータセットlagの内容

%END;

9

22

-6

.

.

month

kion

dif

dif2

%MEND check;

10

17

-5

2

17 - 28 = -11

1

-20

.

.

%check(2,>,12.0)

11

10

-7

.

.

2

-18

2

.

12

2

-8

-26

2 - 17 = -15

3

0

18

.

4

10

10

28

5

20

10

.

6

15

-5

5

上記の結果からわかるように、dif2の結果は2ヶ月のものではなく、「2回前にLAG関数により保存された値との計算結果」となっています。

（以下省略）

（実際のdif2の計算）

1

-20

.

.

のオブザベーションを取り出したいのですが、どのような方法

待と異なる場合があります。なぜでしょうか。

2

-18

.

-18 - .

がありますか？

3

0

.

.

month

INPUT key $ a1 a2;
CARDS;

あるデータセットから、値のもっとも小さいものから10%程度

kion dif2

LAG関数をIFステートメントの中で使用した場合、結果が期DATA test;

001 1 1;

この現象は、LAG関数は、キューの操作、つまり値の保存

4

10

.

10 - .

RUN;

を「実行されたときだけ行なう」という性質を持っているた

5

20

.

.

めです。LAG関数は、nオブザベーション前の値を返すの

6

15

33

15 - (-18) (2回前のmonth=2でDATA_null_;

ではなく、LAG関数を実行するたびに蓄積されたキューのn個前の値を

SET

test;

返します。nオブザベーション前の値を取得するには、LAG関数を毎回

7

20

.

.

FILE

"c:¥temp¥test.csv" DSD;

実行して全ての値をキューに蓄積する必要があります。プログラムを例

8

28

18

28 - 10に説明します。下記のプログラムは、「前月との気温差をdif、偶数月のPUT

ときにはその直前の偶数月（その月の2月前）との気温差をdif2」と出力

9

22

.

.

することを目的として作ったプログラムです。

10

17

2

17 - 15

key a1 a2;

RUN;

こではRANKプロシジャとPERCENTオプションを利用する保存された値)

FORMAT key $QUOTE.;

11

10

.

.

12

2

-26

2 - 28/* サンプルデータ */(2回前のmonth=6で

dif = kion - LAG1(kion) ;IF（中略）%IF 2 > 12.0 %THEN %DO;

= INT(RANUNI(0)*100+1);

OUTPUT;
END;

期待しているとおりの結果を出力させる場合は、次のようなプログラムを/* 値の小さいものから 10% を抽出 */dif2 = kion - LAG2(kion) ;実行します。

PROC RANK DATA=sample OUT=outdata(WHERE=(rank<=10))
PERCENT ;DATALINES;

例2

北海道

2 -18

北海道

3

0

結果には、
当然FALSEを期待しているのですが、TRUEになってしまいます。

北海道

4

10

INPUT chiku $ month kion ;理由と回避方法を教えてください。

北海道

5

20

dif

北海道

6

15

dif2 = kion - LAG2(kion) ;IF

VAR tensu;
RANKS rank;
RUN;

DATA lag ;= kion - LAG1(kion) ;%IFマクロプログラミングステートメントでは、
マクロ式の自動

北海道

7

20

評価が行なわれるため（暗黙の%EVALマクロ関数を適用）、

北海道

8

28

小数点を含む値が指定されていると、%IFマクロプログラミン

北海道

9

22

DATALINES;

グステートメントが、マクロ式を文字列と判断します。そのため、FALSEを期

北海道 10

17

北海道

1 -20

待しているにも関わらず、結果はTRUEになってしまいます。小数点を含む

北海道 11

10

北海道

2 -18

マクロ式の評価を行なう場合には、以下のサンプルプログラム（マクロcheck）

北海道 12

2

北海道

3

0

のように、%SYSEVALFマクロ関数を明示的に指定する必要があります。

;

北海道

4

10

RUN;

北海道

5

20

北海道

6

15

北海道

7

20

北海道

8

28

北海道

9

22

（期待していたdif2の結果）

北海道 1017

MOD(month,2) THEN dif2 = . ; /* 奇数月の場合は欠損値 */

例：%sysevalfマクロ関数の指定
例1で作成されたデータセットlagの内容%MACRO check(fnum,ope,snum);/* %sysevalfマクロ関数を使用 */

month

kion

dif

dif2

%IF %SYSEVALF(&fnum &ope &snum) %THEN

1

-20

.

.

.

北海道 11

10

2

-18

2

.

-18 - （欠損値） = （欠損値）

北海道 12

2

PROC PRINT DATA=sashelp.class;

3

0

18

.

.

;

RUN;

4

10

10

.

10 - (-18) = 28

RUN;

%END;

5

20

10

.

.

%ELSE %DO;

%DO;

tensu

MOD(month,2) = 0 THEN

1 -20

OPTIONS MLOGIC;

DO student = 1 TO 100;

RUN;

北海道

（中略）

DATA sample;(2回前のmonth=8で保存された値)

DATA lag ;> 12.0」を比較しています。

RANKプロシジャにより作成された順番を、抽出条件として利用しています。

保存された値)

例1

INPUT chiku $ month kion ;方法をご紹介します。RANKプロシジャは、データセットの変数の値に順番をつけるプロシジャですが、PERCENTオプションを使うことで、百分率での順番をつけることができます。以下のプログラムでは、(2回前のmonth=4で保存された値)%IFマクロプログラミングステートメントにて、下記のように「2SORTプロシジャを利用して取り出すことも可能ですが、こ(2回前のLAGは存在しない)

6

15

-5

33

15 - 10 = 5

PROC CONTENTS DATA=sashelp.class;

7

20

5

.

.

RUN;

8

28

8

18

28 - 15 = 13

例2で作成されたデータセットlagの内容

%END;

9

22

-6

.

.

month

kion

dif

dif2

%MEND check;

10

17

-5

2

17 - 28 = -11

1

-20

.

.

%check(2,>,12.0)

11

10

-7

.

.

2

-18

2

.

12

2

-8

-26

2 - 17 = -15

3

0

18

.

4

10

10

28

5

20

10

.

6

15

-5

5

上記の結果からわかるように、dif2の結果は2ヶ月のものではなく、「2回前にLAG関数により保存された値との計算結果」となっています。

（以下省略）

GPLOTプロシジャでVREFオプションを使って複数の参照

SAS/AFソフトウェアの画面から、利用者が作成したファイル

線を描いています。参照線の色や線の種類を1本ずつ個別などを任意のフォルダ/ファイル名で保存できるようにしたいに指定できますか？

のですが、名前を付けて保存するようなダイアログ画面を利用するにはどうしたらよいでしょうか。

VREFオプション、およびHREFオプションで描かれる参照
線の色や線種を1本ずつ個別に指定することはできません。

実数解が1つ、（共役な）虚数解が2つ得られたことがわかります。

このとき、主効果を含む交互作用に対するパラメータは考慮されません。

2. SAS/ETSソフトウェアのMODELプロシジャい｣という帰無仮説を検定することになります。この場合は、交互作用のMODELプロシジャを用いると、連立方程式（線形、非線形）の「実数解」

効果を含めた上での検定を行なっています。以下に例として次のような

一方、PARAM=GLMオプションを用いると、｢主効果の水準に違いがなを求めることができます。次のプログラムは、連立方程式
このようなダイアログを表示するには、SCLステートメント

sqrt(x)-y=0

モデルを考えます。ここではｙを応答変数とし、AとBをそれぞれ２水準（'1'または'2'）からなる分類変数（主効果）とします。主効果Aに対するパラ

指 定できる参 照 線 の 色と線 種は、1 種 類です。しかし、でのFILEDIALOG関数を使用します。ファイルを保存する

3+2/x-y=0

メータはラベルがA1となりますので、このラベルを使ってTESTステート

ANNOTATE機能を使用すれば、1本ずつ参照線を描くことができます。

ための書き出し用のプッシュボタンなどを作成して、その定を解くものです。

メントを指定します。2つのTESTステートメントはPARAM=REFオプショ

下記の例を参考にしてください。

ンを指定した際のタイプ3分析と同じ結果が得られます。

義内で次のように指定します。
/**** サンプルプログラム ****/

例：縦軸の100, 150, 200に参照線を描く

rc=FILEDIALOG('SAVEAS',入力値用変数,' ',' ','*.*');/* サンプルデータの作成 */DATA a;INPUT x y @@;CARDS;
10

77 20 200 30 230

15 150 25 210 35 210;

data test;

proc logistic data=temp descending;

input a b @@;class A B / param=ref;cards;

freq count;以上の処理で、入力されたフォルダ名・ファイル名の戻り値が返る入力

3 2

model y=A|B / scale=none aggregate;

値変数名を参照して、ファイルを作成することが可能です。

;

A: test A1;/*PARAM=REF 効果Aに対する検定*/

注意：
当該ダイアログ（この場合はSAVEASなので「名前を付けて保存」）は、ユーザーがフォルダとファイル名を選択可能とし、選択された内容を変数に返しますが、そのまま保存はしません。
実際の保存操作は、別途戻り値を受け取った後に、保存するプログラムを実行する必要が
あります。

run;

B

: test B1;/*PARAM=REF 効果Bに対する検定*/

run;/*MODELプロシジャ*/proc model data=test;

RUN;

これに対し、PARAM=GLMを指定した際には、交互作用に対するパラメ/* ANNOTATEデータセットの作成 */DATA _anno;

FILEDIALOG関数の詳細については、SASシステムのヘルプから、キ/*方程式は、以下のようにeq.### = の形で記述する */ータのラベルA1B1も用いて以下のようにTESTステートメントを指定しまーワード「FILEDIALOG」を入力して確認できます。

eq.sqrtす。これにより、
タイプ3分析と同じ結果を出力することが可能となります。

LENGTH function $8;= sqrt(x) - y;eq.hyperbola = a + b / x - y;

RETAIN xsys '1' ysys '2' when 'a';/* SOLVEステートメントで解くべき変数を指定 */FUNCTION='move'; x=0;/* また、アウトプットウィンドウへ解を出力するため、SOLVEPRINTオプシ

y=100;OUTPUT;FUNCTION='draw'; x=100; y=100; line=10;
color='blue';

OUTPUT;

ョンも指定する*/

SASで方程式を解く方法を教えてください。

proc logistic data=temp descending;class A B / param=glm;
freq count;solve x y / solveprint;

model y=A|B / scale=none aggregate;run;/*PARAM=GLM 効果Aに対する検定*/

FUNCTION='draw'; x=100; y=150; line=3;

quit;

A

color='green';/**** ここまで ****//*PARAM=GLM 効果Bに対する検定*/

FUNCTION='move'; x=0;

y=150;OUTPUT;OUTPUT;FUNCTION='move'; x=0;

y=200;OUTPUT;

次の2つの方法で直接対応することができます。

B

FUNCTION='draw'; x=100; y=200; line=1;
color='red';

OUTPUT;

RUN;

1. SAS/IMLソフトウェアのPOLYROOT関数/**** 出力 ****/
Solution Values

きます。具体的には、次のようなプログラムになります。
/* ANNO=ANNOTATEデータセット名 */PLOT y*x;xy10.21329

3.19582/**** サンプルプログラム ****/
proc iml;

RUN;/**** ここまで ****/QUIT;: test 2*B1+A1B1;run;

POLYROOT関数を用いると、代数方程式の複素数解を求めることがで

PROC GPLOT DATA=a ANNO=_anno;: test 2*A1+A1B1;/* x^3- 2*x^2 + 5*x + 9=0「^」の後ろの数字は累乗を表す*/
coeff={1 -2 5 9};/* 次数の高い方から係数を記述。最後は定
数項 */なお、MODELプロシジャを利用した際には、解が2つ（2組）以上存在する

sol=polyroot(coeff);場合であっても、1つ（1組）の解しか得られません。MODELプロシジャの詳

print sol;細については、SAS/ETSソフトウェアのドキュメントをご参照ください。

/**** ここまで ****/

Windows XP上でSASシステムを使用できますか。
説明変数に交互作用を含むロジスティック回帰分析を行な
Windows XPについては、現在出荷中のSASシステム リ/**** 出力 ****/

リース8.2 TS2M0にて正式サポートしています。Windows/*解は3つ得られた。1列目が実部、2列目が虚部*/っています。その際に、CLASSステートメントのオプションとXPは、当初は正式サポート対象ではありませんでしたが、そしてPARAM=REFを指定した場合と、PARAM=GLMを指定した場合のタイプ3分析（Type III Analysis of Effects）の結果がの後の稼動確認作業を経て、サポート対象オペレーティングシステムに異なる場合があります。
どうしてでしょうか。

S

変更されました。ただし、32ビットのデスクトップ版のみとなります（サーバー版はサポート対象としていません）。また、オペレーティングシステム-1.080584の仕様により、Home Editionでは一部動作に制限が発生する場合が1.540292 2.4405594

分析を実行すると、検定対象の帰無仮説が分類変数のパあるため、Professional Editionの利用を推奨します。

1.540292 -2.440559

ラメータ化によって異なります。そのため、表示される結果/**** ここまで ****/

0

LOGISTICプロシジャにおいて交互作用を含めたタイプ3も違います。PARAM=REFオプションを指定した場合は、｢主効果に対するパラメータが0である｣という帰無仮説に対して検定を行ないます。

GPLOTプロシジャでVREFオプションを使って複数の参照

SAS/AFソフトウェアの画面から、利用者が作成したファイル

線を描いています。参照線の色や線の種類を1本ずつ個別などを任意のフォルダ/ファイル名で保存できるようにしたいに指定できますか？

のですが、名前を付けて保存するようなダイアログ画面を利用するにはどうしたらよいでしょうか。

VREFオプション、およびHREFオプションで描かれる参照
線の色や線種を1本ずつ個別に指定することはできません。

実数解が1つ、（共役な）虚数解が2つ得られたことがわかります。

このとき、主効果を含む交互作用に対するパラメータは考慮されません。

2. SAS/ETSソフトウェアのMODELプロシジャい｣という帰無仮説を検定することになります。この場合は、交互作用のMODELプロシジャを用いると、連立方程式（線形、非線形）の「実数解」

効果を含めた上での検定を行なっています。以下に例として次のような

一方、PARAM=GLMオプションを用いると、｢主効果の水準に違いがなを求めることができます。次のプログラムは、連立方程式
このようなダイアログを表示するには、SCLステートメント

sqrt(x)-y=0

モデルを考えます。ここではｙを応答変数とし、AとBをそれぞれ２水準（'1'または'2'）からなる分類変数（主効果）とします。主効果Aに対するパラ

指 定できる参 照 線 の 色と線 種は、1 種 類です。しかし、でのFILEDIALOG関数を使用します。ファイルを保存する

3+2/x-y=0

メータはラベルがA1となりますので、このラベルを使ってTESTステート

ANNOTATE機能を使用すれば、1本ずつ参照線を描くことができます。

ための書き出し用のプッシュボタンなどを作成して、その定を解くものです。

メントを指定します。2つのTESTステートメントはPARAM=REFオプショ

下記の例を参考にしてください。

ンを指定した際のタイプ3分析と同じ結果が得られます。

義内で次のように指定します。
/**** サンプルプログラム ****/

例：縦軸の100, 150, 200に参照線を描く

rc=FILEDIALOG('SAVEAS',入力値用変数,' ',' ','*.*');/* サンプルデータの作成 */DATA a;INPUT x y @@;CARDS;
10

77 20 200 30 230

15 150 25 210 35 210;

data test;

proc logistic data=temp descending;

input a b @@;class A B / param=ref;cards;

freq count;以上の処理で、入力されたフォルダ名・ファイル名の戻り値が返る入力

3 2

model y=A|B / scale=none aggregate;

値変数名を参照して、ファイルを作成することが可能です。

;

A: test A1;/*PARAM=REF 効果Aに対する検定*/

注意：
当該ダイアログ（この場合はSAVEASなので「名前を付けて保存」）は、ユーザーがフォルダとファイル名を選択可能とし、選択された内容を変数に返しますが、そのまま保存はしません。
実際の保存操作は、別途戻り値を受け取った後に、保存するプログラムを実行する必要が
あります。

run;

B

: test B1;/*PARAM=REF 効果Bに対する検定*/

run;/*MODELプロシジャ*/proc model data=test;

RUN;

これに対し、PARAM=GLMを指定した際には、交互作用に対するパラメ/* ANNOTATEデータセットの作成 */DATA _anno;

FILEDIALOG関数の詳細については、SASシステムのヘルプから、キ/*方程式は、以下のようにeq.### = の形で記述する */ータのラベルA1B1も用いて以下のようにTESTステートメントを指定しまーワード「FILEDIALOG」を入力して確認できます。

eq.sqrtす。これにより、
タイプ3分析と同じ結果を出力することが可能となります。

LENGTH function $8;= sqrt(x) - y;eq.hyperbola = a + b / x - y;

RETAIN xsys '1' ysys '2' when 'a';/* SOLVEステートメントで解くべき変数を指定 */FUNCTION='move'; x=0;/* また、アウトプットウィンドウへ解を出力するため、SOLVEPRINTオプシ

y=100;OUTPUT;FUNCTION='draw'; x=100; y=100; line=10;
color='blue';

OUTPUT;

ョンも指定する*/

SASで方程式を解く方法を教えてください。

proc logistic data=temp descending;class A B / param=glm;
freq count;solve x y / solveprint;

model y=A|B / scale=none aggregate;run;/*PARAM=GLM 効果Aに対する検定*/

FUNCTION='draw'; x=100; y=150; line=3;

quit;

A

color='green';/**** ここまで ****//*PARAM=GLM 効果Bに対する検定*/

FUNCTION='move'; x=0;

y=150;OUTPUT;OUTPUT;FUNCTION='move'; x=0;

y=200;OUTPUT;

次の2つの方法で直接対応することができます。

B

FUNCTION='draw'; x=100; y=200; line=1;
color='red';

OUTPUT;

RUN;

1. SAS/IMLソフトウェアのPOLYROOT関数/**** 出力 ****/
Solution Values

きます。具体的には、次のようなプログラムになります。
/* ANNO=ANNOTATEデータセット名 */PLOT y*x;xy10.21329

3.19582/**** サンプルプログラム ****/
proc iml;

RUN;/**** ここまで ****/QUIT;: test 2*B1+A1B1;run;

POLYROOT関数を用いると、代数方程式の複素数解を求めることがで

PROC GPLOT DATA=a ANNO=_anno;: test 2*A1+A1B1;/* x^3- 2*x^2 + 5*x + 9=0「^」の後ろの数字は累乗を表す*/
coeff={1 -2 5 9};/* 次数の高い方から係数を記述。最後は定
数項 */なお、MODELプロシジャを利用した際には、解が2つ（2組）以上存在する

sol=polyroot(coeff);場合であっても、1つ（1組）の解しか得られません。MODELプロシジャの詳

print sol;細については、SAS/ETSソフトウェアのドキュメントをご参照ください。

/**** ここまで ****/

Windows XP上でSASシステムを使用できますか。
説明変数に交互作用を含むロジスティック回帰分析を行な
Windows XPについては、現在出荷中のSASシステム リ/**** 出力 ****/

リース8.2 TS2M0にて正式サポートしています。Windows/*解は3つ得られた。1列目が実部、2列目が虚部*/っています。その際に、CLASSステートメントのオプションとXPは、当初は正式サポート対象ではありませんでしたが、そしてPARAM=REFを指定した場合と、PARAM=GLMを指定した場合のタイプ3分析（Type III Analysis of Effects）の結果がの後の稼動確認作業を経て、サポート対象オペレーティングシステムに異なる場合があります。
どうしてでしょうか。

S

変更されました。ただし、32ビットのデスクトップ版のみとなります（サーバー版はサポート対象としていません）。また、オペレーティングシステム-1.080584の仕様により、Home Editionでは一部動作に制限が発生する場合が1.540292 2.4405594

分析を実行すると、検定対象の帰無仮説が分類変数のパあるため、Professional Editionの利用を推奨します。

1.540292 -2.440559

ラメータ化によって異なります。そのため、表示される結果/**** ここまで ****/

0

LOGISTICプロシジャにおいて交互作用を含めたタイプ3も違います。PARAM=REFオプションを指定した場合は、｢主効果に対するパラメータが0である｣という帰無仮説に対して検定を行ないます。

「データ収集法とリサーチ手法、その解説と実践」●第2回 ：4月2日（水）SAS言語の基本的な仕様や概念の詳細は、「SAS言語：解説編 バージョン

担当講師：専修大学 商学部 奥瀬喜之 専任講師

8」を参照してください。なお、SASシステム リリース8.2導入時に提供され学習内容：データの種類（1次データと2次データ）、1次データの収集方

る「SASシステムV8e（リリース8.2）
インストレーションドキュメントメディア（CD-法（面接法、留置法、郵送法、インターネットによる方法など）、ROM）」には、
リリース8.2を使用する上で必要な「SASシステム リリース

2次データの収集方法（インターネットを使った検索など）、おSASトレーニングのお知らせ

よびリサーチの手法（定性調査と定量調査など）について説明します。また実戦的に使える手法を実際に幾つか選んでコ8.1の新機能」、「SASシステム リリース8.2の新機能」、「SAS言語：解説

新刊マニュアルのご紹介

編 バージョン8」、および同内容のPDF版マニュアルが含まれる予定です。

■発売中のマニュアル

SAS言語：解説編 バージョン8（仮題、日本語版）
注文番号：17375
価
格：未定

ンピュータを用いた実習を行なっていきます。

特別コース開催のお知らせ■ 「医学研究における経時データ解析」コース
日

程：3月19日（木）〜20日（金）（東京会場）

価

格：80,000円（サービスチケット捺印数4）※テキストは英語版を使用します（日程調整中）「リサーチ・プロセス、マーケティング・モデ●第3回：
ルの作り方」
担当講師：日本大学 経済学部 齊藤嘉一 専任講師

SASシステム リリース8.1の新機能（日本語版）
注文番号：10083
価
格：3,500円（税抜）

本書は、バージョン8以降のSAS言語の仕様と概念についてのマニュアル（「SAS
Language Reference: Concepts, Version 8」、注文番号： 57375）の翻学習内容：問題に対してどのようなプロセスで対応していくか、
リサーチ

本書は、SASシステム リリース8.1で追加、変更された機能についての解説訳版です。本書の内容は、「SASランゲージ リファレンス Version 6, First

受講対象：SASシステムによる統計解析に従事している方設計のプロセスを解説していきます。簡単なマーケティング・書（「What's New in SAS Software for Release 8.1」、注文番号：58017）

Edition」の「解説編」のバージョン8対応版となり、下記をはじめとする各

前提知識：「分散分析」コースを受講済みか、同程度の知識のある方モデルをつくるまでのプロセス、
その推定の仕方、アウトプットの翻訳版で、SASシステム リリース8.2を使用する場合も、本書の情報が必項目について詳細に解説しています。

学習内容：医薬統計専門家により、以下の内容で開催します。

の見方、モデル修正の仕方を解説します。つまり、データ収集

要となります。SAS/ETSソフトウェア、SAS/IMLソフトウェア、SAS/ORソフト

多くの医学研究においては、研究対象者ごとに時間を追って前の部分（マーケティング課題、
リサーチ・クエスチョン、仮説）

ウェア、SAS/QCソフトウェア、およびSAS/STATソフトウェアに関しては、
さ反応変数を繰り返し測定することがあり、このような研究は経の解説から始まって分析、考察までを学んでいきます。モデル

らに詳細な情報を解説した「Changes and Enhancements, Release 8.1

時観察研究などと呼ばれます。その研究目的の1つは、反応づくりの実践もコンピュータを用いた実習形式で行ないます。

（英語版）」が入手可能です（同内容のPDF版が、SASシステム リリース

変数と時間、治療効果あるいは他の説明変数との関係を定※日程についてはお問い合わせください。

量的に評価することです。同一対象者内の反応変数には相8.2導入時に提供される「What's New in SAS Release 8.1 and Release
8.2 Online Documentation」に含まれています）。なお本書では、原書記関が生じることから、統計的に妥当な推論を行なうためには測●第4回：4月17日（木）「分析事例」

載のCMS版、OpenVMS版、OS/2版SASシステムおよびSAS/GISソフト

定単位に起因する相関を考慮する必要があります。そのよう

担当講師：学習院大学 経済学部 上田隆穂 教授

ウェアの章を省略しています。なお、本書と同内容のPDF版は、SASシス

な反応変数間の相関を考慮する方法として、線型混合モデル

学習内容：この回では、実際にどのような問題意識において、どのようなおよび一般化推定方程式（GEE）による解析方法が近年注目

分析が行なわれたかを分析事例を通じて学んでいきます。分を浴びています。このコースでは、線型混合モデルと一般化

析の目的を設定し、そのためにはどのような分析プロセスをと推定方程式の理論的背景について講義し、実際の医学デーるべきかを事前にディスカッションし、その後実際に行なったタの解析を通してMIXEDプロシジャやGENMODプロシジャ分析の解説を行なっていきます。この回で用いた分析手法は、テム リリース8.2導入時に提供される「SASシステムV8e（リリース8.2）インストレーションドキュメントメディア（CD-ROM）」に含まれています。

・BYグループやWHERE式の処理
・SASシステムの基本概要
・システムパフォーマンスの最適化
・SASシステムの処理
・2バイト文字セット
・SAS言語におけるワードや規則
・SASデータセット/システムオプション ・DATAステップの処理
・生データの読み込み
・SAS入力形式/出力形式
・SASデータセットの読み込み・結合・変更
・SAS変数とSAS CALLルーチン
・配列処理
・SASステートメント
・ストアドプログラムの作成と実行
・SAS変数・DICTIONARYテーブル
・欠損値
・DBMSデータへのアクセス
・SAS式
・SAS日付値・SAS時間値・SAS日時値 ・バージョン8と旧バージョンとの互換性
・ファイル保護・エラー処理とデバッグ
・SAS入出力エンジン
・SAS出力の使用法について学びます。

知覚マップ、選好回帰、PSM、コンジョイント分析、
クラスター

SASシステム リリース8.2の新機能（日本語版）
注文番号：10084
価
格：3,500円（税抜）・線型混合モデルおよび一般化推定方程式（GEE）に関する分析、MDS、ニューラルネットワークを使った分析等です。手

本書は、SASシステム リリース8.2で追加、変更された機能についての解説

時に提供される「SASシステムV8e（リリース8.2）
インストレーションドキュメ

基本概念の説明

法自体よりも設定した分析テーマに対する分析の道筋、考え書（「What's New in SAS Software for Release 8.2」、注文番号：58025）

ントメディア（CD-ROM）」には、リリース8.2を使用する上で必要な「SASシ・MIXEDプロシジャやGENMODプロシジャの使用法方を学んでいきます。

の翻訳版で、SASシステム リリース8.2を使用する場合は本書の情報が必

ステム リリース8.1の新機能」、「SASシステム リリース8.2の新機能」、「SAS

SAS言語の個々の言語要素の詳細については、「SAS言語：リファレンス
編 バージョン8」を参照してください。なお、SASシステム リリース8.2導入

要になります。SAS/ASSISTソフトウェア、SAS/ETSソフトウェア、SAS/IML

言語：リファレンス編 バージョン8」、
および本書と同内容のPDF版マニュア

トレーニングニュース（受講料値下げ）

ソフトウェア、S A S / O Rソフトウェア、S A S / Q Cソフトウェア、およびルが含まれる予定です。

■「臨床データマネジメント」コースおよび「解析表作成」
コース アンケート実施

SAS/STATソフトウェアに関しては、
さらに詳細な情報を記載した「Changes

この春、下記の内容でマーケティングの業務に携わる方を対象としたトレーニングを開催する予定です。詳細については、弊社ホームページ「臨床データマネジメント」コースおよび「解析表作成」コースについて、PDF版が、SASシステム リリース8.2導入時に提供される「What's New in

毎月SASロゴ入りグッズを2アイテムピックアップし、キャンペーン価格に（http://www.sas.com/japan/training）をご参照いただくか、弊社トレー

今後コースの改訂を企画しています。そのため、受講されるみなさまに、従SAS Release 8.1 and Release 8.2 Online Documentation」に含まれててご提供しています。キャンペーン内容は毎月変更されますので、お見逃・医学分野における実データの解析■「マーケティング＆マーケティング・リサーチ・コース」（全4回）

ニング担当までお問い合わせください。

and Enhancements, Release 8.2（英語版）」が入手可能です（同内容の来のトレーニング内容に加え、コース終了時に詳細なアンケートのご協力います）。なお本書では、原書記載のCMS版、OpenVMS版、OS/2版SAS

しのないようお願いいたします。他にも多数取り揃えておりますので、ご興をお願いいたします。このアンケートの実施にあたり、従来の60,000円かシステムおよびSAS ADXインターフェイス、SAS/GISソフトウェアの各章を味のある方はぜひご利用ください。お申し込み方法は、マニュアル注文と
同様です。

日

程：3月13日（木）〜4月17日（木）、全4回（東京会場）

ら40,000円に値下げしてコースをご提供します。改訂に向けたアンケート

省略しています。なお、本書と同内容のPDF版は、SASシステム リリース価格：120,000円（サービスチケット捺印数6）を実施するトレーニング日程は次のとおりです。

8.2導入時に提供される「SASシステムV8e（リリース8.2）
インストレーション

前提知識：「SASによるデータ解析入門」コースを受講済みか、同程度の知識のある方ドキュメントメディア（CD-ROM）」に含まれています。
●「臨床データマネジメント」コース
東京会場 2月13日〜14日、5月12日〜13日●第１回 ：3月13日（木）「マーケティング概論」
担当講師：学習院大学 経済学部 上田隆穂 教授
学習内容：この回では、マーケティングとは何か、
そしてリサーチとはどう■SASロゴ入りグッズ毎月のキャンペーンご案内●「解析表作成」コース
東京会場 2月24日〜25日、5月26日〜27日

つながっていくのかに重点をおいた解説を行ないます。特にSASロゴグッズのページ
http://www.sas.com/japan/manual/goods.html■2月以降発売予定のマニュアル
SAS言語：リファレンス編 バージョン8（仮題、日本語版）
注文番号：17239
価
格：未定
本書は、バージョン8以降のBase SASソフトウェアにおけるSAS言語のリフ

マニュアル販売係●T

E L 03-3533-3835
03-3533-3781● E-mail JPNBooksale@sas.com●F A X

分析関連の領域（新製品開発等）を詳しく解説していきます。

その 他 、
トレーニングに関する情 報については、弊 社ホーム ベージ

この概論では、因子分析など一連のマップを描く手法から、
ク（http://www.sas.com/japan/training）をご参照いただくか、下記＜ト8」、注文番号 57239）の翻訳版です。本書の内容は、「SASランゲージ リ

SASマニュアル注文用紙、および最新のPublication Catalog

ラスター分析、
コンジョイント分析などの概要説明も含みます。

レーニング担当＞までお問い合わせください。

ファレンス Version 6, First Edition」の「リファレンス編」のバージョン8対（マニュアル案内パンフレット）は弊社ホームページ

応版となり、下記について詳細に解説しています。

（http://www.sas.com/japan/manual/）にて公開しておりますので、併解説だけだと冗長になりやすいのでコンピュータは用いません
が、演習形式での討論も含めることを予定しています。

ァレンスマニュアル（「SAS Language Reference: Dictionary, Version

トレーニング担当●T

E L 03-3533-3835
A X 03-3533-3781● E-mail JPNTraining@sas.com●F・SASデータセットオプション
・SAS出力形式
・SAS関数とSAS CALLルーチン
・SAS入力形式
・SASステートメント

・SASシステムオプション
・SAS言語におけるワードとSAS名に関する規則
・SAS演算子
・DATAステップデバッガ

せてご利用ください。

「データ収集法とリサーチ手法、その解説と実践」●第2回 ：4月2日（水）SAS言語の基本的な仕様や概念の詳細は、「SAS言語：解説編 バージョン

担当講師：専修大学 商学部 奥瀬喜之 専任講師

8」を参照してください。なお、SASシステム リリース8.2導入時に提供され学習内容：データの種類（1次データと2次データ）、1次データの収集方

る「SASシステムV8e（リリース8.2）
インストレーションドキュメントメディア（CD-法（面接法、留置法、郵送法、インターネットによる方法など）、ROM）」には、
リリース8.2を使用する上で必要な「SASシステム リリース

2次データの収集方法（インターネットを使った検索など）、おSASトレーニングのお知らせ

よびリサーチの手法（定性調査と定量調査など）について説明します。また実戦的に使える手法を実際に幾つか選んでコ8.1の新機能」、「SASシステム リリース8.2の新機能」、「SAS言語：解説

新刊マニュアルのご紹介

編 バージョン8」、および同内容のPDF版マニュアルが含まれる予定です。

■発売中のマニュアル

SAS言語：解説編 バージョン8（仮題、日本語版）
注文番号：17375
価
格：未定

ンピュータを用いた実習を行なっていきます。

特別コース開催のお知らせ■ 「医学研究における経時データ解析」コース
日

程：3月19日（木）〜20日（金）（東京会場）

価

格：80,000円（サービスチケット捺印数4）※テキストは英語版を使用します（日程調整中）「リサーチ・プロセス、マーケティング・モデ●第3回：
ルの作り方」
担当講師：日本大学 経済学部 齊藤嘉一 専任講師

SASシステム リリース8.1の新機能（日本語版）
注文番号：10083
価
格：3,500円（税抜）

本書は、バージョン8以降のSAS言語の仕様と概念についてのマニュアル（「SAS
Language Reference: Concepts, Version 8」、注文番号： 57375）の翻学習内容：問題に対してどのようなプロセスで対応していくか、
リサーチ

本書は、SASシステム リリース8.1で追加、変更された機能についての解説訳版です。本書の内容は、「SASランゲージ リファレンス Version 6, First

受講対象：SASシステムによる統計解析に従事している方設計のプロセスを解説していきます。簡単なマーケティング・書（「What's New in SAS Software for Release 8.1」、注文番号：58017）

Edition」の「解説編」のバージョン8対応版となり、下記をはじめとする各

前提知識：「分散分析」コースを受講済みか、同程度の知識のある方モデルをつくるまでのプロセス、
その推定の仕方、アウトプットの翻訳版で、SASシステム リリース8.2を使用する場合も、本書の情報が必項目について詳細に解説しています。

学習内容：医薬統計専門家により、以下の内容で開催します。

の見方、モデル修正の仕方を解説します。つまり、データ収集

要となります。SAS/ETSソフトウェア、SAS/IMLソフトウェア、SAS/ORソフト

多くの医学研究においては、研究対象者ごとに時間を追って前の部分（マーケティング課題、
リサーチ・クエスチョン、仮説）

ウェア、SAS/QCソフトウェア、およびSAS/STATソフトウェアに関しては、
さ反応変数を繰り返し測定することがあり、このような研究は経の解説から始まって分析、考察までを学んでいきます。モデル

らに詳細な情報を解説した「Changes and Enhancements, Release 8.1

時観察研究などと呼ばれます。その研究目的の1つは、反応づくりの実践もコンピュータを用いた実習形式で行ないます。

（英語版）」が入手可能です（同内容のPDF版が、SASシステム リリース

変数と時間、治療効果あるいは他の説明変数との関係を定※日程についてはお問い合わせください。

量的に評価することです。同一対象者内の反応変数には相8.2導入時に提供される「What's New in SAS Release 8.1 and Release
8.2 Online Documentation」に含まれています）。なお本書では、原書記関が生じることから、統計的に妥当な推論を行なうためには測●第4回：4月17日（木）「分析事例」

載のCMS版、OpenVMS版、OS/2版SASシステムおよびSAS/GISソフト

定単位に起因する相関を考慮する必要があります。そのよう

担当講師：学習院大学 経済学部 上田隆穂 教授

ウェアの章を省略しています。なお、本書と同内容のPDF版は、SASシス

な反応変数間の相関を考慮する方法として、線型混合モデル

学習内容：この回では、実際にどのような問題意識において、どのようなおよび一般化推定方程式（GEE）による解析方法が近年注目

分析が行なわれたかを分析事例を通じて学んでいきます。分を浴びています。このコースでは、線型混合モデルと一般化

析の目的を設定し、そのためにはどのような分析プロセスをと推定方程式の理論的背景について講義し、実際の医学デーるべきかを事前にディスカッションし、その後実際に行なったタの解析を通してMIXEDプロシジャやGENMODプロシジャ分析の解説を行なっていきます。この回で用いた分析手法は、テム リリース8.2導入時に提供される「SASシステムV8e（リリース8.2）インストレーションドキュメントメディア（CD-ROM）」に含まれています。

・BYグループやWHERE式の処理
・SASシステムの基本概要
・システムパフォーマンスの最適化
・SASシステムの処理
・2バイト文字セット
・SAS言語におけるワードや規則
・SASデータセット/システムオプション ・DATAステップの処理
・生データの読み込み
・SAS入力形式/出力形式
・SASデータセットの読み込み・結合・変更
・SAS変数とSAS CALLルーチン
・配列処理
・SASステートメント
・ストアドプログラムの作成と実行
・SAS変数・DICTIONARYテーブル
・欠損値
・DBMSデータへのアクセス
・SAS式
・SAS日付値・SAS時間値・SAS日時値 ・バージョン8と旧バージョンとの互換性
・ファイル保護・エラー処理とデバッグ
・SAS入出力エンジン
・SAS出力の使用法について学びます。

知覚マップ、選好回帰、PSM、コンジョイント分析、
クラスター

SASシステム リリース8.2の新機能（日本語版）
注文番号：10084
価
格：3,500円（税抜）・線型混合モデルおよび一般化推定方程式（GEE）に関する分析、MDS、ニューラルネットワークを使った分析等です。手

本書は、SASシステム リリース8.2で追加、変更された機能についての解説

時に提供される「SASシステムV8e（リリース8.2）
インストレーションドキュメ

基本概念の説明

法自体よりも設定した分析テーマに対する分析の道筋、考え書（「What's New in SAS Software for Release 8.2」、注文番号：58025）

ントメディア（CD-ROM）」には、リリース8.2を使用する上で必要な「SASシ・MIXEDプロシジャやGENMODプロシジャの使用法方を学んでいきます。

の翻訳版で、SASシステム リリース8.2を使用する場合は本書の情報が必

ステム リリース8.1の新機能」、「SASシステム リリース8.2の新機能」、「SAS

SAS言語の個々の言語要素の詳細については、「SAS言語：リファレンス
編 バージョン8」を参照してください。なお、SASシステム リリース8.2導入

要になります。SAS/ASSISTソフトウェア、SAS/ETSソフトウェア、SAS/IML

言語：リファレンス編 バージョン8」、
および本書と同内容のPDF版マニュア

トレーニングニュース（受講料値下げ）

ソフトウェア、S A S / O Rソフトウェア、S A S / Q Cソフトウェア、およびルが含まれる予定です。

■「臨床データマネジメント」コースおよび「解析表作成」
コース アンケート実施

SAS/STATソフトウェアに関しては、
さらに詳細な情報を記載した「Changes

この春、下記の内容でマーケティングの業務に携わる方を対象としたトレーニングを開催する予定です。詳細については、弊社ホームページ「臨床データマネジメント」コースおよび「解析表作成」コースについて、PDF版が、SASシステム リリース8.2導入時に提供される「What's New in

毎月SASロゴ入りグッズを2アイテムピックアップし、キャンペーン価格に（http://www.sas.com/japan/training）をご参照いただくか、弊社トレー

今後コースの改訂を企画しています。そのため、受講されるみなさまに、従SAS Release 8.1 and Release 8.2 Online Documentation」に含まれててご提供しています。キャンペーン内容は毎月変更されますので、お見逃・医学分野における実データの解析■「マーケティング＆マーケティング・リサーチ・コース」（全4回）

ニング担当までお問い合わせください。

and Enhancements, Release 8.2（英語版）」が入手可能です（同内容の来のトレーニング内容に加え、コース終了時に詳細なアンケートのご協力います）。なお本書では、原書記載のCMS版、OpenVMS版、OS/2版SAS

しのないようお願いいたします。他にも多数取り揃えておりますので、ご興をお願いいたします。このアンケートの実施にあたり、従来の60,000円かシステムおよびSAS ADXインターフェイス、SAS/GISソフトウェアの各章を味のある方はぜひご利用ください。お申し込み方法は、マニュアル注文と
同様です。

日

程：3月13日（木）〜4月17日（木）、全4回（東京会場）

ら40,000円に値下げしてコースをご提供します。改訂に向けたアンケート

省略しています。なお、本書と同内容のPDF版は、SASシステム リリース価格：120,000円（サービスチケット捺印数6）を実施するトレーニング日程は次のとおりです。

8.2導入時に提供される「SASシステムV8e（リリース8.2）
インストレーション

前提知識：「SASによるデータ解析入門」コースを受講済みか、同程度の知識のある方ドキュメントメディア（CD-ROM）」に含まれています。
●「臨床データマネジメント」コース
東京会場 2月13日〜14日、5月12日〜13日●第１回 ：3月13日（木）「マーケティング概論」
担当講師：学習院大学 経済学部 上田隆穂 教授
学習内容：この回では、マーケティングとは何か、
そしてリサーチとはどう■SASロゴ入りグッズ毎月のキャンペーンご案内●「解析表作成」コース
東京会場 2月24日〜25日、5月26日〜27日

つながっていくのかに重点をおいた解説を行ないます。特にSASロゴグッズのページ
http://www.sas.com/japan/manual/goods.html■2月以降発売予定のマニュアル
SAS言語：リファレンス編 バージョン8（仮題、日本語版）
注文番号：17239
価
格：未定
本書は、バージョン8以降のBase SASソフトウェアにおけるSAS言語のリフ

マニュアル販売係●T

E L 03-3533-3835
03-3533-3781● E-mail JPNBooksale@sas.com●F A X

分析関連の領域（新製品開発等）を詳しく解説していきます。

その 他 、
トレーニングに関する情 報については、弊 社ホーム ベージ

この概論では、因子分析など一連のマップを描く手法から、
ク（http://www.sas.com/japan/training）をご参照いただくか、下記＜ト8」、注文番号 57239）の翻訳版です。本書の内容は、「SASランゲージ リ

SASマニュアル注文用紙、および最新のPublication Catalog

ラスター分析、
コンジョイント分析などの概要説明も含みます。

レーニング担当＞までお問い合わせください。

ファレンス Version 6, First Edition」の「リファレンス編」のバージョン8対（マニュアル案内パンフレット）は弊社ホームページ

応版となり、下記について詳細に解説しています。

（http://www.sas.com/japan/manual/）にて公開しておりますので、併解説だけだと冗長になりやすいのでコンピュータは用いません
が、演習形式での討論も含めることを予定しています。

ァレンスマニュアル（「SAS Language Reference: Dictionary, Version

トレーニング担当●T

E L 03-3533-3835
A X 03-3533-3781● E-mail JPNTraining@sas.com●F・SASデータセットオプション
・SAS出力形式
・SAS関数とSAS CALLルーチン
・SAS入力形式
・SASステートメント

・SASシステムオプション
・SAS言語におけるワードとSAS名に関する規則
・SAS演算子
・DATAステップデバッガ

せてご利用ください。

価格
SAS Learning Edirtion リリース1.0の発売を記念して、キャンペーン特別価格にて販売します。この機会にぜひお求めください。

［キャンペーン期間］●2003年1月27日（月）〜 3月31日（月）お申し込み分

新教材発売開始のお知らせ

一般利用：最新リリース情報

通常価格42,800円 →キャンペーン期間特別価格 34,800円（税抜）

アカデミック利用：通常価格30,800円 →■PCプラットフォーム

キャンペーン期間特別価格 24,800円（税抜）

株式会社SASインスティチュートジャパンでは、
このたび「SAS Learning

Windows版

Edition リリース1.0」を発売します。SAS Learning Edition リリース1.0とは、おもにSASシステムを個人学習していただくことを目的に、必要な機

お申し込み方法

能・製品を抽出してご提供する教材パッケージです。

SAS Learning Edition リリース1.0のご購入の際は、専用の注文用紙にSASシステム リリース8.2

TS2M0■ミニコンピュータプラットフォーム

必要事項をご記入の上FAXにてお申し込みいただくか、Webフォームより

SAS Learning Edition リリース1.0とはお申し込みください。

OpenVMS AXP版

SASシステム リリース6.12 TS020

SAS Learning Edition リリース1.0は下記の仕様を持ち、学生の方や新専用の注文用紙やフォーム、また購入についての詳細は、弊社ホームペ

OpenVMS VAX版

SASシステム リリース6.08 TS407

入社員の教材として、またビジネスシーンでも役立つ幅広い機能をカバーージ（http://www.sas.com/japan/manual/index.html）をご覧ください。

■UNIXプラットフォーム

しています。

マニュアル販売係
インターフェース

Enterprise Guideソフトウェア

使用可能または

Base SASソフトウェア、SAS/STATソフトウェア、

インストールされる

SAS/QCソフトウェア、SAS/ETSソフトウェア、

ソフトウェア

SAS/GRAPHソフトウェア※ 動作環境：Windows 95/98/Me/NT4.0/2000/XP※ 利用できる機能や期間などに一部制限があります。制限の詳細については、
弊社Webサイト（http://www.sas.com/japan/manual/index.html）をご参照ください。

●T

E L 03-3533-3835● F A X 03-3533-3781● E-mail JPNBooksale@sas.com

TS2M0

Tru64版

SASシステム リリース8.2

ABI+版

SASシステム リリース6.11 TS040

SunOS/Solaris版

SASシステム リリース8.2

TS2M0

HP-UX版

SASシステム リリース8.2

TS2M0

AIX版

SASシステム リリース8.2

TS2M0

Linux版

SASシステム リリース8.2

TS2M0■メインフレームプラットフォーム
IBM版（MVS）

SASシステム リリース6.09E TS470

Web Based Trainingと併用して効率的な学習

富士通版（F4、MSP） SASシステム リリース6.09E TS470

SAS Learning Edition リリース1.0には、初めてSASをお使いになる方に

日立版（VOS3）SASシステム リリース6.09E TS470

好評の新トレーニングマテリアル「Web Based Training」を6ヶ月間利用

CMS版

SASシステム リリース6.08

できるIDも含まれています。
Web Based Trainingとは？
インターネットを利用して、ブラウザ上でSASシステムの機能や操作方法を学べる教育マテリアルです。SASの基本操作、ファイルの入出力方法、簡単なデータによるプログラムの作成、データ集計表の作成について、音声と画面でわかりやすく解説しています。インター
ネットに接続できる環境であれば、家庭でも、オフィスでも、学校でも、場所を選ばずにSASシステムを学習できます。

SAS Learning Edition リリース1.0のご購入お申し込みの翌月1日より（月の20日以降にお申し込みの場合は翌々月1日より）6ヶ月間、Web
Based Training（Basicコース）を利用できます。Web Based Training
で学んだ知識をSAS Learning Edition リリース1.0で実践することにより、さらに深く理解することができます。

発売受付開始と出荷時期●受付開始日 2003年1月27日（月）●出荷開始日 2003年2月17日（月）※ 予定

TS410

価格
SAS Learning Edirtion リリース1.0の発売を記念して、キャンペーン特別価格にて販売します。この機会にぜひお求めください。

［キャンペーン期間］●2003年1月27日（月）〜 3月31日（月）お申し込み分

新教材発売開始のお知らせ

一般利用：最新リリース情報

通常価格42,800円 →キャンペーン期間特別価格 34,800円（税抜）

アカデミック利用：通常価格30,800円 →■PCプラットフォーム

キャンペーン期間特別価格 24,800円（税抜）

株式会社SASインスティチュートジャパンでは、
このたび「SAS Learning

Windows版

Edition リリース1.0」を発売します。SAS Learning Edition リリース1.0とは、おもにSASシステムを個人学習していただくことを目的に、必要な機

お申し込み方法

能・製品を抽出してご提供する教材パッケージです。

SAS Learning Edition リリース1.0のご購入の際は、専用の注文用紙にSASシステム リリース8.2

TS2M0■ミニコンピュータプラットフォーム

必要事項をご記入の上FAXにてお申し込みいただくか、Webフォームより

SAS Learning Edition リリース1.0とはお申し込みください。

OpenVMS AXP版

SASシステム リリース6.12 TS020

SAS Learning Edition リリース1.0は下記の仕様を持ち、学生の方や新専用の注文用紙やフォーム、また購入についての詳細は、弊社ホームペ

OpenVMS VAX版

SASシステム リリース6.08 TS407

入社員の教材として、またビジネスシーンでも役立つ幅広い機能をカバーージ（http://www.sas.com/japan/manual/index.html）をご覧ください。

■UNIXプラットフォーム

しています。

マニュアル販売係
インターフェース

Enterprise Guideソフトウェア

使用可能または

Base SASソフトウェア、SAS/STATソフトウェア、

インストールされる

SAS/QCソフトウェア、SAS/ETSソフトウェア、

ソフトウェア

SAS/GRAPHソフトウェア※ 動作環境：Windows 95/98/Me/NT4.0/2000/XP※ 利用できる機能や期間などに一部制限があります。制限の詳細については、
弊社Webサイト（http://www.sas.com/japan/manual/index.html）をご参照ください。

●T

E L 03-3533-3835● F A X 03-3533-3781● E-mail JPNBooksale@sas.com

TS2M0

Tru64版

SASシステム リリース8.2

ABI+版

SASシステム リリース6.11 TS040

SunOS/Solaris版

SASシステム リリース8.2

TS2M0

HP-UX版

SASシステム リリース8.2

TS2M0

AIX版

SASシステム リリース8.2

TS2M0

Linux版

SASシステム リリース8.2

TS2M0■メインフレームプラットフォーム
IBM版（MVS）

SASシステム リリース6.09E TS470

Web Based Trainingと併用して効率的な学習

富士通版（F4、MSP） SASシステム リリース6.09E TS470

SAS Learning Edition リリース1.0には、初めてSASをお使いになる方に

日立版（VOS3）SASシステム リリース6.09E TS470

好評の新トレーニングマテリアル「Web Based Training」を6ヶ月間利用

CMS版

SASシステム リリース6.08

できるIDも含まれています。
Web Based Trainingとは？
インターネットを利用して、ブラウザ上でSASシステムの機能や操作方法を学べる教育マテリアルです。SASの基本操作、ファイルの入出力方法、簡単なデータによるプログラムの作成、データ集計表の作成について、音声と画面でわかりやすく解説しています。インター
ネットに接続できる環境であれば、家庭でも、オフィスでも、学校でも、場所を選ばずにSASシステムを学習できます。

SAS Learning Edition リリース1.0のご購入お申し込みの翌月1日より（月の20日以降にお申し込みの場合は翌々月1日より）6ヶ月間、Web
Based Training（Basicコース）を利用できます。Web Based Training
で学んだ知識をSAS Learning Edition リリース1.0で実践することにより、さらに深く理解することができます。

発売受付開始と出荷時期●受付開始日 2003年1月27日（月）●出荷開始日 2003年2月17日（月）※ 予定

TS410

発行
株式会社SASインスティチュートジャパン
テクニカルニュースに関するお問い合わせ先
テクニカルサポートグループ

TEL:03-3533-3877
FAX:03-3533-3781
E-mail:technews@jpn.sas.com