JCL記載方法まとめ　【初心者編】2

   前回：JCL記載方法まとめ　【初心者編】1
　　　https://qiita.com/nano357/items/65d69af412db32ae6267

## <font color="green">④データの定義（DDステートメント）</font>
  DDステートメントは、ジョブステップで使用するデータセット（ジョブまたはジョブステップで使用するデータの集まり）や装置についての定義を行う。
  <font color="blueviolet">__識別名（DD名）__</font>や以下の、<font color="blue">__DSN__</font>・<font color="blue">__DISP__</font>・<font color="blue">__UNITT__</font>・<font color="blue">__SPACE__</font>・<font color="blue">__DCB__</font>・<font color="blue">__SYSOUT__</font>  などデータセットの定義を指定。

※プログラムはデータにアクセスする際、JCLに記載された識別名（DD名）とデータセットの定義を参照する。

#### サンプルJCL(COBOLプログラム内の SYSUT1 の場合 イメージ)
````
      //STEP16   EXEC PGM=COBOLPGM
      //SYSUT1   DD DISP=(NEW,DELETE,DELETE),DSN=OUT171,
      //            UNIT=SYSDA,SPACE=(80,(20,2)),AVGREC=K,DCB=(BLKSIZE=400)
````

#### サンプルCOBOL(COBOLプログラム内の SYSUT1 の場合 イメージ)
````

      **************************************************************************
       IDENTIFICATION         DIVISION.
      **************************************************************************
       PROGRAM-ID.            TESTPRGM.
       ENVIRONMENT            DIVISION.
      *
       INPUT-OUTPUT           SECTION.
       FILE-CONTROL.
         SELECT  IN-FILE    ASSIGN  TO  SYSUT1
      *                    >ASSIGN 文節 は 識別名（DD名）に対応
                           ORGANIZATION IS SEQUENTIAL
      *                    >改行されたデータを読み込むための設定
                           ACCESS  MODE  IS SEQUENTIAL
      *                    >順呼び出しを指定
                           STATUS  INPUT-FST.
      *                    >ステータスを管理する領域を設定
      **************************************************************************
       DATA                     DIVISION.
      **************************************************************************
       FILE                    SECTION.
      *
       FD  IN-FILE.
      *    >FILE-CONTROL 記入項目は FD 記入項目に対応
       01  IN-FILE-R.
           03  IN-FILE-REC     PIC X(80).
    .  
    .  
    .  
       OPEN  INPUT   IN-FILE.
    .  
    .  
    .  
       CLOSE  IN-FILE.
       STOP RUN.
````



        
形式（COBOLプログラム）
__SELECT ファイル名__(COBOL内で使用) __ASSIGN TO データ名__（JCL側と接続）

※JCLにどのようなDD名でDDステートメントを定義しなければ
　ならないかはプログラムのオペレーション・マニュアルなどに明記される。


   ※__COBOL__については以下「COBOL記載方法まとめ  【初心者編】1～ 」を参照。
        https://qiita.com/nano357/items/462a3ec523a3e624340b


-----------------------------------
#### サンプルJCL(DD名)

      //INPUT    DD DSN=TESTDATA,DISP=SHR

