Comandos y utilidades - AWS Modernización de mainframe

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.

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.

Comandos y utilidades

Esta sección está relacionada con los programas utilitarios cuya función es gestionar los comandos del usuario, proporcionados mediante tarjetas de control.

IKJEFT1A/IKJEFT1B/KEQEFT01/IKJEFT01/DSNDBTCH

IKJEFT1Un propósito

IKJEFT1A y sus alias ejecutan comandos de TSO (opción T time S Sharing O) en trabajos por lotes sin necesidad de una sesión de TSO interactiva, lo que une los entornos de TSO interactivos y por lotes no interactivos.

Imita el comportamiento heredado de IKJEFT1 A con diferencias específicas del entorno: por ejemplo, los comandos DB2 TERM (inate) se ignoran en los entornos modernos (se registran como informativos).

nota

La sintaxis de los comandos no se detalla aquí: A utiliza conjuntos de datos IKJEFT1 de comandos antiguos sin cambios. Consulte la documentación de la plataforma anterior para obtener detalles sobre los comandos de la TSO.

IKJEFT1Una firma

Utiliza un SYSTSIN conjunto de datos para la entrada de comandos (definido mediante la DD directiva JCL). La versión modernizada usa el mismo conjunto de datos sin cambios. Se invoca solo en los scripts modernizados de Groovy Jobs.

IKJEFT1A: parámetros de configuración relacionados

El comportamiento de la utilidad depende del siguiente parámetro de configuración:

  • systin.encoding

Consulte Propiedades disponibles para las aplicaciones web opcionales para obtener más información sobre la configuración de este parámetro.

IKJEFT1Un Checks/Error manejo

Cuando hay un comando no compatible en el conjunto de datos SYSTSIN, RuntimeException se lanza un.

IKJEFT1Un ejemplo de usos

El script JCL heredado (que utiliza un contenido en línea del SYSTSIN conjunto de datos, mediante una directiva) DD *

//********************************************************************* //* READ THE TEMPORARY INPUT FILE * //********************************************************************* // IF IDCM00032.RC = 1 THEN //067FILEKEY EXEC PGM=IKJEFT01,DYNAMNBR=20 //SYSTSIN DD * DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END /* //TEMPVSAM DD DSN=IDXVIDEO.TEMPVSAM,DISP=SHR //FKOUT DD DSN=output(out067.txt),DISP=(NEW,CATLG) // ENDIF //*********************************************************************

y el script modernizado correspondiente (en groovy) (el contenido en línea del SYSTSIN conjunto de datos se representa mediante una «secuencia»)

// STEP 067FILEKEY - PGM - IKJEFT01*********************************************** def step067FILEKEY(Object shell, Map params, Map programResults){ shell.with { if (checkValidProgramResults(programResults)) { return execStep("067FILEKEY", "IKJEFT01", programResults, { mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .fileSystem("SYSTSIN") .stream( """ DSN SYSTEM(DB2P) RUN PROGRAM(067-fileKey) PLAN(FILEKEYPLAN) PARM('RT') END """, getEncoding()) .build() .bluesam("TEMPVSAM") .dataset("IDXVIDEO.TEMPVSAM") .disposition("SHR") .build() .fileSystem("FKOUT") .path("output(out067.txt)") .disposition("NEW") .normalTermination("CATLG") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IKJEFT01") }) } } }

QCMDEC

Propósito de QCMDEXC

Este programa de utilidad emula el comportamiento de la utilidad del sistema AS/400 QCMDEXC, que se utiliza para ejecutar comandos del sistema de forma dinámica en tiempo de ejecución.

Características:

  • Analiza y ejecuta comandos de forma dinámica.

  • Admite formatos de parámetros posicionales y con nombre.

Firma QCMDEXC

Acepta de 1 a 2 parámetros:

  • Primero: datos alfanuméricos que contienen los comandos a ejecutar

  • Segundo (opcional): longitud en bytes que se debe leer desde el primer parámetro (el valor predeterminado es la longitud completa)

Manejo de QCMDEXC Checks/Error

En los siguientes casos, se RuntimeException lanzará un:

  • Cuando el número de argumentos proporcionados no es uno o dos;

  • Si el argumento del comando está vacío o si no se reconoce el comando que se va a ejecutar;

  • Si la ejecución del comando falla por algún motivo, el código de retorno del programa se establecerá en 1.

Ejemplos de usos de QCMDEC

Este es un ejemplo de uso de un programa COBOL antiguo: el elemento de datos CL-COMMANDX está equipado con comandos antes de ser utilizado como argumento para la llamada al programa QCMDEXC:

INITIALIZE CL-COMMANDX. STRING "CPYF FROMFILE(PLAYERS) TOFILE(" DELIMITED BY SIZE, "NEWFILE" DELIMITED BY SIZE, ") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)" DELIMITED BY SIZE INTO CL-COMMANDX END-STRING. CALL "QCMDEXC" USING CL-COMMANDX CLENGTHX.

Una vez modernizado a código java, se convierte en:

DataUtils.initialize(ctx.getClCommandx().getClCommandxReference()); StringConcatenationBuilder.newInstance(ctx.getClCommandx().getClCommandxReference()) .addDelimitedBySize("CPYF FROMFILE(PLAYERS) TOFILE(") .addDelimitedBySize("NEWFILE") .addDelimitedBySize(") MBROPT(*REPLACE) FMTOPT(*NOCHK) CRTFILE(*YES)") .end(); ctrl.callSubProgram("QCMDEXC", CallBuilder.newInstance() .byReference(ctx.getClCommandx().getClCommandxReference()) .byReference(ctx.getClengthx().getClengthxReference()) .getArguments(), ctx);

Tenga en cuenta que el contenido de los comandos antiguos se utiliza «tal cual» en el código modernizado, sin ninguna modificación.