DEFINE WORK FILE n [operand1] [TYPE operand2]
|
注意:
角カッコ [...] で示されている要素はオプションですが、このステートメントではこれらのオプションの少なくとも 1 つを指定する必要があります。
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:CLOSE WORK FILE | READ WORK FILE | WRITE WORK FILE
関連機能グループ:「ワークファイル/PC ファイルの制御」
DEFINE WORK FILE
ステートメントは、Natural アプリケーション内で Natural ワークファイル番号にファイル名を割り当てるために使用します。
このステートメントを使用することで、Natural セッション内でワークファイルの割り当てをダイナミックに行ったり、変更することができます。また、別のレベルで作成したワークファイルの割り当てを上書きすることもできます。
このステートメントを実行したときに、指定したワークファイルがすでに開かれていると、ワークファイルはこのステートメントによって暗黙的に閉じられます。
セッションの間に使用するすべてのワークファイルは、プロファイルパラメータ WORK
のサブパラメータ AM
によってアクセスメソッドに事前に割り当てるか、または JCL での定義によって自動的に割り当てられます。
注意:
Unicode およびコードページのサポートについては、『Unicode およびコードページのサポート』ドキュメントの「メインフレームプラットフォーム上のワークファイルと出力ファイル」を参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | 可 | 不可 | |||||||||||||||
operand2 | C | S | A | 可 | 不可 |
構文要素の説明:
DEFINE WORK FILE n | n は、ワークファイル番号です(1~32)。 これは、WRITE WORK FILE 、READ WORK FILE 、または CLOSE WORK FILE ステートメントのいずれかで使用される番号です。
|
|
---|---|---|
operand1 | operand1 は、ワークファイルの名前です。
operand1 では、ワークファイル番号に割り当てられるデータセットの名前を指定できます。 operand1 の長さは 1 ~ 253 文字です。 名前には、論理または物理データセット名のいずれかを指定できます。 可能なフォーマットは、オペレーティングシステム環境、およびプロファイルパラメータ operand1 を指定しない場合は、このワークファイル番号に対して以前に実行した 注意: 各オペレーティングシステムまたは各 TP モニタにおけるワークファイルの命名規則については、次のセクションを参照してください。 |
|
operand2 |
operand2 はワークファイルのタイプを指定します。 operand2 の値では、大文字と小文字が区別されません。値は引用符で囲むか、英数字の変数で指定する必要があります。 |
|
UNFORMATTED |
フォーマットがまったく行われていないファイル。 フォーマット情報が書き込まれていません(フィールドまたはレコードのいずれにも)。
フォーマット:UNFORMATTED |
|
FORMATTED |
|
例:
DEFINE WORK FILE 17 #FILE TYPE 'UNFORMATTED' #TYPE := 'FORMATTED' DEFINE WORK FILE 18 #FILE TYPE #TYPE
次のトピックについて説明します。
z/OS 環境で、アクセスメソッド AM=STD
を指定してワークファイル番号を定義する場合、operand1 は次のようになります。
論理データセット名(DD 名、1~8 文字)。
カタログデータセットの物理データセット名(1~44 文字)または物理データセットのメンバ名。
MVS UNIX Services 環境の HFS ファイル(1~253 文字)のパス名およびメンバ名。
NULLFILE
。
論理データセット名 |
例: DEFINE WORK FILE 21 'SYSOUT1' 指定したデータセット SYSOUT1 は、 割り当ては、JCL、CLIST(TCO)、またはダイナミックアロケーション(SVC 99)によって実行できます。 ダイナミックアロケーションには、ライブラリ SYSEXT にあるアプリケーションプログラミングインターフェイス USR2021N を使用できます。
または、データセット名に接頭辞 DEFINE WORK FILE 22 'DDN=MYWORK' |
---|---|
物理データセット名 |
例: DEFINE WORK FILE 23 'TEST.WORK.FILE' 指定したデータセットが、カタログフォーム内に存在している必要があります。 データセット名が 8 文字以下でピリオド(.)を含んでいない場合は、誤って DD 名と解釈されている可能性があります。 これを回避するには、名前の先頭に DEFINE WORK FILE 22 'DSN=WORKXYZ' データセットが PDS メンバの場合は、データセット名(1~44 文字)の後に PDS メンバ名(1~8 文字)をカッコで囲んで指定します。 次に例を示します。 DEFINE WORK FILE 4 'TEST.WORK.PDS(TEST1)' 指定したメンバが存在しない場合は、指定した名前の新しいメンバが作成されます。 |
HFS ファイル |
例: DEFINE WORK FILE 14 '/u/nat/rec/test.txt' 指定したパス名が存在する必要があります。 データセットのダイナミックアロケーションでは、次の z/OS パスオプションを使用します。 PATHOPTS=(OCREAT,OTRUNC,ORDWR) PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP) FILEDATA=TEXT HFS ファイルを閉じると、z/OS によってそのファイルの割り当てが自動的に解除されます(プロファイルパラメータ HFS ファイルを読み取るには、 |
JES スプールファイルクラス |
JES スプールデータセットを作成するには、 例: DEFINE WORK FILE 10 'SYSOUT=A' DEFINE WORK FILE 12 'SYSOUT=*' ダイナミックアロケーションの追加パラメータを指定するには、 |
NULLFILE | ダミーのデータセットを示します。 |
DEFINE WORK FILE
ステートメントを実行するときに、物理データセット名、HFS ファイル、スプールファイルクラス、またはダミーデータセットがすでに指定してある場合、対応するデータセットが自動的に割り当てられます。 論理ファイルがすでに開いていると、その論理ファイルは自動的に閉じられます。ただし、プロファイルパラメータ
WORK
のサブパラメータ CLOSE=FIN
を指定してある場合は、エラーが発行されます。 また、新しいデータセットを割り当てる前に、同じ現在の DD 名で割り当てられている既存のデータセットは、自動的に割り当てが解除されます。 プログラムの開始時にまだ割り当てられていないワークファイルのオープンに失敗して不要なオーバーヘッドが発生するのを防止するために、プロファイルパラメータ
WORK
のサブパラメータ OPEN=ACC
(最初のアクセス時に開く)を指定してワークファイルを定義する必要があります。
HFS ファイルの場合、またはプロファイルパラメータ WORK
のサブパラメータ FREE=ON
を指定してワークファイルを定義した場合は、これらのファイルを閉じると、直ちにワークファイルの割り当てが自動的に解除されます。
データセットのダイナミックな割り当てと割り当て解除の代わりとして、ライブラリ SYSEXT でアプリケーションプログラミングインターフェイス USR2021N(ダイナミックデータセットアロケーション)が提供されています。 また、この API を使用すると、ダイナミックアロケーションの追加パラメータを指定することもできます。
サーバー環境では、複数の Natural セッションによって同じ DD 名でデータセットの割り当てまたはオープンが試みられると、エラーが発生することがあります。 これを回避するには、プロファイルパラメータ WORK
のサブパラメータ DEST=*
でワークファイルを指定するか、または実際の DEFINE WORK FILE
ステートメントの前にプログラム内で DEFINE WORK FILE '*'
を指定して、そのワークファイルに対して最初の DEFINE WORK FILE
ステートメントを実行するときに、Natural が物理データセットの割り当てで一意な DD 名を生成するようにします。
DD 名が CM
で始まるすべてのワークファイルは、サーバー環境内のすべてのセッションによって共有されます。 最初のセッションによって出力用に開かれた共有ワークファイルは、サーバーを終了すると物理的に閉じられます。 入力用に開かれた共有ワークファイルが物理的に閉じられるのは、最後のセッションがそのワークファイルを閉じるとき、つまり最後のセッションがエンドオブファイル条件を受信するときです。
ワークファイルの読み取りが複数同時に行われた場合は、1 つのファイルレコードが 1 つの READ WORK FILE
ステートメントだけに提供されます。
z/VSE 環境で、アクセスメソッド AM=STD
を指定してワークファイル番号を定義する場合、operand1 は次のようになります。
論理データセット名(DD 名、1~7 文字)
NULLFILE
(ダミーのデータセットを示すため)
論理データセット名 |
例: DEFINE WORK FILE 21 'SYSOUT1' 指定するデータセット SYSOUT1 は、JCL や、z/VSE の標準またはパーティションラベルで定義されている必要があります。
または、データセット名に接頭辞 DEFINE WORK FILE 22 'DDN=MYWORK' |
---|---|
NULLFILE |
ダミーのデータセットを割り当てるには、operand1 として DEFINE WORK FILE n 'NULLFILE' |
VM/CMS 環境で、AM=STD
を指定してワークファイルを定義する場合、operand1 には z/OS 環境と同じことが適用されますが(上記を参照)、次の点で異なります。
MVS SVC 99 によるダイナミックアロケーションの代わりに、CMS コマンド FILEDEF
を使用してファイルを定義します。
HFS ファイルはサポートされていません。
JES スプールクラスはサポートされていません。
また、次の構文を使用します。
DEFINE WORK FILE n 'fname ftype fmode (options)'
これは CMS コマンドを生成します。
FILEDEF ddname-n DISK fname ftype fmode (options)
さらに、次の構文を使用できます。
DEFINE WORK FILE n 'FILEDEF=filedef-parameters'
これは CMS コマンドを生成します。
FILEDEF ddname-n =filedef-parameters
次に例を示します。
DEFINE WORK FILE 5 'FILEDEF=TAP1 SL 2 VOLID BKUP08 (BLKSIZE 20000)'
これは CMS コマンドを生成します。
FILEDEF CMWKF05 TAP1 SL 2 VOLID BKUP08
AM=CMS
を指定してワークファイルを定義する場合は、DEFINE WORK FILE
を使用して送り先を変更できます。 パラメータマクロ NTWORK
のサブパラメータ DEST
で指定できる送り先以外に、REXX のステムも定義できます。 詳細については、『オペレーション』ドキュメントの「出力ファイルおよびワークファイルのサポート」を参照してください。
BS2000/OSD 環境で、アクセスメソッド AM=STD
を指定してワークファイル番号を定義する場合は、operand1 を使用して、このワークファイルに割り当てるファイル名またはリンク名を指定できます。
この場合、operand1 は長さが 1~253 文字になり、次のいずれかを表します。
BS2000/OSD でのリンク名(1~8 文字)
BS2000/OSD でのリンク名(9~54 文字)
BS2000/OSD での汎用ファイル名(ワイルドカード)
BS2000/OSD でのファイル名とリンク名
BS2000/OSD での汎用ファイル名と汎用リンク名(ワイルドカード)
次の規則が適用されます。
ファイル名とリンク名は、位置指定パラメータとしてもキーワードパラメータとしても指定できます。 対応するキーワードは、FILE=
および LINK=
です。 位置指定パラメータとキーワードパラメータの混在は可能ですが、お勧めしません。
コンマなしの 1~8 文字長の文字列はリンク名と解釈されます。 この表記は Natural の旧バージョンと互換性があります。 例:
DEFINE WORK FILE 1 'W01'
キーワードパラメータを使用した対応する定義は次のとおりです。
DEFINE WORK FILE 1 'LINK=W01'
コンマなしの 9~54 文字長の文字列はファイル名と解釈されます。
例:
DEFINE WORK FILE 2 'NATURALvr.TEST.WORKFILE02'
vr は、Natural バージョンとリリース番号です。
キーワードパラメータを使用した対応する定義は次のとおりです。
DEFINE WORK FILE 2 'FILE=NATURALvr.TEST.WORKFILE02'
次の入力は、長さを考慮せずに解釈されるので、ルール 2 と 3 の例外です。
キーワード入力:LINK=
、FILE=
*DUMMY
NULLFILE
(*DUMMY
と同じ)
*
*,*
例:DEFINE WORK FILE 7 'FILE=Y'
は文字列に含まれる文字数が 9 文字未満ですが、有効なファイル割り当てであり、リンク名ではありません。
一般的なファイル名の形式は次のとおりです。
Wnn.userid.tsn.date.time.number
上記の意味は次に示すとおりです。
nn | ワークファイル番号 |
---|---|
userid | Natural ユーザー ID、8 文字 |
tsn | 現在のタスクの BS2000/OSD TSN、4 桁 |
date | DDMMYYYY |
time | HHIISS |
number | 番号、5 桁 |
一般的なリンク名の形式は次のとおりです。
NWFnnnnn
nnnnn は 5 桁の数字で、ダイナミックリンク名が生成されるたびに 1 ずつ増加します。
ワークファイル番号へのファイル割り当てを変更すると、割り当てられていたワークファイルは CLOSE
により暗黙的に閉じられます。
リンク名のみを指定する場合(例:W01
)を除き、すべての場合においてキーワードパラメータを使用することをお勧めします。 これは、追加レポートとの解釈の競合を防止し、9 文字未満のファイル名を使用する場合に必須です。
例:
DEFINE WORK FILE 3 'LINK=#W03' DEFINE WORK FILE 3 'FILE=#W03'
リンク名 |
例: DEFINE WORK FILE 1 'LINKW01' 次の構文と同じ意味です。 DEFINE WORK FILE 1 'LINK=LINKW01' LINK |
---|---|
ファイル名 |
例: DEFINE WORK FILE 2 'NATURALvr.TEST.WORK02' 次の構文と同じ意味です。 DEFINE WORK FILE 2 'FILE=NATURALvr.TEST.WORK02' vr は、Natural バージョンとリリース番号です。 operand1 で指定したファイルは、 |
一般的なファイル名 |
例: DEFINE WORK FILE 21 '*' 次の構文と同じ意味です。 DEFINE WORK FILE 21 'FILE=*' ルール 4 に従って作成した名前を持つファイルは、 DEFINE WORK FILE 22 'FILE=*,LINK=WFLK22' ルール 4 に従って作成した名前を持つファイルには、指定したリンク名が |
ファイル名とリンク名 |
例: DEFINE WORK FILE 11 'NATURALvr.TEST.WORKF11,LNKW11' 次の構文と同じ意味です。 DEFINE WORK FILE 11 'FILE=NATURALvr.TEST.WORKF11,LINK=LNKW11' 次の構文も同じ意味です。 DEFINE WORK FILE 11 'FILE=NATURALvr.TEST.WORKF11,LNKW11' vr は、Natural バージョンとリリース番号です。 operand1 で指定したファイルには、指定したリンク名が |
一般的なファイル名とリンク名 |
例: DEFINE WORK FILE 27 '*,*' 次の構文と同じ意味です。 DEFINE WORK FILE 27 'FILE=*,LINK=*' ルール 4 およびルール 5 に従って作成したファイル名を持つファイルは、 注意: |
*DUMMY | ダミーのデータセットを示します。 |
アクセスメソッド AM=CICS
を指定してワークファイル番号を定義する場合は、ワークファイルのプロファイルパラメータ WORK
のサブパラメータ TYPE
に合わせて、operand1 を一時データまたは一時ストレージキューの名前(1~8 文字)にすることができます。 TYPE=TD
では、operand1 の最初の 4 文字だけが保持されるので、事前に一時データの送り先として CICS を指定しておく必要があります。
ワークファイルの詳細については、「CICS 環境での Natural の出力ファイルおよびワークファイル」(『TP モニタインターフェイス』ドキュメント)も参照してください。
Com-plete 環境で AM=SMARTS
を指定すると、PFS ファイルを利用できます。 まだワークファイル名が Natural に定義されていない場合でも、任意のワークファイル名を割り当てることができます。 次に例を示します。
DEFINE WORK (14) '/nat/path/workfile' DEFINE WORK (14) 'workfile'
ファイルが SMARTS ポータブルファイルシステムまたはネイティブファイルシステムのどちらにあるかは、SMARTS の MOUNT_FS
パラメータによって異なります。 パスの最初の要素(/nat/)により、ターゲットファイルシステムが決定されます。
文字列の先頭がスラッシュ(/)でない場合は、ファイルのパスが環境変数 $NAT_WORK_ROOT
から取得されます。
指定したパス名が存在する必要があります。 DEFINE WORK FILE
ステートメントを実行すると、ファイルがダイナミックに割り当てられます。 指定したメンバが存在しない場合は、指定した名前の新しいメンバが作成されます。