Archivo de entrada de Diseño:
01 10 de 10 Dígitos Acct#
53 a 01 – Un indicador con valores ‘Y’ o ‘N’
71 10 – sello de Tiempo
(El resto de los campos son insignificantes para esta especie)

Al ordenar el archivo de entrada por la separación y la eliminación de duplicados en dos maneras lugar a resultados diferentes. Quiero saber ¿por qué?

Casei: la División y la Eliminación de duplicados en el mismo paso.

SORT FIELDS=(01,10,CH,A,53,01,CH,A)
SUM FIELDS=NONE
OUTFIL FILES=01,                                             
INCLUDE=(53,01,CH,C'Y',AND,71,10,CH,GT,&DATE2(-)),                            
OUTFIL FILES=02,                                             
INCLUDE=(53,01,CH,C'N',AND,71,10,CH,GT,&DATE2(-)),                            

Caseii: la División y la eliminación de duplicados en dos pasos diferentes:

STEP:01
SORT FIELDS=(01,10,CH,A,53,01,CH,A)
SUM FIELDS=NONE

STEP:02
SORT FIELDS=COPY
OUTFIL FILES=01,                                             
INCLUDE=(53,01,CH,C'Y',AND,71,10,CH,GT,&DATE2(-)),                            
OUTFIL FILES=02,                                             
INCLUDE=(53,01,CH,C'N',AND,71,10,CH,GT,&DATE2(-)),                            

Estos dos pasos son el resultado de salida diferentes. Do u veo ninguna diferencia entre ambos casos? Por favor aclarar.

  • Ambos conjuntos de Ordenar las Cartas tiene errores de sintaxis. Le falta EQ en la Incluye y tiene comas finales en el OUTFILs.
  • Estoy de acuerdo en los errores, pero si hemos de estar dispuestos en lógica, entonces usted podría ser capaz de averiguar lo que estaba exactamente en referencia a; Gracias por su interés Bill 🙂
  • Si edita la pregunta para corregir los errores de sintaxis, podemos eliminar estos comentarios. Eso es lo que yo quería hacer, yo debería haber sido más claro
InformationsquelleAutor Raja Reddy | 2011-08-12

