前のページ|次のページ

FILENAMEステートメント、ZIPアクセス方式

ZIPファイルにアクセスできるようにします。

該当要素: 任意の場所
カテゴリ: データアクセス
注: ZIPアクセス方式では、WinZipファイル圧縮で作成されたファイルのみ読み込みと書き込みが行われます。

構文

引数

fileref

有効なファイル参照名を指定します。

ヒント ファイル参照名と外部ファイルの関連付けは、SASセッション終了まで維持されるか、または他のFILENAMEステートメントでファイル参照名の変更や取り消しを実行するまで維持されます。ファイルに対するファイル参照名は必要に応じて何度でも変更できます。

ZIP

このアクセス方式を指定すると、ZIPファイルが使用できるようになります。

'external-file'

読み込みまたは書き込みの対象となるZIPファイル名を指定します。

動作環境 外部ファイルの物理名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。
DATAステップで同じZIPファイルのエントリを複数回指定すると、エラーになります。複数のエントリは重なり合ってしまい、予想外の結果が生じます。
ヒント 外部ファイルにファイル参照名を割り当てる場合は、external-fileを指定します。ファイル参照名には、MEMBER=構文を使用して1つのファイル、またはfileref(member)構文を使用して集約記憶域を関連付けることができます。
MEMBER=構文ではワイルドカードを使用できません。アスタリスク(*)はゼロ以上の文字と一致します。疑問符(?)は1文字と一致します。ワイルドカードは、エントリの読み込み時に存在アクションについてサポートされます。ワイルドカードは、書き込みまたは削除アクションについてはサポートされません。たとえば、エントリ“A*”を書き込むと、エントリ“A*”が作成されます。“A*”というエントリを削除すると、“A*”は削除されますが、“A”で始まるエントリはいずれも削除されません。“A*”を指定してexist関数を呼び出すと、“A”で始まるエントリが1つ以上存在すれば真が返されます。

ZIPオプション

zip-optionsには、次のいずれかを指定できます。

COMMENT="comment-string"

ZIPファイルに情報のコメントを書き込みます。.

COMPRESSION='compression-level'

ZIPファイルメンバへの書き込み時に使用する圧縮レベルを指定します。圧縮レベルの有効な値は0から9です。0の値では、圧縮なしでファイルを保存します。値9は最大の圧縮レベルを意味します。

デフォルト 6
制限事項 COMPRESSION=は書き込むためにファイルを開く際にだけ使用されます。

DEBUG

デバッグ情報をSASログに書き込みます。

ENCODING=encoding-value

外部ファイルからの読み込みや外部ファイルへの書き込みに使用するエンコーディングを指定します。ENCODING=の値は、外部ファイルのエンコーディングが現在のセッションエンコーディングとは異なることを示しています。

外部ファイルからデータを読み込む場合は、指定したエンコーディングからセッションエンコーディングにデータがトランスコードされます。外部ファイルにデータを書き込む場合は、セッションエンコーディングから指定したエンコーディングにデータがトランスコードされます。
デフォルト SASでは、外部ファイルのエンコーディングがセッションエンコーディングと同じであるとみなします。
参照項目 XisError: No pubcode in link data found for nlsref

FILEEXT

ファイル拡張子が存在しない場合にファイル名の番号に拡張子が自動的に追加されるように指定します。

操作 自動呼び出しマクロ機能では、拡張子.SASが常にファイルアクセス方式に渡されます。この拡張子は自動呼び出しマクロライブラリ内のファイルを開くときに使用されます。DATAステップでは、拡張子.DATAが常に渡されます。自動呼び出しマクロライブラリに対してファイル参照名を定義し、そのライブラリにあるファイルの拡張子が.SASの場合、FILEEXTオプションを使用します。ライブラリに拡張子を持つファイルが存在しない場合は、FILEEXTオプションを使用しないでください。たとえば、DATAステップで入力ファイルにファイル参照名を定義し、そのファイルXの拡張子が.DATAの場合、ファイルX.DATAを読み込むためにFILEEXTオプションを使用します。INFILEまたはFILEステートメントを使用する場合は、大文字と小文字を維持するためにメンバ名と拡張子を引用符で囲みます。
ヒント INFILEまたはFILEステートメントでファイルの拡張子を指定すると、FILEEXTオプションは無視されます。
参照項目 LOWCASE_MEMNAME

