Amazon Web Services ブログ
新たな可能性を解き放つ: AWS Mainframe Modernization でアセンブラプログラムを COBOL に変換する
AWS によるメインフレームアプリケーションのモダナイゼーションでは、ワークロードの移行スコープの一部に、アセンブラで実装されたビジネス機能が含まれる場合があります。AWS Mainframe Modernization Code Conversion with mLogica は、アセンブラプログラムとマクロを COBOL プログラムとコピーブックに変換する AWS のクラウドネイティブサービスです。このブログ記事では、変換アプローチとその利点について説明し、アセンブラのコード変換手順を順を追って解説します。
メインフレームのアセンブラコードのモダナイゼーションの必要性
メインフレームの顧客の多くは、中核となるビジネス機能を実行するソフトウェアポートフォリオの一部としてアセンブラプログラムを保有しています。この事実は、銀行、保険、小売、航空会社、自動車、電気通信など、あらゆる業界に影響を及ぼします。mLogica が行った調査では、メインフレーム上のエンタープライズアプリケーションの 66% に何らかのアセンブラコードが組み込まれていると推定されています。アセンブラプログラミング言語は、メインフレームのハードウェアアーキテクチャに特化した低レベルの機械命令で構成されています。過去にお客様がアセンブラで開発してきたのは、主に成熟したアプリケーションで、高いパフォーマンスを必要とする処理でした。
しかし、アセンブラはメンテナンスに費用がかかり、モダンなコーディング標準との整合性が取れていないため、技術的負債の原因にもなります。アセンブラのスキルは急速に低下しており、プログラムの読みやすさ、理解 (コード文書が限られているため)、保守、アップグレードが難しくなっています。さらに、アセンブラプログラムやマクロの多くはオペレーティングシステムと直接やり取りするため、複雑さが増しています。お客様は、アセンブラプログラムを手動で書き換えるリスクを冒さずにこれらの課題を解決できるソリューションを求めています。
メインフレームのワークロードをクラウドにモダナイズするという戦略的目標を掲げているお客様は、運用コストの削減、メインフレームのスキル不足の回避、イノベーションの促進を望んでいます。メインフレームワークロードを AWS に移行する場合、アセンブラコードは複雑でスキルが必要なため、大きな課題となります。アセンブラプログラムを手動で書き直す方法はスケールできず、レアな専門的スキルを必要とし、全体的な移行スケジュールの遅延に繋がります。アセンブラプログラムとマクロをより低コストで組み込んで、メインフレームワークロードのモダナイゼーションをスピードアップできるソリューションを構築してほしいという要望がお客様からありました。
AWS Mainframe Modernization Code Conversion with mLogica の紹介
AWS re: Invent 2023 で発表されたように、AWS は mLogica とパートナーシップを結び、AWS Mainframe Modernization Code Conversion for Assembler を構築しました。2024 年 7 月以降、AWS Mainframe Modernization Code Conversion for Assembler が一般公開されたことを発表できることを嬉しく思います。AWS Mainframe Modernization Code Conversion は、アセンブラプログラムとマクロを COBOL プログラムとコピーブックに変換できる AWS のクラウドネイティブ機能です。このソリューションは、100 件以上のプロジェクトの成功や 3,000 万件を超えるコード行 (LoC) のモダナイズなど、20 年にわたるグローバルなモダナイゼーションプロジェクトの経験を持つ mLogica のテクノロジーに依存しています。
AWS Mainframe Modernization Code Conversion は、さまざまな環境向けにアセンブラ言語のソースコードを COBOL に変換するセルフサービス機能を提供します。このソリューションは、IBM Enterprise COBOL コンパイラ、Rocket Software (旧 Micro Focus) COBOL コンパイラなど、さまざまな COBOL コンパイラをターゲットにすることができます。
ターゲットのコンパイラによっては、AWS Mainframe Modernization Code Conversion によって生成された COBOL プログラムとコピーブックは、メインフレームを含むさまざまな COBOL ランタイムで実行できます。変換された COBOL プログラムは、たとえば次のような既存のモダナイゼーションプロジェクトに統合できます。
- 自動リファクタリングプロジェクト: COBOL 言語アプリケーションからアジャイルな Java ベースのサービスへの移行を自動化し、戦略的変革におけるさまざまな側面での技術的負債を最小限に抑えます。お客様は AWS Mainframe Modernization Refactor with AWS Blu Age を使うことができます。
- リプラットフォームプロジェクト: プログラミング言語は COBOL と PL/I のままアプリケーションを移行すると同時に、クラウドネイティブな DevOps 運用によりインフラストラクチャとプロセスをモダナイズしてアジリティを高めることができます。お客様は、 AWS Mainframe Modernization Replatform with Rocket Software (旧 Micro Focus) を使うことができます。
利点
AWS Mainframe Modernization Code Conversion ソリューションにより、アセンブラから COBOL への移行が可能になり、組織はアセンブラのスキル不足に対処しながら、大規模なモダナイゼーションイニシアチブを実施できるようになります。メインフレームワークロードを AWS クラウドでモダナイズするという、イノベーションの推進と戦略的目標の達成に役立ちます。
AWS Mainframe Modernization Code Conversion ソリューションは、独自のツールベースのアプローチを使用して、コード分析とアセンブラから COBOL への変換を迅速化します。セルフサービスでアセンブラコードを分析して COBOL に自動的に変換することにより、生産性が向上します。アセンブラを COBOL に移行することで、技術的負債を減らす機会が得られます。変換された COBOL ソースコードにより、メインフレームの内外を問わず、他のアプリケーションとの統合が容易になります。アセンブラを組み込んだメインフレームワークロードを AWS クラウドに移行するためのモダナイゼーションオプションが増えます。
図 1 – AWS Mainframe Modernization Code Conversion 概要
AWS Mainframe Modernization Code Conversion サービスは、Amazon Elastic Container Registry (Amazon ECR) でホストされ、AWS CodeBuild で実行されるコンテナイメージを介して利用でき、基盤となるコンピューティングのライフサイクル管理に役立ちます。ユーザーは、アセンブラプログラムとマクロを分析して COBOL に変換するための AWS マネージドソリューションの恩恵を受けることができます。このサービスはお客様の AWS アカウント内で実行され、アセンブラおよび COBOL のソースコードをお客様の AWS アカウント外に送信または保存することはありません。
AWS Mainframe Modernization Code Conversion 変換は、セキュリティとデータ保護に関するデプロイのベストプラクティスに従い、Infrastructure as Code ツールと互換性があります。AWS CloudFormation、 AWS Cloud Development Kit、Terraform を活用して Amazon S3 バケットと 4 つの CodeBuild プロジェクトをお客様の AWS アカウントにデプロイします。
アセンブラ変換の実際
CodeBuild プロジェクトとして事前に設定された 4 つのステップによって定義される効率的な作業を実現するために、本機能に特化したモダナイゼーション手法が導入されています。
セルフサービスでの AWS Mainframe Modernization Code Conversion 利用開始
まず、AWS Mainframe Modernization Code Conversion サービスを使用するには、AWS アカウントを作成(サインアップ)する必要があります。
AWS マネジメントコンソールを開き、AWS Mainframe Modernization サービスを選択します。[ツール] メニューから、[AWS アカウントとアセットを共有する] をクリックします。これにより、AWS アカウントが AWS Mainframe Modernization Code Conversion with mLogica を使用できるようになります。
図 2 – セルフサービスによる AWS Mainframe Modernization Code Conversion サービスの利用開始プロセス
ソリューションのデプロイ
トランスフォーメーション環境を準備するには、[Launch Stack] ボタンをクリックして AWS アカウントで AWS CloudFormation スタックを起動します。このソリューションをお好みの AWS リージョンにデプロイするには、本ソリューションの CloudFormation テンプレートをダウンロードして、お使いの AWS リージョンにデプロイします。
スタック名とテンプレートのパラメーターを確認します。デフォルト値は AWSM2CodeConversion
です。
- [スタックのクイック作成] 画面で、一番下までスクロールして「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します」を選択します。
- [スタックの作成] をクリックします。AWS CloudFormation スタックのデプロイには 1 ~ 2 分かかります。
図 3 – AWS CloudFormation で作成されたスタック
スタックが作成されたら、CodeBuild サービスにアクセスして、AWS Mainframe Modernization Code Conversion が提供する 4 つのビルドプロジェクトを使用してアセンブラのモダナイゼーションを開始してください。
- define_project: S3 バケットにプロジェクト構造を作成し、アセンブラコンポーネントをアップロードします。
- analysis: レポートを提供するアセンブラとマクロプログラムを分析します。
- expand_macros: (オプション) アセンブラプログラム内のマクロを展開できます。
- convert: アセンブラプログラムとマクロを COBOL プログラムとコピーブックに変換します。
図 4 – CodeBuild サービスにおけるコード変換の過程を表す 4 つのステップの概要
ステップ 1: Amazon S3 バケットにプロジェクトを作成する
CodeBuild サービスから define_project
という名前の最初のステップを選択して開始し、S3 バケットにプロジェクト構造を作成します。
図 5 – CodeBuild の最初のステップの実行を開始しようとしているところ
CodeBuild プロジェクトはコンテナイメージを自動的に取得して実行し、変換プロジェクトを作成します。
図 6 – CodeBuild プロジェクト実行経過の詳細
ビルドが成功したら、S3 バケットに移動し、prj_codebuild_01/
という名前で新しく作成されたプロジェクトフォルダにアセンブラプログラムとマクロをアップロードします。
図 7 – S3 バケットに生成された出力プロジェクトフォルダー
ステップ 2: 分析を実行してレポートを生成する
CodeBuild サービスから、S3 バケットにアップロードされたアセンブラインベントリを分析するステップを選択して開始します。AWS Mainframe Modernization Code Conversion with mLogica の define_project
を使用したレポートには AWS の料金はかかりません。
図 8 – CodeBuild の 2 番目のステップの実行を開始しようとしているところ
CodeBuild プロジェクトはコンテナイメージを自動的に取得して実行し、分析を処理してレポートを生成します。レポートは S3 バケットのプロジェクトにロードされます。分析が完了したら、S3 バケットに移動してレポートをダウンロードします。
図 9 – S3 バケットに生成された出力 (分析レポート) の概要
以下のレポートが生成されます。
- AWSM2CCM-Analysis-Report-*.pdf: このレポートは、AWS Mainframe Modernization Code Conversion の重要な側面である、コード分析レポートです。このレポートは、アセンブラコード変換の複雑さを推定するために生成されます。エグゼクティブレポートには、アセンブラコードの請求と適用範囲、変換概要、詳細な変換統計、および変換の改善に関する情報がまとめられています。このレポートは PDF 形式で提供されます。
図 10 – 生成された分析レポートの例 (AWSM2CCM-Analysis-Report-*.pdf)
- Conversion_Detailed_Statistics.txt: 本レポートにより、各コンポーネントに含まれる各アセンブラ命令の「変換ステータス」として表示される頻度と予想される変換結果が表示されます。コンバーターがサポートしていない命令が使用されているかどうかをすばやく確認できます。
- Conversion_Global_Statistics.txt: このテクニカルレポートには、コンポーネントレベルの「コンバージョンステータス」の概要が記載されています。
- CrossReference_Global_Statistics.txt: このテクニカルレポートは、アセンブラプログラムのマクロへの依存関係について説明します。アップロードされたコードにマクロがないかどうかを簡単に判断できます。
- CrossReference_PgmToPgm.txt: このテクニカルレポートでは、アセンブラプログラムの他のプログラムへの依存関係を示します。アップロードされたコードから欠落しているアセンブラプログラムがないかどうかを簡単に判断できます。
変換ステップで実際の変換を実行する前に、これらのレポートを確認することが重要です。
ステップ 3: アセンブラマクロの展開を実行する
メインフレームのアセンブラコードでは、(モダンなプログラミング言語の関数と同様に) 機能を再利用できるようにするためにマクロが頻繁に使用されます。マクロの動作は通常、アプリケーションの実行時に、アセンブラプログラムから渡されるパラメータに基づいて決定されます。条件付きアセンブラ言語命令として分類されるアセンブラ命令 (分岐型 AIF、AGO 命令など) の中には、マクロの動作と実行に影響するものがあります。COBOL へのコード変換の技術的な課題は、条件付きアセンブラ言語命令に依存するアセンブラマクロの動的な流れです。
分析の段階で、条件付きアセンブラ言語の命令が Conversion_Detailed_Statistics.txt
レポートに表示されます。条件付きアセンブラ言語の命令が見つかった場合、これらの命令は、該当のアセンブラマクロをアセンブラプログラムに展開 (またはリエンジニアリング) する候補となります。見つからない場合は、アセンブラマクロを展開する必要はありません。
AWS Mainframe Modernization Code Conversion には、COBOL へのコード変換を容易にする条件付きアセンブラ言語命令を削除するメカニズムが含まれています。このソリューションには、よりクリーンで静的なアセンブラコードを作成するための変換前の準備段階として役立つ機能が備わっています。
分析ステップで条件付きアセンブラ言語命令が見つかった場合は、該当のアセンブラソースコードと、そのプログラムの IBM High Level Assembler によるアセンブルリストファイルを S3 バケットにアップロードします。アセンブルリストファイルは、メインフレームのアセンブラによって生成されます。コード内で展開する関連マクロや、例えば、シンボルディクショナリ、オーバーライドパラメータなどの追加情報が含まれています。
図 11 – アセンブラマクロを展開するプロジェクトの S3 バケット
CodeBuild サービスから、expand_macros
という名前の 3 番目のオプションステップを選択して開始し、S3 バケットで以前に更新されたアセンブラプログラムインベントリ内のマクロを展開します。AWS Mainframe Modernization Code Conversion with mLogica の expand_macros
ステップの実行には AWS 料金はかかりません。開始すると、CodeBuild プロジェクトはコンテナイメージを自動的に取り込んで実行し、マクロをアセンブラプログラムに展開します。ビルドが成功したら、S3 バケットに移動して拡張されたアセンブラプログラムを入手してください。
その結果は、処理対象のアセンブラプログラムの修正版です。マクロは外部モジュールとして含まれなくなり、アセンブラプログラム (リストファイルで識別される) に組み込まれました。
ステップ 4: アセンブラコードを COBOL に変換する
Amazon S3 バケット内の project_settings.json
を構成します。
図 12 – S3 バケット内で編集対象の project_settings.json を含むプロジェクトの概要
このファイルは、ターゲットコンパイラ、エンディアン、生成された COBOL プログラムとコピーブックのファイル拡張子、トレース、ファイル内の COBOL アライメントなどのパラメータを指定します。
{
"Source programs directory":"srclib",
"Source copybooks/macros directory":"macrolib",
"Copybook/Macros Conversion":"Called_only",
"Do not regenerate the Copy/Macro if already exists":"false",
"Target Compiler":"IBM",
"Endianess":"Big",
"Converted programs extension":"",
"Converted CICS programs extension":"",
"Converted copies/macros extension":"",
"Trace Level":"STANDARD",
"Trace file open mode":"append",
"Data definition level":5,
"Start picture column":40,
"Generate Sync FILLER with name":"FILL-SYNC",
"Use SYNC clause":"yes",
"Decimal Point Comma":"true",
"Original Source Placement":"RIGHT"
}
CodeBuild サービスから、convert
という名前の 4 番目で最後のステップを選択してビルドを開始します。これにより、アセンブラプログラムとマクロが COBOL プログラムとコピーブックに変換されます。AWS Mainframe Modernization Code Conversion with mLogica の convert
ステップでは、お客様に料金がかかります。詳細については、AWS Mainframe Modernization Pricing をご覧ください。

