前のページ|次のページ

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

FTPプロトコルを使用してリモートファイルにアクセスできます。

該当要素: 任意の場所
カテゴリ: データアクセス
制限事項: SASがロックダウン状態にある場合、FILENAMEステートメントのFTPアクセス方式は使用できません。サーバー管理者は、このアクセス方式がロックダウン状態でも使用できるように、同方式を再有効化できます。詳細については、XisError: No pubcode in link data found for lrconを参照してください。

構文

引数

fileref

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

SAS 9.4のメンテナンスリリース3では、FTPサーバーがOPTS UTF8 ONまたはOPTS UTF-8 ON FTPプロトコルコマンドをサポートするホストは、UTF-8文字を含むファイル名をサポートします。
ヒント ファイル参照名と外部ファイルの関連付けは、SASセッション終了まで維持されるか、または他のFILENAMEステートメントで関連付けの変更や関連付けの取り消しを実行するまで維持されます。ファイルに対するファイル参照名は必要に応じて何度でも変更できます。

FTP

このアクセス方式を指定すると、FTP(File Transfer Protocol)を使用したファイルの読み込みや書き込みを、FTPサーバーが稼働しているネットワーク上のホストコンピュータとの間で実行できるようになります。

ヒント ホストコンピュータへの接続、FTPサーバーへのログイン、読み込みと書き込みを実行可能な指定したファイルへの出力、ホストコンピュータからの切断を実行する場合は、FTPアクセス方式を指定してFILENAMEステートメントを使用します。

'external-file'

読み込みまたは書き込みの対象となる外部ファイルの物理名を指定します。物理名には動作環境で判別できる名前を指定します。

ファイルがIBM 370形式でレコード形式がFBまたはFBAの場合、およびENCODING=オプションが指定されている場合は、LRECL=オプションを指定する必要があります。レコード長がLRECLに指定した値よりも短い場合は、レコード長がLRECLの値と等しくなるまでレコードにブランクが追加されます。
動作環境 外部ファイルの物理名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。
ヒント ファイルの転送を実行しているのではなく、ディレクトリリストの取得などのタスクを実行している場合は、ファイル名を指定する必要はありません。ファイル名のかわりに、引用符のみをステートメントに指定してください。 ディレクトリリストの検索を参照してください。
ファイル参照名には、1つのファイルまたは集約記憶域を関連付けることができます。
DIRオプションを指定する場合は、この引数にディレクトリを指定してください。

ftp-options

ファイル属性や属性の処理など動作環境固有の詳細情報を指定します。

動作環境 FTPオプションの詳細については、各動作環境向けのSASドキュメントを参照してください。
参照項目 FTPオプション

FTPオプション

AUTHDOMAIN="auth-domain"

FTPサーバーへの接続に使用する認証ドメインメタデータオブジェクトの名前を指定します。認証ドメインは、明示的に認証情報(ユーザーIDとパスワード)を指定する必要がない場合に、認証情報を参照します。auth-domainでは大文字と小文字が区別されます。また、二重引用符で囲んで指定する必要があります。

管理者は、SAS管理コンソールのユーザーマネージャを使用してユーザー定義を作成する間に、認証ドメインの定義を作成します。認証ドメインは、FTPサーバーへのアクセスを提供する1つまたは複数のログインメタデータオブジェクトに関連付けられています。また、この認証ドメインは、SAS Metadata Serverを呼び出し、認証情報を返すBASE Engineによって解決されます。
要件 認証ドメインおよび関連付けられたログイン定義はメタデータリポジトリに格納する必要があります。また、メタデータオブジェクトを解決するには、Metadata Server を稼働させる必要があります。
操作 AUTHDOMAIN=を指定する場合、USER=およびPASS=を指定する必要はありません。
参照項目 認証ドメインの作成および使用方法の詳細については、SAS Intelligence Platform:Security Administration Guide.

AUTHTLS

TLS認証を要求するFTPサーバーにFTP AUTH TLSコマンドを発行します。セキュアコマンドチャネルモードは、AUTH TLSコマンドの発行によって入力されます。

