El aspecto del pseudo-JCL que utiliza el servidor de construcción
z/OS es parecido al
del JCL estándar con algunas extensiones y restricciones. En este panel de ayuda, a las líneas de
script (una línea de pseudo-JCL) se las llama carta.
Las diferencias principales entre el pseudo-JCL que se utiliza en los scripts de construcción
z/OS y
el JCL que se utiliza para someter un trabajo
z/OS son las
siguientes:
- Pseudo-JCL no tiene carta de trabajo.
- Todas las cartas deben empezar por //, excepto en el caso de datos de dentro de la corriente.
- Puede correlacionar un conjunto de datos con archivos de entrada enviados desde un cliente de
construcción o con archivos que deban devolverse a un cliente de construcción como archivos de
salida. (La palabra clave CCUEXT es una extensión para sentencias DD que soporta esta correlación.)
- Puede utilizar la extensión ENQ en una carta DD para añadirla al nombre del conjunto de datos
asignado por la carta DD.
- Puede proporcionar valores por omisión para variables de sustitución que se utilizan en el
script de construcción. (La sentencia VARS soporta esto.) Así, puede escribir un script genérico y
modificarlo para una construcción determinada estableciendo las variables de sustitución.
- Tiene más flexibilidad al especificar las condiciones para ejecutar un trabajo.
(Por ejemplo, el método de especificar varias condiciones bajo las que debe ejecutarse un paso
difiere del método del JCL real.)
- El script de construcción contiene uno o varios pasos de trabajo. La ejecución de un paso de
trabajo puede ser dependiente del resultado del paso anterior si se utiliza el parámetro COND como
en JCL estándar con una diferencia: en pseudo-JCL, si desea especificar condiciones sobre más de un
paso de trabajo, puede especificar una palabra clave COND= para cada condición.
Están soportados los tipos siguientes de cartas:
- CALL
- Define un paso de trabajo nuevo y especifica el trabajo JCL externo a ejecutar.
Sintaxis:

Donde:
- label
- El nombre del paso.
- jcl
- El archivo JCL externa a ejecutar. Especifique un conjunto de datos secuencial totalmente
calificado o un miembro de un PDS especificado en la sentencia DD llamado CCUPROC.
- WAIT
- Especifica si el servidor de construcción debe esperar a la consecución de este paso antes de
ejecutar el paso siguiente.
- code
- Es el valor que se va a probar con el código de retorno en el paso anterior.
- op
- Es el operador de comparación.
- step
- Es el nombre del paso que emite el código de retorno.
Tenga en cuenta los aspectos siguientes al llamar al JCL externo desde el
pseudo-JCL:
- El contenido del archivo JCL debe ser una corriente de trabajo autónoma con una carta de
trabajo adecuada.
- El JCL especificado se somete a ejecución, después de modificarlo para sustituir las variables
conocidas por el pseudo-JCL.
- Si se especifica WAIT=NO (o está implícito por omisión) la construcción continúa con cualquier
paso siguiente, dando por supuesto que la condición de retorno del JCL llamado es 0. En este caso,
el trabajo JCL llamado finaliza de forma independiente y el servidor de construcción no está al
tanto de esa ejecución.
- Si se especifica WAIT=YES, debe haber una variable definida con la información siguiente
definida en la carta VARS--
CCULIB=buildServerLoadLibrary
- buildServerLoadLibrary
- La biblioteca de carga del servidor de construcción.
- Para WAIT=YES, el servidor de construcción modifica el JCL a someter y añade un paso al final
para capturar la finalización del trabajo. Este paso escribe un valor de 0 a 1 en un conjunto de
datos temporal basado en el último paso del trabajo sometido. El servidor de construcción utiliza
este valor para el código de retorno del paso.
Excepto 0 y 1, no hay ningún código de retorno
posible y el trabajo debe finalizar normalmente para que el código de retorno esté disponible. El
servidor de construcción espera un máximo de 2 minutos a que finalice el trabajo y después supone
que el trabajo ha finalizado con el código de retorno 1.
A continuación se proporciona un ejemplo de un archivo pseudo-JCL que utiliza la
sentencia CALL:
//V VARS CCULIB=SYS1.SCCULOAD
//T0 EXEC PGM=IEFBR14
//T1 CALL MEMBER=MISC.JCL(COBCOMP),WAIT=YES,COND=(0,EQ,T0)
//T2 EXEC PGM=IEFBR14,COND=(0,EQ,T1)
//
- EXEC
- Define un paso de trabajo nuevo y especifica el nombre del programa a ejecutar.
Sintaxis:

Donde:
- label
- Es el nombre del paso.
- program
- Es el nombre de un módulo de carga ejecutable.
- script name
- Es el nombre de un script pseudo-JCL existente en el PDS asignado por el nombre de definición
de datos (ddname) CCUPROC cuando se inicia el servidor de construcción.
- parameter string
- Es una serie de parámetro que puede contener espacios incorporados y comillas.
Si desea incorporar unas comillas en la serie, especifíquelas entre apóstrofes
('"') o como comillas dobles (""). Si desea incorporar un
apóstrofe en la serie, especifíquelo como dos apóstrofes. Por ejemplo, si el valor de la variable
de sustitución X es it y el pseudo-JCL tiene el campo
PARM='&X''s', el campo en el pseudo-JCL adquiere el valor siguiente:
PARM='it's'
- code
- Es el valor que se va a probar con el código de retorno en el paso anterior.
- op
- Es el operador de comparación.
- step
- Es el nombre del paso que emite el código de retorno.
- DD
- Define la definición de datos para cualesquiera archivos de entrada o de salida. Los datos de
dentro de la corriente van a continuación de una sentencia DD * y finalizan con un
símbolo /*.
Sintaxis:

Donde:
- label
- Es el nombre de DD.
- dsn
- Es el nombre del conjunto de datos.
- stat
- es el estado: NEW (el valor por omisión),
OLD, SHR (compartido) o
MOD (modificado).
- ndisp y adisp
- Son las disposiciones normales y anormales: DELETE,
KEEP (el valor por omisión), CATLG (catalogar)
o UNCATLG (descatalogar).
- rlen
- Es la longitud del registro en bytes.
- bsize
- Es el tamaño del bloque en bytes.
- rfmt
- Es el formato de registro.
- data-set organization
- Es PS o PO.
- unit type
- Es el tipo de unidad.
- unit
- Es la unidad de asignación: TRK, CYL o un
número igual al tamaño de bloque.
- pri
- Es el número primario de unidades de asignación.
- sec
- Es el número secundario de unidades de asignación.
- dir
- Es el número de bloques de directorio para asignaciones de PDS.
- volume
- Especifica el volumen en el que desea asignar el conjunto de datos. Cuando
DSN especifica un nombre de conjunto de datos permanente y
DISP especifica NEW por omisión se utiliza el
volumen asignado por el sistema.
- extension
- Especifica una extensión de nombre de archivo y se utiliza para correlacionar los nombres de
archivo de mensajes, de entrada y de salida con el ddname destino. Por ejemplo:
//USERLIB DD DSN=MY.HEADERS,DISP=SHR,CCUEXT=(H,HPP)
Esto especifica que todos los archivos de entrada y dependientes con la extensión .h y .hpp (no
sensibles a las mayúsculas y minúsculas) se colocarán en el conjunto de datos asignado al ddname
USERLIB.
La misma extensión puede aparecer solamente una vez en el script JCL.
- CCUOUT
- Especifica que el ddname correspondiente es una conjunto de datos secuencial o un miembro de un
conjunto de datos particionado (que normalmente contiene listados de mensajes) que necesita
devolverse al cliente EGL. Por ejemplo:
//COMPILE EXEC PGM=CBCDRVR,..
//SYSIN ..
//SYSOUT DD CCUEXT=CCUOUT,DISP=(NEW,DELETE),SPACE=(32000,(30,30)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
Después de ejecutar el programa
CBCDRVR, se leerá el contenido de SYSOUT y se devolverá al cliente como el archivo COMPILE.SYSOUT
en el sistema de archivos del cliente.
- CCUSTD
- Especifica que los ddname designados con este valor se escribirán en STDOUT en el cliente de
construcción. Por ejemplo:
//COMPILE EXEC PGM=CBCDRVR,..
//SYSIN ..
//SYSOUT DD CCUEXT=CCUSTD,DISP=(NEW,DELETE),SPACE=(32000,(30,30)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
Después de ejecutar el programa
CBCDRVR, se leerá el contenido de SYSOUT, se colocará en STDOUT y se devolverá al cliente como el
archivo COMPILE.SYSOUT en el sistema de archivos del cliente.
- CCUERR
- Especifica que los ddname designados con este valor los colocará en STDERR el cliente ccubldc. Por ejemplo:
//COMPILE EXEC PGM=CBCDRVR,..
//SYSIN ..
//SYSOUT DD CCUEXT=CCUERR,DISP=(NEW,DELETE),SPACE=(32000,(30,30)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
Después de ejecutar el programa
CBCDRVR, se leerá el contenido de SYSOUT, se colocará en STDERR y se devolverá al cliente como el
archivo COMPILE.SYSOUT en el sistema de archivos del cliente.
- ENQ
- Si se establece en YES, indica al servidor de construcción que debe
poner en cola el nombre del conjunto de datos que asigna la carta DD. Esto a veces es necesario cuando el script de
construcción escribe en un conjunto de datos particionado al que pueden acceder simultáneamente más
de una petición de construcción. Si un script de construcción pone en cola un nombre de conjunto de
datos que previamente haya puesto en cola un script de construcción que todavía esté activo, el
script de construcción se pone en cola y se va reintentando periódicamente. Es posible que con esto
se sobrepase el tiempo de espera de la petición de construcción si un gran número de construcciones
simultáneas están en cola en el mismo nombre de conjunto de datos.
- VARS
- Especifica valores por omisión para variables de sustitución.
Sintaxis:

Donde:
- label
- Es el nombre del paso.
- name
- Es el nombre de una variable de sustitución.
- value
- Es la serie que proporciona para el valor de la variable de sustitución.
Ejemplo:
//DEFAULTS VARS EZEPID=USER,
// SYSTEM=ZOSCICS
Puede utilizar variables de sustitución para modificar las cartas.