前のページ|次のページ

%INCLUDEステートメント

SASプログラミングステートメント、データ行、またはその両方を現在のSASプログラムに読み込みます。

該当要素: 任意の場所
カテゴリ: プログラム制御
別名: %INC
参照項目: %INCLUDEステートメントXisError: No pubcode in link data found for hostwinXisError: No pubcode in link data found for hostunx、およびXisError: No pubcode in link data found for hosto390

構文

引数

source(s)

%INCLUDEステートメントでアクセスする情報の格納場所を指定します。ソースとして次の3つが考えられます。

ソース
定義
file-specification
外部ファイルを指定します。
internal-lines
同一のSASジョブまたはSASセッションで入力した行を指定します。
keyboard-entry
キーボードから直接入力するステートメントまたはデータ行を指定します。

file-specification

プログラムに読み込む外部ファイルを指定します。

File-specificationには、次の形式を指定できます。

'external-file'

一重引用符で囲んだ外部ファイルの物理名を指定します。物理名には動作環境でファイルを判別できる名前を指定します。

fileref

外部ファイルに関連付けられているファイル参照名を指定します。

ヒント FILENAMEステートメント、FILENAME関数、または動作環境のコマンドを使用すると、ファイル参照名の関連付けを行うことができます。

fileref (filename-1 <, ”filename–2.xxx”, ... filename-n>)

集約記憶域に関連付けられているファイル参照名を指定します。ファイル参照名の後ろに、指定した場所に存在するファイル名を1つまたは複数指定します。また、各ファイルはカンマまたはブランクで区切ります。次に指定したファイル名全体を丸かっこで囲みます。

この例では、testcode1.sas、testcode2.sas、testcode3.txtを読み込むように指示します。これらのファイルは、集約記憶域mylibに格納されています。testcode1およびtestcode2の拡張子はデフォルトの.SASなので、ファイル拡張子を指定する必要はありません。testcode3.txtは、.SAS以外の拡張子なので、指定するファイル名を引用符で囲む必要があります。
%include mylib(testcode1, testcode2,
               "testcode3.txt");
動作環境 動作環境によって、ディレクトリ、MACLIB、区分データセットなど複数のファイルをまとめて保存する場所の名前は異なります。 複数のファイルを格納する記憶域のファイルにアクセスする方法については、各動作環境向けのSASドキュメントを参照してください。.
集約記憶域に格納されているファイルの名前が有効なSAS名ではない場合は、その名前を引用符で囲む必要があります。
ヒント FILENAMEステートメント、FILENAME関数、または動作環境のコマンドを使用すると、ファイル参照名の関連付けを行うことができます。
制限事項 外部ファイルから特定の行だけを読み込むことはできません。
動作環境 ファイル名に使用できる文字列の長さは動作環境によって異なります。外部ファイルの物理名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。
ヒント ERRORCHECKオプションがSTRICTに設定されている場合、SYSERRマクロ変数を使用すると、file-specificationの指定の有無を確認できます。
バッチモード、ウィンドウ環境、対話型ラインモード、非対話型モードなど、どの種類のSAS処理でも、外部ファイルを指定すると便利です。

internal-lines

同一のSASジョブまたはSASセッションで入力した行を指定します。

入力済みの行を読み込むには、次のいずれかの形式を使用します。
n nを読み込みます。
n-mまたはn:m nからmを読み込みます。
対話型ラインモード、非対話型モード、バッチモードを実行している場合は、SPOOLシステムオプションによってサブミット済みの行への内部アクセスが制御されます。デフォルトでは、SPOOLシステムオプションはNOSPOOLに設定されます。%%INCLUDEステートメントを使用して入力済みの行を参照するには、SPOOLシステムオプションを有効にする必要があります。システム上でのSPOOLシステムオプションの現在の設定を確認するには、OPTIONSプロシジャを使用します。
ヒント 入力済みの行の読み込みは、対話型ラインモードの処理で使用すると便利です。
読み込む行番号を指定するには、%LISTステートメントを使用します。
SASをウィンドウ環境で実行しているときは%INCLUDEステートメントを使用してサブミット済みの行にアクセスできますが、プログラムエディタでRECALLコマンドを使用して行を再表示し、それをSUBMITコマンドで再度サブミットするほうが簡単です。

keyboard-entry

プログラムを待機させる方法の1つです。この方法を使用すると、現在の実行中のプログラムの処理を中断し、キーボードからステートメントやデータ行を入力した後、プログラムの処理を再開できます。

*

キーボードからデータを入力するように求めるプロンプトを表示します。コード内で%INCLUDEステートメントの後ろにアスタリスク(*)を指定します。

proc print;
   %include *;
