Utilidades de conjuntos de datos - 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.

Utilidades de conjuntos de datos

BLUESAMCOPY/BLUESAMCREATE/BLUESAMDELETE/BLUESAMCLEAR

Estos programas de utilidad proporcionan funciones esenciales de manipulación de conjuntos de datos en los conjuntos de datos de Blusam.

El bypassBluesamStatus indicador (almacenado en JobContext) determina si se debe omitir la validación normal del estado del conjunto de datos, que evita conflictos de acceso simultáneos entre los procesos en línea y los procesos por lotes.

Cuándo bypassBluesamStatus es verdadero:

  • Omite las comprobaciones normales del estado del conjunto de datos durante las operaciones

  • Permite el acceso a conjuntos de datos que normalmente estarían bloqueados

SAMCOPY AZUL

El programa BLUESAMCOPY copia la estructura de datos y metadatos de un conjunto de datos de Bluesam a otro.

Parameters

El programa BLUESAMCOPY utiliza dos parámetros:

  • FROM=<source dataset name>- Conjunto de datos fuente desde el que copiar

  • TO=<target dataset name>- Conjunto de datos de destino al que se va a copiar

Comportamiento

  • Si el conjunto de datos de destino no existe, lo crea con la estructura de metadatos de la fuente

  • Si el destino existe, lo borra antes de copiarlo (sobrescribe los datos existentes)

  • La operación continúa cuando los procesos en línea no utilizan los conjuntos de datos o cuando bypassBluesamStatus se establece en true

  • Conserva las claves, la compresión, la longitud del registro y otras propiedades de los metadatos

Gestión de errores

Devuelve el código 1 si el conjunto de datos de origen no existe o si alguno de los conjuntos de datos está siendo utilizado por procesos en línea.

Ejemplo de uso

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // copy bluesam dataset res = mpr.withArguments("FROM=MYBLUESAMTABLE","TO=MYBLUESAMTABLE2").runProgram("BLUESAMCOPY")

BLUESAM CREATE

El programa BLUESAMCREATE crea un conjunto de datos Bluesam con los parámetros especificados.

Parameters

El programa BLUESAMCREATE toma siete parámetros:

  • name=<dataset name>- Conjunto de datos a crear (obligatorio)

  • compress=<true/false>- Habilitar la compresión (opcional, predeterminado: false)

  • fixedLength=<true/false>- Estado de los registros de longitud fija (opcional, predeterminado: falso)

  • recordLength=<integer>- Longitud del registro en bytes (opcional, predeterminada: -1)

  • primaryKey=<key id>,duplicates=<true/false>,fields=<offset,length,...>- Especificación de clave principal (opcional)

  • key=<altkey id>,duplicates=<true/false>,fields=<offset,length,...>- Clave alternativa (puede ser múltiple o 0)

  • clearExisting=true/false- Borrar el conjunto de datos existente (opción predeterminada: true)

Explicaciones de los parámetros clave específicos:

  • duplicates: si se permite o no duplicar el valor de la clave dada;

  • fields: Posiciones de los campos (basadas en 1) y longitudes que definen la clave;

Comportamiento

  • Si el conjunto de datos no existe, lo crea con los parámetros especificados

  • Si el conjunto de datos existe, lo borra si clearExisting=true

  • La operación continúa cuando los procesos en línea no utilizan los conjuntos de datos o cuando bypassBluesamStatus está configurado en true

Condiciones de error

Devuelve el código 0 en todos los casos.

Ejemplo de uso

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // create bluesam dataset mpr.withArguments( "name=MYBLUESAMTABLE", "compress=FALSE", "fixedLength=true", "recordLength=54", "primaryKey=MYKEY_PK,duplicates=FALSE,fields=0,6") .runProgram("BLUESAMCREATE")

BLUESAMDELETE

El programa BLUESAMDELETE elimina los conjuntos de datos de Bluesam.

Parameters

El programa BLUESAMDELETE toma 1 o más parámetros:

  • <dataset name>- conjunto de datos para eliminar (puede tener varios)

