ユーザーズ・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

Oracle Tuxedo Application Rehosting Workbench COBOLコンバータ

 


概要

目的

Oracle Tuxedo Application Rehosting Workbench COBOLコンバータの目的は、z/OSソース・プラットフォーム上のCOBOLプログラムに対し、対応する変換、現代化および再構築ルールを適用することで、ターゲットUNIXプラットフォーム用に同じCOBOLプログラムを生成することです。

COBOLコンバータは構成ファイルのセットを使用して、適用する変換ルールを示し、目的の結果を得るための特定のヒントを指定します。

この章では、COBOLプログラムをz/OS COBOLからMicro Focus COBOLまたはCOBOL-ITへ変換する方法を説明します。

スキル

このガイドは、Rehosting Workbenchを使用してプログラムをz/OS COBOLからMicro Focus COBOLまたはCOBOL-ITへ変換するユーザーを対象としています。

COBOLの変換では、COBOL、JCL、MVSユーティリティおよびUNIX Kornシェルの知識が必要です。

編成

データ・ファイルの移行は次の項で説明しています。

 


要件および前提条件

カタログ化の要件

COBOLコンバータを実行する前に、移行するアセットの一貫性をチェックし、構文またはアセットの一貫性(欠落または未使用コンポーネント)に関連するエラーを修正するために、カタログ化は必須です。

データ変換

データ移行プロセスは、COBOL変換が開始する前に実行する必要があります。この依存性は、データ移行ツールがCOBOLコンバータにより読み取られる構成ファイルを生成することが原因です。データ変換からの構成ファイルはOracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドに記載されています。

 


プラットフォーム移行プロセスにおけるCOBOLコンバータの概要

Rehosting Workbench COBOLコンバータ・プロセスへの入力は次のとおりです。

 


変換手順

構成ファイルの作成と設定

変換用のメイン構成ファイルはconfig-COBOLです。これは次のものを含む他の追加の構成ファイルを参照します。

すべての必要な構成ファイルのサンプルはSimple Applicationにあります。必要に応じて値をチェックおよび適用する必要があります。

COBOLコンバータが使用するすべての構成ファイルは、Oracle Tuxedo Application Rehosting WorkbenchのリファレンスガイドのCOBOLコンバータの章に記載されています。

config-COBOLの構成

COBOL変換の前提条件の準備の後、次の例をモデルとして使用して、メイン構成ファイルを準備します。

注意: 次のファイルが使用できます。

keywords-file

keywords-fileは、COBOLコンバータがRehosting Workbench COBOLコンバータにより体系的に名前が変更されない可能性のある予約済キーワードを含む特定の変数の名前を変更するのに役立つヒント・ファイルです。

これは変数がMicroFocusまたはCOBOL-ITの予約済キーワードでない場合でも、顧客独自の目的で名前の変更操作(一括変更)を行う、WorkBenchにより提供されるリエンジニアリング・メカニズムです。

次のエントリをメイン構成ファイルconfig-cobolに配置します。

keywords-file: "../param/keywords-file"
リスト7-2 サンプルKeywords file
( TAB . MW-TAB )
 ( DOUBLE . MW-DOUBLE )
 ( POS . MW-POS )
)

この例では、アイテムTABはすべてMW-TABで置換されます。

tr-hexa.map

tr-hexa.mapファイルはEBCDIC(z/OSのコード・セット)とASCII(Linux/UNIXのコード・セット)16進数値間のマッピング表です。

次のエントリをメイン構成ファイルconfig-cobolに配置します。

hexa-map-file: "../param/tr-hexa.map"

このファイルは、Tr-Hexa-Mapのような変換ルールにより使用され、ソートや文字列の比較で異なる動作を引き起こす可能性のある値および文字列での、EBCDICとASCIIコード間の違いに関係する問題を、ユーザーが解決するのに役立ちます。

convert-hexa-copy-to-map.shスクリプトで生成されたhexa-map-file

