Posted at

その3:メインフレームOSのシステム生成がやってみたい!:MVS3.8JのSYSGEN、システム生成の実行

More than 3 years have passed since last update.


MVS3.8JのSYSGEN、システム生成の実行

いよいよSYSGEN、システム生成の実行です。以下の手順は約50分です。


追加のDASDボリューム作成

./create.dasd.sh sysgen」で、MVSスタータシステム用のDASDボリュームの「dasd/mvsres.3350」、「dasd/mvs000.3350」、「dasd/spool1.3350」、「dasd/page00.3350」の4つを作ります。

それぞれのDASDボリュームの目的は次の通りです。


  • MVSRES.3350 - SYSGENが終わった後のMVS3.8JシステムのIPLのボリューム。

  • MVS000.3350 - MVS3.8Jのための追加のシステム・データセットが含まれています。

  • SPOOL1.3350 - JES2スプールキューデータセットが含まれています。

  • PAGE00.3350 - ページ・データセットが含まれています。

$ pwd

/home/hercules/mvs
$ ./create.dasd.sh sysgen
This script creates DASD volumes for MVS 3.8j.
Changed directory to: /home/hercules/mvs/dasd
HHCDU044I Creating 3350 volume 111111: 560 cyls, 30 trks/cyl, 19456 bytes/track
HHCDU041I 560 cylinders successfully written to file mvsres.3350
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 3350 volume 222222: 560 cyls, 30 trks/cyl, 19456 bytes/track
HHCDU041I 560 cylinders successfully written to file mvs000.3350
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 3350 volume 333333: 560 cyls, 30 trks/cyl, 19456 bytes/track
HHCDU041I 560 cylinders successfully written to file spool1.3350
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 3350 volume 444444: 560 cyls, 30 trks/cyl, 19456 bytes/track
HHCDU041I 560 cylinders successfully written to file page00.3350
HHCDI001I DASD initialization successfully completed.
Script completed successfully!


MVSスターターシステムハードウェア構成

今回のハードウェア構成はHercules設定ファイル「sysgen.cnf」の通りなのですが、ここに図示している図と異なっています。

image

この図では、上記で作成した4つのDASDボリュームが表現されています。しかし、Hercules設定ファイル「sysgen.cnf」には、この4つがありません。

これには理由があり、これらのDASDボリュームはMVSスターターシステム上で実行されるユーティリティによって初期化します。そのユーティリティは、DASDボリュームが「オフライン」でなければなりません。

このためMVSスターターシステムがIPLされる時には存在できないため、Hercules設定ファイル「sysgen.cnf」には記述していません。


MVSスターターシステムの起動

TeraTermを3つ立ち上げておきます。一つはHerculesエミュレータ画面用。もう一つはマスタコンソール画面用です。もう一つは、完了コード確認用画面です。

Herculesエミュレータ画面のTeraTermで、「hercules -f conf/sysgen.cnf」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

$ pwd

/home/hercules/mvs
$ hercules -f conf/sysgen.cnf

すると、Herculesエミュレータが実行を開始し、設定ファイルをロードし、次のメッセージが表示されます。


Herculesエミュレータ画面

HHCCP002I CPU0000 thread started: tid=B69FCB70, pid=2440, priority=15

HHCCP003I CPU0000 architecture mode S/370
HHCPN001I Control panel thread started: tid=B774E6D0, pid=2440
HHCAO001I Hercules Automatic Operator thread started;
tid=B6569B70, pri=0, pid=2440
Command ==>
CPU0000 PSW=0000000000000000 24M....... instcount=0

Herculesエミュレータは、Hercules設定ファイルで指定されたI/Oデバイス0x01Fで指定された、コンソールデバイスに接続するTelnetクライアントのセッションを待っています。

マスタコンソール画面用のTeraTermに切り替え、「telnet localhost 3270」と入力し、「Enter」キーを入力します。


マスタコンソール画面

$ telnet localhost 3270


すると、0x01Fデバイスに接続したとマスタコンソール画面に表示されます。


マスタコンソール画面

Connected to device 0:001F


Herculesエミュレータ画面に切り替えると、こちらも同様に接続したと表示されています。


Herculeエミュレータ画面

HHCTE009I Client 127.0.0.1 connected to 3215 device 0:001F

Command ==>
CPU0000 PSW=0000000000000000 24M....... instcount=0

次は、スターターシステムのIPLです。Herculeエミュレータ画面に切り替え、コマンドラインに「ipl 150」と入力し、「Enter」キーを入力します。

これは、I/Oデバイスアドレス0x150の3330 DASDボリュームからMVS 3.7オペレーティングシステムをロードするように指示しています。


Herculeエミュレータ画面

HHCTE009I Client 127.0.0.1 connected to 3215 device 0:001F

Command ==> ipl 150
CPU0000 PSW=0000000000000000 24M....... instcount=0

しばらくすると、次のような画面となります。


Herculeエミュレータ画面

HHCCP048I 0170:CCW=03000000 20000001=>040E0000 0001AB6E 00000000 00000000 ......

HHCCP075I 0170:Stat=0200 Count=0001
HHCCP076I 0170:Sense=40220000 00C00300 00000000 00800100 010000FF FF000000
HHCCP077I 0170:Sense=INTREQ EOC WRI
Command ==>
CPU0000 PSW=070E000000000000 24..W..... instcount=531,173

マスタコンソール画面に切り替えると、次のように表示されます。


マスタコンソール画面

Connected to device 0:001F

IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.70.VS2
HHCTE006A Enter input for console device 001F

メッセージID=IEA101Aは、MVS3.7がロードされたことを示しています。

次に「Enter input console」とありますので、「r 0,clpa」と入力し、「Enter」キーを入力します(注意:rとゼロの間は、空白があります)。少し時間がかかります。

「その2」手順の冒頭で、MVSスタータシステムのLPA(リンクパックエリア)を構築しましたが、ここで再び構築しているのは、「その2」手順の後半でいくつかのシステム・ロード・モジュールをリビルドしているので、再構築しています。

しばらくすると、次のようなJES2(Job Entry Subsystem 2)からのメッセージが表示されます。


マスタコンソール画面

 IEF165I // START JES2

IEE351I SMF SYS1.MAN RECORDING NOT BEING USED
*00 $HASP426 SPECIFY OPTIONS - HASP-II, VERSION JES2 4.0

*00 $HASP426」の応答要求に対して、前回スプールをフォーマットしたので、「r 0,noreq」と入力し、「Enter」キーを入力します。

しばらくすると、次のような画面になります。


マスタコンソール画面

*00 $HASP426 SPECIFY OPTIONS - HASP-II, VERSION JES2 4.0

r 0,noreq
IEE600I REPLY TO 00 IS;SUPPRESSED
IEE041I THE SYSTEM LOG IS NOW ACTIVE
$HASP160 PUNCH1 INACTIVE - CLASS=BK
$HASP125 READER1 SKIPPING FOR JOB CARD
$HASP150 SYSLOG ON PRINTER1
$HASP150 INIT ON PRINTER1
$HASP250 SYSLOG IS PURGED
$HASP150 INIT ON PRINTER1
$HASP250 INIT IS PURGED
$HASP100 INIT ON STCINRDR
$HASP150 INIT ON PRINTER1
$HASP250 INIT IS PURGED
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 INIT IS PURGED
$HASP373 INIT STARTED
$HASP100 INIT ON STCINRDR
$HASP373 INIT STARTED
$HASP100 INIT ON STCINRDR
$HASP373 INIT STARTED
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP309 INIT 2 INACTIVE ******** C=BA
$HASP309 INIT 3 INACTIVE ******** C=CBA
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

以下の手順では、単一の実行空間でジョブを動かしたいので、イニシエータの2と3を止めます。

$pi2-3」入力し、「Enter」キーを入力します。


マスタコンソール画面

$pi2-3

$HASP000 OK
$HASP395 INIT ENDED
$HASP150 INIT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 INIT IS PURGED
$HASP395 INIT ENDED
$HASP150 INIT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 INIT IS PURGED

これで、MVSスタータシステムは、ジョブおよびサービスオペレータコマンドを処理する準備ができました。

以降の手順で、いくつかのJCLを実行してSYSGENしていきます。


