リソース・マイグレーション

本章では、PSAMフォーマット定義、AIMシステム定義、XSPまたはMSP JCLなどのリソースをマイグレーションする方法について説明します。

1. EBCDICからASCIIへの変換

OpenFrameマイグレーション・プロセスはリソースの種類によって異なりますが、メインフレームのEBCDIC文字コードで作成されたリソースをOpenFrameで使用できるASCII文字コードのリソースに変換する作業は、すべてのマイグレーション・プロセスにおいて共通して必要です。メインフレームの基本文字セットとオープン環境の文字セットが異なるため文字コードの変換が必要であり、リホストのマイグレーション・プロセスにおいては欠かせない作業です。

本節では、メインフレーム・システムでユーザーが作成したJCL、ADL、COBOLなどのソースコードを、EBCDICからASCII文字コードに変換する方法を説明します。

EBCDICからASCIIへの変換プロセスは、すべてのリソースのマイグレーションにおいて共通のプロセスですが、変換時に指定するオプションや変換後のリソースのインポート作業はリソースのタイプによって異なります。

  • 変換方法

    テキスト・データを含む非VSAMデータセットのレコードは、1つのEBCDIC文字列フィールドで構成されているといえるため、別途の変換スキーマ(変換作業に必要なレコード構造の情報)は不要です。つまり、各レコードに対してEBCDICデータをASCIIデータに変換するだけで十分です。OpenFrameのdsmiginツールを使って、このような変換作業が行えます。

    EBCDIC(JEF)文字コードを使用するメインフレームにおいて、固定長80バイト構造で作成されたEBCFILEという名前のファイルをASCIIテキスト・ファイルのASCFILEに変換し、変換後に不要となるSOSI文字を空白文字(white space)で代替します。また、固定長で区分されるEBCFILEの各レコードを、各行が改行文字(newline)で区分されるASCIIテキスト・ファイルに変換する場合は、以下のようなオプションを指定して処理します。

    JCL、ADL、COBOLなどのテキストで構成されたソース・ファイルをマイグレーションするときに主に使用されるdsmiginツールの使用方法は、以下のとおりです。

    $ dsmigin EBCFILE ASCFILE -e JAK -l 80 -sosi 2 -C -S -n

    以下は、dsmiginオプションに関する説明です。

    オプション 説明

    –e、--encoding

    変換するEBCDICデータ・ファイルの言語を指定します。

    (US、KR、JP、JAKをサポート)

    –l、--lrecl

    変換するEBCDICデータ・ファイルが固定長レコード形式である場合、1レコードのサイズを指定します。

    –sosi、--sosi-type

    変換するEBCDICデータ・ファイルに存在するSOSI文字の処理オプションを指定します。ASCII文字コードで変換後のレコード長の変更などを避けるために空白で置き換えるか、削除するなどの詳細オプションを指定することができます。

    –C、--convert-only

    リソースの変換のみを行うオプションです。EBCDICデータ・ファイルをASCIIデータ・ファイルに変換するだけで、OpenFrameのデータセットは作成しません。

    このオプションを指定しない場合、変換作業の結果ファイルはOpenFrameデータセットとして作成されます。オプションを指定した場合は、単にOSファイルとして作成されます。

    したがって、--convert-onlyオプションは、最終的なリソース・マイグレーションの前にテスト目的で使用するか、変換結果ファイルに対して追加的なマイグレーション・ツールを実行する必要がある場合に、中間結果物を取得するために利用できます。

    –S、--source

    EBCDIC文字コードのシステムにおいてテキストで作成された様々なリソースを、ASCII文字コードのテキストに変換することができます。

    変換するEBCDICデータ・ファイルが単純な構造のテキスト・ファイル(ソースコードなど)である場合に使用します。つまり、ソース・データ・ファイルのレコードが1つのテキスト・フィールドで構成されていると仮定して、EBCDIC→ASCIIの変換のみ実行されます。フィールド・タイプ別のバイナリー・データは考慮されません。

    –n、--newline

    変換結果レコードの区切り文字として改行文字(Newline)を使用します。