Comportamiento

  • La operación continúa cuando los procesos en línea no utilizan los conjuntos de datos o cuando bypassBluesamStatus está configurado en true

  • Si el conjunto de datos existe, elimínelo

Condiciones de error

Devuelve el código 0 en todos los casos.

Ejemplo de uso

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // delete bluesam datasets res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2","MYBLUESAMTABLE3").runProgram("BLUESAMDELETE")

AZUL, SAMCLEAR

El programa BLUESAMCLEAR elimina todos los datos de los conjuntos de datos existentes al tiempo que conserva su estructura y metadatos.

Parameters

El programa BLUESAMCLEAR toma 1 o más parámetros:

  • <dataset name>- conjunto de datos para borrar (puede tener varios)

Comportamiento

  • La operación continúa cuando los procesos en línea no utilizan los conjuntos de datos o cuando bypassBluesamStatus está configurado en true

  • Si el conjunto de datos existe, bórrelo

Condiciones de error

Devuelve el código 0 en todos los casos.

Ejemplo de uso

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) // clear bluesam datasets res = mpr.withArguments("MYBLUESAMTABLE","MYBLUESAMTABLE2").runProgram("BLUESAMCLEAR")

BPXWDYN

Este programa de utilidad simula el servicio z/OS BPXWDYN para la asignación y desasignación dinámica de conjuntos de datos. En las aplicaciones modernas, las asignaciones de archivos se realizan en scripts Groovy a través de la API del generador. FileConfigurationUtils Este programa permite la gestión dinámica de estas asignaciones sin Groovy, lo cual es esencial para el procesamiento de archivos interactivo o condicional en aplicaciones modernizadas.

Parameters

Se conserva el formato de argumento anterior. Espera un único argumento que contenga un encabezado de 2 bytes seguido de la cadena de comandos.

formato de cadena de comandos para la asignación: ALLOC DD(<name>) DSN('<dsn>') SHR?

formato de cadena de comandos para la desasignación: FREE DD(<name>)

Gestión de errores

  • Defina el código de error 0 para el éxito y 1 para el error

  • Lanza RuntimeException comandos o parámetros no válidos

Ejemplo de uso

A continuación, se muestra un ejemplo del uso del programa BPXWDYN en Java, como resultado de una modernización de COBOL mediante la transformación de AWS:

El código COBOL:

01 WK-AREA. 03 DS-ALLOC-STRING. 05 DS-LENGTH PIC S9(004) COMP VALUE 100. 05 DS-TEXT PIC X(100) VALUE "ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR". ... 01 RC-RETURN-CODE-AREA. 03 RC-RETURN-CODE PIC S9(008) COMP. ... CALL 'BPXWDYN' USING DS-ALLOC-STRING RETURNING RC-RETURN-CODE.

y la correspondiente modernización de Java:

private final Group dsAllocString = new Group(root).named("DS-ALLOC-STRING"); private final Elementary dsLength = new Elementary(dsAllocString,new BinaryType(4, 0, "STD", false, false, true),Short.valueOf("100")).named("DS-LENGTH"); private final Elementary dsText = new Elementary(dsAllocString,new AlphanumericType(100),"ALLOC DD(INFILE) DSN('A.B.JCLLIB(XYZ470)') SHR").named("DS-TEXT"); ... private final Group root = new Group(getData()).named("RC-RETURN-CODE-AREA"); private final Elementary rcReturnCode = new Elementary(root,new BinaryType(8, 0, "STD", false, false, true)).named("RC-RETURN-CODE"); ... // Call to utility program BPXWDYN ctrl.callSubProgram( "BPXWDYN", CallBuilder.newInstance().byReference(ctx.getWkArea().getDsAllocStringReference()).getArguments(), ctx); ctx.getRcReturnCodeArea().setRcReturnCode(NumberUtils.convert(ctx.getProgramReturned()).intValue());

GDGUTILS

GDGs (Generation Data Group) permite que las aplicaciones funcionen con conjuntos de datos versionados, en los que cada ejecución crea una nueva generación y, al mismo tiempo, mantiene el acceso a las generaciones anteriores. Esta utilidad crea y administra estas generaciones de conjuntos de datos. Esta utilidad está pensada para ser llamada en scripts geniales.

