リソースの移行

本書では、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.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$
  1. mscasmc、mscadjustツールについての詳細は、OpenFrame OSC『ツールリファレンスガイド』を参照してください。

  2. マップのコンパイルとデプロイについての詳細は、OpenFrame OSC『マッピングサポートガイド』を参照してください。

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
  1. oscdct2rd、oscjct2rd、oscsdgenツールについての詳細は、OpenFrame OSC『ツールリファレンスガイド』を参照してください。

  2. OSCでサポートするリソースのフィールド属性については、OpenFrame OSC『リソース定義ガイド』を参照してください。

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)