

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

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

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