Gravatar de Kujaku

Primeros pasos en el Mainframe: Lenguaje JCL

Bueno, el documento de hoy estará enfocado en explicar más profundamente cómo hacer el trabajo día a día en un Host. Nos centraremos en los distintos procesos y mas concretamente en el lenguaje JCL (Job Control Lenguaje).

Al término de este documento, seremos capaces de ejecutar un job que nos deje en salida impresa, el texto “Hola Mamones” (lo del “hola mundo” esta muy trillado xDDDD).

Lo primero que debemos hacer es un reseteo de nuestro cerebro, porque en el mundo host, las cosas son muy distintas que en el mundo PC. Por ejemplo, crear un fichero no es algo tan sencillo como pinchar con el ratón sobre el menú Archivo, para luego hacer clic en Nuevo. En un host, todo son unidades de trabajo o jobs que al ejecutarse, producen un resultado (aunque a veces, no el deseado ;)).

Vamos un poco con la explicación de lo que es un Job o Trabajo: Un Job puede ser interactivo (ej, una sesión TSO), puede ser una tarea que se inicia y permanece en memoria para siempre (como un daemon en los distintos sabores de Unix), o puede ser un Job batch es decir: un proceso por lotes.

Todo job se basa en los mismos principios y sigue el mismo flujo: Existe una entrada, un procesamiento y luego una salida con el resultado. De la infraestructura software que dará soporte a todo este flujo de trabajo, se encarga el JES2 (Job Entry Subsystem). Para ello, este subsistema esta organizado de la siguiente manera:

  • Existen una o más clases de entrada (una clase viene a ser una cola FIFO) a la que puedes configurar diversos parámetros de prioridad, ejecución, etc. En este tipo de clase, se alojan los jobs que están esperando para ser ejecutados.
  • Los iniciadores o INITs son los encargados de coger un job que está esperando ser procesado y lo ejecuta. Evidentemente, un iniciador estará asociado a una o varias clases. Vendría a ser como un Thread. Cuantos más threads haya, mas proceso paralelo existirá. Un iniciador también puede hacer caso a más de una clase.
  • Y por último, están las clases de salida, que, al igual que las de entrada, son las colas donde se dejan los resultados de los jobs que posteriormente serán impresos.

En el trabajo diario de un host, para cualquier cosa que debas hacer, necesitas ejecutar muchos jobs para que la máquina haga las cosas que le pides (a este proceso se le llama submit). Si no tenemos ningún iniciador lanzado (cosa rara en un host arrancado), siempre se puede ir a la Master Console y teclear el siguiente Comando: S INIT.INIT1,,,A. Esto hará que lancemos un iniciador que lo hemos llamado INIT1 (pero puede ser cualquier nombre) que solo ejecutará los jobs que sean de la Clase A. Con esto, tenemos todo el sistema listo: Si ejecutamos un job de clase A entrará por INIT1 y si mientras está en ejecución lanzamos 20 jobs más de tipo A, se quedarán en la cola de entrada hasta que les llegue su turno (a menos que lancemos más iniciadores que hagan caso de la clase A, con lo que podrían ejecutarse en paralelo).

Los jobs, una vez ejecutados, quedarán en la clase o cola de salida que especifiquemos en el job hasta que una impresora que haga caso a dicha clase los imprima.

Hasta aquí, creo que no hay muchas dudas, ¿no? Bueno, antes de seguir, vamos a exponer un par de definiciones:

  • Paso o Step: Conjunto de líneas asociadas a un programa, que incluyen el programa en si y los datos que utilizará, así como sus parámetros.
  • Job: Conjunto de Pasos que se ejecutan consecutivamente.

Bien, nos metemos de lleno al tema: Para definir o crear un job, haremos uso del lenguaje JCL. Para ello, hay que tener clara la sintaxis, ya que existen ciertas reglas a cumplir, que son las siguientes:

  1. La gran mayoría de las sentencias JCL comienzan con // (existe un delimitador /* que más tarde comentaré).
  2. Todo lo que se escriba a partir de la columna 72, será ignorado.
  3. Todo Job comienza con la sentencia JOB.
  4. Se debe escribir todo en MAYÚSCULAS (si editas el JCL en el ISPF te lo convierte en mayúsculas directamente, pero si no se edita desde ese editor, hay que tenerlo muy en cuenta).
  5. Todo job debe tener como mínimo 1 Paso (sentencia EXEC).
  6. Todo paso debe incluir como mínimo una definición de datos (sentencia DD, viene a ser como el “var” de Pascal).
  7. El job se dará por finalizado cuando se encuentre una única línea con nada mas que //.

Bueno, con estas 7 reglas sencillas, ya podemos meternos de lleno a escribir nuestro JCL. Empecemos por la primera ficha (realmente es una línea, pero antaño cada línea era una ficha perforada y a fuerza de oír a mis mayores, me he quedado con ficha, además, da un aire retro-actual que pa que xDDDDD):

          1         2         3         4         5         6         7
