

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)。

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

# AWS Mainframe Modernization 中的可用批次公用程式
<a name="utilities-m2"></a>

大型主機應用程式通常會使用批次公用程式來執行特定功能，例如排序資料、使用 FTP 傳輸檔案、將資料載入資料庫，例如 DB2、從資料庫卸載資料等。

當您將應用程式遷移至 AWS 大型主機現代化時，您需要功能上同等的替代公用程式，來執行與大型主機相同的任務。其中一些公用程式可能已作為 AWS Mainframe Modernization 執行期引擎的一部分提供，但我們提供下列替代公用程式：
+ M2SFTP - 使用 SFTP 通訊協定啟用安全的檔案傳輸。
+ M2WAIT - 等待指定的時間量，然後繼續批次任務中的下一個步驟。
+ TXT2PDF - 將文字檔案轉換為 PDF 格式。
+ M2DFUTIL - 在與大型主機 ADRDSSU 公用程式提供的支援類似的資料集上提供備份、還原、刪除和複製函數。
+ M2RUNCMD - 可讓您直接從 JCL 執行 Rocket Software （先前稱為 Micro Focus) 命令、指令碼和系統呼叫。

我們根據客戶意見回饋開發這些批次公用程式，並設計它們以提供與大型主機公用程式相同的功能。目標是讓您盡可能順利地從大型主機轉換至 AWS 大型主機現代化。