このスクリプトは、REFINEDIR/scripts/convert-hexa-copy-to-map.shに配置されます。

構文
REFINEDIR/scripts/convert-hexa-copy-to-map.sh convertmw_copy_file
convertmw_copy_file: location of the CONVERTMW.cpy file

スクリプトにより、現在のディレクトリ(PARAMディレクトリである必要があります)にtr-hexa.mapファイルが生成されます。

スペースの16進数コードの例

z/OSでのスペースの16進数コードは40で、UNIXでのスペースの16進数コードは20です。

ソース・プラットフォームのコードでの文は次のとおりです。

01  VarName             pic X       value X'40'.

これは次のように変換されます。

リスト7-3 16進数コード変換
*{ Tr-Hexa-Map 1.4.2.1
*01  VarName             pic X       value X'40'.
*--
 01  VarName             pic X       value X'20'.
*}
リスト7-4 tr-hexa.mapのサンプル
00;00
01;01
02;02
03;03
37;04
2d;05
2e;06
2f;07
... 
40;20
...

rename-call-map-file

rename-call-map-fileは古いコール名と新しいコール名の間のマッピング・ファイルです。

これはTr-Rename-External-Callのような変換ルールにより使用され、これによりユーザーは必要に応じて特定の変更を行うことができます。

次のエントリをメイン構成ファイルconfig-cobolに配置します。

rename-call-map-file: "../param/rename-call-map-file"
リスト7-5 rename-call-map-fileの例
(
 ("MQGET" . "MWMQGET")
 ("KIX-ABEND" . "KIX_ABEND")
 ("KIX-ASKTIME" . "KIX_ASKTIME")
)

この例ではMQGETへのすべてのコールはMWMQGETに変更されます。

変換

変換コマンドのオプションにより可能になることが多くあります(Oracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドを参照)。この項では、次の例について説明します。

プログラム(バッチおよびCICS)とサブプログラムの区別は必須で、オプション-cobol-typeは次の値をとります。

次のコマンドラインでは、次の作業変数が設定されます。

表7-1 変換変数
変数
REFINEDIR
/product/art_wb11gR1/refine
PROJECT
$(HOME)/ simpleapp
PARAM
$PROJECT/param
SOURCE
$PROJECT/source
LOGS
$PROJECT/Logs

バッチ、CICSプログラムおよびサブプログラムの変換

コマンドラインは次のとおりです。

ログ・ファイルはコマンドラインが実行するディレクトリに生成されます。特定のディレクトリまたはファイルにログを作成する場合は、-log-file-baseと、その後に実行ログを格納するファイルのパスと名前を指定して使用します。

$REFINEDIR/refine  cobol-convert -v version  -loop -limit=50 -s $PARAM/system.desc  -log-file-base  $LOGS/trans-cbl/translate-cobol-datetime -c $PARAM/config-cobol -cobol-type sub 

この例では、ログ・ファイルは$LOGS/trans-cbl/translate-cobol-datetimeに生成されます。ログ・ディレクトリはあらかじめ作成しておく必要があります。

コピーブックの調整

コピーブックの調整は、COBOLコンバータにより暗黙的に実行、またはすべてのプログラムが生成された後で個別に実行することができます(dcrpオプションを使用、config-COBOLの構成

を参照)。

調整を個別に適用するには、次のスクリプトを変換されたプログラムが置かれたディレクトリ(Simple Applicationの場合、$PROJECT/trfディレクトリ)から実行する必要があります。

リスト7-6 コピーの調整
for file in `find  *  -name '*-copies'` 
do 
    $REFINEDIR/scripts/reconcil-copy-opt-imbr $PROJECT/trf  $file  .cbl 
done

結果の確認

変換結果を確認するには、次のことを検証します。

空のまたは切り捨てられたプログラムについては、ユーザーは$Logsに生成された実行ログを参照して、変換中に発生したエラーを分析できます。

コンパイル

