アプリケーションの移行

本章では、CICSアプリケーションとバッチ・アプリケーションを移行する方法について説明します。

1. CICSアプリケーションの移行

CICSシステムのアプリケーション・プログラムをOpenFrame/OSCシステムで動作させるために移行します。アプリケーション・プログラムの移行は、EBCDIC文字で作成されたプログラム・ソースをASCII文字に変換するプロセスから始まります。以降のプロセスは、一般的なOSCアプリケーション・プログラムのコンパイルやデプロイ・プロセスと同じです。

CICSアプリケーションの移行プロセスは以下のとおりです。

  1. EBCDICをASCIIに変換

    EBCIDIC文字をオープン環境で使用できるASCII文字に変換します。

  2. 前処理

    CICSアプリケーションをOpenFrame上で動作できるように、OpenFrameのツールを使用してCICSアプリケーションを修正します。

  3. コンパイル

    コンパイラーを使って実行可能なバイナリを作成します。

  4. デプロイ

    生成されたバイナリをOpenFrameシステムにインポートします。

本節では、既存のCICSアプリケーションの特性によって、コンパイル時に行われる前処理やコンパイル時の注意事項、およびアプリケーションのデプロイ・プロセスについて説明します。

EBCDIC文字をASCIIに変換するプロセスと変換時に発生する可能性のある問題点については、EBCDICからASCIIへの変換EBCDICからASCIIへの変換の注意点を参照してください。

1.1. 前処理

前処理は、CICSのために作成されたCOBOLアプリケーション・プログラムのソース・ファイルをOpenFrameが提供するツールを使用してOpenFrame COBOLコンパイラーでコンパイルできるように変換することです。

CICSアプリケーションの前処理に使用されるツールは以下のとおりです。

  1. ofcbpp

    メインフレームCOBOLでのみサポートされる構文を前処理します。

    OpenFrame環境でCOBOL CICSアプリケーションをコンパイルするために、ofcbppツールを使用して前処理を行います。ofcbppツールは、COBOLの文法をチェックし、参照されるコピーブックを展開するときに使用されます。また、特定の構文を置き換えるか挿入するときにも使用されます。たとえば、ユーザーのミスで終了期間が指定されていない場合、--add-miss-periodオプションを使用して構文エラーを回避し、終了を意味するSTOP RUNを、RETURNを意味するGOBACKに置き換えるために—​conv-stop-runを使用します。

    以下は、COBTEST.cobファイルでコピーブック・パスを指定し、--conv-stop-runを適用して前処理する例です。

    $ ofcbpp -i COBTEST.cob -o ofcbpp_COBTEST.cob -copypath $PWD/COPYBOOK --conv-stop-run

    ofcbppツールの使用方法については、OpenFrame COBOL『ユーザーガイド』を参照してください。

  2. osccobprep

    osccobprepツールは、CICSでサポートされる例外的なCOBOL文法を前処理します。また、OSC COBOLアプリケーション・プログラムの文法を前処理します。たとえば、BLLセルは、UNIX環境のコンパイラーを使用してコンパイルすると、メモリ・アクセス・エラーが発生するため、osccobprepを使用して前処理する必要があります。

    以下は、OSCTEST.cobファイルでBLLセルを削除する前処理を実行する例です。

    $ osccobprep -b OSCTEST.cob
  3. dliprep

    dliprepツールは、OSCシステムでHiDBにアクセスするために使用されるEXEC DLIコマンドが含まれているCOBOLソースを前処理します。

    以下は、EXEC DLIコマンドが含まれているCOBOLソース・ファイルを前処理する例です。

    $ dliprep DLITEST.cob
  4. osccblpp

    osccblppツールは、OSCシステムでリソースにアクセスするために使用されるEXEC CICSコマンドが含まれているCOBOLソースを前処理します

    以下は、EXEC CICSコマンドが含まれているCOBOLソース・ファイルを前処理する例です。

    $ osccblpp OSCTEST.cob

    CICSアプリケーションを移行する場合は、osccblppツールを使用してすべてのソースを前処理する必要があります。ただし、ofcbpp、osccobpp、dliprepツールは必要に応じて使用してください。