Parameters

el orden de los parámetros no importa

  • action=<create|refreshevents>- Operación a realizar (obligatoria)

  • gdgname=<name>- Nombre de la base del GDG (obligatorio)

  • storageProvider=<filesystem|bluesam>- Backend de almacenamiento

  • relativeGeneration=<+integer>- Número de generación relativo (por ejemplo, +1 para la siguiente)

  • absoluteGeneration=integer- Número de generación absoluto

  • recordLength=<integer>- Tamaño del registro en el conjunto de datos

  • fixedLength=<true/false>- Especifica que los registros tienen una longitud fija en el conjunto de datos

  • ownerPath=<File system path>- La ruta para almacenar el conjunto de datos (específica del sistema de archivos, obligatoria en ese caso)

  • compress=<true/false>- Indica que los datos deben permanecer comprimidos en la memoria si se comprimieron en el almacén de datos (específico de Bluesam) (opcional, el valor predeterminado es false)

  • catalog- Especifica el conjunto de datos que se va a catalogar (opcional)

  • warmUp- Indica que el conjunto de datos debe cargarse en la memoria al abrirse (específico de Bluesam) (opcional)

RelativeGeneration o AbsoluteGeneration: es necesario establecer una de estas propiedades.

Operaciones

  • create: crea una nueva generación de conjuntos de datos GDG de acuerdo con los metadatos GDG (gestiona tanto el sistema de archivos como el almacenamiento de Bluesam)

  • refreshevents: ajusta el número de generación (metadatos de Gdg) sin crear nuevos conjuntos de datos (se utiliza al reiniciar trabajos fallidos que ya han creado conjuntos de datos)

Gestión de errores

  • Defina el código de error 0 para el éxito y 1 para el error

  • Lanza RuntimeException comandos o parámetros no válidos

Ejemplo de uso

Operación de creación de Gdg: el siguiente código crea una generación bluesam (43) para el conjunto de datos IC.PLI.GDGTEST

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) Map params = new Hashtable() params.put("jobContext", jobContext) Object[] args =["action=create","gdgname=IC.PLI.GDGTEST","absoluteGeneration=43","storageProvider=bluesam","recordLength=80"] mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")

Operación Gdg refreshevents: solo RelativeGeneration es relevante para esta operación. El siguiente código actualiza el número de generación (+1 en comparación con la generación actual) del conjunto de datos IC.PLI.GDGTEST

import ... mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) Map params = new Hashtable() params.put("jobContext", jobContext) Object[] args =["action=refreshevents","gdgname=IC.PLI.GDGTEST","relativeGeneration=1","storageProvider=bluesam"] mpr.withParameters(params).withArguments(args).runProgram("GDGUTILS")

ICEGENER/SYNCGENR

Este programa de utilidad imita el comportamiento de la utilidad del z/OS sistema ICEGENER, copia los conjuntos de datos de la entrada (conjunto de datos) a la salida (conjunto de datos). SYSUT1 SYSUT2 Esta implementación de Java proporciona una funcionalidad equivalente que admite el almacenamiento tanto del sistema de archivos como de Bluesam.

Parameters

Sin argumento

Conjuntos de datos necesarios

  • SYSUT1: Conjunto de datos/archivo de entrada

  • SYSUT2: conjunto de datos/archivo de salida

Manejo de la disposición del conjunto de datos SYSUT2

  • NUEVO: Cree un nuevo conjunto de datos/archivos

  • OLD/SHR: Use existing dataset/file(debe existir)

  • MOD: modificar, crear si falta, agregar si existe

Gestión de errores

  • Establezca el código de error 0 si la copia se realiza correctamente, 1 si no

  • Se lanza IllegalStateException por un uso no válido del conjunto de datos de Bluseam

Ejemplo de uso

A continuación, se muestra un magnífico ejemplo del uso del programa ICEGENER, resultante de una modernización de JCL mediante la transformación de AWS:

El código JCL:

//STEP01 EXEC PGM=ICEGENER //SYSUT1 DD DSN=POI.INPUT,DISP=SHR //SYSUT2 DD DSN=POI.OUTPU, // DISP=(,CATLG,DELETE), // UNIT=3490, // DCB=(RECFM=FB,LRECL=100) /*

y la correspondiente modernización de Groovy:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("SYSUT1") .dataset("POI.INPUT") .disposition("SHR") .build() .bluesam("SYSUT2") .dataset("POI.OUTPU") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("ICEGENER")

IDCAMS/KQCAMS

Este programa de utilidad imita el comportamiento de los programas antiguos IDCAMS, que es una herramienta de administración de datos de mainframe que se utiliza para las operaciones de archivos VSAM (Método de acceso al almacenamiento virtual). Procesa los comandos IDCAMS antiguos y mantiene la misma sintaxis que las entradas SYSIN originales.

Contexto

El comportamiento del programa se puede configurar mediante dos parámetros definidos en: application-utility-pgm.yml

  • JCLType: identificador de tipo JCL (vse o mvs). Los PRINT/REPRO comandos de la utilidad IDCAMS devuelven 4 si el archivo está vacío en el caso de jcl que no es vse

  • forcedCharsetIdcams: Anulación opcional del conjunto de caracteres para el procesamiento de IDCAMS

Parameters

Sin argumento. Las operaciones se transfieren a través del conjunto de datos SYSIN.

Conjuntos de datos necesarios

  • SYSIN: contiene sentencias de comando de IDCAMS

  • Conjuntos de datos de entrada/salida: tal como se indica en los comandos de IDCAMS (según la sentencia IDCAMS)

Características principales/Comandos compatibles

Los detalles sobre los comandos IDCAMS que se encuentran en la tarjeta de control SYSIN no se proporcionan aquí, pero deben consultarse en la documentación de las plataformas antiguas relevantes existentes.

  • DEFINIR: crea clústeres y conjuntos de datos de VSAM

  • ELIMINAR: elimina conjuntos de datos (admite caracteres comodín)

  • REPRO: copia datos entre conjuntos de datos

  • IMPRIMIR: muestra el contenido del conjunto de datos

  • VERIFICAR: valida la existencia e integridad del conjunto de datos

  • ALTER: modifica los atributos del conjunto de datos (cambio de nombre)

  • ALLOC: asigna conjuntos de datos de forma dinámica

  • SET: gestiona los códigos de condición (LASTCC/MAXCC)

  • IF-THEN-ELSE - Ejecución de comandos condicionales

  • CANCELAR: finaliza la ejecución del trabajo

Gestión de errores

  • Defina el código de error 0 si el último comando se ejecuta correctamente y -1 si falla

  • Los comandos SET (LASTCC) se pueden usar para anular el código de error, p. ej. SET LASTCC = 0

Ejemplo de uso

A continuación, se muestra un magnífico ejemplo del uso del programa IDCAMS, resultante de una modernización de JCL mediante la transformación de AWS:

El código JCL:

//STEP15 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //ACCTDATA DD DISP=SHR, // DSN=AWS.M2.CARDDEMO.ACCTDATA.PS //ACCTVSAM DD DISP=SHR, // DSN=AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS //SYSIN DD * REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM) /*

y la correspondiente modernización de Groovy:

mpr.withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .bluesam("ACCTDATA") .dataset("AWS.M2.CARDDEMO.ACCTDATA.PS") .disposition("SHR") .build() .bluesam("ACCTVSAM") .dataset("AWS.M2.CARDDEMO.ACCTDATA.VSAM.KSDS") .disposition("SHR") .build() .fileSystem("SYSIN") .stream("REPRO INFILE(ACCTDATA) OUTFILE(ACCTVSAM)", getEncoding()) .build() .getFileConfigurations()) .withParameters(params) .runProgram("IDCAMS")

IEBGENER/JSDGENER