ハードウェア構成変更(冒頭の4つのDASDボリュームを接続)

Herculesエミュレータが「アクティブ」中にDASDボリュームを追加するには、次のスクリプトをHerculeエミュレータで実行します。

Herculesエミュレータ画面のコマンドラインに、「script conf/sysgen.script」と入力し、「Enter」キーを入力します。


Herculeエミュレータ画面

Command ==> script conf/sysgen.script

CPU0000 PSW=070E000000000000 24..W..... instcount=27,309,731

すると、次のようなメッセージがHerculesエミュレータ画面に表示され、4つのDASDボリュームが接続されています。


Herculeエミュレータ画面

script conf/sysgen.script

#
####################################################################
# HERCULES EMULATOR SCRIPT FILE #
####################################################################
#
# use for attaching new dasd volumes during MVS system generation
#
attach 149 3350 dasd/mvsres.3350
HHCDA020I dasd/mvsres.3350 cyls=560 heads=30 tracks=16800 trklen=19456
attach 14a 3350 dasd/mvs000.3350
HHCDA020I dasd/mvs000.3350 cyls=560 heads=30 tracks=16800 trklen=19456
attach 14b 3350 dasd/spool1.3350
HHCDA020I dasd/spool1.3350 cyls=560 heads=30 tracks=16800 trklen=19456
attach 14c 3350 dasd/page00.3350
HHCDA020I dasd/page00.3350 cyls=560 heads=30 tracks=16800 trklen=19456
HHCPN013I EOF reached on SCRIPT file. Processing complete.
Command ==>
CPU0000 PSW=070E000000000000 24..W..... instcount=27,560,566


SYSGEN00:ターゲットDASDボリューム初期化とSYSGEN準備(所要時間:20分くらい)

先ほど作成した4つのDASDボリュームに新しいMVS3.8Jシステムがビルドされます。まずは、これらの4つのDASDボリュームを初期化します。

Herculesエミュレータ画面のコマンドプロンプトで、「devinit 12 jcl/sysgen00.jcl eof」と入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

HHCPN013I EOF reached on SCRIPT file. Processing complete.

Command ==> devinit 12 jcl/sysgen00.jcl eof
CPU0000 PSW=070E000000000000 24..W..... instcount=27,914,015

マスタコンソール画面に切り替えると、次のようなメッセージが表示されています。


マスタコンソール画面

 $HASP100 SYSGEN00 ON READER1

$HASP373 SYSGEN00 STARTED - INIT 1 - CLASS A - SYS H158
*01 ICK003D REPLY U TO ALTER VOLUME 149 CONTENTS, ELSE T

先頭アスタリスク(*)付きのメッセージID=ICK003Dで、オペレータの応答を待ちになっていると思います。

これは、I/Oデバイスアドレス=0x149のオフラインになっているDASDボリュームの初期化のため、オペレータが所定の容量を持ったDASDボリュームを0x149のアドレスにマウントしているか確認するように要求しています。

ここはマウントしているので(実際にDASDボリュームをよっこらせと取り付けているわけではないですが)、「r 1,u」と入力し、「Enter」キーを入力します。


マスタコンソール画面

*01 ICK003D REPLY U TO ALTER VOLUME 149 CONTENTS, ELSE T

r 1,u
IEE600I REPLY TO 01 IS;SUPPRESSED

先頭アスタリスク(*)付きのメッセージの応答連番が「01」じゃないかもしれないですが、その時は、その番号で応答してください。

この後、I/Oデバイスアドレスの0x14a,0x14b,0x14cについて、同様にメッセージID=ICK003Dの応答要求がされます。

それぞれ、「r 応答連番,U」と入力し、「Enter」キーを入力して応えていきます。

すると、次のような画面になります。4つのDASDボリュームが初期化され、オンラインになった旨のメッセージです。


マスタコンソール画面

*01 ICK003D REPLY U TO ALTER VOLUME 149 CONTENTS, ELSE T

r 1,u
IEE600I REPLY TO 01 IS;SUPPRESSED
*02 ICK003D REPLY U TO ALTER VOLUME 14A CONTENTS, ELSE T
r 2,u
IEE600I REPLY TO 02 IS;SUPPRESSED
*03 ICK003D REPLY U TO ALTER VOLUME 14B CONTENTS, ELSE T
r 3,u
IEE600I REPLY TO 03 IS;SUPPRESSED
*04 ICK003D REPLY U TO ALTER VOLUME 14C CONTENTS, ELSE T
r 4,u
IEE600I REPLY TO 04 IS;SUPPRESSED

先頭アスタリスク(*)付きのメッセージID=IEF166Dで、オペレータの応答を待ちになっていると思います。「r 5,y」と入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP100 SYSGEN00 ON INTRDR

$HASP100 SYSGEN00 ON INTRDR
IEF165I // V (149,14A,14B,14C),ONLINE
IEF165I 00006400
*05 IEF166D REPLY Y/N TO EXECUTE/SUPPRESS COMMAND
$HASP395 SYSGEN00 ENDED
$HASP150 SYSGEN00 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN00 IS PURGED
r 5,y

4つのDASDボリュームがありますので、引き続き先頭アスタリスク(*)付きのメッセージID=IEF166Dで、応答待ちになります。

r 応答連番,y」と入力し、「Enter」キーを入力して応えていきます。


マスタコンソール画面

 IEE600I REPLY TO 05 IS;Y

IEE302I 149 ONLINE
IEE302I 14A ONLINE
IEE302I 14B ONLINE
IEE302I 14C ONLINE
IEF165I // M 149,VOL=(SL,MVSRES),USE=PRIVATE
IEF165I 00006500
*06 IEF166D REPLY Y/N TO EXECUTE/SUPPRESS COMMAND
r 6,y
IEE600I REPLY TO 06 IS;Y
IEF165I // M 14A,VOL=(SL,MVS000),USE=PRIVATE
IEF165I 00006600
*07 IEF166D REPLY Y/N TO EXECUTE/SUPPRESS COMMAND
$HASP100 MOUNT ON STCINRDR
r 7,y
IEE600I REPLY TO 07 IS;Y
IEF165I // M 14B,VOL=(SL,SPOOL1),USE=PRIVATE
IEF165I 00006700
*08 IEF166D REPLY Y/N TO EXECUTE/SUPPRESS COMMAND
$HASP100 MOUNT ON STCINRDR
r 8,y
IEE600I REPLY TO 08 IS;Y
IEF165I // M 14C,VOL=(SL,PAGE00),USE=PRIVATE
IEF165I 00006800
*09 IEF166D REPLY Y/N TO EXECUTE/SUPPRESS COMMAND
$HASP100 MOUNT ON STCINRDR
r 9,y
IEE600I REPLY TO 09 IS;Y
$HASP100 MOUNT ON STCINRDR
$HASP373 MOUNT STARTED
$HASP395 MOUNT ENDED
$HASP150 MOUNT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 MOUNT IS PURGED
$HASP373 SYSGEN00 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN00 ENDED
$HASP150 SYSGEN00 ON PRINTER1
$HASP373 SYSGEN00 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN00 IS PURGED
$HASP373 MOUNT STARTED
$HASP395 MOUNT ENDED
$HASP373 MOUNT STARTED
$HASP395 MOUNT ENDED
$HASP373 MOUNT STARTED
$HASP395 MOUNT ENDED
$HASP150 MOUNT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 MOUNT IS PURGED
$HASP150 MOUNT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 MOUNT IS PURGED
$HASP150 MOUNT ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 MOUNT IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen00」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ pwd

/home/hercules/mvs
$ ./condcode.pl prt00e.txt sysgen00
Searching prt00e.txt for MVS Job Name sysgen00

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
IEHPROGM 0008 <--
ICKDSF 0000
IEBGENER 0000
IEFBR14 0000
$


SYSGEN00ジョブのIEHPROGMステップで、完了コード「0008」となっています。これは期待値通りです。

これは、まだ存在しないデータセット(この後の手順で作られる)を削除しようとしているからです。もし、存在していて正常に削除した場合には、完了コードは「0000」です。

4つのDASDボリュームがちゃんとマウントされているか、完了コード確認画面で確認します。