1.2. コンパイル

前処理したアプリケーションのプログラム・ソースを基に、COBOLコンパイラーを使って共有オブジェクトを作成します。既存のアプリケーション・プログラムのCOBOL文法の特性に合わせてオプションを適用します。

コンパイラーを使用した共有オブジェクトの作成に関する詳細は、COBOLコンパイラーの各ベンダーのマニュアルを参照してください。

1.3. デプロイ

OpenFrameのosctdlupdateツールを使用して、コンパイルされたバイナリを以下の手順でデプロイおよび適用します。TDL(Tmax Dynamic Library)が設定済みの場合には、手順5に進んでください。

  1. OSCアプリケーション・サーバーの環境設定ファイルの[GENERAL]セクションのTDLDIR項目を設定します。TDLDIR項目に設定したディレクトリの下に、modおよびrunディレクトリがない場合は、直接作成してください。TDLDIR項目を設定しない場合、OSCシステムがデフォルトで「${OPENFRAME_HOME}/osc/region/{リージョン名}/{TDLディレクトリ}」を参照します。

  2. TDLDIRディレクトリ配下のconfigディレクトリに、tdl.cfgファイルを作成します。OpenFrameシステムをインストール時にデプロイされたtdl.cfgサンプル・ファイルを使用します。

  3. osctdlinitツールを実行します。TDLDIRディレクトリに存在するtdl.cfgファイルの設定に従って初期化が行われます。

  4. コンパイルされたアプリケーションをTDLDIRディレクトリ配下のmodディレクトリに保存します。

  5. OSCリージョン名とプログラム名を指定してosctdlupdateツールを実行し、アプリケーションをデプロイします。

以下は、OSCTESTというプログラムをアップデートする例です。(プログラム名は、拡張子「.so」が省略されています)

$ osctdlupdate OSC00001 OSCTEST
  1. TDLについての詳細は、『Tmax プログラミングガイド(ダイナミックライブラリ)』を参照してください。

  2. osctdlrmツールを使用して、使用中の共有メモリ情報を削除することができます。共有メモリ情報を削除した後再作成するときは、osctdlinitツールを実行します。各ツールについての詳細は、OpenFrame OSC『ツールリファレンスガイド』を参照してください。

2. バッチ・アプリケーションの移行

バッチ・アプリケーションの移行プロセスには、メインフレームで使用されていたバッチ・アプリケーションをOpenFrameで実行できるようにアプリケーション・ソースを変換する前処理とコンパイルが含まれます。

以下は、バッチ・アプリケーションの移行プロセスです。

  1. EBCDICをASCIIに変換

    EBCIDIC文字をオープン環境で使用できるASCII文字に変換します。

  2. 前処理

    バッチ・アプリケーションをOpenFrame上で動作できるように、OpenFrameのツールを使用してバッチ・アプリケーションを修正します。

  3. コンパイル

    コンパイラーを使って実行可能なバイナリを作成します。

  4. デプロイ

    生成されたバイナリをOpenFrameシステムにインポートします。

Oracleをデータベースとして使用する場合は、一般的な移行プロセスに加えて、DB2 SQL文をOracle SQL文に変換する作業が必要です。本節では、COBOLとPL/Iの言語ごとに、前処理、コンパイル、デプロイの各プロセスとコンパイル時の注意事項について説明します。

1.EBCDIC文字をASCIIに変換するプロセスと変換時に発生する可能性のある問題点については、EBCDICからASCIIへの変換EBCDICからASCIIへの変換の注意点を参照してください。

2.DB2 SQL文をOracle SQL文に変換するプロセスについては、DB2からOracleへの移行の注意点を参照してください。

2.1. COBOLバッチ・アプリケーション

本節では、COBOLバッチ・アプリケーションを移行する際の前処理、コンパイル、デプロイ・プロセスについて説明します。

2.1.1. 前処理

OpenFrame環境でCOBOLバッチ・アプリケーションをコンパイルするためにofcbppツールを使用して前処理を行います。