要件 データチャネルを保護するためには、AUTHTLSコマンドを発行してコントロールチャネル保護を設定する必要があります。
操作 AUTHTLS、PROT=、PBSZ=のうちいずれかのオプションを指定した場合、AUTHTLSコマンドが発行されます。FTPコントロールチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。PROT=またはPBSZ=オプションを、個別に指定するか、AUTHTLSオプションと一緒に指定すると、FTPコントロールおよびデータチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。
FILENAME FTPステートメントを使用してTLS認証をオンにするかわりに、SAS_FTP_AUTHTLS環境変数を定義できます。詳細については、SAS_FTP_AUTHTLS環境変数を参照してください。
参照項目 PBSZ=protection-buffer-size
PROT=protection-level

BINARY

固定長レコード形式です。そのため、LRECLサイズのすべてのレコードには区切り文字となる改行が含まれていません。データはイメージ(バイナリ)モードで転送されます。

BINARYオプションは、FILENAME FTPステートメントのRECFM=の値より優先されます。このオプションを指定すると、強制的にバイナリ転送が実行されます。
別名 RECFM=F
操作 BINARYオプションと、S370VまたはS370VSオプションを指定する場合、BINARYオプションは無視されます。

BLOCKSIZE=blocksize

このblocksizeには、データバッファのサイズをバイト単位で指定します。

デフォルト 32768

CD='directory'

作業ディレクトリを変更するコマンドを発行します。この作業ディレクトリでは、指定したdirectoryへのファイルの転送を実行します。

操作 CDオプションとDIRオプションは相互に排他的です。両方を指定すると、FTPアクセス方式ではCDオプションが無視されます。また、情報メッセージがログに書き込まれます。

DEBUG

FTPサーバーへ送信した情報メッセージまたはFTPサーバーから受信した情報メッセージをログに書き込みます。

DIR

ディレクトリファイルまたはPDSメンバまたはPDSEメンバにアクセスできるようにします。external-file引数にディレクトリ名を指定してください。指定したホストに対して有効なディレクトリ構文を使用する必要があります。

操作 CDオプションとDIRオプションは相互に排他的です。両方を指定すると、FTPアクセス方式ではCDオプションが無視されます。また、情報メッセージがログに書き込まれます。
ヒント FTPでFILEまたはINFILEステートメントに指定したメンバ名にDATAのファイル拡張子を追加する場合は、DIRオプションと組み合わせてFILEEXTオプションを使用します。INFILEまたはFILEステートメントでファイルの拡張子を指定すると、FILEEXTオプションは無視されます。
FTPを使用してディレクトリを作成する場合、DIRオプションとNEWオプションを組み合わせて使用します。ディレクトリがすでに存在する場合、NEWオプションは無視されます。
NEWオプションを使用せずに無効なディレクトリを指定すると、新しいディレクトリは作成されず、エラーメッセージが表示されます。
同時に開くことができるディレクトリの最大数またはz/OS PDSEメンバの最大数は、FTPサーバー上で同時に開くことができるソケット数によって制限されます。同時に開くことができるソケット数は、FTPサーバーのインストール中に設定した接続数に比例します。パフォーマンスの低下を防ぐため、同時に開くことができるソケット数を制限することをお勧めします。
ディレクトリからの読み込みと書き込み

ENCODING=encoding-value

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

外部ファイルからデータを読み込む場合は、指定したエンコーディングからセッションエンコーディングにデータがトランスコードされます。外部ファイルにデータを書き込む場合は、セッションエンコーディングから指定したエンコーディングにデータがトランスコードされます。
デフォルト SASでは、外部ファイルのエンコーディングがセッションエンコーディングと同じであるとみなします。
ヒント データはイメージ形式またはバイナリ形式で転送され、ローカルデータ形式に設定されます。そのため、データを正しく読み込むには、適切なSAS入力形式を指定する必要があります。
参照項目 XisError: No pubcode in link data found for nlsref

FILEEXT

DIRオプションを使用するときに、FILEまたはINFILEステートメントに指定したメンバ名にDATAのメンバタイプを自動的に追加するように指定します。

ヒント INFILEまたはFILEステートメントでファイルの拡張子を指定すると、FILEEXTオプションは無視されます。
参照項目 LOWCASE_MEMNAMEオプション
ディレクトリからの読み込みと書き込み

HOST='host'

このhostには、FTPサーバーが稼働しているリモートホストのネットワーク名を指定します。

ホスト名(例:server.pc.mydomain.com)またはコンピュータのIPアドレス(例:2001:db8::)のどちらかを指定できます。