run;
制限事項 Microsoft Windows動作環境で拡張エディタを使用する場合、アスタリスク(*)を使用してキーボード入力を指定することはできません。
FILENAMEステートメント、FILENAME関数、または動作環境のコマンドを使用して、ファイル参照名SASTERMを事前に外部ファイルに関連付けておく必要があります。
ヒント SASを非対話型モードまたは対話型ラインモードで実行する場合は、この方法を使用します。SASは処理を停止し、キーボードからステートメントを入力するように求めるプロンプトを表示します。
キーボードからソースを読み込むにはこの引数を指定します。
%INCLUDE * ステートメントをバッチジョブでも使用できます。その場合、キーボードから入力するかわりに、ステートメントが含まれるファイルを作成して、ファイル参照名SASTERMを関連付けます。%%INCLUDE * ステートメントを実行すると、SASTERMを割り当てたファイルからステートメントを読み込みます。SASTERMを割り当てたファイルでは、元のソースから読み込みを再開する位置に%RUNステートメントを追加します。

SOURCE2

SASプログラムに読み込むソースステートメントをSASログに表示します。

ヒント SASログには、ファイル参照名、ソースのファイル名、ネストレベル(1、2、3など)も表示されます。
SOURCE2システムオプションでも、結果は同じになります。%INCLUDEステートメントにSOURCE2を指定すると、読み込み処理中は、SOURCE2システムオプションの設定より優先されます。

S2=length

入力に使用するレコード長を指定します。lengthには、次の値を指定できます。

S S2の値をS=SASシステムオプションの現在の設定と同じ値に設定します。
0 SEQ=システムオプションの設定に従って、行にシーケンスフィールドが含まれているかどうかを判断するようにします。行にシーケンスフィールドが含まれている場合、合計の長さからシーケンスフィールドを除いた長さを行の長さと判断します。
n ファイルに固定長レコードが含まれている場合、読み込む行の長さに対応する1以上の値を指定します。ファイルに可変長レコードが含まれている場合、データの読み込みを開始する列を位置をnに指定します。
操作 S2=システムオプションでは、%INCLUDEステートメントでアクセスするセカンダリソースステートメントの長さも指定します。この値は、SASセッション実行中は有効です。%%INCLUDEに指定したS2=オプションは、現在の読み込み処理でのみ有効です。%%INCLUDEステートメントにS2=オプションを指定すると、読み込み処理中は、システムオプションの設定より優先されます。
ヒント %INCLUDEステートメントから読み込むテキストは、固定長または可変長のどちらかになります。
固定長レコードは、シーケンスフィールドなしレコードか、またはレコードの末尾にシーケンスフィールドを有するレコードです。固定長レコードの場合、S2=オプションに指定した値は、データの末尾の列位置を示します。
可変長レコードは、シーケンスフィールドなしレコードか、またはレコードの先頭にシーケンスフィールドを有するレコードです。固定長レコードの場合、S2=オプションに指定した値は、データの先頭の列位置を示します。
参照項目 固定長入力レコードおよび可変長入力レコードの詳細については、 XisError: No pubcode in link data found for lesysoptsrefおよびXisError: No pubcode in link data found for lesysoptsrefを参照してください。

operating-environment-options

動作環境 動作環境によっては、%INCLUDEステートメントでさまざまなオプションがサポートされます。オプションとその機能の一覧については、各動作環境向けのドキュメントを参照してください。

詳細

%INCLUDEの動作

%INCLUDEステートメントが含まれるプログラムを実行すると、記述したコードが実行されます。このコードには、%INCLUDEステートメントを使用してプログラムに読み込むステートメントやデータ行が含まれます。
動作環境の情報: %INCLUDEステートメントの使用方法は、操作環境によって異なります。その他のソフトウェアの機能、ファイルの参照方法やファイルへのアクセス方式の詳細については、動作環境に関するドキュメントを参照してください。また、それらについては、%INCLUDEステートメントを実行する前に参照してください。

3つのデータソース

%INCLUDEステートメントは、次の3つのソースのSASステートメントやデータ行にアクセスします。
  • 外部ファイル
  • 同一のジョブやセッションで入力した行
  • キーボードから入力した行

有用な場合

%INCLUDEステートメントは、対話型ラインモード、非対話型モード、またはバッチモードでSASを実行する場合によく使用されます。ウィンドウ環境でSASを実行するときも%INCLUDEステートメントを使用できますが、INCLUDEコマンドとRECALLコマンドを使用してデータ行とプログラムステートメントへのアクセスやこれらのサブミットを実行する方が簡単です。