ofcbppツールを使用してCOBOL文法をチェックし、参照されるコピーブックを展開しますが、ofcobのコンパイル時に前処理が実行されるため、必要に応じてofcbppを使用します。OpenFrame COBOLは、基本的にOpenFrame外部ファイル・ハンドラーを使用しますが、富士通 NetCOBOLを使用する場合は、OpenFrame外部ファイル・ハンドラーを使用するためにofcbppf前処理ツールを使用する必要があります。

以下は、TSTCOB.cobに参照されるコピーブック・パスを指定し、ofcbppツールを使用して前処理する例です。

$ ofcbpp -i TSTCOB.cob -o ofcbpp_TSTCOB.cob -copypath $PWD/COPYBOOK

以下は、TSTCOB.cobをサブモジュールとデバッグ・モードでofcbppfツールを使用して前処理する例です。

$ ofcbppf -s -t -i TSTCOB.cob -o ofcbppf_TESTCOB.cob

ofcbppツールとofcbppfツールについての詳細は、OpenFrame COBOL『ユーザーガイド』を参照してください。

2.1.2. コンパイル

COBOLバッチ・アプリケーションは、コンパイラー・ベンダーによって前処理プロセスが異なる場合があります。本節では、各コンパイラーのバッチ・アプリケーションのコンパイル方法について説明します。

  • OpenFrame COBOLコンパイラー

    外部ファイル・ハンドラーをサポートするOpenFrame COBOLコンパイラーは、ファイル入出力を前処理することなく、外部ファイル・ハンドラーを使用してOpenFrameのtextfh(Tmax外部ファイル・ハンドラー)モジュールをリンクし、呼び出す関数を指定することにより、データセットの入出力を使用することができます。

    外部ファイル・ハンドラーを指定するために、OpenFrame COBOLで別途指定するオプションはありません。コンパイル時に libtextfh.soをリンクする必要があり、OpenFrame COBOLで指定した関数名で呼び出すためには、$OPENFRAME_HOME/lib/libcobsw.soがlibswofcob.soにリンクする必要があります。

    以下は、OpenFrame COBOLコンパイラーを使用する例です。

    ofcob -U –o COBSAMPLE.so COBSAMPLE.cob -L$OPENFRAME_HOME/lib –ltextfh
  • MF-COBOLコンパイラー

    外部ファイル・ハンドラーをサポートするMF-COBOLコンパイラーは、ファイル入出力を前処理することなく、外部ファイル・ハンドラーを使用してOpenFrameのtextfh(Tmax外部ファイル・ハンドラー)モジュールをリンクし、呼び出す関数を指定することにより、データセットの入出力を使用することができます。

    外部ファイル・ハンドラーを指定するためには、-C’ CALLFH” TEXTFH”オプションと –C’ ASSIGN” EXTERNAL” オプションを追加して外部ファイル・ハンドラーが使用する関数を指定し、libtextfh.soをリンクする必要があります。OpenFrame COBOLで指定した関数名で呼び出すためには、$OPENFRAME_HOME/lib/libcobsw.soがlibswmfcob.soにリンクする必要があります。

    textfhモジュールではなく、tcobfhモジュールを使用できますが、MF-COBOLを使用する場合は、以下の例のように外部ファイル・ハンドラーを使用することをお勧めします。

    以下は、MF-COBOLコンパイラーを使用する例です。

    cob32 -zvP -U -t –o COBSAMPLE.so COBSAMPLE.cob –C’CALLFH”TEXTFH”’–C’ASSIGN”EXTERNAL”’–L$OPENFRAME_HOME/lib –ltextfh
  • NET-COBOLコンパイラー

    外部ファイル・ハンドラーをサポートしない.NET COBOLコンパイラーなどのCOBOLコンパイラーでは、ofcbppfツールを使用してファイル入出力を前処理する必要があり、コンパイル時にOpenFrameのtcobfh(Tmax COBOLファイル・ハンドラー)モジュールをリンクする必要があります。

    .NET COBOLコンパイラー を使用する場合は、以下の例のようにofcbppfツールを使用して前処理してから、ライブラリのlibaimap.so、libaimacpin.so、libndbdml.soをリンクします。

    以下は、.NET COBOLコンパイラーを使用する例です。

    cobol -dy -shared -WC",STD1(JIS1),NOALPHAL,SRF(FIX),NSPCOMP(ASP),DLOAD,RSV(V125),CHECK,MODE(CCVS)" -o COBSAMPLE.so COBSAMPLE.cob -L$OPENFRAME_HOME/lib -laimap -laimacpin -lndbdml

    コマンドの詳細については、各コンパイラー・ベンダーが提供するマニュアルを参照してください。