完了コード確認画面で「./condcode.pl prt00e.txt mount」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ pwd

/home/hercules/mvs
$ ./condcode.pl prt00e.txt mount
Searching prt00e.txt for MVS Job Name mount

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
14C 0000
14A 0000
14B 0000
149 0000



SYSGEN01:ステージ1(所要時間:5分)

SYSGEN01ジョブ(sysgen01.jcl)は、これからビルドするMVS3.8Jシステムのハードウェア構成の仕様がすべて含まれています。

Herculesエミュレータ画面のコマンドラインで、

devinit 12 jcl/sysgen01.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen01.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=406,531,675

マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN01 ON READER1

$HASP373 SYSGEN01 STARTED - INIT 1 - CLASS A - SYS H158
$HASP100 SYSGEN01 ON INTRDR
$HASP395 SYSGEN01 ENDED
$HASP150 SYSGEN01 ON PRINTER1
$HASP373 SYSGEN01 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN01 IS PURGED
$HASP395 SYSGEN01 ENDED
$HASP150 SYSGEN01 ON PUNCH1
$HASP150 SYSGEN01 ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PUNCH1 INACTIVE - CLASS=BK
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN01 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen01」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ pwd

/home/hercules/mvs
$ ./condcode.pl prt00e.txt sysgen01
Searching prt00e.txt for MVS Job Name sysgen01

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
CLEANUP 0008 <--
ASMBLR 0000
IEBGENER 0000
PUNCH 0000


CLEANUPジョブステップで、完了コード「0008」となっています。これは期待値通りです。

これは、まだ存在しないデータセット(この後の手順で作られる)を削除しようとしているからです。もし、存在していて正常に削除した場合には、完了コードは「0000」です。

PUCNHジョブステップでは、この後で実行するJCLのパンチカードデッキ(何枚ものパンチカードを束ねたもの)を生成するジョブステップです。

Hercules設定ファイルのI/Oアドレス0x013が示すファイル(pch013.txt)にカードイメージを書き込みます。

パンチカードについては、次を参照ください(wikipedia:パンチカード)。

このパンチカードデッキは、SYSGEN、システム生成を行うためのマクロ命令の元になるものが記述されていますが、そのままではjclとして実行できません。テキストエディタ(viやメモ帳)で修正してもよいですが、修正を行うawkスクリプト(stage2.awk)が用意されていますので、これを利用して「stage2.jcl」を作ります。

完了コード確認画面でstage2.jclを作りましょう。完了コード確認画面で次のコマンドを入力します。


完了コード確認画面

$ pwd

/home/hurcules/mvs
$ gawk -f stage2.awk pch013.txt > ./jcl/stage2.jcl


awkスクリプト(stage2.awk)が行う修正:



  1. JOB文に「TYPRUN=HOLD」を設定。


    • HOLD --- オペレータがジョブを解放するまで、そのジョブは実行しないで待ち行列に保留したいときに指定します。


    • SCAN --- JCL構文エラーを見つけるためにJCLを実行しないで、構文チェックするときに指定します。



  2. JOB文に「TIME=1439」を設定。

    「TIME=1439」は、ジョブの実行時間制限を取っ払う指定です。 stage2のパンチカードデッキ内の各ジョブは、順次実行していかなければならないのですが、次のジョブを実行する前には、その前のジョブが正しく実行されていることを確認する必要があります。もし遅いコンピュータだった場合、この「TIME=1439」がなかったら、デフォルト(いったいデフォルト値はいくつなんだろう?)のジョブ時間制限に達すると異常終了してしまいます。


    注意:本当は、「TIME=1440」では?というのは、IBM Knowledge Center z/OS MVS JCL Reference

    SA23-1385-00
    では、「1440」もしくは「NOLIMIT」とあるため。それか、無制限にしてしまうといつまでも終わらなくなるので、さすがに24時間を超えるような場合は異常終了させようとの考えかもしれない。


  3. JOBPARM文に、「LINES=100」を指定。

    SYSOUTのMAX出力行数を100,000行としています。


  4. JOBCAT文に、「SYS1.VSAM.MASTER.CATALOG」を指定。

    このカードがないとMVSスターターシステムは、データセットを見つけることができません。


  5. 「IDCAMS」を「IEFBR14」に文字列置換。

    不明何のためにやっている?ユーザカタログから削除してマスタカタログを残すため?!

    ジョブ内のSTEPY 6輸出はスターターシステムのマスター・カタログから(あなたはシステム生成時に上に運営されているすべてのデータセットがカタログされている)ユーザー・カタログ(から削除されます)。

    これは、生成されたシステムの正しい動作のためには全く不要です。あなたは、このステップを実行することを可能にすると、後でスターターシステムからのデータセットへの便利なアクセスが必要な場合は、カタログを再接続するためにJOBをビルドして実行する必要があります。それだけで接続されたカタログを残すためにはるかに優れています。


  6. sysgen01ジョブで生成されたデータセットの有効期限を「EXPDT=99350」から「EXPDT=00000」に変更。

    「99350」の読み方は、1999年と350日です。恐らく、MVS3.8がリリースされた当時からすると、有効期限なしの意味だったのだと思います。既に21世紀になっているので、「99350」のままにしていると、この後のステージ2のジョブがデータセットに書き込む時に、約200の応答要求に応えなければなりません。これを全て「00000」にすることで、これらの無駄な応答を無くしています。



SYSGEN01:ステージ2(所要時間:25分)

Herculesエミュレータ画面のコマンドラインで、

devinit 12 jcl/stage2.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/stage2.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=1,328,915,129

すると、マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN1  ON READER1     SYSTEM GENERATION

$HASP100 SYSGEN2 ON READER1 SYSTEM GENERATION
$HASP100 SYSGEN3 ON READER1 SYSTEM GENERATION
$HASP100 SYSGEN4 ON READER1 SYSTEM GENERATION
$HASP100 SYSGEN5 ON READER1 SYSTEM GENERATION
$HASP100 SYSGEN6 ON READER1 SYSTEM GENERATION
$HASP101 SYSGEN1 HELD
$HASP101 SYSGEN2 HELD
$HASP101 SYSGEN3 HELD
$HASP101 SYSGEN4 HELD
$HASP101 SYSGEN5 HELD
$HASP101 SYSGEN6 HELD
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

今、投入されたジョブは、ステージ1のawkスクリプトで修正した通り、HOLDされています(実行が保留されています)。

マスタコンソール画面で、このHOLD(保留)を解除するために、JES2コマンドを入力します。

マスタコンソール画面で、

$a'sysgen1'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

$a'sysgen1'

しばらくすると、次のようになります。


マスタコンソール画面

$a'sysgen1'

$HASP000 SYSGEN1 RELEASED
$HASP373 SYSGEN1 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN1 ENDED
$HASP150 SYSGEN1 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN1 IS PURGED
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

完了コード確認画面で「./condcode.pl prt00e.txt sysgen1」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ pwd

/home/hurcules/mvs
$ ./condcode.pl prt00e.txt sysgen1
Searching prt00e.txt for MVS Job Name sysgen1

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
LPA1 0000
SG2 A 0000
SG3 A 0000
SG4 A 0000
SG5 A 0000
SG6 A 0000
SG7 A 0000
SG8 A 0000
SG9 A 0000
SG10 A 0000
LPA11 0000
SG12 LK 0000
SG13 LK 0000
SG14 LK 0000
SG15 LK 0000
SG16 LK 0000
SG17 LK 0000
SG18 LK 0000
SG19 LK 0004 <--
SG20 LK 0000
SG21 LK 0000
SG22 LK 0000
SG23 LK 0000
SG24 LK 0000
SG25 LK 0000
SG26 LK 0000
SG27 LK 0000
SG28 LK 0004 <--
SG29 LK 0004 <--
SG30 LK 0000
SG31 LK 0004 <--
SG32 LK 0004 <--
SG33 LK 0000
SG34 LK 0000
SG35 LK 0000
SG36 LK 0000
SG37 LK 0004 <--
SG38 LK 0000
SG39 LK 0000
SG40 LK 0000
$


この後、残りのジョブ、sysgen2、sysgen3、sysgen4、sysgen5、sysgen6を上記のJES2コマンド「$コマンド」を使用して、HOLDを解除して実行していきます。