HOSTRESPONSELEN='size'

このsizeには、FTPサーバーの応答メッセージの長さを指定します。

デフォルト 2048バイト
範囲 2048から16384バイト
制限事項 sizeに2048未満または16384より大きい値を指定すると、sizeは2048に設定されます。

LIST

FTPサーバーにLISTコマンドを発行します。LISTを実行すると、作業ディレクトリの内容が各ファイルにリストされているすべてのファイル属性を含むレコードとして返されます。

ヒント 返されるファイル属性は、アクセスするFTPサーバーによって異なります。

LOWCASE_MEMNAME

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

制限事項 SAS自動呼び出しマクロを使用して名前を取得するときは、常に大文字のディレクトリメンバ名を探します。大文字と小文字が混在するディレクトリ名やメンバ名はサポートされていません。
操作 %INCLUDE、FILE、INFILEステートメント、またはその他のDATAステップI/Oステートメントを使用してFTPサーバーのファイルにアクセスする場合は、大文字と小文字の区別は保持されます。
参照項目 FILEEXTオプション

LRECL=lrecl

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

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

LS

FTPサーバーにLSコマンドを発行します。LSオプションを指定すると、作業ディレクトリの内容がファイル属性を持たないレコードとして返されます。

ヒント 返されるファイル属性は、アクセスするFTPサーバーによって異なります。
ファイルのサブセットのリストを返すには、LSオプションの他にLSFILE=オプションを使用します。

LSFILE='character-string'

LSオプションと組み合わせて使用します。作業ディレクトリからファイルのサブセットのリストを要求するために使用する文字列を指定します。文字列は一重引用符で囲みます。

制限事項 LSFILE=オプションは、LSオプションが指定されている場合にのみ使用できます。
ヒント 'character-string 'の一部にワイルドカードを指定できます。
返されるファイル属性は、アクセスするFTPサーバーによって異なります。
次のステートメントでは、 salesで始まり、 sasで終了するすべてのファイルをリストします。
filename myfile ftp '' ls lsfile='sales*.sas' 
   other-ftp-options;

MGET

FTPコマンドのMGETと同じように複数のファイルを転送します。

ヒント 転送処理全体が1つのファイルとして処理されます。ただし、新しいファイルの転送を開始するときに、EOV=変数が1に設定されます。
各ファイルの送信前にユーザーにプロンプトを表示するには、MPROMPTを指定します。

MPROMPT

必要に応じて、MGETオプションの実行時にファイルが読み込まれることを確認するプロンプトを表示するかどうかを指定します。

制限事項 MPROMPTオプションは、z/OS上のバッチ処理には使用できません。

NEW

DIRオプションの使用時に、FTPでディレクトリを作成するように指定します。

制限事項 z/OSでは、NEWオプションは使用できません。
ヒント ディレクトリがすでに存在する場合、NEWオプションは無視されます。

PASS='password'

このpasswordには、USER=オプションで指定したユーザー名とともに使用するパスワードを指定します。

ヒント PASSオプションのかわりにPROMPTオプションを指定できます。PROMPTオプションは、システムに対してパスワードの入力を求めるプロンプトを表示するように指示します。
ユーザー名が匿名の場合、パスワードとして電子メールアドレスを指定するようにリモートホストから要求されることがあります。
暗号化されたパスワードを使用する場合、テキスト文字列を隠すためにPWENCODEプロシジャを使用します。次に、暗号化されたパスワードをPASS=オプションに入力します。詳細については、XisError: No pubcode in link data found for procを参照してください。
エンコードされたパスワードの使用

PASSIVE

パッシブモードFTPを実行するように指定します。

パッシブモードFTPでは、サーバーへの制御やデータ接続をクライアントから開始します。このアクションによって、サーバーからクライアントへの受信データポート接続に対して実行されるファイアウォールフィルタリングの問題が解決されます。
すべてのFTPサーバーでパッシブモードがサポートされているわけではありません。FILENAMEステートメントのFTPアクセス方式を使用してPASVコマンドを発行した後、コマンドが失敗したりサーバーでコマンドが許可されない場合は、アクティブモードFTPが接続に使用されます。

PBSZ=protection-buffer-size

FTPデータチャネルの保護バッファサイズを指定します。

