JCLその4 | 魔王の憂鬱

魔王の憂鬱

情報通信っぽいことを、分かりやすく述べているつもりです。

今回はDDステートメントのお話です。

あと2回くらいで、JCLについては一区切りをつけましょうかね。


//* JCL SAMPLE001

// JOBNAME JOB MSGCLASS=H

// STEP001 EXEC PGM=PGMNAME

// INPUT DD DSN=INPUT.FILE.DATASET, DISP=SHR
// OUTPUT DD SYSOUT=*



・DDステートメント

// DD名 DD DSN=・・、・・


以下は、DSN=・・ のような、パラメータに記述する内容です。



・DISP = (データセットの状況、正常終了時の処理[、異常終了時の処理])

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


データセットの状況
 ・NEW
データセットを新しく作成するときに指定。
 ・OLD
データセットが存在していて、更新するために排他的に使用。
 ・SHR
データセットが既に存在していて、他のプログラムと共有するとき。
 ・MOD
順次データセットが既に存在していれば、ファイルの終わりに追加拡張。
存在していなければ、新規作成。
 ※省略時は「NEW」が指定される。

・終了時の処理
正常/異常どちらとも指定内容は同じです。
 ・DELETE
データセットを削除する。
 ・KEEP
データセットを保存する。
 ・PASS
OSに装置およびボリュームの情報を記憶させる。
「KEEP」はその後のジョブで使用するための処理ですが、
「PASS」はその後のジョブステップで使用するための処理となる。
 ・CATLG
OSのカタログにデータセットの装置およびボリュームの情報を登録させる。
 ・UNCATLG
OSのカタログからデータセットの装置およびボリュームの情報を削除させ
る。
 ※省略時は、データセットが新規作成された場合は削除。
  既存のデータセットの場合は実行前と同じ状態に保つよう処理される。



・SYSOUTパラメータ

//SYSOUT DD SYSOUT = クラス名[、プログラム名][、用紙名orコード名]

SYSOUTをDDステートメントのパラメータに指定すると、
このデータセットに対して作成されたデータは最終的に印刷される。

 ・クラス名
出力データセットに出力クラスを割り当てる。
 ・SYSOUT = *

  「*」を指定します。
JOBステートメントのMSGCLASSと同じクラスを割り当てる。
この設定はよく行われます。



・装置の指定

UNIT = 装置アドレス/装置タイプ/グループ名

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

 ・装置アドレス(例:UNIT = OOF)
データセットに対して特定装置アドレスを指定。
(各装置には、導入された際に決定される3桁のアドレスを持っていま
す。)
 ・装置タイプ(例:UNIT = 3380)
データセットに対して装置の種類を指定。
 ・グループ名(例:UNIT = SYSDA)
システム作成時に入出力装置をグループ化して定義してあるものを指定。



・スペースの割り振り

SPACE = (割り振り単位,(1次数量[、2次数量])[、RLSE])

データセットを作成するとき、OSは指定されたボリューム上に十分な
スペースを見つけなければならない。当たり前なんですがね。
そのため、どの程度のスペースが必要かを予め指定しておく必要がありま
す。

割り振り単位
 ・TRK
トラック単位で割り振る。
 ・CYL
シリンダ単位で割り振る。
 ・ブロック長(数値)
平均ブロック長で割り振る。
1次数量
データセットを作成する際に、最初に要求するスペース量を指定する。
2次数量を指定しておらず、容量を超えた場合は異常終了。
(ABEND-CODE:D37)
・2次数量
データセットに対する追加スペース。
スペースが足りないとき、最高16回まで2次数量分のスペースを確保でき
る。
それでも容量が足りない場合は異常終了。
(ABEND-CODE:D37)
・RLSE
データセットをクローズするときに未使用領域を開放する。



・データセットの属性定義

DCB = (RECFM = レコード形式, LRECL = レコードサイズ,
BLKSIZE = ブロックサイズ)

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

レコード形式
 ・F/FB
固定長。非ブロック化レコード(F)/ブロック化レコード(FB)で、
データセットを構成するレコードの長さが一定のもの。
F : LRECLとBLKSIZEが等しいことを意味する。
FB : BLKSIZEはLRECLの倍数であることを意味する。
 ・V/VB
可変長。非ブロック化レコード(V)/ブロック化レコード(VB)で、
データセットを構成する各論理レコードの長さが異なるもの。
V : LRECLは最長のデータレコード長 + 4バイト。
  BLKSIZEはLRECLと等しいことを意味する。
VB : LRECLは最長のデータレコード長 + 4バイト。
   BLKSIZEはLRECLと等しいもしくはそれ以上であることを意味する。
 ・U
不定長。データセットを構成する各論理レコードの長さが異なり、
レコードの長さの情報を持っておらず、ブロック化もできないことを意味す
る。
 ※FA/FBA/VA/VBA
レコードに、ISO/ANSI制御文字が入っていることを示す。




ここら辺は、分からない方にはチンプンカンプンな内容ですが、ご容赦ください。

ただ、JCLの基本的なことを調べたい方には役に立つであろうと信じてまとめております。

ほとんど参考文献のサイトの内容がベースとなっておりますので、

下記サイト様もご覧ください。




○参考文献

JCL

http://superbassist.fc2web.com/hp2/study/jcl/jcl1b.html