Cuando se genera un informe, por defecto se clasifica mediante un procedimiento de clasificación interna. Este procedimiento de clasificación está optimizado para informes de hasta 180 o 200K, aunque existen muchos factores que afectan al tamaño de datos que puede manejar la clasificación interna.
El archivo FOCSORT usado para clasificación interna puede alcanzar cualquier tamaño permitido por el sistema operativo en ejecución y el espacio disponible en el disco. El usuario no tiene que dividir una solicitud para poder acomodar archivos masivos. En versiones anteriores, el archivo FOCSORT tenía un límite de 2GB y el usuario recibía un mensaje FOC298 al sobrepasar el límite de WebFOCUS. Como en esta versión de WebFOCUS no impone ningún límite, el sistema operativo proporciona cualquier manejo de advertencias y errores que esté asignado a la administración de un archivo FOCSORT que sobrepase sus límites.
Puede generar informes más largos, y de forma más rápida, utilizando productos de clasificación específicos, como SyncSort o DFSORT; en entornos que no sean de ordenador central, utilice las rutinas de clasificación externas de WebFOCUS.
Para poder emplear una clasificación externa, el parámetro EXTSORT debe estar activado. El uso de una hoja de estilo desactiva la clasificación externa.
Tenga en cuenta que en entornos de ordenador central, la clasificación externa está soportada en francés, español, alemán y lenguas escandinavas (sueco, danés, finlandés y noruego). Para especificar el entorno de soporte de lenguas nacionales (NLS), use el parámetro LANG, descrito en el manual Cómo desarrollar aplicaciones de informes .
Puede usar los productos de clasificación externa DFSORT y SyncSort con cualquier solicitud TABLE, FML, GRAPH o MATCH, en todos los entornos de ordenador central de WebFOCUS. En otros entornos operativos, WebFOCUS emplea sus propias rutinas de clasificación externa.
No se recomienda usar clasificación externa cuando:
Para averiguar si su informe es convertible a TABLEF, use ? STAT (descrito en Cómo Consultar el tipo de clasificación o ejecute una versión de la solicitud con un límite de registros más bajo y la clasificación externa, activada. Si las estadísticas de informe se imprimen después de la salida de TABLE, esta se ha realizado como TABLEF. Si las estadísticas se imprimen antes de la primera pantalla de la salida de TABLE, se ha procesado a través de TABLE, ya que no era convertible a TABLEF.
Para determinar qué clasificación se va a utilizar, se evalúan los siguientes criterios, en este orden:
Emplee el comando SET EXTSORT para activar o desactivar la función de clasificación externa.
SET EXTSORT = {ON|OFF}
donde:
Activa el uso selectivo de un producto específico de clasificación externa para clasificar informes. Este es el valor predeterminado en todos los entornos de ordenador central.
Usa el procedimiento de clasificación interna para clasificar todos los informes. Este es el valor predeterminado en todos los entornos que no sean de ordenador central.
Para determinar qué tipo de clasificación se usa en un informe determinado, emita el siguiente comando después de la solicitud de informe:
? STAT
El comando muestra los siguientes valores para el parámetro SORT USED:
Se usó el procedimiento de clasificación interna para clasificar todo el informe.
Está usando un origen de datos relacionales y los datos proporcionados por el RDBMS ya están ordenados.
Un producto de clasificación externa clasificó el informe.
El informe no necesitaba clasificarse.
Cómo: |
El proporcionar una estimación del tamaño de la entrada (ESTRECORDS) o tamaño del informe (ESTLINES) ofrece dos ventajas:
Referencia: |
En entornos que no sean de ordenador central, las clasificaciones externas usan archivos de trabajo temporales para retener resultados de clasificación intermedios. Debe estar al corriente de cómo se crean y usan los archivos de trabajo de clasificación para cada tipo de clasificación externa.
Mientras que la clasificación interna sólo emplea un archivo de trabajo (asignado en el directorio EDATEMP), la clasificación externa permite hasta 31 archivos de trabajo, asignados en una o varias unidades de disco (ejes) o directorios. (Advertencia: Estos archivos de trabajo pueden llegar a tener grandes dimensiones. Cuente con que el espacio total del disco requerido por FOCSORT va a usarse muchas veces.)
De forma predeterminada, se asignan cinco archivos de trabajo en el directorio /tmp, en UNIX, o en el directorio al que apunta la variable de entorno TMP, en Windows. Es posible que no haya suficiente espacio de trabajo de clasificación y que, aun cabiendo los archivos en el directorio, el rendimiento no sea óptimo con sólo cinco archivos. Además, puede que, al tener todos los archivos de trabajo de clasificación en el mismo disco, el rendimiento sufra más todavía.
Existen otras dos opciones:
Si se establece la variable UNIX TMPDIR o Windows TMP, debe retirarla para poder usar las variables IBITMPDIRnn. El comando UNIX para anular el establecimiento de la variable TMPDIR es:
unset TMPDIR
El comando UNIX para anular el establecimiento de la variable TMP es:
SET TMP=
Si lo desea, puede hacer que haya variables diferentes que apunten al mismo directorio. Si desea asignar n archivos de trabajo, defina las variables 01 a n. La primera variable no disponible en el entorno determina el número de archivos de trabajo que se va a utilizar. (Si define menos de cinco, se asignarán archivos adicionales usando la ubicación predeterminada del sistema.) Cuantos más archivos asigne, y cuanto más alejados estén entre sí a través de los ejes, mejor será el rendimiento. El mayor obstáculo es la cantidad de espacio disponible en el disco.
La función ANSI tempnam se encarga de generar los nombres de los archivos de trabajo; todos los nombres empiezan por srtwk. Si el proceso de clasificación termina con normalidad o debido a un error detectable (generalmente, de desbordamiento de espacio en el disco), se eliminan todos los archivos de trabajo asignados. No hay ningún modo explícito de guardarlos. Si ocurre algún otro tipo de terminación anormal, puede que los archivos strwk se mantengan en el disco. En ese caso, elimínelos.
En IBM i (anteriormente, i5/OS), el número de archivos de trabajo se ha fijado en 9. Estos archivos son virtuales.
El mensaje de error FOC909 de WebFOCUS se emite para todos los errores de clasificación externa. Se proporciona un código adicional de tres dígitos, de los que los dos primeros son relevantes. Si recibe un mensaje de error que termina en:
En esta sección: Cómo: |
De forma predeterminada, no se muestran los mensajes de error creados por un producto de clasificación externa de ordenador central. Sin embargo, podría querer mostrar dichos mensajes en su pantalla para propósitos de diagnóstico.
El comando SET SORTLIB se usa para especificar la utilidad de clasificación empleada y, en DFSORT y SYNCSORT de z/OS, para mostrar mensajes de clasificación.
SET SORTLIB = {sortutility|DEFAULT}
donde:
Puede ser uno de los siguientes:
DFSORT, para DFSORT sin mensajes.
MVSMSGDF, para DFSORT sin mensajes.
SYNCSORT, para SyncSort sin mensajes.
MVSMSGSS, para SyncSort con mensajes estándar.
MVSMSGSS, para SyncSort con mensajes de depuración (detallados).
DEFAULT para DFSORT. Sin embargo, es recomendable especificar explícitamente la utilidad de clasificación con uno de los otros valores.
Asigne DDNAME SYSOUT a la corriente de salida en lote o a un archivo en z/OS, insertando la DD correspondiente, en su server batch JCL, si no se encuentra ya ahí. Por ejemplo, la siguiente DD asigna DDNAME SYSOUT a la corriente de salida en lote:
//SYSOUT DD SYSOUT=*
Al aparecer un error de clasificación externa, puede generar un seguimiento de procesamiento de clasificación y examinar los códigos de retorno y mensajes de FOCUS para diagnosticar el problema.
Cuando ocurre un problema de clasificación externa, se genera uno de estos mensajes:
(FOC909) CRITICAL ERROR IN EXTERNAL SORT. RETURN CODE IS: xxxx (FOC1810) External sort not found (FOC1899) Load of %1 (external-sort module) under %2 failed
Ante estos mensajes, al igual que con cualquier otro problema de clasificación, es recomendable realizar seguimiento del procesamiento de clasificación. Para obtener información sobre cómo diagnosticar problemas de clasificación externa, consulte Cómo diagnosticar errores de clasificación externa.
//FSTRACE DD SYSOUT=*,DCB=(RECFM=FA,LRECL=133,BLKSIZE=133)
SET TRACEUSER = ON SET TRACEON = SORT/1/FSTRACE
Cuando recibe un mensaje FOC909, se incluye un código de retorno:
(FOC909) CRITICAL ERROR IN EXTERNAL SORT. RETURN CODE IS: xxxx
Además, puede que reciba uno de los mensajes siguientes:
(FOC1810) External sort not found (FOC1899) Load of %1 (external-sort module) under %2 failed
Cuando una solicitud TABLE genera este mensaje, o un mensaje FOC1800 o FOC1899, se aplican las notas siguientes:
Para diagnosticar el error debe generar mensajes de clasificación externa (siga las intrucciones en Cómo Seleccionar una utilidad de clasificación y opciones de mensaje y Cómo Seguimiento de procesamiento de clasificación) y, después, reproducir el fallo.
Para los códigos de retorno no descritos a continuación, siga el mismo procedimiento usado para el código de retorno 16.
IEC130I SYSOUT DD STATEMENT MISSING.
Cuando REBUILD INDEX invoca una clasificación externa y esta falla, se genera un mensaje de error similar a este:
ERROR OCCURRED IN THE SORT yyyyyyyyzzzzzzzz
En este caso, el código de retorno es yyyyyyyy expresado en hex. Ignore los ocho últimos dígitos (zzzzzzzz).
Traduzca el código de retorno a decimal y siga las instrucciones de códigos de retorno en una solicitud TABLE.
Además, tenga en cuenta que cuando una solicitud TABLE genera un código de retorno que no sea cero, se cierra FOCUS. Sin embargo, cuando REBUILD INDEX recibe un código de retorno que no sea cero, de una clasificación externa, se cierra el comando REBUILD, pero FOCUS continúa.
Antes de seguir estas instrucciones, compruebe que se han generado mensajes de clasificación externa (para más información, consulte Cómo Seleccionar una utilidad de clasificación y opciones de mensaje) y que muestren, claramente, que el motivo del fallo es un espacio de trabajo de clasificación inadecuado.
WebFOCUS pasará esta estimación a la utilidad de clasificación externa a través de la lista de parámetros.
No anule las tarjetas DD de SORTWKnn, S001WKnn, DFSPARM o $SORTPARM, sin tener instrucciones directas del departamento de servicio técnico. Las instrucciones recogidas en Cómo Seleccionar una utilidad de clasificación y opciones de mensaje, Cómo Seguimiento de procesamiento de clasificación, y Cómo proporcionar una estimación de registros de entrada o tamaño de informe para clasificación, deberían ofrecer capacidades equivalentes.
Cómo: Referencia: |
Se pueden usar las clasificaciones externas para realizar agregación con una disminución considerable del tiempo de procesamiento, en comparación con el uso de la facilidad de clasificación interna. Las ventajas son más obvias con solicitudes relativamente simples contra grandes orígenes de datos.
Cuando se realiza la agregación mediante una clasificación externa, las variables estadísticas &RECORDS y &LINES son iguales porque los productos de clasificación externa no devuelven una cuenta de líneas para el conjunto de respuestas. Este es un cambio de comportamiento y afecta a cualquier código que verifique el valor de &LINES. (Si va a hacer una prueba de &LINES, no utilice esta función.)
SET EXTAGGR = aggropt
donde:
Puede ser uno de los siguientes:
OFF impide la agregación por clasificación externa.
NOFLOAT permite la agregación siempre y cuando no haya campos de datos de punto flotante presentes.
ON permite la agregación por clasificación externa. Este valor es el predeterminado.
Si utiliza SUM en un campo alfanumérico en su solicitud de informe sin utilizar una clasificación interna, la última ocurrencia de los campos de clasificación aparece en la salida. Si se activa la agregación en la clasificación interna, aparece el primer registro. Sin embargo, el orden de visualización puede controlarse a través del parámetro SUMPREFIX. Cuando SUMPREFIX = LST (por defecto), el último caso aparece incluso cuando EXTAGGR = ON.
El comando siguiente activa la agregación y deja SUMPREFIX establecido en LST (por defecto) y, por consiguiente, muestra el último registro:
SET EXTAGGR = ON SET SUMPREFIX = LST TABLE FILE CAR SUM CAR BY COUNTRY END
La salida es:
COUNTRY CAR ------- --- ENGLAND TRIUMPH FRANCE PEUGEOT ITALY MASERATI JAPAN TOYOTA W GERMANY BMW
Nota: SUMPREFIX aparece descrito en Cómo cambiar el orden de recuperación con agregación (sólo en entornos de ordenador central) .
Con SUMPREFIX = FST la salida es:
COUNTRY CAR ------- --- ENGLAND JAGUAR FRANCE PEUGEOT ITALY ALFA ROMEO JAPAN DATSUN W GERMANY AUDI
Cómo: |
Cuando un producto de clasificación externa realiza una agregación de formatos alfanuméricos o de fecha inteligente, el orden del conjunto de respuestas devueltas difiere del orden de los conjuntos de respuestas clasificadas internamente.
Los productos de clasificación externa devuelven el primer registro alfanumérico o de fecha inteligente agregado. La clasificación interna, por el contrario, devuelve el último registro.
El comando SUMPREFIX permite que los usuarios escojan el orden de visualización del conjunto de respuestas.
SET SUMPREFIX = {LST|FST}
donde:
Muestra el último valor cuando se agregan tipos de valores alfanuméricos o de fecha inteligente. Este valor es el predeterminado.
Muestra el primer valor cuando se agregan tipos de valores alfanuméricos o de fecha inteligente.
Cómo: Referencia: |
Puede usar paquetes de clasificación externa de ordenador central para crear archivos HOLD, resultando en ahorros importantes de tiempo de procesamiento. Las ventajas son más obvias con solicitudes relativamente simples contra grandes orígenes de datos.
SET EXTHOLD = {OFF|ON}
donde:
Deshabilita los archivos HOLD mediante una clasificación externa.
Habilita los archivos HOLD mediante una clasificación externa. Este valor es el predeterminado.
WebFOCUS |