Inconvenientes en ompilacion de programas REXX

Todo lo relacionado con REXX en este ambiente.
Responder
riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 13 Oct 2013, 16:30

Hola foro,

por razones de performance tengo que compilar un programa REXX que utiliza paneles y que actualmente funciona correctamente tanto en su version interpretada como en su version con codigo intermedio ( compilada con el procedimiento standard REXXC ).

La compilación la realizo con otro procedimiento standrad REXXCL que genera un load module en una librería de ejecución standard.

La compilación del programa la he hecho en un caso con STUB=CPPL y en el otro con STUB=CALLCMD y en ambos casos ejecute con TSO CALL loadlib(REPARCH) siendo loadlib la librería a la que apunte la SYSLMOD en la compilación y REPARCH el programa.

La ejecución del programa compilado con STUB=CPPL devolvió el control inmediatamente sin hacer absolutamente nada y sin ningún tipo de mensaje visible.

La ejecución del programa compilado con STUB=CALLCMD si se realizo pero dio un error inesperado. La ejecución de

address ispexec "vget zscrmaxd"

si bien deja RC=0 falla porque no se obtiene el valor de zscrmaxd ( numero de filas de la pantalla ).
Quite el control de zscrmaxd pero ahora la cancelación se da en el despliegue del panel

address ispexec "display panel(panel0) cursor(posc)" cuyo RC queda 20.

Reitero que estos errores son inexistentes si ejecuto la REXX en forma interpretada o con el código intermedio por compilación con REXXC.

A pesar de que desde hace algunos anos vengo realizando programación REXX esta es la primera vez que realizo una compilación con generación de load module, por lo que tengo dudas acerca de si estoy compilando eligiendo el STUB correcto, si estoy ejecutando bien ( TSO CALL loadlib(REPARCH) ), si existen restricciones que desconozco o alguna otra causa que tambien desconozco.

Algun integrante del foro especializado en REXX tiene alguna idea de lo que puede estar sucediendo ?

Gracias por anticipacion
Saludos

riloama

NJB
Su anfitrion
Su anfitrion
Mensajes: 1114
Registrado: 12 Oct 2003, 16:27
País: Argentina
Ciudad: Capilla del Señor
Ocupación: System Programmer
Contactar:

Re: Inconvenientes en compilacion de programas REXX

Mensaje por NJB » 14 Oct 2013, 15:13

Hola

Yo tengo también varios años compilando programas para distintos entornos y antes usaba el que correspondía para cada entorno pero desde que salió (have varios releases) uso el STUB=MULTI lo que te simplifica ya que podes usar el mismo object module desde un JCL o como comando de tso , etc.

A mi nunca me trajo problemas y tengo módulos que corren bajo TSO y otros bajo TSO/ISPF.

Antes de seguir matándome haría la prueba con este stub.

Además para ejecutar si lo pones en una biblioteca visible desde tu address space ya sea para el MVS (lnklst o steplib) o dentro de tu procedure de tso la invocación es directa, es decir el nombre del módulo.

Saludos y suerte.
Norberto Bocalandro

riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 14 Oct 2013, 22:26

Hola Norberto,

gracias por la colaboracion; hace un par de horas acabo de encontrar una solucion a mi problema; googleando obtuve un caso similar al mio y una respuesta que me permitio ejecutar el programa compilado.

Este es el thread

http://bit.listserv.ispf-l.narkive.com/ ... piled-rexx

La solucion encontrada tiene dos pasos

1. Compilacion con STUB=MULTI tal como lo estas haciendo.

2. Generar un pequeno programa REXX, que llame a mi programa principal REPARCH, con las siguientes instrucciones

"ISPEXEC LIBDEF ISPLLIB DATASET ID(&ISPLLIB) STACK"
"ISPEXEC SELECT CMD(REPARCH) PASSLIB NEWAPPL(TEMP) LANG(CREX)"

con la variable ISPLLLIB conteniendo la loadlib.

El programa llamador lo ejecuto en modo interpretado y la llamada al modulo se ejecuta correctamente.

Manana estare probando tu solucion que entiendo evitaria el programa llamador (si lo pones en una biblioteca visible desde tu address space ya sea para el MVS (lnklst o steplib) o dentro de tu procedure de tso la invocación es directa). La solucion encontrada en la Web hace hincapie en el uso de LANG(CREX); pregunta, al invocar tus programas haces referencia a LANG(CREX) ?

