TSOユーザーがハングしてしまったときのテクニック

<H1>TSOユーザーハング</H1>
z/OS でTSOを使用している最中何らかの問題でハングしたりすることがあります。例えば、使用中にネットワークの問題で接続が切れてしまったが、TSOユーザーは生きたままになっているというような状況です。こうした状況のときによく行われるのが、他のユーザーにユーザーをキャンセルしてもらうか、あるいはログオン画面でRECONNETを選択して再接続を試行するかといったことです。

<H1>自力でキャンセルする方法</H1>
いくつか方法があるのですが、今回は１つ下記のような方法をご案内します。


- z/OS UNIX (telnet 端末または SSH クライアント端末から）submit コマンドでJCLをsubmitする
- JCL から MVS コマンドを発行してユーザーをキャンセルする

<H2>submit コマンド例</H2>

```
$ submit
Enter JCL, /// ends input
```

<H2>キャンセルコマンドを発行するJCLの例</H2>

```
//E34592CM JOB REGION=0M
//STEP1 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
//  CANCEL U=E34592
///
```
こちらを端末から入力してエンターを押します。（最後に///を入力するとJCLの入力が終わります。

```
JOB JOB01234 submitted from stdin
```

<H2>実行結果</H2>
SYSLOGには下記のようなメッセージが出力されます。

```
N 0020000 TZ23     23031 14:01:44.17 JOB01233 00000090  ICH70001I E34592   LAST ACCESS AT 14:01:18 ON TUESDAY, JANUARY 31, 2023 
N 4000000 TZ23     23031 14:01:44.17 JOB01233 00000090  $HASP373 E34592CM STARTED - INIT 1    - CLASS A        - SYS MVS1       
N 0000000 TZ23     23031 14:01:44.17 JOB01233 00000090  IEF403I E34592CM - STARTED - TIME=14.01.44                              
N 0004000 TZ23     23031 14:01:44.18 JOB01233 00000290  -                                         --TIMINGS (MINS.)--           
S                                                        ----PAGING COUNTS---                                                   
N 0004000 TZ23     23031 14:01:44.18 JOB01233 00000290  -JOBNAME  STEPNAME PROCSTEP    RC   EXCP    CPU    SRB  CLOCK   SERV  PG
S                                                          PAGE   SWAP    VIO SWAPS STEPNO                                      
N 0004000 TZ23     23031 14:01:44.18 JOB01233 00000290  -E34592CM          STEP1       00     22    .00    .00    .00    221   0
S                                                             0      0      0     0     1                                       
N 0000000 TZ23     23031 14:01:44.18 JOB01233 00000090  IEF404I E34592CM - ENDED - TIME=14.01.44                                
N 0004000 TZ23     23031 14:01:44.18 JOB01233 00000290  -E34592CM ENDED.  NAME-                     TOTAL CPU TIME=   .00  TOTAL
S                                                        ELAPSED TIME=   .00                                                    
N 4000000 TZ23     23031 14:01:44.18 JOB01233 00000090  $HASP395 E34592CM ENDED - RC=0000                                       
N C000000 TZ23     23031 14:01:44.19          00000090  $HASP309 INIT 1    INACTIVE ******** C=A                                
N 0200000 TZ23     23031 14:02:08.52 JOB01234 00000090  $HASP100 E34592CM ON INTRDR                            FROM STC01216    
S                                                       E345924                                                                 
N 0000000 TZ23     23031 14:02:08.52 JOB01234 00000290  IRR010I  USERID E34592   IS ASSIGNED TO THIS JOB.                       
NC0000000 TZ23     23031 14:02:08.52 INSTREAM 00000290  CANCEL U=E34592                                                         
NR0000000 TZ23     23031 14:02:08.52 JOB01234 00000090  IEE301I E34592            CANCEL COMMAND ACCEPTED                       
N 0000000 TZ23     23031 14:02:08.52          00000290  IEA989I SLIP TRAP ID=X222 MATCHED.  JOBNAME=E34592  , ASID=00BB.        
```

そして無事にユーザーがキャンセルされます。

<H1>References</H1>

https://www.ibm.com/docs/ja/zos/2.5.0?topic=program-writing-jcl-command-execution

https://www.ibm.com/docs/ja/zos/2.5.0?topic=ispf-using-submit-command

https://www.ibm.com/docs/ja/zos/2.5.0?topic=description-examples-command-statement