output DDname JESMSGLG job en EXECUTE

Todo lo relacionado con JCL, manejo de jobs, etc.
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Hola,
Con respecto a:
3 +++ DSE = SYSDSN("'"STRIP(DSNAME)"'")
Error running RXSMOT18, line 6: Name or string > 250 characters
Solo puedo especular con la longitud de registro de tu librería del rexx, con como estaba la opción NULLS de tu editor cuando creaste el rexx y con el hecho de no cerrar comillas dobles en tus instrucciones.
Prueba a cambiar

Código: Seleccionar todo

  "ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW
    TRACKS SPACE(10 10) DIR(44)
    RECFM(F B) LRECL(80)"
por

Código: Seleccionar todo

  mandato = "ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW"   
  mandato = mandato || " TRACKS SPACE(10 10) DIR(44)" 
  mandato = mandato || " RECFM(F B) LRECL(80)"        
  INTERPRET '"'mandato'"'                             
Si no funcionase, pon un trace y dime que sale
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Hola Italo,
Dices:
se podra hacer algo para poder ejecutar el rexx desde mi libreria de 201?? o que se refiere el error?
Lo de antes fué un ejemplo de uso de la instrucción INTERPRET que me ha parecido interesante que conozcas.
REXX no admite instrucciones de más de 250 líneas y tú has escrito la siguiente:

Código: Seleccionar todo

  "ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW
    TRACKS SPACE(10 10) DIR(44)
    RECFM(F B) LRECL(80)"
el mandato NULLS OFF o NULLS ON del editor hace que este complete o no, con espacios en blanco, las líneas que se escriben hasta alcanzar la longitud de registro de la librería (en tu caso 201).
Y tu has escrito una instrucción con tres líneas.
También podrías escribir tus tres líneas en una sola como la siguiente:

Código: Seleccionar todo

"ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
Respecto a que tu rexx no continúe si no está un CICS en ejecución, me parece extraño.
A mí si me funciona tu rexx en cualquier caso.
Este problema lo podríamos estudiar si sigue ocurriendo cuando corrijas los dos sobre los que te he hecho comentarios.

Respecto a crear un fichero con una línea que diga "CICS no en ejecucion actualmente" deberás ajustar más tu interacción con SYSVIEW para saber que no está en ejecución. Esto tiene relación con el estudio de las líneas de pantalla que SYSVIEW deja en el STACK para cada mandado, según te he comentado antes.
Como en mi ejemplo, deberás leer esta líneas, hacer SAY de ellas y una vez que las conozcas bien, escribir sentencias REXX que tomen decisiones en función de ellas (probablemente en una línea de tipo MSG esté la información, hace años que no hago esto).
Supongo que tienes el manual de SYSVIEW donde te explica como interactuar con él, donde explica esto.

A estas alturas te habrás dado cuenta que este no era un trabajo para gente que empieza con REXX, SYVIEW, FTP, etc.. y ahora quizás te lo complique más con la siguiente observación:
el mandato JJOBQUE MICICS muestra en una pantalla o más, todo lo que haya en el spool de JES2 con el nombre MICIS, esté en EXECUTE, en INPUT (esperando) o en OUTPUT (ya ejecutado).
Una vez más leyendo las líneas de la pantalla que sysview carga en el STACK se pueden seleccionar las que se deseen o posicionarse a la izquierda de ellas.

No obstante en vez de motivo de desánimo este trabajo debería ser una excusa perfecta para aprender mucho.
En su momento yo solo contaba con los libros de IBM y CA.
Hoy tú tienes Internet.

Un saludo.
italo_pm

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por italo_pm »

hola VIcente, gracias por responder, pues gracias a tu ayuda ya no tengo esos 2 errores que me daban al momento de hacer el EX

practicamente como me sugeriste agregue DROPBUF en el DO y fuera del ciclo y ya no me da error:

Código: Seleccionar todo

A command entered or contained in a CLIST has invalid syntax.
tambien solucione el problema de Name or string > 250 characters y hice como me sugeriste en una linea:

Código: Seleccionar todo

"ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
y anteriormente tambien prove y funciona correctamente.

Código: Seleccionar todo

mandato = "ALLOC FI(FTPJCLPA) DA('"DSNAME"') NEW"   
  mandato = mandato || " TRACKS SPACE(10 10) DIR(44)" 
  mandato = mandato || " RECFM(F B) LRECL(80)"        
  INTERPRET '"'mandato'"'  

