![]() ![]() ![]() ![]() ![]() ![]() |
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リファレンス・ガイドに記載されています。
Rehosting Workbench COBOLコンバータ・プロセスへの入力は次のとおりです。
変換用のメイン構成ファイルはconfig-COBOL
です。これは次のものを含む他の追加の構成ファイルを参照します。
すべての必要な構成ファイルのサンプルはSimple Applicationにあります。必要に応じて値をチェックおよび適用する必要があります。
COBOLコンバータが使用するすべての構成ファイルは、Oracle Tuxedo Application Rehosting WorkbenchのリファレンスガイドのCOBOLコンバータの章に記載されています。
COBOL変換の前提条件の準備の後、次の例をモデルとして使用して、メイン構成ファイルを準備します。
注意: | 次のファイルが使用できます。 |
post-translation-file
は特定の変換を実行する必要があるときに使用されます。このファイルは手動で作成します。rdbms-conversion-file
はDB2からOracleデータベースへ移行するときに使用されます。このファイルはOracle Tuxedo Application Rehosting Workbench DB2 to Oracleコンバータにより生成されます。Config:
"Config version 1.0"
# sql-rules : none.
/* GENERAL */
target-dir: "../trf/".
keywords-file: "../param/keywords-file".
rename-call-map-file: "../param/rename-call-map-file".
accept-date : MW-DATE.
accept-day : MW-DAY.
# post-translation-file: "../param/renov.desc".
hexa-map-file: "../param/tr-hexa.map".
# rdbms-conversion-file : "dynamic-config/rdbms-conv.txt".
conv-ctrl-list-file : "dynamic-config/Conv-ctrl.txt".
on-size-error-call : "ABORT".
dcrp. /* Without reconcilation of copies files */
end
keywords-fileは、COBOLコンバータがRehosting Workbench COBOLコンバータにより体系的に名前が変更されない可能性のある予約済キーワードを含む特定の変数の名前を変更するのに役立つヒント・ファイルです。
これは変数がMicroFocusまたはCOBOL-ITの予約済キーワードでない場合でも、顧客独自の目的で名前の変更操作(一括変更)を行う、WorkBenchにより提供されるリエンジニアリング・メカニズムです。
次のエントリをメイン構成ファイルconfig-cobolに配置します。
keywords-file: "../param/keywords-file"
( TAB . MW-TAB )
( DOUBLE . MW-DOUBLE )
( POS . MW-POS )
)
この例では、アイテムTABはすべてMW-TABで置換されます。
tr-hexa.map
ファイルはEBCDIC(z/OSのコード・セット)とASCII(Linux/UNIXのコード・セット)16進数値間のマッピング表です。
次のエントリをメイン構成ファイルconfig-cobolに配置します。
hexa-map-file: "../param/tr-hexa.map"
このファイルは、Tr-Hexa-Mapのような変換ルールにより使用され、ソートや文字列の比較で異なる動作を引き起こす可能性のある値および文字列での、EBCDICとASCIIコード間の違いに関係する問題を、ユーザーが解決するのに役立ちます。
このスクリプトは、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
ファイルが生成されます。
z/OSでのスペースの16進数コードは40で、UNIXでのスペースの16進数コードは20です。
01 VarName pic X value X'40'.
*{ Tr-Hexa-Map 1.4.2.1
*01 VarName pic X value X'40'.
*--
01 VarName pic X value X'20'.
*}
00;00
01;01
02;02
03;03
37;04
2d;05
2e;06
2f;07
...
40;20
...
rename-call-map-file
は古いコール名と新しいコール名の間のマッピング・ファイルです。
これはTr-Rename-External-Call
のような変換ルールにより使用され、これによりユーザーは必要に応じて特定の変更を行うことができます。
次のエントリをメイン構成ファイルconfig-cobol
に配置します。
rename-call-map-file: "../param/rename-call-map-file"
(
("MQGET" . "MWMQGET")
("KIX-ABEND" . "KIX_ABEND")
("KIX-ASKTIME" . "KIX_ASKTIME")
)
この例ではMQGET
へのすべてのコールはMWMQGET
に変更されます。
変換コマンドのオプションにより可能になることが多くあります(Oracle Tuxedo Application Rehosting Workbenchリファレンス・ガイドを参照)。この項では、次の例について説明します。
プログラム(バッチおよびCICS)とサブプログラムの区別は必須で、オプション-cobol-type
は次の値をとります。
$REFINEDIR/refine cobol-convert -v version -loop -limit=50 -s $PARAM/system.desc -c $PARAM/config-cobol -cobol-type batch
COBOLコンバータはすべてのコンポーネントを記述したシステム記述ファイルにより、変換するバッチ・プログラムがどれかを認識します。ここでversion
はM2_L5_7
などのリリース・バージョンです。
$REFINEDIR/refine cobol-convert -v version -loop -limit=50 -s $PARAM/system.desc -c $PARAM/config-cobol -cobol-type tpr
PGMM002.cbl
などの、次のコマンドを呼び出す1つのプログラムを変換する場合$REFINEDIR/refine cobol-convert -v version -loop -limit=50 -s $PARAM/system.desc -c $PARAM/config-cobol -cobol-type tpr CICS/PGMM002.cbl
$REFINEDIR/refine cobol-convert -v version -loop -limit=50 -s $PARAM/system.desc -c $PARAM/config-cobol -cobol-type sub
$REFINEDIR/refine cobol-convert -v version -loop -limit=50 -s $PARAM/system.desc -c $PARAM/config-cobol -cobol-type tpr -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ディレクトリ)から実行する必要があります。
for file in `find * -name '*-copies'`
do
$REFINEDIR/scripts/reconcil-copy-opt-imbr $PROJECT/trf $file .cbl
done
空のまたは切り捨てられたプログラムについては、ユーザーは$Logsに生成された実行ログを参照して、変換中に発生したエラーを分析できます。
コンパイルは変換に対する検証手順です。プログラムが正常にコンパイルされない場合は、完全に変換されたと見なすことはできません。
コンパイル環境が次の変数に従い、COBOL MicroFocusまたはCOBOL-ITのコンパイル用に正しく構成されていることをチェックする必要があります。
コンパイル・オプション・ファイルを準備する必要があります。Simple Applicationで使用されるコンパイル・オプションは次のとおりです。
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
をコンパイルするコマンドは次のとおりです。
# 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ファイルの使用」を参照してください。
Simple Applicationの例とともに提供されるmakefileは、すべての変換操作を実装しており、次を適用することで他のプロジェクトでも使用できます。
この構成は、カタログ化の手順で開始された先行する構成に追加するものです。
makeコマンドを使用する前に、ユーザーはSimple Applicationで提供された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変換を実行するには次のコマンドを$SOURCE:
から実行します。
コピーブックを調整するには次のコマンドを$SOURCE
から呼び出します。
make reconcil_copy
変換中にエラー・メッセージが発生したり、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
)が不要な場合はメイン構成ファイルのその行を無効にします。
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
ファイルが誤って削除されました。再カタログ化してリクエストされたファイルを生成します。
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...
プログラムのソース・コードをチェックしてエラーを修正し、プログラムをカタログ化して再度変換します。
解析エラーの詳細は、カタログ化レポートおよびログで参照できます。原則として、カタログ化手順中に特定されたエラーを修正する前に、変換作業を開始しないでください。
![]() ![]() ![]() |