Eso es usar ILE, Fernando. A modo de comentario, no es necesario modificar la signatura en los casos que mencionas, puedes conservar la misma. Hay que hacer una aclaración a los programas de servicio: si se modifica una función de un programa de servicios sin tocar la interfaz de parámetros, no es necesario volver a crear el programa de servicios, tan solo es necesario actualizar el programa de servicios (UPDSRVPGM) para poder tener "visibilidad" de los cambios efectuados. Conviene mirarse el manual que has citado, puedes llevarte más de una sorpresa.

Saludos.

Fernando Pérez escribió:
Mensaje
Muy posiblemente el problema sea que no defines la signatura del programa de servicio, con lo que cada vez que añadas funciones, ésta cambia, actuando de forma parecida al nivel de los formatos de registro. De esta manera,  si no recompilas los programas que usan el programa de servicio, estos fallarán.
 
Nosotros usamos lo que en inglés se conoce como 'binder language' o algo así. La cosa consiste en definir en un fuente las funciones y datos que exporta el programa de servicio, y opcionalmente su signatura. Un ejemplo sería :
 
STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('S20031111')
  EXPORT SYMBOL(DATOS1)                           
  EXPORT SYMBOL(FUNC1)                        
  EXPORT SYMBOL(FUNC2)                       
  EXPORT SYMBOL(FUNC3)                        
ENDPGMEXP
   
 
En la primera línea defino la signatura del programa de servicio, y en las siguientes las funciones y datos exportados (por norma aquí le ponemos 'S' más la fecha de vigencia de la signatura).
 
De esta manera, cuando añada una función al programa de servicio, si la añado AL FINAL (en el ejemplo, tras FUNC3), no he de cambiar la signatura del programa de servicio y de esta manera no he de recompilar los programas que lo usan. 
 
La signatura ha de cambiarse ( y por ende, recompilar todos los programas que usan el programa de servicio) si se modifica el orden de los EXPORT, se añaden nuevos y no al final, si cambian los parámetros o tipo de datos devuelto de las funciones exportadas, se eliminan exportaciones, o cambia el tipo o tamaño de alguno de los datos exportados. De no cambiarse, los resultados son impredecibles y frecuentemente muy desagradables.
 
Para utilizar el 'binder language' (malditos manuales en inglés...) has de compilar el programa de servicio informando informar el nombre del fuente ( por convenio se suele usar un archivo de fuentes QSRVSRC, y miembro de igual nombre que el programa de servicio) en los parámetros SRCFILE y  SRCMBR, y además informar EXPORT a *SRCFILE          
 
Para más información, consulta ILE CONCEPTS. Allí explica, por ejemplo, como tener x signaturas diferentes para un mismo programa de servicio (no lo he gastado pero puede tener su utilidad).                           
 
 

Saludos.

Fernando Pérez.

Cerámica Saloni. Dpto. Sistemas


-----Mensaje original-----
De: gerardo.santillana [mailto:[EMAIL PROTECTED]]
Enviado el: martes, 02 de marzo de 2004 16:39
Para: [EMAIL PROTECTED]
Asunto: RE: De Fecha a numérico con formato *ISO

Pues aprovechando mas el tema, si tengo una funcion que convierte de caracter a numerico y efectivamente lo tengo en un programa de servicio, mi pregunta, si me puedes ayudar, es que pasos tengo que seguir para modificar este programa de servicio cuando tengo que agregar otras funciones ya que al momento de modificarlo los programas que lo utilizan empiezan a fallar, he leido que se tiene que crear una especie de directorio con todas las funciones que estan dentro de este programa de servicio pero no tengo muy claro esto, no se si tengas algun ejemplo o algo que me aclare un poco  esta duda
 
Gracias
 

Gerardo Santillana
IT Department
Delphi Mechatronic Systems
US Ph: (956) 554 5832
MX Ph: (868) 812 81 63/64/65  Ext 5832
Pager: (956) 768 1048
Mobil E-mail [EMAIL PROTECTED]
e-mail [EMAIL PROTECTED]

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Fernando Pérez
Sent: Tuesday, March 02, 2004 9:29 AM
To: '[EMAIL PROTECTED]'
Subject: RE: De Fecha a numérico con formato *ISO

Perdonado lo del nombre ;)
 
Pues estamos en V5R2, y efectivamente, creo que en V5R1 %int no permite convertir de carácter a numérico. Yo en tu caso me plantearía hacer una función que hiciera la conversión y la pondría en un programa de servicio. La forma más fácil de hacer la conversión es la que propone Joan, pero al no ser free-form es preferible encapsularlo en una función, para que no líe el sangrado.
 

Saludos.

Fernando Pérez.

Cerámica Saloni. Dpto. Sistemas


-----Mensaje original-----
De: gerardo.santillana [mailto:[EMAIL PROTECTED]]
Enviado el: martes, 02 de marzo de 2004 16:05
Para: [EMAIL PROTECTED]
Asunto: RE: De Fecha a numérico con formato *ISO

Que tal Luis
 
    no tengo la solucion mas bien es una pregunta,  en que version estas del S.O. por que yo hago mas pasos para pasar un campo fecha a numerico, de hecho no uso la funcion %INT  por que no me deja hacerla sobre campos caracter, estoy en V5.1
 
Saludos
 

Gerardo Santillana
IT Department
Delphi Mechatronic Systems
US Ph: (956) 554 5832
MX Ph: (868) 812 81 63/64/65  Ext 5832
Pager: (956) 768 1048
Mobil E-mail [EMAIL PROTECTED]
e-mail [EMAIL PROTECTED]

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Fernando Pérez
Sent: Tuesday, March 02, 2004 8:21 AM
To: Foro 400 ([EMAIL PROTECTED])
Subject: De Fecha a numérico con formato *ISO

En vista de que antes ha ido bien la cosa con lo del movel de numérico a alfanumérico, vuelvo a probar suerte:

La forma más sencilla que he encontrado de pasar un campo de fecha a uno numérico (8 0) con formato *ISO es la siguiente (en el ejemplo paso la fecha del sistema, pero la idea sería aplicarlo también a variables tipo fecha):

Fecha_num = %int(%char(%date: *iso0))

¿Alguna forma más abreviada de hacer lo mismo?



Saludos.

Fernando Pérez.

Cerámica Saloni. Dpto. Sistemas


<<Fernando Pérez.vcf>>

****************************************************************************************

Note: The information contained in this message may be privileged and confidential and thus protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to the message and deleting it from your computer. Thank you.


****************************************************************************************
              
****************************************************************************************

Note: The information contained in this message may be privileged and confidential and thus protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to the message and deleting it from your computer. Thank you.


****************************************************************************************
          

Responder a