LOWCASE_MEMNAME

自動呼び出しマクロを使用して、ZIPファイルから小文字のディレクトリ名やメンバ名を取得できるようにします。

制限事項 SAS自動呼び出しマクロを使用して名前を取得するときは、常に大文字のディレクトリメンバ名を探します。大文字と小文字が混在するディレクトリ名やメンバ名はサポートされていません。
参照項目 FILEEXT

LRECL=lrecl

このlreclには、データの論理レコード長を指定します。

デフォルト 32767
操作 かわりに、XisError: No pubcode in link data found for lesysoptsrefを使用すると、グローバルな論理レコード長を指定できます。SAS 9.4では、グローバルLRECLシステムオプションのデフォルト値は32767です。

NAMEENCODING=encoding-value

ZIPファイルのエントリ名とコメントに使用するエンコーディングを指定します。NAMEENCODING=の値は、エントリ名とコメントのエンコーディングが、現在のセッションのエンコーディングとは異なることを示します。

デフォルト コードページ437
filename zs zip "yxz.zip" nameencoding=sjis member="s" termstr=lf;

RECFM=recfm

このrecfmには、次の4つのレコード形式のいずれかを指定します。

F

固定長レコード形式です。各レコードは同じ長さになります。

N

バイナリ形式です。レコード境界なしでストリームバイトからなるファイルです。

S

ストリームレコード形式です。

操作 読み込むデータ量は、現在のLRECLの値またはINFILEステートメントに指定したNBYTE=変数の値で制御されます。NBYTE=オプションには、読み込まれるデータ量に等しくなる変数を指定します。このデータ量は、LRECLに指定した値に等しいか、それ以下の値にする必要があります。
参照項目 INFILEステートメントのNBYTE=オプション

V

可変長レコード形式(デフォルト設定)です。この形式では、レコードの長さが異なります。また、レコードはテキスト(ストリーム)モードで転送されます。

操作 LRECLの値よりも大きいレコードは切り捨てられます。
デフォルト V

TERMSTR='eol-termination-character'

終端文字は、読み込み操作では改行文字で、レコードの書き込み操作では終端文字になります。次の4つの値を使用できます。

CR キャリッジリターン(CR)
CRLF ラインフィード(LF)が後に続くキャリッジリターン(CR)
LF ラインフィードのみ(デフォルト設定)
NULL NULL文字(0x00)
デフォルト WindowsではCRLFで、 他の動作環境ではLFになります。
動作環境 FILENAMEステートメントを使用する場合は、動作環境固有の情報が必要になります。ファイル名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。

例1: ディレクトリからZIPファイルメンバの読み込み

この例では、ZIPファイルメンバtest1.txtをZIPファイルtestzipから読み込みます。
filename foo ZIP 'U:\directory1\testzip.zip' member="test1.txt" ;

data _null_;
infile foo;
input a $80.;
run;

例2: ZIPファイルの新ディレクトリメンバへの書き込み

この例ではファイルshoesをZIPファイルtestzipに書き込みます。
filename foo ZIP 'U:\directory1\testzip.zip';

data _null_;
  file foo(shoes);
  set sashelp.shoes;
  put region $25. product $14.;
run;

例3: ディレクトリメンバからの読み込み

この例では、ファイルshoesをZIPファイルtesting1から読み込みます。
filename foo ZIP 'U:\directory1\testzip.zip';

data shoes;
  length region $25  product $14;
  infile foo(shoes);
  input region $25. product $14.;
run;

関連項目:

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