Intenta salir con leave!

Enviado desde mi iPhone

> El 15 mar 2017, a las 6:46 a.m., forum.help400-requ...@listas.combios.es 
> escribió:
> 
> Envíe los mensajes para la lista Forum.help400 a
>    forum.help400@listas.combios.es
> 
> Para subscribirse o anular su subscripción a través de la WEB
>    http://listas.combios.es/cgi-bin/mailman/listinfo/forum.help400
> 
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
>    forum.help400-requ...@listas.combios.es
> 
> Puede contactar con el responsable de la lista escribiendo a:
>    forum.help400-ow...@listas.combios.es
> 
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of Forum.help400 digest...". Además, por favor, incluya
> en la respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
> 
> 
> Asuntos del día:
> 
>   1. Necesito una ayudita con los subprocedimientos :-) (ostatu ostatu)
>   2. Re: Necesito una ayudita con los subprocedimientos :-)
>      (Juan Carlos Paredes Castañón)
>   3. Re: Necesito una ayudita con los subprocedimientos :-)
>      (ostatu ostatu)
>   4. RE: Necesito una ayudita con los subprocedimientos :-)
>      (Javier Mora)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Wed, 15 Mar 2017 10:13:11 +0100
> From: ostatu ostatu <ost...@gmail.com>
> Subject: Necesito una ayudita con los subprocedimientos :-)
> To: forum.help400@listas.combios.es
> Message-ID:
>    <CAOEbL88V8BdO_dnpCr2asiAEiSAH_FaCXo6wGuZ_yt0=wf6...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> Hola.
> 
> Estoy empezando a utilizar los subprocedimientos en vez de las "clasicas"
> subrutinas y me acabo de encontrar con un problema que no soy capaz de
> resolver.
> 
> Cuando trabajo con subrutinas y deseo finalizar el programa puedo codificar
> un *inLR = *on y un Return en cualquier parte y el programa finaliza, pero
> si intendo hacer los mismo en un subprocedimiento no hay manera de que el
> programa finalize inmediatamente :-(
> 
> Este es el pgm de ejemplo.
> 
> H DFTACTGRP(*NO)
> 
> /free
> 
>     dsply 'inicio main' ;
>     sub1() ;
>     dsply 'final  main' ;
> 
>     *inLR = *on ;
>     Return ;
> 
> /end-free
> 
> p sub1            b
> d                 pi
> /free
>     dsply 'inicio sub1' ;
>       finalizar_pgm() ;
>     dsply 'final  sub1' ;
> /end-free
> p                 e
> *
> p finalizar_pgm   b
> d                 pi
> /free
>     dsply 'inicio finalizar_pgm' ;
>     *inLR = *on ;
>     Return ;
>     dsply 'final  finalizar_pgm' ;
> /end-free
> p                 e
> 
> He probado a llamar a una subrutina desde el subprocedimiento (Exsr) para
> hacer el LR y el Return pero al compilador no le ha gustado con lo que
> deduzco que no se pueden hacer Exsr dentro de los subprocedimientos ...
> 
> ¿Alguna idea de como solucionar el problema?
> 
> Saludos
> Ostatu
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: 
> <http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/20170315/77143505/attachment-0001.html>
> 
> ------------------------------
> 
> Message: 2
> Date: Wed, 15 Mar 2017 11:04:06 +0100
> From: Juan Carlos Paredes Castañón    <juancar...@paredes.info>
> Subject: Re: Necesito una ayudita con los subprocedimientos :-)
> To: <forum.help400@listas.combios.es>
> Message-ID: <7b5b1f97b1093b839626f407aa257...@paredes.info>
> Content-Type: text/plain; charset="utf-8"
> 
> 
> 
> Puedes hacer que el subprocedimiento devuelva un valor indicando si
> tiene que salir o no. Y al retornar, en función de ese valor, haces la
> salida. 
> 
> Saludos 
> 
> Juan Carlos. 
> 
> El 15/03/2017 10:13, ostatu ostatu
> escribió: 
> 
>> Hola.
>> 
>> Estoy empezando a utilizar los
> subprocedimientos en vez de las "clasicas" subrutinas y me acabo de
> encontrar con un problema que no soy capaz de resolver.
>> 
>> Cuando
> trabajo con subrutinas y deseo finalizar el programa puedo codificar un
> *inLR = *on y un Return en cualquier parte y el programa finaliza, pero
> si intendo hacer los mismo en un subprocedimiento no hay manera de que
> el programa finalize inmediatamente :-(
>> 
>> Este es el pgm de
> ejemplo.
>> 
>> H DFTACTGRP(*NO) 
>> 
>> /free 
>> 
>> dsply 'inicio main' ;
> sub1() ; 
>> dsply 'final main' ;
>> 
>> *inLR = *on ; 
>> Return ;
> /end-free 
>> 
>> p sub1 b 
>> d pi 
>> /free 
>> dsply 'inicio sub1' ;
> finalizar_pgm() ; 
>> dsply 'final sub1' ; 
>> /end-free 
>> p e 
>> * 
>> p
> finalizar_pgm b 
>> d pi 
>> /free 
>> dsply 'inicio finalizar_pgm' ;
> *inLR = *on ; 
>> Return ; 
>> dsply 'final finalizar_pgm' ;
>> /end-free
> 
>> p e 
>> 
>> He probado a llamar a una subrutina desde el
> subprocedimiento (Exsr) para hacer el LR y el Return pero al compilador
> no le ha gustado con lo que deduzco que no se pueden hacer Exsr dentro
> de los subprocedimientos ...
>> 
>> ¿Alguna idea de como solucionar el
> problema?
>> 
>> Saludos Ostatu
> ____________________________________________________
>> Únete a Recursos
> AS400, nuestra Comunidad ( http://bit.ly/db68dd [1] )
>> Forum.Help400
> (c) Publicaciones Help400, S.L.
> 
> -- 
> url: http://www.paredes.info
> mail:
> juancar...@paredes.info
> 
> 
> Links:
> ------
> [1] http://bit.ly/db68dd
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: 
> <http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/20170315/c037d371/attachment.htm>
> 
> ------------------------------
> 
> Message: 3
> Date: Wed, 15 Mar 2017 11:17:31 +0100
> From: ostatu ostatu <ost...@gmail.com>
> Subject: Re: Necesito una ayudita con los subprocedimientos :-)
> To: "forum.help400" <forum.help400@listas.combios.es>
> Message-ID:
>    <caoebl8_eo1xy00ecesnw+rhzi0doxwcc8fxg23dpo6kao3l...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> Ya lo habia pensado pero el problema es que si desde un subprocedimiento
> llamo a otro subprocedimiento tengo que ir controlando el valor de retorno
> de cada unos de los subprocedimientos hasta terminar en el main y entonces
> hacer el LR + el return.
> 
> Buscaba "algo mas directo" ...
> 
> Igualmente gracias por la sugerencia :-)
> 
> 
> 2017-03-15 11:04 GMT+01:00 Juan Carlos Paredes Castañón <
> juancar...@paredes.info>:
> 
>> Puedes hacer que el subprocedimiento devuelva un valor indicando si tiene
>> que salir o no. Y al retornar, en función de ese valor, haces la salida.
>> 
>> Saludos
>> 
>> Juan Carlos.
>> 
>> 
>> 
>> El 15/03/2017 10:13, ostatu ostatu escribió:
>> 
>> Hola.
>> 
>> Estoy empezando a utilizar los subprocedimientos en vez de las "clasicas"
>> subrutinas y me acabo de encontrar con un problema que no soy capaz de
>> resolver.
>> 
>> Cuando trabajo con subrutinas y deseo finalizar el programa puedo
>> codificar un *inLR = *on y un Return en cualquier parte y el programa
>> finaliza, pero si intendo hacer los mismo en un subprocedimiento no hay
>> manera de que el programa finalize inmediatamente :-(
>> 
>> Este es el pgm de ejemplo.
>> 
>> H DFTACTGRP(*NO)
>> 
>> /free
>> 
>>     dsply 'inicio main' ;
>>     sub1() ;
>>     dsply 'final  main' ;
>> 
>>     *inLR = *on ;
>>     Return ;
>> 
>> /end-free
>> 
>> p sub1            b
>> d                 pi
>> /free
>>     dsply 'inicio sub1' ;
>>       finalizar_pgm() ;
>>     dsply 'final  sub1' ;
>> /end-free
>> p                 e
>> *
>> p finalizar_pgm   b
>> d                 pi
>> /free
>>     dsply 'inicio finalizar_pgm' ;
>>     *inLR = *on ;
>>     Return ;
>>     dsply 'final  finalizar_pgm' ;
>> /end-free
>> p                 e
>> 
>> He probado a llamar a una subrutina desde el subprocedimiento (Exsr) para
>> hacer el LR y el Return pero al compilador no le ha gustado con lo que
>> deduzco que no se pueden hacer Exsr dentro de los subprocedimientos ...
>> 
>> ¿Alguna idea de como solucionar el problema?
>> 
>> Saludos
>> Ostatu
>> 
>> 
>> ____________________________________________________
>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>> Forum.Help400 © Publicaciones Help400, S.L.
>> 
>> --
>> url: http://www.paredes.info
>> mail: juancar...@paredes.info
>> 
>> 
>> ____________________________________________________
>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>> Forum.Help400 © Publicaciones Help400, S.L.
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: 
> <http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/20170315/639ab4f7/attachment-0001.htm>
> 
> ------------------------------
> 
> Message: 4
> Date: Wed, 15 Mar 2017 10:46:16 +0000
> From: Javier Mora <jm...@musgrave.es>
> Subject: RE: Necesito una ayudita con los subprocedimientos :-)
> To: "'forum.help400'" <forum.help400@listas.combios.es>
> Message-ID: <16e62af2261044e48f02c864677a8358@SRVCORREO.dominio.local>
> Content-Type: text/plain; charset="utf-8"
> 
> Yo también sufrí este problema hace tiempo.
> 
> Primero un consejo: olvídate de técnicas que con OPM RPG funcionaban muy 
> bien, muchas de ellas no tienen sentido en ILE.
> 
> Este problema yo lo he resuelto lanzando ?excepciones?. En el RPG clásico 
> podíamos tener anidadas una infinidad de llamadas EXSR y en cualquier punto 
> de este ?camino? podíamos finalizar el programa con un Return (*InLR = *ON si 
> queríamos cerrar ficheros también).
> 
> La solución de Juan Carlos es posible pero ?afea? muchísimo el programa. En 
> mi caso, yo estudié varias alternativas y, al final, opté por la opción que 
> explico aquí.
> 
> La idea consiste en ?lanzar? un mensaje de escape cuando se quiera cancelar 
> un programa. Esta no es, ni mucho menos, una técnica novedosa y se utiliza en 
> lenguajes como  Java y C++ desde hace años. El IBM i lleva integrado en el 
> sistema operativo un control de mensajes que permite ?lanzarlos? y 
> ?atraparlos?.
> 
> Cuando envías un mensaje de escape, éste recorre toda la pila de llamadas 
> hasta que es manejado por programa o por el sistema. En mis programas, una 
> salida de este tipo siempre se produce por un motivo excepcional del cual 
> quiero informar.
> 
> Para mantener estos mensajes bajo control deberás utilizar ?Monitor? en RPG o 
> MONMSG en CL.
> 
> No sé si he sido capaz de explicar la técnica.
> 
> En mi caso se ha desarrollado un programa de servicio con la funcionalidad 
> necesaria para ?lanzar? (throw), ?atrpar? (catch) y consultar la excepción 
> manejada. Estas utilidades utilizan las APIs del sistema para el manejo de 
> funciones.
> 
> Saludos,
> 
> Javier Mora
> 
> De: forum.help400-boun...@listas.combios.es 
> [mailto:forum.help400-boun...@listas.combios.es] En nombre de ostatu ostatu
> Enviado el: miércoles, 15 de marzo de 2017 10:13
> Para: forum.help400@listas.combios.es
> Asunto: Necesito una ayudita con los subprocedimientos :-)
> 
> Hola.
> Estoy empezando a utilizar los subprocedimientos en vez de las "clasicas" 
> subrutinas y me acabo de encontrar con un problema que no soy capaz de 
> resolver.
> Cuando trabajo con subrutinas y deseo finalizar el programa puedo codificar 
> un *inLR = *on y un Return en cualquier parte y el programa finaliza, pero si 
> intendo hacer los mismo en un subprocedimiento no hay manera de que el 
> programa finalize inmediatamente :-(
> Este es el pgm de ejemplo.
> 
> H DFTACTGRP(*NO)
> 
> /free
> 
>     dsply 'inicio main' ;
>     sub1() ;
>     dsply 'final  main' ;
> 
>     *inLR = *on ;
>     Return ;
> 
> /end-free
> 
> p sub1            b
> d                 pi
> /free
>     dsply 'inicio sub1' ;
>       finalizar_pgm() ;
>     dsply 'final  sub1' ;
> /end-free
> p                 e
> *
> p finalizar_pgm   b
> d                 pi
> /free
>     dsply 'inicio finalizar_pgm' ;
>     *inLR = *on ;
>     Return ;
>     dsply 'final  finalizar_pgm' ;
> /end-free
> p                 e
> He probado a llamar a una subrutina desde el subprocedimiento (Exsr) para 
> hacer el LR y el Return pero al compilador no le ha gustado con lo que 
> deduzco que no se pueden hacer Exsr dentro de los subprocedimientos ...
> ¿Alguna idea de como solucionar el problema?
> Saludos
> Ostatu
> 
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: 
> <http://listas.combios.es/cgi-bin/mailman/private/forum.help400/attachments/20170315/047b009e/attachment.htm>
> 
> ------------------------------
> 
> __________________________________________________
> Forum.HELP400 es un servicio m&amp;amp;#225;s de ServerNEWS.
> &amp;amp;#169; Publicaciones Help400, S.L. - Todos los derechos reservados
> http://www.help400.es
> _____________________________________________________
> 
> Para darte de baja visita la siguente URL:
> http://listas.combios.es/mailman/listinfo/forum.help400
> 
> Fin de Resumen de Forum.help400, Vol 125, Envío 9
> *************************************************
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a