ahora, leyendo tu ultimo comentaria sobre como caputar los mensajes del SYSVIEW pues tomando de ejemplo tu codigo realize el siguente rexx:

el objetico es hacer un elenco de los jobs con nombre CICS* que este en ejecucion para luego confrontarlos con mi lista y lo que no esten en ejecucion crearlos con el texto "CICS NO EN EJECUCION" o algo asi... para luego proceder con el ftp

Código: Seleccionar todo

/* REXX */

ADDRESS LINK 'GSVXRXAA'
    ADDRESS "SYSVIEWE" "C(PREFIX *)"
    ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"

  DO UNTIL QUEUED() = 0
     PULL linea
     tipo = LEFT(linea,1)
     IF tipo = 'D' THEN DO
        PARSE VAR linea tipo "!" . "!" nombre "!" .
     END
     SAY nombre
  END

ADDRESS 'SYSVIEWE' 'C(END)'

/* ******************************************************** */
DSNAME = 'MIUSER.SCRIPT.TEXT.TEMPFTP'
DSE = SYSDSN("'"STRIP(DSNAME)"'")
IF DSE <> 'OK' THEN DO
  "FREE  FI(FTEMCIEX)"
  "ALLOC FI(FTEMCIEX) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
END

"FREE  FI(FTEMCIEX)"
"ALLOC FI(FTEMCIEX) DA('"DSNAME"(CICSEXEC)') SHR"

"NEWSTACK"

QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "
/*--------------------------------------------------------------------- */
QUEUE ""nombre""
/*--------------------------------------------------------------------- */
"EXECIO * DISKW FTEMCIEX (FINIS"
"FREE  FI(FTEMCIEX)"

"DELSTACK"

   "ISPEXEC EDIT DATASET('"DSNAME"(CICSEXEC)')"

/* ******************************************************** */
y cuando el SAY nombre el resultado es:

Código: Seleccionar todo

NOMBRE
NOMBRE
NOMBRE
NOMBRE
NOMBRE


















CICS0001
CICS0002
CICS0003
CICS0004
CICS0005
CICS0006
CICS0007
CICS0008
CICS0009
CICS0010
CICS0011
CICS0012
CICS0013
CICS0014
CICS0015
CICS0016
CICS0017
CICS0018
CICS0019
CICS0020
CICS0021
CICS0022
CICS0023
CICS0024
CICS0025
CICS0026
CICS0027
CICS0028
CICS0029
CICS0030
CICS0031
CICS0032
CICS0033
CICS0034
CICS0035
CICS0036
CICS0037
CICS0038
CICS0039
CICS0040
CICS0041
CICS0043
CICS0044
CICSWEB9

***
y el secuencial (miembro) que creo el contendio es: (solo me escribe el ultimo nombre del CICS)

Código: Seleccionar todo

EDIT       MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
000001  ------------------
000002  LISTA CICS IN EXEC
000003 CICSWEB9
****** ******************************** Bottom of Data ********************************
claro en eso ultimo falta hacer un ciclo DO ... lo hice con el fto y funciona, pero en este caso no sabria como tomar la variable "nombre" y hacerle un DO...

aunq por el momento nose como arreglar esto:

Código: Seleccionar todo

NOMBRE
NOMBRE
NOMBRE
NOMBRE
NOMBRE



















como podria eliminarlo?

si tienes alguna sugerencia, muchas gracias.

saludos.
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Hola Italo,
Me alegro de que se te resuelvan los errores y hagas progresos.
Hoy es domingo, estoy en casa y no dispongo del mainframe.
No obstante, si la memoria no me falla, te haré algunos comentarios así podré leer algún avance tuyo mas, mañana desde la oficina.
Sobre tu línea

Código: Seleccionar todo

PARSE VAR linea tipo "!" . "!" nombre "!" .
Creo recordar que, en las pantallas de Sysview, el separador de campos no es el signo de admiración, sino la barra vertical que se encuentra en la misma tecla (al menos en los teclados en español). Cámbialo en tu línea. (cuando en Rexx no se da valor a una variable, su contenido es igual a su nombre).

Sobre tu línea

Código: Seleccionar todo

QUEUE ""nombre""
Yo la escribiría como
QUEUE nombre
Pero eso no es lo más importante. Fíjate que la has escrito fuera del bucle DO UNTIL, por lo que en ese lugar del programa contendrá el nombre el último CICS de la pantalla de Sysview.
O guardas los nombres en un STEM o reordenas tus líneas de la siguiente manera:

Código: Seleccionar todo

/* ******************************************************** */
DSNAME = 'MIUSER.SCRIPT.TEXT.TEMPFTP'
DSE = SYSDSN("'"STRIP(DSNAME)"'")
IF DSE <> 'OK' THEN DO
  "FREE  FI(FTEMCIEX)"
  "ALLOC FI(FTEMCIEX) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
END
"FREE  FI(FTEMCIEX)"
"ALLOC FI(FTEMCIEX) DA('"DSNAME"(CICSEXEC)') SHR"

"NEWSTACK"

QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "
/*--------------------------------------------------------------------- */
ADDRESS LINK 'GSVXRXAA'
    ADDRESS "SYSVIEWE" "C(PREFIX *)"
    ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"

  DO UNTIL QUEUED() = 0
     PULL linea
     tipo = LEFT(linea,1)
     IF tipo = 'D' THEN DO
        PARSE VAR linea tipo "!" . "!" nombre "!" .
     END
     QUEUE nombre
     SAY nombre
  END
ADDRESS 'SYSVIEWE' 'C(END)'
/*--------------------------------------------------------------------- */
"EXECIO * DISKW FTEMCIEX (FINIS"
"FREE  FI(FTEMCIEX)"

"DELSTACK"

   "ISPEXEC EDIT DATASET('"DSNAME"(CICSEXEC)')"

/* ******************************************************** */
Así tendrás el QUEUE nombre dentro del bucle y añadirás uno cada vez.
Un saludo
italo_pm

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por italo_pm »

Hola Vicente, gracias por la respuesta, al parecer mi separador es un "!" porque cuando ejecuto el comando sale siempre "!" sin que se lo indique con el "|" no funciona por eso use el "!"...

Código: Seleccionar todo

H!CMD     !JOBNAME !TYPE!  JOBNR!QUEUE   !
D!        !CICS0001!JOB !   6638!EXECUTE !
cambie lo que me indicaste pero hay un error ya que el ciclo nunca acaba es decir crea un loop

practicamente: con QUEUE varnombre

Código: Seleccionar todo

NOMBRE
NOMBRE
NOMBRE
NOMBRE
NOMBRE


















CICS0001
CICS0002
CICS0003
CICS0004
CICS0005
CICS0006
CICS0007
CICS0008
CICS0009
CICS0010
CICS0011
CICS0012
CICS0013
CICS0014
CICS0015
CICS0016
CICS0017
CICS0018
CICS0019
CICS0020
CICS0021
CICS0022
CICS0023
CICS0024
CICS0025
CICS0026
CICS0027
CICS0028
CICS0029
CICS0030
CICS0031
CICS0032
CICS0033
CICS0034
CICS0035
CICS0036
CICS0037
CICS0038
CICS0039
CICS0040
CICS0041
CICS0043
CICS0044
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9
CICSWEB9

con el SAY nombre pero no llega a crear el miembro

Código: Seleccionar todo

VARNOMBRE
VARNOMBRE
VARNOMBRE
VARNOMBRE
VARNOMBRE
VARNOMBRE
VARNOMBRE


















CICS0001
CICS0002
CICS0003
CICS0004
CICS0005
CICS0006
CICS0007
CICS0008
CICS0009
CICS0010
CICS0011
CICS0012
CICS0013
CICS0014
CICS0015
CICS0016
CICS0017
CICS0018
CICS0019
CICS0020
CICS0021
CICS0022
CICS0023
CICS0024
CICS0025
CICS0026
CICS0027
CICS0028
CICS0029
CICS0030
CICS0031
CICS0032
CICS0033
CICS0034
CICS0035
CICS0036
CICS0037
CICS0038
CICS0039
CICS0040
CICS0041
CICS0043
CICS0044
CICSWEB9

Código: Seleccionar todo

EDIT       MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
****** ******************************** Bottom of Data ********************************


aquio hice un SAY tipo "!" cmd "!" nombre "!" para ver todo lo que me captura:

SAY tipo "!" cmd "!" nombre "!"

Código: Seleccionar todo



   
   ! CMD ! NOMBRE !
   ! CMD ! NOMBRE !
 M ! CMD ! NOMBRE !
 T ! CMD ! NOMBRE !