----+----0----+----0----+----0----+----0----+----0----+----0----+----0--
 //MAMONJOB JOB GODDESS,URD,CLASS=A

Los caracteres y números de encima son simplemente para ver en la columna que estamos, así que no hacer demasiado caso.

Analicemos esta ficha: después de las //, aparece el nombre del Job. Puedes poner el que te de la gana, siempre y cuando tenga de 1 a 8 caracteres alfanuméricos, excepto el primer carácter, que debe ser siempre alfabético. He elegido como nombre MAMONJOB porque es un job que imprimirá “Hola Mamones”.

Lo siguiente es la sentencia JOB, que indica al SO (en este caso al JES2) que comienza nuestro Job.

Lo siguiente a explicar son los parámetros que puede llevar una sentencia JOB. Los hay de dos tipos: Parámetros posicionales y de Keyword o Referencia. Los de Keyword se diferencian en los posicionales en que llevan un = que les da un valor. Los posicionales, son en sí variables y de relevancia para el JES2. Como podéis ver, los parámetros se separan con comas. Eso si, hay una regla: Si vas a tener los dos tipos de parámetros en el job, debes poner primero los posicionales y luego los de keyword.

En nuestro ejemplo, la primera ficha muestra 3 parámetros: dos posicionales y un Keyword. Para el parser del JES2, el primer parámetro (opcional) GODDESS hace referencia al Accounting del job, es decir, si existe una entrada en la contabilidad llamada GODDESS, los ciclos de CPU que consuma este job irán a parar a esa entrada, de forma que puedes conocer cuanta CPU ha consumido dicha entrada a lo largo del mes, por ejemplo. El segundo parámetro lo toma el JES2 como el nombre del/la programador/a, que en este caso es URD (una de las mejoras administradoras del mundo), y el ultimo parámetro, que es Keyword, indica la clase donde se ejecutará el job. Este último parámetro dará la pista sobre que iniciador se ejecutara. Sencillo, ¿verdad?.

Existen más parámetros (algunos opcionales, otros no tanto) que se pueden poner en el job, como descripciones del job y demás, pero nos vamos a encontrar con que no nos van a entrar en una sola ficha. Por lo que se debe escribir una ficha o línea de continuación. Y ¿Cómo se hace esto? Tirado:

He comentado antes que los parámetros se ponen separados por comas. Si el JES2 encuentra una coma y luego un espacio en blanco, asume que los parámetros siguen en la siguiente ficha, en algún lugar de entre las columnas 4 y 16. Se recomienda que la continuación la escribamos a partir de la columna 16, porque queda mas tabulado. Así que si queremos poner más parámetros, basta con añadir en la segunda línea, en los caracteres 1 y 2, las // y continuar en la columna 16, quedando el tema tal que así:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,<strong>MSGCLASS=A,
//             MSGLEVEL=(1,1)</strong></pre>

Tenemos 2 sentencias nuevas:

  • MSGCLASS que indica en qué cola donde dejar los mensajes que genere la ejecución del JCL.
  • MSGLEVEL que, mediante dos sub-parámetros posicionales (van entre paréntesis) que como veis se separan asimismo por comas, indican que queremos todos los mensajes JCL que se generen en el sistema (el primer 1) y luego, que también queremos los mensajes relacionados si reservamos o “allocamos” ficheros que vaya a usar el job (el segundo 1). Si sólo quisiéramos los mensajes JCL, el MSGLEVEL quedaría así: MSGLEVEL(1,0).

De todas formas, yo recomiendo siempre que salga todo (de hecho, en el trabajo diario, la ficha job yo suelo usar siempre la misma copiando y pegando). Por finalizar, si ya no hay comas detrás del último parámetro, el parser da por terminada la sentencia JOB.

Ahora, vamos con la ejecución del programa. ¡Cooooño! ¡Que no hemos escrito ningún programa! Bueno, afortunadamente IBM nos proporciona cientos de programas con el SO MVS, así que vamos a hacer uso de ellos. Estos programas se llaman UTILITIES en la jerga mainframera. De modo que haremos uso de una utility muy socorrida, llamada IEBGENER. Esta utility, entre otras muchas cosas, copia datos de un sitio a otro. O copia datos a un fichero, vamos, copia cualquier tipo de cosas. Nuestro JCL quedaría así:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1) 
//PASO1   EXEC PGM=IEBGENER

Claro, esa utility necesita ser colocada en memoria. Como ignoro lo que ocupa, vamos a decirle al JCL que por lo menos el JES2 reserve 256KB de RAM para que dicha utility pueda ser ejecutada. Eso se consigue de dos maneras:

  1. Añadiendo REGION=256K a la línea en la ficha JOB, con lo que todo el job tendrá 256 KB de RAM para su uso.
  2. Añadiendo REGION=256K al paso en cuestión, con lo que si nuestro job tuviera mas de un paso, cada uno podría tener su propia memoria reservada.