**Topics**
+ [二進位位置](#location-utilities)
+ [M2SFTP 批次公用程式](m2sftp.md)
+ [M2WAIT 批次公用程式](m2wait.md)
+ [TXT2PDF 批次公用程式](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 是一種 JCL 公用程式程式，旨在使用安全檔案傳輸通訊協定 (SFTP) 在系統之間執行安全的檔案傳輸。此程式使用 Putty SFTP 用戶端 `psftp`來執行實際的檔案傳輸。此程式的運作方式類似於大型主機 FTP 公用程式，並使用使用者和密碼身分驗證。

**注意**  
不支援公有金鑰身分驗證。

若要將您的大型主機 FTP JCLs 轉換為使用 SFTP，請將 `PGM=FTP`變更為 `PGM=M2SFTP`。

**Topics**
+ [支援平台](#m2sftp-platforms)
+ [安裝相依項目](#m2sftp-dependencies)
+ [為 AWS 大型主機現代化受管設定 M2SFTP](#m2sftp-configure-managed)
+ [在 Amazon EC22 上為大型主機現代化執行時間設定 M2SFTP （包括 WorkSpaces 應用程式） AWS](#m2sftp-configure-customer-infra)
+ [範例 JCLs](#m2sftp-jcl)
+ [Putty SFTP (PSFTP) 用戶端命令參考](#m2sftp-cmd-ref)
+ [後續步驟](#m2sftp-next)

## 支援平台
<a name="m2sftp-platforms"></a>

您可以在下列任何平台上使用 M2SFTP：
+ AWS Mainframe Modernization Rocket Software （先前稱為 Micro Focus) 受管
+ Rocket 軟體執行期 （在 Amazon EC2 上）
+ Rocket Software Enterprise Developer (ED) 和 Rocket Software Enterprise Server (ES) 產品的所有變體。

## 安裝相依項目
<a name="m2sftp-dependencies"></a>

**在 Windows 上安裝 Putty SFTP 用戶端**
+ 下載 [PuTTY SFTP](https://www.putty.org/) 用戶端並進行安裝。

**在 Linux 上安裝 Putty SFTP 用戶端：**
+ 執行下列命令來安裝 Putty SFTP 用戶端：

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

## 為 AWS 大型主機現代化受管設定 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 控制變數](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)。

若要測試您的組態，請參閱 [範例 JCLs](#m2sftp-jcl)。

## 在 Amazon EC22 上為大型主機現代化執行時間設定 M2SFTP （包括 WorkSpaces 應用程式） AWS
<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 控制變數](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html)。

若要測試您的組態，請參閱 [範例 JCLs](#m2sftp-jcl)。

## 範例 JCLs
<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 支援的所有命令。


| 命令 | Description | 
| --- | --- | 
|  \$1  |  執行本機命令  | 
|  再見  |  完成您的 SFTP 工作階段  | 
|  cd  |  變更您的遠端工作目錄  | 
|  chmod  |  變更檔案許可和模式  | 
|  關閉  |  完成您的 SFTP 工作階段，但不退出 PSFTP  | 
|  德爾  |  刪除遠端伺服器上的檔案  | 
|  dir  |  列出遠端檔案  | 
|  exit  |  完成您的 SFTP 工作階段  | 
|  get  |  將檔案從伺服器下載到您的本機電腦  | 
|  說明  |  提供說明  | 
|  lcd  |  變更本機工作目錄  | 
|  lpwd  |  列印本機工作目錄  | 
|  ls  |  列出遠端檔案  | 
|  mget  |  一次下載多個檔案  | 
|  mkdir  |  在遠端伺服器上建立目錄  | 
|  mput  |  一次上傳多個檔案  | 
|  mv  |  移動或重新命名遠端伺服器上的檔案 (s)  | 
|  開啟  |  連線至主機  | 
|  put  |  將檔案從本機電腦上傳至伺服器  | 
|  pwd  |  列印您的遠端工作目錄  | 
|  結束  |  完成您的 SFTP 工作階段  | 
|  重新取得  |  繼續下載檔案  | 
|  ren  |  移動或重新命名遠端伺服器上的檔案 (s)  | 
|  評價  |  繼續上傳檔案  | 
|  rm  |  刪除遠端伺服器上的檔案  | 
|  rmdir  |  移除遠端伺服器上的目錄  | 

## 後續步驟
<a name="m2sftp-next"></a>

若要使用 SFTP 將檔案上傳和下載到 Amazon Simple Storage Service，您可以搭配 使用 M2SFTP AWS Transfer Family，如下列部落格文章所述。
+ [使用 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 別名](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-D4206FF9-32C4-43E7-9413-5E7E96AA8092.html)。

**Topics**
+ [支援平台](#m2wait-platforms)
+ [為 AWS 大型主機現代化受管設定 M2WAIT](#m2wait-configure-managed)
+ [在 Amazon EC22 上為大型主機現代化執行時間設定 M2WAIT （包括 WorkSpaces 應用程式） AWS](#m2wait-configure-customer-infra)
+ [範例 JCL](#m2wait-jcl)

## 支援平台
<a name="m2wait-platforms"></a>

您可以在下列任何平台上使用 M2WAIT：
+ AWS Mainframe Modernization Rocket Software （先前稱為 Micro Focus) 受管
+ Rocket 軟體執行期 （在 Amazon EC2 上）
+ Rocket Software Enterprise Developer (ED) 和 Rocket Software Enterprise Server (ES) 產品的所有變體。

## 為 AWS 大型主機現代化受管設定 M2WAIT
<a name="m2wait-configure-managed"></a>

如果您的遷移應用程式在 AWS Mainframe Modernization Managed 上執行，您將需要設定 M2WAIT，如下所示。
+ 透過傳遞輸入參數，在您的 JCL 中使用程式 M2WAIT，如 所示[範例 JCL](#m2wait-jcl)。

## 在 Amazon EC22 上為大型主機現代化執行時間設定 M2WAIT （包括 WorkSpaces 應用程式） AWS
<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](#m2wait-jcl)。

## 範例 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 批次公用程式
<a name="txt2pdf"></a>

TXT2PDF 是一種大型主機公用程式程式，通常用於將文字檔案轉換為 PDF 檔案。此公用程式針對 TXT2PDF (z/OS 免費軟體） 使用相同的原始程式碼。我們已將其修改為在 AWS Mainframe Modernization Rocket Software （先前稱為 Micro Focus) 執行時間環境中執行。

**Topics**
+ [支援平台](#txt2pdf-platforms)
+ [為 AWS 大型主機現代化受管設定 TXT2PDF](#txt2pdf-configure-managed)
+ [在 Amazon EC22 上為大型主機現代化執行時間設定 TXT2PDF （包括 WorkSpaces 應用程式） AWS](#txt2pdf-configure-customer-infra)
+ [範例 JCL](#txt2pdf-jcl)
+ [修改](#txt2pdf-mods)
+ [參考](#txt2pdf-ref)

## 支援平台
<a name="txt2pdf-platforms"></a>

您可以在下列任何平台上使用 TXT2PDF：
+ AWS Mainframe Modernization Rocket 軟體受管
+ Rocket 軟體執行期 （在 Amazon EC2 上）
+ Rocket Enterprise Developer (ED) 和 Rocket Enterprise Server (ES) 產品的所有變體。

## 為 AWS 大型主機現代化受管設定 TXT2PDF
<a name="txt2pdf-configure-managed"></a>

如果您遷移的應用程式在 AWS Mainframe Modernization Managed 上執行，請設定 TXT2PDF，如下所示。
+ 建立名為 的 REXX EXEC 程式庫`AWS.M2.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` - 檢查作業系統類型 (Windows 或 Linux)

若要測試您的組態，請參閱 [範例 JCL](#txt2pdf-jcl)。

## 在 Amazon EC22 上為大型主機現代化執行時間設定 TXT2PDF （包括 WorkSpaces 應用程式） AWS
<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. 建立名為 的 REXX EXEC 程式庫`AWS.M2.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` - 檢查作業系統類型 (Windows 或 Linux)

若要測試您的組態，請參閱 [範例 JCL](#txt2pdf-jcl)。

## 範例 JCL
<a name="txt2pdf-jcl"></a>

若要測試安裝，您可以使用下列其中一個範例 JCL 檔案。

**TXT2PDF1.jcl**

此範例 JCL 檔案使用 DD 名稱進行 TXT2PDF 轉換。

```
//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 使用 DSN 名稱進行 TXT2PDF 轉換。

```
//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 是一種 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
/*
//
```

# M2RUNCMD 批次公用程式
<a name="m2runcmd"></a>

您可以使用批次公用程式 M2RUNCMD，直接從 JCL 執行 Rocket Software （先前稱為 Micro Focus) 命令、指令碼和系統呼叫，而不是從終端機或命令提示字元執行它們。來自命令的輸出會記錄到批次任務的多工緩衝處理日誌。

**Topics**
+ [支援平台](#m2runcmd-platforms)
+ [在 Amazon EC22 上為大型主機現代化執行時間設定 M2RUNCMD （包括 AppStream 2.0) AWS](#m2runcmd-configure)
+ [範例 JCLs](#m2runcmd-sample-jcls)

## 支援平台
<a name="m2runcmd-platforms"></a>

您可以在下列平台上使用 M2RUNCMD：
+ Rocket 軟體執行期 （在 Amazon EC2 上）
+  Rocket Software Enterprise Developer (ED) 和 Rocket Software Enterprise Server (ES) 產品的所有變體。

## 在 Amazon EC22 上為大型主機現代化執行時間設定 M2RUNCMD （包括 AppStream 2.0) AWS
<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`

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

若要測試安裝，您可以使用下列其中一個範例 JCLs。

 **RUNSCRL1.jcl**

此範例 JCL 會建立指令碼並執行指令碼。第一個步驟會建立名為 `/tmp/TEST_SCRIPT.sh`和 的指令碼，其中包含來自串流`SYSUT1`內資料的內容。第二個步驟會設定執行許可，並執行第一個步驟中建立的指令碼。您也可以選擇只執行第二個步驟來執行現有的 Rocket 軟體和系統命令。

```
//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
/*
//
```