2.1.3. デプロイ

新しいバージョンのプログラムまたはモジュールをOpenFrameシステムに動的に適用するときは、dlupdateツールを使用します。dlupdateツールは、モジュールによって実行中のプログラムとアプリケーションに影響を与えないために、既存のモジュールをバックアップして、実行されるプログラムとアプリケーションが新しいモジュールを使用できるようにします。

以下は、ツールの使用方法と項目についての説明です。

dlupdate source_path dataset_name
項目 説明

source_path

新しく適用されるモジュールのパスです。

dataset_name

既存のモジュール・パスに存在するPDSです。

dlupdateによってバックアップされたモジュールは、dlcleanツールを使用して削除することができます。ユーザーがdlclean ツールを直接実行しなくても、実行中のジョブがない場合は、dlcleanツールが定期的に実行され、バックアップされたモジュールを削除します。

dlupdateツールとdlcleanツールの詳細については、OpenFrame Batch『ツールリファレンスガイド』を参照してください。

2.2. PL/I バッチ・アプリケーション

本節では、PL/Iバッチ・アプリケーションを移行する際のコンパイル、デプロイのプロセスについて説明します。

2.2.1. コンパイル

外部ファイル・ハンドラーをサポートするOpenFrame PL/Iは、ファイル入出力を前処理することなく、コンパイル時に外部ファイル・ハンドラーを使用してOpenFrameのtextfh(Tmax外部ファイル・ハンドラー)モジュールのライブラリ libtextfh.soをリンクし、呼び出す関数を指定することにより、データセットの入出力を使用することができます。

以下は、OpenFrame PL/Iコンパイラーを使用する例です。

$ ofpli -o PLITEST.so PLITEST.pli -L$OPENFRAME_HOME/lib -ltextfh
ofpliツールの詳細については、OpenFrame PL/I『ユーザーガイド』を参照してください。

OpenFrame PL/Iの前処理ツールは別途提供されませんが、中間ファイルを作成できるオプションがあります。--save-tempsを使用すると、作成するコードの特性に応じて .mpまたは .ppファイルが作成されます。PL/Iでは、メインプログラムとサブプログラムに分けられており、JCLで呼び出されるPL/Iアプリケーションは、OPTIONS(MAIN)が指定されている必要があります。

OpenFrame PL/Iでは、システムに応じてオプションを指定することができます。OSCで実行されるアプリケーションは --system-cicsを、OSIで実行されるアプリケーションは --system-imsを指定します。

2.2.2. デプロイ

新しいバージョンのプログラムまたはモジュールをOpenFrameシステムに動的に適用するときは、dlupdateツールを使用します。dlupdateツールは、モジュールによって実行中のプログラムおよびアプリケーションに影響を与えないために、既存のモジュールをバックアップして、実行されるプログラムおよびアプリケーションが新しいモジュールを使用できるようにします。

以下は、ツールの使用方法と項目についての説明です。

dlupdate source_path dataset_name
項目 説明

source_path

新しく適用されるモジュールのパスです。

dataset_name

既存のモジュール・パスに存在するPDSです。

dlupdateによってバックアップされたモジュールは、dlcleanツールを使用して削除することができます。ユーザーがdlclean ツールを直接実行しなくても、実行中のジョブがない場合は、dlcleanツールが定期的に実行され、バックアップされたモジュールを削除します。

dlupdateツールとdlcleanツールの詳細については、OpenFrame Batch『ツールリファレンスガイド』を参照してください。