dsmiginツールでサポートする多様なオプションについては、OpenFrame Base『ツールリファレンスガイド』を参照してください。

  • 変換例

    以下は、COBOLコピーブック・ファイルを変換する例です。

    $ dsmigin SAMPCPY SAMPCPY.cpy -e JAK -l 80 -S -C -sosi 7
    130856 M MIG0001M =====< DSMIGIN START >=====
    source file : SAMPCPY
    dataset name: SAMPCPY.cpy
    member name :
    unit:
    volume:
    schema file  :
    encoding type: JAK
    record length: 80
    record format: L
    dsorg:
    delimiter:
    
    
    DSMIGIN: (record count = 16, conversion error count = 0)
    130856 M MIG0002M =====< DSMIGIN FINISH >====

    以下は、変換前のファイルの内容です。EBCDIC(JEF)コードで作成されているため、正常に出力されていません。

    <SAMPCPY>

    \@@@@@@@テヨラ錙簔ヤラモナ@@@@@@モナ蠻モ~@@@@トチ翡~KK@@@@@@@@@@@@
    \`````````````````````````````````````````````````````````@@@@@@@@
    @@@@@@(サ睥セ・ォ・ハ)@@@@@@@@@ラノテ@蹼]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@(サ睥セエチサ・@@@@@@@@@ラノテ@ユM]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@(タクヌッキ鏆・K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ヌッケ・@@@@@@@@@ラノテ@蹼]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ヌッ)@@@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(キ・@@@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ニ・@@@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@(タュハフ)@@@@@@@@@@@@@ラノテ@蹼]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@(スサス・ウ。シ・ノ)K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ケサイシ・ウ。シ・ノ)@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(マ「ネヨ)@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@(ヘケハリネヨケ・K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ヒワネヨ)@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@(ザネヨ)@@@@@@@@@ラノテ@]K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    以下は、変換後のファイルの内容です。ASCII(Shift-JIS)コードに変換され、正常に出力されています。

    <SAMPCPY.cpy>

    000100*       COPY SAMPLE00      LEVEL=1     DATE=2012.11.12            00010000
    000200*---------------------------------------------------------        00020000
    000300     03 氏名カナ         PIC X(40).                               00030000
    000400     03 氏名漢字         PIC N(50).                               00040000
    000500     03 生年月日.                                                 00050000
    000600         05 年号         PIC X(01).                               00060000
    000700         05 年           PIC 9(02).                               00070000
    000800         05 月           PIC 9(02).                               00080000
    000900         05 日           PIC 9(02).                               00090000
    001000     03 性別             PIC X(01).                               00100000
    001100     03 住所コード.                                               00110000
    001200         05 校下コード   PIC 9(04).                               00120000
    001300         05 連番         PIC 9(02).                               00130000
    001400     03 郵便番号.                                                 00140000
    001500         05 本番         PIC 9(03).                               00150000
    001600         05 枝番         PIC 9(04).                               00160000

2. PSAMフォーマット定義のマイグレーション

AIMアプリケーション・プログラムはPSAMを利用して端末にデータを入出力することができますが、PSAMフォーマット定義は、画面上に表現される情報の位置と属性を定義するマークアップ(mark up)といえます。PSAMを使用するAIMアプリケーション・プログラムをOpenFrame AIM環境にマイグレーションするときは、アプリケーション・プログラムのソース・プログラム以外にPSAMフォーマット定義情報を同時にマイグレーションする必要があります。

  • 変換方法

    メインフレームのEBCDICで作成されたPSAMフォーマット定義ファイルを取得し、dsmiginを使用してASCIIファイルに変換します。PSAMフォーマット定義はEBCDICテキスト・ファイルなので、dsmiginツールの--sourceオプションを使って変換します。

  • 変換例

    以下は、ASCIIに変換されたPSAMフォーマット定義の例です。

    <PSAMLOGO.fmt>

    PSAMLOGO FID     TYPE=DSP
    TEST0000 RECORD  TYPE=IN
    @I000001 DATA    NAME=AID01   USAGE=AID
    @I000002 DATA    NAME=LOGON   USAGE=CTRL1 PIC=(X,30)
    TEST0001 RECORD
    @O000001 DATA    NAME=SYMD-01 USAGE=CTRL1 PIC=(X,60)
             DEVICE  DVK=DP10
             FRAME
             PART    SIZE=(24,80)
             FIELD   POS=(17,38)  ATTR=OUL
                     VALUE='COPYRIGHT 2000-2006 TMAX SORT CO.,LTD.'
             FIELD   POS=(20,24)  ATTR=OUL VALUE='LOGON COMMAND   :'
             FIELD   POS=(20,44)  ATTR=(IUL CUR) DATAIN=@I000002
             FIELD   POS=(2,2)    ATTR=(OUL RED) VALUE=@O000001
             END

    以下は、jybfg000を使用してPSAMフォーマット定義をコンパイルする例です。-p (preview)オプションを指定して、処理するPSAMフォーマットの内容を確認できます。

    $ jybfg000 -p PSAMLOGO.fmt
    
    * preview : ---------------------------------------------------------------(begin)-
       MAP : [PSAMLOGO]
       123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
       ------------------------------------------------------------------------------>S
    01|
    02|@____________________________________________________________
    03|
    04|
    05|
    06|
    07|
    08|
    09|
    10|
    11|
    12|
    13|
    14|
    15|
    16|
    17|                                    @COPYRIGHT 2000-2006 TMAX SORT CO.,LTD.
    18|
    19|
    20|                      @LOGON COMMAND   :  @______________________________@
    21|
    22|
    23|
    24|
       ------------------------------------------------------------------------------<E
    * ---------------------------------------------------------------------------(end)-
    
    *  copybook :
      [/home/o5aim/cobcpy/mapcpy/TEST0000.cbl] create.
      [/home/o5aim/cobcpy/mapcpy/TEST0001.cbl] create.
    
    *  binary image :
      [/home/o5aim/psambin/PSAMLOGO.BIN] create.
  1. jybfg000ツールルの詳細については、OpenFrame AIM『ツールリファレンスガイド』を参照してください。

  2. PSAMフォーマット定義のコンパイルおよびデプロイについての詳細は、OpenFrame AIM『管理者ガイド』を参照してください。

3. AIM定義リソース(ADL)のマイグレーション

OpenFrame AIMシステムは、富士通メインフレームのAIMシステムで提供していた多様な機能をサポートします。

富士通メインフレームのAIMシステムと同様、OpenFrame AIMシステムでもAIM記述言語であるADL(AIM Description Language)を使用してシステムで使われる様々なリソースと環境を定義します。AIMシステムを定義するためにADLで記述されたリソースをAIM定義リソースといいます。

AIMではADLを使用して、業務システムを構成する多様な構成要素とリソースなどの動作環境を定義します。ADLは、定義する対象の種類別に以下のような構文で構成されます。

  • AIMシステム環境の定義 : SIS、APG、SG

  • AIMオンライン環境の定義 : DCMS、WORKSTATION、DTPF、LD、PROCEDURE

  • AIMアプリケーション・プログラム環境の定義 : PED、MQN

  • AIMデータセットの定義 : SCHEMA(DS)、SCHEMA(VSAM)

  • AIM NDBデータベースの定義 : SCHEMA(DB)、XIFSCHEMA、SUBSCHEMA

AIM定義リソースのうち、AIM NDBデータベース定義以外のリソースは、jxdddms ツールでOpenFrame/AIM環境にインポートします。jxdddmsは指定したADLの構文を分析し、OpenFrame AIMの内部構造に変換してOpenframe/AIMシステム・テーブルに保存します。

AIM定義リソースのうち、AIM NDBデータベース定義リソースは、ndbadlgen ツールでOpenFrame/NDB環境にインポートします。ndbadlgenは指定したADLの構文を分析し、OpenFrame NDBの内部構造に変換してOpenFrame/NDBシステム・テーブルに保存します。

  • 変換方法

    メインフレームのEBCDICで作成されたADLリソース・ファイルを、dsmiginツールを使用してASCIIファイルに変換します。ADLリソースはEBCDICテキスト・ファイルなので、dsmiginツールの--sourceオプションを使って変換します。jxdddmsツールを実行して、ASCIIに変換されたADLリソース・ファイルをOpenFrame/AIM環境にインポートします。

  • 変換例

    以下は、メインフレームのEBCDICで作成されたADLリソースを、dsmiginの--sourceオプションを使ってASCIIに変換した例を示しています。

    <SMPLPED.adl>

      PED NAME IS SMPLPED
      ; ACP NAME IS JXGIJSM.
      AP NAME IS JXGIJSM
      ; TRANSACTION-POINT  IS PROGRAM
      ; I-O ERROR SCHEDULE IS REJECT.
      AP NAME IS JXGIAPM0 OCCURS 1 TIMES
      ; TRANSACTION-POINT  IS SYSTEM
      ; I-O ERROR SCHEDULE IS REJECT.
      MQN NAME IS SMPLMQN FOR DDSMPL.
      END.

    以下は、jxdddmsを使用して上記のSMPLPED.adlをAIMディレクトリにインポートする例です。

    $ jxdddms store -p SMPLPED.adl
    >> [PED :SMPLPED] store done

    個別ADLリソース定義の中には、OpenFrame AIMシステムでサポートしていない構文や属性が含まれている可能性があります。

  1. jxdddmsツールルの詳細については、OpenFrame AIM『ツールリファレンスガイド』の「jxdddms」を参照してください。

  2. OpenFrame AIMでサポートしているADLの構文および属性の詳細は、OpenFrame AIM『リソースガイド』を参照してください。

4. JCLのマイグレーション

JCLのマイグレーションは、メインフレームのEBCDICコードで作成されたJCLファイルをOpenFrameで使用できるASCIIコードに変換する作業です。

  • 変換方法

    JCLファイルは他のリソース・マイグレーションと同様、dsmiginツールの--sourceオプションを使ってASCIIファイルに変換できます。ASCIIに変換されたJCLファイルは、pdsgenツールで作成したPDSデータセットのJCLLIBにインポートします。

4.1. ユーティリティの連携

OpenFrameはメインフレームのJCLと同じ文法を使用するため、EBCDICからASCIIに変換すること以外に追加的に必要なマイグレーション作業はありません。JCLのマイグレーションにおいて注意することは、JCLそのものの変換ではなく、JCLで呼び出して使用するユーティリティのうち、OpenFrameで提供していないユーティリティやサード・パーティー・ユーティリティがないかをマイグレーション作業の初期に確認することが重要です。

標準ユーティリティのうち、OpenFrameで対応するユーティリティを提供しない場合は、OpenFrameが動作するオープン環境では不要なユーティリティである可能性があります。ただし、必要と判断される場合には、TmaxSoftにユーティリティの実装および提供をリクエストしてください。

一部のサード・パーティー・ユーティリティの場合、オープン環境のUNIXシステム用の製品がある場合でも、メインフレームとUNIXシステムの違いによって、JCLに記述されているSYSINやパラメータの送信方法が異なり、一部のJCLを修正する必要があることもあります。

JCLで呼び出すプログラムのほとんどは、COBOLなどで作成したアプリケーションです。これらのプログラムは、アプリケーション・マイグレーションで説明するプロセスに従って、アプリケーション・プログラムをコンパイルして使用します。

以下は、OpenFrame Batch for XSPおよびMSPとOpenFrame AIMで提供しているユーティリティ・プログラムの一覧です。

  • データセット管理ユーティリティ

    ユーティリティ 説明

    CTFE

    カタログ編集を行います。(XSP)

    FCHK

    直接アクセス・ボリュームに存在するすべてのファイルの属性を印刷します。(XSP)

    FCPY

    直接アクセス・ボリューム、または磁気テープ・ボリュームのファイルをコピーします。(XSP)

    FDLT

    直接アクセス・ボリュームに存在するファイルを削除します。(XSP)

    FDMP

    直接アクセス・ボリューム、または磁気テープ・ボリュームに存在するファイルの内容を編集し、印刷するファイルをダンプします。(XSP)

    GDGM

    システム/マスター・カタログに登録されているGDGのGDSを管理します。(XSP)

    ISFG

    一般の非VSAMファイルを使用して、直接アクセス・ボリュームに存在する索引ファイルを作成します。(XSP)

    JSDGENER

    順次データセットまたはPDSのメンバーをコピーする場合に使用します。(MSP)

    JSGPROGM

    非VSAMデータセットの管理に使用します。(MSP)

    KBKARCS

    BACKUPコマンドとRESTOREコマンドを使用して、主に自然災害によるシステム破損への対応や重要なデータの保護といった目的のためにデータセットやボリュームのバックアップおよびリカバリ機能をサポートします。(XSP、MSP)

    KQCAMS

    VSAMおよび非VSAMデータセットとカタログ情報を管理します。(XSP、MSP)

  • データセット処理ユーティリティ

    ユーティリティ 説明

    ADAPT

    簡単なスクリプトを使ってデータセットの内容を変更・操作できるユーティリティです。(XSP、MSP)

    DFSORT

    データセットをソート、マージして出力データセットに結果を保存します。(XSP、MSP)

    ICETOOL

    SORTユーティリティ・プログラムを利用して、1つのジョブ・ステップで複数のデータセットを様々な方法で出力するために使用します。(MSP)

    EZTPA00

    レポートを作成するためのユーティリティです。(XSP、MSP)

  • OpenFrame AIMユーティリティ

    ユーティリティ 説明

    JXGIJSM

    OpenFrame AIMでACP機能を提供するユーティリティです。(XSP、MSP)

    JYQDDUTY

    データベースの作成、削除などのデータセットの内容をデータベースにロード、アンロードします。(XSP)

    OSAMFRUN

    JCLでCOBOLプログラム・モジュールが実行されるときに内部で実行されるユーティリティです。バッチとオンラインの両方で同様に動作します。(XSP、MSP)

  • OpenFrame NDBユーティリティ

    ユーティリティ 説明

    JXKUNLOD

    データベースを読み込んで、データセット・ファイルの形式で抽出します。(XSP、MSP)

    JXKRELOD

    JXKUNLODユーティリティで作成された結果ファイルをNDBにインポートします。(XSP、MSP)

    JXKSORT

    AIM DBメンテナンス・ユーティリティで作成した中間結果をソートします。(XSP、MSP)

  • その他のユーティリティ

    ユーティリティ 説明

    DSDIFF

    2つのデータセットの相違点をレコード別に出力します。(XSP、MSP)

    KEQEFT01

    CLISTまたはTSOコマンドを実行します。(XSP、MSP)

    KDJBR14

    JCLに記述されている内容が正常に実行されているかを確認するために使用します。(XSP、MSP)

    LIBE

    直接アクセス・ボリュームのデータセットをコピーします。(XSP)