Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Sintaxis] Setear variable %% JCL con datos de un archivo | coco07 | JCL y utilidades | 1 | 30 de agosto de 2024 22:35 |
| [Sintaxis] Renombrar fichero con fecha | dhitar | JCL y utilidades | 5 | 7 de enero de 2022 09:36 |
| Obtener la longitud del contenido de una variable | Kuk | Cocina Casera | 12 | 19 de marzo de 2021 19:49 |
| [Sintaxis] Compratir variable con un EXE de PowerCOBOL | Recato53 | PowerCOBOL (ActiveX, v4 - v11) | 10 | 14 de febrero de 2017 17:18 |
| [Sintaxis] Ordenar fichero con comando Sort | Begoguay | PowerCOBOL (ActiveX, v4 - v11) | 4 | 14 de noviembre de 2016 10:43 |
![]() |
|
Forero Junior
![]()
|
Buenos días,
Me va a llegar un fichero (por ejemplo F1), procedente de otra máquina, dicho fichero tiene un único registro con el nombre de otro fichero (F2). Lo que quiero tratar el F2, y sobre todo poder validar si tiene contenido. Con outrec he conseguido rellenar algunas fichas sysin, como las de LISTCAT con lo que puedo "preguntar" directamente por el fichero F2 ejemplo Código JCL:
Código JCL:
Que es como si hubiera hecho esto. Código JCL:
Lo malo es que este método no me funciona para otros procesos. Por favor ¿hay alguna manera de informar o setear una variable jcl con el contenido del F1 (el F2)? Saludos y gracias. |
||||||||
|
|
|
|
Administrador
![]()
|
RaulC, a lo mejor podrías intentar grabando el dato que te interesa a un miembro de PDS el cual luego introduces en tu JCL con INCLUDE:
Código JCL:
Otra opción sería crear un JOB en dinámico (con un programa, o SORT OUTREC) y lanzarlo desde el JOB que lo ha creado con el siguiente step: Código JCL:
Lugo está el REXX que no conozco mucho, pero se puede hacer muchas cosas. Lo mismo lo más fácil es tirar por ahí. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
He visto en algún ejemplo como se vuelcan fichas DD a variables JCL, como por ejemplo un sysprint. ¿Habría algún programa de utilidad o algo así para sacar el contenido de un fichero por sysout (u otra ficha DD)? Voy a mirarlo en detalle, saludos y muchas gracias. |
|||||||||
|
|
|
|
Administrador
![]()
|
RaulC, puedes hacer lo siguiente:
En tu OUTREC escribe esto: Código:
REPRO INFILE(NOMBRE.FICHERO.OBTENIDO) - Para copiar el fichero usa: Código JCL:
Ya cuentas qué tal. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Se produce este error: Código:
IDCAMS SYSTEM SERVICES TIM
REPRO INFILE(nombre.fichero.largo) -
IDC3201I CONSTANT 'nombre.fichero.largo' EXCEEDS LENGTH LIMIT
OUTDATASET(OUT)
IDC3202I ABOVE TEXT BYPASSED UNTIL NEXT COMMAND. CONDITION CODE IS 12
END
IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 12
Realmente lo que necesito es comprobar si el fichero contenido (F2/nombre.fichero.largo en los ejemplos) tiene o no tiene datos. En esta instalación se usa este método para ver si el fichero tiene datos o no. Código JCL:
Por eso intento meter el contenido del fichero en una variable, para poder hacer esto Código JCL:
Quería informar &&FICH2 con el contenido del fichero contenedor F1, y es lo que no consigo. Con el LISTCAT no hay problema, porque el parámetro LISTCAT ENT sí acepta nombre largo. Me quedo con la idea de intentar copiar el contenido del fichero contenido F2, en otro fichero, con un nombre fijo. A ver si lo consigo. Muchas gracias. ---------- Post añadido : 17:11 ---------- Post anterior : 12:26 ---------- Al final me han dicho un programa que copia el contenido de los ficheros, cuyo nombre está en el fichero de entrada, al fichero de salida. Parece un travalenguas ![]() Ya con eso puedo comprobar si tiene contenido o no, y ya trabajar con un fichero con nombre fijo. Saludos y muchas gracias por la ayuda. Espero que esto pueda servirle a alguien, que pena que el programa/utilidad es de la instalación, no de IBM ![]() |
|||||||||
|
|
|
|
Administrador
![]()
|
IBM Knowledge Center
Citación del post de IBM
Una variable que empieza por && es una variable de fichero temporal, es decir es el JES es que gestiona y asigna un nombre temporal de un dataset que se eliminará al finalizar el JOB. Un variable normal empieza por un solo &. Lo veo muy raro. ¿Puedes ejecutar el step que te pasé poniendo un fichero de nombre más corto a mano y ver si hace lo que esperábamos? Para cerciorarnos de que el método funciona. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
|||||||||||
|
|
|
|
Forero Junior
![]()
|
Ya tengo el problema resuelto, pero voy a intentar dejar esto lo mejor posible para el que se encuentre con este problema en el futuro.
En este ejemplo, el fichero es nombre.fichero.largo, que se referencia en la ficha FILETEST, y en la sentencia INFILE lo que espera es el nombre de la ficha DD del fichero sobre el que se va a trabajar ¿no? Código JCL:
Cita:
Para ello quería sacar el nombre del fichero F2 a una variable jcl, para poder meterlo en el INFILE del control de si está vacío y para todo lo que me pudiera hacer falta. El tema es que al conseguir volcar el contenido del fichero F2 a un fichero cuyo nombre conozco, ya no me hace falta pasar el contenido del F1 a una variable JCL. Cita:
Cita:
Aunque lo haya resuelto de otra manera, muchas gracias por tu ayuda, de verdad. |
||||||||||||
|
|
|
|
Administrador
![]()
|
RaulC, desde hace ya varios años no trabajo con z/OS así que no puedo comprobar los ejemplos. El caso es que tenía un ejemplo que funciona al 100% que es el siguiente:
Código JCL:
Y lo he querido adaptar. Lo que pasa es que acabo de verificar que efectivamente el subcomando INFILE espera el nombre DD y no DSN. http://docweb.cns.ufl.edu/docs/d0071/ar09.html Así que lo correcto sería reemplazar INFILE por INDATASET que como OUTDATASET espera DSN. Resumiendo, el ejemplo correcto sería este: en el OUTREC pones Código:
REPRO INDATASET(NOMBRE.FICHERO.OBTENIDO) - Código JCL:
Si lo pudieras comprobar estaría genial. Y gracias por tus comentarios, siempre se agradece cuando la gente publica las soluciones que haya encontrado para que los demás puedan aprovecharlas. Un saludo. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Ha funcionado perfectamente, y me gusta más que la solución que he usado yo, aunque cada una tiene sus pros y sus contras. Lo malo es que ya he implantado en producción esta mañana
![]() Lo bueno es que tu solución sirve para todas las instalaciones host, porque tira de idcams y no de un programilla propio de mi instalación, como en mi caso.
Un saludo y gracias de nuevo. |
|||||||||
|
|
|
|
Administrador
![]()
|
Me alegro. Queda confirmado entonces.Yo siempre solía tirar de utilidades estándar precisamente por lo que dices. Así mis chanchullos me servían en cualquier instalación. Siempre me han interesado este tipo de retos, me parece interesante ![]() Un saludo. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
| Herramientas | |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||