H ! CMD ! NOMBRE !
H ! CMD ! NOMBRE !
H ! CMD ! NOMBRE !
D    LOG       - DISPLAY THE SYSTEM LOG !  !  !
D    DA        - DISPLAY ACTIVE USERS OF THE SYSTEM !  !  !
D    I         - DISPLAY JOBS IN THE JES2 INPUT QUEUE !  !  !
D    O         - DISPLAY JOBS IN THE JES2 OUTPUT QUEUE !  !  !
D    H         - DISPLAY JOBS IN THE JES2 HELD OUTPUT QUEUE !  !  !
D    ST        - DISPLAY STATUS OF JOBS IN THE JES2 QUEUES !  !  !
D    PR        - DISPLAY JES2 PRINTERS ON THIS SYSTEM !  !  !
D    INIT      - DISPLAY JES2 INITIATORS ON THIS SYSTEM !  !  !
D    MAS       - DISPLAY JES2 MEMBERS IN THE MAS SYSTEM !  !  !
D !  !  !
D    SYSVIEW   - DISPLAY SYSVIEW MAIN MENU !  !  !
D    TOPICS    - DISPLAY INFORMATION ABOUT SYSVIEW !  !  !
D    END       - EXIT SYSVIEW !  !  !
D !  !  !
M !  !  !
T !  !  !
I !  !  !
H !  !  !
D !          ! CICS0001 !
D !          ! CICS0002 !
D !          ! CICS0003 !
D !          ! CICS0004 !
D !          ! CICS0005 !
D !          ! CICS0006 !
D !          ! CICS0007 !
D !          ! CICS0008 !
D !          ! CICS0009 !
D !          ! CICS0010 !
D !          ! CICS0011 !
D !          ! CICS0012 !
D !          ! CICS0013 !
D !          ! CICS0014 !
D !          ! CICS0015 !
D !          ! CICS0016 !
D !          ! CICS0017 !
D !          ! CICS0018 !
D !          ! CICS0019 !
D !          ! CICS0020 !
D !          ! CICS0021 !
D !          ! CICS0022 !
D !          ! CICS0023 !
D !          ! CICS0024 !
D !          ! CICS0025 !
D !          ! CICS0026 !
D !          ! CICS0027 !
D !          ! CICS0028 !
D !          ! CICS0029 !
D !          ! CICS0030 !
D !          ! CICS0031 !
D !          ! CICS0032 !
D !          ! CICS0033 !
D !          ! CICS0034 !
D !          ! CICS0035 !
D !          ! CICS0036 !
D !          ! CICS0037 !
D !          ! CICS0038 !
D !          ! CICS0039 !
D !          ! CICS0040 !
D !          ! CICS0041 !
D !          ! CICS0043 !
D !          ! CICS0044 !
D !          ! CICSWEB9 !
D !          !  !

y me crea vacio el miembro

Código: Seleccionar todo

EDIT       MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
****** ******************************** Bottom of Data ********************************

aqui la rexx:

Código: Seleccionar todo

/* REXX */

DSNAME = 'MIUSER.SCRIPT.TEXT.TEMPFTP'
DSE = SYSDSN("'"STRIP(DSNAME)"'")
IF DSE <> 'OK' THEN DO
  "FREE  FI(FTEMCIEX)"
  "ALLOC FI(FTEMCIEX) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
END

"FREE  FI(FTEMCIEX)"
"ALLOC FI(FTEMCIEX) DA('"DSNAME"(CICSEXEC)') SHR"
/*--------------------------------------------------------------------- */

/* ******************************************************** */

"NEWSTACK"

QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "
ADDRESS LINK 'GSVXRXAA'
    ADDRESS "SYSVIEWE" "C(PREFIX *)"
    ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"
   DO UNTIL QUEUED() = 0
      PULL linea
      tipo = LEFT(linea,1)
      IF tipo = 'D' THEN DO
         PARSE VAR linea tipo "!" cmd "!" nombre "!"
      END
    QUEUE nombre
      SAY nombre
   END

 ADDRESS 'SYSVIEWE' 'C(END)'
 /*--------------------------------------------------------------------- */
 "EXECIO * DISKW FTEMCIEX (FINIS"
 "FREE  FI(FTEMCIEX)"

 "DELSTACK"

    "ISPEXEC EDIT DATASET('"DSNAME"(CICSEXEC)')"
    
alguna idea para evitar el loop y que cree el contenido dentro el miembro?

seguire provando, queria solo actualizarte...

saludos y gracias por la ayuda..
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Hola,
Sí, es posible que el bucle lo cree la instrucción
QUEUE nombre
pues añade otra línea al stack que luego hay que leer.
Vamos a guardar los nombres en un STEM para luego ponerlos en el STACK
Cambia tu bucle por:

Código: Seleccionar todo

  i = 0
  DO UNTIL QUEUED() = 0
      PULL linea
      tipo = LEFT(linea,1)
      IF tipo = 'D' THEN DO
         i = i + 1
         PARSE VAR linea tipo "!" cmd "!" nombre.i "!"
      END
      SAY nombre.i
   END
Después fuera del bucle y antes del EXECIO * DISKW
añade:

Código: Seleccionar todo

DO k = 1 TO i
  QUEUE nombre.k
END
respecto a "!" voy a pensar algo para que sepamos que carácter es ese que tu emulador de terminal está representando como !.
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Sospecho que
PARSE VAR linea tipo "!" cmd "!" nombre.i "!"
Está guardando todo el contenido de la variable línea en la variable tipo.
Para ver que hay en las líneas que estas leyendo, sustituye
SAY nombre.i
por
SAY "Linea =" línea
SAY "tipo =" tipo
italo_pm

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por italo_pm »

Hola Vicente, pues he provado como me aconsejas.. pero he notado que con

Código: Seleccionar todo

"EXECIO" QUEUED() "DISKW FTEMCIEX (FINIS"

Código: Seleccionar todo

 QUEUED()
si me crea el miembro con el conteido de la variable nombre

Código: Seleccionar todo

EDIT       MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
    MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
 ===>                                                          Scroll ===> CSR
********************************* Top of Data *********************************
 ------------------
 LISTA CICS IN EXEC














CICS0001
CICS0002
CICS0003
CICS0004
CICS0005
CICS0006
CICS0007
CICS0008
CICS0009
CICS0010
CICS0011
CICS0012
CICS0013
CICS0014
CICS0015
CICS0016
CICS0017
CICS0018
CICS0019
CICS0020
CICS0021
CICS0022
CICS0023
CICS0024
CICS0025
CICS0026
CICS0027
CICS0028
CICS0029
CICS0030
CICS0031
CICS0032
CICS0033
CICS0034
CICS0035
CICS0036
CICS0037
CICS0038
CICS0039
CICS0040
CICS0041
CICS0043
CICS0044
CICSWEB9
pero aun con lineas vacias , creo que porque esas lineas hacen referencias a "D" que supuestamente con D tambien sale el panel del MENU...

luego te escribo todos los SAY

gracias
Última edición por italo_pm el 11 Jul 2016, 13:06, editado 1 vez en total.
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Sospecho que las líneas vacías están motivadas por el mandato C(END) a SYSVIEW, que las añade al stack.
Recuerda que cualquier mandato a sysview pone líneas en el stack.
Para solucionar esto cambia de sitio tus líneas
QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "

Ponlas antes del nuestro nuevo bucle después de un "DROPBUF", como sigue:

Código: Seleccionar todo

"DROPBUF"
QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "
DO k = 1 TO i
  QUEUE nombre.k
END
"EXECIO * DISKW FTEMCIEX (FINIS"
"FREE  FI(FTEMCIEX)"
"DROPBUF"
¿Parece que no me debo preocupar del "!" ?
italo_pm

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por italo_pm »

hola Vicente,


¿Parece que no me debo preocupar del "!" ?
no, al parecer mi configuracion funciona con "!" correctamente.

pues la escritura del miembro solo funciona con:

Código: Seleccionar todo

"EXECIO" QUEUED() "DISKW FTEMCIEX (FINIS"
resultado:

Código: Seleccionar todo

EDIT       MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
Command ===>                                                          Scroll ===> CSR
****** ********************************* Top of Data **********************************
    MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
 ===>                                                          Scroll ===> CSR
********************************* Top of Data *********************************
 ------------------
 LISTA CICS IN EXEC














CICS0001
CICS0002
CICS0003
CICS0004
CICS0005
CICS0006
CICS0007
CICS0008
CICS0009
CICS0010
CICS0011
CICS0012
CICS0013
CICS0014
CICS0015
CICS0016
CICS0017
CICS0018
CICS0019
CICS0020
CICS0021
CICS0022
CICS0023
CICS0024
CICS0025
CICS0026
CICS0027
CICS0028
CICS0029
CICS0030
CICS0031
CICS0032
CICS0033
CICS0034
CICS0035
CICS0036
CICS0037
CICS0038
CICS0039
CICS0040
CICS0041
CICS0043
CICS0044
CICS0045
CICS0046
CICS0047
CICS0048
CICS0049
CICS0050
CICS0051
CICS0052
CICS0053
CICS0054
CICSWEB9
con el otro metodo no escribe nada