デフォルト 0
範囲 0–2147483647バイト
操作 AUTHTLS、PROT=、PBSZ=のうちいずれかのオプションを指定した場合、AUTHTLSコマンドが発行されます。FTPコントロールチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。PROT=またはPBSZ=オプションを、個別に指定するか、AUTHTLSオプションと一緒に指定すると、FTPコントロールおよびデータチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。
FILENAME FTPステートメントを使用してTLS認証をオンにするかわりに、SAS_FTP_AUTHTLS環境変数を定義できます。詳細については、SAS_FTP_AUTHTLS環境変数を参照してください。
IBMメインフレームFTPサーバーでは、通常、PBSZ=オプションでどの値を指定しても0に変更されます。
ヒント 範囲外のバッファサイズを指定した場合は、デフォルト値の0が使用されます。
参照項目 AUTHTLS
PROT=protection-level

PORT=portno

このportnoには、各ホスト上でFTPデーモンが監視するポートを指定します。

portnoの値には、サービスを識別する0から65535までの重複しない数を指定します。
ヒント インターネットコミュニティには、特定のサービス向けに事前に定義されたポート番号のリストがあります。たとえば、FTPのデフォルトポート番号は21です。ポート番号の一部のリストは、通常、UNIXコンピュータ上の/etc/servicesファイルに記載されています。

PROMPT

必要に応じて、ユーザーのログインパスワードの入力を求めるプロンプトを表示するように指定します。

制限事項 PROMPTオプションは、z/OSのバッチ処理には使用できません。
操作 PROMPTを指定してUSER=を指定しない場合、IDとパスワードの入力を求めるプロンプトがユーザーに表示されます。
ヒント SAVEUSERオプションを使用すると、ユーザーIDとパスワードのプロンプトが正常に実行された後に、使用したユーザーIDとパスワードを保存することができます。

PROT=protection-level

FTPデータチャネル保護レベルコマンドを発行します。protection-levelには、次の値のいずれかを指定できます。

C

FTPコントロールチャネルのセキュリティのみが提供されます。データチャネルは保護されません。

E

機密性保護が提供されます。

S

整合性チェックが提供されます。

P

整合性チェックと機密性保護が両方とも提供されます。

デフォルト P
操作 AUTHTLS、PROT=、PBSZ=のうちいずれかのオプションを指定した場合、AUTHTLSコマンドが発行されます。FTPコントロールチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。PROT=またはPBSZ=オプションを、個別に指定するか、AUTHTLSオプションと一緒に指定すると、FTPコントロールおよびデータチャネルを保護するためにFTPサーバーとのTLSセキュリティのネゴシエートが試行されます。
FILENAME FTPステートメントを使用してTLS認証をオンにするかわりに、SAS_FTP_AUTHTLS環境変数を定義できます。詳細については、SAS_FTP_AUTHTLS環境変数を参照してください。
参照項目 AUTHTLS
PBSZ=protection-buffer-size

RCMD= 'command '

このcommandには、FTPサーバーに送信するFTPの'SITE'または'service'コマンドを指定します。

FTPサーバーはSITEコマンドを使用して、システム固有でありファイルの転送には必要ですが、プロトコルに含まれるほど一般的ではないサービスを提供します。
たとえば、rcmd='site rdw'では、データの一部としてz/OS可変長ブロックデータセットのレコード記述語(RDW)を保存します。後述のS370VおよびS370VSを参照してください。
操作 セキュリティ権限やコマンドが利用できるかによっては、FTPサービスコマンドの一部が特定のクライアントサイトで実行されないことがあります。
ヒント FTPアクセス方式を使用してファイルを転送したが、ファイルを読み込むことができない場合、FTPサーバーのUNMASK設定の変更が必要な場合があります。
FTPサーバーでSITE UMASK設定がサポートされている場合は、次の例に示すようにファイルの権限を変更することができます。
filename in ftp '/mydir/accounting/file2.dat'
   host="xxx.fyi.xxx.com"
   user="john"
   rcmd='site umask 022'
   prompt;
data _null;
file in;
put a $80;
run;
セミコロンで区切ると、複数のFTPサービスコマンドを指定することができます。いくつかの例を次に示します。
rcmd='ascii;site umask 002'
rcmd='stat;site chmod 0400 ~mydir/abc.txt'

