リソースの移行
本書では、CICSマップ、CICSリソース、JCLを移行する方法について説明します。
1. EBCDICからASCIIへの変換
OpenFrame移行では、EBCDICコードのリソースをASCIIコードのリソースに変換する処理は、すべてのリソースの移行手順で共通して適用されます。
コードの変換は、メインフレームの文字セットとオープン環境の文字セットが異なるために必要であり、移行プロセスで重要な作業です。
本節では、ユーザーが作成したCOBOLソースなどをEBCDICからASCIIにコード変換する方法について説明します。
実際の移行では、各リソースに応じてEBCDICからASCIIへの変換方法が異なります。 |
1.1. 変換方法
EBCDICデータをASCIIデータに変換する方法はリソースに応じて異なります。非VSAMデータセットは、EBCDICデータをASCIIデータに変換するプロセスが特になく、dsmiginツールによって内部的に変換が実行されます。
dsmiginツールのconvert-onlyオプションを使用すると、EBCDICデータからASCIIデータへの変換のみを行います。また、dsmiginツールの—sourceオプションを指定して、さまざまなリソースのEBCDICデータをASCIIデータに変換することができますが、主にアプリケーションのテキスト・ソース・ファイルのEBCDICデータをASCIIデータに変換する際に使用します。
以下は、ソース・ファイルに使用できるdsmiginツールの例です。SRCFILEを80バイトを1行として認識してASCIIに変換するとき、ソース・ファイルのEBCDIC文字がIBM290を使用していることを考慮して変換します。変換後に不要になったSOSI文字の位置を空白にし、変換された行単位でCONVFILEを作成します。行を区切るときは、改行文字を使用します。
$ dsmigin SRCFILE CONVFILE -e JP -l 80 -sosi 2 -C -S -n
以下は、上記で使用された各オプションについての説明です。
オプション | 説明 |
---|---|
–e |
変換するソース・データセットの言語を選択します。(JP、US、KR、JAKをサポート) |
–l |
変換するソース・データセットが固定長レコード・フォーマットの場合、1行のサイズを指定します。 |
–sosi |
変換後のSOSI文字の処理オプションです。 |
–C |
EBCDICデータのASCIIデータへの変換のみを行う場合に使用します。 |
–S |
変換するEBCDICファイルが一般ソースである場合に使用します。(COBOLの場合は、-cobオプションを使用) |
–n |
変換後、行の区切り文字として改行文字を使用します。 |
dsmiginツールでサポートするオプションについては、OpenFrame Base『ツールリファレンスガイド』を参照してください。 |
以下は、BMSマップ・ファイルを変換する例です。
of1atmaxs4:of1a]$ dsmigin MSCMAP01 MSCMAP01.map -e JP -l 80 -sosi 2 -S -n >> M 2019-03-17 17:27:57 [026595:dsmigin_main.c:378] (MIG0001M) =====< DSMIGIN START >===== source file : MSCMAP01 dataset name: MSCMAP01.map member name : unit: volume: schema file : encoding type: JP record length: 80 record format: L dsorg: delimiter: DSMIGIN: (record count = 158) >> M 2019-03-17 17:27:58 [026595:dsmigin_main.c:1255] (MIG0002M) =====< DSMIGIN FINISH >====
変換前のコードは以下のとおりです。
-
<MSCMAP01>
. . . AÆEOAÆ@×Oa~Mðoko÷]kOAOCaE~ðokAaaUA~AaOE×@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@AÆEOAÆ@×Oa~Mðokoo]kOAOCaE~ðn@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@NOððð÷@@@AÆEOAÆ@×Oa~Mðokðo]kOAOCaE~ðokAaaUA~AaOE ×@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NOðððø@@@AÆEOAÆ@×Oa~Mðokðo]kOAOC aE~ookAaaUA~AaOE×k×a~ø@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AÆEOAÆ@×Oa~ Mðokou]kOAOCaE~ðokAaaUA~MAaOE×kAUa]k@@@@@@@@@@@@@@@c@@@@@@@@@@@@@@@@@@@ @@@@×a~økEOEaEAO~}BO}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NOð ððu@@@AÆEOAÆ@×Oa~Mðokoo]kOAOCaE~ðokAaaUA~AaOE×@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@NOððnð@@@AÆEOAÆ@×Oa~Mðokoo]kOAOCaE~ookAaaUA~AaOE×k×a~ø @@@@@@@@@@@@@@@@@@@@@@@@@@NOððnn@@@AÆEOAÆ@×Oa~Mðokðo]kOAOCaE~ðokAaaUA~ AaOE×@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NOððno@@@AÆEOAÆ@×Oa~Mðokðo]kOAOCaE ~ookAaaUA~AaOE×k×a~ø@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AÆEOAÆ@×Oa~ Mðokou]kOAOCaE~ðokAaaUA~MAaOE×kAUa]k@@@@@@@@@@@@@@@c@@@@@@@@@@@@@@@@@@@ @@@@×a~økEOEaEAO~}BO}@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@NOð ðno@@@AÆEOAÆ@×Oa~Mðokoo]kOAOCaE~ðokAaaUA~AaOE×@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@NOððno@@@AÆEOAÆ@×Oa~Mðokoo]kOAOCaE~ookAaaUA~AaOE×k×a~ø . . .
変換後のコードは以下のとおりです。
-
<MSCMAP01.map>
BGLOGO DFHMSD TYPE=&SYSPARM, X LANG=COBOL, X MODE=INOUT, X CTRL=FREEKB, X STORAGE=AUTO, X TIOAPFX=YES * BGLOGO DFHMDI SIZE=(24,80),LINE=1,COLUMN=1 * DFHMDF POS=(2,2),LENGTH=37,ATTRB=(NORM,PROT), X HILIGHT=BLINK, X INITIAL='*** WELCOME TO OPENFRAME ONLINE ***' DFHMDF POS=(5,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL=' ***** /****** /*******/** /**/*******/******X /*** /**/**/**/*******' DFHMDF POS=(6,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/*******/*******/*******/*** /**/*******/******X * /***** /********/*******' DFHMDF POS=(7,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/**///**/**///**/**//////*** /**/**//////**///*X */**///**/********/**/////' DFHMDF POS=(8,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/** /**/** /**/** /****/**/** /** /*X */** /**/**/**/**/** ' DFHMDF POS=(9,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/** /**/*******/*******/*******/*******/******X */*******/**/**/**/*******' DFHMDF POS=(10,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/** /**/******//*******/*******/*******/******X //*******/**/**/**/*******' DFHMDF POS=(11,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/** /**/**//// /**//////**/****/**//////**///*X */**///**/**/**/**/**/////' DFHMDF POS=(12,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/** /**/** /** /** /***/** /** /*X */** /**/**/**/**/** ' DFHMDF POS=(13,3),LENGTH=73,ATTRB=(BRT,PROT), X COLOR=YELLOW, X INITIAL='/*******/** /*******/** /***/** /** /*X */** /**/**/**/**/*******'
2. CICSマップの移行
CICSのBMS機能を使用するCICSアプリケーション・プログラムをOSCシステムに移行する際には、CICSアプリケーション・プログラムで使用するマップ情報を一緒に移行する必要があります。
OSCシステムでは、CICSのマップ実行ファイルをそのまま使用できないため、マップ・ソースコードをEBCDICからASCIIに変換した後、OSCシステムで提供するコンパイラーを使用してコンパイルする必要があります。
マップ・ソースコードをEBCDICからASCIIにコード変換する方法は、他のリソース・コードの変換方法と同じです。ただし、EBCDICのホスト・マップ・ファイルに1バイト文字以外に日本語などの2バイト・データが混在し、マップのフィールド定義にプログラムされたシンボル関連項目(PS=X’F8’など)が設定されている場合は、dsmiginツールによる変換が正常に実行されない場合があります。これは、dsmiginツールがBMSマップ・マクロ文法のPS項目を認識できず、このフィールドを適切に変換できないためです。
この問題を解決するためにOSCシステムでは、mscadjustツールを提供しています。このツールは、EBCDICで作成されたソース・マップ・ファイルとASCIIに変換されたマップ・ファイルをmscasmcツールで前処理した2つの結果ファイルを入力として受け、dsmiginによって正常に変換されない可能性のあるフィールドを見つけ出してユーザーに通知します。ユーザーはそのフィールドを2バイト・コードとして変換するか、1バイト・コードとして変換するかを選択できます。
以下は、mscadjustツールを使用してマップを変換する例です。
$ mscadjust -o OUTPUT.adj NA810SM NA810SM.map.atm
[MSCADJUST] input ascii code map : NA810SM.map.atm
[MSCADJUST] input ebcdic code map : NA810SM
* before: [.*.* ...|D.. ....X .(...7.....) *.* ]
* after: [** 外注訂正 店指定 (入力画面) ** ]
* do you want to change? (Yes:(Enter/Y/y), No:(N/n))Y
---------------------------------------------------
* before: [....]
* after: [法人]
* do you want to change? (Yes:(Enter/Y/y), No:(N/n))
---------------------------------------------------
* before: [...>]
* after: [店№]
* do you want to change? (Yes:(Enter/Y/y), No:(N/n))
---------------------------------------------------
* before: [ . ..... .R(..> ]
* after: [ 区 発注日 伝票№ ]
* do you want to change? (Yes:(Enter/Y/y), No:(N/n))
---------------------------------------------------
* before: [ ..... ......3 ]
* after: [ 取引先 取引先名 ]
* do you want to change? (Yes:(Enter/Y/y), No:(N/n))
$
mscadjustによって変更されたマップ・コードは、mscmapcツールを介してコンパイルした後デプロイします。
以下は、mscmapcを使用してマップをコンパイルする例です。
$ mscmapc OUTPUT.adj
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
* input map : OUTPUT.map
* copybook :
[/home/oframe/OpenFrame/osc/map/symbolic/NAMS/NA810SM.cpy] create.
* binary image :
[/home/oframe/OpenFrame/osc/map/physical/NAMS_NA810SM_CS.csym] create.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$
|
3. CICSリソースの移行
CICSが提供するシステム・リソースを使用するCICSアプリケーションが正常に動作するには、必要なリソース定義をCICSシステムに設定する必要があります。また、CICSアプリケーションがOSCシステムに移行された後、正常に動作するには、CICSシステムで使用するリソース定義をOSCシステムに移行する必要があります。
OSCシステムで使用できるCICSシステムのリソース定義には、CONNECTION、FILE、JOURNALMODEL、PROGRAM、TDQUEUE、TERMINAL、TRANSACTION、TSMODEL、TYPETERMがあります。これらのリソースをOSCシステムで使用するには、CICSシステムからリソース定義を取得した後、そのリソース定義情報をoscsdgenツールを使用してOSCシステムのOSC SDデータセットに登録します。
旧バージョンのCICSシステムでは、リソース定義の代わりにリソース管理テーブルを使用する場合があります。リソース管理テーブルは、OSCシステムでサポートできるリソース定義に変換するための追加プロセスが必要です。OSCシステムでは、旧バージョンのリソース管理テーブルのDCT(Destination Control Table)とJCT(Journal Control Table)をTDQUEUEとJOURNALMODELに変換するツールを提供しています。
以下は、oscdct2rdツールを使用してDCTをTDQUEUEリソース定義に移行する例です。
oscdct2rd –g OSCGROUP DCT.dat TDQUEUE.dat
以下は、oscjct2rdツールを使用してJCTをJOURNALMODELリソース定義に移行する例です。
oscjct2rd –g OSCGROUP JCT.dat JOURNALMODEL.dat
リソース定義には、OSCシステムでサポートしないか、使用しないフィールドが含まれていることがあります。このようなフィールドは、oscsdgenツールを使用してリソースを登録する際に無視されます。
以下は、resouces.datファイルに保存されているリソース定義をOSC00001リージョンで使用中のOSC SDデータセットに登録する例です。
$ oscsdgen -r OSC00001 resources.dat
|
4. JCLの移行
JCLの移行は、既存のメインフレームのJES環境で実行されていたJCLをダウンロードして、EBCDICコードのJCLソース・ファイルをASCIIコードに変換する処理です。これにより、既存のJCLソースを修正することなく、OpenFrameのTJES環境で実行することができます。
ただし、サード・パーティ・ユーティリティを使用する場合は、メインフレームとUNIXシステムの違いにより、JCLのSYSINまたはパラメータの送信方法が異なるため、サード・パーティ・ユーティリティに合わせてJCLを変換する作業が必要です。また、メインフレームで使用していたユーティリティをOpenFrameで使用できない場合があるため、OpenFrameで同じ機能を提供するユーティリティに変換する必要があります。
本節では、最も多く使用されているDB2ユーティリティの移行について説明します。
4.1. DB2
メインフレームのホストであるDB2は、UNLOAD(DB2に保存されているデータを直列化してファイルに書き出すこと)を実行した後、制御ファイルを作成します。制御ファイルは、UNLOAD処理でダウンロードしたデータやファイルを再びDB2にLOAD(抽出したファイルを復元すること)するときに使用するファイルです。
UNIXシステムで実行されるDB2 HPUもメインフレームと同様にUNLOADの処理後、LOADを実行するときに必要な制御ファイルを作成します。ただし、メインフレームとUNIXは制御ファイルの文法的な違いがあるため、メインフレームで作成された制御ファイルをUNIXシステムのDB2 HPUでは使用できません。そのため、LOAD JCLのSYSINにインストリームで指定されたLOAD制御文を、ASC FROMAT METHODLに変換した後、その制御ファイルをUNIXシステムのDB2 HPUの文法に合わせて変換します。
以下は、メインフレームのDB2 LOAD制御文をUNIX UDB LOAD制御文に変換する例です。
-
変換前
LOAD DATA RESUME YES LOG NO INDON SYSREC00 INTO TABLE LNID2LC0.TLCP0 ( CIJUN_YM POSITION( 1 ) CHAR( 6) , ORG_CD POSITION( 7 ) CHAR( 7) , SNPM_SORT_GB POSITION( 14 ) CHAR( 1) , YUJICHASU POSITION( 15 ) CHAR( 3) , DSBHR_10 POSITION( 18: 25) DECIMAL , YJBHR_10 POSITION( 26: 33) DECIMAL , DSBHR_30 POSITION( 34: 41) DECIMAL , YJBHR_30 POSITION( 42: 49) DECIMAL , DSBHR_60 POSITION( 50: 57) DECIMAL , YJBHR_60 POSITION( 58: 65) DECIMAL , DSBHR_90 POSITION( 66: 73) DECIMAL , YJBHR_90 POSITION( 74: 81) DECIMAL )
-
変換後
LOAD FROM $SYSREC00 OF ASC MODIFIED BY STRIPTBLANKS NULLINDCHAR=? BINARYNUMERICS PACKEDDECIMAL CODEPAGE=970 RECLEN=81 METHOD L ( 1 6, 7 13, 14 14, 15 17, 18 25, 26 33, 34 41, 42 49, 50 57, 58 65, 66 73, 74 81) NULL INDICATORS ( 0,0,0,0,0,0,0,0,0,0,0,0 ) INSERT INTO LNID2LC0.TLCP0 GIJUN_YM, ORG_CD, SNPM_SORT_GB, YUMICHASU, DSBHR_10, YJBHR_10, DSBHR_30, YJBHR_30, DSBHR_60 YJBHR_60 DSBHR_90 YJBHR_90)