3

既存のファイルにレコードを追加する場合、どのDISPパラメーターを使用する必要がありますか?

4

1 に答える 1

6

DISP=MOD

これは、既存のシーケンシャル データセットの末尾に追加されます。指定されたデータセットがまだ存在しない場合は、作成されます (この場合、DISP=MOD と DISP=NEW は同等です)。

次の点に注意してください。

マルチボリューム データセット

の動作はDISP=MOD、特定のボリュームを指定するかどうかによって異なります。 ルールについては、このリファレンスを確認してください。

分割されたデータセット

DSNAME パラメーターでメンバー名を指定する場合、そのメンバー名はまだ存在していてはなりません。システムは、読み取り/書き込みメカニズムをデータ セットの最後に配置します。メンバー名がすでに存在する場合、システムはジョブを終了します。

メンバー名を指定しない場合、システムは読み取り/書き込み機構をデータ・セットの最後に配置します。システムは、ディレクトリへの自動エントリを作成しません。

PDS/PDSE のメンバーの最後にデータを追加するのはちょっとしたトリックです。通常、メンバー全体を削除して、新しいレコードが追加された状態で再書き込みする必要があります。

順次データセットと COBOL OPEN 動詞

DISPJCL で指定されたものと COBOLOPEN動詞の間には「相互作用」があります。

JCL で指定すると、COBOL プログラムはとDISP=MODの両方の順次データセットの末尾にレコードを追加します。OPEN OUTPUTOPEN 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

于 2010-07-12T13:42:17.133 に答える