RECFM=recfm

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

F

固定長レコード形式です。そのため、LRECLサイズのすべてのレコードには区切り文字となる改行が含まれていません。データはイメージ(バイナリ)モードで転送されます。

別名 BINARY
BINARYオプションは、FILENAME FTPステートメントのRECFM=の値より優先されます。このオプションを指定すると、強制的にバイナリ転送が実行されます。
操作 LRECLシステムオプションのデフォルト値は32767です。固定長レコード(RECFM=F)を使用する場合、LRECLのデフォルト値は256になります。

S

ストリームレコード形式です。データはイメージ(バイナリ)モードで転送されます。

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

V

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

操作 LRECLの値よりも大きいレコードは切り捨てられます。
ヒント IBM 370可変長形式またはIBM 370スパン可変長形式のファイルを使用している場合、RECFM=オプションのかわりにS370VまたはS370VSオプションを使用することをお勧めします。後述のS370VおよびS370VSを参照してください。
デフォルト V
操作 RECFM=オプションと、S370VまたはS370VSオプションを指定する場合、RECFM=オプションは無視されます。

RHELP

FTPサーバーにHELPコマンドを発行します。このコマンドの結果はレコードとして返されます。

RSTAT

FTPサーバーにRSTATコマンドを発行します。このコマンドの結果はレコードとして返されます。

SAVEUSER

IDとパスワードのプロンプトが正常に実行された後に、使用したユーザーIDとパスワードを保存します。

操作 ユーザーIDとパスワードは、SASセッション終了まで維持されるか、または他のFILENAMEステートメントでファイル参照名と外部ファイルの関連付けの変更や関連付けの取り消しを実行するまで保存されます。

S370V

読み込むファイルがIBM 370可変長形式であることを指定します。

操作 このオプションとRECFM=オプションを指定すると、RECFM=オプションは無視されます。
ヒント データはイメージ形式またはバイナリ形式で転送され、ローカルデータ形式に設定されます。そのため、EBCDIC以外のホスト上でデータを正しく読み込むには、適切なSAS入力形式を使用する必要があります。
各レコードのレコード記述語(RDW)を保存するために、可変長レコード形式のz/OSデータセットを可変長レコード形式の別のz/OSデータセットに転送するときは、rcmd='site rdw'を使用します。デフォルトでは、ほとんどのFTPサーバーは、各レコードに存在するRDWを転送する前に削除します。
通常、z/OS可変長レコード形式をASCIIに転送する場合や、ASCIIファイルをz/OS可変長レコード形式に転送する場合は、'SITE RDW'コマンドは必要ありません。

S370VS

読み込むファイルがIBM 370可変長スパン形式であることを指定します。

操作 このオプションとRECFM=オプションを指定すると、RECFM=オプションは無視されます。
ヒント データはイメージ形式またはバイナリ形式で転送され、ローカルデータ形式に設定されます。そのため、EBCDIC以外のホスト上でデータを正しく読み込むには、適切なSAS入力形式を使用する必要があります。
各レコードのレコード記述語(RDW)を保存するために、可変長レコード形式のz/OSデータセットを可変長レコード形式の別のz/OSデータセットに転送するときは、rcmd='site rdw'を使用します。デフォルトでは、ほとんどのFTPサーバーは、各レコードに存在するRDWを転送する前に削除します。
通常、z/OS可変長レコード形式をASCIIに転送する場合や、ASCIIファイルをz/OS可変長レコード形式に転送する場合は、'SITE RDW'コマンドは必要ありません。

TERMSTR='eol-char'

このeol-charには、RECFM=Vを指定した場合に使用する改行文字を指定します。次の3つの値を使用できます。

CRLF ラインフィード(LF)が後に続くキャリッジリターン(CR)
LF ラインフィードのみ(デフォルト設定)
NULL NULL文字(0x00)
デフォルト LF
制限事項 このオプションはRECFM=Vを指定した場合にのみ使用します。

USER='username'

このusernameはFTPサーバーにログオンするために使用されます。

