6 z/OS上のIMSからUNIX上のOracle Tuxedo Application Runtime for IMS UsersへのCOBOLアプリケーションの移行
z/OS上のIMSの制御の下に実行されているCOBOLアプリケーションを移行するには、次のステップを実行する必要があります。
- ART Workbenchを使用してCOBOLソース・コードを変換します
- z/OS上のIMSマクロに従って、Tuxedo ART for IMSの構成ファイルをカスタマイズします。
- Tuxedo ART for IMSサーバーで構成されているOracle Tuxedoアプリケーションを定義および起動し、3270端末上でトランザクションを送信することで、目的のCOBOLアプリケーションを実行するか、ARTバッチ・ランタイムによってJOBを実行します。
6.1 COBOLプログラムの変換
z/OS上のIMSからのCOBOLソース・プログラムは、最初にART Workbenchによって変換する必要があります。変換後、変換されたソース・プログラムはMicro Focus COBOLまたはCOBOL-ITコンパイラで.gnt
ファイルにコンパイルできます。COBOLソース・プログラムの変換の詳細は、ART Workbenchのドキュメントを参照してください。COBOLソース・プログラムのコンパイルの詳細は、Micro Focus COBOLまたはCOBOL-ITのドキュメントを参照してください。
たとえば、2つのCOBOLソース・プログラムが変換され、コンパイルされます。
DFSIVAP1.cbl
(DFSIVAP1.gnt
にコンパイル)は、MPPプログラムです
DFSIVAP2.cbl
(DFSIVAP2.gnt
にコンパイル)は、BMPプログラムです
.gnt
ファイルは、$COBPATH
(Micro Focus COBOL)または$COB_LIBRARY_PATH
(COBOL-IT)の下に置く必要があります。
6.2 IMSランタイムでのCOBOLプログラム・デバッグの実装
この項の内容は次のとおりです。
6.2.1 ユースケース1
2人のユーザーが2つのMF BMP COBOLプログラムをそれぞれデバッグします。
ユーザーAがCOBOL Program1
をデバッグし、ユーザーBがCOBOL Program2
をデバッグする場合、次のステップを実行します。
- COBOLデバッグ情報を次のように
imsdebug.desc
構成ファイルに追加します。[cobol] USER=A APPNAME=program1 DEBUGID=myDebugID1 [cobol] USER=B APPNAME=program2 DEBUGID=myDebugID2
- ART IMSサーバーを起動します。
ユーザーAおよびBは、animユーティリティを起動する同じLinuxアカウントで独自のART IMSサーバーを起動します。animユーティリティによって指定される
DEBUGID
のみがデバッグされます。 - animコマンドラインを入力します。
ユーザーAは、端末から
anim %XmyDebugID1
というコマンドラインを入力します。ユーザーBは、端末からanim %XmyDebugID2というコマンドラインを入力します。
- COBOLプログラムを起動してデバッグします。
親トピック: IMSランタイムでのCOBOLプログラム・デバッグの実装
6.2.2 ユースケース2
1人のユーザーが1つのトランザクション内のすべてのCIT COBOLプログラムをデバッグします。
ユーザーCがトランザクションtranA
でCOBOL Program1
およびProgram2
をデバッグする場合、次のステップを実行します。
- COBOLデバッグ情報を次のように
imsdebug.desc
構成ファイルに追加します。[cobol] USER=C TRANNAME=tranA DEBUGID = 111
- deetコマンドラインを入力します。
ユーザーCは、端末から
Deet -p 111
というコマンドラインを入力し、デバッグします。ノート:
デバッグが完了したらデタッチする必要があります。
親トピック: IMSランタイムでのCOBOLプログラム・デバッグの実装
6.3 構成ファイルのカスタマイズ
Tuxedo ART for IMSでz/OS上のIMSから移行されたCOBOLアプリケーションを実行するには、いくつかの重要な構成ファイルを、そのCOBOLアプリケーションに関連するIMSマクロに基づいてカスタマイズする必要があります。
MPPプログラムを実行するには、リスト1に示すプログラムに対応するトランザクション・コードが必要です。
リスト1 imstrans.descの例
[imstran]
name=TRAN1
response=no
edit=ULC
appname=DFSIVAP1
class=1
トランザクション・コードTRAN1
は、アプリケーションDFSIVAP1
に対応しています。
各COBOLアプリケーションは、それがMPPとBMP (BMPT)のどちらのプログラム(TPまたはBATCH)であるかを識別するそれ自体の定義を持っている必要があります。次のリストに、2つのアプリケーションを定義するimsapps.desc
の例を示します。
リスト2 2つのアプリケーションを定義するimsapps.desc
[imsapp]
name=DFSIVAP1
type=TP
[imsapp]
name=DFSIVAP2
type=BATCH
IMSでアプリケーションを実行するには、1つのPSBが必要です。Tuxedo ART for IMSでは、アプリケーションのPSBマクロは.psb
構成ファイルにマップされます。MPPプログラムの場合、その.psb
ファイルの接頭辞はアプリケーション名、つまり、$appname.psb
である必要があります。BMPおよびBMPTプログラムの場合、その.psb
ファイルの接頭辞はIMSアプリケーションのネーミング・ルールに従った任意の名前にすることができます。DFSIVAP1
およびDFSIVAP2
の.psb
ファイルを、次に示します。1つのI/O PCBおよび.psb
に定義されているPCBは、COBOLプログラムが起動されたときにそのパラメータとしてそのプログラムに渡されます。
リスト3 DFSIVAP1およびDFSIVAP2 .psbの例
DFSIVAP1.psb
[imspcb]
modify=yes
express=no
[imspcb]
modify=yes
express=no
DFSIVAP1.psb
から、アプリケーションDFSIVAP1
には、1つのI/O PCBと2つの代替PCBがその引数として必要であることがわかります。
リスト4 2つの代替PCBを持つDFSIVAP1
DFSIVAPX.psb
[imspcb]
type=GSAM
name=DFSIVD5I
procopt=G
[imspcb]
type=GSAM
name=DFSIVD5O
procopt=LS
[imspcb]
type=GSAM
name=TSTIVD5O
procopt=LS
DFSIVAPX.psb
から、アプリケーションDFSIVAP2
には、1つのI/O PCBと3つのGSAM PCBが必要であることがわかります。
詳細は、『Oracle Tuxedo Application Runtime for IMSリファレンス・ガイド』を参照してください
6.4 Oracle Tuxedoアプリケーションの定義
Tuxedo ART for IMSでIMS COBOLアプリケーションを実行するには、次のサーバーをTuxedoアプリケーションで起動する必要があります。
ARTICTL
- 3270端末との接続を担当するサーバー
ARTIMPP
- MPPアプリケーションの実行を担当するサーバー
ARTIBMP
- BMPアプリケーションの実行を担当するサーバー
詳細は、Oracle Tuxedoドキュメントのファイル形式、データ記述方法、MIBおよびシステム・プロセスのリファレンスの第5項UBBCONFIG(5)および『Oracle Tuxedo Application Runtime for IMSリファレンス・ガイド』のTuxedo ART for IMSサーバー・パラメータに関する項を参照してください
6.5 MPP COBOLプログラムの実行
MPPプログラムDFSIVAP1
を実行するには、3270端末を開き、UBBCONFIG
ファイルで定義されているホスト名およびポートを使用してARTICTL
サーバーに接続し、画面を書式設定して、トランザクション・コードTRAN1
を入力します。DFSIVAP1.gnt
がARTIMPPサーバーによって起動されます。
6.6 BMP COBOLプログラムの実行
BMPプログラムDFSIVAP2
を実行するには、ユーザーは、ART Workbenchによってz/OS上の対応するJCLをシェル・スクリプトに変換し、それをJOBとしてART Batchランタイムによって実行できるようにする必要があります。そのJOBによって、ユーティリティDFSRRC00
が起動され、ARTIBMP
サーバーによって公開されている特定のサーバーが起動され、それによってリクエストされたCOBOLアプリケーションが起動されます。詳細は、ART Workbenchのドキュメントを参照してください。