

AWS Mainframe Modernization Service （受管執行期環境體驗） 不再開放給新客戶使用。對於與 AWS Mainframe Modernization Service （受管執行期環境體驗） 類似的功能，探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS 大型主機現代化可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# M2DFUTIL 批次公用程式
<a name="m2dfutil"></a>

M2DFUTIL 是一種 JCL 公用程式，可在資料集上提供備份、還原、刪除和複製函數，類似於大型主機 ADRDSSU 公用程式提供的支援。此程式會從 ADRDSSU 保留許多 SYSIN 參數，可簡化遷移至此新公用程式的程序。

**Topics**
+ [支援平台](#m2dfutil-platforms)
+ [平台需求](#m2dfutil-platform)
+ [計劃的未來支援](#m2udfutil-future-support)
+ [資產位置](#mdfutil-assets)
+ [在 Amazon EC22 上設定 M2DFUTIL 或 AWS 大型主機現代化執行時間 （包括 AppStream 2.0)](#mdfutil-dependencies)
+ [一般語法](#mdfutil-syntax)
+ [範例 JCLs](#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 受管
+ VSAM
+ 檔案名稱重新命名的 COPY 支援
+ RESTORE 的重新命名支援 
+ 多個 INCLUDE 和 EXCLUDE
+ 用於由 DSORG、CREDT、EXPDT 子選取的 BY 子句
+ 重試佇列失敗的 MWAIT 子句
+ DUMP/RESTORE 的 S3 儲存支援

## 資產位置
<a name="mdfutil-assets"></a>

此公用程式的載入模組會在 `M2DFUTIL.so` Linux 和 Windows `M2DFUTIL.dll` 上呼叫。您可以在下列位置找到此載入模組：
+ 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 大型主機現代化執行時間 （包括 AppStream 2.0)
<a name="mdfutil-dependencies"></a>

使用下列項目設定您的 Enterprise Server 區域：
+ 在 **【ES-Environment】** 中新增下列變數
  + `M2DFUTILS_BASE_LOC` - DUMP 輸出的預設位置
  + `M2DFUTILS_SCRIPTPATH` - 記錄在資產位置中的`compare.sh`指令碼位置 ****
  + `M2DFUTILS_VERBOSE` - 【VERBOSE 或 NORMAL】。這會控制`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. 將複製的檔案編目 DCB 資訊匯出至目標位置的側邊檔案，以協助未來的 RESTORE 操作。

#### 語法
<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. 如果檔案已編製目錄，且匯出目錄資訊相同，則 RESTORE 會在設定 REPLACE 選項時取代已編製目錄的資料集。

#### 語法
<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 - 如果還原的檔案已編製目錄，且目錄記錄相同，則取代已編製目錄的檔案

## 範例 JCLs
<a name="mdfutil-sample-jcls"></a>

 **DUMP 任務**

此任務將建立名為 的子目錄`TESTDUMP`。這是 **M2DFUTILS\$1BASE\$1LOC** 變數指定的預設備份位置。它會為此名為 的備份建立 PDS 程式庫`M2DFUTILS.TESTDUMP`。匯出的目錄資料會存放在名為 的備份目錄中的行序列檔案中`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 任務**

此任務將從`TESTDUMP`備份位置還原符合 INCLUDE 參數的檔案。如果目錄檔案與 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
/*
//
```