プログラムがTSOコマンド、バッチプログラムどちらとして呼ばれたかを判定する方法

By 神居 - Posted: 2008/10/28 Last updated: 2010/01/23 - Leave a Comment

MVSではバッチ・プログラムはTSO環境であってもJCLであっても同じように動作させることができる。しかしTSO環境でならバッチ・モードでなくTSO固有の機能を利用したり、TSOコマンドとして動作したい場合もある。このようにTSOで実行された時はコマンド・プロセッサーとして、JCLで実行された時はバッチ・プログラムとして動作するプログラムを作成するような時、自分がどちらとして呼び出されているかを判定する方法を示す。


  • JCLのEXEC文またはTSOのCALLコマンドで呼び出された場合のGR1
  • プログラムがバッチJCLまたはCALLコマンドで実行された場合

    プログラムがバッチJCLまたはCALLコマンドで実行された場合



  • TSOのコマンド・プロセッサーとして呼び出された場合のGR1
  • プログラムがTSOコマンド・プロセッサーとして実行された場合

    プログラムがTSOコマンド・プロセッサーとして実行された場合



    呼び出された時点のGR1が示す領域の先頭ワードのビット0が1ならバッチまたはCALLコマンド、0ならTSOコマンドとして呼び出されていると判定できる。
    GR1がEXECパラメーターを指しているとき、実行中の空間がSTCやバッチ空間かTSOユーザーかを判定するにはEXTRACTマクロを使ってTJIDを求めればよい。さらに詳細を知りたければCOMM(CSCB)、PSB、TSOなども求めて参照する。

    Posted in MVS実践アセンブラー・プログラミング • • Top Of Page