コンパイルは変換に対する検証手順です。プログラムが正常にコンパイルされない場合は、完全に変換されたと見なすことはできません。

コンパイル・オプションおよび設定

コンパイル環境が次の変数に従い、COBOL MicroFocusまたはCOBOL-ITのコンパイル用に正しく構成されていることをチェックする必要があります。

表7-2 コンパイル変数
変数
使用方法
COBDIR
/Product/microfocus/cobol
COBOL製品へのアクセス
COBOLITDIR
/product/COBOL-IT
COBOL-IT製品へのアクセス
その他のCOBOL-IT環境変数
source $COBOLITDIR/bin/cobol-it-setup.sh
環境変数(PATH.LD_LIBRARY_PATH...)の初期化
PATH
$COBDIR/bin: ${PATH}
CobdirをPATH変数に追加
LD_LIBRARY_PATH
/usr/lib:$COBDIR/lib:${ORACLE_HOME}/lib:${JAVA_HOME}/lib
定義されたLD_LIBRARY_PATH
COBCPY
../DML:../Master-copy/COPY:../fixed-copy:.
プログラムがインクルードを見つけることのできる場所を示す
PCCINCLUDE
"include=../Master-copy/COPY, include=../../fixed-copies, include=.
プログラムがインクルードを見つけることのできる場所を示す

コンパイル・オプション・ファイルを準備する必要があります。Simple Applicationで使用されるコンパイル・オプションは次のとおりです。

リスト7-7 MFコンパイル・オプションの例
SOURCEFORMAT"FREE"
DEFAULTBYTE"00"
ADDRSV"COMP-6"
COMP-6"2"
ALIGN"8"
NOTRUNCCALLNAME
NOTRUNCCOPY
NOCOPYLBR
COPYEXT"cpy,cbl"
RWHARDPAGE
PERFORM-TYPE"OSVS"
NOOUTDD
INDD
NOTRUNC
HOSTARITHMETIC
NOSPZERO
INTLEVEL"4"
SIGN"EBCDIC"
ASSIGN"EXTERNAL"
NOBOUND
SETTINGS
REPORT-LINE"256"
WARNING"2"
TRACE
LIST()

コンパイル・オプションの詳細は、Oracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドを参照してください。

コンパイル・コマンド

プログラムBATCH/PGMMB00.cblをコンパイルするコマンドは次のとおりです。

リスト7-8 MFコンパイルの例
# From $PROJECT/trf/BATCH 
cd $PROJECT/trf/BATCH
export COBCPY=../DML:../Master-copy/COPY:../fixed-copy:.
export PCCINCLUDE="include=../Master-copy/COPY, include=../fixed-copies, include=."
cob -ug PGMMB00.cbl -C "use(../../compil_tools/opt.dir)" -C "list(PGMMB00.lst)" -C XREF -C SETTINGS 2> PGMMB00.err

説明:

注意: プログラムをコンパイルする最良の方法は、コンパイルmakefileを使用する方法です。コンパイル・オプションおよび必要な構成を設定し、これらの操作に設計されたmakeツールを使用して、コンパイル手順を実行できます。

Simple Applicationの例の場合、他のプロジェクトに使用できるコンパイルmakefileがあります。「Makeファイルの使用」を参照してください。

 


Makeファイルの使用

構成

Simple Applicationの例とともに提供されるmakefileは、すべての変換操作を実装しており、次を適用することで他のプロジェクトでも使用できます。

この構成は、カタログ化の手順で開始された先行する構成に追加するものです。

makeコマンドを使用する前に、ユーザーはSimple Applicationで提供されたversion.mkの値をチェックする必要があります。