Código: Seleccionar todo

"EXECIO * DISKW FTEMCIEX (FINIS"
resultado:

Código: Seleccionar todo

    MIUSER.SCRIPT.TEXT.TEMPFTP(CICSEXEC) - 01.00           Columns 00001 00080
 ===>                                                          Scroll ===> CSR
********************************* Top of Data **********************************
 ------------------
 LISTA CICS IN EXEC
******************************** Bottom of Data ********************************
resultado del SAY "Linea =" linea

Código: Seleccionar todo

Linea = MPRFX002I PREFIXES ARE *
Linea = T!SYSVIEW!14.1!OSCX!MENU!07/11/16!13:23:10!
Linea = H
Linea = H TYPE AN OPTION OR COMMAND AND PRESS ENTER.
Linea = H
Linea = D    LOG       - DISPLAY THE SYSTEM LOG
Linea = D    DA        - DISPLAY ACTIVE USERS OF THE SYSTEM
Linea = D    I         - DISPLAY JOBS IN THE JES2 INPUT QUEUE
Linea = D    O         - DISPLAY JOBS IN THE JES2 OUTPUT QUEUE
Linea = D    H         - DISPLAY JOBS IN THE JES2 HELD OUTPUT QUEUE
Linea = D    ST        - DISPLAY STATUS OF JOBS IN THE JES2 QUEUES
Linea = D    PR        - DISPLAY JES2 PRINTERS ON THIS SYSTEM
Linea = D    INIT      - DISPLAY JES2 INITIATORS ON THIS SYSTEM
Linea = D    MAS       - DISPLAY JES2 MEMBERS IN THE MAS SYSTEM
Linea = D
Linea = D    SYSVIEW   - DISPLAY SYSVIEW MAIN MENU
Linea = D    TOPICS    - DISPLAY INFORMATION ABOUT SYSVIEW
Linea = D    END       - EXIT SYSVIEW
Linea = D
Linea = M
Linea = T!SYSVIEW!14.1!OSCX!JJOBQUE!07/11/16!13:23:10!
Linea = I TOTAL LINES 0      TOTAL PAGES 0
Linea = H!CMD     !JOBNAME !TYPE!  JOBNR!QUEUE   !STATUS  !USERID  !JOBCLASS!PRTY! POSI! TOTLINES!OPRI!OUTCLASS!DESTINATION       !
FORMS    !FCB !UCS !FLASH!WRITER  !PRMODE  !BUR!OUTDISP!CRDATE  !CRTIME  !ASYS             !DEVICE            ! LINESPRC!OUTGROUP
     !TOTPAGES!HELDREASON                           ! NODE! RMTN!CCODE!JOBID   !SYSAFF        !SECLABEL!PROGRAMMER          !NOTIFY
  !MSGCLASS!INPSYS!INPCNT!INPDEV  !INPDATE !INPTIME !ESYS    !STDATE       !STTIME  !ENDDATE !ENDTIME !SUBMITTER!ACCOUNT !ROOM    !
ATTRIBUTES !JOBGROUP      !JOBGRPID!JOBSET  !GJSTATUS!FLUSHACT!WITH    !HOLDUNTILDT!HOLDUNTILTM!STARTBYDT   !STARTBYTM
Linea = D!        !CICS0001!JOB !   6638!EXECUTE !        !CXAORA  !K       !   6!     !         !    !        !LOCAL             !
         !    !    !     !        !        !   !       !        !        !                 !                  !         !
     !        !                                     !     !     !     !JOB06638!ANY           !        !TS-0001-320         !
  !G       !OSCX  !   107!INTRDR  !07/11/16!04:10:01!OS390CX !07/11/16     !04:10:01!        !        !CICSTART !        !        !
           !              !        !        !        !        !        !           !           !            !
Linea = D!        !CICS0002!JOB !   7074!EXECUTE !        !CXAORB  !K       !   6!     !         !    !        !LOCAL             !
         !    !    !     !        !        !   !       !        !        !                 !                  !         !
     !        !                                     !     !     !     !JOB07074!ANY           !        !TS-0002-320         !
  !G       !OSCX  !    97!INTRDR  !07/11/16!06:15:02!OS390CX !07/11/16     !06:15:02!        !        !CICSTART !        !        !
           !              !        !        !        !        !        !           !           !            !
