Hola Santiago,
Muchas gracias por la respuesta y disculpa por la confusión en la atribución de autor en una respuesta de un mensaje anterior. En este mensaje has sido muy claro y preciso, por lo tanto me ha quedado muy claro.
Saludos

-------------------------------
Carlos Augusto Correa García
CMAC PIURA S.A.C.
PIURA - PERU




Santiago G Martí escribió:



Hola Carlos Augusto,

Te confirmo:
Cuando creas una tabla o fichero físico o lógico, se crea una definición de
formato con las características del registro, además se crea una firma que
es el nivel de formato.

Cuando compilas un programa que utiliza una tabla o fichero para acceso
tradicional, SETLL, CHAIN, READ, WRITE, se incluye el código necesario para
procesar los buffers y los registros de los ficheros descritos
externamente.
Además, como puedes ver haciendo DSPPGMREF, por cada fichero se almacena la
"firma" o nivel de formato.

Cuando se ejecuta un programa, al abrir un fichero se comprueba que la
"firma" del fichero coincide con la que tenía cuando se compiló el
programa, para garantizar que el código incluido procesará correctamente el
fichero.

El identificador de nivel de formato ("firma"), se construye a partir de
las características que pueden influir en el proceso del fichero:
- Nombre de registro, Nombre y orden de los campos, tipo de campo, tamaño
de campo, valor por omisión, etc.

Si al crear los ficheros lógicos detallas todos los campos que necesitas,
aunque luego añadas, elimines o modifiques campos en la tabla o fichero, si
estos campos no están incluidos en el fichero lógico, cuando se vuelva a
compilar el fichero lógico tendrá las mismas características y por lo tanto
la misma identificación de nivel de formato.

Los programas que utilizan esos ficheros lógicos no es necesario
compilarlos, siguen funcionando perfectamente.

Te garantizo que esto es así desde hace más de 20 años  y, salvo errores
poco frecuentes de IBM con sus PTF, funciona completamente.

Puede que ahora no preocupe demasiado tener que recompilar más o menos
programas con las velocidades de las nuevas máquinas.
Pero cuando una compilación tardaba entre 5 minutos y media hora, era de
agradecer no tener que recompilar los programas.

Saludos,
                 ---------------------------
                   Santiago Martí
                      Dusen, S.A.
                 ---------------------------


que si modificas, eliminas o añades campos a una tabla,


Carlos Augusto Correa García <[EMAIL PROTECTED] Para om.pe> [email protected] Enviado por: cc forum.help400-adm [EMAIL PROTECTED] Asunto Re: Campo autoincremental, o DDS versus SQL. 26/01/2006 17:28 Por favor, responda a [EMAIL PROTECTED] bios.es



Saludos Fernando,
Bueno he seguido la secuencia de las discusiones al respecto. Y me dejó
un poco en duda lo que planteaste.
¿Es factible lograr que cuando se modifique un campo de una tabla solo
se recompilen los programas involucrados y no todos los que hacen
referencia a la tabla?.
Bueno, en nuestra empresa tenemos un proceso que automáticamente hace un
analisis del impacto y recompila todos los objetos relacionados en forma
automática. Pero éste es una utilidad de desarrollo propio.
Lo que tu dices es que si creamos LF y/o Vistas de una tabla creada con
SQL y nuestros programas haacen referencia a éstos. ¿Entonces cuando yo
agregue un campo al fichero no será necesario recompilar todos los
programas? Me deja un poco la duda.
Saludos

-------------------------------
Carlos Augusto Correa García
CMAC PIURA S.A.C.
PIURA - PERU

Santiago G Martí escribió:


Hola Fernando:

Tienes razón.

Pero nosotros utilizamos un estándar antiguo, aunque últimamente se está
poniendo de moda, de manera que en cada programa los ficheros se utilizan
mediante LF, ya sea ficheros lógicos o Vistas SQL, de forma que solamente
contengan los campos relacionados con ese programa.

De esta forma, cuando añadimos o modificamos un campo a un fichero sólo es
necesario considerar, modificar y recompilar los programas afectados y no
es necesario preocuparse por el resto de ficheros lógicos ni programas.


Saludos,
                ---------------------------
                  Santiago Martí
                     Dusen, S.A.
                ---------------------------







           Fernando Pérez

           <[EMAIL PROTECTED]

           m>                                                       Para

           Enviado por:              [email protected]

           forum.help400-adm                                          cc

           [EMAIL PROTECTED]

                                                                  Asunto

                                     Re: Campo autoincremental, o DDS

           16/01/2006 16:37          versus SQL.



              Por favor,

              responda a

           [EMAIL PROTECTED]

                bios.es





