Pregunta

He usado el siguiente JCL:

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DUMMY,RECFM=FB,LRECL=80                  
//SYSUT2   DD   DSN=RK.MYDIR.FILES(NEW1),DISP=(SHR)      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY

pude crearlo.Pero no puedo entender el código aquí.¿Hay alguna posibilidad de crear utilizando IEFBR14?Si no, esto es el juicio.Por favor, explícame el código.Gracias

Otros consejos

Si está interesado en la razón por la cual, entienda que IEFBR14 no abre realmente ninguna de las declaraciones DD que usted código en su JCL. Más bien, es solo una forma de taquigrafía para conducir las rutinas de asignación (y desasignación) del sistema. De hecho, si desea que se vea una lista de ensamblajes de IEFBR14, encontraría que son solo dos instrucciones: configure el código de retorno R15 a cero y salga.

Con el procesamiento por lotes, la idea es que el sistema (Jes Plus, el iniciador de lotes) debe hacer una gran cantidad de trabajo antes de que comience una solicitud. Por lo tanto, si asigna un nuevo conjunto de datos, o hace referencia a (digamos) un dispositivo de cinta que lleva tiempo para que el operador se monte, el sistema hace todo esto para usted antes de que se inicie su programa. IEFBR14 es una forma conveniente de usar las rutinas de asignación del sistema para asignar archivos utilizando estas capacidades de JCL.

Pero hay una captura cuando se trata de acceder a los conjuntos de datos PDS en JCL, como si estuvieras tratando de hacer.

Cuando especifique la sintaxis de DSN (Miembro) en JCL, las rutinas de asignación no se preocupan especialmente por la parte miembro: resulta que esto no es una función del iniciador, sino que se implementa en Open / Close. En su ejemplo, la asignación verifica que existe el conjunto de datos (ya que usted codificó DISP= SHR), y cuando un programa abre la declaración DD, las rutinas abiertas emiten automáticamente BPAM Find / Point / Stow para que lo hagan al Miembro de PDS que especificó. Así es como se crea su miembro de PDS, y por lo tanto, debe usar un programa que realmente abra el archivo (es decir, IEBGENR, IEBUPDTE, IEBCOPY, IDCAMS, etc. todo funcionará).

Un pequeño comentario no relacionado es que es posible que desee tener cuidado con la actualización de los conjuntos de datos (especialmente los PD) utilizando DISP= SHR. Si logra incorrectamente el tiempo, dos de estos trabajos podrían en teoría ejecutarse exactamente al mismo tiempo, y esto probablemente causaría corrupción a su conjunto de datos. A menos que esté seguro de que usted es la única tarea que accede a los PDS, es más seguro usar DIP= Old en este caso.

Si desea crear múltiples miembros a la vez, le sugiero a iebupdte.

de IBM:

Este ejemplo básico utiliza IEBUPDTE para agregar dos procedimientos JCL al conjunto de datos llamado My.Proclib:

//ADDPROC1 JOB 1,SMCHUGH,MSGCLASS=X
//         EXEC PGM=IEBUPDTE
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DISP=OLD,DSN=MY.PROCLIB
//SYSUT2   DD DISP=OLD,DSN=MY.PROCLIB
//SYSIN    DD DATA
./ ADD LIST=ALL,NAME=MYJOB1
//STEP1 EXEC=SUZNX1
//PRINT DD SYSOUT=A
// (more JCL for MYJOB1)
//SYSUDUMP DD SYSOUT=* (last JCL for MYJOB1)
./ REPL LIST=ALL,NAME=LASTJOB
//LIST EXEC PGM=SUZNLIST
// (more JCL for this procedure)
//* LAST JCL STATEMENT FOR LASTJOB
./ ENDUP
/*

Esto crea un nuevo miembro, MyJOB1, pero puede ver que también puede reemplazar a los miembros (LASTJOB).

http://publib.boulder.ibm.com/infocenter/zos/basics/topic/com.ibm.zos.zdatamgmt/zsysprogc_utilities_iebupdte.htm

Si está copiando el contenido de un DSN en el nuevo miembro, use IEBGEER.

Para establecer los atributos del nuevo DSN, use dinámicamente el parámetro similar.

Por ejemplo (usando Mikes Ejemplo anterior)

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset                  
//SYSUT2   DD   DISP=(,CATLG,DELETE),DSN=your.output.dataset,
//              LIKE=your.input.dataset      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY   <-- no CONTROL statements

El atributo similar le permite crear fácilmente un nuevo conjunto de datos, utilizando los atributos del conjunto de datos que especifique, también cambié la disposición para reflejar lo que se debe establecer un nuevo DSN.

¡ADVERTENCIA!- en Re Uso de IEBGEER con SYSUT2 DD DSN= PDS (Miembro): No olvide especificar el nombre de miembro: si lo hace, IEBGener, sobrescribirá su PDS desde el principio con lo que se encuentra en Sysut1, comenzando a arruinar suDirectorio de PDS!

La utilidad IEBGEERS se utiliza para copiar un solo archivo.

El nombre de SYSUT1 DD se utiliza para suministrar la entrada o el archivo para copiarse.

El nombre de SYSUT2 DD es el archivo de salida.

El SYSIN DD proporciona las declaraciones de control (si las hay).

//STEP1    EXEC PGM=IEBGENER                            
//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset                  
//SYSUT2   DD   DISP=SHR,DSN=your.output.dataset      
//SYSPRINT DD   SYSOUT=*                                
//SYSIN    DD   DUMMY   <-- no CONTROL statements

Tenga en cuenta que el archivo / DataSet puede ser un conjunto de datos secuencial o un miembro de un conjunto de datos particionado.

//SYSUT1   DD   DISP=SHR,DSN=your.input.dataset(member)                  
//SYSUT2   DD   DISP=SHR,DSN=your.output.dataset(member) 

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top