Linea = D!        !CICSWEB9!JOB !   6595!EXECUTE !        !CXWEB9  !K       !   6!     !         !    !        !LOCAL             !
         !    !    !     !        !        !   !       !        !        !                 !                  !         !
     !        !                                     !     !     !     !JOB06595!ANY           !        !TS-WEB9-320         !
  !G       !OSCX  !   113!INTRDR  !07/11/16!03:55:03!OS390CX !07/11/16     !03:55:03!        !        !CICSTART !        !        !
           !              !        !        !        !        !        !           !           !            !

etc etc etc etc con el resto de CICS

resultado: SAY "tipo =" tipo

Código: Seleccionar todo

tipo = M
tipo = T
tipo = H
tipo = H
tipo = H
tipo = D    LOG       - DISPLAY THE SYSTEM LOG
tipo = D    DA        - DISPLAY ACTIVE USERS OF THE SYSTEM
tipo = D    I         - DISPLAY JOBS IN THE JES2 INPUT QUEUE
tipo = D    O         - DISPLAY JOBS IN THE JES2 OUTPUT QUEUE
tipo = D    H         - DISPLAY JOBS IN THE JES2 HELD OUTPUT QUEUE
tipo = D    ST        - DISPLAY STATUS OF JOBS IN THE JES2 QUEUES
tipo = D    PR        - DISPLAY JES2 PRINTERS ON THIS SYSTEM
tipo = D    INIT      - DISPLAY JES2 INITIATORS ON THIS SYSTEM
tipo = D    MAS       - DISPLAY JES2 MEMBERS IN THE MAS SYSTEM
tipo = D
tipo = D    SYSVIEW   - DISPLAY SYSVIEW MAIN MENU
tipo = D    TOPICS    - DISPLAY INFORMATION ABOUT SYSVIEW
tipo = D    END       - EXIT SYSVIEW
tipo = D
tipo = M
tipo = T
tipo = I
tipo = H
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
tipo = D
resultado: SAY "nombre job =" nombre.i

Código: Seleccionar todo

nombre job = NOMBRE.0
nombre job = NOMBRE.0
nombre job = NOMBRE.0
nombre job = NOMBRE.0
nombre job = NOMBRE.0
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job =
nombre job = CICS0001
nombre job = CICS0002
nombre job = CICS0003
nombre job = CICS0004
nombre job = CICS0005
nombre job = CICS0006
nombre job = CICS0007
nombre job = CICS0008
nombre job = CICS0009
nombre job = CICS0010
nombre job = CICS0011
nombre job = CICS0012
nombre job = CICS0013
nombre job = CICS0014
nombre job = CICS0015
nombre job = CICS0016
nombre job = CICS0017
nombre job = CICS0018
nombre job = CICS0019
nombre job = CICS0020
nombre job = CICS0021
nombre job = CICS0022
nombre job = CICS0023
nombre job = CICS0024
nombre job = CICS0025
nombre job = CICS0026
nombre job = CICS0027
nombre job = CICS0028
nombre job = CICS0029
nombre job = CICS0030
nombre job = CICS0031
nombre job = CICS0032
nombre job = CICS0033
nombre job = CICS0034
nombre job = CICS0035
nombre job = CICS0036
nombre job = CICS0037
nombre job = CICS0038
nombre job = CICS0039
nombre job = CICS0040
nombre job = CICS0041
nombre job = CICS0043
nombre job = CICS0044
nombre job = CICS0045
nombre job = CICS0046
nombre job = CICS0047
nombre job = CICS0048
nombre job = CICS0049
nombre job = CICS0050
nombre job = CICS0051
nombre job = CICS0052
nombre job = CICS0053
nombre job = CICS0054
nombre job = CICSWEB9
como te decia funciona solo con :

Código: Seleccionar todo

"EXECIO" QUEUED() "DISKW FTEMCIEX (FINIS"
y no con el metedo tradicional

Código: Seleccionar todo

"EXECIO * DISKW FTEMCIEX (FINIS"
que podria estar fallando??


rexx:

Código: Seleccionar todo

/* REXX */

DSNAME = 'MIUSER.SCRIPT.TEXT.TEMPFTP'
DSE = SYSDSN("'"STRIP(DSNAME)"'")
IF DSE <> 'OK' THEN DO
  "FREE  FI(FTEMCIEX)"
  "ALLOC FI(FTEMCIEX) DA('"DSNAME"') NEW TRACKS SPACE(10 10) DIR(44) RECFM(F B) LRECL(80)"
