Adjunto os envio un sencillo y simple programa de servicio y un CL, suficiente para demostrar un problema que tambien se me da en otros *SRVPGM mas complejos que estoy utilizando.
El problema consiste en que una vez que el programa de servicio ha sido activado (alguien lo llama) no refleja ningun cambio de fecha de sesi�n mediante un CHGJOB JOB(*) DATE(ddmmaa) y como resultado de ello cualquier referencia posterior a UDATE dentro de dicho programa de servicio toma como valor la fecha de sesion inicial.
Probar a ejecutarlo y vereis como el segundo y siguientes CHGJOB de fecha no tiene efecto.
El *SRVPGM TESTUDATE visualiza la fecha de la sesion UDATE en la funcion DarFecha.
EL CL TESTCL solicita un CHGJOB DATE(ddmmaa) y despues llama la funci�n DarFecha. Para finalizar hay q pulsar F12 en CHGJOB.
�alguna idea d como conseguir q el *SRVPGM se "entere" que se ha cambiado la fecha de sesi�n? La opci�n de reprogramar el programa de servicio puede resultarme muy costosa: tened en cuenta que esto es un ejemplo y los verdaderos programas de servicio donde se da este programa son varios y utilizados por cientos de programas...
�alguna forma de descargar y volver a carga un *SRVPGM? �Como refrescarlo?
Para compilar seguir los siguientes pasos:
CRTRPGMOD MODULE(libl/TESTUDATE) SRCFILE(LIB/QRPGLESRC)
CRTSRVPGM SRVPGM(libl/TESTUDATE) MODULE(libl/TESTUDATE)
CRTCLMOD MODULE(libl/TESTCL) SRCFILE(libl/QCLLESRC) SRCMBR(TESTCL)
CRTPGM PGM(libl/TESTCL) MODULE(libl/TESTCL) BNDSRVPGM(libl/TESTUDATE)
Un saludo
--------------------------
De todo sobre el AS/400 en
http://www.ajut400.com
_________________________________________________________________
�nete al mayor servicio mundial de correo electr�nico: http://www.hotmail.com
PGM
REPETIR:
? CHGJOB ?*JOB(*) ??DATE(*same)
MONMSG MSGID(CPF6801) EXEC(RETURN)
CALLPRC PRC(darfecha)
GOTO CMDLBL(REPETIR)
ENDPGM
h nomain datedit(*DMY.)
d DarFecha pr
p DarFecha b Export
d pi
D Mensaje s 50 inz('La fecha de sesion es:')
D MsgLen s 9b 0
D MsgId s 7 inz(' ')
D Msgf s 20 inz
D ErrCod s 10u 0 inz(0)
c eval Mensaje = %trim(Mensaje) + ' ' +
c %editc( udate : 'Y' )
c eval MsgLen = %size( Mensaje )
C call 'QUILNGTX'
C parm Mensaje
C parm MsgLen
C parm MsgId
C parm Msgf
C parm ErrCod
p e
