DDステートメントの連結(コンカチネーション)

DDステートメントの連結(コンカチネーション)とは、複数のデータセットを1つのファイルとして定義することで、MVSのJCLにおける大きな特長の1つです。連結されたデータセットは読み込み専用になりますが、複数のデータセットに分かれて格納されているデータ・レコードをまとめて処理するような場合に便利な機能です。

アプリケーション・プログラムなどの処理では、複数の順次データセットを連結して処理することがよくあります。上記の例では、プログラムは12個のデータセットを1つのINFILEとしてアクセスします。月別のデータファイルを1年分まとめて処理するような場合、事前にデータセットをマージしておく必要がありません。

区分データセット(PDSE含む)も連結できます。最も多いのがプログラムで使用するロードモジュールが格納されたライブラリーの定義です。共通で使用するサブルーチンなどが別のデータセットにある場合、メインのプログラムが格納されたライブラリーと連結してSTEPLIBとして定義します。メンバーは連結定義の先頭データセットから探索されます。同名のメンバーが存在する場合、連結の先頭に近い場所に定義したデータセットから読み込まれます。

MVSではファイルとデータセットは似ているようで違います。ファイルはプログラムから見たデータレコードの集まりで論理的なデータの集合体を指し、データセットはディスクやテープに記録されている実体としてのデータレコードの集まりで物理的に格納されたデータです。両者の違いはJCLでDDステートメントを連結するとわかりやすいです。最初の例では、プログラムからはINFILEという1つのデータレコードの集まりに見えますが、実体は12の別々のデータセットとして分かれて格納されています。