Realmente con mi pregunta original no preguntaba por las diferencias entre DDS 
y DDL ni iniciar un conversión sobre ese tema (tampoco me importa que ocurra). 
Creo que tengo bastante claro las diferencias y las ventajas/inconvenientes de 
cada modelo, mi duda era más "existencial". Sólo quería saber si, a parte de 
las diferencias que la mayoría conocemos:
 
- CRTLF vs CREATE INDEX
- Lógico sin claves vs vista SQL
- Lógico con claves vs índice SQL
- Tamaño de página
- etc
 
los índices disponían de una "característica" que decantara la balanza.
 
Con los conocimientos (que son pocos) sobre el tema, mi experiencia es:
 
- Tengo la sensación que el motor SQL SQE sí que tiene en cuenta los lógicos 
para analizar y generar los planes de acceso. Supongo que el motor busca vías 
de acceso, independientemente si son lógicos o índices.
 
- Por lo que he leído, un índice es un lógico con clave con un tamaño de página 
mayor. De hecho, en el manual dice que se utiliza CRTLF para crear el índice.
 
- A efectos de uso en un RPG con operaciones de E/S nativas no hay diferencias 
en utilizar uno u otro.
 
- Al crear un índice o lógico el sistema aprovecha vías de acceso ya existentes 
para crear el nuevo índice/lógico.
 
- Las herramientas de IBM (sobre todo el navegador de operaciones o "navigator 
for i") diferencian claramente el objeto que es un índice de lo que es un 
lógico.
 
 
Respecto a tu respuesta, creo que en V6R1 (no sé si V5R4) sí se pueden crear 
índices con selección de registros ya que disponde de una cláusula WHERE en el 
CREATE INDEX.
 
Estoy de acuerdo contigo que la documentación que añadíamos a las DDS parece 
menos vistosa en un miembro fuente con CREATE TABLE. Habría que plantearse si 
es oportuno crear una documentación a parte (word, excel, la herramienta que 
sea) con la información de cada campo y tabla.
 
Respecto a la técnica descrita para crear archivos temporales o intermedios, yo 
utilizo otra. Normalmente estos archivos existen vacíos en una biblioteca (de 
programas o de plantillas). Cuando un programo necesita uno de ellos, lo 
duplica en la QTEMP (CRTDUPOBJ) o en la biblioteca que se quiera y luego los 
usa (OVRDBF). Mi experiencia es, que al sistema le cuesta más crear un archivo 
desde cero (CRTLF o CREATE TABLE) que duplicarlo.
 
Gracias por tu aportación.
 
Javier



________________________________

        De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Angel ALMEIDA 
(DHL ES)
        Enviado el: miércoles, 22 de octubre de 2014 11:22
        Para: forum.help400
        Asunto: RE: Diferencias entre archivo lógico e índices SQL
        
        

        Hola,

         

        Sin entrar en las grandes diferencias que existen entre DDS y DDL, 
evidentemente son muchas (tampoco hay que olvidar que las DD's ya han dejado de 
recibir mejoras), si quería apuntar algunas "pequeñas diferencias"  que afectan 
al RPG.

         

        El fichero lógico además de claves, permite seleccionar registros, un 
caso típico sería un fichero que tenga registros suprimidos (No físicamente), 
si no un campo con una marca, el lógico estaría construido con un clave de 
acceso y una selección de que solo mostrase los que tuviesen un determinado 
campo en blanco ó que fuese diferente a "B" de baja, los RPG que accediesen a 
este fichero no tendría que preocuparse de filtrar los registros de baja, si 
ahora trasladamos esto a  DDL, tendríamos que hacer CREATE TABLE.., CREATE 
INDEX y CREATE VIEW, el índice no permite filtrar y la vista no permite 
especificar claves, así que nuestro RPG tendría que sufrir modificaciones.

         

        No estoy defendiendo las DDS,  sé que están muertas y las posibilidades 
de la DDL son muchas y además seguirán recibiendo mejoras, pero es cierto que 
las aplicaciones que han convivido con DDS no son tan fáciles de migrar, otra 
de las cosas que no me gusta demasiado de las DDL es la forma de crearlas, 
ahora disponemos de una DDS en fichero con todos los detalles y comentarios que 
quiera poner, puedo utilizar esta DDS desde un CLLE ó desde 200, siempre 
utilizo la misma descripción, solo hago el CRTPF con el nombre y ya está, a la 
hora de trabajar con ficheros temporales, los que normalmente creamos en QTEMP 
es muy sencillo, al comienzo del CCLE hacemos el CRTPF y cuando llamamos al RPG 
el fichero ya existe, si lo hacemos con DDL, yo normalmente los CREATE los hago 
dentro del RPG pero si reutilizo ese fichero para el ciclo del RPG, cuando se 
ha abierto el programa el fichero todavía no existe y evidentemente el RPG da 
error, otro inconveniente es que si lo utilizo en 10 RPG distintos tengo que 
tener el CREATE TABLE con todos sus definiciones de campos en los 10 programas, 
si quiero cambiar un campo tendría que hacerlos 10 veces, así que hay que 
buscar soluciones alternativas que evidentemente alteran la forma de trabajar a 
la que estamos acostumbrados con las DDS. 

         

        Es cierto que se pueden buscar soluciones más elegantes, por no son tan 
sutiles, por lo menos desde mi punto de vista.

         

        Saludos,

         

        Angel Almeida.

         

         

         

         

        From: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] On Behalf Of Javier Mora
        Sent: martes, 21 de octubre de 2014 19:53
        To: forum.help400
        Subject: RE: Diferencias entre archivo lógico e índices SQL

         

        Creo que tengo bastante claro problemas e inconvenientes de utilizar 