(1) <font color="blueviolet">__識別名（DD名）__</font>（3桁目～11桁目に記載）
  1～8文字の英数字または各国用文字 (#@￥)など

  ・プログラムがデータにアクセスする際のDD名に合わせてファイル名や
　　アクセス名を指定することで、その用途を明示する。

  ・プログラムがアクセスしないデータセットを
　　定義するDD名であればJCL作成者が自由に決めることが出来る。
 　　   また、「IEFBR14プログラム」など、アクセスを伴わずデータセットの
  　　  アロケーション（作成）したり、削除したりするプログラムの実行などでも、
  　　  DD名は自由に決めることが出来る。

   ※以下の予約済みDD名はデータアクセス用には使用できない。
   __JOBLIB__、__STEPLIB__、および <font color="blueviolet">__SYSUDUMP__</font>、<font color="blueviolet">__SYSABEND__</font>、<font color="blueviolet">__SYSMDUMP__</font>

   ※<font color="blueviolet">__SYSUDUMP__</font> __DD ステートメント__
         <font color="blueviolet">__SYSABEND__</font> __DD ステートメント__
        ・ジョブステップがABENDした際に、調査のためのダンプリストを作成。
        ・ダンプは__定様式__（リスト形式）なので、直接印刷できます。
  　　　　        <font color="blueviolet">__SYSUDUMP__</font>は__ユーザー領域__
　　　　（プログラムに関連したメモリー領域）をダンプ
         　　　　 <font color="blueviolet">__SYSABEND__</font>は__ユーザー領域__および
　　　　　__システム領域などを含めた広い領域__をダンプ

   ※<font color="blueviolet">__SYSMDUMP__</font> __DD ステートメント__
        ・ジョブステップがABENDした際に、調査のためのダンプリストを作成。
        ・ダンプは定様式にフォーマットされずに、__不定様式__(バイナリデータ)のまま出力されるのでダンプ出力に要する時間を短縮できる。
       　　　 ※使用する際には対話式問題制御システム (IPCS) で印刷する必要があります。

   ※__JOBLIB__、 STEPLIB については以下「JCL記載方法まとめ  【初心者編】1」を参照。
        https://qiita.com/nano357/items/65d69af412db32ae6267


#### サンプルJCL(DSN)

      //INPUT    DD DSN=TESTDATA,DISP=SHR

(2) <font color="blue">__DSN__</font>（DSNAME）
  DSN=のあとに続くものがデータセットの定義

  
#####   ※メンバー名の指定
   区分データセットのメンバ名を直接指定することが出来る。
#### サンプルJCL(DSN)（メンバ名の指定）

      //TMYMEM  DD   DSN=MYLIB.TESTLIB(MEM01),DISP=SHR

 ・区分データセット名（メンバ名）のように指定し、 
　 指定されたメンバーは１つ順次データセットとして処理できる。

 ※区分データセットは複数の順次ファイルを
　１つのデータセットにまとめて格納できるようにしたもので、
　データセット内の１つ１つの順次ファイルをメンバーと呼びます。
 　 詳細は参考文献：サイト様の「[07.データセットの種類とアクセス方式](https://arteceed.squares.net/?p=161 "(https://arteceed.squares.net/?p=161)「メインフレーム・コンピューター」で遊ぼう")」を参照。


#####   ※一時的データセットの名前
#### サンプルJCL(DSN)（一時的データセット）

      //TMYDSN  DD   DSN=&&MYDS,
      //             DISP=NEW,UNIT=SYSDA,SPACE(TRK,10)

  __&&ddname__ は１つのジョブ内で作成し、削除するデータセットであり、一時的データセット（Z/OSのマニュアルでは一時データセット）という。


##### ※逆方向参照
#### サンプルJCL(DSN)（逆方向参照：同一ステップ内の先行DDステートメント）

      //TMYDSN1 DD   DSN=&&MYDS,
      //             DISP=NEW,UNIT=SYSDA,SPACE(TRK,10)
      //TMYDSN2 DD   DSN=*.TMYDSN1


   ・逆方向参照とはジョブの中で、すでに出てきたステートメントを参照する。
   ・同一ステップ内の先行DDステートメントを参照する場合は次のような形で指定します。
   __*.ddname__


#### サンプルJCL(DSN)（逆方向参照：先行ステップ内のDDステートメント）

      //STEP21  EXEC PGM=TESTPGM1
      //TMYDSN3 DD   DSN=&&MYDS001,
      //             DISP=(,PASS),UNIT=SYSDA,SPACE(TRK,10)
      //*
      //STEP22  EXEC PGM=TESTPGM2
      //TMYDSN4 DD   DSN=*.STEP21.TMYDSN3


   ・先行ステップ内のDDステートメントを参照する場合は次のような形で指定します。
   __*.stepname.ddname__

   ・なお、先行ステップが呼び出したプロシージャ内のDDステートメントを参照する場合は次のような形で指定します。
   __*.stepname.procstepname.ddname__


##### ※ダミーデータセット
#### サンプルJCL（ダミーデータセット）

      //OUTDD1   DD    DUMMY,DSN=TESTDATA,UNIT=3380,
      //               SPACE=(TRK,(10,2)),DISP=(,CATLG)

　・出力もしくは入力のデータセットに空のデータセットを
　　指定する場合、DDステートメントに__DUMMY__を設定するか、
　　DSNパラメータに__NULLFILE__を指定する。


(3) <font color="blue">__DISP__</font>__パラメータ__
#### サンプルJCL(DISP)

      //INPUT    DD DSN=TESTDATA,DISP=SHR

・プログラムがデータセットをどう処理するかを指示するために
　DISPパラメータで状況と後始末を指定する。

<font color="blue">__DISP__</font>=(<font color="blueviolet">__データセットの状況__</font>,<font color="blueviolet">__正常終了時の処理__</font>,[<font color="blueviolet">__異常終了時の処理__</font>])

 １．<font color="blueviolet">__データセットの状況__</font>
  ・<font color="Magenta">__NEW__</font>   データセットを新しく作成するときに指定。
  ・<font color="Magenta">__OLD__</font>   データセットが存在していて、更新するために排他的に使用する場合に指定。
  ・<font color="Magenta">__SHR__</font>   データセットが既に存在していて、他のプログラムと共有するときに指定。
  ・<font color="Magenta">__MOD__</font>   順次データセットが既に存在していれば、ファイルの終わりにレコード追加 拡張する。
          存在していなければ新しく作成する。

   ※省略時は「<font color="Magenta">__NEW__</font>」が指定される。

 ２．データセットの使用後の終了時の処理
  ・<font color="Magenta">__KEEP__</font>      データセットを保存する。OSのカタログは変更されない（その後のジョブで使用するため保存したい場合に指定）
  ・<font color="Magenta">__CATLG__</font>     OSのカタログにデータセットの装置およびボリュームの情報を登録させる。
  ・<font color="Magenta">__UNCATLG__</font>   OSのカタログからデータセットの装置およびボリュームの情報を削除させる。
  ・<font color="Magenta">__PASS__</font>      ジョブ内の後続のジョブステップで使用するためにＯＳに装置および ボリュームの情報を記憶させる場合に指定（データセットを後続ステップへ渡す）。
  ・<font color="Magenta">__DELETE__</font>    データセットを削除する。

  ※省略時は、データセットが新規作成された場合は削除。
    既存のデータセットの場合は実行前と同じ状態に保つよう処理される。



(4) <font color="blue">__装置の指定__</font>

#### サンプルJCL(UNIT)

      //TESTMYDS DD  DSN=&&MYDS,DISP=OLD,UNIT=(3480)

<font color="blue">__UNIT__</font> = 装置アドレス/装置タイプ/グループ名

・プログラム上でDASD(直接アクセス記憶装置)またはテープ上の
　データセットを使用する場合は、装置を割り振らなければならない。

  ・<font color="blueviolet">__装置アドレス__</font>(UNIT = OOF)
    　　データセットに対して特定装置アドレスを指定。
   　　（各装置には、導入された際に決定される3桁のアドレスを持っています。）
  ・<font color="blueviolet">__装置タイプ__</font>(UNIT = 3380)
    　　データセットに対して装置の種類を指定。
    　　  DASD(3390,3380,3375など)
    　　  TAPE(3490,3480など)
  ・<font color="blueviolet">__グループ名__</font>(UNIT = SYSDA)
    　　    システム作成時に入出力装置をグループ化して定義してあるものを指定。

(5) <font color="blue">__スペースの割り振り__</font>

#### SPACEパラメーターの例
      //       SPACE(TRK,(10,2),RLSE)

<font color="blue">__SPACE__</font> = (<font color="blueviolet">__割り振り単位__</font>,(<font color="blueviolet">__1次数量__</font>[,<font color="blueviolet">__2次数量__</font>][,<font color="blueviolet">__ディレクトリブロック数__</font>]),[<font color="blueviolet">__RLSE__</font>][,<font color="blueviolet">__CONTIG__</font>][,<font color="blueviolet">__ROUND__</font>])

データセットを作成するとき、DASDボリューム上に必要なスペースを指定する。
上記の場合は、順次データセットの割り当て。
最初に10トラック、増分として2トラック割り当てる。未使用スペースは開放される。

・<font color="blueviolet">__割り振り単位__</font>
　・<font color="Magenta">__TRK__</font>
    　　    トラック単位にスペースを割り振る。
　・<font color="Magenta">__CYL__</font>
    　　    シリンダ単位にスペースを割り振る。（1シリンダーは15トラック）
　・<font color="Magenta">__blklgth (数値)__</font>　(AVGREC の指定がない場合に限る)
    　　    データセットの平均ブロック長でスペースを割り振る。
　・<font color="Magenta">__reclgth (数値)__</font>　(AVGREC の指定があり、SMS がアクティブ)
    　　    データセットの平均レコード長を示す。
    　　    指定されたレコード長と、DCBパラメーター（データセットの属性定義）の
    　　    BLKSIZE(ブロックサイズ)値から、必要なスペース量（トラック数）が算出される。
    　　    DCBパラメーターが指定されてない場合は、システムが決定したブロック・サイズか
    　　    デフォルト値の 4096に基づき計算される。
    　　    レコード長で指定する場合、同時にAVGRECパラメーターの指定が必要。

・<font color="blueviolet">__1次数量__</font>
    　　    データセットを作成する際に、最初に要求するスペース量を指定する。
    　　    2次数量を指定しておらず、容量を超えた場合は異常終了。
・<font color="blueviolet">__2次数量__</font>
    　　    データセットに対する追加スペース。
    　　    スペースが足りないとき、最高16回まで2次数量分のスペースを確保できる。
    　　    それでも容量が足りない場合は異常終了。
・<font color="blueviolet">__ディレクトリブロック数__</font>
    　　    区分データセットのディレクトリブロック数。
・<font color="blueviolet">__RLSE__</font>
    　　    データセットをクローズするときに未使用領域を開放する。
・<font color="blueviolet">__CONTIG__</font>
    　　    データセットに必ず連続したスペースを割り振るように要求します。
    　　    1次スペース割り振りのみに作用します。
    　　    CONTIG を指定しているにもかかわらず連続したスペースが
    　　    使用可能でない場合、システムはそのジョブ・ステップを終了します。
    　　    （データセット内のレコードのDASD 上の位置を、OSによらず自分で直接計算して直接アクセスするような、一部のシステム・ソフトウェアなどで使用します。一般のデータセットがCONTIG を指定する必要はありません。）

・<font color="blueviolet">__ROUND__</font>
    　　    ブロック長やレコード長でスペースを割り当てる場合、必要なスペース量をトラック単位ではなくシリンダー単位にします。

※<font color="blue">__AVGRECパラメーター__</font>
　SPACE パラメーターとともに AVGREC を使用する場合、
　SPACE パラメーターの最初 のサブパラメーター (レコード長) では、
　レコードの平均レコード長を指定する必要があります。
・<font color="blue">__AVGREC__</font> = <font color="blueviolet">__SPACE パラメーターで指定した 1次数量および 2次数量 が表すレコード数の単位を指定__</font>
　・<font color="Magenta">__U__</font>  　そのままのレコード数(1 の倍数)であることを示します。
　・<font color="Magenta">__K__</font>  　千単位のレコード数(1024 の倍数)であることを示します。
　・<font color="Magenta">__M__</font>  　百万単位のレコード数(1048576 の倍数)であることを示します。

 　 AVGRECパラメーターを指定した場合のシステムが確保する
　　スペースの量はMVS(z/OS)のマニュアル「[平均レコード長](https://www.ibm.com/docs/ja/zos/2.3.0?topic=requirements-average-record-length "(https://www.ibm.com/docs/ja/zos/2.3.0?topic=requirements-average-record-length)DFSMS データ・セットの使用法")」を参照。


#### SPACEパラメーターの例（区分データセットの割り当て）
      //       SPACE(CYL,(10,,40))

上記の場合は、区分データセットの割り当て。
最初に10シリンダーを割り当て、増分はなし。ディレクトリブロック数は40。

#### SPACEパラメーターの例（順次データセットの割り当て AVGREC の指定あり）
      //       SPACE(256,(100000,10000)),AVGREC=U

上記の場合は、順次データセットの割り当て。
256 バイトのレコードが、100000レコード分格納できるスペース量（トラック単位）で割り当て、
不足時は、10000レコード分格納できるスペースが追加される。

#### SPACEパラメーターの例（順次データセットの割り当て シリンダー単位 AVGREC の指定あり）
      //       SPACE(200,(100,10),,,ROUND),AVGREC=K

上記の場合は、順次データセットの割り当て。
200 バイトのレコードが、100×1024 レコード分格納できるスペース量（シリンダ単位）で割り当て、
不足時は、10×1024 レコード分格納できるスペースが追加される。

※ブロック長で指定する際の考え方
  （DASD容量を1TRKに2ブロック格納可能な最大長を指定する方法で見積もる流れ）
  データのレコード長とデータ件数からDASD容量を見積もってから決定します。
　キー長が0で固定長の順編成ファイルであれば、
　下記の計算式でブロック長を算出することになります。

　1.1 ブロック長の見積もり
　　　1.2 __ブロック長　＝　レコード長　×　ブロック化因数__
　　　　 1.3 __ブロック化因数　＝　23476　×　レコード長（小数点以下切捨て）__

　　　＜メモ＞　　　　　
　　　ブロック長は1ブロックの大きさのことである。
　　　ブロックは、何レコードかをひとまとめにしたもののことである。
　　　ブロック化因数は1ブロックに何レコードが含まれるかを表している。
　　　ブロックとブロックの間には、ブロック間隔という空間が確保される。
　　　そのため、ブロック長は正確には、
　　　ブロック長　＝　レコード長　×　ブロック化因数　×　ブロック間隔

　2.1 DASD容量（TRK単位）
　　　2.2 __トラック単位の容量 = ブロック数 ÷ 2 (少数点以下切上げ)__
　　　　 2.3 __ブロック数 = データ件数 ÷ ブロック化係数 (少数点以下切上げ)__

　　　SPACEオペランドで指定する初期量には、
　　　上記の算出値を指定しデータ件数の変動に備え増分値を指定する。
　　　
　　　なおAVGRECパラメーターを使用することにより、論理レコード長と
　　　格納したいレコード数で、必要なスペースを指定することが出来る。
　　　ただし、区分データセットの場合、
　　　その後メンバの更新や追加が出来なくなってしまうこともあるため。
　　　まとまった量をシリンダー単位で割り当てることもよく行われる。

#### SPACEパラメーターの特殊な例（初期値3シリンダー、増分値3シリンダー、作成後未使用領域解放）
      //       SPACE(CYL,(3,3),RLSE)

  このようにしておくと出来たファイルは未使用領域をトラック単位で解放してくれる。
  なお、巨大な容量のデータの場合は増分エラーとなるのでエラーなった時点で初期値を大きく。

(6) <font color="blue">__VOLパラメーター__</font>

#### サンプルJCL(VOLパラメーター)

      //TESTMYDS DD  DSN=NEWDASD,
      //　　　　　　　DISP=(,CATLG,DELETE),UNIT=3350,
      //　　　　　　　VOL=SER=335006,SPACE=(CYL,(10,5))

VOLパラメーターはUNITで指定した装置の中からどのボリュームを使用するのかを指定する。
ボリュームの指定には、特例ボリュームと不特定ボリュームの２種類がある。

   特定ボリュームのserial-numberを使用する場合は次のような形で指定します。
　 __VOL__=__SER__=__serial-number__

   特定ボリュームのserial-number1とserial-number2の順に使用する場合は次のような形で指定します。
　 __VOL__=__SER__=__(serial-number1,serial-number2)__

   特定ボリュームのOUT1 DDステートメントで使用されたボリュームを使用する場合は次のような形で指定します。
　 __VOL__=__REF__=__*.OUT1__

   不特定ボリュームを最大10ボリューム使用する場合は次のような形で指定します。
　 __VOL__=__(,,,10)__
   ※不特定ボリュームが一時的データセットなら「SCRTCH」それ以外は、「PRIVAT」）

   ※省略した場合はDASDの場合は、ストレージボリュームからシステムが選択。TAPEの場合は「SCRTCH」か「PRIVAT」マウントとなり、利用者が任意のボリュームを選びます。（「PRIVAT」の場合、装置番号もしくは総称名を指定）


(7) <font color="blue">__データセットの属性定義__</font>

#### サンプルJCL(データセットの属性定義)
      //TESTMYDS DD DSN=ALP,DISP=(,KEEP),
      //　　　　　　　VOLUME=SER=44321,UNIT=3400-6,
      //　　　　　　　DCB=(DSORG=PS,RECFM=FB,
      //　　　　　　　     LRECL=240,BLKSIZE=960)
<font color="blue">__DCB__</font> = (<font color="Magenta">__DSORG__</font> = <font color="blueviolet">__データセットの編成種別__</font>,<font color="Magenta">__RECFM__</font> = <font color="blueviolet">__レコード形式__</font>,
    　　        　　  <font color="Magenta">__LRECL__</font> = <font color="blueviolet">__レコードサイズ__</font>,<font color="Magenta">__BLKSIZE__</font> = <font color="blueviolet">__ブロックサイズ__</font>)

PGM中のコーディング・JCLステートメントのコーディング・データセットが既に存在しているとき、データラベルの3つの情報源から収集した情報が入る。
データセットがOPENされるとき、OSによって情報が埋められる。

　※ <font color="blueviolet">__データセットの編成種別__</font>

　<font color="Magenta">__PS__</font>：順次データセット
　<font color="Magenta">__PO__</font>：区分データセット




　※ <font color="blueviolet">__レコード形式__</font>

　・<font color="Magenta">__F/FB__</font>
    　　    固定長。__非ブロック化レコード(F)__/__ブロック化レコード(FB)__で、
    　　    データセットを構成するレコードの長さが一定のもの。
    　　       　　　　　<font color="Magenta">__F__</font> : LRECLとBLKSIZEが等しいことを意味する。
    　　       　　　　　<font color="Magenta">__FB__</font> : BLKSIZEはLRECLの倍数であることを意味する。

　・<font color="Magenta">__V/VB__</font>
    　　    可変長。__非ブロック化レコード(V)__/__ブロック化レコード(VB)__で、
    　　    データセットを構成する各論理レコードの長さが異なるもの。
    　　       　　　　　<font color="Magenta">__V__</font> : LRECLは最長のデータレコード長 + 4バイト。
    　　       　　　　　BLKSIZEはLRECLと等しいことを意味する。
    　　       　　　　　<font color="Magenta">__VB__</font> : LRECLは最長のデータレコード長 + 4バイト。
    　　       　　　　　BLKSIZEはLRECLと等しいもしくはそれ以上であることを意味する。
　・<font color="Magenta">__U__</font>
    　　    不定長。データセットを構成する各論理レコードの長さが異なり、
    　　    レコードの長さの情報を持っておらず、ブロック化もできないことを意味する。

　※FA/FBA/VA/VBA
    　　    レコードに、ISO/ANSI制御文字が入っていることを示す。

　※FM/FBM/VM/VBM
    　　    レコードに、機械コード制御文字が入っていることを示す。

　※ <font color="blueviolet">__レコードサイズ__</font> 、<font color="blueviolet">__ブロックサイズ__</font>
#### サンプルJCL(レコードサイズ、ブロックサイズ)

      //TESTMYDS DD DSN=MYDS2.PGM,DISP=(NEW,KEEP),
      //            DCB=(LRECL=256,BLKSIZE=0)

  上記の場合、レコードサイズは256 バイト。
　・レコードサイズは1から32760までで指定し、ブロックサイズ以下とする。

　・ブロックサイズはFBの場合は32760が最大、VBの場合、32756が最大。
　　BLKSIZEに0を指定してアロケーションすれば、
　　レコード形式、レコード長、デバイスの特性に応じてOSが最適なサイズを設定する。
　　(BLKSIZE=0がサポートされているOSの場合)

 　 ※ブロックサイズを設定する場合は、ディスクのハードウェアマニュアルに載っているトラックに書き込めるブロックサイズ（物理レコードサイズ）とレコード数の早見表などを参考に、データセットのレコード長からブロックサイズを設定する。
 　 詳細は参考文献：サイト様の「[DASDタイプ別最適化ブロックサイズ](https://arteceed.squares.net/?p=1190 "(https://arteceed.squares.net/?p=1190)「メインフレーム・コンピューター」で遊ぼう")」を参照。

(9) <font color="blue">__SYSOUT__</font>__パラメータ__

#### サンプルJCL(SYSOUTパラメータ)
      //PROGOUT  DD  SYSOUT=*

 １．データセットの状況
     __SYSOUT__ = __クラス名[、プログラム名][、用紙名orコード名]__
        出力データセットに出力クラスを割り当てる。
     __SYSOUT__=__*__
        JOBステートメントのMSGCLASSと同じクラスを割り当てる。

 ２．__SYSPRINT__

#### サンプルJCL(SYSPRINT)
      //SYSPRINT DD  SYSOUT=*

   __SYSPRINT__はユーティリティなどの出力結果をデータセットに出力したいときにデータセットの情報を指定すると、出力結果をデータセットに出力したりすることができる。




(10) <font color="blue">__SYSIN__</font>__データセット__
#### サンプルJCL(SYSIN)
      //SYSIN   DD    *
      AAA ～ BBB
      CCC ～ DDD
      /*

  出力の__SYSOUT__に対して、入力データセットとなるのが__SYSIN__です。
  SYSINデータ（ストリーム内データセット）はJCLのDDステートメントに
  DSNパラメーターの代わりに「 * 」または DATAを指定することで、
  次の行からJCLステートメントではなく、
  プログラムへ渡す入力データ（ストリーム内データセット）を記述することができる。

  DDステートメントを省略してSYSINデータを書き始めると
  SYSIN DD *が書かれたのと同じ扱いになる。

 　 詳細は参考文献：サイト様の「[SYSINデータセットとは](https://arteceed.squares.net/?p=1115 "(https://arteceed.squares.net/?p=1115)「メインフレーム・コンピューター」で遊ぼう")」を参照。




(11) <font color="blue">__DD ステートメントの連結__</font>__（コンカチネーション）__
#### サンプルJCL(DD ステートメントの連結)
      //INPUT    DD DSN=TSTDATA1,DISP=SHR
      //         DD DSN=TSTDATA2,DISP=SHR

　・複数のデータセットを１つのファイル（連結データセット）として定義する。
　　読み取り専用となるが、複数のデータセットに分かれて
　　格納されているデータをまとめて処理できる。

　・固定長レコードの場合、
　　各データセットのレコード長は同じである必要がある。

　・可変長レコードの場合、
　　最も大きなレコードサイズを持つデータセットを連結の先頭に置くか、先頭のDDステートメントに最も大きなレコードサイズを指定した、データセットの属性定義を追加する。

　　異なるブロックサイズを持つものがあっても構いません
　　区分データセット、順次データ・セットなどはブロック・サイズの順序に関係なく連結できる。
　　プログラムのアクセス方法によっては、ブロックサイズが最大のデータセットを連結の先頭に置く必要があります。（先頭のDD ステートメントの BLKSIZE には、このデータセットの実際のブロックサイズにかかわらず、最大のブロックサイズにあたる値を指定することができることに注意してください。）


参考文献：JCL関連情報サイト様
　　　https://arteceed.squares.net/
　　　http://yfuku.sakura.ne.jp/mvs/mvsindex.html
　　　http://superbassist.fc2web.com/hp2/study/jcl/jclb.html

MVS JCL 解説書 - IBM Documentation：正式な構文は以下を参照
　　　https://www.ibm.com/docs/ja/zos/2.3.0?topic=SSLTBW_2.3.0/com.ibm.zos.v2r3.ieab600/toc.htm

原典：日本アイ・ビー・エム株式会社
      GC28-1757-00
      OS/390 MVS JCL Reference
      （一部改変）
      OS/VS2 MVS JCL
      （一部改変）