A nosotros los índices nos funcionan bien con las funciones tradicionales
de acceso a datos de RPG. A las tablas creadas con SQL (o sea, todas las
nuevas), les creamos índices, y a las que ya exisitían con DDS's les
seguimos creando lógicos.

Eso sí, que yo sepa, no hay equivalente SQL a un lógico de unión ordenado.

Saludos.

Fernando Pérez

Cerámica Saloni. Dpto. Sistemas


Santiago G Martí escribió:



    Nosotros estamos cambiando poco a poco.

    Los ficheros físicos los creamos con SQL, porque tienen mucho mejor
    rendimiento que los creados con DDS.

    Sobre estas tablas creamos Ficheros Lógicos con DDS, para poder
    utilizarlos
    con las sentencias tradicionales de RPG CHAIN, READ etc.

    En los programas sólo utilizamos LF.


    Saludos,
                      ---------------------------
                        Santiago Martí
                           Dusen, S.A.
                      ---------------------------





                 Vicente García

                 <[EMAIL PROTECTED]

                 om>
    Para
                 Enviado por:              [email protected]

                 forum.help400-adm
    cc
                 [EMAIL PROTECTED]


    Asunto
                                           Re: Campo autoincremental

                 13/01/2006 09:18



                    Por favor,

                    responda a

                 [EMAIL PROTECTED]

                      bios.es







    En cuanto a que no te gusta tener ficheros sin DDS, ¿es por que te
    gusta
    tener los fuentes de los ficheros de datos? Si es por eso con SQL
    sigues
    teniendo los fuentes tanto de la tabla en si como de índices,
vistas,
    restricciones,... y la potencia que te da el SQL no tiene
comparación
    a
    las DDS.

    Desde estos fuentes SQL con RUNSQLSTM creas las tablas, índices,
    vistas,... igual que ahora haces con CRTPF o CTRLF (opción 14 de
    PDM).

    Incluso es posible desde los ficheros que tienes ahora (incluso sin
    tener el fuente DDS) generar las sentencias DDL de SQL que les
    corresponden, mediante iSeries Navigator o mediante el API QSQGNDDL.

    Y de todas maneras se pueden tener conviviendo juntas tablas creadas
    desde DDS e ir creando las nuevas desde SQL.

    Saludos

    Vicente García Valero
    Departamento Sistemas
    Cerámica SALONI, S.A.

    Jordi Parera wrote:

          Hola Foro,

          Estoy intentado crear un fichero con un campo autoincremental
          vía DDS,
          creo que es imposible, me lo podrían confirmar.

          Mediante SQL ningún problema, aunque no me gusta excesivamente
          tener
          ficheros sin DDS.

          Me he encontrado con una situación como mínimo sorprendente,
si
          creo un
          fichero vía SQL y posteriormente intento añadir un campo
          autoincremental
          con una sentencia de este estilo:

          ALTER TABLE Fichero ADD COLUMN campo INT

          GENERATED ALWAYS AS IDENTITY

          (START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO

          CYCLE NO ORDER CACHE 20)

          , me lo crea sin ningún problema. Pero si intento hacer lo
          mismo contra
          un fichero creado con DDS, sin ningún campo clave me da el
          siguiente
          error:

          Mensaje . . . . : Sólo se permite una columna ROWID o IDENTITY
          para la
          tabla

          Fichero de Biblioteca.

          Causa . . . . . : La columna "campo" no puede crearse en la
          tabla
          "Fichero"

          de "Biblioteca" ya que la columna *N ya se ha definido. Puede
          haber como
          máximo una

          columna IDENTITY y una columna ROWID que estén definidas en
una
          tabla.

          Recuperación . : Elimine una de las columnas o bien cambie los
          atributos
          de

          modo que sólo una columna esté definida como ROWID o como una
          columna

          IDENTITY. Intente de nuevo la petición.

          Alguien me podría decir porque o si estoy haciendo algo
          incorrectamente,
          muchas gracias a todos por vuestra ayuda.



    __________________________________________________
    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 visita la siguente URL:
    http://coyote.combios.es/mailman/listinfo/forum.help400



    __________________________________________________
    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 visita la siguente URL:
    http://coyote.combios.es/mailman/listinfo/forum.help400

      (See attached file: fperez.vcf)

__________________________________________________
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 visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400



__________________________________________________
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 visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

__________________________________________________
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 visita la siguente URL:
http://coyote.combios.es/mailman/listinfo/forum.help400

Responder a