既存のファイルにレコードを追加する場合、どのDISPパラメーターを使用する必要がありますか?
1 に答える
DISP=MOD
これは、既存のシーケンシャル データセットの末尾に追加されます。指定されたデータセットがまだ存在しない場合は、作成されます (この場合、DISP=MOD と DISP=NEW は同等です)。
次の点に注意してください。
マルチボリューム データセット
の動作はDISP=MOD
、特定のボリュームを指定するかどうかによって異なります。
ルールについては、このリファレンスを確認してください。
分割されたデータセット
DSNAME パラメーターでメンバー名を指定する場合、そのメンバー名はまだ存在していてはなりません。システムは、読み取り/書き込みメカニズムをデータ セットの最後に配置します。メンバー名がすでに存在する場合、システムはジョブを終了します。
メンバー名を指定しない場合、システムは読み取り/書き込み機構をデータ・セットの最後に配置します。システムは、ディレクトリへの自動エントリを作成しません。
PDS/PDSE のメンバーの最後にデータを追加するのはちょっとしたトリックです。通常、メンバー全体を削除して、新しいレコードが追加された状態で再書き込みする必要があります。
順次データセットと COBOL OPEN 動詞
DISP
JCL で指定されたものと COBOLOPEN
動詞の間には「相互作用」があります。
JCL で指定すると、COBOL プログラムはとDISP=MOD
の両方の順次データセットの末尾にレコードを追加します。OPEN OUTPUT
OPEN EXTEND
JCL で指定するDISP=OLD
と、COBOL プログラムは の順次データセットの末尾にレコードを追加しOPEN EXTEND
ます。シーケンシャル データセットを として開くと、データセットOPEN OUTPUT
の元の内容が削除され、空のデータセットから再び開始することになります (データセットを削除して再割り当てしたかのように)。
VSAM データセット
Virtual Storage Access Method (VSAM) ファイルは、まったく別のやかんです。VSAM データセットには、さまざまな組織があります。
- KSDS (キー順データセット)
- ESDS (入力順データセット)
- RRDS (相対レコード データ セット)
- LSD (リニア スペース データ セット)
組織にはそれぞれ独自の特徴と用途があります。
VSAM データセットは、COBOL プログラムが参照する前に事前定義する必要があります。これは、多くの場合、個別の
IDCAMSジョブとして実行されます。VSAM データセットが定義されると、COBOL (またはその他の) プログラムからアクセスできます。この
リファレンスは、COBOL で VSAM データセットを操作するための優れた概要を提供します。セクション: VSAM データセットへの
レコードの追加では、COBOL プログラムから VSAM データセットにレコードを追加する詳細について説明します。COBOL open ステートメントのバージョンを使用してOPEN EXTEND
、既存の ESDS または KSDS VSAM データセットの末尾にレコードを追加します。KSDS データセットの場合、キーに関して昇順でレコードを追加する必要があることに注意してください。
VSAM データセットをプログラムに接続するために使用される JCL は、実際には非常に単純であり、ここで説明されています。使用方法は、既存の VSAM データセットの場合DISP=MOD
と同じです (どちらを使用しても違いはありません)。データセットを更新せず、他のプログラムの同時アクセスをブロックしたくない場合にDISP=OLD
使用します。DISP=SHR