制限事項 FTPアクセス方式では、ユーザーID認証を必要とするFTPプロキシサーバーはサポートされません。
操作 PROMPTを指定してUSER=を指定しない場合、IDの入力を求めるプロンプトがユーザーに表示されます。
ヒント FTPアクセス方式を使用するときは、プロキシサーバーとFTPサーバーの認証情報を指定できます。FTPサーバーにログインするために必要なユーザーIDとパスワードは、user="userid@ftpservername" pass="password" host="proxy.server.xxx.com"の構文を使用し、プロキシサーバー経由で送信されます。匿名とユーザーIDの検証の両方がサポートされます。
ディレクトリリストの検索

WAIT_MILLISECONDS=milliseconds

FTPの応答時間をミリ秒で指定します。

デフォルト 1,000ミリ秒
ヒント “connection closed; transfer aborted”または“network name is no longer available”というメッセージがログに表示される場合は、 WAIT_MILLISECONDSオプションを使用して応答時間を長くします。
FEXIST関数を使用する場合で、関数がデータセットが見つからないと返すがそのデータセットはカタログに含まれている場合、 WAIT_MILLISECONDSオプションを使って応答時間を増やします。

詳細

FTPアクセス方式を使用するとファイルのアップロードやダウンロードを実行できます。この方式では最初にファイルをシステム上に保存せずに、SASセッションに直接読み込みます。
SAS 9.4のメンテナンスリリース3では、FTPアクセス方式でセキュアFTP (FTPS)もサポートされます。FTPSでは、サーバー側公開鍵認証証明書およびクライアント側認証証明書の使用も含めて、TLS (Transport Layer Security)およびSSL (Secure Socket Layer)暗号化プロトコルが完全にサポートされます。
URLが“http”ではなく“https”で始まるときは、TLS (Transport Layer Security)プロトコルが使用されます。TLSとその先行プロトコルであるSSL (Secure Sockets Layer)は、インターネット経由で通信セキュリティを提供するために設計された暗号化プロトコルです。また、TLSおよびSSLプロトコルは、ネットワークデータのプライバシー、データ整合性、認証を提供します。さらに、TLSは、暗号化サービスを提供する以外にも、クライアントおよびサーバー認証を実行するほか、メッセージ認証コードを使用してデータ整合性を確保します。TLSプロトコルを使うと、クライアント/サーバーアプリケーションは、盗聴や改ざんを防ぐために設計された方法を通じて、ネットワーク通信が行えるようになります。TLSは、すべての主要ブラウザでサポートされています。
アクセス先のFTPサーバーの名前は、そのサーバーに対して作成されたTLSまたはSSL証明書の名前と一致する必要があります。UNIXおよびz/OS動作環境の場合、TLSまたはSSL証明書は、ASCIIファイルに保存し、SSLCALISTLOC=システムオプションで参照する必要があります。SSLCALISTLOC=システムオプションでは、信頼チェーンにおけるすべての信頼された証明機関(CA)の公開証明書を含む単一ファイルの場所が指定されます。Windows動作環境では、TLSまたはSSL証明書は、コンピュータの証明書ストアにインポートする必要があります。
注: TLSに関する説明はすべて、先行プロトコルであるSSLに対しても適用されます。
z/OS固有: FILENAME FTPステートメントにAUTHTLS、PBSZ=、PROT=オプションが含まれない場合や、SSLCALISTLOCシステムオプションが指定されない場合は、FTP基本認証が使用されます。SSLCALISTLOCシステムオプションを指定した場合は、FTPサーバーに許可されればTLS認証が適用されます。AUTHTLSコマンドが失敗した場合、FTP基本認証が使用されます。
UNIX固有: FILENAME FTPステートメントにAUTHTLS、PBSZ=、PROT=オプションが含まれない場合や、SSLCALISTLOCシステムオプションが指定されない場合は、FTP基本認証が使用されます。SSLCALISTLOCシステムオプションを指定した場合は、FTPサーバーに許可されればTLS認証が適用されます。AUTHTLSコマンドが失敗した場合、FTP基本認証が使用されます。
Windows固有: FILENAME FTPステートメントにAUTHTLS、PBSZ=、PROT=オプションが含まれない場合は、TLS認証が試行されます。TLS認証が許可されない場合は、FTP基本認証が使用されます。

比較

FTPのgetコマンドやputコマンドと同じように、FTPアクセス方式を使用するとファイルのアップロードやダウンロードを実行できます。ただし、この方式では最初にファイルをシステム上に保存せずに、SASセッションに直接読み込みます。

例1: ディレクトリリストの検索