Como mencione, la ejecucion fue correcta, pero fue decepcionante desde el punto de vista de la performance; las ejecuciones duraron exactamente lo mismo que con la version de codigo intermedio. Las pruebas las realice en RDZ for UT, el Hercules de IBM bajo Linux, y manana las realizare en un mainframe real para ver si hay mejoras.

Nuevamente gracias por tu aporte.
Saludos

riloama

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 545
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por Vicente » 15 Oct 2013, 03:38

Hola riloama,
NJB escribió:pero fue decepcionante desde el punto de vista de la performance; las ejecuciones duraron exactamente lo mismo que con la version de codigo intermedio.
Cuando se compra el compilador de REXX, también se puede comprar Library for REXX. IBM tiene dos versiones del Library, la de pago y la Alternate.
Alternate Library es gratuita y se distribuye para que quienes tengan programas compilados puedan ejecutarlos, esto permite a los fabricantes de software vender sus productos a todos los clientes.
Pero cuando se ejecuta un programa compilado en una instalación con Alternate Library, lo que ocurre es que el programa es descompilado y ejecutado en modo intérpretado, por lo que el rendimiento no mejora.
La solución es comprar Library for REXX y modificar los procedimientos de ejecución para utilizarla, en lugar de Alternate Library.

Un saludo

Leamos un poco:
http://publibfp.dhe.ibm.com/epubs/pdf/h1981605.pdf
IBM Compiler and Library for REXX on zSeries. User’s Guide and Reference
Capítulo 1: Overview
Apartado: Alternate Library Overview
Capítulo 10. Performance and Programming Considerations
Apartado: Creating REXX Programs for Use with the Alternate Library
(z/OS, z/VM)
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 15 Oct 2013, 07:16

Vicente,

muchas gracias por la informacion; desconocia el tema, como mencione a pesar de que hace anos programo en REXX es la primera vez que compilo. Podrias decirme cual es el nombre de la libreria paga para ver si esta instalada.
Saludos

riloama

riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 15 Oct 2013, 07:28

Vicente,

como dices, un poco de lectura no viene mal.

El manual que indicas viene con un ejemplo donde se verifica la existencia de esa libreria
Trace ’O’ /* Suppress trace messages */
Address Linkmvs ’EAGRTPRQ’ /* Check for the Library */
If rc¬=-3 Then /* -3 means the Library is not there */
Say ’IBM Library for REXX on zSeries available’
Gracias
Saludos

riloama

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 545
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por Vicente » 15 Oct 2013, 08:48

riloama escribió:Podrias decirme cual es el nombre de la libreria
Lo siento pero en mi instalación no tengo ni Compilador ni Library.
No se como se llaman los ficheros.
Saludos
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 15 Oct 2013, 11:22

Vicente,

no te preocupes; en el manual sobre el compilador que referiste figuran las instrucciones que permiten verificar la existencia de la libreria.
Saludos

riloama

jaisaper
Usuario avanzado
Usuario avanzado
Mensajes: 42
Registrado: 11 Nov 2010, 09:12
País: España
Ciudad: Pamplona
Ocupación: Técnico en Sistemas

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por jaisaper » 21 Oct 2013, 06:14

Tu tema puede ser tan sencillo como el el JCL de compilaciín REXXL en el paso LKED, a la DD SYSLIB concatenar el fichero con los modulos del ISPF/PDF a los que invocas con las sentencias "address ispexec ", al fichero ISP.SISPLOAD o como lo llameis en vuestra instalación.
Te quedarian mas o menos así:
//LKED EXEC PGM=HEWL,PARM='LIST,AMODE=31,RMODE=ANY,RENT,MAP',
// COND=(0,NE,PLKED)
//*
//SYSLIB DD DSN=&LIBDSN,DISP=SHR
// DD DSN=ISP.ISPLOAD,DISP=SHR

Con esto resolveras los problemas relacionodados con las ISPEXEC.

riloama
Colaborador
Colaborador
Mensajes: 187
Registrado: 02 Sep 2008, 18:39
Ubicación: Caracas - Veenzuela

Re: Inconvenientes en ompilacion de programas REXX

Mensaje por riloama » 21 Oct 2013, 12:24

Hola Jaisaper,

pruebo y te aviso como me va.

Gracias
Saludos

riloama

Responder