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.