次の例では、ユーザーsmytheを使用し、mvshost1 という名前のホストからディレクトリリストを取得します。次に、smytheのパスワードの入力を求めるプロンプトを表示します。
filename dir ftp '' ls user='smythe' 
   host='mvshost1.mvs.sas.com' prompt;
data _null_;
   infile dir;
   input;
   put _INFILE_;
run;
注: ファイルは転送しないため、一重引用符のみ指定します。ただし、この構文では一重引用符が必要なので、指定する必要があります。

例2: リモートホストからのファイル読み込み

この例では、リモートUNIXホストhp720からディレクトリ/u/kudzu/mydataにあるsalesという名前のファイルを読み込みます。
filename myfile ftp 'sales' cd='/u/kudzu/mydata'
   user='guest' host='hp720.hp.sas.com'
   recfm=v prompt;
data mydata / view=mydata;   /* Create a view */
   infile myfile;
   input x $10. y 4.;
run;
proc print data=mydata;     /* Print the data */
run;

例3: リモートホスト上のファイルの作成

次の例では、ホストwinnt.pc上でユーザーbbaileyを使用し、ディレクトリc:\remoteの中にtest.datという名前のファイルを作成します。
filename create ftp 'c:\remote\test.dat'
   host='winnt.pc'
   user='bbailey' prompt recfm=v;
data _null_;
   file create;
   do i=1 to 10;
      put i=;
   end;
run;

例4: z/OS上のS370V形式ファイルの読み込み

この例では、z/OSシステムからS370V形式ファイルを読み込みます。RCMD='site rdw'の詳細については、RCMD=オプションを参照してください。
filename viewdata ftp 'sluggo.stat.data'
   user='sluggo' host='zoshost1'
   s370v prompt rcmd='site rdw';
data mydata / view=mydata;   /* Create a view */
   infile viewdata;
   input x $ebcdic8.;
run;
proc print data=mydata;     /* Print the data */
run;

例5: FTPに匿名でログインする

この例では、ホスト側で匿名のログインを許可している場合に、FTPに匿名でログインする方法を示します。
注: 匿名FTPサーバーによっては、パスワードが必要になる場合があります。パスワードの入力が必要な場合、通常は電子メールアドレスを使用します。“FTPオプション”の下のPASS=オプションを参照してください。
filename anon ftp '' ls host='130.96.6.1' 
   user='anonymous';
data _null_;
   infile anon;
   input;
   list;
run;
注: 引数FTPの後ろには一重引用符のみ指定されています。ファイル名はファイルの転送時にのみ指定する必要があります。コマンドの送信時に指定する必要はありません。ただし、一重引用符は指定する必要があります。

例6: エンコードされたパスワードの使用

この例では、FILENAMEステートメントでエンコードされたパスワードを使用する方法を示します。
各SASセッションで、PWENCODEプロシジャを使用してパスワードをエンコードした後、出力内容をメモする必要があります。
proc pwencode in= "MyPass1";
run;
次の出力内容がSASログに表示されます。
(sas001)TX1QYXNzMQ==
この段階で、完全にエンコードされたパスワードの文字列をバッチプログラムで使用することができます。
filename myfile ftp 'sales' cd='/u/kudzu/mydata'
   user='tjbarry' host='hp720.hp.mycompany.com'
   pass="(sas001)TX1QYXMZ==";

例7: 移送データセットのインポート

次の例では、CIMPORTプロシジャを使用します。ユーザーcalvin指定し、myshost1という名前のホストから移送データセットをインポートします。新しいデータセットはSASUSERライブラリに保存されます。ユーザーとパスワードにはSASマクロ変数を指定できます。完全修飾データセット名を指定する場合、二重引用符と一重引用符を使用してください。使用しない場合、システムによってプロファイルの接頭辞が指定した名前に追加されます。
%let user=calvin;
%let pw=xxxxx;
filename inp ftp "'calvin.mat1.cpo'" user="&user"
   pass="&pw" rcmd='binary'
   host='mvshost1';
proc cimport library=sasuser infile=inp;
run;

例8: SASライブラリの移送