END

"FREE  FI(FTEMCIEX)"
"ALLOC FI(FTEMCIEX) DA('"DSNAME"(CICSEXEC)') SHR"
/*--------------------------------------------------------------------- */

/* QUEUE nombre.i */
/*--------------------------------------------------------------------- */
ADDRESS LINK 'GSVXRXAA'
    ADDRESS "SYSVIEWE" "C(PREFIX *)"
    ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"

  i = 0
  DO UNTIL QUEUED() = 0
     PULL linea
     tipo = LEFT(linea,1)
     IF tipo = 'D' THEN DO
        i = i + 1
        PARSE VAR linea tipo "!" cmd "!" nombre.i "!"
     END
     SAY "nombre job =" nombre.i
/*   SAY "Linea =" linea */
/*   SAY "tipo =" tipo */
  END

ADDRESS 'SYSVIEWE' 'C(END)'

"DROPBUF"
QUEUE " ------------------ "
QUEUE " LISTA CICS IN EXEC "
   DO k = 1 TO i
    QUEUE nombre.k
END
/* "EXECIO * DISKW FTEMCIEX (FINIS" */
   "EXECIO" QUEUED() "DISKW FTEMCIEX (FINIS"
"FREE  FI(FTEMCIEX)"
"DROPBUF"
   "ISPEXEC EDIT DATASET('"DSNAME"(CICSEXEC)')"


gracias nuevamente

salu2
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Una vez más, hay que tener en cuenta que SYSVIEW pone líneas en el stack por cada mandato.
Hay que borrar las que no nos interesan.
cambia tus dos líneas
ADDRESS "SYSVIEWE" "C(PREFIX *)"
ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"
por ls tres siguientes:
ADDRESS "SYSVIEWE" "C(PREFIX *)"
"DROPBUF"
ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"
italo_pm

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por italo_pm »

pues una vez mas aprendo de ti, ahora funciona todo correctamente, muchas gracias incluso con

Código: Seleccionar todo

"EXECIO * DISKW FTEMCIEX (FINIS"
escribe correctamente el miembro con el contenido de todos los CICS...

agragando

Código: Seleccionar todo

     ADDRESS "SYSVIEWE" "C(PREFIX *)"
     "DROPBUF"
     ADDRESS "SYSVIEWE" "C(LISTJOBS CICS*)"
funciono todo, muchas gracias por todo, ahora estaba pensando en otra cosa... hehehehe

en capturar el contenido y hacer un POS de la linea en base a la palabra de una cierta posicion.

salu2.
Vicente

Re: output DDname JESMSGLG job en EXECUTE

Mensaje por Vicente »

Hola Italo,
Me alegro de que estés cerca de solucionar tu problema, ahora seguro que puedes avanzar solo más rápido.
(es muy bueno enfrentarse solo a un problema e intentar resolverlo antes de pedir ayuda)
Este hilo ya es muy largo, quizás, para un problema concreto futuro podrías iniciar otro.

Permíteme algunos consejos:
- Se muy cuidadoso con el manejo del STACK
Yo no suelo utilizar NEWSTAC ni DELSTACK, en su lugar prefiero borrar con "DROPBUF" antes y después de usarlo.
- SYSVIEW da mucha información; es bueno leerse el manual donde explica como utilizarlo desde rexx.
- El manual del lenguaje REXX debería ser tu libro de cabecera.
- Medita antes de escribir, escribe REXX despacio y claramente. Medita sobre lo que has escrito.

Y ahora mi método de trabajo ante un problema es reflexionar en lo siguiente
¿Qué información tengo?
¿Qué puedo hacer para obtener más información?
¿He tenido en cuenta toda la información de la que dispongo?
¿Por qué ha ocurrido?
¿Qué ha cambiado para que pase?
¿Conozco la solución a un problema parecido?
¿Puedo dividirlo en problemas más pequeños y fáciles?
¿Lo que voy a hacer va a aumentar el problema o sus consecuencias?
¿Qué libros me pueden ayudar?
Ideada una estrategia para resolver el problema.
Asegurarme de que podría dar marcha atrás.
Aplicarla paso a paso.
Recoger información en cada paso.
Estudiar la situación tras cada paso

En nuestra profesión lo más importante es leer, estudiar y pensar antes de ponerse a teclear.
Los libros son nuestros mejores aliados, consúltalos.

Un saludo y hasta otra
Responder