マスタコンソール画面で、

$a'sysgen2'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP250 SYSGEN1  IS PURGED

$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$a'sysgen2'

しばらくすると、次のような画面になります。


マスタコンソール画面

$a'sysgen2'

$HASP000 SYSGEN2 RELEASED
$HASP373 SYSGEN2 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN2 ENDED
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP150 SYSGEN2 ON PRINTER1
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN2 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen2」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen2

Searching prt00e.txt for MVS Job Name sysgen2

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
LNK1 0000
SG2 A 0000
SG3 A 0000
SG4 A 0000
SG5 A 0000
LNK6 0000
SG7 LK 0000
SG8 LK 0004 <--
SG9 LK 0000
SG10 LK 0000
SG11 LK 0000
SG12 LK 0000
SG13 LK 0004 <--
SG14 LK 0000
SG15 LK 0000
SG16 LK 0000
SG17 LK 0000
SG18 LK 0000
SG19 LK 0000
SG20 LK 0000
SG21 LK 0000
SG22 LK 0000
SG23 LK 0000
SG24 LK 0000
SG25 LK 0000
SG26 LK 0000
SG27 LK 0000
SG28 LK 0000
SG29 LK 0000
SG30 LK 0000
SG31 LK 0000
SG32 LK 0000
SG33 LK 0004 <--
SG34 LK 0000
SG35 LK 0000
SG36 LK 0000
SG37 LK 0000
SG38 LK 0000
SG39 LK 0000
SG40 LK 0000
SG41 LK 0000
SG42 LK 0000
SG43 LK 0000
SG44 LK 0000
SG45 LK 0000


マスタコンソール画面で、

$a'sysgen3'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP250 SYSGEN2  IS PURGED

$a'sysgen3'

しばらくすると、次のような画面になります。


マスタコンソール画面

$a'sysgen3'

$HASP000 SYSGEN3 RELEASED
$HASP373 SYSGEN3 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN3 ENDED
$HASP150 SYSGEN3 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN3 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen3」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen3

Searching prt00e.txt for MVS Job Name sysgen3

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
SVC1 0000
SVC2 0000
SVC3 0000


マスタコンソール画面で、

$a'sysgen4'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP250 SYSGEN3  IS PURGED

$a'sysgen4'

しばらくすると、次のような画面になります。


マスタコンソール画面

$a'sysgen4'

$HASP000 SYSGEN4 RELEASED
$HASP373 SYSGEN4 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN4 ENDED
$HASP150 SYSGEN4 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN4 IS PURGED
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

完了コード確認画面で「./condcode.pl prt00e.txt sysgen4」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen4

Searching prt00e.txt for MVS Job Name sysgen4

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
NUC1 0000
SG2 A 0000
SG3 A 0000
SG4 A 0000
SG5 A 0000
SG6 A 0000
SG7 A 0000
SG8 A 0000
SG9 A 0000
SG10 A 0000
SG12 A 0000
NUC13 0000
NUC14 LK 0004 <--
SG15 LK 0000
SG16 LK 0000
SG17 LK 0000
SG18 LK 0000


マスタコンソール画面で、

$a'sysgen5'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE

$a'sysgen5'

SYSGEN5の2番目のジョブステップを実行すると、マスタコンソール画面に次のメッセージが表示されます。


マスタコンソール画面

$a'sysgen5'

$HASP000 SYSGEN5 RELEASED
$HASP373 SYSGEN5 STARTED - INIT 1 - CLASS A - SYS H158
+IFC001I D=3350 N=0B F=01080000 L=0108001D S=0108000002 DIP COMPLETE

これは、「SYS1.LOGREC」データセットが初期化されたときに表示されますので、エラーではありません。

しばらくすると、次のような画面になります。


マスタコンソール画面

$a'sysgen5'

$HASP000 SYSGEN5 RELEASED
$HASP373 SYSGEN5 STARTED - INIT 1 - CLASS A - SYS H158
+IFC001I D=3350 N=0B F=01080000 L=0108001D S=0108000002 DIP COMPLETE
$HASP395 SYSGEN5 ENDED
$HASP150 SYSGEN5 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN5 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen5」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen5

Searching prt00e.txt for MVS Job Name sysgen5

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
MISC1 0000
SG2 0000
SG3 0000
SG4 A 0000
SG5 A 0000
MISC6 0000
SG7 LK 0000
SG8 LK 0000
SG9 LK 0000
SG10 LK 0000
SG11 LK 0000
SG12 LK 0000
SG13 LK 0000
SG14 LK 0000
SG15 LK 0000
SG16 LK 0000
SG17 LK 0000
SG18 0000
SG19 0000
SG20 0000


マスタコンソール画面で、

$a'sysgen6'」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP250 SYSGEN5  IS PURGED

$a'sysgen6'

しばらくすると、次のような画面になります。


マスタコンソール画面

$a'sysgen6'

$HASP000 SYSGEN6 RELEASED
$HASP373 SYSGEN6 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN6 ENDED
$HASP150 SYSGEN6 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN6 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen6」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen6

Searching prt00e.txt for MVS Job Name sysgen6

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
LIST1 0000
LIST2 0000
STEPY 0000
STEPZ1 0008 <--
STEPZ2 0000



SYSGEN02:JES2の生成(所要時間:2分)

SMP(システム修正変更プログラム)の実行の間、JES2の構成要素がライブラリにロードされていますが、JES2ロード・モジュールを構築するためには、リンクエディタを使用する必要があります。

また、JES2の動作に必要なパラメータは、「SYS1.PARMLIB」と「SYS1.PROCLIB」に作成する必要があります。

これらのパラメータは、Hercules MVS ディスカッショングループで色々カスタマイズされて現在に至るようです。

JES2パラメータに関する参考情報:

Tommy Sprinkle has made available the JES2 parameters

Herculesエミュレータ画面のコマンドラインで、

devinit 12 jcl/sysgen02.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen02.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=3,649,392,484

すると、マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN02 ON READER1

$HASP373 SYSGEN02 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN02 ENDED
$HASP150 SYSGEN02 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN02 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen02」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen02

Searching prt00e.txt for MVS Job Name sysgen02

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
JES2 0000
SSSM 0000
JES2PARM 0000
JES2PRC 0000
IEFBR14 0000



SYSGEN03(所要時間:15分)