次の例では、CPORTプロシジャを使用します。ユーザーcalvinを指定し、mvshost1という名前のホストにSASライブラリを移送します。これにより、userid.mat64.cpoという名前のホストに順編成ファイルが作成されます。レコード形式の値はfb、lreclの値は80、blocksizeは8000に設定されます。
filename inp ftp 'mat64.cpo' user='calvin' 
   pass="xxxx" host='mvshost1'
   lrecl=80 recfm=f blocksize=8000
   rcmd='site blocksize=800 recfm=fb lrecl=80';
proc cport library=mylib file=inp;
run;

例9: 移送エンジンを用いた移送ライブラリの作成

この例では、ホストmvshost1上に新しいSASライブラリを作成します。FILENAMEステートメントにより、ファイル参照名が新しいデータセットに割り当てられます。インポートファイルの属性を指定するには、RCMD=オプションを使用します。LIBNAMEステートメントでは、ファイル参照名と同一のライブラリ参照名を使用し、XPORTエンジンにそれを割り当てます。PROC COPYステップでは、MYLIBで参照されるSASライブラリからXPORTエンジンにデータセットをすべてコピーします。PROC CONTENTSステップの出力内容からコピーが正常に実行されたことがわかります。
filename inp ftp  'mat65.cpo' user='calvin' 
   pass="xxxx"  host='mvshost1'
   lrecl=80 recfm=f blocksize=8000
   rcmd='site blocksize=8000 recfm=fb lrecl=80';
libname mylib 'SAS-library';
libname inp xport;
proc copy in=mylib out=inp mt=data;
run;
proc contents data=inp._all_;
run;
注: XPORTエンジンの詳細については、XisError: No pubcode in link data found for lrconおよびXisError: No pubcode in link data found for movefileを参照してください。

例10: ディレクトリからの読み込みと書き込み

次の例では、UNIXホスト上のディレクトリからファイルftpmem1を読み込み、他のUNIXホスト上の別のディレクトリにファイルftpout1 を書き込みます。
filename indir ftp '/usr/proj2/dir1' DIR
   host="host1.mycompany.com"
   user="xxxx" prompt;
filename outdir ftp '/usr/proj2/dir2' DIR FILEEXT
   host="host2.mycompany.com"
   user="xxxx" prompt;
data _null_;
   infile indir(ftpmem1) truncover;
   input;
   file outdir(ftpout1);
   put _infile_;
run;
ファイルftpout1は、/usr/proj2/dir2/ftpout1.DATA に書き込まれます。FILENAMEステートメントの出力ファイルにFILEEXTオプションが指定されているので、DATAのメンバタイプがftpout1ファイルに追加されます。詳細については、FILEEXTオプションを参照してください。
注: ODS出力先によっては、DIRオプションが必要ない場合があります。
次の例では、出力ファイルを書き込み、ODSで指定した出力先にそのファイルを転送します。DIRオプションを指定する必要はありません。
filename output ftp "~user/ftpdir/" host="host.fyi.company.com" user="userid"  
pass="userpass" recfm=s debug;
ods html body='body.html' path=output;
proc print data=sashelp.class;run;
複数のグラフファイルをリモートディレクトリの場所にエクスポートする場合は、FILENAMEステートメントにDIRオプションを指定する必要があります。そのため、ODS HTML出力先を指定して外部グラフファイルを作成する場合、FILENAMEステートメントが2つ必要になります。1つはHTMLファイルに使用し、もう1つはグラフファイルに使用します。2つのFILENAMEステートメントが必要な例を次に示します。
filename output1 ftp "~user/dir" fileext host="host.unx.company.com"
   user="userid" pass="userpass" recfm=s debug;
filename output2 ftp "~user/dir" dir fileext host="host.unx.company.com"
   user="userid" pass="userpass" recfm=s debug;
ods html body='body.html' path=output1 gpath=output2
   frame='frames.html' contents='contents.html';
proc gtestit;
run;
quit;
;

例11: プロキシサーバーの使用

この例では、FTPアクセス方式でプロキシサーバーを使用します。ユーザーIDとパスワードはプロキシサーバーを経由して送信されます。
filename test ftp ' ' ls
   host='proxy.server.xxx.com'
   user='userid@ftpservername'
   pass='xxxxxx'
   cd='pubsdir/';
data _null_;
   infile test truncover;
   input a $256.;
   put a=;
run;

関連項目:

システムオプション:
XisError: No pubcode in link data found for secref
前のページ|次のページ|ページの先頭へ