uno u otro tipo de objeto. Lo que realmente me llama la atención es que en 
realidad son lo mismo a efectos de programación RPG, cuando yo creía que no era 
así.

         

        Es más comparando los tamaños de un lógico con clave con respecto a un 
índice son, más o menos, iguales con pequeñas diferencias en función del tamaño 
de página que elija para el índice.

         

        Lo curioso es que IBM diferencia claramente un lógico de un índice y, 
por eso, preguntaba si alguien pudiera tener una respuesta que aclarara esta 
"duda existencial".

         

        Gracias.

                 

________________________________

                De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Nicolas Silva
                Enviado el: martes, 21 de octubre de 2014 18:24
                Para: forum.help400
                Asunto: Re: Diferencias entre archivo lógico e índices SQL

                Hola todos, si es muy parecido pero no es exactamente lo mismo. 

                El archivo logico lo atiende el motor CQE (Classic Query 
Engine) mientrar que el indice SQL lo atiende el motor SQL (SQL Query Engine).

                En RPG puedes utilizar un indice SQL en la hoja F al igual que 
cualquier logico creado con DDS.

                Espero sirva el aporte. 
                
                Saludos. 

                Nicolas. 

                 

                El 21 de octubre de 2014, 9:10, Javier Mora <jm...@musgrave.es> 
escribió:

                Hola a tod@s:

                 

                me ha surgido una gran duda a raiz de una optimización de una 
sentencia SQL. Hasta la fecha creía que un índice de SQL (CREATE INDEX) era un 
objeto diferente a un archivo lógico (CRTLF). Pensaba que un índice no podía 
utilizarse en la hoja F de un programa RPG para utilizarse con las sentencias 
de E/S (CHAIN, READ, etc). Sin embargo, ¡sí se puede!, como si fuera un lógico 
más.

                 

                Yo pensaba que al crear un índice el sistema sólo guardaba en 
el objeto la vía de acceso, pero no tenía información sobre el resto de los 
campos del registro. Este hecho era el que "impedía" su uso como archivo lógico 
en un RPG. Sin embargo, hemos comprobado (por casualidad) que incluso podemos 
utilizar el índice en un DFU para actualizar el registro.

                 

                A parte del tamaño de la página de datos (64kb) ¿qué 
diferencias hay entre un archivo lógico y un índice? ¿Estoy yo confundido con 
respecto a los campos incluidos en el índice?

                 

                Un saludo y gracias a todos por vuestros comentarios,

                 

                 

                Javier Mora

                
                ____________________________________________________
                Únete a Recursos AS400, nuestra Comunidad ( 
http://bit.ly/db68dd )
                Forum.Help400 © Publicaciones Help400, S.L.

                 

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a