Este programa reproduce la utilidad IEBGENER. Se utiliza para copiar y manipular conjuntos de datos secuenciales. Esta implementación amplía la funcionalidad básica de copia al admitir las instrucciones de control de IEBGENER para operaciones avanzadas de procesamiento de datos.

Parameters

Sin argumento. Las operaciones se transfieren a través del conjunto de datos SYSIN.

Conjuntos de datos necesarios

  • SYSIN: contiene sentencias de control (opcional, si no está definido, el programa IEBGENER es idéntico a ICEGENER)

  • SYSUT1: conjunto de datos/archivo de entrada

  • SYSUT2: conjunto de datos/archivo de salida

Características principales/Declaraciones de control de IEBGENER compatibles

Los detalles sobre la declaración de control de IEBGENER que se encuentran en las tarjetas de control SYSIN no se proporcionan aquí, sino que deben obtenerse de la documentación relevante de las plataformas heredadas existentes.

  • GENERATE: define la estructura general del proceso de manipulación de datos especificando el número máximo de tipos de registros (MAXNAME) y campos (MAXFLDS) que se van a procesar

  • REGISTRO: define el diseño y el contenido reales de cada tipo de registro especificando la posición, la longitud y el formato de los campos individuales que se copiarán del conjunto de datos de entrada o se generarán con valores específicos

  • LABEL/MEMBER/EXITno son compatibles

ejemplo:

GENERATE MAXNAME=3,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name */ FIELD=(12,8,CH), /* Birth date */ FIELD=(20,8,CH,VALUE='ACTIVE') RECORD TYPE=3, FIELD=(1,1,CH,VALUE='F'), FIELD=(2,30,CH,VALUE='END OF REPORT ')

Gestión de errores

Defina el código de error 0 si la copia se realiza correctamente y 1 si no se realiza correctamente.

Ejemplo de uso

A continuación, se muestra un magnífico ejemplo del uso del programa IEBGENER, resultante de una modernización de JCL mediante la transformación de AWS:

El código JCL:

//GENDATA EXEC PGM=IEBGENER //SYSUT1 DD DSN=INPUT.EMPLOYEE.DATA, // DISP=SHR //SYSUT2 DD DSN=OUTPUT.EMPLOYEE.FILE, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(1,1)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920) //SYSIN DD * GENERATE MAXNAME=2,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name from input */ FIELD=(12,8,CH), /* Birth date from input */ FIELD=(20,8,CH), /* Dept from input */ FIELD=(28,8,CH) /* Salary from input */ /*

y la correspondiente modernización de Groovy:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .systemOut("SYSPRINT") .output("*") .build() .bluesam("SYSUT1") .dataset("INPUT.EMPLOYEE.DATA") .disposition("SHR") .build() .bluesam("SYSUT2") .dataset("OUTPUT.EMPLOYEE.FILE") .disposition("NEW") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .fileSystem("SYSIN") .stream( """GENERATE MAXNAME=2,MAXFLDS=5 RECORD TYPE=1, FIELD=(1,1,CH,VALUE='H'), FIELD=(2,30,CH,VALUE='EMPLOYEE SALARY REPORT 2024 ') RECORD TYPE=2, FIELD=(1,1,CH,VALUE='D'), FIELD=(2,10,CH), /* Name from input */ FIELD=(12,8,CH), /* Birth date from input */ FIELD=(20,8,CH), /* Dept from input */ FIELD=(28,8,CH) /* Salary from input */""", getEncoding()) .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEBGENER")

IEFBR14

IEFBR14 es un programa de «no hacer nada» que simplemente regresa con un código de retorno de 0 (cero). Su uso principal es la asignación de conjuntos de datos, la eliminación o el mantenimiento del catálogo mediante sentencias DD, sin realizar ningún procesamiento de datos real.

Parameters

Sin argumento

Gestión de errores

Establezca siempre el código de error 0.

Ejemplo de uso

A continuación, se muestra un magnífico ejemplo del uso del IEFBR14 programa, resultante de una modernización de JCL mediante la transformación de AWS:

El código de JCL para crear un nuevo conjunto de datos secuencial:

//STEP1 EXEC PGM=IEFBR14 //NEWSEQ DD DSN=USER.NEW.SEQ.DATA, // DISP=(NEW,CATLG,DELETE), // SPACE=(TRK,(10,5)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920)

y la correspondiente modernización de Groovy:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("NEWSEQ") .dataset("USER.NEW.SEQ.DATA") .disposition("NEW") .normalTermination("CATLG") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEFBR14")

El código JCL para eliminar un conjunto de datos existente:

//STEP3 EXEC PGM=IEFBR14 //DELDD DD DSN=USER.OLD.DATASET, // DISP=(OLD,DELETE,DELETE)

y la correspondiente modernización de Groovy:

mpr .withFileConfigurations(new FileConfigurationUtils() .withJobContext(jobContext) .bluesam("DELDD") .dataset("USER.OLD.DATASET") .disposition("OLD") .normalTermination("DELETE") .abnormalTermination("DELETE") .build() .getFileConfigurations()) .withParameters(params) .runProgram("IEFBR14")

JCLBCICS

Este programa gestiona el estado de los conjuntos de datos, los basa en la configuración y admite archivos individuales y patrones comodín: cambia el campo STATUS de la tabla file_table de JICS. enables/disables

Parameters

Sin argumento. Las operaciones pasan a través de un DatasetsConfiguration objeto, p. ej.

mpr.withDatasetsConfiguration(new DatasetsConfiguration().close(<Dataset Name>)

Contexto

El comportamiento del programa se puede configurar mediante dos parámetros:

En application-utility-pgm.yml:

  • jclbcics.ddname.size(el valor predeterminado es 8): configura globalmente el tamaño del nombre del conjunto de datos; si este valor está establecido y la longitud del nombre del conjunto de datos es inferior a este valor, el nombre del conjunto de datos se truncará.

En un paso individual del archivo Groovy, se llama al programa

  • JCLBCICS_OVERRIDDEN_SIZE: anula el tamaño del nombre del conjunto de datos global:

TreeMap stepMapTransfo = [:] Map stepParams = ["MapTransfo":stepMapTransfo] stepParams["MapTransfo"]["JCLBCICS_OVERRIDDEN_SIZE"] = '6'

Si el tamaño ajustado del nombre dd (después del truncamiento) es inferior a 8, el nombre dd se considera comodín y la función funciona para todos los conjuntos de datos que comiencen con este nombre dd.

Características principales de

Las operaciones admitidas son:

  • ABIERTO: Establece los conjuntos de datos en el estado HABILITADO

  • CERRAR: Establece los conjuntos de datos en el estado DESHABILITADO

Estas operaciones se declaran mediante la clase de DatasetsConfiguration constructor:

new DatasetsConfiguration().close(<DD name>).open(<DD name>)

Nombre DD: nombre del conjunto de datos, se acepta el comodín * si el tamaño del nombre dd es inferior al tamaño máximo del nombre dd (8).

Gestión de errores

Defina el código de error 0

Ejemplo de uso

Este es un magnífico ejemplo del uso del programa JCLBCICS:

deshabilita el conjunto de datos, habilita todos los conjuntos de datos que comiencen con AXUFOLJ3P, habilita todos los conjuntos de datos que comiencen con DX

import com.netfective.bluage.gapwalk.rt.call.MainProgramRunner import com.netfective.bluage.gapwalk.rt.call.ProgramExecutionResult import com.netfective.bluage.gapwalk.rt.io.support.DatasetsConfiguration MainProgramRunner mpr = applicationContext.getBean("com.netfective.bluage.gapwalk.rt.call.ExecutionController",MainProgramRunner.class) def TreeMap stepMapTransfo = [:] def Map stepParams = ['MapTransfo':stepMapTransfo] stepParams['MapTransfo']['JCLBCICS_OVERRIDDEN_SIZE'] = '7' ProgramExecutionResult res = mpr .withDatasetsConfiguration(new DatasetsConfiguration().close("UFOLJ3P").open("AX*").open("DX")) .withParameters(stepParams) .runProgram("JCLBCICS")