ディレクトリIDとメンバ名でファイルを開き、ファイルIDまたは0のいずれかを返します。
カテゴリ: | 外部ファイル |
z/OS固有: | ファイルシステム、オープンモード |
UNIX固有: | オープンモード |
ディレクトリが(通常はDOPEN関数により)開かれたときに割り当てられたIDを指定する数値変数です。
ディレクトリ内のメンバ名を指定する文字定数、変数または式です。
ファイルへのアクセスの種類を指定する文字定数、変数または式です。
A | APPENDモード:現在のファイルの最後の後に新しいレコードを書き込むことができます。 |
I | INPUTモード:読み取り専用です(デフォルト)。 |
O | OUTPUTモード:FILENAMEステートメントまたは関数の動作環境オプションで指定したデフォルトのOPENモードになります。動作環境オプションが指定されていない場合、ファイルの先頭に新しいレコードを書き込むことができます。 |
S | Sequential Inputモード:パイプや他のシーケンシャルデバイス(ハードウェアポートなど)に使用されます。 |
U | UPDATEモード:読み込みと書き込みの両方ができます。 |
W | シーケンシャル更新モードは、パイプおよびその他のシーケンシャルデバイス(ポートなど)に使用します。 |
デフォルト | I |
ファイルの新しい論理レコード長を指定する、数値変数、数値定数または数値式です。ファイルの既存のレコード長を使用するには、0の長さを指定するか、ここでは値を指定しません。
ファイルの新しいレコード出力形式を指定する、文字定数、変数または式です。既存のレコード形式を使用する場合は、ここでは値を指定しません。有効な値は次のとおりです。
B | データがバイナリデータとして解釈されることを指定します。 |
D | デフォルトのレコード出力形式を指定します。 |
E | 編集可能なレコード出力形式を指定します。 |
F | ファイルに固定長のレコードが含まれることを指定します。 |
P | ファイルに動作環境に依存するレコード出力形式でプリンタキャリッジ制御が含まれることを指定します。 |
V | ファイルに可変長のレコードが含まれることを指定します。 |
%let rc=%sysfunc(filename(file, physical-name, , mod)); %let did=%sysfunc(dopen(&file)); %let fid=%sysfunc(mopen(&did, member-name, o, 0, d)); %let rc=%sysfunc(fput(&fid, This is a test.)); %let rc=%sysfunc(fwrite(&fid)); %let rc=%sysfunc(fclose(&fid));
'file'
がすでに存在する場合、FWRITEはレコードをファイルの先頭に書き込むかわりに、新しいレコードを追加します。ただし、FILENAME関数で動作環境オプションが指定されていない場合、出力モードはレコードが置換されることを示します。
%let filrf=mydir; %let rc=%sysfunc(filename(filrf, physical-name)); %let did=%sysfunc(dopen(&filrf)); %let frstname=' '; %let memcount=%sysfunc(dnum(&did)); %if (&memcount > 0) %then %do; %let frstname= %sysfunc(dread(&did, 1)); %let fid= %sysfunc(mopen(&did, &frstname, i, 0, d)); macro statements to process the member %let rc=%sysfunc(fclose(&fid)); %end; %else %put %sysfunc(sysmsg()); %let rc=%sysfunc(dclose(&did));