Hola Jaime, entonces para cualquier campo vos podes saber si es empaquetado ? por lo que veo en tu pseudo lenguaje, tu variable nunca podria ser superior a 50, que la variable de entrada para valor tiene 50 caracteres de longitud.

Entonces cambiando mi pseudo lenguaje.
Si la VAriable es empaquetada
MOVE VALOR AUXZoned - Zoned de igual tamaño en longitud a VALOR, es decir 50, sin Decimales
   AuxPAcked = %DEC(AUZZoned)
   //Aca viene lo interesante de saber si se puede hacer
MOVE AUXPacked AUXAlfa <- deberia contener un campo empaquetado en formato Alfanumerico.

Ahora deberiamos saber la longitud en Bytes que ocupa el "verdadero valor" dentro de AUXALFA, para poder hacer algo como esto.

%substs(Dsmiarchivo:poscision inicial:longitud en bytes) = %SUBST(AUXALFA; posicion inicial: Longitud); Yo creo que dentro de AUXALfa deveria estar el String que necesitas !
Endif

Saludos


Jaime Villa Torres escribió:
Si tienen en un campo alfa 1234567 y lo ingresar como en el ejemplo que envié, en un campo de 7.2 el valor se almacena de una forma correcta en el campo. Respecto a la pregunta si sabemos en el programa el número de decimales. ----- Original Message -----

    *From:* Vicente Gomez (P.Blatem to help400) (E-mail)
    <mailto:[EMAIL PROTECTED]>
    *To:* 'forum.help400' <mailto:[email protected]>
    *Sent:* Monday, February 04, 2008 4:50 AM
    *Subject:* RE: Actualizar un campo numérico tipo P...Fernando Pérez

    ¿Sabeis la cantidad de decimales que tiene el campo numerico
    empaquetado?

        -----Mensaje original-----
        *De:* [EMAIL PROTECTED]
        <mailto:[EMAIL PROTECTED]>
        [mailto:[EMAIL PROTECTED] nombre de
        *Jaime Villa Torres
        *Enviado el:* viernes, 01 de febrero de 2008 3:24
        *Para:* forum.help400
        *Asunto:* Actualizar un campo numérico tipo P...Fernando Pérez

        Nicolás y Juan Ramón, gracias por la respuesta, pero la
        sentencia MOVE    AUXPacked     TuCampoDS, no aplica, ya que
        tendrías que realizarlo por cada campo, y eso no es dinámico.
        Imagina el siguiente programa
d dsmiarchivo e ds extname(archivo)
        c    *entry        plist
c parm nomvar 10 nombre de la variable c parm valor 50 valor de la variable
        c                          parm                    close
           //free
            If close <> 'C'
        ....
        ....    con los datos de la *InzSr, buscamos la información
        correspondiente al campo ingresado y....
%substs(Dsmiarchivo:poscision inicial:longitud en bytes) =
        %trim(valor);
        ...                       ESTO FUNCIONA PERFETAMENTE EN LA
        MAYORIA DE LOS ARCHIVOS, YA QUE LA APLICACIÓN DONDE SE APLICA
        CASI TODO     ES                      ALFANUMERICO...PERO
        LLEGO LA EXCEPCIÓN, UN CAMPO EMPAQUETADO.
            Else;
        cuando termina de actualizar el el registro.
        envia a un programa el parámetro Dsmiarchivo, y este último
        programa realiza otras acciones con el registro.
              *Inlr = *on;
            EndIf;
Return
           Begsr  *InzSr;
        en este punto utilizamos un api, de la empresa, que genera la
        información de todos los campos del archivo y  nos devuelve,
        la posición inicial del campo, la longitud en bytes y la
        longitud real.
            EndSR;
           .......
            ----- Original Message -----
            *From:* Nicolas Machado
            <mailto:[EMAIL PROTECTED]>
            *To:* forum.help400 <mailto:[email protected]>
            *Sent:* Thursday, January 31, 2008 12:21 PM
            *Subject:* Re: Actualizar un campo numérico tipo
            P...Fernando Pérez

            Hola Jaime, aver que te parece esta idea.

            Podes utilizar la funcion %DEC para convertir un valor a
            una campo Packed.

            Supongo que recibes 2 parametros, entro otros:
            VAriable (Alfanumerico de x posiciones)
            Valor     (Alfanumerico de x Posiciones )

            Entonces ...
            Si la VAriable es = 'TuCAmpoPacked'
               MOVE VALOR   AUXZoned  Zoned de igual tamaño en
            longitud a VALOR, sin Decimales
                AuxPAcked = %DEC(AUZZoned)
               MOVE    AUXPacked     TuCampoDS
            Endif

            No se si funcionaria, es un idea.
            Quiza hasta puedas hacer algo para saber si un campo es
            packed con alguna funcion ...
            Y no haces el IF.

            Espero te sirva la idea.

            Saludos
            Nicolas


            Jaime Villa Torres escribió:
            Ese no es el problema, tienes el programa que le ingresan
            dos parámetros, un parámetro que contiene el nombre de la
            variable a actualizar y otro con el valor, par a todos
            los campos sabemos la posición inicial de cada campo en
            la ds y utilizando %subst, actualizamos el campo, pero
            esta forma no sirve para campos numéricos empaquetados.
Gracias otra vez.

                ----- Original Message -----
                *From:* Fernando Pérez <mailto:[EMAIL PROTECTED]>
                *To:* forum.help400
                <mailto:[email protected]>
                *Sent:* Thursday, January 31, 2008 3:24 AM
                *Subject:* Re: Actualizar un campo numérico tipo P

                5 es el tamaño que ocupa en memoria, pero el campo es
                de 8 dígitos.

                Solo tendrás problemas si lo quieres actualizar con
                MOVE/MOVEL, en cuyo caso tendrás que usar una
                variable del mismo tipo (8p 0). Si utilizas ADD,
                Z-ADD, EVAL o la asignación en formato libre (por
                ejemplo, variable = *date) no tendrás ningún problema.

                Saludos.

Fernando Pérez
                Cerámica Saloni. Dpto. Auditoría y Organización


                Jaime Villa Torres escribió:
                Señores tengo el siguiente problema-

                Exite un pgm con una ds de un archivo

                d dsarchivo  e ds      extname(archivo)

                a este programa llega un nombre de variable de esta
                ds del archivo y un valor, cuando el campo es alfa o
                numérico desempaquetado no hay problema con el
                procedimiento que tenemos para actualizar el campo,
                pero cuando este es numérico empaquetado no hemos
                encotrado la forma de actualizar dicho campo.

                Ejemplo, el campo fecha de 8p 0, este en el sistema
                realmente es de 5, y el valor que tengo es 20080125,
                como volverlo empaquetado.???

                Una solucion es realizar un select por cada campo,
                pero no es practico, dependiendo del numero de
                campos que tenga el archivo. en este caso, el
                archivo tiene mas de 400 campos y si cambia el
                archivo, se debe cambiar el select, no es nada
                dinámico.

                Cualquier consejo es bien venido.

                Gracias como siempre.

                __________________________________________________
                Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
                &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

                
------------------------------------------------------------------------
                __________________________________________________
                Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
                &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

            
------------------------------------------------------------------------

            __________________________________________________
            Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
            &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

-- .::.
            Nicolas Machado
            Metodo Argentina S.A.
            _____________________

            
------------------------------------------------------------------------
            __________________________________________________
            Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
            &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

    ------------------------------------------------------------------------
    __________________________________________________
    Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
    &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

------------------------------------------------------------------------

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&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

--
.::.
Nicolas Machado
Metodo Argentina S.A.
_____________________

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de NEWS/400.
&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

Responder a