

AWS El servicio de modernización de mainframes (experiencia en entornos de ejecución gestionados) ya no está abierto a nuevos clientes. Para obtener prestaciones similares a las del Servicio de Modernización de AWS Mainframe (experiencia en entornos de ejecución gestionados), explore el Servicio de Modernización de AWS Mainframe (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de la modernización del [AWS mainframe.](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilidades por lotes disponibles en AWS Mainframe Modernization
<a name="utilities-m2"></a>

Las aplicaciones de mainframe suelen utilizar programas de utilidad por lotes para realizar funciones específicas, como ordenar datos, transferir archivos mediante FTP, cargar datos en bases de datos DB2, descargar datos de bases de datos, etc.

Al migrar sus aplicaciones a AWS Mainframe Modernization, necesitará utilidades de reemplazo funcionalmente equivalentes que puedan realizar las mismas tareas que las que utilizaba en el mainframe. Es posible que algunas de estas utilidades ya estén disponibles como parte de los motores de ejecución de AWS Mainframe Modernization, pero ofrecemos las siguientes utilidades de reemplazo:
+ M2SFTP: permite la transferencia segura de archivos mediante el protocolo SFTP.
+ M2WAIT: espera un período de tiempo específico antes de continuar con el siguiente paso de un trabajo por lotes.
+ TXT2PDF: convierte archivos de texto a formato PDF.
+ M2DFUTIL: proporciona funciones de copia de seguridad, restauración, eliminación y copia en conjuntos de datos, de forma similar al soporte que proporciona la utilidad ADRDSSU del mainframe.
+ M2RUNCMD: permite ejecutar comandos, scripts y llamadas al sistema de Rocket Software (anteriormente Micro Focus) directamente desde JCL.

Desarrollamos estas utilidades por lotes basándonos en los comentarios de los clientes y las diseñamos para que proporcionaran la misma funcionalidad que las utilidades de unidad central. El objetivo es hacer que la transición del mainframe a la modernización del mainframe sea lo más AWS fluida posible.

**Topics**
+ [Ubicación binaria](#location-utilities)
+ [Utilidad por lotes M2SFTP](m2sftp.md)
+ [Utilidad por lotes M2WAIT](m2wait.md)
+ [TXT2Utilidad por lotes de PDF](txt2pdf.md)
+ [Utilidad por lotes M2DFUTIL](m2dfutil.md)
+ [Utilidad por lotes M2RUNCMD](m2runcmd.md)

## Ubicación binaria
<a name="location-utilities"></a>

Estas utilidades vienen preinstaladas en los productos Rocket Enterprise Developer (ED) y Rocket Software (ES). Puede encontrarlas en la siguiente ubicación de todas las variantes de ED y ES:
+ Linux: `/opt/aws/m2/microfocus/utilities/64bit`
+ Windows de 32 bits: `C:\AWS\M2\MicroFocus\Utilities\32bit`
+ Windows de 64 bits: `C:\AWS\M2\MicroFocus\Utilities\64bit`

# Utilidad por lotes M2SFTP
<a name="m2sftp"></a>

M2SFTP es un programa de utilidades de JCL diseñado para realizar transferencias de archivos seguras entre sistemas que utilizan el protocolo de transferencia segura de archivos (SFTP). El programa utiliza el cliente SFTP de Putty, `psftp`, para realizar las transferencias reales de archivos. El programa funciona de manera similar a un programa de utilidades de FTP para unidades centrales y utiliza la autenticación de usuario y contraseña.

**nota**  
No se admite la autenticación de clave pública.

Para convertir el FTP de su ordenador central JCLs a SFTP, cambie a. `PGM=FTP` `PGM=M2SFTP`

**Topics**
+ [Plataformas admitidas](#m2sftp-platforms)
+ [Instalación de dependencias](#m2sftp-dependencies)
+ [Configure M2SFTP para gestionar la modernización del AWS mainframe](#m2sftp-configure-managed)
+ [Configurar M2SFTP para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluidas las aplicaciones) WorkSpaces](#m2sftp-configure-customer-infra)
+ [Ejemplo JCLs](#m2sftp-jcl)
+ [Referencia de comandos del cliente SFTP de Putty (PSFTP)](#m2sftp-cmd-ref)
+ [Siguientes pasos](#m2sftp-next)

## Plataformas admitidas
<a name="m2sftp-platforms"></a>

Puede utilizar M2SFTP en cualquiera de las siguientes plataformas:
+ AWS Modernización del mainframe gestionada por Rocket Software (anteriormente Micro Focus)
+ Rocket Software Runtime (en Amazon EC2)
+ Todas las variantes de los productos Rocket Software Enterprise Developer (ED) y Rocket Software Enterprise Server (ES).

## Instalación de dependencias
<a name="m2sftp-dependencies"></a>

**Para instalar el cliente SFTP de Putty en Windows**
+ Descargue el cliente [SFTP de PuTTY](https://www.putty.org/) e instálelo.

**Para instalar el cliente SFTP de Putty en Linux:**
+ Ejecute el siguiente comando para instalar el cliente SFTP de Putty.

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

## Configure M2SFTP para gestionar la modernización del AWS mainframe
<a name="m2sftp-configure-managed"></a>

Si sus aplicaciones migradas se ejecutan en AWS Mainframe Modernization Managed, tendrá que configurar M2SFTP de la siguiente manera.
+ Establezca las variables de entorno de Rocket Enterprise Server adecuadas para el MFFTP. A continuación se muestran algunos ejemplos:
  + `MFFTP_TEMP_DIR`
  + `MFFTP_SENDEOL`
  + `MFFTP_TIME`
  + `MFFTP_ABEND`

  Puede configurar tantas variables como desee. Puede configurarlas en su JCL mediante la instrucción `ENVAR DD`. Para obtener más información sobre estas variables, consulte [MFFTP Control Variables](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html) en la documentación de Micro Focus.

Para probar la configuración, consulte [Ejemplo JCLs](#m2sftp-jcl).

## Configurar M2SFTP para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluidas las aplicaciones) WorkSpaces
<a name="m2sftp-configure-customer-infra"></a>

Si las aplicaciones migradas se ejecutan en el entorno de ejecución de modernización de AWS mainframe en Amazon EC2, configure M2SFTP de la siguiente manera.

1. Cambie la [ruta del programa JES de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html) para incluir la ubicación binaria de las utilidades por lotes. Si necesita especificar varias rutas, utilice dos puntos (`:`) para separarlas en Linux y punto y coma (`;`) en Windows.
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 bits): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 bits): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. Establezca las variables de entorno de Rocket Enterprise Server adecuadas para el MFFTP. A continuación se muestran algunos ejemplos:
   + `MFFTP_TEMP_DIR`
   + `MFFTP_SENDEOL`
   + `MFFTP_TIME`
   + ``MFFTP\$1ABEND

   Puede configurar tantas variables como desee. Puede configurarlas en su JCL mediante la instrucción `ENVAR DD`. Para obtener más información sobre estas variables, consulte [MFFTP Control Variables](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-3F94BBC8-CB97-4642-A4A7-4235C0C079E2.html) en la documentación de Micro Focus.

Para probar la configuración, consulte [Ejemplo JCLs](#m2sftp-jcl).

## Ejemplo JCLs
<a name="m2sftp-jcl"></a>

Para probar la instalación, puede utilizar uno de los siguientes archivos JCL de ejemplo.

**M2 SFTP1 .jcl**

Este JCL muestra cómo llamar a M2SFTP para enviar un archivo a un servidor SFTP remoto. Observe las variables de entorno que se establecen en la instrucción `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
/*
//*
//
```

**M2 .jcl SFTP2**

Este JCL muestra cómo llamar a M2SFTP para recibir un archivo de un servidor SFTP remoto. Observe las variables de entorno establecidas en la instrucción `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
/*
//*
//
```

**nota**  
Recomendamos encarecidamente almacenar las credenciales de FTP en un archivo NETRC y restringir el acceso únicamente a los usuarios autorizados.

## Referencia de comandos del cliente SFTP de Putty (PSFTP)
<a name="m2sftp-cmd-ref"></a>

El cliente PSFTP no admite todos los comandos de FTP. La siguiente lista muestra todos los comandos compatibles con PSFTP.


| Comando | Description (Descripción) | 
| --- | --- | 
|  \$1  |  Ejecuta un comando local  | 
|  bye  |  Finaliza su sesión de SFTP  | 
|  cd  |  Cambia su directorio de trabajo remoto  | 
|  chmod  |  Cambia los permisos y modos de los archivos  | 
|  close  |  Finaliza la sesión de SFTP pero no cierra PSFTP  | 
|  del  |  Elimina archivos en el servidor remoto  | 
|  dir  |  Lista los archivos remotos  | 
|  exit  |  Finaliza su sesión de SFTP  | 
|  introducción  |  Descarga el archivo del servidor en el equipo local.  | 
|  help  |  Brinda ayuda  | 
|  lcd  |  Cambia el directorio de trabajo local  | 
|  lpwd  |  Imprime el directorio de trabajo local  | 
|  ls  |  Lista los archivos remotos  | 
|  mget  |  Descarga varios archivos a la vez  | 
|  mkdir  |  Crea directorios en el servidor remoto  | 
|  mput  |  Carga varios archivos a la vez  | 
|  mv  |  Mueve o cambia el nombre de los archivos en el servidor remoto  | 
|  open  |  Conectarse a un host  | 
|  put  |  Carga un archivo del equipo local al servidor.  | 
|  pwd  |  Imprime su directorio de trabajo remoto  | 
|  quit  |  Finaliza su sesión de SFTP  | 
|  reget  |  Continúa descargando archivos  | 
|  ren  |  Mueve los archivos en el servidor remoto o les cambia el nombre  | 
|  reput  |  Continúa descargando archivos  | 
|  rm  |  Elimina archivos en el servidor remoto  | 
|  rmdir  |  Elimina directorios en el servidor remoto  | 

## Siguientes pasos
<a name="m2sftp-next"></a>

Para cargar y descargar archivos en Amazon Simple Storage Service mediante SFTP, puede utilizar M2SFTP junto con el AWS Transfer Family, tal y como se describe en las siguientes entradas del blog.
+ [Uso de directorios lógicos de AWS SFTP para crear un servicio de distribución de datos sencillo](https://aws.amazon.com/blogs/storage/using-aws-sftp-logical-directories-to-build-a-simple-data-distribution-service/)
+ [Habilite la autenticación por contraseña para su uso AWS Transfer for SFTPAWS Secrets Manager](https://aws.amazon.com/blogs/storage/enable-password-authentication-for-aws-transfer-for-sftp-using-aws-secrets-manager/)

# Utilidad por lotes M2WAIT
<a name="m2wait"></a>

M2WAIT es un programa de utilidad para unidades centrales que le permite introducir un periodo de espera en los scripts de JCL especificando una duración en segundos, minutos u horas. Puede llamar a M2WAIT directamente desde JCL pasando el tiempo de espera como parámetro de entrada. Internamente, el programa M2WAIT llama al módulo suministrado por Rocket Software (anteriormente Micro Focus) `C$SLEEP` para que espere un tiempo específico.

**nota**  
Puede utilizar los alias de Micro Focus para reemplazar los que tiene en sus scripts de JCL. Para obtener más información, consulte [JES Alias](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-D4206FF9-32C4-43E7-9413-5E7E96AA8092.html) en la documentación de Micro Focus.

**Topics**
+ [Plataformas admitidas](#m2wait-platforms)
+ [Configure M2WAIT para gestionar la modernización AWS del mainframe](#m2wait-configure-managed)
+ [Configurar M2WAIT para el tiempo de ejecución de modernización AWS del mainframe en Amazon EC2 (incluidas las WorkSpaces aplicaciones)](#m2wait-configure-customer-infra)
+ [JCL de ejemplo](#m2wait-jcl)

## Plataformas admitidas
<a name="m2wait-platforms"></a>

Puede utilizar M2WAIT en cualquiera de las siguientes plataformas:
+ AWS Rocket Software (anteriormente Micro Focus) gestionó la modernización de la unidad central
+ Rocket Software Runtime (en Amazon EC2)
+ Todas las variantes de los productos Rocket Software Enterprise Developer (ED) y Rocket Software Enterprise Server (ES).

## Configure M2WAIT para gestionar la modernización AWS del mainframe
<a name="m2wait-configure-managed"></a>

Si sus aplicaciones migradas se ejecutan en AWS Mainframe Modernization Managed, tendrá que configurar M2WAIT de la siguiente manera.
+ Utilice el programa M2WAIT en su JCL pasando el parámetro de entrada como se muestra en [JCL de ejemplo](#m2wait-jcl).

## Configurar M2WAIT para el tiempo de ejecución de modernización AWS del mainframe en Amazon EC2 (incluidas las WorkSpaces aplicaciones)
<a name="m2wait-configure-customer-infra"></a>

Si las aplicaciones migradas se ejecutan en el entorno de ejecución de modernización de AWS mainframe en Amazon EC2, configure M2WAIT de la siguiente manera.

1. Cambie la [ruta del programa JES de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html) para incluir la ubicación binaria de las utilidades por lotes. Si necesita especificar varias rutas, utilice dos puntos (`:`) para separarlas en Linux y punto y coma (`;`) en Windows.
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 bits): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 bits): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. Utilice el programa M2WAIT en su JCL pasando el parámetro de entrada como se muestra en [JCL de ejemplo](#m2wait-jcl).

## JCL de ejemplo
<a name="m2wait-jcl"></a>

Para probar la instalación, puede utilizar el programa `M2WAIT1.jcl`.

Este ejemplo de JCL muestra cómo llamar a M2WAIT y pasarle varias duraciones diferentes.

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

# TXT2Utilidad por lotes de PDF
<a name="txt2pdf"></a>

TXT2PDF es un programa de utilidad para ordenadores centrales que se utiliza habitualmente para convertir un archivo de texto en un archivo PDF. Esta utilidad utiliza el mismo código fuente para el TXT2 PDF (z/OSsoftware gratuito). La modificamos para que se ejecute en el entorno de ejecución del software AWS Mainframe Modernization Rocket (anteriormente Micro Focus).

**Topics**
+ [Plataformas admitidas](#txt2pdf-platforms)
+ [Configure el TXT2 PDF para gestionar la modernización AWS del mainframe](#txt2pdf-configure-managed)
+ [Configurar el TXT2 PDF para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluidas WorkSpaces las aplicaciones)](#txt2pdf-configure-customer-infra)
+ [ACL de ejemplo](#txt2pdf-jcl)
+ [Modificaciones](#txt2pdf-mods)
+ [Referencias](#txt2pdf-ref)

## Plataformas admitidas
<a name="txt2pdf-platforms"></a>

Puede utilizar TXT2 PDF en cualquiera de las siguientes plataformas:
+ AWS Modernización del mainframe gestionada por Rocket Software
+ Rocket Software Runtime (en Amazon EC2)
+ Todas las variantes de los productos Rocket Enterprise Developer (ED) y Rocket Enterprise Server (ES).

## Configure el TXT2 PDF para gestionar la modernización AWS del mainframe
<a name="txt2pdf-configure-managed"></a>

Si las aplicaciones migradas se ejecutan en AWS Mainframe Modernization Managed, configure el TXT2 PDF de la siguiente manera.
+ Cree una biblioteca REXX EXEC llamada `AWS.M2.REXX.EXEC`. Descargue estos [módulos REXX](https://drm0z31ua8gi7.cloudfront.net/utilities/mf/TXT2PDF/rexx/TXT2PDF_rexx.zip) y cópielos en la biblioteca. 
  + `TXT2PDF.rex`- z/OS Software gratuito TXT2 en PDF (modificado)
  + `TXT2PDFD.rex`- z/OS Software gratuito para TXT2 PDF (sin modificar)
  + `TXT2PDFX.rex`- z/OS Software gratuito para TXT2 PDF (modificado)
  + `M2GETOS.rex`- Para comprobar el tipo de sistema operativo (Windows o Linux)

Para probar la configuración, consulte [ACL de ejemplo](#txt2pdf-jcl).

## Configurar el TXT2 PDF para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluidas WorkSpaces las aplicaciones)
<a name="txt2pdf-configure-customer-infra"></a>

Si las aplicaciones migradas se ejecutan en el entorno de ejecución de modernización de AWS mainframe de Amazon EC2, configure el TXT2 PDF de la siguiente manera.

1. Establezca la variable `MFREXX_CHARSET` de entorno de Rocket Software en el valor adecuado, como «`A`" para los datos ASCII.
**importante**  
Si introduce un valor incorrecto, podrían producirse problemas de conversión de datos (de EBCDIC a ASCII), lo que haría que el PDF resultante fuera ilegible o inoperable. Recomendamos configurar `MFREXX_CHARSET` para que coincida con `MF_CHARSET`.

1. Cambie la [ruta del programa JES de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html) para que incluya la ubicación binaria de las utilidades por lotes. Si necesita especificar varias rutas, utilice dos puntos (`:`) para separarlas en Linux y punto y coma (`;`) en Windows.
   + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
   + Windows (32 bits): `C:\AWS\M2\MicroFocus\Utilities\32bit`
   + Windows (64 bits): `C:\AWS\M2\MicroFocus\Utilities\64bit`

1. Cree una biblioteca REXX EXEC llamada `AWS.M2.REXX.EXEC``. Descargue estos [módulos REXX](https://drm0z31ua8gi7.cloudfront.net/utilities/mf/TXT2PDF/rexx/TXT2PDF_rexx.zip) y cópielos en la biblioteca. 
   + `TXT2PDF.rex`- z/OS Software gratuito TXT2 en PDF (modificado)
   + `TXT2PDFD.rex`- z/OS Software gratuito para TXT2 PDF (sin modificar)
   + `TXT2PDFX.rex`- z/OS Software gratuito para TXT2 PDF (modificado)
   + `M2GETOS.rex`- Para comprobar el tipo de sistema operativo (Windows o Linux)

Para probar la configuración, consulte [ACL de ejemplo](#txt2pdf-jcl).

## ACL de ejemplo
<a name="txt2pdf-jcl"></a>

Para probar la instalación, puede utilizar uno de los siguientes archivos JCL de ejemplo.

**TXT2PDF1.jcl**

Este archivo JCL de ejemplo utiliza un nombre DD para la TXT2 conversión a PDF.

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

En este ejemplo de JCL se utiliza un nombre DSN para la conversión a PDF. TXT2

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

## Modificaciones
<a name="txt2pdf-mods"></a>

Para que el programa TXT2 PDF se ejecute en el entorno de ejecución de AWS Mainframe Modernization Rocket Software, realizamos los siguientes cambios:
+ Cambios en el código fuente para garantizar la compatibilidad con el entorno de ejecución REXX de Rocket Software
+ Cambios para garantizar que el programa pueda ejecutarse en los sistemas operativos Windows y Linux
+ Modificaciones para admitir el tiempo de ejecución en EBCDIC y ASCII

## Referencias
<a name="txt2pdf-ref"></a>

TXT2Referencias en PDF y código fuente:
+ [Convertidor de texto a PDF](https://homerow.net/rexx/txt2pdf/)
+ [z/OSHerramientas gratuitas TCP/IP y de correo](http://www.lbdsoftware.com/tcpip.html)
+ [TXT2Guía de referencia para el usuario en PDF](http://www.lbdsoftware.com/TXT2PDF-User-Guide.pdf)

# Utilidad por lotes M2DFUTIL
<a name="m2dfutil"></a>

M2DFUTIL es un programa de utilidad de JCL que proporciona funciones de copia de seguridad, restauración, eliminación y copia en conjuntos de datos, de forma similar al soporte que proporciona la utilidad ADRDSSU del mainframe. Este programa conserva muchos de los parámetros SYSIN de ADRDSSU, lo que agiliza el proceso de migración a esta nueva utilidad.

**Topics**
+ [Plataformas admitidas](#m2dfutil-platforms)
+ [Requisitos de la plataforma](#m2dfutil-platform)
+ [Compatibilidad futura planificada](#m2udfutil-future-support)
+ [Ubicaciones de los activos](#mdfutil-assets)
+ [Configurar M2DFUTIL o el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluida la versión 2.0) AppStream](#mdfutil-dependencies)
+ [Sintaxis general](#mdfutil-syntax)
+ [Ejemplo JCLs](#mdfutil-sample-jcls)

## Plataformas admitidas
<a name="m2dfutil-platforms"></a>

Puede utilizar M2DFUTIL en cualquiera de las siguientes plataformas:
+ Rocket Software (anteriormente Micro Focus) ES en Windows (64 y 32 bits)
+ Rocket Software ES en Linux (64 bits)

## Requisitos de la plataforma
<a name="m2dfutil-platform"></a>

M2DFUTIL depende de llamar a un script para realizar una prueba de expresión regular. En Windows, debe instalar los Windows Services for Linux (WSL) para que se ejecute este script.

## Compatibilidad futura planificada
<a name="m2udfutil-future-support"></a>

Entre las funciones que actualmente no están disponibles en la utilidad ADRDSSU del mainframe, pero que estarán disponibles en el futuro, se incluyen: 
+ M2 administrado
+ VSAM
+ Compatibilidad con COPY para cambiar el nombre de los archivos
+ Compatibilidad con RENAME para RESTORE 
+ Múltiples INCLUDE y EXCLUDE
+ Cláusula BY para la subselección mediante DSORG, CREDT, EXPDT
+ Cláusula MWAIT para reintentar errores en la cola
+ Compatibilidad con el almacenamiento de S3 para DUMP/RESTORE

## Ubicaciones de los activos
<a name="mdfutil-assets"></a>

El módulo de carga de esta utilidad se llama `M2DFUTIL.so` en Linux y `M2DFUTIL.dll` en Windows. Este módulo de carga se puede encontrar en las siguientes ubicaciones:
+ Linux: `/opt/aws/m2/microfocus/utilities/64bit`
+ Windows de 32 bits: `C:\AWS\M2\MicroFocus\Utilities\32bit`
+ Windows de 64 bits: `C:\AWS\M2\MicroFocus\Utilities\64bit`

El script utilizado para las pruebas de expresiones regulares se llama `compare.sh`. Este script se puede encontrar en las siguientes ubicaciones:
+ Linux: `/opt/aws/m2/microfocus/utilities/scripts`
+ Windows de 32 bits: `C:\AWS\M2\MicroFocus\Utilities\scripts`

## Configurar M2DFUTIL o el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluida la versión 2.0) AppStream
<a name="mdfutil-dependencies"></a>

Configure su región de Enterprise Server con lo siguiente:
+ Agregue las siguientes variables en **[ES-Environment]**
  + `M2DFUTILS_BASE_LOC`: la ubicación predeterminada para la salida de DUMP
  + `M2DFUTILS_SCRIPTPATH`: la ubicación del script `compare.sh` documentada en **Ubicaciones de activos**
  + `M2DFUTILS_VERBOSE`: [DETALLADO o NORMAL]. Esto controla el nivel de detalle de la salida `SYSPRINT `
+ Compruebe que la ruta del módulo de carga se haya agregado a la configuración de `JES\Configuration\JES Program Path`
+ Compruebe que los scripts del directorio de utilidades tengan permisos de ejecución. Puede agregar un permiso de ejecución mediante el comando `chmod + x <script name>`, en el entorno de Linux

## Sintaxis general
<a name="mdfutil-syntax"></a>

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

Ofrece la posibilidad de copiar archivos desde la ubicación catalogada actual a una ubicación de copia de seguridad. Actualmente, esta ubicación debe ser un sistema de archivos.

#### Proceso
<a name="mdfutil-dump-process"></a>

DUMP realizará las siguientes tareas:

1. Crear el directorio de ubicaciones de destino.

1. Catalogar el directorio de ubicaciones de destino como miembro del PDS.

1. Determinar los archivos que se van a incluir procesando el parámetro INCLUDE.

1. Anular la selección de los archivos incluidos procesando el parámetro EXCLUDE.

1. Determinar si los archivos que se van a volcar deben eliminarse con DELETED.

1. Colocar en la cola los archivos que se procesarán.

1. Copiar los archivos.

1. Exportar la información DCB catalogada de los archivos copiados a un archivo lateral en la ubicación de destino para facilitar las futuras operaciones de RESTORE.

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

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

#### Parámetros necesarios
<a name="mdfutil-dump-requiredparam"></a>

A continuación se enumeran los parámetros necesarios para el DUMP:
+ `SYSPRINT DD NAME`: para contener información de registro adicional
+ `TARGET`: ubicación de destino. Puede ser alguno de los siguientes:
  + Ruta completa de la ubicación del volcado
  + Nombre del subdirectorio creado en la ubicación definida en la variable **M2DFUTILS\$1BASE\$1LOC**
+ `INCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida
+ `EXCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida

#### Parámetros opcionales
<a name="mdfutil-dump-optionalparam"></a>
+ CANCEL: se cancela si se produce algún error. Los archivos que se procesaron se conservarán
+ (Predeterminado) IGNORE: ignora cualquier error y proceso hasta el final
+ DELETE: si no se produce ningún error de ENQ, el archivo se elimina y no se cataloga

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

Ofrece la posibilidad de eliminar y descatalogar archivos de forma masiva. No se hace una copia de seguridad de los archivos.

#### Proceso
<a name="mdfutil-delete-process"></a>

DELETE realizará las siguientes tareas:

1. Determinar los archivos que se van a incluir procesando el parámetro INCLUDE.

1. Anular la selección de los archivos incluidos procesando el parámetro EXCLUDE.

1. Colocar en la cola los archivos que se procesarán. Establecer la disposición como OLD, DELETE, KEEP.

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

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

#### Parámetros necesarios
<a name="mdfutil-delete-requiredparam"></a>

A continuación aparecen los parámetros necesarios para DELETE:
+ `SYSPRINT DD NAME`: para contener información de registro adicional
+ `INCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida 
+ `EXCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida 

#### Parámetros opcionales
<a name="mdfutil-delete-optionalparam"></a>
+ CANCEL: se cancela si se produce algún error. Los archivos que se procesen se conservarán 
+ (Predeterminado) IGNORE: ignora cualquier error y proceso hasta el final

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

Ofrece la posibilidad de restaurar archivos de los que se haya hecho una copia de seguridad previa mediante DUMP. Los archivos se restauran en la ubicación catalogada original, a menos que se utilice RENAME para modificar el DSNAME restaurado.

#### Proceso
<a name="mdfutil-restore-process"></a>

RESTORE realizará las siguientes tareas:

1. Valide el directorio de ubicaciones de origen.

1. Determine los archivos que se van a incluir procesando el archivo de exportación del catálogo.

1. Anular la selección de los archivos incluidos procesando el parámetro EXCLUDE.

1. Colocar en la cola los archivos que se procesarán.

1. Archivos de catálogo que no están catalogados en función de su información de exportación.

1. Si un archivo ya está catalogado y la información del catálogo de exportación es la misma, RESTORE reemplazará el conjunto de datos catalogado si se ha activado la opción REPLACE.

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

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

#### Parámetros necesarios
<a name="mdfutil-restore-requiredparam"></a>

Los siguientes son los parámetros necesarios para RESTORE:
+ `SYSPRINT DD NAME`: para contener información de registro adicional 
+ `SOURCE`: ubicación del origen. Puede ser alguno de los siguientes:
  + Ruta completa de la ubicación del volcado
  + Nombre del subdirectorio creado en la ubicación definida en la variable **M2DFUTILS\$1BASE\$1LOC**
+ `INCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida
+ `EXCLUDE`: una cadena de búsqueda DSNAME única con nombre o una cadena de búsqueda DSN de mainframe válida

#### Parámetros opcionales
<a name="mdfutil-restore-optionalparam"></a>
+ CANCEL: se cancela si hay algún error. Archivos procesados retenidos
+ (Predeterminado) IGNORE: ignora cualquier error y proceso hasta el final
+ REPLACE: si el archivo que se está restaurando ya está catalogado y los registros del catálogo son los mismos, sustituye el archivo catalogado

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

 **Trabajo DUMP**

Este trabajo creará un subdirectorio llamado `TESTDUMP`. Esta es la ubicación de copia de seguridad predeterminada especificada por la variable **M2DFUTILS\$1BASE\$1LOC**. Creará una biblioteca PDS para esta copia de seguridad llamada `M2DFUTILS.TESTDUMP`. Los datos del catálogo exportados se almacenan en un archivo secuencial de líneas en el directorio de copias de seguridad denominado `CATDUMP.DAT`. Todos los archivos seleccionados se copiarán en este directorio de copia de seguridad.

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

 **Trabajo DELETE**

Este trabajo eliminará todos los archivos del catálogo que coincidan con el parámetro 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
/*
 //
```

 **Trabajo RESTORE**

Este trabajo restaurará los archivos que coincidan con el parámetro INCLUDE desde la ubicación de la copia de seguridad de `TESTDUMP`. Los archivos catalogados se reemplazarán si el archivo catalogado es el mismo que el de la exportación a CATDUMP y se especifica la opción 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
/*
//
```

# Utilidad por lotes M2RUNCMD
<a name="m2runcmd"></a>

Puede utilizar M2RUNCMD, un programa de utilidad por lotes, para ejecutar comandos, scripts y llamadas al sistema de Rocket Software (anteriormente Micro Focus) directamente desde JCL, en lugar de ejecutarlos desde un terminal o una línea de comandos. El resultado de los comandos se registra en el registro spool del trabajo por lotes.

**Topics**
+ [Plataformas admitidas](#m2runcmd-platforms)
+ [Configurar M2RUNCMD para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluida la versión 2.0) AppStream](#m2runcmd-configure)
+ [Ejemplo JCLs](#m2runcmd-sample-jcls)

## Plataformas admitidas
<a name="m2runcmd-platforms"></a>

Puede utilizar M2RUNCMD en las siguientes plataformas:
+ Rocket Software Runtime (en Amazon EC2)
+  Todas las variantes de los productos Rocket Software Enterprise Developer (ED) y Rocket Software Enterprise Server (ES).

## Configurar M2RUNCMD para el tiempo de ejecución de modernización de AWS mainframe en Amazon EC2 (incluida la versión 2.0) AppStream
<a name="m2runcmd-configure"></a>

Si las aplicaciones migradas se ejecutan en el entorno de ejecución de modernización de AWS mainframe en Amazon EC2, configure M2RUNCMD de la siguiente manera.
+ Cambie la [ruta del programa JES de Micro Focus](https://www.microfocus.com/documentation/enterprise-developer/ed80/ED-Eclipse/index.html?t=GUID-BC8A1796-9EDE-48EB-8363-31C9BDE7F96B.html) para incluir la ubicación binaria de las utilidades por lotes. Si necesita especificar varias rutas, utilice dos puntos (:) para separarlas en Linux y punto y coma (;) en Windows.
  + Linux: `/opt/aws/m2/microfocus/utilities/64bit`
  + Windows (32 bits): `C:\AWS\M2\MicroFocus\Utilities\32bit`
  + Windows (64 bits): `C:\AWS\M2\MicroFocus\Utilities\64bit`

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

Para probar la instalación, puede utilizar cualquiera de los siguientes ejemplos JCLs.

 **RUNSCRL1.jcl**

En este JCL de ejemplo se crea un script y se ejecuta. El primer paso crea un script denominado `/tmp/TEST_SCRIPT.sh` y con contenido a partir de datos de `SYSUT1` internos. El segundo paso establece el permiso de ejecución y ejecuta el script creado en el primer paso. También puedes elegir realizar solo el segundo paso para ejecutar el software Rocket y los comandos del sistema ya existentes.

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

El resultado del comando o script que se ejecuta se escribe en el registro `SYSOUT`. Para cada comando ejecutado, muestra el comando, la salida y el código de retorno.

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

Este ejemplo de JCL usa RUNCMD para ejecutar varios comandos.

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