

AWS 大型机现代化服务（托管运行时环境体验）不再向新客户开放。有关类似于 AWS 大型机现代化服务（托管运行时环境体验）的功能，请浏览 AWS 大型机现代化服务（自我管理体验）。现有客户可以继续正常使用该服务。有关更多信息，请参阅[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 EC2（包括 AppStream 2.0）上为 AWS 大型机现代化运行时配置 M2RUNCMD
](#m2runcmd-configure)
+ [

## 样本 JCLs
](#m2runcmd-sample-jcls)

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

您可以在以下平台上使用 M2RUNCMD：
+ 火箭软件运行时（在亚马逊 EC2 上）
+  火箭软件企业开发者 (ED) 和 Rocket Software 企业服务器 (ES) 产品的所有变体。

## 在 Amazon EC2（包括 AppStream 2.0）上为 AWS 大型机现代化运行时配置 M2RUNCMD
<a name="m2runcmd-configure"></a>

如果您迁移的应用程序在 Amazon EC2 AWS 的大型机现代化运行时上运行，请按如下方式配置 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 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
/*
//
```