AWS Mainframe Modernization Code Conversion with mLogicaをさわってみた

はじめに

Mainframe Modernization Code Conversion with mLogicaが2024年7月に一般公開されました[1]
サービスの簡単な紹介と、使い方についてコードの分析までの実際の操作をまとめました。

サービスの紹介

AWS Mainframe Modernization Code Conversion with mLogica(以下CCM)は、アセンブリ言語からCOBOLにコードを自動変換するツールです。アセンブリ言語を使用する場合、定型的な処理に対して独自のマクロ命令を作成して開発されているケースも多いかと思われますが、このようなコードにも対応可能です。
また自動変換された後のCOBOLのコードを、Blu Ageを使用してJavaに変換することも可能だということです。

料金

変換料金は1行あたり$2.75です(2025/01/17現在)[2]。自動変換できない箇所やコメント行にも課金されます[3]
また、CodeBuildやS3などのサービスも使用するため、それらの料金も発生します。
分析やマクロ命令の展開までであれば、CodeBuild、S3などの費用はかかりますが、CCMの料金はかかりません。
このサービスは比較的高額なため、実際に変換を行う前に料金についてよくご確認ください。

手順

CCMに関するAWSブログ[4]をベースに実施しました。

1. アセットの共有

Mainframe Modernizationのコンソール画面に移動します。
左側のナビゲーションペインから「ツール」を選択します。

ツールの中からCCMを探し、「AWSアカウントとアセットを共有する」をクリックします。クリックすると右側の画像のようになります。

2. スタックの作成

AWSブログ記事内にある「Launch Stack」ボタンをクリックすると、CloudFormationのスタックのクイック作成画面が開きます。

画面下部にあるチェックボックスにチェックを入れてスタックを作成します。

(この記事を見つける前に手動でマネコンぽちぽちして作成してみたことがありましたが、CodeBuildをミスなく設定するのはなかなか大変でした……。IaCバンザイ!)

3. CodeBuildの実行

CodeBuildのコンソール画面に移動し、左側のナビゲーションペインから「ビルドプロジェクト」を選択します。
実行したいプロジェクトのラジオボタンを選択し、「ビルドを開始」>「今すぐ始める」をクリックすると実行することができます。

3-1. S3バケットにフォルダを作成する

1-awsm2ccm-define-projectを実行します。S3内に以降のステップで使用するフォルダ構成が作成されます。
S3のコンソール画面に移動し、bucket-project-awsm2ccm-workshopXXXXXXXXXXXXを開くと、「CODEBUILD-LOGS/」と「prj_codebuild_01/」というフォルダが作成されています。

「prj_codebuild_01/」内に分析したいソースコードやマクロを配置して、以降のステップに進みます。
今回はデフォルトで配置されているサンプルを使用します。
分析に使用するサンプルの内容は、「macrolib/」内のマクロMACRO1.macと、「srclib/」内のソースコードSQtest01.asm、SQtest02.asmをダウンロードしてご確認いただけます。

「prj_codebuild_01/」内の詳細はユーザーガイド[5]を参照してください。

3-2. コードを分析する

2-awsm2ccm-analysisを実行します。完了するとS3バケットに分析レポートが格納されます。
「ARTIFACTS/prj_codebuild_01/_Reports/」内のAWSM2CCM-Analysis-Report-XXXXXXXX.pdfをダウンロードして内容を確認します。

サンプルコードはすべて自動変換可能という結果でした。

3-3. マクロ命令を展開する

AIF命令やAGO命令など、条件分岐絡みの処理は自動変換ができない場合があるようです。
自動変換できない箇所がある場合、マクロ命令を展開することで自動変換できるようになる可能性があります。
3-awsm2ccm-expand-macrosを実行するとマクロ命令を展開できます。
今回はすべて変換可能だったため、このステップは実施しませんでした。
実施手順の詳細はAWSブログ記事「Step 3: Run the Assembler macros expansion」をご確認ください。
※マクロ命令を展開するとコードの行数が増加するため、変換時の料金が増加します。展開しなくても自動変換できる場合は、展開しない方がコスト最適です。

3-4. アセンブリ言語からCOBOLへ変換する

CCMの料金は比較的高額です。実行前に必ず料金体系をご確認ください。
4-awsm2ccm-convertを実行すると、実際にコードが変換されます。
今回は予算の都合上実施しませんでした。

おわりに

メインフレームのアプリケーションの中には、COBOL以外にアセンブリ言語が含まれているケースがあり、そのような場合の移行が難しいことがあります。
CCMはユーザー独自に作成したマクロ命令の変換にも対応しているため、非常に有用だと感じました。
このサービスを活用することで、アセンブラ資産を自動的に高水準言語に変換でき、保守性を高められると考えられます。

参考リンク:
[1]AWS Mainframe Modernization Code Conversion with mLogica is now generally available
[2]AWS Mainframe Modernization Pricing
[3]Understand Code conversion billing for Assembler conversion
[4]Unlocking new potential: Transform your Assembler programs to COBOL with AWS Mainframe Modernization
[5]チュートリアル: AWS Mainframe Modernization でコードを Assembler から COBOL に変換する

投稿者プロフィール

n_sato