リスト7-9 version.mkの例
#
# Defined extensions converted files
#
ext_trad = cbl
ext_trad_copy = cpy
ext_trad_ksh = ksh
ext_trad_map = bms
#
# Define Version variables
# Information
# with GLOBAL_VERSION=CURRENT all -v option in the makefile are ignored
#
GLOBAL_VERSION = M2_L3_5
CATALOG = $(GLOBAL_VERSION)
TRAD = $(GLOBAL_VERSION)
TRAD_JCLZ = $(GLOBAL_VERSION)
DATA_TOOLS = $(GLOBAL_VERSION)
RECONCIL_COPY = $(GLOBAL_VERSION)
TIMEOUT = 900
TIMEOUT_PARSE = 300
#
# Define Config and opt files 
#
FILE_TRAD_JCL = "$(PARAM)/config-trad-JCL.desc"
FILE_TRAD_COBOL = "$(PARAM)/config-cobol"
COMM_TRADJCL = "-c $(FILE_TRAD_JCL)"
COMM_RECONCIL_COPY = "reconcil-copy-opt-imbr"

COBOL変換

COBOL変換を実行するには次のコマンドを$SOURCE:から実行します。

コピーブックの調整

コピーブックを調整するには次のコマンドを$SOURCEから呼び出します。

make reconcil_copy

 


COBOLコンバータのトラブルシューティング

変換中にエラー・メッセージが発生したり、COBOLコンバータが異常終了することがあります。エラーの発生時に続行する方法の例として、特定のエラーを次に示します。

構成ファイルが存在しない

特に変換プロセスの最初で、構成ファイルが欠落している可能性があり、次のエラーを表示してCOBOLコンバータが異常終了することがあります。

メッセージ

Parsing config /home2/wkb7/simpleapp/param/config-cobol...
*FATAL*: Hexa-map-file: this file '/home2/wkb7/simpleapp/param/tr-hexa.map' does not exist
Error: Uncaught throw of :MESSAGE-ERROR to :MESSAGE-ERROR.
  1 (abort) Quit process.
Type :b for backtrace, :c <option number> to proceed,  or :? for other options

解決策

欠落している構成ファイルを追加するか、リクエストされたファイル(この例ではtr-hexa.map)が不要な場合はメイン構成ファイルのその行を無効にします。

POBファイルの欠落

メッセージ

Parsing config /home2/wkb7/simpleapp/param/config-cobol...
Creating target file /home2/wkb7/simpleapp/trf/CICS/PGMM002.cbl ...
*FATAL INTERNAL ERROR*: Can't find POB file /home2/wkb7/simpleapp/source/CICS/pob/PGMM002.cbl.pob; please re-catalog the system.
FIN
Rest in peace, Refine...

解決策

プログラムがまだカタログ化されていないか、または.pobファイルが誤って削除されました。再カタログ化してリクエストされたファイルを生成します。

POBファイルが古すぎる

メッセージ

Creating target file /home2/wkb7/simpleapp/trf/CICS/PGMM002.cbl ...
*FATAL INTERNAL ERROR*: POB file /home2/wkb7/simpleapp/source/CICS/pob/PGMM002.cbl.pob is less recent than source file /home2/wkb7/simpleapp/source/CICS/PGMM002.cbl; please re-catalog the system.

解決策

このエラーは、ソース・プログラムの変更日がその対応するPOBファイルよりも最近である場合に発生します。POBファイルが生成された後でソース・プログラムが更新されることがあるので、プログラムを再カタログ化して最新の変更が含まれていることを確認します。

解析エラーの発生

解析エラーを含むプログラム、特にカタログ化中に致命的なエラーが発生したプログラムは変換されません。一般的にCOBOLコンバータは重大度がFATALよりも下のエラーを含むプログラムは変換されます。

メッセージ

Program name is PGMM002
Warning:-- Parse-Error at line 163
*FATAL*: file CICS/PGMM002.cbl contains true parse errors, ABORTING!
FIN
Rest in peace, Refine...

解決策

プログラムのソース・コードをチェックしてエラーを修正し、プログラムをカタログ化して再度変換します。

解析エラーの詳細は、カタログ化レポートおよびログで参照できます。原則として、カタログ化手順中に特定されたエラーを修正する前に、変換作業を開始しないでください。

関連項目


  先頭に戻る       前  次