%INCLUDE使用のルール

  • ステートメントには、ソースの数をいくつでも指定できます。また、読み込むソースの種類が異なっていてもかまいません。1つの%INCLUDEステートメントでは複数のソースから情報を読み込むことができますが、ソースごとに%INCLUDEステートメントを使用したほうがプログラムがわかりやすくなります。
  • %INCLUDEステートメントは、ステートメント境界から記述する必要があります。つまり、SASジョブの最初のステートメントとするか、他のステートメントの末尾のセミコロンの直後に記述する必要があります。DATALINES、DATALINES4、CARDS、CARDS4の各ステートメントの直後、プロシジャ内のPARMCARDSステートメントまたはPARMCARDS4ステートメントの直後には、%INCLUDEステートメントを記述できません。ただし、次のいずれかの方法を使用すると、%INCLUDEステートメントでデータ行を読み込めます。
    • データを格納しているファイルの1行目に、DATALINESステートメント、DATALINES4ステートメント、CARDSステートメント、CARDS4ステートメントのいずれかを記述します。
    • DATALINES、DATALINES4、CARDS、CARDS4の各ステートメントを1つのファイルに保存し、データ行は別のファイルに保存します。次に、1つの%INCLUDEステートメントに両方のソースを指定します。
    %INCLUDEステートメントでアクセスするファイルの中に別の%INCLUDEステートメントがネストされていてもかまいません。%INCLUDEステートメントで指定できる最大ネスト数は、動作環境に固有の制限事項(メモリ容量や同時に開くことができるファイルの最大数など)によって異なります。
  • %INCLUDEステートメントはグローバルステートメントですが、グローバルステートメントは実行可能ではありません。そのため、%INCLUDEステートメントは条件付きロジックでは使用できません。.
  • 行の最大長は32,000バイトです。

比較

%INCLUDE ステートメントでは、ステートメントを直ちに実行します。INCLUDEコマンドでは、読み込まれた行はプログラムエディタウィンドウに表示されますが、実行されません。表示された行を実行するには、SUBMITコマンドを発行する必要があります。

例1: 外部ファイルの挿入

  • この例では、プログラムの一部をファイルに格納し、後からプログラムに読み込みます。このプログラムは、MYFILEという名前のファイルに格納されています。
    data monthly;
       input x y month $;
       datalines;
    1 1 January
    2 2 February
    3 3 March
    4 4 April
    ;
    次のプログラムでは、外部ファイルMYFILEを読み込み、そのファイルに含まれるDATAステップをサブミットしてから、PROC PRINTステップを実行します。
    %include 'MYFILE';
    proc print;
    run;
  • 実際のファイル名のかわりにファイル参照名を使用してファイルを参照する場合、FILENAM ステートメント(または動作環境コマンド)を使用してファイル参照名を割り当てることができます。
    filename in1 'MYFILE';
    これ以後は、ファイル参照名IN1を使用してMYFILEにアクセスできます。
    %inc in1;
  • ディレクトリ、PDS、MACLIB(または動作環境で集約記憶域を指す名称)に格納されたファイルを使用する場合、サイズが大きいストレージユニットにファイル参照名を割り当ててから、ファイル名を指定します。たとえば、次のFILENAMEステートメントでは、ファイル参照名STORAGEを集約記憶域に割り当てます。
    filename storage 
       'aggregate-storage-location';
    これ以降は、次のステートメントを使用してファイルを読み込むことができます。
    %inc storage(MYFILE);
  • 1つの%INCLUDEステートメントでファイル参照名を指定した後に、複数のファイルやメンバを丸かっこで囲んで指定すると、この記憶域のファイルやメンバにアクセスすることもできます。ファイル名はカンマやブランクで区切ります。次の%INCLUDEステートメントは、この方法を示しています。
    %inc storage(file-1,file-2,file-3);
    デフォルトの.sas拡張子ではないファイルを指定する場合、各ファイル名を引用符で囲んでから、指定するファイル名全体を丸かっこで囲むとファイルにアクセスできます。
  • %inc storage("file-1.txt","file-2.dat",
       "file-3.cat");

例2: 事前にサブミットされた行を挿入する

次の%INCLUDE ステートメントでは、行1、行5、行9 - 12、行13 - 16をキーボードから再入力したのと同じように実行します。
%include 1 5 9-12 13:16;

例3: キーボード入力を含める

この例に示す方法は、非対話型モードまたは対話型ラインモードを使用している場合にだけ使用できます。
制限事項:Microsoft Windows動作環境で拡張エディタを使用する場合、アスタリスク(*)を使用してキーボード入力を指定することはできません。
この例では、%INCLUDEステートメントを使用して、PROC PRINTの実行時にカスタマイズしたTITLEステートメントを追加します。
data report;
   infile file-specification;
   input month $ salesamt $;
run;
proc print;
   %include *;
run;
このDATAステップを実行すると、%INCLUDEステートメントにアスタリスクが指定されているので、キーボードからステートメントを入力するように求めるプロンプトが表示されます。次のようなステートメントを入力できます。
where month= 'January';
title 'Data for month of January';
ステートメントを入力した後、次のように入力すると、%RUNステートメントを使用して処理を再開できます。%run;
%RUNステートメントは、キーボード入力モードの終了を知らせ、元のプログラムの残りのステートメントの実行を再開するように命令します。

例4: %INCLUDEを使用して1つのカタログから複数のエントリを読み込む

この例では、カタログMYLIB.INCLUDEにある3つのエントリからソースコードをサブミットします。エントリタイプを指定しない場合、デフォルトのエントリタイプCATAMSに設定されます。
filename dir catalog 'mylib.include';
%include dir(mem1);
%include dir(mem2);
%include dir(mem3);

関連項目:

前のページ|次のページ|ページの先頭へ