PSデータセット(順次データセット)とは?
順次データセットはMVSにおける最も基本的なファイルです。ファイルの中はレコードという単位で分割されます。データを記録したレコードが順番に並んでいるため、順次編成ファイルとも呼ばれます。ディスクやテープなどに書き込まれた、順次編成ファイルとしての実体データが、順次データセットあるいは順編成データセットということになります。
順次データセットは単に先頭からレコードを並べているだけの単純な構造なので、シンプルでわかりやすくプログラミングも容易です。区分データセットやVSAM、さまざまなデータベースではディスクに格納しなければなりませんが、順次データセットはディスク以外のテープ、紙(印刷用紙)などへの記録もできます。現在では使われませんが、過去には紙カードや紙テープといったメディアもありました。
業務プログラムにおいては、処理の中間で作成される作業用データファイルや、帳票データの出力先として多用されています。その他、業務処理用のベースとなるデータファイルとしても利用されます。制御プログラムやユーティリティーにおいては、データセットやボリュームのバックアップファイルやログファイルの出力先としてよく使われています。
まとまった量のデータを格納しておくには簡単で便利ですが、レコードは単に順番に並んでいるだけなのでデータの再利用時も先頭から順番にしか取り出せません。そこでレコードの1部をキーとして扱い、キーに対応したレコードがデータセット内のどこにあるかの目次(インデックス)を持って、キーによるレコード検索を可能にする索引順データセット(ISAM)、レコードに番号を付けてその番号を指定してダイレクトに目的のレコードを取り出せるようにした直接データセット(DAM)などのデータセットもありました。ISAMもDAMも順次データセットの応用編ともいうべきものでしたが、今ではVSAMのKSDSとRRDSによって置き換えられています。特に、MVS(z/OS)ではISAMはもはやサポートすらされていません。キーやレコード番号によるアクセスはアプリケーションプログラムでは必須のしくみですが、それらはVSAMやデータベース製品を利用するのが一般的になっています。
今日のMVSでは、基本的なデータセット編成としては順次データセットと区分データセットの2種類と考えていいでしょう。z/OSにおいてはこの2種類をベースに、ストライピングなどをサポートした拡張順次データセット、自動的に拡張されるディレクトリーや圧縮不要なしくみを持つ拡張区分データセット(PDSE)、のように従来のデータセットにはなかった追加機能をサポートしたり、欠点を克服したり、の拡張がなされています。
データセットを構成するレコードにはいくつかの種類がありますが、固定長レコードと可変長レコードに大別されます。レコードは通常複数でまとめられてブロックとなり、ディスクやテープにはブロック単位で書き込まれます。MVS(MSP、VOS3)ではWindowsやUnixと異なり、ファイル(データセット)は必ずレコードによって構造化される、という特徴を持っています。バイト列が並んでいるだけのストリームではなく、例えば、とりあえず2バイトだけ読む、その内容によって次に読むべき長さを変える、改行文字(CRLF)を見つけたらその行は終わり、といったアクセスの仕方ではありません。一般のアプリケーションプログラムではレコードを単位にして読み書きするのが基本です。そのため、データセットのしくみ(ファイルシステム)を理解するには、どのような形式のレコードがあり、どのように長さを表現するか、といった知識も必要になります。また、それらはプログラミングだけでなく、データセットを作成する場合にも必要になるので、プログラマーに限らずMVSシステムに携わる人は職種に限らず覚えておきたいことです。
データセットを構成するレコードの構造、OSが提供する順次データセットのアクセスサービスなどに関しては「z/OSのしくみ:基礎編:07.データセットの種類とアクセス方式」で解説しています。