メインフレーム（備忘録）

#以下、XMindから自動作成したマークダウンのため、見づらいとこもあり（2021/02/07）

# メインフレーム

## プロセッサー

### ＝CPU（cpuとマザボとメモリを実装したもの）

## チャネル

### CPUとデバイスの中間に位置

## ハードウェア

### ディスク装置

- ボリューム

	- Windowsで言うパーティション
	- DASD(Direct Access Stroage Device)

### デープ装置

- ディスク装置の前

## JES(Job Entry System)

### VOS3ではJSS3

- ジョブのスケジューリング
- ジョブのスプーリング

	- 一時保管機能

## カタログ

### 記録機能

- データセット名
- 装置の種類
- ボリューム名

## JCL

### DCBオペランド

- BLKSIZE

	- DSの最大ブロック長

		- VB

			- 32,756(MAX)

				- LRECLのn倍

		- FB

			- 32760(MAX)

				- LRECLのn倍+4（または4の倍数）

- LRECL

	- DSの論理レコード長

		- 1~32760∧BLKSIZE以下

- RECFM

	- DSのレコード形式と特徴

		- レコード形式

			- F

				- 固定長

			- V

				- 可変長

			- U

				- 不定長

		- ブロック化の有無

			- B

				- ブロック化する

### SPACEオペランド

- DASD容量の単位

	- BLK

		- あまり使用しない

	- TRK
	- CYL

- DASD容量の（初期値、増分値）

	- 1TRKに2ブロック格納可能な最大長を指定するのが一般

		- DASD容量の見積もり

			- DASD容量 = ブロック数 ÷ 2
（小数点以下切り仕上げ）

				- ブロック数 = データ件数 ÷ ブロック化係数
（小数点以下切り上げ）

		- ブロック長の見積もり

			- ブロック長 ＝ レコード長 x ブロック化係数

				- ブロック化係数

					- ブロック化係数 = 23476÷レコード長
（小数点以下切り捨て）
					- 1つのブロックに含まれるレコード数

				- ブロック長

					- ブロックとブロックの間には、
ブロック間隔という空間が確保される

						- そのため、正確には、ブロック長は
レコード長 x ブロック化係数 x ブロック間隔

### SORT

- KEY条件

	- 文字種

		- CH

			- 文字

		- ZD

			- ゾーン10進数

		- PD

			- パック10進数

		- BI

			- バイナリデータ

	- ソート順序

		- A

			- 昇順

		- D

			- 降順

- INCLUDE

	- 条件に合うレコード抽出

		- Syntax

			- SORT FIELD=COPY
INCLUDE COND=(.....)

				- Option

					- EQ

						- =

					- NE

						- !=

					- GT

						- >

					- GE

						- >=

					- LT

						- <

					- LE

						- <=

- OMIT

	- 条件に合うレコード削除

- SUM FIELDS

	- 条件に合うレコード集計

- Syntax

	- SORT FIELDS=
(Start、Length、条件、順序）

		- 例：SORT FIELDS=(1,3,CH,A,20,7,CH,A)

### コンカチ（連結）

- //SORTIN DD DSN=データセット1,DISP=SHR
//DD DSN=データセット2,DISP=SHR

	- データセットは同じレイアウト必須

### ジョブステートメント

- Syntax

	- ジョブ名　JOB　オペランド

		- MSGCLASS

			- A~Z, 0~9

				- 処理内容、処理時間、緊急度でグループ化される

		- TIME

			- TIME=(分、秒）

				- JOBがCPUを使用できる最大時間の指定

		- TYPRUN

			- HOLD

				- オペレータがジョブを解放するまでそのジョブは実行されないで、待ち行列に保留される

			- SCAN

				- JCLステートメントを操作するだけで、実行はしない

		- NOTIFY

			- JOBの終了時に、完了メッセージをユーザのTSO端末に送る

### EXECステートメント

- ジョブステップの始まりを示す
- 複数記述可能
- Syntax

	- STEP001 EXEC ***=任意

		- ***

			- PGM

				- プログラムを指定

			- PROC

				- プロシージャを指定

					- PROCEDURE

						- 別のところで予め記述されている処理
						- ストリーム内プロシージャ
						- カタログ式プロシージャ

			- COND

				- COND=(コード、演算子）

					- コード

						- プログラム終了時の戻りコード
0～4095の10進数で指定

					- 演算子

						- EQ, GT, LTとか

				- 条件を満たすときに、実行しない

			- PARM

				- プログラムに可変情報を渡す。
（引数）

			- REGION

				- ジョブステップに割り当てられる記憶スペースの量

			- TIME

				- CPU時間の割当

### DDステートメント

- DISP

	- DISP=(データセットの状況、正常終了時の処理、異常終了時の処理）

		- データセットの状況

			- NEW

				- データセットの新規作成
				- デフォルト

			- OLD

				- データセットが存在し、排他的に使用

			- SHR

				- データセットが存在し、共有して使用

		- 正常(/異常)終了時の処理

			- DELETE

				- データセットを削除

			- KEEP

				- データセットを保存

					- 　

			- PASS

				- OSに装置、ボリューム情報を記憶させる

					- その後のジョブステップで使用するためにわたす

			- CATLG

				- OSのカタログにデータセットの装置、ボリューム情報を登録

			- UNCATLG

				- OSのカタログからデータセットの装置、ボリューム情報を削除

			- 新規

				- UNCATLGがデフォルト

			- 既存

				- 実行前と同じ状態を保持

- SYSOUTパラメータ

	- Syntax

		- // SYSOUT DD SYSOUT=クラス名

			- クラス名

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

					- JOBステートメントのMSGCLASSと同じクラスを割り当てる

	- 指定したデータセットは印刷される

- 装置の指定

	- 例：UNIT=DASD03

- スペースの割り振り

	- Sysntax

		- SPACE=(割り振り単位、（1次数量[、2次数量]）[、RLSE]

			- 割り振り単位

				- TRK
				- CYL
				- ブロック長（数値）

			- 1次数量

				- 最初に要求するスペース量

			- 2次数量

				- 1次数量で不足したとき、追加で要求するスペース

					- 最高16回まで要求できる

			- RLSE

				- データセットをクローズするときに未使用領域を開放する

	- データセット作成に必要なスペースを指定する

- DD（データ定義）
DATA DESCRIPTION
- DUMMY

	- テータセットのスペースを割りてない

		- すなわち、0件データ

- 特殊なDD

	- JOBLIB

		- ジョブ内の各EXECステートメントのPGMパラメータで指定されたプログラムを下がる専用ライブラリーを指定する

			- 専用ライブラリーで見つからない場合のみ、システムはシステムライブラリーを検索する

	- STEPLIB

		- ジョブ内の記述したSTEPにてライブラリーを指定する

			- STEPLIBが指定されたステップでは、JOBLIBは無視される