Pero para no marear la perdiz, añadiremos al todo el job la reserva de memoria. Así pues, nuestro job quedará así:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER

Como antes, comentaremos esta nueva ficha: PASO1 es un nombre opcional para el paso de ejecución, y le aplica las mismas normas de nomenclatura que para el nombre del JOB.

Respecto al IEBGENER, tiene una serie de parámetros que se deben introducir, como por ejemplo de donde copiar, a donde copiar, donde introducir parámetros especiales… Para ello, si vamos al manual de MVS System Utilities, y buscamos IEBGENER, nos encontramos con los siguientes parámetros que utiliza esta utility:

  • SYSUT1: Desde donde vas a copiar.
  • SYSUT2: Hacia donde copias.
  • SYSIN: Parámetros adicionales que le quieras meter para condicionar la copia.
  • SYSPRINT: Salida del resultado de esos parámetros adicionales.

En definitiva, IEBGENER copia lo que esta en SYSUT1 a SYSUT2 de acuerdo a los parámetros de SYSIN dejando el resultado de esos parámetros en SYSPRINT.

Por lo tanto, debemos meter esas 4 definiciones de datos en nuestro JCL. Para ello, haremos uso de la sentencia DD (Data Definition). Como he dicho mas arriba, DD es como el “var” de Pascal para definir las variables. Así que vamos a actualizar nuestro JCL, añadiendo también las dos // del final del job:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER 
//SYSUT1   DD  *
Hola, Mamones!!
//SYSUT2   DD  SYSOUT=A
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//

Atentos a este tema que es el quiz de la cuestión: Como no disponemos de un fichero cuyo contenido sea Hola Mamones, hay una manera de incluir ese dato dentro del propio jobstream o flujo del job: Utilizando la definición DD *. Cuando el parser se encuentra con esta construcción, asume que las siguientes líneas serán el contenido del dato en si, que dejara en SYSUT1. ¿Cuando termina de asumir que las siguientes fichas son datos? Cuando se encuentra con un /* o una ficha nueva del job que se verá en seguida porque aparecen las // en las columnas 1 y 2.

De hecho, es más bonito visualmente que el job quede así, añadiendo ese /*:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER
//SYSUT1   DD  * 
Hola, Mamones!!
/* 
//SYSUT2   DD  SYSOUT=A
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//

Entonces, si podemos añadir el dato directamente en el job, podríamos hasta hacer un banner y todo:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER
//SYSUT1   DD  *
**********************************************************
*                                                        *
*                       Hola, Mamones!!                  *
*                                                        *
********************************************************** 
/*
//SYSUT2   DD  SYSOUT=A
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//

Pero… ¿qué pasaría si en lugar de asteriscos, queremos poner todo /? El parser se volvería loco porque interpretaría que las siguientes fichas son sentencias de JCL, dando un error como una catedral. Pues hay un truco: Si en lugar de poner DD * se pone DD DATA, todo lo que encuentre desde ahí hasta el /* para él será un dato. Por lo que nuestro job podría quedar así:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER
//SYSUT1   DD  DATA
/////////////////////////////////////////////////////////
//                                                     //
//                      Hola, Mamones!!                //
//                                                     //
///////////////////////////////////////////////////////// 
/*
//SYSUT2   DD  SYSOUT=A
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//

Ya os veo venir con la siguiente pregunta: ¿Y qué pasa si en algún lugar de nuestro dato, aparece un /*? ¡¡Pues que también esta previsto, cacho-perros!! xDDDD.

En ese caso, se crea un delimitador con una serie de caracteres que sabes que no se van a repetir en todo el job (por ejemplo, $$ o <>), con la sentencia DD DATA DLM=$$ o DD DATA DLM=<> quedando el tema así:

         1     1   2         3         4         5         6         7 7
----+----0----+6---0----+----0----+----0----+----0----+----0----+----0-2
//MAMONJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1),REGION=256K
//PASO1   EXEC PGM=IEBGENER
//SYSUT1   DD  DATA,DLM=$$ 
/*******************************************************/
/*                                                     */
/*                      Hola, Mamones!!                */
/*                                                     */
/*******************************************************/
$$ 
//SYSUT2   DD  SYSOUT=A
//SYSPRINT DD  SYSOUT=A
//SYSIN    DD  DUMMY
//

¿Contentos? xDDD. Con esto, ya hemos definido lo que queremos copiar en SYSUT1. Pero seguimos explicando el JOB: SYSUT2 tiene una Data Definition que apunta a la clase de salida A (SYSOUT=A), lo mismo que SYSPRINT.