図 13 – CodeBuild の 4 番目のステップの実行を開始しようとしているところ
CodeBuild プロジェクトはコンテナイメージを自動的に取得して実行し、コードをアセンブラから COBOL に変換します。結果は同じ S3 バケットに格納されます。ビルドが成功したら、S3 バケットに移動して、生成された COBOL プログラム、コピーブック、および関連する COBOL 依存関係をダウンロードします。

図 14 – 出力として生成された COBOL プログラム、コピーブック、および依存関係の (フォルダレベルの) 概要
注: AWS Mainframe Modernization Code Conversion は、S3 バケットのプロジェクトでホストされるコード変換の実行を追跡するためのハッシュファイルを生成します。プログラムやマクロ内のアセンブラソースコードを更新すると、コード変換と請求に影響する可能性があります。
- ソースコードに変更が無い場合: 本ソリューションでは、新しいコード変換に料金はかかりません。
- ソースコードが更新されてコード行が削除された場合: 本ソリューションでは、新しいコード変換に料金はかかりません。
- ソースコードがコード行の追加により更新された場合: 本ソリューションでは新しいコード行に料金がかかります。
コード変換が完了したら、メインフレーム移行プロジェクトの一環として COBOL コンポーネントをコンパイルしてテストします。コンパイルとテストは AWS Mainframe Code Conversion ソリューションのスコープ外です。
価格設定
AWS Mainframe Modernization Code Conversion は、コンポーネント全体の料金を請求します。変換できなかった行、一部が変換された行、完全に変換された行を含め、対象範囲内の各コンポーネントのコード行ごとに課金されます。AWS Mainframe Modernization Code Conversion は、対象範囲内のプログラム、参照されたコピーブック、およびマクロ内のコード行数をカウントし、合計行数に基づいて料金を請求します。詳細については、AWS Mainframe Modernization Pricing をご覧ください。
アセンブラプログラムで参照されていないコピーブックやマクロは対象外とみなされます。たとえば、あるプログラムに 1,000 行のコードがあるとします。処理後、700 行は完全に変換され、200 行は部分的に変換され、100 行は変換されません。この例で課金対象となるコード行は、処理されたコードの総行数に相当する 1,000 行のコードになります。
コード変換の技術支援
AWS Mainframe Modernization Code Conversion は、ビジネス目標を達成するために技術的負債を減らし始める機会を提供するためにリリースされました。
アセンブラから COBOL へのコード行の変換率を高めたい場合は、追加の契約オプションについて AWS の担当者にお問い合わせください。これには、キャリブレーション作業またはプロフェッショナルサービスの支援が必要な場合があります。
アセンブラを自分でモダナイズしましょう
AWS Mainframe Modernization Code Conversion は、アセンブラプログラムとマクロを COBOL に変換することで、アプリケーションのモダナイゼーションを加速します。セルフサービスソリューションにより、変換の労力とコストが削減されます。いったん変換されると、組織はメインフレームの内外で COBOL プログラムとコピーブックを実行できます。その結果は、AWS Blu Age によるリファクタリングや Rocket Software (旧 Micro Focus) によるリプラットフォームなど、メインフレームのモダナイゼーションのジャーニーのためのツールで利用できます。開始するには、AWS Mainframe Modernization Code Conversion with mLogica のドキュメントをご覧ください。
著者