IBM System/360シリーズおよびその後継機種のIBMメインフレームコンピュータにおいて、データセット(IBM推奨)または データセットとは、レコード編成を持つコンピュータファイルのことです。この用語は、例えばDOS/360やOS/360から使用され始め、現在のVSEやz/OSを含む後継機種でも引き続き使用されています。これらのシステムのドキュメントでは、従来「ファイル」よりもこの用語が好まれていました。
データセットは通常、直接アクセス記憶装置(DASD)または磁気テープに保存されますが、[ 1 ]パンチカードリーダー、カードパンチ、ラインプリンタ、ページプリンタなどのユニットレコードデバイスは、データセット(ファイル)の入出力(I/O)を提供できます。[ 2 ]
データセットは、構造化されていないバイトのストリームではなく、(データセット構成)、 (レコード形式)、およびその他のパラメータによって決定されるさまざまな論理レコード[ 3 ]およびブロック構造に編成されています。これらのパラメータは、たとえばジョブ制御言語ステートメントを使用して、データセットの割り当て(作成)時に指定されます。実行中のプログラム内では、データ制御ブロック(DCB)またはアクセス制御ブロック(ACB)に格納されます。これらは、アクセス方法を使用してデータセットにアクセスするために使用されるデータ構造です。DSORGRECFMDD
データセット内のレコードは、固定長、可変長、または「未定義」長のいずれかになります。[ 4 ]
OS/360の場合、DCBのDSORGパラメータはデータセットの構成方法を指定します。それは[ 5 ]である可能性があります。
とりわけ。テープ上のデータセットは、特定の形式に限られるDSORG=PS。データの整理方法は、データのアクセス方法、特に更新方法によって決まる。
プログラマーは、データセットの読み書きを行うプログラムにおいて、QSAMやVSAMなどの様々なアクセス方式を利用します。アクセス方式は、データセットの構成によって異なります。
組織に関係なく、各レコードの物理構造は基本的に同じで、データセット全体で均一です。これは DCBRECFMパラメーターで指定されます。はRECFM=F、レコードが固定長であることを意味し、LRECLパラメーターで指定されます。RECFM=Vは可変長レコードを指定します。メディアに格納される V レコードには、レコードの整数長(バイト単位)とフラグビットを含むレコード記述子ワード (RDW) がプレフィックスとして付加されます。 と を使用するとRECFM=FB、RECFM=VB複数の論理レコードがテープまたは DASD 上の単一の物理ブロックにグループ化されます。 FB と VB は、それぞれ固定ブロックと可変ブロックです。RECFM=U(未定義) も可変長ですが、レコードの長さは制御フィールドではなくブロックの長さによって決定されます。
このBLKSIZEパラメータはブロックの最大長を指定します。RECFM=FBS[ 6 ]も指定できます。これは、固定ブロック標準を意味し、最後のブロックを除くすべてのブロックが完全な長さである必要があることを意味しますBLKSIZE。RECFM=VBSまたは、可変ブロックスパンは、論理レコードが 2 つ以上のブロックにまたがる可能性があることを意味し、RDW のフラグは、レコードセグメントが次のブロックに継続されているか、前のブロックから継続されているかを示します。
このメカニズムにより、レコードを区切るための「区切り文字」バイト値を使用する必要がなくなります。そのため、データはバイナリ整数、浮動小数点数、文字など、どのような型であっても、誤ったレコード終端条件が発生することはありません。データセットは、非構造化バイトストリームであるファイルとは異なり、レコードの集合を抽象化したものです。
パーティションデータセット(PDS)[ 7 ]は、複数のメンバーを 含むデータセットであり、各メンバーは他のファイルシステムのディレクトリと同様に、個別のサブデータセットを保持します。このタイプのデータセットは、ロードモジュール(旧形式のバインドされた実行可能プログラム)、ソースプログラムライブラリ(特にアセンブラマクロ定義)、ISPF画面定義、およびジョブ制御言語を格納するためによく使用されます。PDSは、 ZipファイルやCOM構造化ストレージと比較できます。
パーティション化されたデータセットは、単一のボリュームにのみ割り当てることができ、最大サイズは65,535トラックです。
PDSはメンバーに加えてディレクトリも含んでいます。各メンバーにはディレクトリ構造を介して間接的にアクセスできます。メンバーが見つかると、そのメンバーに格納されているデータはPS(シーケンシャル)データセットと同様の方法で処理されます。
メンバーが削除されるたびに、そのメンバーが占めていた領域は他のデータの格納に使用できなくなります。同様に、メンバーが書き換えられると、PDS の末尾の新しい場所に格納され、中央に無駄な「デッド」領域が残ります。「デッド」領域を回復する唯一の方法は、ファイル圧縮を実行することです。[ 8 ] IEBCOPYユーティリティを使用して実行される圧縮[ 9 ] は、すべてのメンバーをデータ領域の先頭に移動させ、末尾に使用可能な空き領域を残します。(現代の用語では、この種の操作はデフラグメンテーションまたはガベージコレクションと呼ばれることがあります。今日のデータ圧縮は、より複雑な別の概念を指します。)PDS ファイルは、ディレクトリ構造を使用して個々のメンバーにアクセスできるように、磁気テープではなくDASDにのみ配置できます。パーティション化されたデータセットは、複数のジョブ制御言語ファイル、ユーティリティ制御ステートメント、および実行可能モジュールを格納するために最もよく使用されます。
この方式を改良したものが、MVS/XAおよびMVS/ESAシステム向けにDFSMSdfpで導入されたパーティションデータセット拡張(PDSEまたはPDS/E、単にライブラリと呼ばれることもある)です。PDS/Eライブラリには、プログラムオブジェクトまたは他の種類のメンバーを格納できますが、両方を格納することはできません。BPAMは、プログラムオブジェクトを含むPDS/Eを処理できません。
PDS/E 構造は PDS と似ており、同じ種類のデータを格納するために使用されます。ただし、PDS/E ファイルはより優れたディレクトリ構造を持ち、PDS/E を定義する際にディレクトリ ブロックを事前に割り当てる必要がありません (そのため、十分なディレクトリ ブロックが指定されていない場合でも、ディレクトリ ブロックが不足することはありません)。また、PDS/E はメンバーを自動的に格納するため、「デッド」領域を解放するために圧縮操作は必要ありません。[ 8 ] PDS/E ファイルは、ディレクトリ構造を使用して個々のメンバーにアクセスするために DASD 上にのみ配置できます。
世代データグループ[ 10 ](GDG)[ 11 ]は、IBMメインフレーム(OS/360とその後継OS、またはDOS/360とその後継OSが動作)に格納された、履歴的に関連するデータの連続した世代である非VSAMデータセット[ 12 ]のグループです[ 13 ]。[ 14 ]
GDGは通常カタログ化される。[ 13 ]
GDGコレクションの個々のメンバーは「世代データセット」と呼ばれます。[ 13 ] [ 15 ]後者は、絶対番号、ACCTG.OURGDG(1234)または相対番号((-1)前の世代の場合は、(0)現在の世代の場合は、(+1)次の世代の場合は)で識別できます。[ 16 ]
GDG(データ生成規則)は、データセットの世代数と、各世代が削除される時期を指定します。新しい世代が作成されるたびに、システムは、削除すべき古い世代が1つ以上あるかどうかを確認します。
GDG の目的は、コマンド言語JCLを使用してアーカイブを自動化することです。データセット名は汎用です。DSN が表示されると、履歴番号とともに GDG データセットが表示されます。
(0)は最新バージョンです
(-1)、(-2)、…は前の世代です
(+1)新世代(DD参照)
GDGのもう一つの用途は、現在使用可能な世代数を知らなくても、JCLスクリプト内で全ての世代を同時に指定できることです。これを行うには、データセットを指定する際に、JCL内の括弧と世代番号を省略する必要があります。
世代データグループは、 IEHPROGMユーティリティのBLDGステートメント[ 17 ]または新しいIDCAMSユーティリティ[ 19 ]のステートメント[ 18 ]を使用して定義され、さまざまなパラメータを設定できます。DEFINE GENERATIONGROUP
LIMIT(10)世代数を10に制限する。SCRATCH FOR (91)各メンバーは、制限された世代数まで、少なくとも91日間保持されます。IDCAMSはGDGを削除(およびオプションでカタログから削除)することもできます。[ 20 ]
それぞれ少なくとも35日経過した5つの安全範囲に関する標準GDGの作成:
// STEP1 EXEC PGM = IDCAMS // SYSPRINT DD SYSOUT = * // SYSIN DD * DEFINE GDG (NAME('DB2.FULLCOPY.DSNDB04.TSTEST') LIMIT(5) SCRATCH FOR(35)) /*標準GDGを削除する:
// STEP3 EXEC PGM = IDCAMS // SYSPRINT DD SYSOUT = * // SYSIN DD * DELETE DB2.FULLCOPY.DSNDB04.TSTEST GDG FORCE /*テープ上のデータセットのカタログ化…
1 つ以上のレコードを含むファイル。
特定のデータセットでは、レコードは固定長または可変長のいずれかです。
可変長、ブロック、スパン (VBS)
パーティション化されたデータ セットには、削除されたメンバーまたは更新されたメンバーの古いバージョンがかつて存在していた未使用領域 (ガスと呼ばれることもあります) が含まれます。この未使用領域は、パーティション化されたデータ セットが新しいデータ セットにコピーされたとき、またはインプレース圧縮操作が正常に完了した後にのみ解放されます。これは PDSE にとって意味がなく、要求されても無視されます。
世代データグループ(GDG)の作成と処理...
生成データグループ(GDG)
VSAM...
、歴史的に関連があり、
の作成... IDCAMS が行います