Es decir, que el resultado se escribirá en la salida de la clase A. Y por último tenemos una ultima DD que es SYSIN, y que en este caso hay un DUMMY. DUMMY se pone cuando no quieres poner parámetros adicionales. Es como poner /dev/null. Por lo tanto, es de esperar que SYSPRINT no escriba nada en la cola A ya que no hay ningún SYSIN.

Entonces, ¿qué hará este job? Usando IEBGENER, copiara el banner que está definido en SYSUT1 y lo dejará en SYSUT2, que como esta última variable tiene asociada una clase de salida, dejará el banner en esa salida. Y, si tenemos una impresora asociada a esa clase, imprimirá dicho banner. Tirado, ¿no?.

Hasta aquí el primer capítulo de JCL. En el siguiente explicaré como se tratan los ficheros o datasets, basándonos en este ejemplo del JCL (si tenéis un host a mano o habéis instalado el MVS freeware, probad este job, porque funciona).

59 Comentarios (feed)

  1. Gravatar de Jordi Planas Jordi Planas nos comenta:

    Pues me acuerdo mas de lo que pensaba…. y eso que no escribo un job desde 1979!!!!!

    Muchas gracias por estos recuerdos……

    Viernes, 19 de Enero/2007 @ 21:14

  2. Gravatar de guillem guillem nos comenta:

    Pues yo en pleno Enero de 2007 he escrito varios JCLs… esta misma mañana por ejemplo. Y donde lo he hecho piensan seguir con eso por muchos años X’-D

    Viernes, 19 de Enero/2007 @ 21:28

  3. Gravatar de guillem guillem nos comenta:

    Umh… y curiosamente nací en 1979. Seré la reencarnación de alguien? ¬¬

    Viernes, 19 de Enero/2007 @ 21:33

  4. Gravatar de kr0n kr0n nos comenta:

    Yo trabajo todos los dias con JCLs y nosotros en mi trabajo decimos que que Dios picó un JCL desde 0 y el resto de personas humanas hacen copy-paste de los trozos que interesan xD

    El TSO, HOST, JCLs, COBOL, CICS, DB2, etc son tecnologias muy antiguas perro que se siguen usando muchisimo en muchas empresas y dando buen rendimiento.

    Saludos

    Viernes, 19 de Enero/2007 @ 23:52

  5. Gravatar de Biel Biel nos comenta:

    Muy cierto kr0n! :D
    No he visto a nadie crear un JCL desde cero. Yo, hago copy-paste para poner cualquier cosa, un SORT o un paso sencillo.

    Eso sí, he tenido que aprender dos tipos de JCL, los de MVS y los de VSE, que tienen bastantes cosas diferentes, aunque en el fondo sean lo mismo.

    Por cierto, yo también nací en el 79 ;)

    Sábado, 20 de Enero/2007 @ 1:03

  6. Gravatar de Kujaku Kujaku nos comenta:

    Ya veo que sois expertos en el CC arriba, el CC abajo y luego poneros en la linea correspondiente y hacer un A o B en el ISPF ;)

    En las instalaciones que he estado yo (y he estado en bastantes), generalmente el tema de la definicion del JOB te la suelen imponer de una manera determinada, porque entra en juego el accounting y es importante en algunas empresas la CPU que llegas a usar a lo largo del dia para sus estadisticas (sobre todo, aquellas donde ves que la CPU anda en torno al 100% todo el dia). Tambien me he encontrado en que por ejemplo, para compilar un programa COBOL tengas una clase asignada y que dicha clase haga referencia a un iniciador con muy poca prioridad, por lo que te eternizas… pero ahora, con el Work-Load Manager, la cosa ha cambiado bastante y lo de las clases es algo mas anecdotico…

    Domingo, 21 de Enero/2007 @ 1:38

  7. Gravatar de Jimmy Jazz Jimmy Jazz nos comenta:

    Aquí otro que anda con JCL’s y Lanzadores de vez en cuando, aunque la mayoría de las cosas que hacemos van con CICS. Un saludo, y sigue con tus artículos mainframeros!!

    Martes, 23 de Enero/2007 @ 15:19

  8. Gravatar de ymelo ymelo nos comenta:

    Hola, he entrado en esta página buscando algún manual de JCL y CICS en castellano, por si alguno de vosotros que estais acostumbrados a trabajar en estos entornos me podeís facilitar, o bien comentarme alguna dirección donde los pueda descargar.
    Mi correo es ymelo@indra.es
    Muchas gracias.

    Jueves, 25 de Enero/2007 @ 10:19

  9. Gravatar de Kujaku Kujaku nos comenta:

    En castellano me temo que no hay practicamente nada, y lo que hay, son los manuales de los cursos de formación de IBM que están férreamente guardados. Digo yo que si tienen Redbooks, podrían tener “Libros Rojos” también no?

    Creo que solo queda la esperanza que alguno de nosotros, utilizadores de mainframes, nos pongamos manos a la obra para escribir un libro sobre ello…

    Viernes, 16 de Febrero/2007 @ 10:29

  10. Gravatar de Armonth Armonth nos comenta:

    Creo que solo queda la esperanza que alguno de nosotros, utilizadores de mainframes, nos pongamos manos a la obra para escribir un libro sobre ello…

    ¿Qué necesitas? :-P

    Viernes, 16 de Febrero/2007 @ 11:22

  11. Gravatar de arco arco nos comenta:

    Hola a Todos, yo también ando por estos
    inframundos que nos dan las lentejas a los que nos acercamos por estos sitios.

    En este momento lo que necesitaría es algun pequeño ejemplo acompañado de su explicacion, de generación dinámica de jcl’s.
    La generacion dinámica de sysines la mediocontrolo pero creo que será insuficiente
    para la magnitud del aplicativo que voy a acometer.

    Gracias a Todos

    Martes, 20 de Febrero/2007 @ 10:34

  12. Gravatar de Juan Pablo Juan Pablo nos comenta:

    Cual es el siguiente capitulo de Primeros pasos en el Mainframe: Lenguaje JCL “explicaré como se tratan los ficheros o datasets”

    Saludos

    Jueves, 15 de Marzo/2007 @ 17:17

  13. Gravatar de eltilas eltilas nos comenta:

    Hola a todos, que buena pagina, sobre todo cuando llevo viendo jcl´s,cics, que si el ispf, que si da ojob, que si los jobs acabados en error etc desde hace menos de 2 semanas xDDDDDDDDDDDD

    Martes, 10 de Abril/2007 @ 5:36

  14. Gravatar de Pedro Pedro nos comenta:

    Nunca he entendido el ocultismo de IBM con los JCL’s.
    Hay que dismitificar este capitulo oscuro del mainframe
    que entiendo le ha dañado en el tiempo.
    Me parece un excelente capítulo y espero que sigas adelante
    con los siguientes. Auguro una gran expectacion.

    Lunes, 21 de Mayo/2007 @ 14:00

  15. Gravatar de Jesica Jesica nos comenta:

    La verdad, me encanto tu explicacion, yo, a diferencia de la mayoria de los posteadores, no syo un dinosaurio del mainframe, tengo apenas 21 añitos y menos de 1 año de experiencia, la cosa es que mañana tengo una entrevista con examen tecnico, y tu guia me ayudo mucho para repasar contenidos!
    Muchas gracias por el aporte!

    Martes, 22 de Mayo/2007 @ 7:13

  16. Gravatar de Maynard Maynard nos comenta:

    Estoy estudiando JCL y justo tenía conexión a internet he estado mirando y buahs, entiendo mejor esto que al profe, xDDDD

    Gracias

    Miércoles, 23 de Mayo/2007 @ 11:25

  17. Gravatar de Maynard Maynard nos comenta:

    MMM, veo que tratais todos los temas que actualmente estoy estudiando. Conocéis alguna paginilla chuli donde mirar según qué cosas sobre este tema?

    Gracias de nuevo

    Miércoles, 23 de Mayo/2007 @ 11:40

  18. Gravatar de Maynard Maynard nos comenta:

    Hay posibilidad de instalarlo en casa? para practicar, existe algún emulador?

    Miércoles, 23 de Mayo/2007 @ 12:27

  19. Gravatar de Kujaku Kujaku nos comenta:

    Hola:

    Maynard, si buscas en esta misma página o en la mia (www.yggdrasil.tv), verás que he escrito un artículo de como instalar Hercules, un emulador de mainframe para PC. Y bueno, también doy algunas indiciaciones sobre cómo instalar un MVS freeware y un Z/OS de dudosa legalidad que circula por el emule… ;)

    Lunes, 28 de Mayo/2007 @ 10:00

  20. Gravatar de fedescre fedescre nos comenta:

    Hola a todos:
    Soy un Cobolero viejo, que me encontre de momento a
    otro tener que trabajar con CICS, JCL, ETC. Me parece
    fenomenal el articulo. A seguir asi y espero que que
    no te desanimes.

    Lunes, 28 de Mayo/2007 @ 17:25

  21. Gravatar de Carlos García Carlos García nos comenta:

    Soy nuevo en esto de JCL, y mi informacion esta en 390, por lo que necesito realizar descargas de datos.. a parte de realizar descargar.. puedo mover con un JCL este archivo plano a otros servidor? o debo ejecutar otro programa?

    Miércoles, 6 de Junio/2007 @ 19:14

  22. Gravatar de bocha bocha nos comenta:

    chicos todo esta muy bueno, yo trabajo en mainframe desde hac e 28 años y me mucha lastima que les escondan informacion, a todos los nuevos en esto les digo que busquen en sus instalaciones manuales de jcl, o los cd de los redbooks, disciento con quien dice que ibm esconde información, somos sus propios compañeros los que hacemso esto, lo que pasa que ahora no se respeta la secuencia en el trabajo mainframe, antes era graboverificador(data entry), operador de consola, carga de maquina , implementadores, soporte tecnico y a los que les gustaba pasaban a desarrollo, con todos los conocimientos necesarios de equipo que muchos de ustedes no tiene., espero no haber ofendido a nadie, saludos a todos

    Lunes, 11 de Junio/2007 @ 4:18

  23. Gravatar de Kujaku Kujaku nos comenta:

    Carlos, no entiendo muy bien a lo que te refieres. Si lo que deseas es sacar JCLs o cualquier fichero secuencial, lo puedes hacer perfectamente si dipones del Personal Communications. Desde una ventana TSO del ISPF (generalmente la opcion 6 Command), das al boton de “Recibir Fichero” y con decirle el nombre del dataset y el miembro (por ejemplo, LIBRERIA.JCLS(PRUEBA), siendo PRUEBA el JCL que te quieres bajar), y luego darle un destino en tu windows con formato txt, te lo baja. Para subir un fichero al Host, pues al reves, pero ten en cuenta que segun que seguridad tengas instalada, quizas debas “alocar” el dataset antes…

    Viernes, 22 de Junio/2007 @ 9:12

  24. Gravatar de hryd hryd nos comenta:

    Buenas. Estoy trabajando con JCL´s y tengo un problema. Vamos a ver, ¿hay algún parámetro en los JCL que me haga más eficiente el acceso a los archivos del HFS?

    Viernes, 27 de Julio/2007 @ 8:31

  25. Gravatar de Ariel Ariel nos comenta:

    Hacia rato que venia buscando sobre JCL para aprender profundamente lo que hago diariamente, pero nunca encontraba nada, hoy tuve mucha suerte, trabajo en una empresa en Argentina con 10 años de antiguedad y ase 4 años me pasaron de jobstreamer, y lo que sé lo aprendí ahí, con cada cancelación que se presentaba era un un poco más lo que aprendía, pero la verdad es que sé analizar bien cada cancelación, pero como dicen todos, nunca escribo nada, todo lo copio, y si hay que agregar algo lo busco en otro job para ver como va. Pero yo necesito saber los fundamentos de porque cada cosa, por eso me alegro de encontrar esta pagina, al autor de blog le ruego que nunca deje de escribir, necesito aprender…, ya este primer capitulo es una maza, espero el próximo….simplente sos un capo!!!
    Un abrazo
    Ariel

    Domingo, 12 de Agosto/2007 @ 1:48

  26. Gravatar de Armonth Armonth nos comenta:

    Ariel el autor de las entradas (Kujaku) ha escrito varias más, todas ellas bajo la “etiqueta” de “mainframes”.

    Domingo, 12 de Agosto/2007 @ 2:37

  27. Gravatar de Ariel Ariel nos comenta:

    Armonth mil gracias por la data, ya mismo me las pongo a explorar

    Domingo, 12 de Agosto/2007 @ 3:44

  28. Gravatar de DARIO DARIO nos comenta:

    Esta muy buena la explicacion, me ha sido de gran ayuda ya que empece a trabajar en esto de mainframe hace tres meses, deberian hacer algun articulo sobre vsam

    saludos desde Uruguay

    Martes, 14 de Agosto/2007 @ 22:10

  29. Gravatar de wilmer gomez wilmer gomez nos comenta:

    conocci el sitio hoy, trabaje con jcl hace diez años y quiero retomarlo, por favor envienme mas informacion para actualizarme
    y gracias por la iniciativa q tubieron

    Domingo, 19 de Agosto/2007 @ 17:39

  30. Gravatar de diana diana nos comenta:

    Yo soy nueva en esto de JCL y este tutorial me ayudo mucho a entender cmo es q funcionan los JOBS y como se codifican…gracias!

    Espero pronto en siguiente tutorial!

    Jueves, 6 de Septiembre/2007 @ 2:12

  31. Gravatar de JUAN JUAN nos comenta:

    Buenas tardes

    quisiera saber si aparte de hercules existe un entorno de programacion para cobol.
    Yo vengo de comenzar una formacion en grandes sistemas ibm y quisiera practicar mi cobol en casa.
    Por cierto hay que tener cuidado con las formaciones porque en la mia ofrecen practicas en maquinas ibm y lo que obtuve es un emulador sistema ibm Merant que es la peor cosa que se haya inventado.
    Si alguno conoce de un buen tutorial que me lo diga porque me urge muchisimo.
    me gusto bastante el tutorilal de JCL quizas yo tambien me ponga a escribir porgramas tambien.

    Hasta pronto.

    Se los agradezco por anticipado.

    Domingo, 16 de Septiembre/2007 @ 19:31

  32. Gravatar de Manuel Manuel nos comenta:

    Saludos, me parece una web buenisima, tengo 24 años entré a trabajar en un nuevo sitio para trabajar con JCLs, yo solo se CL(Lenguaje de contro AS/400), pensaba que era parecido pero no. He estado ajeando los red book pero me parecen muy poco aclarativos y dificiles de entender. Si alguien me puediera indicar donde puedo consegir documentación o algún manual en castellano estaria muy agradecido. De todas formas gracias

    Jueves, 27 de Septiembre/2007 @ 17:10

  33. Gravatar de Encarnas Encarnas nos comenta:

    Muy práctica la explicación.
    ¿Para cuando el siguiente capítulo?

    Lunes, 26 de Noviembre/2007 @ 13:02

  34. Gravatar de serg serg nos comenta:

    Gracias por toda la información q nos ofreces. Es dificil encotrar información sobre estos temas y mucho menos tan entendible y util.

    Jueves, 29 de Noviembre/2007 @ 11:27

  35. Gravatar de jfern jfern nos comenta:

    Me gusto mucho lo del curso de jcl es muy dificil encontrar algo asi y en espanol.
    Quisiera saber si alguien de ustedes conoce algunb programa para trabajar con cobol en windows y ademas que sea gratuito.

    Les agradezco por adelantado.

    Viernes, 30 de Noviembre/2007 @ 12:43

  36. Gravatar de kaminante kaminante nos comenta:

    Muy buena la explicacion… y el siguiente capitulo??

    Viernes, 30 de Noviembre/2007 @ 21:30

  37. Gravatar de Armonth Armonth nos comenta:

    kaminante, jfern: muchas de las preguntas que se suelen hacer (junto a ¿para cuándo las continuaciones?) suelen contestarse con que miréis los otros posts al respecto: TODOS están bajo la “etiqueta” de mainframes.

    Viernes, 30 de Noviembre/2007 @ 21:58

  38. Gravatar de EDUX EDUX nos comenta:

    Excelente, soy nuevo en esto y la verdad si cuesta mucho trabajo encontrar info en español ojala subas mas

    Miércoles, 6 de Febrero/2008 @ 0:35

  39. Gravatar de Racso Mex Racso Mex nos comenta:

    Hola a todos, entre a esta pagina buscando informacion sobre IDCAMS y sus bondades, no lo encontre, PERO, veo que estan interesados en conseguir una guia de JCL. Hace unos años, me di a la tarea con el apoyo de algunos compañeros de trabajo, traducirla al español (mexicano) y ha funcionado para quien la consulta, claro ! no tan amena como lo hace Kujaku. Si ha alguien le interesa, se la puedo hacer llegar por email.

    Viernes, 4 de Abril/2008 @ 7:22

  40. Gravatar de erasmo erasmo nos comenta:

    Racso Mex
    Te agreadeceria que me hicieras la guia de jlc
    mi email es eras_alc@hotmail.com o eraalcmuj@gmail.com
    Agradecido de antemano…..mano
    Desde aca Chile y para todo el mundo

    Viernes, 4 de Abril/2008 @ 21:36

  41. Gravatar de Carlosp Carlosp nos comenta:

    Si puedes por favor mandarme la guia a mi tambien te estaría muy agradecido.

    Un saludo.

    carlitri01@hotmail.com

    Jueves, 10 de Abril/2008 @ 13:13

  42. Gravatar de Alexa Alexa nos comenta:

    Hola amigo Racso Mex, por favor enviame la guia a mi tambien.

    Muchas gracias

    Saludos

    Viernes, 11 de Abril/2008 @ 8:00

  43. Gravatar de Monik Monik nos comenta:

    encontre la pagina por casualidad y la encontre buena, espero leer los siguientes capitulos.

    Racso Mex, me puedes enviar tambien la guia, gracias de antemano, a:

    mnk.diaz@gmail.com

    Saludos.

    Viernes, 11 de Abril/2008 @ 19:17

  44. Gravatar de Mar Mar nos comenta:

    HOla Racso Men, podrías por favor enviarme tú guía de JCL.

    Gracias.

    cuidaecolomar@gmail.com

    Lunes, 14 de Abril/2008 @ 23:43

  45. Gravatar de Eduardo Eduardo nos comenta:

    Racso Mex, me puedes enviar tambien la guia, gracias
    Mi direccion es eduardo.cuerda@gmail.com

    Martes, 13 de Mayo/2008 @ 8:46

  46. Gravatar de Pepe-sur Pepe-sur nos comenta:

    Racso Mex, por favor enviame tambien la guia, gracias.
    Mi direccion es pepe_ecointernet@yahoo.es

    Viernes, 16 de Mayo/2008 @ 17:46

  47. Gravatar de Marcelo Marcelo nos comenta:

    Racso Mex
    Podrias enviarme el documento de jcl y si tienes tambien algo de Cobol te lo agradeceria.

    Gracias

    edules21@hotmail.com

    Lunes, 19 de Mayo/2008 @ 23:43

  48. Gravatar de YASMIN ARAUJO YASMIN ARAUJO nos comenta:

    Buenas empecé en un nuevo trabajo y tengo que trabaja con jcl por favor si tienen una guía que me pueda ayudar a entender el manejo y los errores se lo agradezco mi correo es yasmin_araujo@cantv.net

    Sábado, 24 de Mayo/2008 @ 11:20

  49. Gravatar de Sebastian Sebastian nos comenta:

    Racso Mex
    Hola que tal me seria de gran ayuda si me pudiereas enviar tu manula de JCL y si tienes algo de Storage me seria de muchisima ayuda ya que estoy empesando en esto de las mainframe y me estan enviando al area de Storage.

    Gracias

    Mi correo es sebastian_cps@hotmail.com

    Martes, 27 de Mayo/2008 @ 17:23

  50. Gravatar de salvador salvador nos comenta:

    Para Racso Mex.
    Me seria de gran ayuda ami tambien ese manual.
    un saludo para todos.

    Jueves, 29 de Mayo/2008 @ 20:08

  51. Gravatar de erasmo erasmo nos comenta:

    Se nos perdió Racso y el manual de jcl jijjijiiji

    Lunes, 2 de Junio/2008 @ 15:40

  52. Gravatar de ana ana nos comenta:

    puedes enviarme a mi también la guia? me sería de mucha utilidad en mi trabajo, gracias. Mi correo es:
    ana_aramen@yahoo.es

    Jueves, 12 de Junio/2008 @ 13:49

  53. Gravatar de JL JL nos comenta:

    Sabes si es posible ejecutar desde un jcl (host) un fichero externo local. Me refiero a un .BAT
    Muchas gracias

    Viernes, 13 de Junio/2008 @ 8:31

  54. Gravatar de LUCIA LUCIA nos comenta:

    Pues me parece bastante claro tu ejemplo sobre este JCL para sacar el clásico mensaje en pantalla, ahora estoy probando con el REPRO para pasarlo de un fichero a otro y poder verlo con el INFILE Y OUTFILE, donde puedo seguir viendo los siguientes capitulos del JCL? y por cierto cuando me crea ya en el JSL JOB (cuando submitimos) un duplicado del archivo como error que tendriamos k hacer?…lo que hice fue crear otro pass con un delete porque yo lo estaba catalogando y desechando, entonces los duplicaba x decirlo asi…de que otra manera podria hacer lo mismo pero sin el DELETE cuando comienza a submitir el JCL?…Gracias.

    Martes, 17 de Junio/2008 @ 7:31

  55. Gravatar de LUCIA LUCIA nos comenta:

    X cierto podrias pasarme tu guia , muchas gracias.

    jerum_chris@hotmail.com

    Martes, 17 de Junio/2008 @ 7:33

  56. Gravatar de Aurun Aurun nos comenta:

    Hola a todo mundo!!

    Alguien comento que no escribia un job desde 1979, vaya yo para esa fechas ni en planes de nacer estaba jajajaaaa….pero bueno, recien me integre al mercado laboral y me salen con la sorpresa de que debo aprender COBOL, JCL’s,CICS, DB2, etc… y yo vengo del mundo Java y ORACLE, asi que tu pagina me ha sido un acercamiento amistoso a los JCL, espero salga pronto la siguiente parte…

    Lunes, 23 de Junio/2008 @ 23:06

  57. Gravatar de isabel isabel nos comenta:

    gracias por el manual he tenido una experiencia religiosa con el pronto sere una gran mainframera besos espero me contestes bye bye

    Martes, 24 de Junio/2008 @ 20:17

  58. Gravatar de javier martinez javier martinez nos comenta:

    me pueden enviar tambien la guia que hacen mension me interesa mucho graci8as

    Sábado, 5 de Julio/2008 @ 22:42

  59. Gravatar de simon templario simon templario nos comenta:

    hola, dentro de mi página tengo un enlace llamado os390pedia. He visto este post, interesantísimo por cierto, y quizá os apetezca visitar ese enlace y comenzar a colaborar con el. me dedico a esto de la consultoría host en os390 (banca principalmente) y aunque lo tengo algo descuidado, tengo la intención de hacer una wikipedia pero dedicada a este mundillo. cobol, cics, ims, jcl, códigos de error…

    por cierto, de web y de wikipedia y tal se poco, como podréis ver, lo que voy haciendo en mis ratos libres [pocos] es a base de prueba-error y alguna ayuda exterior, así que también vendrá bien consejos para el mantenimiento y mejora del wiki que soporta esto.

    lo dicho, disculpad si me he metido como un elefante en una cacharrería y si queréis participar, ayudarme y todo eso, poneros en contacto conmigo.

    he visto que incluso podría ponersele adsense al wiki y quizá comprar posteriormente el dominio. si os gusta la idea, encantado de recibir ayuda.

    s2

    Jueves, 17 de Julio/2008 @ 12:01

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.