

AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization Service (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、[AWS 「 Mainframe Modernization の可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Mainframe Modernization で利用可能なバッチユーティリティ
<a name="utilities-m2"></a>

メインフレームアプリケーションでは、データのソート、FTP によるファイルの転送、DB2 などのデータベースへのデータのロード、データベースからのデータのアンロードなど、特定の機能を実行するためにバッチユーティリティプログラムを使用することがよくあります。

アプリケーションを AWS Mainframe Modernization に移行するときは、メインフレームで使用したものと同じタスクを実行できる機能的に同等の代替ユーティリティが必要です。これらのユーティリティの一部は Mainframe Modernization AWS ランタイムエンジンの一部として既に利用できる場合がありますが、以下の代替ユーティリティを提供しています。
+ M2SFTP - SFTP プロトコルを使用して安全なファイル転送を可能にします。
+ M2WAIT - 指定した時間待機してから、バッチジョブの次のステップに進みます。
+ TXT2PDF - テキストファイルを PDF 形式に変換します。
+ M2DFUTIL - メインフレームの ADRDSSU ユーティリティが提供するサポートと同様の、データセットをバックアップ、復元、削除、コピーする機能を提供します。
+ M2RUNCMD - Rocket Software (旧 Micro Focus) コマンド、スクリプト、システム呼び出しを JCL から直接実行できます。

これらのバッチユーティリティは、お客様からのフィードバックに基づいて開発され、メインフレームユーティリティと同じ機能を提供するように設計されました。目標は、メインフレームから AWS Mainframe Modernization への移行を可能な限りスムーズにすることです。

**Topics**
+ [バイナリロケーション](#location-utilities)
+ [M2SFTP バッチユーティリティ](m2sftp.md)
+ [M2WAIT バッチユーティリティ](m2wait.md)
+ [TXT2PDF Batch ユーティリティ](txt2pdf.md)
+ [M2DFUTIL バッチユーティリティ](m2dfutil.md)
+ [M2RUNCMD バッチユーティリティ](m2runcmd.md)

## バイナリロケーション
<a name="location-utilities"></a>

これらのユーティリティは、Rocket Enterprise Developer (ED) および Rocket Software (ES) 製品にプリインストールされています。ED および ES のすべてのバリアントについて、次の場所で入手できます。
+ Linux: `/opt/aws/m2/microfocus/utilities/64bit`
+ Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
+ Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

# M2SFTP バッチユーティリティ
<a name="m2sftp"></a>

M2SFTP は、Secure File Transfer Protocol (SFTP) を使用してシステム間で安全なファイル転送を実行するように設計された JCL ユーティリティプログラムです。このプログラムは PuTTY SFTP クライアント (`psftp`) を使用して実際のファイル転送を実行します。このプログラムはメインフレームの FTP ユーティリティプログラムと同様に機能し、ユーザー認証とパスワード認証を使用します。

**注記**  
パブリックキー認証はサポートされていません。

メインフレームの FTP JCL を SFTP を使用するように変換するには、`PGM=FTP` を `PGM=M2SFTP` に変更してください。

**Topics**
+ [サポートされているプラットフォーム](#m2sftp-platforms)
+ [依存関係をインストールする](#m2sftp-dependencies)
+ [AWS Mainframe Modernization Managed の M2SFTP を設定する](#m2sftp-configure-managed)
+ [Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに M2SFTP を設定する AWS WorkSpaces](#m2sftp-configure-customer-infra)
+ [サンプル JCL](#m2sftp-jcl)
+ [PuTTY SFTP (PSFTP) クライアントコマンドリファレンス](#m2sftp-cmd-ref)
+ [次の手順](#m2sftp-next)

## サポートされているプラットフォーム
<a name="m2sftp-platforms"></a>

M2SFTP は、以下のどのプラットフォームでも使用できます。
+ AWS Mainframe Modernization Rocket Software (旧 Micro Focus) マネージド
+ Rocket Software Runtime (Amazon EC2)
+ Rocket Software Enterprise Developer (ED) および Rocket Software Enterprise Server (ES) 製品のすべてのバリアント。

## 依存関係をインストールする
<a name="m2sftp-dependencies"></a>

**PuTTY SFTP クライアントを Windows にインストールするには**
+ [PuTTY SFTP](https://www.putty.org/) クライアントをダウンロードしてインストールします。

**PuTTY SFTP クライアントを Linux にインストールするには**
+ PuTTY SFTP クライアントをインストールするには、以下のコマンドを実行します。

  ```
    sudo yum -y install putty
  ```

## AWS Mainframe Modernization Managed の M2SFTP を設定する
<a name="m2sftp-configure-managed"></a>

移行したアプリケーションが AWS Mainframe Modernization Managed で実行されている場合は、次のように M2SFTP を設定する必要があります。
+ MFFTP に適した Rocket Enterprise Server 環境変数を設定します。ここにいくつか例を挙げます。
  + `MFFTP_TEMP_DIR`
  + `MFFTP_SENDEOL`
  + `MFFTP_TIME`
  + `MFFTP_ABEND`

  これらの変数は必要な数だけ設定することも、多く設定することもできます。これらの変数は、`ENVAR DD` ステートメントを使用して JCL で設定できます。これらの変数の詳細については、「Micro Focus ドキュメント」の「[MFFTP Control Variables](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)」を参照してください。

設定をテストするには、「[サンプル JCL](#m2sftp-jcl)」を参照してください。

## Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに M2SFTP を設定する AWS WorkSpaces
<a name="m2sftp-configure-customer-infra"></a>

移行したアプリケーションが Amazon EC2 の AWS Mainframe Modernization ランタイムで実行されている場合は、次のように M2SFTP を設定します。

1. [Micro Focus JES プログラムパス](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html)をバッチユーティリティのバイナリロケーションが含まれるように変更します。複数のパスを指定する必要がある場合、Linux ではコロン (`:`) を使用してパスを区切り、Windows ではセミコロン (`;`) を使用してパスを区切ります。
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. MFFTP に適した Rocket Enterprise Server 環境変数を設定します。ここにいくつか例を挙げます。
   + `MFFTP_TEMP_DIR`
   + `MFFTP_SENDEOL`
   + `MFFTP_TIME`
   + ``MFFTP\$1ABEND

   これらの変数は必要な数だけ設定することも、多く設定することもできます。これらの変数は、`ENVAR DD` ステートメントを使用して JCL で設定できます。これらの変数の詳細については、「Micro Focus ドキュメント」の「[MFFTP Control Variables](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)」を参照してください。

設定をテストするには、「[サンプル JCL](#m2sftp-jcl)」を参照してください。

## サンプル JCL
<a name="m2sftp-jcl"></a>

インストールのテストには、以下のサンプル JCL ファイルのいずれかを使用します。

**M2SFTP1.jcl**

この JCL は、M2SFTP を呼び出してリモート SFTP サーバーにファイルを送信する方法を示しています。`ENVVAR DD` ステートメントに設定されている環境変数に注目してください。

```
//M2SFTP1 JOB 'M2SFTP1',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* Sample SFTP JCL step to send a file to SFTP server* 
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=M2SFTP,
//            PARM='127.0.0.1 (EXIT=99 TIMEOUT 300'
//*
//SYSFTPD  DD  *
RECFM FB
LRECL 80
SBSENDEOL CRLF
MBSENDEOL CRLF
TRAILINGBLANKS FALSE
/*
//NETRC    DD  *
machine 127.0.0.1 login sftpuser password sftppass
/*
//SYSPRINT DD  SYSOUT=*
//OUTPUT   DD  SYSOUT=*
//STDOUT   DD  SYSOUT=*
//INPUT    DD  *
type a
locsite notrailingblanks
cd files
put 'AWS.M2.TXT2PDF1.PDF' AWS.M2.TXT2PDF1.pdf   
put 'AWS.M2.CARDDEMO.CARDDATA.PS' AWS.M2.CARDDEMO.CARDDATA.PS1.txt
quit
/*
//ENVVAR   DD *
MFFTP_VERBOSE_OUTPUT=ON
MFFTP_KEEP=N
/*
//*
//
```

**M2SFTP2.jcl**

この JCL は、M2SFTP を呼び出してリモート SFTP サーバーからファイルを受信する方法を示しています。`ENVVAR DD` ステートメントに設定されている環境変数に注目してください。

```
//M2SFTP2 JOB 'M2SFTP2',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* Sample SFTP JCL step to receive a file from SFTP server* 
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=M2SFTP
//*
//SYSPRINT DD  SYSOUT=*
//OUTPUT   DD  SYSOUT=*
//STDOUT   DD  SYSOUT=*
//INPUT    DD  *
open 127.0.0.1
sftpuser
sftppass
cd files
locsite recfm=fb lrecl=150
get AWS.M2.CARDDEMO.CARDDATA.PS.txt +
'AWS.M2.CARDDEMO.CARDDATA.PS2' (replace
quit
/*
//ENVVAR   DD *
MFFTP_VERBOSE_OUTPUT=ON
MFFTP_KEEP=N
/*
//*
//
```

**注記**  
FTP 認証情報を NETRC ファイルに保存し、アクセスを許可されたユーザーのみに制限することを強くお勧めします。

## PuTTY SFTP (PSFTP) クライアントコマンドリファレンス
<a name="m2sftp-cmd-ref"></a>

PSFTP クライアントはすべての FTP コマンドをサポートしているわけではありません。次のリストは、PSFTP がサポートするすべてのコマンドを示しています。


| コマンド | 説明 | 
| --- | --- | 
|  \$1  |  ローカルコマンドを実行します  | 
|  bye  |  SFTP セッションを終了します  | 
|  cd  |  リモート作業ディレクトリを変更します  | 
|  chmod  |  ファイル権限とモードを変更します  | 
|  close  |  SFTP セッションを終了しますが、PSFTP は終了しません  | 
|  del  |  リモートサーバーのファイルを削除します  | 
|  dir  |  リモートファイルを一覧表示します  | 
|  exit  |  SFTP セッションを終了します  | 
|  get  |  サーバーのファイルをローカルマシンにダウンロードします  | 
|  help  |  ヘルプを表示します  | 
|  lcd  |  ローカル作業ディレクトリを変更します  | 
|  lpwd  |  ローカル作業ディレクトリを表示します  | 
|  ls  |  リモートファイルを一覧表示します  | 
|  mget  |  複数のファイルを一度にダウンロードします  | 
|  mkdir  |  リモートサーバーにディレクトリを作成します  | 
|  mput  |  複数のファイルを一度にアップロードします  | 
|  mv  |  リモートサーバーのファイルを移動または名前変更します  | 
|  開放  |  ホストに接続します  | 
|  put  |  ローカルマシンのファイルをサーバーにアップロードします  | 
|  pwd  |  リモート作業ディレクトリを表示します  | 
|  quit  |  SFTP セッションを終了します  | 
|  reget  |  ファイルのダウンロードを続けます  | 
|  ren  |  リモートサーバーのファイルを移動または名前変更します  | 
|  reput  |  ファイルのアップロードを続けます  | 
|  rm  |  リモートサーバーのファイルを削除します  | 
|  rmdir  |  リモートサーバーのディレクトリを削除します  | 

## 次の手順
<a name="m2sftp-next"></a>

SFTP を使用して Amazon Simple Storage Service にファイルをアップロードおよびダウンロードするには、次のブログ投稿で説明されているように AWS Transfer Family、M2SFTP を と組み合わせて使用できます。
+ [AWS SFTP 論理ディレクトリを使用してシンプルなデータ分散サービスを構築する](https://aws.amazon.com/blogs/storage/using-aws-sftp-logical-directories-to-build-a-simple-data-distribution-service/)
+ [AWS Transfer for SFTP を使用するためのパスワード認証を有効にする AWS Secrets Manager](https://aws.amazon.com/blogs/storage/enable-password-authentication-for-aws-transfer-for-sftp-using-aws-secrets-manager/)

# M2WAIT バッチユーティリティ
<a name="m2wait"></a>

M2WAIT は、秒単位、分単位、または時間単位で時間を指定して JCL スクリプトに待機時間を導入できるメインフレームユーティリティプログラムです。待機する時間を入力パラメータとして渡すことにより、JCL から直接 M2WAIT を呼び出せます。M2WAIT プログラムでは内部的に、Rocket Software (旧 Micro Focus) が提供するモジュールを呼び出し`C$SLEEP`て、指定された時間待機します。

**注記**  
Micro Focus エイリアスを使用して JCL スクリプトにあるものを置き換えられます。詳細については、「Micro Focus ドキュメント」の「[JES Alias](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-D4206FF9-32C4-43E7-9413-5E7E96AA8092.html)」を参照してください。

**Topics**
+ [サポートされているプラットフォーム](#m2wait-platforms)
+ [AWS Mainframe Modernization Managed の M2WAIT を設定する](#m2wait-configure-managed)
+ [Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに M2WAIT を設定する AWS WorkSpaces](#m2wait-configure-customer-infra)
+ [サンプル JCL](#m2wait-jcl)

## サポートされているプラットフォーム
<a name="m2wait-platforms"></a>

M2WAIT は以下のどのプラットフォームでも使用できます。
+ AWS Mainframe Modernization Rocket Software (旧 Micro Focus) マネージド
+ Rocket Software Runtime (Amazon EC2)
+ Rocket Software Enterprise Developer (ED) および Rocket Software Enterprise Server (ES) 製品のすべてのバリアント。

## AWS Mainframe Modernization Managed の M2WAIT を設定する
<a name="m2wait-configure-managed"></a>

移行したアプリケーションが AWS Mainframe Modernization Managed で実行されている場合は、次のように M2WAIT を設定する必要があります。
+ 「[サンプル JCL](#m2wait-jcl)」に示すように、入力パラメータを渡して JCL で M2WAIT プログラムを使用します。

## Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに M2WAIT を設定する AWS WorkSpaces
<a name="m2wait-configure-customer-infra"></a>

移行したアプリケーションが Amazon EC2 の AWS Mainframe Modernization ランタイムで実行されている場合は、次のように M2WAIT を設定します。

1. [Micro Focus JES プログラムパス](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html)をバッチユーティリティのバイナリロケーションが含まれるように変更します。複数のパスを指定する必要がある場合、Linux ではコロン (`:`) を使用してパスを区切り、Windows ではセミコロン (`;`) を使用してパスを区切ります。
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. 「[サンプル JCL](#m2wait-jcl)」に示すように、入力パラメータを渡して JCL で M2WAIT プログラムを使用します。

## サンプル JCL
<a name="m2wait-jcl"></a>

インストールをテストするには、`M2WAIT1.jcl` プログラムを使用できます。

このサンプル JCL は、M2WAIT を呼び出して複数の異なる期間を渡す方法を示しています。

```
//M2WAIT1 JOB 'M2WAIT',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* Wait for 12 Seconds*
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=M2WAIT,PARM='S012'
//SYSOUT DD SYSOUT=*
//*
//*-------------------------------------------------------------------**
//* Wait for 0 Seconds (defaulted to 10 Seconds)*
//*-------------------------------------------------------------------**
//*
//STEP02 EXEC PGM=M2WAIT,PARM='S000'
//SYSOUT DD SYSOUT=*
//*
//*-------------------------------------------------------------------**
//* Wait for 1 Minute*
//*-------------------------------------------------------------------**
//*
//STEP03 EXEC PGM=M2WAIT,PARM='M001'
//SYSOUT DD SYSOUT=*
//*
//
```

# TXT2PDF Batch ユーティリティ
<a name="txt2pdf"></a>

TXT2PDF とは、テキストファイルを PDF ファイルに変換するために一般的に使用されるメインフレームユーティリティプログラムです。このユーティリティは、TXT2PDF (z/OS フリーウェア) に同じソースコードを使用します。 AWS Mainframe Modernization Rocket Software (旧 Micro Focus) ランタイム環境で実行するように変更しました。

**Topics**
+ [サポートされているプラットフォーム](#txt2pdf-platforms)
+ [AWS Mainframe Modernization Managed の TXT2PDF を設定する](#txt2pdf-configure-managed)
+ [Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに TXT2PDF を設定する AWS WorkSpaces](#txt2pdf-configure-customer-infra)
+ [サンプル JCL](#txt2pdf-jcl)
+ [変更](#txt2pdf-mods)
+ [リファレンス](#txt2pdf-ref)

## サポートされているプラットフォーム
<a name="txt2pdf-platforms"></a>

以下のどのプラットフォームでも TXT2PDF を使用できます。
+ AWS Mainframe Modernization Rocket ソフトウェアマネージド
+ Rocket Software Runtime (Amazon EC2)
+ Rocket Enterprise Developer (ED) および Rocket Enterprise Server (ES) 製品のすべてのバリアント。

## AWS Mainframe Modernization Managed の TXT2PDF を設定する
<a name="txt2pdf-configure-managed"></a>

移行したアプリケーションが AWS Mainframe Modernization Managed で実行されている場合は、次のように TXT2PDF を設定します。
+ `AWS.M2.REXX.EXEC` という名前の REXX EXEC ライブラリを作成します。これらの [REXX モジュール](https://drm0z31ua8gi7.cloudfront.net/utilities/mf/TXT2PDF/rexx/TXT2PDF_rexx.zip)をダウンロードし、ライブラリにコピーします。
  + `TXT2PDF.rex` - TXT2PDF z/OSフリーウェア (変更)
  + `TXT2PDFD.rex` - TXT2PDF z/OSフリーウェア (変更なし)
  + `TXT2PDFX.rex` - TXT2PDF z/OSフリーウェア (変更)
  + `M2GETOS.rex` - OS の種類の確認や (Windows または Linux)

設定をテストするには、「[サンプル JCL](#txt2pdf-jcl)」を参照してください。

## Amazon EC22 (WorkSpaces アプリケーションを含む) で Mainframe Modernization ランタイムに TXT2PDF を設定する AWS WorkSpaces
<a name="txt2pdf-configure-customer-infra"></a>

移行したアプリケーションが Amazon EC2 の AWS Mainframe Modernization ランタイムで実行されている場合は、次のように TXT2PDF を設定します。

1. Rocket Software 環境変数`MFREXX_CHARSET`を、ASCII データの`A`「」などの適切な値に設定します。
**重要**  
正しくない値を入力すると、データ変換 (EBCDIC から ASCII) の問題が発生し、生成される PDF が読めなくなる可能性や、操作できなくなる可能性があります。`MFREXX_CHARSET` と `MF_CHARSET` が一致するように設定することをお勧めします。

1. [Micro Focus JES プログラムパス](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html)をバッチユーティリティのバイナリロケーションが含まれるように変更します。複数のパスを指定する必要がある場合、Linux ではコロン (`:`) を使用してパスを区切り、Windows ではセミコロン (`;`) を使用してパスを区切ります。
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. `AWS.M2.REXX.EXEC`` という名前の REXX EXEC ライブラリを作成します。これらの [REXX モジュール](https://drm0z31ua8gi7.cloudfront.net/utilities/mf/TXT2PDF/rexx/TXT2PDF_rexx.zip)をダウンロードし、ライブラリにコピーします。
   + `TXT2PDF.rex` - TXT2PDF z/OSフリーウェア (変更)
   + `TXT2PDFD.rex` - TXT2PDF z/OSフリーウェア (変更なし)
   + `TXT2PDFX.rex` - TXT2PDF z/OSフリーウェア (変更)
   + `M2GETOS.rex` - OS の種類の確認や (Windows または Linux)

設定をテストするには、「[サンプル JCL](#txt2pdf-jcl)」を参照してください。

## サンプル JCL
<a name="txt2pdf-jcl"></a>

インストールのテストには、以下のサンプル JCL ファイルのいずれかを使用します。

**TXT2PDF1.jcl**

このサンプル JCL ファイルでは、TXT2PDF の変換に DD 名を使用しています。

```
//TXT2PDF1 JOB 'TXT2PDF1',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* PRE DELETE*
//*-------------------------------------------------------------------**
//*
//PREDEL  EXEC PGM=IEFBR14
//* 
//DD01     DD DSN=AWS.M2.TXT2PDF1.PDF.VB,                      
//            DISP=(MOD,DELETE,DELETE)
//*
//DD02     DD DSN=AWS.M2.TXT2PDF1.PDF,                       
//            DISP=(MOD,DELETE,DELETE)
//* 
//*-------------------------------------------------------------------**
//* CALL TXT2PDF TO CONVERT FROM TEXT TO PDF (VB)*
//*-------------------------------------------------------------------**
//*
//STEP01 EXEC PGM=IKJEFT1B
//*
//SYSEXEC  DD DISP=SHR,DSN=AWS.M2.REXX.EXEC
//*
//INDD     DD *
1THIS IS THE FIRST LINE ON THE PAGE 1
0THIS IS THE THIRD LINE ON THE PAGE 1
-THIS IS THE   6TH LINE ON THE PAGE 1
THIS IS THE   7TH LINE ON THE PAGE 1
+____________________________________ - OVERSTRIKE 7TH LINE          
1THIS IS THE FIRST LINE ON THE PAGE 2
0THIS IS THE THIRD LINE ON THE PAGE 2
-THIS IS THE   6TH LINE ON THE PAGE 2 
THIS IS THE   7TH LINE ON THE PAGE 2
+____________________________________ - OVERSTRIKE 7TH LINE                 
/*
//*
//OUTDD    DD DSN=AWS.M2.TXT2PDF1.PDF.VB,
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(LRECL=256,DSORG=PS,RECFM=VB,BLKSIZE=0)
//*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD DDNAME=SYSIN
//*
//SYSIN    DD *
%TXT2PDF BROWSE Y IN DD:INDD +
OUT DD:OUTDD +
CC YES
/*
//*
//*-------------------------------------------------------------------**
//* CONVERT PDF (VB) TO PDF (LSEQ - BYTE STREAM)*
//*-------------------------------------------------------------------**
//* 
//STEP02 EXEC PGM=VB2LSEQ
//*
//INFILE   DD DSN=AWS.M2.TXT2PDF1.PDF.VB,DISP=SHR             
//*
//OUTFILE  DD DSN=AWS.M2.TXT2PDF1.PDF,                      
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(LRECL=256,DSORG=PS,RECFM=LSEQ,BLKSIZE=0)
//*
//SYSOUT   DD SYSOUT=*
//*
//
```

**TXT2PDF2.jcl**

このサンプル JCL では、TXT2PDF の変換に DSN 名を使用しています。

```
//TXT2PDF2 JOB 'TXT2PDF2',CLASS=A,MSGCLASS=X,TIME=1440
//*
//* Copyright Amazon.com, Inc. or its affiliates.* 
//* All Rights Reserved.* 
//*
//*-------------------------------------------------------------------**
//* PRE DELETE*
//*-------------------------------------------------------------------**
//*
//PREDEL  EXEC PGM=IEFBR14
//* 
//DD01     DD DSN=AWS.M2.TXT2PDF2.PDF.VB,                      
//            DISP=(MOD,DELETE,DELETE)
//*
//DD02     DD DSN=AWS.M2.TXT2PDF2.PDF,                       
//            DISP=(MOD,DELETE,DELETE)
//* 
//*-------------------------------------------------------------------**
//* CALL TXT2PDF TO CONVERT FROM TEXT TO PDF (VB)*
//*-------------------------------------------------------------------**
//* 
//STEP01 EXEC PGM=IKJEFT1B
//*
//SYSEXEC  DD DISP=SHR,DSN=AWS.M2.REXX.EXEC
//*
//INDD     DD *
1THIS IS THE FIRST LINE ON THE PAGE 1
0THIS IS THE THIRD LINE ON THE PAGE 1
-THIS IS THE   6TH LINE ON THE PAGE 1
THIS IS THE   7TH LINE ON THE PAGE 1
+____________________________________ - OVERSTRIKE 7TH LINE          
1THIS IS THE FIRST LINE ON THE PAGE 2
0THIS IS THE THIRD LINE ON THE PAGE 2
-THIS IS THE   6TH LINE ON THE PAGE 2 
THIS IS THE   7TH LINE ON THE PAGE 2
+____________________________________ - OVERSTRIKE 7TH LINE                 
/*
//*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD DDNAME=SYSIN
//*
//SYSIN    DD *
%TXT2PDF BROWSE Y IN DD:INDD +
OUT 'AWS.M2.TXT2PDF2.PDF.VB' +
CC YES
/*
//*
//*-------------------------------------------------------------------**
//* CONVERT PDF (VB) TO PDF (LSEQ - BYTE STREAM)*
//*-------------------------------------------------------------------**
//*
//STEP02 EXEC PGM=VB2LSEQ
//*
//INFILE   DD DSN=AWS.M2.TXT2PDF2.PDF.VB,DISP=SHR             
//*
//OUTFILE  DD DSN=AWS.M2.TXT2PDF2.PDF,                      
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(LRECL=256,DSORG=PS,RECFM=LSEQ,BLKSIZE=0)
//*
//SYSOUT   DD SYSOUT=*
//*
//
```

## 変更
<a name="txt2pdf-mods"></a>

TXT2PDF プログラムを AWS Mainframe Modernization Rocket Software ランタイム環境で実行するために、次の変更を行いました。
+ Rocket Software REXX ランタイムとの互換性を確保するためのソースコードの変更
+ Windows と Linux 両方のオペレーティングシステムでプログラムを実行できるようにするための変更
+ EBCDIC と ASCII ランタイム両方をサポートするための変更

## リファレンス
<a name="txt2pdf-ref"></a>

TXT2PDF リファレンスとソースコード:
+ [テキストから PDF へのコンバータ](https://homerow.net/rexx/txt2pdf/)
+ [z/OS Freeware TCP/IP およびメールツール](http://www.lbdsoftware.com/tcpip.html)
+ [TXT2PDF ユーザーリファレンスガイド](http://www.lbdsoftware.com/TXT2PDF-User-Guide.pdf)

# M2DFUTIL バッチユーティリティ
<a name="m2dfutil"></a>

M2DFUTIL は、メインフレーム ADRDSSU ユーティリティが提供するサポートと同様に、データセットのバックアップ、復元、削除、コピー機能を提供する JCL ユーティリティプログラムです。このプログラムは ADRDSSU の SYSIN パラメータの多くを保持するため、この新しいユーティリティへの移行プロセスが効率化されます。

**Topics**
+ [サポートされているプラットフォーム](#m2dfutil-platforms)
+ [プラットフォームの要件](#m2dfutil-platform)
+ [今後のサポートの予定](#m2udfutil-future-support)
+ [アセットの場所](#mdfutil-assets)
+ [Amazon EC22 で M2DFUTIL または AWS Mainframe Modernization ランタイムを設定する (AppStream 2.0 を含む)](#mdfutil-dependencies)
+ [一般的な構文](#mdfutil-syntax)
+ [サンプル JCL](#mdfutil-sample-jcls)

## サポートされているプラットフォーム
<a name="m2dfutil-platforms"></a>

M2DFUTIL は、以下のどのプラットフォームでも使用できます。
+ Windows 上の Rocket Software (旧 Micro Focus) ES (64 ビットと 32 ビット)
+ Linux での Rocket Software ES (64 ビット)

## プラットフォームの要件
<a name="m2dfutil-platform"></a>

M2DFUTIL は、正規表現テストを実行するスクリプトの呼び出しに依存します。Windows では、このスクリプトを実行するには Windows Services for Linux (WSL) をインストールする必要があります。

## 今後のサポートの予定
<a name="m2udfutil-future-support"></a>

以下を含む機能は、現在メインフレームの ADRDSSU ユーティリティでは使用できませんが、今後サポートを予定しています。
+ M2 Managed
+ VSAM
+ ファイルの名前変更での COPY のサポート
+ RESTORE での RENAME のサポート 
+ 複数の INCLUDE と EXCLUDE
+ DSORG、CREDT、EXPDT による副選択のための BY 句
+ エンキュー失敗を再試行するための MWAIT 句
+ DUMP/RESTORE での S3 ストレージのサポート

## アセットの場所
<a name="mdfutil-assets"></a>

このユーティリティのロードモジュールは、Linux では `M2DFUTIL.dll`、Windows では `M2DFUTIL.so` と呼ばれます。このロードモジュールは、次のいずれかの場所にあります。
+ Linux: `/opt/aws/m2/microfocus/utilities/64bit`
+ Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
+ Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

正規表現のテストに使用されるスクリプトは `compare.sh` と呼ばれます。このスクリプトは、次のいずれかの場所にあります。
+ Linux: `/opt/aws/m2/microfocus/utilities/scripts`
+ Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\scripts`

## Amazon EC22 で M2DFUTIL または AWS Mainframe Modernization ランタイムを設定する (AppStream 2.0 を含む)
<a name="mdfutil-dependencies"></a>

Enterprise Server のリージョンを次のように設定します。
+ **[ES 環境]** に以下の変数を追加します。
  + `M2DFUTILS_BASE_LOC` - DUMP 出力のデフォルト場所
  + `M2DFUTILS_SCRIPTPATH` - 「**アセットの場所**」に記載されている `compare.sh` スクリプトの場所
  + `M2DFUTILS_VERBOSE` - [冗長または標準]。これは `SYSPRINT ` 出力の詳細レベルを制御します。
+ ロードモジュールパスが `JES\Configuration\JES Program Path` 設定に追加されていることを確認します。
+ ユーティリティディレクトリ内のスクリプトに実行権限があることを確認します。Linux 環境では、`chmod + x <script name>` コマンドを使用して実行権限を追加できます。

## 一般的な構文
<a name="mdfutil-syntax"></a>

### DUMP
<a name="mdfutil-dump"></a>

現在のカタログの場所からバックアップの場所にファイルをコピーできます。この場所は、現時点でファイルシステムである必要があります。

#### プロセス
<a name="mdfutil-dump-process"></a>

DUMP は以下を実行します。

1. ターゲットロケーションディレクトリを作成する。

1. ターゲットロケーションディレクトリを PDS メンバーとしてカタログ化する。

1. INCLUDE パラメータを処理して、インクルードするファイルを特定する。

1. EXCLUDE パラメータを処理して、インクルードされたファイルの選択を解除する。

1. ダンプ中のファイルを削除するかどうかを判断する。

1. 処理するファイルをエンキューする。

1. ファイルをコピーする。

1. 今後の RESTORE オペレーションのため、コピーしたファイルのカタログ化された DCB 情報をターゲットロケーションのサイドファイルにエクスポートする。

#### 構文
<a name="mdfutil-dump-syntax"></a>

```
DUMP
TARGET ( TARGET LOCATION  )    -
INCLUDE ( DSN. )
[ EXCLUDE ( DSN ) ]
[ CANCEL | IGNORE ]
[ DELETE ]
```

#### 必須パラメータ
<a name="mdfutil-dump-requiredparam"></a>

以下は DUMP の必須パラメータです。
+ `SYSPRINT DD NAME` - 追加のロギング情報を格納するため
+ `TARGET` - ターゲットロケーション 以下のいずれかになります。
  + ダンプロケーションのフルパス
  + **M2DFUTILS\$1BASE\$1LOC** 変数で定義された場所に作成されたサブディレクトリ名
+ `INCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか
+ `EXCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか

#### 任意指定のパラメータ
<a name="mdfutil-dump-optionalparam"></a>
+ CANCEL - エラーが発生した場合はキャンセルします。処理済みのファイルは保持されます。
+ (デフォルト) IGNORE - すべてのエラーを無視し、最後まで処理します
+ DELETE - ENQ エラーが発生しない場合、ファイルは削除され、カタログ化が解除されます。

### DELETE
<a name="mdfutil-delete"></a>

ファイルの一括削除およびカタログ化の解除ができます。ファイルはバックアップされません。

#### プロセス
<a name="mdfutil-delete-process"></a>

DELETE は以下を実行します。

1. INCLUDE パラメータを処理して、インクルードするファイルを特定する。

1. EXCLUDE パラメータを処理して、インクルードされたファイルの選択を解除する。

1. 処理するファイルをエンキューする。処理を OLD、DELETE、KEEP に設定する。

#### 構文
<a name="mdfutil-delete-syntax"></a>

```
DELETE
INCLUDE ( DSN )
[ EXCLUDE ( DSN ) ]
[ CANCEL | IGNORE ]
[ DELETE ]
```

#### 必須パラメータ
<a name="mdfutil-delete-requiredparam"></a>

以下は DELETE の必須パラメータです。
+ `SYSPRINT DD NAME` - 追加のロギング情報を格納するため
+ `INCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか 
+ `EXCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか 

#### 任意指定のパラメータ
<a name="mdfutil-delete-optionalparam"></a>
+ CANCEL - エラーが発生した場合はキャンセルします。処理済みのファイルは保持されます。
+ (デフォルト) IGNORE - すべてのエラーを無視し、最後まで処理します

### RESTORE
<a name="mdfutil-restore"></a>

DUMP を使用して以前にバックアップしたファイルを復元できます。RENAME を使用して復元済みの DSNAME を変更した場合を除き、ファイルはカタログ化された元の場所に復元されます。

#### プロセス
<a name="mdfutil-restore-process"></a>

RESTORE は以下を実行します。

1. ソースロケーションディレクトリを検証する。

1. カタログエクスポートファイルを処理して、インクルードするファイルを特定する。

1. EXCLUDE パラメータを処理して、インクルードされたファイルの選択を解除する。

1. 処理するファイルをエンキューする。

1. エクスポート情報に基づいてカタログ化されていないファイルをカタログ化する。

1. ファイルが既にカタログ化されていて、エクスポートカタログ情報が同じ場合、REPLACE オプションが設定されている場合は、RESTORE はカタログ化されたデータセットを置き換えます。

#### 構文
<a name="mdfutil-restore-syntax"></a>

```
RESTORE
SOURCE ( TARGET LOCATION ) 
INCLUDE ( DSN )
[ EXCLUDE ( DSN ) ]
[ CANCEL | IGNORE ]
[ REPLACE]
```

#### 必須パラメータ
<a name="mdfutil-restore-requiredparam"></a>

以下は RESTORE の必須パラメータです。
+ `SYSPRINT DD NAME` - 追加のロギング情報を格納するため 
+ `SOURCE` - ソースロケーション。以下のいずれかになります。
  + ダンプロケーションのフルパス
  + **M2DFUTILS\$1BASE\$1LOC** 変数で定義された場所に作成されたサブディレクトリ名
+ `INCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか
+ `EXCLUDE` - 単名の DSNAME または有効なメインフレーム DSN 検索文字列のいずれか

#### 任意指定のパラメータ
<a name="mdfutil-restore-optionalparam"></a>
+ CANCEL - エラーが発生した場合はキャンセルします。処理済みのファイルは保持されます。
+ (デフォルト) IGNORE - すべてのエラーを無視し、最後まで処理します
+ REPLACE - ファイルが既にカタログ化されていて、カタログレコードが同じ場合は、カタログ化されたファイルを置き換えます。

## サンプル JCL
<a name="mdfutil-sample-jcls"></a>

 **DUMP ジョブ**

このジョブは `TESTDUMP` というサブディレクトリを作成します。これは **M2DFUTILS\$1BASE\$1LOC** 変数によって指定されるデフォルトのバックアップ場所です。このバックアップ用に、`M2DFUTILS.TESTDUMP` という PDS ライブラリが作成されます。エクスポートされたカタログデータは、`CATDUMP.DAT` というバックアップディレクトリの行順ファイルに保存されます。選択したすべてのファイルが、このバックアップディレクトリにコピーされます。

```
//M2DFDMP JOB 'M2DFDMP',CLASS=A,MSGCLASS=X
//STEP001  EXEC PGM=M2DFUTIL
//SYSPRINT DD DSN=TESTDUMP.SYSPRINT,
//        DISP=(NEW,CATLG,DELETE),
//        DCB=(RECFM=LSEQ,LRECL=256)
//SYSIN    DD *
DUMP TARGET(TESTDUMP)               -
     INCLUDE(TEST.FB.FILE*.ABC)     -
 CANCEL
/*
//
```

 **DELETE ジョブ**

このジョブは、INCLUDE パラメータに一致するすべてのファイルをカタログから削除します。

```
/M2DFDEL JOB 'M2DFDEL',CLASS=A,MSGCLASS=X
//STEP001  EXEC PGM=M2DFUTIL
//SYSPRINT DD DSN=TESTDEL.SYSPRINT,
//        DISP=(NEW,CATLG,DELETE),
//        DCB=(RECFM=LSEQ,LRECL=256)
//SYSPRINT DD SYSOUT=A
//SYSIN    DD *
  DELETE                               -
     INCLUDE(TEST.FB.FILE*.ABC)        -
 CANCEL
/*
 //
```

 **RESTORE ジョブ**

このジョブは、INCLUDE パラメータに一致するファイルを `TESTDUMP` バックアップ場所から復元します。カタログ化されたファイルが CATDUMP エクスポートのファイルと同じで、REPLACE オプションが指定されている場合、カタログ化されたファイルは置き換えられます。

```
//M2DFREST JOB 'M2DFREST',CLASS=A,MSGCLASS=X
//STEP001  EXEC PGM=M2DFUTIL
////SYSPRINT DD DSN=TESTREST.SYSPRINT,
//        DISP=(NEW,CATLG,DELETE),
//        DCB=(RECFM=LSEQ,LRECL=256)
//SYSPRINT DD SYSOUT=A
//SYSIN    DD *
RESTORE SOURCE(TESTDUMP)               -
     INCLUDE(TEST.FB.FILE*.ABC)        -
 IGNORE
 REPLACE
/*
//
```

# M2RUNCMD バッチユーティリティ
<a name="m2runcmd"></a>

バッチユーティリティプログラムである M2RUNCMD を使用して、ターミナルまたはコマンドプロンプトから実行するのではなく、JCL から直接 Rocket Software (旧 Micro Focus) コマンド、スクリプト、およびシステム呼び出しを実行できます。コマンドからの出力は、バッチジョブのスプールログに記録されます。

**Topics**
+ [サポートされているプラットフォーム](#m2runcmd-platforms)
+ [Amazon EC22 (AppStream 2.0 を含む) で Mainframe Modernization ランタイムに M2RUNCMD を設定する AWS AppStream](#m2runcmd-configure)
+ [サンプル JCL](#m2runcmd-sample-jcls)

## サポートされているプラットフォーム
<a name="m2runcmd-platforms"></a>

M2RUNCMD は、以下のどのプラットフォームでも使用できます。
+ Rocket Software Runtime (Amazon EC2)
+  Rocket Software Enterprise Developer (ED) および Rocket Software Enterprise Server (ES) 製品のすべてのバリアント。

## Amazon EC22 (AppStream 2.0 を含む) で Mainframe Modernization ランタイムに M2RUNCMD を設定する AWS AppStream
<a name="m2runcmd-configure"></a>

移行したアプリケーションが Amazon EC2 の AWS Mainframe Modernization ランタイムで実行されている場合は、次のように M2RUNCMD を設定します。
+ [Micro Focus JES プログラムパス](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/index.html?t=GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html)をバッチユーティリティのバイナリロケーションが含まれるように変更します。複数のパスを指定する必要がある場合、Linux ではコロン (:) を使用してパスを区切り、Windows ではセミコロン (;) を使用してパスを区切ります。
  + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
  + Windows (32 ビット): `C:\AWS\M2\MicroFocus\Utilities\32bit`
  + Windows (64 ビット): `C:\AWS\M2\MicroFocus\Utilities\64bit`

## サンプル JCL
<a name="m2runcmd-sample-jcls"></a>

インストールのテストには、以下のサンプル JCL のいずれかを使用できます。

 **RUNSCRL1.jcl**

このサンプル JCL はスクリプトを作成して実行します。最初のステップでは、`SYSUT1` インストリームデータからのコンテンツを使用して、`/tmp/TEST_SCRIPT.sh` というスクリプトを作成します。2 番目のステップでは、実行権限を設定し、最初のステップで作成したスクリプトを実行します。また、2 番目のステップのみを実行して、既存の Rocket Software コマンドとシステムコマンドを実行することもできます。

```
//RUNSCRL1 JOB 'RUN SCRIPT',CLASS=A,MSGCLASS=X,TIME=1440
//*
//*
//*-------------------------------------------------------------------*
//*  CREATE SCRIPT (LINUX)                                           
//*-------------------------------------------------------------------*
//*
//STEP0010 EXEC PGM=IEBGENER
//*
//SYSPRINT DD SYSOUT=*
//SYSIN    DD DUMMY
//*
//SYSUT1   DD *
#!/bin/bash

set -x

## ECHO PATH ENVIRONMNET VARIABLE
echo $PATH

## CLOSE/DISABLE VSAM FILE
casfile -r$ES_SERVER -oc  -ed -dACCTFIL

## OPEN/ENABLE VSAM FILE
casfile -r$ES_SERVER -ooi -ee -dACCTFIL

exit $?
/*
//SYSUT2   DD DSN=&&TEMP,
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(RECFM=LSEQ,LRECL=300,DSORG=PS,BLKSIZE=0)
//*MFE: %PCDSN='/tmp/TEST_SCRIPT.sh'
//*
//*-------------------------------------------------------------------*
//*   RUN SCRIPT (LINUX)                                              *
//*-------------------------------------------------------------------*
//*
//STEP0020 EXEC PGM=RUNCMD
//*
//SYSOUT  DD  SYSOUT=*
//* 
//SYSIN   DD *
*RUN SCRIPT
 sh /tmp/TEST_SCRIPT.sh
/*
//
```

 **SYSOUT**

実行されたコマンドまたはスクリプトからの出力は `SYSOUT` ログに書き込まれます。実行されたコマンドごとに、コマンド、出力、リターンコードが表示されます。

```
************ CMD Start ************   
                                                                                    
CMD_STR: sh /tmp/TEST_SCRIPT.sh                                                                                              
CMD_OUT:                                                                                                                                                                                                                             
+ echo /opt/microfocus/EnterpriseServer/bin:/sbin:/bin:/usr/sbin:/usr/bin    
/opt/microfocus/EnterpriseServer/bin:/sbin:/bin:/usr/sbin:/usr/bin           
+ casfile -rMYDEV -oc -ed -dACCTFIL                                                                       
-Return Code:   0                                                                                                         
Highest return code:    0                                                                                                 
+ casfile -rMYDEV -ooi -ee -dACCTFIL                                                                     
-Return Code:   8                                                                                                         
Highest return code:    8                                                                                                 
+ exit 8                                                                                                                  

CMD_RC=8                                                                                                                  

************  CMD End  ************
```

 **RUNCMDL1.jcl**

このサンプル JCL は RUNCMD を使用して複数のコマンドを実行します。

```
//RUNCMDL1 JOB 'RUN CMD',CLASS=A,MSGCLASS=X,TIME=1440
//*
//*
//*-------------------------------------------------------------------*
//*   RUN SYSTEM COMMANDS                                             *
//*-------------------------------------------------------------------*
//*
//STEP0001 EXEC PGM=RUNCMD
//*
//SYSOUT  DD  SYSOUT=*
//* 
//SYSIN   DD *
*LIST DIRECTORY
 ls
*ECHO PATH ENVIRONMNET VARIABLE
 echo $PATH
/*
//
```