2 Comentarios

  1. 3

    Que usted está pidiendo a ordenar en un Número de Cuenta (10 caracteres ascendente), a continuación, en un Indicador (1 carácter ascendente).
    Estos dos campos no solo determinar la clave de los Timestamp no es parte de la clave de ordenación. Por consiguiente, si hay
    son dos o más registros con el mismo clave podrían ser colocados en cualquier (al azar) de la orden por la especie. No hay manera de saber
    lo que de orden de la Timestamp aparecerán valores.

    Teniendo en cuenta lo anterior, considere lo que sucede cuando se tienen dos registros con el mismo clave pero diferentes
    Timestamp valores. Uno de estos Timestamp valores cumple con el dado INCLUYEN criterios y el otro no.
    El SUMA CAMPOS=NINGUNO parámetro está pidiendo para eliminar los duplicados basándose en la clave. Esto se hace mediante la agrupación de
    todos los registros con el mismo clave juntos y, a continuación, selecciona la última en el grupo. Desde clave
    no incluye el Timestamp el elegido registro es esencialmente un evento aleatorio. En consecuencia, es impredecible
    si se puede obtener el registro que cumple la posterior INCLUYEN condición.

    Hay un par de maneras de solucionar esto:

    • Agregar Timestamp a la clave de ordenación. Esto podría no funcionar porque puede dejar varios registros para el mismo Número de Cuenta /Inidcator, que se puede romper su eliminación de duplicados requisito
    • Solicitar una ordenación estable.

    Una ordenación estable hace que los registros de tener el mismo tipo clave para mantener su misma posición relativa después de la ordenación.
    Esto para conservar el orden original de los Timestamp valores en el archivo dado el mismo clave. Cuando la eliminación de duplicados se produce DFSORT elegirá el último registro del conjunto de duplicados. Esto debe llevar el predicability para el duplicado de proceso de eliminación que usted está buscando. Especificar
    una ordenación estable mediante la adición de un OPCIONES es IGUAL a tarjeta de control antes de que el TIPO tarjeta.

    EDITAR Comentario: …recoge el PRIMER registro

    El libro he basado mi respuesta original en afirmaba claramente el última registro en un grupo de registros con el mismo
    clave sería seleccionado cuando SUMA=NINGUNO se especifica. Sin embargo, siempre es
    mejor consultar a los vendedores propios manuales. IBM DFSORT de Programación de la Aplicación de la Guía de sólo los estados
    que un registro con cada una de las claves va a ser seleccionado. Sin embargo,
    también cuenta con la siguiente nota:

    El PRIMER operando de ICETOOL de selección de operador se puede utilizar para realizar el mismo
    la función como SUMA de los CAMPOS=NINGUNO con OPCIÓN de IGUALA. Además, SELECCIONE la FIRSTDUP,
    ALLDUPS, NODUPS MÁS alta(x), INFERIOR(y), IGUAL a(v), LASTDUP, y por ÚLTIMO, los operandos pueden ser
    se utiliza para seleccionar los registros basados en otros criterios relacionados con el duplicado y no duplicado
    teclas. SELECCIONE DESCARTAR(savedd) operando puede ser usado para guardar los registros descartada por
    En PRIMER lugar, FIRSTDUP, ALLDUPS, NODUPS MÁS alta(x), INFERIOR(y), IGUAL a(v), LASTDUP, o
    Por ÚLTIMO. Consulte selección de Operador para detalles completos sobre la SELECCIONE operador.

    Basándose en esta información me gustaría sugerir el uso de ICETOOL de selección de operador para seleccionar el registro correcto.

    Lo siento por la desinformación.

    • Eso es una explicación muy buena NealB. Me gustaría probar y actualizar en consecuencia. Puede pedir a algunas preguntas más de una vez me consulte con su resolución. Gracias por su tiempo.
    • Funciona NealB, pero una pequeña observación. DFSORT recoge el PRIMER registro del grupo formado por los campos especificados en los CAMPOS de ORDENACIÓN con la SUMA de los CAMPOS=NINGUNO y descarta el resto.
    • Actualizado mi respuesta para usted.
    • oh, eso es realmente útil!
  2. 0

    El problema es como NealB identificado.

    La cosa más fácil de hacer es «deshacerse de» los registros que no quieren por fecha antes de la ESPECIE. El TIPO va a tomar menos tiempo. Esto supone que la SEGREGACIÓN no es necesario. Si es así, usted tiene que mantener su INCLUDE= en el OUTFILs.

    SELECT es una buena opción. SELECCIONE utiliza la OPCIÓN es IGUAL al valor predeterminado. El debajo de la tarjeta de Control puede ser incluido en un xxxxCNTL conjunto de datos, y la acción de la selección con el USO de(xxxx). SELECCIONE proporciona mayor flexibilidad que la SUMA (usted puede obtener la última, entre otras cosas).

    Toda la tarea sonidos defectuoso. Si hay registros por cuenta con diferentes fechas, me gustaría esperar la fecha de la primera o a la última fecha, o algo más específico, a ser necesario, no sólo cualquier registro pasa a ser colgado en torno al final de la SUMA.

     OPTION EQUALS
    
     INCLUDE COND=(71,10,CH,GT,&DATE2(-))
    
     SORT FIELDS=(01,10,CH,A,53,01,CH,A)
    
     SUM FIELDS=NONE
    
     OUTFIL FILES=01,                                             
          INCLUDE=(53,01,CH,EQ,C'Y')
    
     OUTFIL FILES=02,                                             
          INCLUDE=(53,01,CH,EQ,C'N')
    

    O, si el S/N de cubrir todos los registros:

     OUTFIL FILES=02,SAVE                                             
    

Dejar respuesta

Please enter your comment!
Please enter your name here