SYSGEN03では、sysgen03.jclを実行します。このジョブでは、次のタスクを実行します。


  • 「SYS1.PARMLIB」データセットに「IEASYS00」メンバを作成。

    「IEASYS00」メンバには、IPLを行うごとに変えたくないデフォルト値やパラメーター値などを置く場所で、これを使用すると、IPL時のオペレーターの介入 を最小限に抑えることができます。「IEASYS00」メンバは自動的に読み取られるので、オペレーターは「SPECIFY SYSTEM PARAMETERS」に対して「Enter」や「U」で応答することができるので、エラーが発生してプロンプトが出る場合を除いて、オペレータのパラメータ入力を軽減できます。詳しくは、IBM Knowledge Center IEASYSxx (システム・パラメーター・リスト)を参照。

  • 「SYS1.PARMLIB」データセットに「IEAAPFM00」メンバを作成。

    IBM Knowledge Centerには、「「IEAAPFxx」メンバを使用すると、許可プログラム機能(APF)の許可を受けるプログラム・ライブ ラリーの指定を行うことができます。」ってあるけど、何のことだか全くわからない。参照先はIBM Knowledge Center IEAAPFxx (許可プログラム機能リスト)


  • 「SYS1.PARMLIB」データセットに「SMFPRM00」メンバを作成。

    詳しくは、IBM Knowledge Center SMFPRMxx (システム管理機能 (SMF) パラメーター)を参照。

    MVSとその制御下で実行されるプログラムに関する情報の記録と、システム管理機能に関連するパラメータが含まれているようです。


  • 「SYS1.PARMLIB」データセットに「IEALOD00」メンバを作成。

    「IEALOD00」メンバは、実​​記憶にロードされ、固定されるMVSのための操作コードの一部が含まれているロード・モジュールを指定します。これらのモジュールは、非常に頻繁に実行されている記憶装置でそれらを固定すると、システムのパフォーマンスを向上させることができます。

    英語直訳すぎで、よくわからないが、恐らくメモリ常駐プログラムの指定をしているのだと思われます。


  • 「SYS1.PARMLIB」データセットに「COMMND00」メンバを作成。

    「COMMND00」メンバは、IPLの完了時に実行されるオペレータコマンドが含まれています。詳しくは、IBM Knowledge Center COMMNDxx (初期設定時に自動的に出されるコマンド)を参照。


  • 「SYS1.PARMLIB」データセットに「SETPFK00」メンバを作成。

    「SETPFK00」メンバは、コンソールプログラムのファンクションキーの設定が含まれています。MVSコンソールに関連したコマンドをファンクションキーに割り当てると、ファンクションキーを押すだけで実行することができます。

    詳しくは、IBM Knowledge Center PFKTABxx (PF キー・テーブル定義)参照。


  • 「SYS1.PARMLIB」データセットに「LNKLST00」メンバを作成。

    「LNKLST00」メンバは、自動バッチ、もしくは、TSO下で実行されたロード・モジュールに検索されるロード・モジュール・ライブラリが含まれています。詳しくは、IBM Knowledge Center LNKLSTxx (LNKLST 連結)参照。


  • 「SYS1.PARMLIB」データセットに「VATLST00」メンバを作成。

    「VATLST00」メンバは、DASDボリュームに関連する属性を定義しています。詳しくは、IBM Knowledge Center VATLSTxx (ボリューム属性リスト)参照。


  • 「SYS1.PARMLIB」データセットに「PARMTZ」メンバを作成。

    「PARMTZ」メンバは、ローカルタイムを確立するために、GMTからのオフセットを指定します。この手順では米国の中​​部標準時が設定されています。


  • 「SYS2.LOCAL.LPALIB」データセットを削除。

    このライブラリは、システム生成時にローカルSVCモジュールを提供するために「SYSGEN00」ジョブによって作成されました。このジョブまで来たら、もう必要ないので削除します。


  • 「SYS2.LINKLIB」データセットのアロケーションとカタログ化。

    「SYS1.LINKLIB」データセットはメインロード・モジュール・ライブラリであり、システム生成時に作成されます。しかし、そのライブラリに独自のロード・モジュールを追加するのはあまりよくありません。独自のロード・モジュールを格納する場所として、「SYS2.LINKLIB」データセットを作成しています。


  • 「SYS2.PROCLIB」データセットのアロケーションとカタログ化。

    「SYS1.PROCLIB」データセットは、システムのカタログプロシージャのライブラリです。上記同様に独自のカタログプロシージャ用に「SYS2.PROCLIB」データセットを作成しています。


  • 「SYS2.CMDLIB」データセットのアロケーションとカタログ化。

    「SYS1.LINKLIB」データセットは、バッチ処理用のロード・モジュール格納場所であるように、「SYS1.CMDLIB」はTSO用のロード・モジュールの格納場所です。「SYS2.CMDLIB」データセットは、上記同様に独自のTSO用ロード・モジュール格納場所として作成しています。


  • 「SYS2.HELP」データセットのアロケーションとカタログ化。

    「SYS1.HELP」データセットがシステムTSOロード・モジュール用のヘルプ(構文とオペランドの使用説明書)の格納先です。「SYS2.HELP」データセットは、独自のTSOのロード・モジュール用のヘルプを格納する場所として作成しています。


  • 「SYS1.PROCLIB」データセットに「JES2」メンバを作成。

    基本的なJES2カタログプロシージャは、「SYSGEN02」によって作成されましたが、よりカスタマイズされたプロシージャは、「SYS2.PROCLIB」データセットに組み込む/利用するために、ここで作成しておきます。


  • 「SYS2.PROCLIB」データセットに「CLEARDMP」メンバを作成。

    致命的なエラーが発生した場合に、システム・ダンプが作られますが、これの出力先として「MVSRES」DASDボリュームに、3つのダンプ用のデータセットがアロケーションされています。これらの3つ全てがいっぱいとなった場合、システムが起動することができなくなります。「CLEARDMP」メンバは、これらのデータセットをマスタコンソール画面からクリアできるようにするメンバです。


  • 「SYS2.PROCLIB」データセットに「CLEARERP」メンバを作成。

    ハードウェアエラーが発生した場合、「SYS1.LOGREC(​​環境エラー記録データセット)」にそのエラーエントリは記録されます。このデータセットは、エントリの有限数が設定されていて、最大容量に近づくと、マスタコンソールにデータセットをクリアするようにメッセージを出力します。「CLEARERP」メンバは、必要に応じてエラーエントリ内容を保存し、データセットをクリアできるようにするためメンバです。


  • 「SYS2.PROCLIB」データセットに「COMPRESS」メンバを作成。

    ライブラリデータセットは、多くのアップデートがされると、頻繁に再編成が必要になります。「COMPRESS」メンバは、未使用エクステントの再利用、データセットの圧縮するために使用します。


  • 「SYS2.PROCLIB」データセットに、「SMPASM」、「SMPASML」、「SMPAPP」、「SMPREC」のメンバを作成。

    これらのメンバはアセンブル、リンクするために使用されます。


  • 「SYS1.UMODMAC」、「SYS1.UMODCNTL」、「SYS1.UMODSRC」、「SYS1.UMODOBJ」、「SYS1.UMODLIB」のデータセットのアロケーションとカタログ化。これらのデータセットは、ユーザの変更を保持するために使用されます。


  • 「SYS1.CDS」、「SYS1.CRQ」、「SYS1.SMPCDS」データセットのアロケーションとカタログ化。

    これらのデータセットは、ターゲット・システムへの変更を記録し追跡するために使用されます。


  • 「SMP」は、ターゲットシステムの環境に合わせて初期化します。


  • 「SYS2.CONTROL」データセットのアロケーションとカタログ化。

    いくつかのカタログ手順は、制御カードが必要ですが、制御カードは、カタログプロシージャに含めることはできません。それらのデータセットタイプを保持するために、このライブラリーを作成します。


  • 「CLS」TSOコマンドとヘルプテキストを追加。

    「CLS」TSOコマンドは、単にTSO画面をクリアするコマンドです(テープ=CBT 430、ファイル#300からの短いプログラムです)。これは、「SYS2.HELP」データセットHELPテキストが置かれ、「SYS2.CMDLIB」データセットにコンパイルされたロード・モジュールが格納されます。。


  • 「SETPFKEY」バッチロードモジュールの実行手順を追加。

    このプログラム(テープ=CBT 249、ファイル#295から)は、ファンクションキーにオペレータコンソールコマンドを割り当てます。

    「SYS2.LINKLIB」データセットにファンクションキー割り当てプログラムが格納され、「SYS2.PROCLIB」データセットに、ファンクションキー割り当て手順を格納します。「SYS1.PARMLIB(COMMND00)」でこのプログラム用に「START」コマンドが設定されていて、その中で「SYS1.PARMLIB(SETPFK00)」を実行しファンクションキーを設定してします。


  • 「ZTIMER」バッチ・ロード・モジュールの実行手順とパラメーター・メンバーの追加。

    このプログラムは、アラームを表示したり、スケジュール、もしくは定期的にMVSオペレータコマンドを実行するために使用されるプログラムです。「SYS2.LINKLIB」データセットに格納され、これを実行する手順は「SYS2.PROCLIB」に格納されます。「SYS1.PARMLIB(COMMND00)」でこのプログラム用に「START」コマンドが設定されていて、その中で、「SYS2.CONTROL(ZTIMER)」は、定期的にJES2キュー内の未処理の出力をクリアします。


  • 「CLIP」バッチ・ロード・モジュールの実行手順を追加。

    このプログラムは、オフラインDASDボリュームのラベルを変更するために、マスタコンソール画面から使用されます。「SYS2.LINKLIB」データセットに格納され、その実行手順は「SYS2.PROCLIB」に格納されます。


前置きが長くなりすぎましたが、sysgen03.jslを実行します。

Herculesエミュレータ画面のコマンドラインで、

devinit 12 jcl/sysgen03.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen03.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=3,737,502,211

すると、マスタコンソール画面に切り替えて、5分くらいすると次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN03 ON READER1

$HASP373 SYSGEN03 STARTED - INIT 1 - CLASS A - SYS H158
*IEC507D E 150,START1,SYSGEN03,
IEC507D UPDATE08,SYS1.PROCLIB
*10 IEC507D REPLY 'U'-USE OR 'M'-UNLOAD

これは、I/Oデバイスアドレス0x150に接続されているstart1.3330 DASDボリュームにある、「SYS1.PROCLIB」データセットが有効期限付きで保護されている状態で、書き込みをしようとしたときに表示される応答要求です。

書き込みをしたいので、マスタコンソール画面で「r 10,u」を入力し、「Enter」キーを入力します。


マスタコンソール画面

*10 IEC507D REPLY 'U'-USE OR 'M'-UNLOAD

r 10,u

しばらくすると、次のような画面になります。


マスタコンソール画面

r 10,u

IEE600I REPLY TO 10 IS;U
$HASP100 SYSGEN03 ON INTRDR
$HASP395 SYSGEN03 ENDED
$HASP150 SYSGEN03 ON PRINTER1
$HASP373 SYSGEN03 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN03 IS PURGED

「$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE」が、中々表示されなくて、気になるときは、

D A,L」を入力し、「Enter」キーを入力します。


マスタコンソール画面

 $HASP250 SYSGEN03 IS PURGED

D A,L
IEE102I 03.30.54 16.164 ACTIVITY 247
00002 JOBS 00001 INITIATORS
JES2 JES2 IEFPROC V=V
SYSGEN03 SMPAPP HMASMP V=V
00000 TIME SHARING USERS
$HASP395 SYSGEN03 ENDED
$HASP150 SYSGEN03 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN03 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen03」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen03

Searching prt00e.txt for MVS Job Name sysgen03

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
BACKUP01 0000
UPDATE02 0000
ALLOC03 0000
BACKUP04 0000
UPDATE05 0000
UPDATE06 0000
UPDATE08 0000
SUBMIT09 0000
UPDATE10 0000
ASMFCL11 ASM 0000
ASMFCL11 LKED 0000
ASMFCL12 ASM 0000
ASMFCL12 LKED 0000
UPDATE13 0000
ASMFCL14 ASM 0000
ASMFCL14 LKED 0000
UPDATE15 0000
UPDATE16 0000
ASMFCL17 ASM 0000
ASMFCL17 LKED 0000
UPDATE18 0000
SMPAPP HMASMP 0000



SYSGEN04(所要時間:5分)

SYSGEN04では、sysgen04.jclを実行します。このジョブでは、次のタスクを実行します。


  • 「SYS1.PARMLIB」データセットに「IKJTSO00」メンバを作成します。
    このメンバは、TSOの実行を制御するパラメータを指定します。

  • 「SYS1.PROCLIB」データセットに「IKJACCNT」メンバを作成します。
    このメンバは、個々のTSOユーザーのアドレス空間を定義するパラメータを指定します。

  • 「SYS1.PROCLIB」データセットに「NET」メンバを作成します。
    このメンバは、VTAMを開始する時に実行するメンバです。

  • 「SYS1.PROCLIB」データセットに「TSO」メンバを作成します。
    このメンバは、TSOを開始する時に実行するメンバです。

  • 「SYS1.VTAMLST」データセットのアロケーションとカタログ化。
    このライブラリは、VTAMの仕様が含まれています。

  • 「SYS1.VTAMLST」データセットに「ATCSTR00」メンバを作成します。
    このメンバは、VTAMのパラメータを設定します。

  • 「SYS1.VTAMLST」データセットに「ATCCON00」メンバを作成します。
    このメンバは、TSOアプリケーションとローカル3270端末用VTAMテーブルを設定します。

  • 「SYS1.VTAMLST」データセットに「APPLTSO」メンバを作成します。
    このメンバは、すべてのローカル3270端末のログオンテーブルを設定します(初期値:8つ)。

  • 「SYS1.VTAMLST」データセットに「LCL400」メンバを作成します。
    このメンバは、すべてのローカル3270端末を指定します(初期値:8つ)。

  • 「SYS1.VTAMSRC」データセットのアロケーションとカタログ化。
    このライブラリは、VTAMのログオンテーブルが含まれます。

  • 「SYS1.VTAMSRC」データセットに「LOGTAB01」メンバを作成します。
    このメンバは、VTAM用のログオンテーブルを解釈する際の定義を設定します。

  • 「SYS1.VTAMSRC」データセットに「LOGMOD01」メンバを作成します。
    このメンバは、ローカル3270端末の全ての変数を定義します。

  • 「SYS1.CMDPROC」データセットのアロケーションとカタログ化。
    このライブラリは、すべてのTSOユーザーが使用できるTSOコマンド・プロシージャ(CLIST)を格納します。

  • 「SYS1.CMDPROC」データセットに「STDLOGON」メンバを作成します。
    デフォルトのTSOログオンメッセージを定義しています。

  • 「SYS1.CMDPROC」データセットに「USRLOGON」メンバを作成します。
    デフォルトのTSOログオン・プロシージャを定義しています。

  • 「LOGTAB01」と「LOGMOD01」のアセンブルとリンクを実行します。

前置きが長いですが、sysgen04.jclを実行します。Herculesエミュレータ画面のコマンドラインで、「devinit 12 jcl/sysgen04.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen04.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=6,498,264,054

すると、マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN04 ON READER1

$HASP373 SYSGEN04 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN04 ENDED
$HASP150 SYSGEN04 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN04 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen04」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt sysgen04

Searching prt00e.txt for MVS Job Name sysgen04

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
UPDATE01 0000
UPDATE02 0000
UPDATE03 0000
UPDATE04 0000
UPDATE05 0000
UPDATE06 0000
LOGTAB07 ASM 0000
LOGTAB07 LKED 0000
LOGMODE8 ASM 0000
LOGMODE8 LKED 0000
UPDATE09 0000
UPDATE10 0000
ASM11 0000
LKED12 0000



SYSGEN05(所要時間:3分)

出口ルーチンとして、「IEFACTRT」ロード・モジュールがありますが、これは、ジョブやジョブステップの終了時にOSから呼び出されるサブルーチンです。これを利用すると、終了時に統計情報を自動的に取得したり、完了コードをマスタコンソール画面に表示したりできます。

SYSGEN05では、このMVS3.8JのSYSGEN手順の元ネタを公開している、Jay Moseleyが利用している出口ルーチンをインストールします。

この出口ルーチンの特徴は、何かジョブで問題が起きたときに、いちいちプリント出力を検索しなくてもMVSコンソール上に、ジョブステップの完了コードが表示されることです。

JCLのJOB文のNOTIFYパラメータにTSOユーザーIDを指定していれば、それに情報を送信します。

SMF(システム管理機能)は、常に次の情報を収集します。


  • ジョブの開始

  • ジョブステップの開始

  • データセットのオープン

  • データセットのクローズ

  • ジョブステップの終了

  • ジョブ終了

などです。

収集される情報の量は、「SYS1.PARMLIB(SMFPRM00)」パラメータで設定したオプションに応じて変化します。

このパラメータは、IPLやオペレータによって上書きされることがあります。

システム生成時に作成された2つのデータセット「SYS1.MANX」と「SYS1.MANY」に収集された情報は格納されます。

これらのデータセットの一つは、アクティブな新しいレコードが書き込まれるデータセットで、このデータセットが一杯になると、SMFは、自動的にもう一方のデータセットに切り替えます。

この切り替えが起きると、マスタコンソール画面にデータセット内のデータを保存するために注意する必要がある旨のメッセージを表示します。このメッセージを受けて、オペレータは一杯になったデータセットの方をクリアする必要があります。

では、sysgen05.jclを実行しましょう。Herculesエミュレータ画面のコマンドラインで、「devinit 12 jcl/sysgen05.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen05.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=6,596,271,224

すると、マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN05 ON READER1

$HASP373 SYSGEN05 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN05 ENDED
$HASP150 SYSGEN05 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN05 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen05」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

[hercules@localhost mvs]$ ./condcode.pl prt00e.txt sysgen05

Searching prt00e.txt for MVS Job Name sysgen05

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
UPDATE01 0000
SMPASM02 ASM 0000
SMPAPP03 HMASMP 0000
IDCAMS04 0000
UPDATE05 0000
UPDATE06 0000
UPDATE07 0000
SMPASM08 ASM 0000
SMPAPP09 HMASMP 0000



SYSGEN06(所要時間:15分)

SYSGEN06では、sysgen06.jclを実行します。このジョブでは、次のタスクを実行します(主にUSERMODのインストールです)


  • USERMOD TMVS804(source: Kevin Leonard)

    MVS3.8Jのシステム生成ではIPL後に自動的にJES2を開始するMSTRJCLでSTARTコマンドを配置します。それは常にJES2を自動起動するには良い場所ではないので、このUSERMODでは、STARTコマンドを削除します(実際にはコメントとしてそれを残す)。このUSERMODは「SYS1.PARMLIB(COMMND00)」にJES2用のSTARTコマンドを配置するためステップがいくつかあります。


  • USERMOD AY12275(source: Kevin Leonard)

    SMFアカウンティング統計情報のフィールド=TCTRSZが間違っているので、このフィールドの内容を修正します。


  • USERMOD TTS0801(source: Kevin Leonard)

    オペレータによってTSOをシャットダウンされた後に出力されるメッセージID=IKT012Dを除去します。これは、オペレータの操作を簡素化するために行っています。もしこれをしなかった場合は、オペレータ応答として毎度"U"(ダンプなしで終了処理続行)か"DUMP"(仮想記憶域のダンプ)をすることになります。


  • USERMOD AZ58122(source: Peter van der Woude)

    TSOユーザがログオフするたびに、コンソールに発行されたエラーメッセージを除去します。


  • USERMOD SLB0002 (source: Shelby Beach)

    JOBとEXECカードREGIONパラメータは、キロバイト(K)でのサイズの指定が可能です。

    MVSのその後のバージョンでは、メガバイト(M)の指定を可能にしました。

    このUSERMODは、MVS3.8Jにメガバイト(M)を使用できるようにします。


  • USERMOD SYZM001 (source: Brian Westerman)

    このUSERMODは、彼らがシステムタスクから送信されたメッセージにCN(00)を含めることを抑制します。


  • USERMOD ZUM0007 (source: Michael Koehne)

    2000年問題の対策。1999年を超えるとTSOが誤った世紀を表示するTSOモジュールにパッチを適用します。


  • USERMOD ZUM0001 (source: Volker Bandke)

    TSOの許可テーブルIKJEFTE2にコマンドを追加します。


  • USERMOD ZP60001 (source: Greg Price)

    VTAMが初期化された後に自動的にTSOを開始するために、WTO出口ルーチンを追加します。


  • USERMOD ZP60002 (source: Greg Price)

    TSO TESTが無効オペコードに遭遇した後に実行を停止しないように変更します。


  • USERMOD ZP60003 (source: Greg Price)

    「IFOX00」は空白文を受け入れるように変更します。


  • USERMOD ZP60004 (source: Greg Price)

    高輝度のアクション・コンソール・メッセージを表示するように変更。


  • USERMOD ZP60005 (source: Greg Price)

    IOSが常にチャネルとデバイスI/Oカウントをメンテナンスするように変更します。


  • USERMOD ZP60006 (source: Greg Price)

    データセットの解放時に、解放時のメッセージにEXCPカウント(たぶん、例外の数)を表示するように変更します。


  • USERMOD ZP60007 (source: Greg Price)

    TSO / VTAMはGTFによってトレースするオプションを許可するように変更します。


  • USERMOD ZP60008 (source: Greg Price)

    EWAとローカル非SNA 3270用のWSFサポートを追加します。


  • USERMOD ZP60009 (source: Greg Price)

    TSO / VTAMにTPUTとTGETためNOEDITサポートを追加します。


  • USERMOD ZP60012 (source: Greg Price)

    TSOセッションでABENDした場合に割り込みコードの報告を追加します。


  • USERMOD ZP60014 (source: Greg Price)

    CLISTの制御変数と組み込み関数の拡張機能を追加します。


  • USERMOD ZP60015 (source: Greg Price)


  • USERMOD ZP60016 (source: Greg Price)

    これら二つはSTATUS TSOコマンドのJES2ジョブ検索を拡張します。


  • USERMOD ZP60019 (source: Greg Price)

    JCLで「TIME=1440」が記述されていた場合、CPU時間の記録します。


  • USERMOD ZP60026 (source: Greg Price)

    TSO ALLOCATEコマンドにREUSEオペランドを追加します。


  • USERMOD ZP60032 (source: Greg Price)

    GTTERMマクロは端末名を報告することができます。


  • USERMOD WM00017(不明ソース)

    「\$U」と「\$DP」のJES2コマンドを追加します。


では、sysgen06.jclを実行します。

Herculesエミュレータ画面のコマンドラインで、「devinit 12 jcl/sysgen06.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/sysgen06.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=6,911,044,576

すると、マスタコンソール画面に切り替えると、次のような画面になります。


マスタコンソール画面

 $HASP100 SYSGEN06 ON READER1

$HASP100 SYSGEN06 ON READER1
$HASP100 SYSGEN06 ON READER1
$HASP100 SYSGEN06 ON READER1
$HASP100 SYSGEN06 ON READER1
$HASP373 SYSGEN06 STARTED - INIT 1 - CLASS A - SYS H158
$HASP395 SYSGEN06 ENDED
$HASP150 SYSGEN06 ON PRINTER1
$HASP373 SYSGEN06 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN06 IS PURGED
$HASP395 SYSGEN06 ENDED
$HASP150 SYSGEN06 ON PRINTER1
$HASP373 SYSGEN06 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN06 IS PURGED
$HASP395 SYSGEN06 ENDED
$HASP150 SYSGEN06 ON PRINTER1
$HASP373 SYSGEN06 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN06 IS PURGED
$HASP395 SYSGEN06 ENDED
$HASP150 SYSGEN06 ON PRINTER1
$HASP373 SYSGEN06 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 SYSGEN06 IS PURGED
$HASP395 SYSGEN06 ENDED
$HASP150 SYSGEN06 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 SYSGEN06 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt sysgen06」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

[hercules@localhost mvs]$ ./condcode.pl prt00e.txt sysgen06

Searching prt00e.txt for MVS Job Name sysgen06

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
RECV01 HMASMP 0000
APPLY01 HMASMP 0000
IEHPROGM 0000
IEBUPDTE 0000
RECV02 HMASMP 0000
APPLY02 HMASMP 0000
RECV03 HMASMP 0000
APPLY03 HMASMP 0000
RECV04 HMASMP 0000
APPLY04 HMASMP 0000
RECV05 HMASMP 0000
APPLY05 HMASMP 0000
RECV06 HMASMP 0000
RECV07 HMASMP 0000
APPLY07 HMASMP 0000
IEBUPDTE 0000
SMPASML ASM 0000
SMPASML LINK 0000
RECV08 HMASMP 0000
APPLY08 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
RECV09 HMASMP 0000
APPLY09 HMASMP 0000
RECV10 HMASMP 0000
APPLY10 HMASMP 0000
RECV11 HMASMP 0000
APPLY11 HMASMP 0000
RECV12 HMASMP 0000
APPLY12 HMASMP 0000
RECV13 HMASMP 0000
APPLY13 HMASMP 0004 <--
RECV14 HMASMP 0000
APPLY14 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
APPLY15 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
RECV16 HMASMP 0000
APPLY16 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
RECV17 HMASMP 0000
APPLY17 HMASMP 0004 <--
RECV18 HMASMP 0000
APPLY18 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
RECV19 HMASMP 0000
APPLY19 HMASMP 0000
RECV20 HMASMP 0000
APPLY20 HMASMP 0000
RECV21 HMASMP 0000
APPLY21 HMASMP 0000
RECV22 HMASMP 0000
APPLY22 HMASMP 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
IFOX00 0000
IEBGENER 0000
RECV23 HMASMP 0000
APPLY23 HMASMP 0000
RECV24 HMASMP 0000
APPLY24 HMASMP 0000
RECV25 HMASMP 0000
APPLY25 HMASMP 0004 <--



FDZ1D02(所要時間:5分)

「FDZ1D02」では、「fdz1d02.jcl」を実行します。このジョブでは、次のタスクを実行します。

「FDZ1D02」はデバイスサポートファシリティver13のことで、一般的には、「ICKDSF:DASDの初期化プログラム」のことです。

「その2:メインフレームOSのシステム生成がやってみたい!」で「ICKDSF」をインストールしましたが、これはver6です。何故、ver13があるのに、ver6をインストールするのか?ですが、「ICKDSF」のver6は、ver6以降に登場したデバイスタイプを知らないのです。従って、3375/3380/3390 DASDボリュームを初期化するにはver13が必要です。

ver6は、3350 DASDボリュームの初期化に使います。3350/3375/3380/3390 DASDボリュームの初期化のために、ver6、ver13の両方が必要となります。

Herculesエミュレータが提供している、「DASDINIT」、「DASDLOAD」ユーティリティを使えば、これらのDASDボリュームを初期化することはできます。敢えて、MVSを使ってこれを解決するためにver6とver13の両方を使っています。

「fdz1d02.jcl」では、「product.het」テープイメージからライブラリを復元し、リンク・エディット、ビルドを行います。そのままでは、ver6の「ICKDSF」を上書きしてしまうので、「ICKDSF13」のロードモジュール名で

「SYS1.LINKLIB」データセットに格納します。

従って、DASDボリュームの初期化を行うときは、どちらのロードモジュールを利用するか注意してください。


  • 「3375/3380/3390 DASDボリュームの初期化には、「ICKDSF13」を利用

  • それ以前のDASDボリュームの初期化には、「ICKDSF」を利用

です。

Herculesエミュレータ画面のコマンドラインで、「devinit 12 jcl/fdz1d02.jcl eof」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 12 jcl/fdz1d02.jcl eof

CPU0000 PSW=070E000000000000 24..W..... instcount=11,412,175,162

すると、マスタコンソール画面に切り替えると、次のような画面になります。

アスタリスク(*)付きのメッセージID=IEF238Dが表示されています。テープイメージの取り付けをオペレータに要求しています。


マスタコンソール画面

 $HASP100 FDZ1D02  ON READER1     INSTALL DSF R13

$HASP373 FDZ1D02 STARTED - INIT 1 - CLASS A - SYS H158
IEF244I FDZ1D02 IEBCOPY - UNABLE TO ALLOCATE 1 UNIT(S)
AT LEAST 1 OFFLINE UNIT(S) NEEDED.
IEF489I FDZ1D02 - 1 UNIT(S) NEEDED FOR LIBIN1
IEF247I FDZ1D02 - 182,183,184,282,283,284,170,171,270,271 OFFLINE
IEF247I FDZ1D02 - 382,383,384,482,483,484,582,583,584,682 NOT ACCESSIBLE
IEF247I FDZ1D02 - 683,684,370,371,470,471,570,571,670,671 NOT ACCESSIBLE
*11 IEF238D FDZ1D02 - REPLY DEVICE NAME OR 'CANCEL'.

Herculesエミュレータ画面のコマンドラインで、「devinit 170 tape/product.het 」を入力し、「Enter」キーを入力します。


Herculesエミュレータ画面

Command ==> devinit 170 tape/product.het

CPU0000 PSW=070E000000000000 24..W..... instcount=11,413,686,263

マスタコンソール画面に切り替え、テープイメージの取り付けたのでMVSに応答します。

r 11,170」を入力し、「Enter」キーを入力します。


マスタコンソール画面

*11 IEF238D FDZ1D02 - REPLY DEVICE NAME OR 'CANCEL'.

r 11,170

しばらくすると、次のような画面になります。


マスタコンソール画面

r 11,170

IEE600I REPLY TO 11 IS;170
*IEF233A M 170,MVS38J,,FDZ1D02,IEBCOPY
$HASP100 FDZ1D02 ON INTRDR INSTALL DSF R13
IEF234E K 170,MVS38J,PVT,FDZ1D02
$HASP395 FDZ1D02 ENDED
$HASP150 FDZ1D02 ON PRINTER1
$HASP373 FDZ1D02 STARTED - INIT 1 - CLASS A - SYS H158
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP250 FDZ1D02 IS PURGED
$HASP395 FDZ1D02 ENDED
$HASP150 FDZ1D02 ON PRINTER1
$HASP309 INIT 1 INACTIVE ******** C=A
$HASP160 PRINTER1 INACTIVE - CLASS=AJ
$HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
$HASP250 FDZ1D02 IS PURGED

完了コード確認画面で「./condcode.pl prt00e.txt fdz1d02」を入力し、「Enter」キーを入力します。

完了コードの期待値は次の通りです。


完了コード確認画面

$ ./condcode.pl prt00e.txt fdz1d02

Searching prt00e.txt for MVS Job Name fdz1d02

Step Name Proc Step Name Completion Code
--------- -------------- ---------------
IEBCOPY 0000
IDCAMS 0000
IEBGENER 0000
IEWL 0000
IEHPROGM 0000



スナップショットの取得

以上で長かったSYSGEN、システム生成が終わりました。次の手順、「その4:メインフレームOSのシステム生成がやってみたい!:MVS3.8Jのカスタマイズ」では、TSO回りの使い勝手を向上させるユーティリティ類をインストールしますので、ここまでの変更のスナップショットを取ります。


MVSスタータシステムをシャットダウン

マスタコンソール画面に切り替え、「$p jes2」と入力し、「Enter」キーを入力します。このコマンドは、正常にシャットダウンするように、JES2に指示しています。すると、次のメッセージが表示されます。


マスタコンソール画面

 $HASP250 FDZ1D02  IS PURGED

$p jes2

これはMVSスタータシステムがパワーダウンが可能であることを示しています。MVSはまだ実行されており、追加のオペレータコマンドを入力できる状態にあります。

z eod」と入力し、「Enter」キーを入力します。

これは、全てのシステムファイルを閉じて、通常のシャットダウンの準備を指示しています。


マスタコンソール画面

$p jes2

$HASP395 INIT ENDED
IEE043I A SYSTEM LOG DATA SET HAS BEEN QUEUED TO SYSOUT CLASS A
IEE037I LOG NOT ACTIVE
2000 04.56.44 CONSOLE IEE142I 01F NOW RECEIVING HARDCOPY
4000 04.56.44 IEE043I A SYSTEM LOG DATA SET HAS BEEN QUEUED TO SYSOUT CLASS A
4000 04.56.44 IEE037I LOG NOT ACTIVE
0000 04.56.44 IEF196I IEF142I JES2 JES2 - STEP WAS EXECUTED - COND CODE 0000
0000 04.56.44 IEF196I IEF285I SYS1.PROCLIB KEPT
0000 04.56.44 IEF196I IEF285I VOL SER NOS= START1.
0000 04.56.44 IEF196I IEF285I SYS1.HASPCKPT KEPT
0000 04.56.44 IEF196I IEF285I VOL SER NOS= SPOOL0.
0000 04.56.44 IEF196I IEF285I SYS1.HASPACE KEPT
0000 04.56.44 IEF196I IEF285I VOL SER NOS= SPOOL0.
z eod

quiesce」と入力し、「Enter」キーを入力します。


マスタコンソール画面

z eod

4000 04.57.55 IEE334I HALT EOD SUCCESSFUL
quiesce

このコマンドは、DASDボリュームに現在のバッファ状態を書き込むためにMVSスタータシステムに指示しています。

これで、Herculesエミュレータをシャットダウンする前に、メモリに保持しているすべての情報がDASDボリュームに書かれます。

Herculesエミュレータ画面に切り替え、「quit」と入力し、「Enter」キーを入力します。Herculesエミュレータは、エミュレートされたメインフレーム・デバイス用のすべてのファイルを閉じて終了します。


Herculesエミュレータ画面

HHCCP077I 0151:Sense=CMDREJ

HHCCP011I CPU0000: Disabled wait state
PSW=000A0000 00000CCC
Command ==> quit
CPU0000 PSW=000A000000000CCC 24M.W..... instcount=11,457,432,321


スナップショットの取得


Herculesエミュレータ画面

$ pwd

/home/hercules
$ tar cvfj mvs.03.tar.bz2 ./mvs