その4:メインフレームOSのシステム生成がやってみたい！:MVS3.8Jのカスタマイズ


# MVS3.8Jのカスタマイズ
これまでMVS3.7を利用したスターターシステムでMVS3.8JのSYSGEN、システム生成を行ってきましたが、前回までの手順でMVS3.8J環境を構築できました。以降は、より便利に使っていくためのカスタマイズについて記述しています。

## MVS3.8Jハードウェア構成
MVS3.8Jのハードウェア構成(Hercules設定ファイル「conf/mvs.cnf」)は次の通りです。

![image](https://qiita-image-store.s3.amazonaws.com/0/76786/f08d1fd9-407c-5961-b52f-3a3984948c55.png)

このハードウェア構成は、その3までの手順で構築してきたハードウェアの構成になっています。
最小限の構成でSYSGEN、システム生成してきたので、この図で示した以上のデバイス(I/Oデバイスアドレス)が実際にはあります。次のハードウェアリストに全てのI/Oデバイスアドレス、汎用デバイス名が一覧されていますので、参考にしてください。
参考:[MVS3.8Jハードウェアリスト](http://www.jaymoseley.com/hercules/downloads/pdf/mvs3.8j%20hardware%20list.pdf)

Hercules設定ファイル「conf/mvs.cnf」で、I/Oデバイスアドレス=0x009の代替コンソール画面がコメントアウトされています。実際のハードウェア環境では、マスタコンソールでハードウェアが故障した場合のために、代替コンソール画面を準備していました。Herculesエミュレータ上でマスタコンソール画面を動かしているので、代替コンソール画面を動かす意味が無いので、コメントアウトのままとします。

Hercules設定ファイル「conf/mvs.cnf」のI/Oデバイスアドレス=0x15の「1403 Printer mvslog.txt」はコメントアウトしないでください。このデバイスが使用できない場合、MVS3.8Jシステムは、IPLで文句を言ってきます。また、マスタコンソール画面上に流れる情報が、mvslog.txtに出力されるので、何らかの問題を調査する時にも必要になりますので、コメントアウトしないでください。

素のHercules設定ファイル「conf/mvs.cnf」ままでは、いくつか記述内容に問題があるため、Herculesエミュレータを起動しても、3270エミュレータで接続できません。
下記diffの差分のように修正しておきます。こんなに修正しなくても動きそうな気もしますが、設定ファイルの書式とあっていないみたいなので、修正しました。この修正をしたことで、3270エミュレータでつながるようになりました(どういう組み合わせの時にダメなのか調べるのが面倒なので、一通り怪しいところを直しています)。

```bash:Herculesエミュレータ画面
$ pwd
/home/hercules/mvs
$ cp conf/mvs.cnf conf/mvs.cnf.org
$ vi conf/mvs.cnf
$ diff conf/mvs.cnf.org conf/mvs.cnf
$ diff conf/mvs.cnf.org conf/mvs.cnf
37c37,38
< 0100.4  3420    *
---
> #0100.4  3420    *
> 0100  3420    *
39c40,41
< 0310.4  3420    *
---
> #0310.4  3420    *
> 0310  3420    *
62c64
< 0010    3270    console                    # master console
---
> 0010    3270    # console                    # master console
66c68,71
< 0400.8  3270    tso
---
> #0400.8  3270    tso
> 0400  3270    # tso
> 0401  3270    # tso
> 0402  3270    # tso

```

 * 37行目:「0100.4  3420    *」<br>
I/Oデバイスアドレス0x100の後ろの「.4」が邪魔です。オリジナルの行を#でコメントアウトして、次の行に「.4」を取り除いた行を作ります。<br>
恐らく、この「mvs.cnf」の作者は「3420テープ装置」を4つつけることを想定して「.4」で表現しているのだと思います。ハードウェア構成図を見ると、0x100、0x101、0x102、0x103の4台接続している図になっていることからの推測です。

 * 39行目：「0310.4  3420    *」<br>
こちらも「.4」が邪魔です。オリジナルの行を#でコメントアウトして、取り除きます。

 * 62行目：「< 0010    3270    console                    # master console」<br>
「3270 console」この部分で、「3270」と「console」の間に「#」を入れて、「console」をコメントアウトします。たぶんこの記述が良くなくて3270エミュレータで接続できなかったと思います。

 * 66行目：「0400.8  3270    tso」<br>
「.8」が邪魔なのと、「tso」の頭に「#」をつけてコメントアウトにします。ついでに、TSO端末を0x400、0x401、0x402の合計3台接続できるようにします。


## MVS3.8JシステムのIPL
TeraTermを3つ立ち上げておきます。一つはHerculesエミュレータ画面用。もう一つはマスタコンソール画面用です。もう一つは、TSOユーザ画面用です。

Herculesエミュレータ画面で「**<font color="red">hercules -f conf/mvs.cnf</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力すると、次のような画面になります。

```bash:Herculesエミュレータ画面
$ pwd
/home/hercules/mvs
$ hercules -f conf/mvs.cnf

省略
```

マスタコンソール画面用のTeraTermに切り替えて、3270エミュレータで接続します。「**<font color="red">c3270 -charset us-intl -model 3278-2 -keymap c3270.keymap localhost:3270</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
$ pwd
/home/hercules
$ c3270 -charset us-intl -model 3278-2 -keymap c3270.keymap localhost:3270
```
すると、次のような画面になります。

```bash:マスタコンソール画面
 Hercules Version  : 3.12
 Host name         : localhost.localdoma
 Host OS           : Linux-2.6.32-573.26.1.el6 #1 SMP Tue May 3 21:55:43 UTC 201
 Host Architecture : i686
 Processors        : UP
 Chanl Subsys      : 0
 Device number     : 0010
 Subchannel        : 000F

            HHH          HHH   The S/370, ESA/390 and z/Architecture
            HHH          HHH                 Emulator
            HHH          HHH
            HHH          HHH  EEEE RRR   CCC U  U L    EEEE  SSS
            HHHHHHHHHHHHHHHH  E    R  R C    U  U L    E    S
            HHHHHHHHHHHHHHHH  EEE  RRR  C    U  U L    EEE   SS
            HHHHHHHHHHHHHHHH  E    R R  C    U  U L    E       S
            HHH          HHH  EEEE R  R  CCC  UU  LLLL EEEE SSS
            HHH          HHH
            HHH          HHH
            HHH          HHH     My PC thinks it's a MAINFRAME

            Copyright (C) 1999-2010 Roger Bowler, Jan Jaeger, and others







4A                                                                      001/001
```

「Device number」が「0010」、つまり、0x0010のマスタコンソールに接続しています。

TSOユーザ画面用のTeraTermに切り替えて、3270エミュレータで接続します。「**<font color="red">c3270 -charset us-intl -model 3279-2 -keymap c3270.keymap localhost:3270</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
$ pwd
/home/hercules
$ c3270 -charset us-intl -model 3279-2 -keymap c3270.keymap localhost:3270
```
すると、次のような画面になります。

```bash:マスタコンソール画面
 Hercules Version  : 3.12
 Host name         : localhost.localdoma
 Host OS           : Linux-2.6.32-573.26.1.el6 #1 SMP Tue May 3 21:55:43 UTC 201
 Host Architecture : i686
 Processors        : UP
 Chanl Subsys      : 0
 Device number     : 0400
 Subchannel        : 0011

            HHH          HHH   The S/370, ESA/390 and z/Architecture
            HHH          HHH                 Emulator
            HHH          HHH
            HHH          HHH  EEEE RRR   CCC U  U L    EEEE  SSS
            HHHHHHHHHHHHHHHH  E    R  R C    U  U L    E    S
            HHHHHHHHHHHHHHHH  EEE  RRR  C    U  U L    EEE   SS
            HHHHHHHHHHHHHHHH  E    R R  C    U  U L    E       S
            HHH          HHH  EEEE R  R  CCC  UU  LLLL EEEE SSS
            HHH          HHH
            HHH          HHH
            HHH          HHH     My PC thinks it's a MAINFRAME

            Copyright (C) 1999-2010 Roger Bowler, Jan Jaeger, and others







4A                                                                      001/001
```

「Device number」が「0400」、つまり、0x0400のTSOユーザ画面に接続しています。

Herculesエミュレータ画面に切りあえると、次のように、マスタコンソール画面、TSOユーザ画面が接続されているメッセージが表示されています。

```bash:Herculesエミュレータ画面
HHCAO001I Hercules Automatic Operator thread started;
          tid=B6468B70, pri=0, pid=1314
HHCTE009I Client 127.0.0.1 connected to 3270 device 0:0010
HHCTE009I Client 127.0.0.1 connected to 3270 device 0:0400
Command ==>
CPU0000 PSW=0000000000000000 24M.......                              instcount=0
```

引き続きHerculesエミュレータ画面で、IPLを起動します。
「**<font color="red">ipl 150</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

I/Oデバイスアドレス0x150の、「dasd/mvsres.3350」MVSシステムレジデンスDASDボリュームからIPLを行うという意味。

```bash:Herculesエミュレータ画面
Command ==> ipl 150
CPU0000 PSW=0000000000000000 24M.......                              instcount=0
```

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

```bash:Herculesエミュレータ画面
HHCCP048I 0100:CCW=03000000 20000001=>040C0000 0002BF5A 00000000 00000000 ......
HHCCP075I 0100:Stat=0200 Count=0001
HHCCP076I 0100:Sense=40220000 00C00300 00000000 00800100 010000FF FF000000
HHCCP077I 0100:Sense=INTREQ EOC WRI
HHCCP048I 0310:CCW=03000000 20000001=>040C0000 0002BF5A 00000000 00000000 ......
HHCCP075I 0310:Stat=0200 Count=0001
HHCCP076I 0310:Sense=40220000 00C00300 00000000 00800100 010000FF FF000000
HHCCP077I 0310:Sense=INTREQ EOC WRI
HHCCP048I 0401:CCW=03000000 20000001=>040C0000 0002BF5A 00000000 00000000 ......
HHCCP075I 0401:Stat=0200 Count=0001
HHCCP076I 0401:Sense=40000000 00000000 00000000 00000000 00000000 00000000
HHCCP077I 0401:Sense=INTREQ
HHCCP048I 0402:CCW=03000000 20000001=>040C0000 0002BF5A 00000000 00000000 ......
HHCCP075I 0402:Stat=0200 Count=0001
HHCCP076I 0402:Sense=40000000 00000000 00000000 00000000 00000000 00000000
HHCCP077I 0402:Sense=INTREQ
Command ==>
CPU0000 PSW=070E000000000000 24..W.....                        instcount=578,460
```

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

```bash:マスタコンソール画面
  | IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.8 .VS2
```

これは、新たにSYSGEN、システム生成されて初めてのIPLなので、LPA(リンクパック領域)の初期化が必要なので、次のコマンドを入力します。

「**<font color="red">r 0,clpa</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

今後LPAを再構築する特別な理由が無ければ、このプロンプトの時には、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  r 0,clpa
```

すると、画面に次々メッセージが表示され、次のような画面になります。

```bash:マスタコンソール画面
     *00 IFB010D ENTER 'IPL REASON,SUBSYSTEM ID' OR 'U'
      IEE360I SMF NOW RECORDING ON SYS1.MANX ON MVSRES TIME=22.56.10
    - AUTO COMMANDS IN COMMND00 BEING PROCESSED CN=00
      IEF677I WARNING MESSAGE(S) FOR JOB JES2     ISSUED
     *01 $HASP426 SPECIFY OPTIONS - HASP-II, VERSION JES2 4.1















  IEE152I     ENTER     CANCEL     D C,K








4A                                                                      022/003
```

流れていったいくつかのメッセージで、SYS1.PARMLIB(IEAPAK00)が処理されるときに発行されるメッセージで、IEA357Iというエラーメッセージが表示されます。これは、IEAPAK00で指定されたいくつかのモジュールがロードされていないことを示すメッセージです。このモジュールは、システムの動作に必要とされないので気にしなくて大丈夫です。

次に、SYS1.PARMLIB(IEASYS00)が処理中に、アスタリスク(\*)付きのメッセージID=IFB010Dと、アスタリスク(\*)付きのメッセージID=$HASP426を表示して、オペレータ応答待ちになっています。

```bash:マスタコンソール画面
     *00 IFB010D ENTER 'IPL REASON,SUBSYSTEM ID' OR 'U'
     *01 $HASP426 SPECIFY OPTIONS - HASP-II, VERSION JES2 4.1
```

メッセージID=IFB010Dには、「**<font color="red">r 0,u</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力して応答します。このオペレータ応答は、もしハードウェアエラーが発生したとき、それがIPL由来だった場合にログにエラーを記録するように指示しています。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 0,u
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
   - r 0,u
      IEE600I REPLY TO 00 IS;U
      IGF992I  MIH INIT COMPLETE, PRI=000300, SEC=000015
```

メッセージID=$HASP426には、「**<font color="red">r 1,format,noreq</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

これまでのSYSGEN、システム生成で、MVSスターターシステムでIPLを何回か行った中で同様のコマンドを入力したかと思います。このコマンドは、JES2のSPOOLを初期化する指示です。今回、SYSGEN後初めての起動なので、SPOOLを初期化しています。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 1,format,noreq
```

すると、次のようなアスタリスク(\*)付きのメッセージを表示して、オペレータ応答を待っています。

```bash:マスタコンソール画面
   - r 1 SUPPRESSED
      IEE600I REPLY TO 01 IS;SUPPRESSED
     *02 $HASP479 UNABLE TO OBTAIN CKPT DATA SET LOCK - IO ERROR           -
     * REPLY Y OR N TO CONTINUE
```

これは、初めての起動なので、チェックポイントデータセットがフォーマットされていないため、このメッセージが表示されています。
「**<font color="red">r 2,y</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 2,y
```

すると、次のようなアスタリスク(\*)付きのメッセージを表示して、オペレータ応答を待っています。

```bash:マスタコンソール画面
    - r 2 SUPPRESSED
      IEE600I REPLY TO 02 IS;SUPPRESSED
     *03 $HASP436 REPLY Y OR N TO CONFIRM CHECKPOINT RECORD CHANGE
```

「**<font color="red">r 3,y</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力して応答します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 3,y
```

すると、SPOOL1のフォーマットが始まります。

```bash:マスタコンソール画面
    - r 3 SUPPRESSED
      IEE600I REPLY TO 03 IS;SUPPRESSED
    - $HASP493 JES2 COLD-START IS IN PROGRESS
    - $HASP423 SPOOL1 IS BEING FORMATTED
```

しばらくすると、次のようなメッセージが表示されて画面が止まってしまったかのように見えます。

```bash:マスタコンソール画面
    - $HASP412 MAXIMUM OF 1   READER(S)  EXCEEDED
    - $HASP412 MAXIMUM OF 1   PUNCH(ES)  EXCEEDED
      IEE041I THE SYSTEM LOG IS NOW ACTIVE
      $HASP000 OK
      $HASP000 OK

  IEE152I     ENTER     CANCEL     D C,K


                                                         IEE159E MESSAGE WAITING





4A                                                                      022/003
```

マスタコンソール画面の右下あたりに、「IEE159E MESSAGE WAITING」というメッセージが出ているかと思います。

MVSスターターシステムでSYSGENしていた時は、telnetクライアントで接続し、行スクロールしていく表示でしたが、3270エミュレータでマスタコンソール画面に接続すると、画面上段がMVS3.8Jの表示領域、画面下段がクライアント入力領域の2分割表示になります。

MVSは画面上段の表示領域を使い切ったので、明示的に画面上段をクリアするか、スクロールコマンドで画面をスクロールするのかオペレータの応答を待っています。
これまでのSYSGENでマスタコンソール用のプログラムファンクションキーを定義するためのプログラムを設定しているので、「PF12」キーに画面上段をスクロールする指示を設定しています。
「**<font color="red">F12</font>**」キーを入力して応答します。
すると、画面がスクロールされ、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
     $HASP100 INIT     ON STCINRDR
    - $HASP373 INIT     STARTED
    - IEF403I INIT - STARTED - TIME=23.29.54
      $HASP100 INIT     ON STCINRDR
    - $HASP373 INIT     STARTED
    - IEF403I INIT - STARTED - TIME=23.29.54
    - $HASP373 ZTIMER   STARTED
    - IEF403I ZTIMER - STARTED - TIME=23.29.54
      $HASP309    INIT  1 INACTIVE ******** C=A
      $HASP309    INIT  2 INACTIVE ******** C=BA
      $HASP309    INIT  3 INACTIVE ******** C=S
    - SETPFKEY EXECUTING
      $HASP000 ID 99   T=24.00 I=   0 $VS,'S ZTIMER'
    - IEF404I ZTIMER - ENDED - TIME=23.29.55
    - $HASP395 ZTIMER   ENDED
  00- IEF404I SETPFKEY - ENDED - TIME=23.29.55
    - $HASP395 SETPFKEY ENDED
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
      IEE928I DISPLAY AREA ID'S FOR CONSOLE 01 ARE A

  IEE152I     ENTER     CANCEL     D C,K


  IEE163I MODE= RD





4A                                                                      022/003
```

「PFK12」キーが押されたときに入力されるコマンドは次のとおりです。
「**<font color="red">K S,DEL=RD,SEG=19,RTME=001,RNUM=19,CON=N;K A,10</font>**」

この長いコマンドを毎回IPLの度に入力するのは大変ですので、このPFKEY設定があった良かったです。

画面左下に「IEE163I MODE= RD」というメッセージが表示されています。

```bash:マスタコンソール画面
  IEE163I MODE= RD
```

これは、コンソールの表示モードが自動スクロールモードであることを意味しています。
この他、PFキーには何が割り当てられているか確認したいと思います。
「**<font color="red">F1</font>**」キーを入力します。
すると、画面がスクロールされ、次のようなメッセージが表示されます。

```
     IEE928I DISPLAY AREA ID'S FOR CONSOLE 01 ARE A
  00- D PFK
      IEE724I 23.51.28   PFK DEFINITION 164                        C
       KEY#  CONV   DEFINITION...
        01   NO    D PFK
        02          NOT DEFINED
        03          NOT DEFINED
        04          NOT DEFINED
        05          NOT DEFINED
        06          NOT DEFINED
        07          NOT DEFINED
        08          NOT DEFINED
        09   NO    D U,TAPE,ONLINE
        10   NO    D U,DASD,ONLINE
        11   YES   V NET,INACT,ID=CUU0C_0;V NET,ACT,ID=CUU0C_0
        12   NO    K S,DEL=RD,SEG=19,RTME=001,RNUM=19,CON=N;K A,10
```

PFキーに関連するコマンドは、SYS1.PARMLIB(SETPFK00)メンバで設定しています。追加のコマンドをセットアップするには、このメンバーを編集すれば、次回のIPL後に有効になります。

画面上段にスクロールされていったこれまでの全てのメッセージは、Hercules設定ファイル(conf/mvs.cnf)のI/Oデバイスアドレス=0x015で指定した「mvslog.txt」に出力されています。

代替コンソールに関する注意：Hercules設定ファイル(conf/mvs.cnf)のI/Oデバイスアドレス=0x009のコメントを解除して、代替コンソールを有効にした場合は、そのコンソールに表示されるメッセージが削除されるように設定する必要があります。削除しないと保留中のメッセージによってシステムリソース不足になり、最終的にはシステム停止となります(日本語訳に自信なし)。

参考文献:

 * MVSオペレータコンソールコマンドのマニュアルのコピー
Jay Moseley => [GC38-0229-1-OSVS2-MVS-System-Commands.pdf](http://www.jaymoseley.com/hercules/downloads/pdfs/GC38-0229-1-OSVS2-MVS-System-Commands.pdf) [10.8 MB MD5: 949ace4646aa5e16f04223596ece28dc]

 * MVS&JES2コマンドチートシート
Volker Bandke => [MVS and JES2 Commands MVS Commands Cheat Sheet]
(http://www.bsp-gmbh.com/hercules/oscmds.html)

 * JES2コマンド 
Tommy Sprinkle => [JES2コマンド](http://www.tommysprinkle.com/mvs/jes2cmds/index.htm)

 * MVSオペレータコマンド
Bob Hansen => [MVSオペレータコマンド](http://hansen-family.com/mvs/MVS%20Commands.htm)

 * MVS JES2 クイックリファレンス
Jay Moseley => [MVS JES2 クイックリファレンスPDF](http://www.jaymoseley.com/hercules/downloads/pdf/JES2%20Command%20Subset.pdf)

## 言語コンパイラおよびツールのインストールとDASDボリュームの追加
MVS3.8JのSYSGEN後に利用できる言語はアセンブラだけです。ALGOL、COBOL、FORTRAN、RPGなどの言語コンパイラをこれから追加します。
追加に当たっては、インストール用の空のDASDボリュームを追加します。

## 追加のDASDボリューム作成
TeraTermをもう一つ起動し、次のコマンドを入力します。

「**<font color="red">./create.dasd.sh user</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:追加DASDボリューム作成
$ pwd
/home/hercules/mvs
$ ./create.dasd.sh user
This script creates DASD volumes for MVS 3.8j.
Changed directory to: /home/hercules/mvs/dasd
HHCDU044I Creating 3380 volume 111111: 886 cyls, 15 trks/cyl, 47616 bytes/track
HHCDU041I 886 cylinders successfully written to file pub000.3380
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 3390 volume 222222: 1114 cyls, 15 trks/cyl, 56832 bytes/track
HHCDU041I 1114 cylinders successfully written to file pub001.3390
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 333333: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw1.2314
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 444444: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw2.2314
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 555555: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw3.2314
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 666666: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw4.2314
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 777777: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw5.2314
HHCDI001I DASD initialization successfully completed.
HHCDU044I Creating 2314 volume 888888: 203 cyls, 20 trks/cyl, 7680 bytes/track
HHCDU041I 203 cylinders successfully written to file sortw6.2314
HHCDI001I DASD initialization successfully completed.
Script completed successfully!
$ 
```

このコマンドで作成されたDASDボリュームは次の通りです。

 * dasd/pub000.3380 - TSO用データセットが常駐する3380型DASDボリューム
 * dasd/pub001.3390 - 利用者のデータセットが常駐する3390型DASDボリューム
 * dasd/sortw1, dasd/sortw2, dasd/sortw3, dasd/sortw4, dasd/sortw5, dasd/sortw5 - ソート/マージプログラムを実行するために必要とされる2314型DASDボリューム

ここまででは、まだDASDボリュームはMVSで利用できるようにフォーマットされていません。まずは、HerculesエミュレータにこれらのDASDボリュームを取り付ける必要があります。
Herculesエミュレータ画面に切り替えて、「**<font color="red">script conf/mvs.script</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
HHCCP077I 0100:Sense=INTREQ EOC WRI
Command ==> script conf/mvs.script
CPU0000 PSW=070E000000000000 24..W.....                    instcount=198,878,708
```

```bash:Herculesエミュレータ画面
HHCCP077I 0100:Sense=INTREQ EOC WRI                                            +
script conf/mvs.script
#
####################################################################
#                HERCULES EMULATOR SCRIPT FILE                     #
####################################################################
#
# use for attaching new dasd volumes to target MVS 3.8j system
#
attach 180 3380 dasd/pub000.3380
HHCDA020I dasd/pub000.3380 cyls=886 heads=15 tracks=13290 trklen=47616
attach 190 3390 dasd/pub001.3390 cu=3880
HHCDA020I dasd/pub001.3390 cyls=1114 heads=15 tracks=16710 trklen=56832
attach 220 2314 dasd/sortw1.2314
HHCDA020I dasd/sortw1.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 221 2314 dasd/sortw2.2314
HHCDA020I dasd/sortw2.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 222 2314 dasd/sortw3.2314
HHCDA020I dasd/sortw3.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 223 2314 dasd/sortw4.2314
HHCDA020I dasd/sortw4.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 224 2314 dasd/sortw5.2314
HHCDA020I dasd/sortw5.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 225 2314 dasd/sortw6.2314
HHCDA020I dasd/sortw6.2314 cyls=203 heads=20 tracks=4060 trklen=7680
attach 253 3350 dasd/syscpk.3350
HHCDA020I dasd/syscpk.3350 cyls=560 heads=30 tracks=16800 trklen=19456
HHCPN013I EOF reached on SCRIPT file. Processing complete.
Command ==>
CPU0000 PSW=070E000000000000 24..W.....                    instcount=198,954,967
```
「HHCPN013I EOF reached on SCRIPT file. Processing complete.
」となり、、これでDASDボリュームの取り付けができました。



### 新しいDASDボリュームを初期化してマウントします
Herculeエミュレータ画面で次のコマンドを入力します。
「**<font color="red">devinit 00c jcl/mvs00.jcl eof</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面で
Command ==> devinit 00c jcl/mvs00.jcl eof
CPU0000 PSW=070E000000000000 24..W.....                    instcount=201,991,321
```

このJCLでは先の手順で作成した8つの新しいDASDボリュームを初期化し、オンラインで使えるようにマウントします。
マスタコンソール画面に切り替えると、次のようなアスタリスク(\*)付きのメッセージが表示されます。

```bash:マスタコンソール画面
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
  00  $HASP100 MVS00    ON READER1     INITIALIZE DASD
    - $HASP373 MVS00    STARTED - INIT  1 - CLASS A - SYS HMVS
    - IEF403I MVS00 - STARTED - TIME=01.11.23
     *04 ICK003D REPLY U TO ALTER VOLUME 0180 CONTENTS, ELSE T
```

このメッセージID=ICK003Dは、I/Oデバイスアドレス=0x180のDASDボリュームを初期化してラベルを付与するか、オペレータに要求しています。
「**<font color="red">r 4,u</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力して、初期化します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 4,u

  IEE163I MODE= RD
```

この後、残りの7つの新しいDASDボリュームについて、初期化するか要求されるので、"**<font color="red">U</font>**"で応答します。

```
    | 04 ICK003D REPLY U TO ALTER VOLUME 0180 CONTENTS, ELSE T
    - r 4 SUPPRESSED
      IEE600I REPLY TO 04 IS;SUPPRESSED
    | 05 ICK003D REPLY U TO ALTER VOLUME 0190 CONTENTS, ELSE T
    - r 5 SUPPRESSED
      IEE600I REPLY TO 05 IS;SUPPRESSED
    | 06 ICK003D REPLY U TO ALTER VOLUME 0220 CONTENTS, ELSE T
    - r 6 SUPPRESSED
      IEE600I REPLY TO 06 IS;SUPPRESSED
    | 07 ICK003D REPLY U TO ALTER VOLUME 0221 CONTENTS, ELSE T
    - r 7 SUPPRESSED
      IEE600I REPLY TO 07 IS;SUPPRESSED
    | 08 ICK003D REPLY U TO ALTER VOLUME 0222 CONTENTS, ELSE T
    - r 8 SUPPRESSED
      IEE600I REPLY TO 08 IS;SUPPRESSED
    | 09 ICK003D REPLY U TO ALTER VOLUME 0223 CONTENTS, ELSE T
    - r 9 SUPPRESSED
      IEE600I REPLY TO 09 IS;SUPPRESSED
     *10 ICK003D REPLY U TO ALTER VOLUME 0224 CONTENTS, ELSE T
     *10 ICK003D REPLY U TO ALTER VOLUME 0224 CONTENTS, ELSE T
      IEE600I REPLY TO 10 IS;SUPPRESSED
      R 10,SUPPRESSED
     *11 ICK003D REPLY U TO ALTER VOLUME 0225 CONTENTS, ELSE T
      IEE600I REPLY TO 11 IS;SUPPRESSED
      R 11,SUPPRESSED
```

8つの新しいボリューム全てが初期化されると、MVS00ジョブは、別のジョブをSUBMITします。このジョブでは、これら初期化したDASDボリュームをオンラインで使えるようにマウントします。

マスタコンソール画面を見るとアスタリスク(\*)付きのメッセージを表示して、オペレータの応答を待っています。
```bash:マスタコンソール画面
    *$HASP190 MVS00    SETUP -- PRINTER1 -- F = STD. -- C = 6    -- T = 0
      $HASP309    INIT  3 INACTIVE ******** C=S
```

これは、MFS00ジョブの実行でプリンタ出力が必要でしたが、プリンタ装置が始動していないためで、始動を促すメッセージです。JES2コマンドでプリンタを始動します。
「**<font color="red">$s prt1</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  $s prt1

  IEE163I MODE= RD
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
  00- $s prt1
      $HASP000 OK
      $HASP250 MVS00    IS PURGED
      $HASP150 MVS00    ON PRINTER1       111 LINES
      $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
      $HASP250 MVS00    IS PURGED
```

アスタリスク(\*)付きのメッセージでは、「**<font color="red">PRINTER1</font>**」の始動を要求していましたが、実際に入力したのは、「**<font color="red">PRT1</font>**」です。これは短縮入力が許されているためです。
プリンタ出力がされたので、完了コードの確認ができるようになりました。MVS00ジョブの完了コードを確認します。完了コード確認画面用のTeraTermを立ち上げ、次のコマンドを入力します。
「**<font color="red">./condcode.pl prt00e.txt mvs00</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt mvs00
Searching prt00e.txt for MVS Job Name mvs00

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
ICKDSF                        0000
IEBGENER                      0000
BACKUP01                      0000
UPDATE01                      0000
IEFBR14                       0000
IDCAMS01                      0000
```

### ユーザーカタログの作成
VSAMマスター・カタログはMVSRESに存在し、その名前は「SYS1.VSAM.MASTER.CATALOG」です。
ジョブは、カタログ先が見つからないときにデータセットをカタログしようとすると、マスター・カタログにカタログします。
これは望ましくないので、ユーザカタログを作ります。

Herculeエミュレータ画面で次のコマンドを入力します。
「**<font color="red">devinit 00c jcl/mvs01.jcl eof</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 00c jcl/mvs01.jcl eof
CPU0000 PSW=070E000000000000 24..W.....                    instcount=263,107,879
```

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

```bash:マスタコンソール画面
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
      $HASP100 MVS01    ON READER1     SETUP USER CATS
    - $HASP373 MVS01    STARTED - INIT  3 - CLASS S - SYS HMVS
    - IEF403I MVS01 - STARTED - TIME=02.15.01
  00- CCI001C IDCAMS01/IDCAMS  /00:00:00.67/        /00000/1       /MVS01
    - IEF404I MVS01 - ENDED - TIME=02.15.02
    - $HASP395 MVS01    ENDED
      $HASP309    INIT  3 INACTIVE ******** C=S
      $HASP150 MVS01    ON PRINTER1       125 LINES
      $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
      $HASP250 MVS01    IS PURGED
```

完了コード確認画面に切り替えて、
「**<font color="red">./condcode.pl prt00e.txt mvs01</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt mvs01
Searching prt00e.txt for MVS Job Name mvs01

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
IDCAMS01                      0000
```

このジョブの最後のステップで、VSAMマスター・カタログ（MVSRES DASDボリューム上にあるSYS1.VSAM.MASTER.CATALOG）の更新パスワードを設定します。パスワードは「**<font color="red">SYSPROG</font>**」です(mvs01.jclを見れば書いてあります)。

パスワードを設定しているのは、誤ってマスターカタログにカタログされることを防ぐためです。

### TSOユーザーIDを追加します
これから、TSOユーザーIDを作成します。
デフォルトで登録されているTSOユーザIDは、「IBMUSER」です。
これは、緊急時にのみ使用されることが意図されます。

Herculeエミュレータ画面で次のコマンドを入力します。
「**<font color="red">devinit 00c jcl/mvs02.jcl eof</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

このJCLでは、「HMVS01」と「HMVS02」の2つのTSOユーザIDを作成するように設定されています。

```bash:Herculesエミュレータ画面
Command ==> devinit 00c jcl/mvs02.jcl eof
CPU0000 PSW=070E000000000000 24..W.....                    instcount=275,447,246
```

マスタコンソール画面に切り替えると、次のようなアスタリスク(\*)付きのメッセージが表示されます。

```bash:マスタコンソール画面
     *12 IEC301A S JOB MVS02    DSNAME SYS1.VSAM.MASTER.CATALOG
```

これは、先のジョブの最後のステップでマスター・カタログに更新パスワードを設定したためです。

「**<font color="red">r 12,SYSPROG</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 12,SYSPROG

  IEE163I MODE= RD
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
    | 12 IEC301A S JOB MVS02    DSNAME SYS1.VSAM.MASTER.CATALOG
  00- r 12 SUPPRESSED
      IEE600I REPLY TO 12 IS;SUPPRESSED

```

分かりにくいですが、ここで「**<font color="red">Enter</font>**」キーを入力します。
すると、メッセージがスクロールされていきます。
アスタリスク(\*)付きのメッセージで更新パスワード要求が表示されます。

```bash:マスターコンソール画面
     *13 IEC301A S JOB MVS02    DSNAME SYS1.VSAM.MASTER.CATALOG
```

「**<font color="red">r 13,SYSPROG</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 13,SYSPROG

  IEE163I MODE= RD
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
   | 13 IEC301A S JOB MVS02    DSNAME SYS1.VSAM.MASTER.CATALOG
    - r 13 SUPPRESSED
      IEE600I REPLY TO 13 IS;SUPPRESSED
    - CCI001C IDC24   /IDCAMS  /00:00:00.32/        /00000/1       /MVS02
    - IEF404I MVS02 - ENDED - TIME=02.36.41
    - $HASP395 MVS02    ENDED
      $HASP309    INIT  3 INACTIVE ******** C=S
      $HASP150 MVS02    ON PRINTER1     1,682 LINES
  00  $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
      $HASP250 MVS02    IS PURGED
```

完了コード確認画面に切り替えて、
「**<font color="red">./condcode.pl prt00e.txt mvs02</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt mvs02
Searching prt00e.txt for MVS Job Name mvs02

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
DEL01                         0000
AL02                          0000
PW03                          0000
PW04                          0000
PW05                          0000
PW06                          0000
PW07                          0000
PW08                          0000
PW09                          0000
PW10                          0000
PW11                          0000
PW12                          0000
PW13                          0000
TSO14                         0000
PW15                          0000
PW16                          0000
PW17                          0000
PW18                          0000
PW19                          0000
PW20                          0000
PW21                          0000
PW23                          0000
IDC24                         0000
DEL01                         0000
AL02                          0000
PW03                          0000
PW04                          0000
PW05                          0000
PW06                          0000
PW07                          0000
PW08                          0000
PW09                          0000
PW10                          0000
PW11                          0000
PW12                          0000
PW13                          0000
TSO14                         0000
PW15                          0000
PW16                          0000
PW17                          0000
PW18                          0000
PW19                          0000
PW20                          0000
PW21                          0000
PW22                          0000
PW23                          0000
IDC24                         0000
$ 
```

このジョブでTSOユーザID毎に4のデータセットが作成されます。

 * USERID.CLIST（CLISTSを格納するための区分データセット）
 * USERID.CNTL（JCLを格納するための区分データセット）
 * USERID.LOAD（ロード・モジュールを格納するための区分データセット）
 * USERID.SOURCE（ソースを格納するための区分データセット)

### VTAMおよびTSOの開始
VTAMを開始します。

マスタコンソール画面で「**<font color="red">s net</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  s net

  IEE163I MODE= RD
```

「net」はVTAMを実行するカタログプロシージャーです。スクロールされていくメッセージを見ると、自動的にVTAMが初期化され、TSOも開始されているのが見えます。

```bash:マスタコンソール画面
    - $HASP373 NET      STARTED
    - IEF403I NET - STARTED - TIME=02.46.22
      IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
      IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
      IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
      IST025I  BLDL FAILED FOR IEDIAE   IN VTAMLIB
      IST025I  BLDL FAILED FOR IEDIAK   IN VTAMLIB
      IST025I  BLDL FAILED FOR IEDIAK   IN VTAMLIB
      IST110I  NETWORK SOLICITOR STARTED
  00  IST093I  APPLTSO  ACTIVE
      IST093I  LCL400   ACTIVE
      $HASP100 TSO      ON STCINRDR
    - $HASP373 TSO      STARTED
    - IEF403I TSO - STARTED - TIME=02.46.23
      IST020I  VTAM INITIALIZATION COMPLETE
      IEA000I 401,IOE,05,0200,400000000001,,,NET     ,02.46.23
      IEA000I 402,IOE,05,0200,400000000001,,,NET     ,02.46.23
    - IKT007I TCAS ACCEPTING LOGONS
    - IKT005I TCAS IS INITIALIZED
```
これは、先の手順で導入したUSERMODでTSOを開始する機能を追加したことによるものです。

先に立ち上げておいた、TSOユーザ画面に切り替えます(I/Oデバイスアドレス=0x0400)。すると、次のような画面が表示されています。

```bash:TSOユーザ画面




     HH   HH  EEEEEEE  RRRRRR    CCCCC   UU   UU  LL       EEEEEEE   SSSSS
     HH   HH  EEEEEEE  RRRRRRR  CCCCCCC  UU   UU  LL       EEEEEEE  SSSSSSS
     HH   HH  EE       RR   RR  CC   CC  UU   UU  LL       EE       SS   SS
     HHHHHHH  EEEE     RRRRRRR  CC       UU   UU  LL       EEEE      SSS
     HHHHHHH  EEEE     RRRRRR   CC       UU   UU  LL       EEEE        SSS
     HH   HH  EE       RR RR    CC   CC  UU   UU  LL       EE       SS   SS
     HH   HH  EEEEEEE  RR  RR   CCCCCCC  UUUUUUU  LLLLLLL  EEEEEEE  SSSSSSS
     HH   HH  EEEEEEE  RR   RR   CCCCC    UUUUU   LLLLLLL  EEEEEEE   SSSSS



            Welcome to MVS3.8j, running under the Hercules emulator






 Logon ===>






4A                                                                      023/013
```

ログオンプロンプトで「**<font color="red">logon hmvs01</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
 Logon ===> logon hmvs01
```

すると、次のような画面になります。

```bash:TSOユーザ画面
 *******************************************************************************
 *                                                                             *
 *                                                                             *
 *                    WELCOME TO THE TSO SYSTEM                                *
 *                    =================================                        *
 *                                                                             *
 *                                                                             *
 *******************************************************************************
 READY
```

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

```bash:マスタコンソール画面
  00  $HASP100 HMVS01   ON TSOINRDR
    - $HASP373 HMVS01   STARTED
    - IEF125I HMVS01 - LOGGED ON - TIME=02.53.20
```

TSOユーザID=HMVS01がログオンに成功したことを示すメッセージが表示されています。

### RPF：Rob Prins' Programming Facilityのインストール
無償でISPFが利用できないため、これに代わるツールとしてRPFをインストールします。

Herculeエミュレータ画面で次のコマンドを入力します。
「**<font color="red">devinit 00c jcl/rpf153.jcl eof</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 00c jcl/rpf153.jcl eof
CPU0000 PSW=070E000000000000 24..W.....                    instcount=583,243,803
```

マスタコンソール画面に切り替えると、次のアスタリスク(\*)付きのメッセージでマスタカタログの更新パスワードの応答を待っています。

```bash:マスタコンソール画面
  00  $HASP100 RPF153$1 ON READER1     Install RPF
    - $HASP373 RPF153$1 STARTED - INIT  3 - CLASS S - SYS HMVS
    - IEF403I RPF153$1 - STARTED - TIME=03.00.57
     *14 IEC301A S JOB RPF153$1 DSNAME SYS1.VSAM.MASTER.CATALOG
```

「**<font color="red">r 14,SYSPROG</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  r 14,SYSPROG

  IEE163I MODE= RD
```

すると、次のアスタリスク(\*)付きメッセージでテープ取り付けの応答を要求してきます。

```bash:マスタコンソール画面
    - r 14 SUPPRESSED
      IEE600I REPLY TO 14 IS;SUPPRESSED
    - CCI001C CLEANUP /IDCAMS  /00:00:00.54/        /00000/TSO     /RPF153$1
  00 *IEC501A M 100,RPF153,SL,1600 BPI,RPF153$1,ALLOC
```

Herculesエミュレータ画面に切り替え、「**<font color="red">devinit 100 tape/rpf153.aws</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 100 tape/rpf153.aws
CPU0000 PSW=070E000000000000 24..W.....                    instcount=598,271,482
```

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

```bash:マスタコンソール画面
    | IEC501A M 100,RPF153,SL,1600 BPI,RPF153$1,ALLOC
      IEF234E K 100,RPF153,PVT,RPF153$1,ALLOC
    - CCI001C ALLOC   /IEBCOPY /00:00:03.22/        /00000/TSO     /RPF153$1
    - CCI001C GENER   /IEBUPDTE/00:00:00.05/        /00000/TSO     /RPF153$1
    - CCI001C ALLOC   /IEBCOPY /00:00:00.70/        /00000/TSO     /RPF153$1
    - CCI001C HELP    /IEBCOPY /00:00:00.10/        /00000/TSO     /RPF153$1
    - IEF404I RPF153$1 - ENDED - TIME=03.07.49
    - $HASP395 RPF153$1 ENDED
      $HASP309    INIT  3 INACTIVE ******** C=S
      $HASP150 RPF153$1 ON PRINTER1       664 LINES
  00  $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP250 RPF153$1 IS PURGED
```

完了コード確認画面に切り替えて、
「**<font color="red">./condcode.pl prt00e.txt 'RPF153$1'</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt 'RPF153$1'
Searching prt00e.txt for MVS Job Name RPF153$1

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
CLEANUP                       0000
ALLOC                         0000
GENER                         0000
ALLOC                         0000
HELP                          0000
```

### QUEUE:JES2キューの表示および制御ツールのインストール
RPFには、JES2キューに出力を表示することを可能にするユーティリティパネルを持っています。
QUEUEツールは、RPF以前からあるツールで Greg Price が更新を続けています。(http://www.prycroft6.com.au/vs2sw/index.html#queue)

Herculeエミュレータ画面で次のコマンドを入力します。
「**<font color="red">devinit 00c jcl/queue38j.jcl eof</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 00c jcl/queue38j.jcl eof
CPU0000 PSW=070E000000000000 24..W.....                    instcount=637,906,340
```

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

```bash:マスタコンソール画面
      $HASP100 GREGQ    ON READER1     QUEUE
      $HASP373 GREGQ    STARTED - INIT  3 - CLASS S - SYS HMVS
      IEF403I GREGQ - STARTED - TIME=03.27.37
      +PDSLOAD WILL RETRY WITH DDNAME=SYSIN
      $HASP395 GREGQ    ENDED
      IEF404I GREGQ - ENDED - TIME=03.30.44
      $HASP309    INIT  3 INACTIVE ******** C=S
      $HASP150 GREGQ    ON PRINTER1       194 LINES
      $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP250 GREGQ    IS PURGED
```

完了コード確認画面に切り替えて、
「**<font color="red">./condcode.pl prt00e.txt gregq</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt gregq
Searching prt00e.txt for MVS Job Name gregq

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
STEP1                         0000
```

このジョブはdasd/pub001.3390 DASDボリューム上にデータセットをいくつか作成し、それらにQUEUEツールをロードします。
今回はユーザカタログを使ったのでパスワード要求はありませんでした。

TSOユーザ画面(TSOユーザID=HMVS01)に切り替えて、
「**<font color="red">submit 'pub001.queue.asm(c)'</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
データセット名とメンバの前後に引用符があることに注意してください。

```bash:TSOユーザ画面
 READY
submit 'pub001.queue.asm(c)'
```

すると、次のようなメッセージが表示されます。

```bash:TSOユーザ画面
 JOB GREGQ(JOB00007) SUBMITTED
 READY
```

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

```bash:マスタコンソール画面
    - CCI001C ASM     /IFOX00  /00:00:01.54/        /00000/QUEUE   /GREGQ
    - $HASP375 GREGQ    ESTIMATED LINES EXCEEDED BY     10000
    - CCI001C LKED    /IEWL    /00:00:00.24/        /00000/QUEUE   /GREGQ
    - IEF404I GREGQ - ENDED - TIME=03.43.03
    - $HASP395 GREGQ    ENDED
      $HASP309    INIT  3 INACTIVE ******** C=S
      $HASP150 GREGQ    ON PRINTER1    60,244 LINES
  00  $HASP160 PRINTER1 INACTIVE - CLASS=A
      $HASP250 GREGQ    IS PURGED
```

完了コード確認画面に切り替えて、
「**<font color="red">./condcode.pl prt00e.txt gregq</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
完了コードの期待値は次の通りです。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs
$ ./condcode.pl prt00e.txt gregq
Searching prt00e.txt for MVS Job Name gregq

Step Name     Proc Step Name  Completion Code
---------     --------------  ---------------
STEP1                         0000
Q00           ASM             0000
Q01           ASM             0000
Q02           ASM             0000
Q03           ASM             0000
Q04           ASM             0000
Q05           ASM             0000
Q06           ASM             0000
Q07           ASM             0000
Q08           ASM             0000
Q09           ASM             0000
Q10           ASM             0000
Q11           ASM             0000
Q12           ASM             0000
Q13           ASM             0000
Q14           ASM             0000
Q15           ASM             0000
Q16           ASM             0000
Q17           ASM             0000
Q18           ASM             0000
Q19           ASM             0000
Q20           ASM             0000
Q21           ASM             0000
Q22           ASM             0000
Q23           ASM             0000
Q24           ASM             0000
Q25           ASM             0000
Q26           ASM             0000
Q27           ASM             0000
Q28           ASM             0000
Q29           ASM             0000
Q30           ASM             0000
Q31           ASM             0000
Q32           ASM             0000
Q33           ASM             0000
Q34           ASM             0000
Q35           ASM             0000
Q36           ASM             0000
Q37           ASM             0000
Q38           ASM             0000
LKED                          0000
```

TSOユーザ画面でSUBMITしたジョブ名は、先のQUEUEツールのインストールと同じジョブ名であったので、condcodeスクリプトは、「STEP1」もピックアップしています。
このTSOユーザ画面でSUBMITしたジョブは、MVSコンソール上でかなりの数のメッセージが生成されますが、それらはすべて、この完了コードで挙げた期待とそれに付随する単なる情報です。

TSOユーザ画面に切り替えます。

ジョブが完了すると、通知メッセージがTSOセッションに送信されるよにしてあったので、「**<font color="red">Enter</font>**」キーを入力すると、「$HASP165 JOB    7  GREGQ ENDED」のメッセージが通知されます。

```bash:TSOユーザ画面
 READY

 $HASP165 JOB    7  GREGQ ENDED
 READY
```

QUEUEツールをインストールすると、JES2キューに保持されている出力を表示することができます。「**<font color="red">q</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
 READY
q
```

すると、次のような画面が表示されます。

```bash:TSOユーザ画面
QUEUE COMMAND - STATUS
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 .  TSO USER       1  HMVS01     20002    15             HMVS
 .  HELD OUT      15  HMVS01     20001     2



















REPLY -





4A                                                                      024/009
```

「**<font color="red">Home</font>**」キーを押して、コマンド入力域にカーソルを合わせます("STATUS"の所)。
ここで、「**<font color="red">HO</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
QUEUE COMMAND - HO
```

すると、次のような画面が表示されます。

```bash:TSOユーザ画面
QUEUE COMMAND - HO
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 .  HELD OUT       1  MOUNT      10009    15
 .  HELD OUT       2  MOUNT      10010    15
 .  HELD OUT       3  MOUNT      10011    15
 .  HELD OUT       4  MOUNT      10012    15
 .  HELD OUT       5  MOUNT      10013    15
 .  HELD OUT       6  MOUNT      10014    15
 .  HELD OUT       7  MOUNT      10015    15
 .  HELD OUT       8  MOUNT      10016    15
 .  HELD OUT       9  MOUNT      10017    15
 .  HELD OUT      10  ZTIMER     10003     5
 .  HELD OUT      11  SETPFKEY   10002     5
 .  HELD OUT      12  ZTIMER     10007     5
 .  HELD OUT      13  ZTIMER     10008     5
 .  HELD OUT      14  ZTIMER     10018     3
 .  HELD OUT      15  HMVS01     20001     2






REPLY -





4A                                                                      024/009
```

特定のジョブの出力を表示するには、「**<font color="red">TAB</font>**」キーを押して、目的のジョブの行にカーソル移動していきます。
そしてそこで、「**<font color="red">S</font>**」を入力し、「**<font color="red">Enter</font>**」キーを入力します。

```QUEUE COMMAND - HO
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 .  HELD OUT       1  MOUNT      10009    15
 .  HELD OUT       2  MOUNT      10010    15
 .  HELD OUT       3  MOUNT      10011    15
 .  HELD OUT       4  MOUNT      10012    15
 .  HELD OUT       5  MOUNT      10013    15
 .  HELD OUT       6  MOUNT      10014    15
 .  HELD OUT       7  MOUNT      10015    15
 .  HELD OUT       8  MOUNT      10016    15
 .  HELD OUT       9  MOUNT      10017    15
 .  HELD OUT      10  ZTIMER     10003     5
 S  HELD OUT      11  SETPFKEY   10002     5
 .  HELD OUT      12  ZTIMER     10007     5
 .  HELD OUT      13  ZTIMER     10008     5
 .  HELD OUT      14  ZTIMER     10018     3
 .  HELD OUT      15  HMVS01     20001     2
 .  HELD OUT      16  ZTIMER     10021     1





REPLY -





4A                                                                      013/004
```

この例では、ジョブ名=SETPFKEYを対象にしています。
次の様な画面が表示されます。

```bash:TSOユーザ画面
QUEUE COMMAND - JL 10002
JOB 10002   , DSID      2  , REC #       1, END OF DATA. LAST REC #       7

                                                J E S 2   J O B   L O G
23.29.53 STC    2  $HASP373 SETPFKEY STARTED
23.29.53 STC    2  IEF403I SETPFKEY - STARTED - TIME=23.29.53
23.29.54 STC    2  SETPFKEY EXECUTING
23.29.55 STC    2  IEF404I SETPFKEY - ENDED - TIME=23.29.55
23.29.55 STC    2  $HASP395 SETPFKEY ENDED














REPLY -                                                                   PF3=HO





4A                                                                      024/009
```

「**<font color="red">F1</font>**」キーを押すと、QUEUEコマンドの簡単なヘルプが表示されます。

```
QUEUE COMMAND - H
THE FOLLOWING SUBCOMMANDS ARE SUPPORTED:           (VER 3.8J REL P6.2007.JAN.01)
    DA           - DISPLAY ALL JOBS IN EXECUTION
    DT           - DISPLAY TSO USERS
    DS           - DISPLAY SYSTEM TASKS
    DC           - DISPLAY CPU BATCH/STC/TSO
    STATUS LEVEL - DISPLAY ALL JOBS BEGINNING WITH LEVEL
    DQ           - DISPLAY INPUT QUEUES
    DI CLASS     - DISPLAY ALL JOBS IN INPUT CLASS
    AI CLASS     - DISPLAY JOBS AVAILABLE FOR PROCESSING
    HI CLASS     - DISPLAY HELD JOBS IN INPUT CLASS
    DF           - DISPLAY OUTPUT QUEUES
    DO CLASS     - DISPLAY ALL JOBS IN OUTPUT CLASS
    AO CLASS     - DISPLAY AVAILABLE OUTPUT
    HO CLASS     - DISPLAY HELD OUTPUT
    END          - TERMINATE PROCESSING

        DEFAULT FOR LEVEL IS LOGON ID
        DEFAULT FOR CLASS IS ALL CLASSES
        NO DEFAULT FOR JOBNAME



REPLY -                                                                   PF3=+0





4A                                                                      001/017
```

「**<font color="red">F3</font>**」キーを3回押して、TSOコマンドプロンプトまで戻ります。

### REVIEW:フルスクリーンブラウザとエディタのインストール
RPFはにフルスクリーンブラウザ、そしてエディタの機能を持っています。Greg Price が提供している「REVIEW」ツール(http://www.prycroft6.com.au/vs2sw/index.html#review)
もフルスクリーンブラウザとエディタ機能を提供しています。
これをインストールします。

今回、2540カードリーダからjclを投入してみます。
事前準備として、次のperlスクリプト(**hercsub**)を用意します。

```bash:
$ pwd
/home/hercules/mvs/jcl
$ cat hercsub
#!/usr/bin/perl
use Socket;
use IO::Socket::UNIX;
use IO::Socket::INET;

if (@ARGV < 1) {
  print STDERR "Usage: hercsub socket_spec [job]\n";
  exit 2;
}

my $spec = shift @ARGV;
my $sock;

if ($spec =~ m{^/}) {
  $sock = IO::Socket::UNIX->new(Peer => $spec);
} else {
  $sock = IO::Socket::INET->new(PeerAddr => $spec);
}

die "Failed to connect to socket $spec: $!\n" unless defined($sock);

while (<>) {
  print $sock $_;
}
```

このスクリプトは、引数で指定した「ホスト名:ポート番号」にjclを投入するスクリプトです。netcatがウィルスとしてあつかわれてしまうため、代わりにこのスクリプトで対応します。

Herculesエミュレータ画面で、「**<font color="red">devinit 01c jcl/LOAD ebcdic</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 01c jcl/LOAD ebcdic
CPU0000 PSW=070E000000000000 24..W.....                  instcount=2,162,763,124
```

コマンド末尾の「ebcdic」は、「LOAD」ファイルの内容をMVSに渡す前に文字コード変換しないことをHerculesエミュレータに伝えています。

完了コード確認画面に切り替えて、「**<font color="red">./hercsub localhost:3505 review1.jcl</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
このジョブは、Reviewツールのためのロード・モジュールを「SYS2.CMDLIB」データセットに格納します。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs/jcl
./hercsub localhost:3505 review1.jcl
```

Herculesエミュレータ画面に切り替えて、「**<font color="red">devinit 01c jcl/HELP ebcdic</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> devinit 01c jcl/HELP ebcdic
CPU0000 PSW=070E000000000000 24..W.....                  instcount=2,181,528,622
```

完了コード確認画面に切り替えて、「**<font color="red">./hercsub localhost:3505 review2.jcl</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
このジョブは、REVIEWツールのヘルプを「SYS2.HELP」データセットに格納します。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs/jcl
./hercsub localhost:3505 review2.jcl
```

TSOユーザ画面に切り替えてQUEUEツールを起動して、ジョブの状態を確認します。

TSOコマンドプロンプトに「**<font color="red">q status review
</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
 READY
q status review
```

すると、次のような画面になります。

```bash:TSOユーザ画面
QUEUE COMMAND - STATUS REVIEW
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 .  HELD OUT      26  REVIEW1        8     1
 .  HELD OUT      27  REVIEW2        9     1



















REPLY -





4A                                                                      024/009
```

「**<font color="red">Tab</font>**」キーを押して、ジョブ名=**<font color="red">REVIEW1</font>**の行に「**<font color="red">S</font>**」を入力して、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
QUEUE COMMAND - ST REVIEW
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 S  HELD OUT      26  REVIEW1        8     1
 .  HELD OUT      27  REVIEW2        9     1
```

すると、次のような画面になります。

```bash:TSOユーザ画面
QUEUE COMMAND - JL     8
JOB 8       , DSID      2  , REC #       1, END OF DATA. LAST REC #      11

                                                J E S 2   J O B   L O G
05.26.38 JOB    8  IEF677I WARNING MESSAGE(S) FOR JOB REVIEW1  ISSUED
05.26.38 JOB    8  $HASP373 REVIEW1  STARTED - INIT  3 - CLASS S - SYS HMVS
05.26.38 JOB    8  IEF403I REVIEW1 - STARTED - TIME=05.26.38
05.26.38 JOB    8  IEF236I ALLOC. FOR REVIEW1 RECV370 RECV01
05.26.38 JOB    8  IEF237I 01C  ALLOCATED TO XMITIN
05.26.43 JOB    8  CCI001C RECV370 /RECV370 /00:00:01.19/        /00000/SYS
05.26.43 JOB    8  CCI001C COPY01  /IEBCOPY /00:00:00.11/        /00000/SYS
05.26.43 JOB    8  IEF404I REVIEW1 - ENDED - TIME=05.26.43
05.26.43 JOB    8  $HASP395 REVIEW1  ENDED










REPLY -                                                                   PF3=ST





4A                                                                      024/009
```

「**<font color="red">F3</font>**」キーを入力します。
ジョブ名=**<font color="red">REVIEW2</font>**の行に「**<font color="red">S</font>**」を入力して、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
QUEUE COMMAND - ST REVIEW
      QUEUE  POSITION JOBNAME    JOB#  PRIORITY  LINES   EXECUTING
 .  HELD OUT      26  REVIEW1        8     1
 S  HELD OUT      27  REVIEW2        9     1
```

すると、次のような画面になります。

```bash:TSOユーザ画面
QUEUE COMMAND - JL     9
JOB 9       , DSID      2  , REC #       1, END OF DATA. LAST REC #      11

                                                J E S 2   J O B   L O G
05.28.07 JOB    9  IEF677I WARNING MESSAGE(S) FOR JOB REVIEW2  ISSUED
05.28.07 JOB    9  $HASP373 REVIEW2  STARTED - INIT  3 - CLASS S - SYS HMVS
05.28.07 JOB    9  IEF403I REVIEW2 - STARTED - TIME=05.28.07
05.28.07 JOB    9  IEF236I ALLOC. FOR REVIEW2 RECV370 RECV01
05.28.07 JOB    9  IEF237I 01C  ALLOCATED TO XMITIN
05.28.18 JOB    9  CCI001C RECV370 /RECV370 /00:00:02.74/        /00000/SYS
05.28.19 JOB    9  CCI001C COPY01  /IEBCOPY /00:00:00.15/        /00000/SYS
05.28.19 JOB    9  IEF404I REVIEW2 - ENDED - TIME=05.28.19
05.28.19 JOB    9  $HASP395 REVIEW2  ENDED










REPLY -                                                                   PF3=ST





4A                                                                      024/009
```

両方のジョブの完了コードの期待値は「0000」です。
「**<font color="red">F3</font>**」キーを押して、TSOコマンドプロンプトに戻ります。
そこで、「**<font color="red">HELP REVIEW</font>**」と入力し、「**<font color="red">Enter</font>**」キー入力します。

```bash:TSOユーザ画面
 READY
HELP REVIEW
```

すると、次のようなヘルプ画面が表示されます。

```bash:TSOユーザ画面
HELP REVIEW

 Function -
   The REVIEW command allows a data set or UNIX entity to be examined at
   a 3270 TSO terminal in full screen mode.  Both disk and tape files
   may be REVIEWed.  If a PDS without a member is specified then a
   member selection list is displayed.  Load module members with a
   residence mode of ANY are shown in high intensity or green in the
   member list.  SCLM-managed members are flagged with an equals ('=')
   sign in the member list.  When looking at file data, a 'K' may be
   shown in the "ruler" heading line to denote the first and last, or
   only, column(s) of record keys.  On color terminals the portion of
   the "ruler" line corresponding to record keys is shown in red.  If
   the record format indicates printer carriage control characters then
   an 'A' or an 'M' as appropriate may be shown in column 1 of the
   "ruler" heading line.

   REVIEW can format records according to Assembler data structure
   source code supplied by the user.  REVIEW can also format system
   related data such as SMF records, EREP data, VTOC entries, tape
   labels and load module structure and identification data.  REVIEW
   can format the directories of ZIP files created by PKZIP, Info-ZIP,
 ***
```

「**<font color="red">Enter</font>**」キーを押すと、次ページ送りされます。「**<font color="red">PgDn</font>**」キーを押すと、TSOコマンドプロンプトに戻ります(PgDnキーに3270キーボードのPA1を割り当てている前提)。

TSOコマンドプロンプトで、「**<font color="red">RFE</font>**」と入力し、「**<font color="red">Enter</font>**」キー入力します。

```bash:TSOユーザ画面
 READY
RFE
```

すると、次のような画面になります。これは、「REVIEWツール」にユーザインターフェース画面をつけたものです。

```bash:TSOユーザ画面
 -----------------------------  REVIEW FRONT END  ------------------------------
 COMMAND ===>


    1  BROWSE    - VIEW OR BROWSE DATA SET CONTENTS      USERID    - HMVS01
                                                         SYSTEM    - HMVS
    2  EDIT      - UPDATE OR CREATE DATA SET CONTENTS    TERMINAL  - CUU400
                                                         NETWORK   -
    3  UTILITIES - PERFORM UTILITY FUNCTIONS             RELEASE   - 45.3
                                                         DAY       - SAT    170
    6  COMMAND   - ISSUE TSO OR CLIST COMMAND            DATE      - 2016-06-18
                                                         TIME      - 05:58
    X  EXIT      - TERMINATE RFE










                                                                      3812K FREE





4A                                                                      002/015
```


### TSOコマンドDATEのインストール
次のコマンド完了コード確認画面で入力します。
「**<font color="red">./hercsub localhost:3505 date.jcl</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:完了コード確認画面
$ pwd
/home/hercules/mvs/jcl
$ ./hercsub localhost:3505 date.jcl
```

TSOユーザ画面に切り替えて、TSOコマンドプロンプトで、「**<font color="red">DATE</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。
すると、次のようなメッセージが表示されます。

```bash:TSOユーザ画面
 READY
DATE
 DATE = SATURDAY, JUNE 18, 2016 (2016/170)
 TIME = 06.03.18
 READY
```
### RPFを起動してみる
TSOコマンドプロンプトで「**<font color="red">rpf</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
 READY
rpf
```

すると、次のような画面が表示されます。

```bash:TSOユーザ画面
 ------------------------------ RPF MAIN MENU -------------(C)-1979-2006 Skybird
 Option  ===>
                                                             USERID  - HMVS01
   0  Defaults    - Alter / Display session defaults         Time    - 06:13:41
   1  View        - Display source data or output listings   System  - HMVS
   2  Edit        - Update / Create a member or dataset      TSO-proc- IKJACCNT
   3  Utility     - Enter UTILITY                            Release - V1R5M3
   4  Assembler   - Foreground ASSEMBLER and LINK
   5  User        - Execute RPF user routine
   6  TSO         - Execute TSO commands                      June      2016
   7  Tutorial    - Display HELP information               Su Mo Tu We Th Fr Sa
   8  Test        - Enter TEST mode (Authorized)                     1  2  3  4
   9  Operator    - Enter OPERATOR mode                     5  6  7  8  9 10 11
   X  Exit        - Terminate RPF                          12 13 14 15 16 17 18
                                                           19 20 21 22 23 24 25
 Hit PF03/15 to terminate RPF                              26 27 28 29 30

 |                                                  |
 | RPF Version 1 Rel. 5.3 Build: 09/01/08 18.37     |
 |                                                  |
 | Use of RPF is free, modifications are not allowed|
 | Information: email rpf@quicknet.nl               |
 |                                                  |
                                                   (C)-1979-2006 Skybird Systems





4A                                                                      002/015
```

RPFは色々便利な機能がありますが、ここであれこれ試していると長くな
るので、一旦終わります。「**<font color="red">F3</font>**」キーを入力してRPFを終了します。

```bash:TSOユーザ画面
 USERID=HMVS01 ,RPF START:   6:13:40,RPF END:   6:16:35
 READY
```

### TSOとVTAMのシャットダウン
まず、すべてのTSOセッションをログオフする必要があります。

TSOユーザ画面に切り替えて、
TSOコマンドプロンプトで「**<font color="red">logoff</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:TSOユーザ画面
 READY
logoff
```

すると、TSOログオンプロンプト画面に戻ります。

```bash:TSOユーザ画面




     HH   HH  EEEEEEE  RRRRRR    CCCCC   UU   UU  LL       EEEEEEE   SSSSS
     HH   HH  EEEEEEE  RRRRRRR  CCCCCCC  UU   UU  LL       EEEEEEE  SSSSSSS
     HH   HH  EE       RR   RR  CC   CC  UU   UU  LL       EE       SS   SS
     HHHHHHH  EEEE     RRRRRRR  CC       UU   UU  LL       EEEE      SSS
     HHHHHHH  EEEE     RRRRRR   CC       UU   UU  LL       EEEE        SSS
     HH   HH  EE       RR RR    CC   CC  UU   UU  LL       EE       SS   SS
     HH   HH  EEEEEEE  RR  RR   CCCCCCC  UUUUUUU  LLLLLLL  EEEEEEE  SSSSSSS
     HH   HH  EEEEEEE  RR   RR   CCCCC    UUUUU   LLLLLLL  EEEEEEE   SSSSS



            Welcome to MVS3.8j, running under the Hercules emulator






 Logon ===>






4A                                                                      023/013
```

TSOをシャットダウンする為に、マスタコンソール画面に切り替え、
「**<font color="red">p tso</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  p tso

  IEE163I MODE= RD 
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
  00- p tso
    - IKT006I  TCAS ENDED
    - IEF404I TSO - ENDED - TIME=06.27.08
    - $HASP395 TSO      ENDED
```

VTAMをシャットダウンする為に、
「**<font color="red">z net,quick</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  z net,quick

  IEE163I MODE= RD
```

すると、次のようなメッセージが表示されます。

```bash:マスタコンソール画面
  00- z net,quick
      IST097I  HALT     ACCEPTED
      IST133I  VTAM TERMINATION IN PROGRESS
      IST109I  NETWORK SOLICITOR IS NOW TERMINATED
      IST141I  NODE LCL400   NOW DORMANT
      IST105I  LCL400   NODE NOW INACTIVE
      IST105I  APPLTSO  NODE NOW INACTIVE
      IST412I  VTAM COMMAND PROCESSING TERMINATED
      IST102I  VTAM IS NOW INACTIVE
   
 - IEF404I NET - ENDED - TIME=06.30.34
    - $HASP395 NET      ENDED
      $HASP099 ALL AVAILABLE FUNCTIONS COMPLETE
```

JES2をシャットダウンする為に、
「**<font color="red">$p jes2</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  $p jes2

  IEE163I MODE= RD
```

しばらくすると、JES2終了メッセージが表示されます。

```bash:マスタコンソール画面
    - $HASP085 JES2 TERMINATION COMPLETE
    - IEF404I JES2 - ENDED - TIME=06.33.55
```

続けて、「**<font color="red">z eod</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  z eod

  IEE163I MODE= RD
```

しばらくすると、DMPレコードを書き込みが成功したメッセージが表示されます。

```bash:マスタコンソール画面
  00- z eod
     *IEE362A SMF ENTER DUMP FOR SYS1.MANX ON MVSRES
      IEE360I SMF NOW RECORDING ON SYS1.MANY ON MVSRES TIME=06.37.09
      IEE334I HALT     EOD SUCCESSFUL
```

Herculesエミュレータ画面に切り替えてみます。

```bash:Herculesエミュレータ画面
Command ==>
CPU0000 PSW=070E000000000000 24..W.....                    instcount=168,911,166
```

カウントが続いています。完全に停止させます。
マスタコンソール画面に切り替え、「**<font color="red">quiesce</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:マスタコンソール画面
  IEE152I     ENTER     CANCEL     D C,K
  quiesce

  IEE163I MODE= RD
```

すると、次のメッセージが表示されます。

```bash:マスタコンソール画面
 IEE123A PRESS CANCEL KEY TO RESTORE NORMAL DISPLAY


 IEE082I SYSTEM WAIT STATE 'CCC'X - QUIESCE FUNCTION PERFORMED
```

Herculesエミュレータ画面に切り替えます。カウントが止まっています。

```bash:Herculesエミュレータ画面
HHCCP011I CPU0000: Disabled wait state
          PSW=000A0000 00000CCC
Command ==>
CPU0000 PSW=000A000000000CCC 24M.W.....                    instcount=170,235,866
```

Herculesエミュレータのコマンドプロンプトに「**<font color="red">quit</font>**」と入力し、「**<font color="red">Enter</font>**」キーを入力します。

```bash:Herculesエミュレータ画面
Command ==> quit
CPU0000 PSW=000A000000000CCC 24M.W.....                    instcount=170,235,866
```

すると、次のような画面になり、ついに終了です。

```bash:Herculesエミュレータ画面
HHCHD909I Shutdown sequence complete
HHCIN904I All termination routines complete
HHCIN909I Hercules shutdown complete
HHCIN099I Hercules terminated
HHCHD900I Begin shutdown sequence
HHCHD909I Shutdown sequence complete
$ 
```

### Hercules設定ファイル(mvs.cnf)の追加DASDボリュームコメント解除

次のdiffコマンドのように追加DASDボリュームのコメントを解除します。

```bash:
$ pwd
/home/hercules/mvs
$ diff conf/mvs.cnf.org conf/mvs.cnf
37c37,38
< 0100.4  3420    *
---
> #0100.4  3420    *
> 0100  3420    *
39c40,41
< 0310.4  3420    *
---
> #0310.4  3420    *
> 0310  3420    *
46c48
< #0180    3380    dasd/pub000.3380
---
> 0180    3380    dasd/pub000.3380
48c50
< #0190    3390    dasd/pub001.3390 cu=3880
---
> 0190    3390    dasd/pub001.3390 cu=3880
50,55c52,57
< #0220    2314    dasd/sortw1.2314
< #0221    2314    dasd/sortw2.2314
< #0222    2314    dasd/sortw3.2314
< #0223    2314    dasd/sortw4.2314
< #0224    2314    dasd/sortw5.2314
< #0225    2314    dasd/sortw6.2314
---
> 0220    2314    dasd/sortw1.2314
> 0221    2314    dasd/sortw2.2314
> 0222    2314    dasd/sortw3.2314
> 0223    2314    dasd/sortw4.2314
> 0224    2314    dasd/sortw5.2314
> 0225    2314    dasd/sortw6.2314
60c62
< #0253    3350    dasd/syscpk.3350
---
> 0253    3350    dasd/syscpk.3350
62c64
< 0010    3270    console                    # master console
---
> 0010    3270    # console                    # master console
66c68,71
< 0400.8  3270    tso
---
> #0400.8  3270    tso
> 0400  3270    # tso
> 0401  3270    # tso
> 0402  3270    # tso
```

コメント解除する追加DASDボリューム（180、190、220、221、222、223、224、225、253）。

### スナップショットの取得

```bash:Herculesエミュレータ画面
$ pwd
/home/hercules
$ tar cvfj mvs.04.tar.bz2 ./mvs
```