El move ser�a la soluci�n m�s f�cil si el campo alfanum�rico tuviera el n�mero con el mismo tama�o, pero si no recuerdo mal el mensaje inicial, esto no era as�. Por ejemplo, se pod�an recibir valores como: ':123,25' , '123456,78' , ' 12234'.
Si haces un move de un alfanum�rico con esos valores, te dar� error de datos decimales. F�jate que adem�s est� el problema de los decimales: aunque el campo alfanum�rico tuviera siempre todos los d�gitos, la coma imposibilitar�a hacer el move. Por supuesto se puede ir sacando la parte num�rica, la parte decimal, e ir metiendolo con varios moves a la variable num�rica, pero no parece algo que vaya a ocupar 4 l�neas de c�digo, y a�ades posibilidades de error. Ya que se ha mencionado la elegancia ;), no hay nada menos elegante que un trozo de sql dentro de c�digo libre, y es cierto que cambiar programas de rpgle a sqlrpgle solo por esto puede dar que pensar. Para solucionarlo, una forma elegante ser�a crear una funci�n en un programa de servicio que convirtiera de car�cter a num�rico, como lo hace %dec en versiones posteriores de OS400. As� solamente el m�dulo del programa de servicio ha de ser sqlrpgle. De esta manera, adem�s, cuando se suba de versi�n y se pueda usar %dec, se puede sustituir el sql de la funci�n por el correspondiente %dec, para que los programas que usan la funci�n creada no necesiten ser modificados, y para dejar de utilizar sql para estos 'remiendos'. Perd�n si me he enrollado, pero... � NECESITO VACACIONES YA ! :)) Saludos. Fernando P�rez Cer�mica Saloni. Departamento de Sistemas -----Mensaje original----- De: Francisco Gor [mailto:[EMAIL PROTECTED] Enviado el: jueves, 05 de agosto de 2004 15:54 Para: [EMAIL PROTECTED] Asunto: Re: Error de compilaci�n Lo primero que se me ocurre es hacerlo facil. Cuando no disponiamos todavia de funciones (Aquellos tiempos del RPG II) esto lo resolviamos con un simple MOVE. Lo mas tedioso era pasar el string a un array para aislar la parte numerica. Afortunadamente ahora dispones de %scan y puedes usar TESTN para verificar que la subcadena solo contiene digitos. Esto es mucho menos elegante que la solucion SQL de Fernando, pero no de obliga a cambiar el tipo de compilacion. Juan Antonio escribi�: > Buenas tardes. > Hace unos d�as, un compa�ero del forum me paso con respecto a una > consulta que realice, lo siguiente: > >i = %scan(':': linea) > >y luego si >valor = %dec(%subst(linea: i+1): 15: 2) > >o en un solo paso > >valor = %dec(%subst(linea: %scan(':': linea) + 1): 15: 2) > > >He intentado compilar ambas posibilidades y me da un error de >compilacion: > >*RNF0327 30 3 El primer par�metro para %DEC o %DECH no es v�lido. > >que no me aclara mucho. > >De los que est�n, �a alguien se le ocurre d�nde est� el problema? > >Gracias. > -- =============================================================== Francisco Gor Baquero Artes Graficas Novograf, SA mailto:[EMAIL PROTECTED] http://www.novograf.com =============================================================== *Los acentos de este mensaje se han eliminado intencionadamente =============================================================== _____________________________________________________ Forum.HELP400 es un servicio m�s de NEWS/400. � Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________ Para darte de baja, env�a el mensaje resultante de pulsar mailto:[EMAIL PROTECTED] _____________________________________________________ Forum.HELP400 es un servicio m�s de NEWS/400. � Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________ Para darte de baja, env�a el mensaje resultante de pulsar mailto:[EMAIL PROTECTED]
