Cuando en un Sort queremos obtener totales o contadores por un campo clave, y además deseamos mostrarlos con formato de informe o con un texto de acompañamiento, podemos utilizar los parámetros de informe de la instrucción OUTFIL. Los analizamos en un artículo anterior, pero aquí solo vamos a usar los que necesitamos para nuestro propósito. Los contadores o totales pueden ir en un fichero aparte o bien junto con los registros de detalle, a continuación del último registro de cada valor del campo clave. Lógicamente hay que ordenar el fichero por el campo clave.
Por ejemplo, supongamos que tenemos un fichero de entrada (DD SORTIN) con la provincia en las posiciones de la 5 a la 19 y queremos obtener un fichero con el número de registros de cada provincia. La SYSIN a incluir en el Sort será la siguiente:
SORT FIELDS=(5,15,CH,A) - Ordenación
OUTFIL FNAMES=SALIDA, - DD de salida
REMOVECC, - Sin caracteres ANSI de impresión
NODETAIL, - Sin registros de detalle
SECTIONS=(5,15, - Campo de ruptura
TRAILER3=('Provincia: '
,5,15,
' Total registros: ',
COUNT=(EDIT=(III.IIT)))) - Contador y máscara de edición
Para que el fichero de salida lleve no solo los contadores sino también los registros del fichero de entrada, basta con eliminar la instrucción NODETAIL.
Cuando se quiere obtener la suma de un campo numérico por campo clave, hay que cambiar el operador COUNT por TOTAL e indicar la posición de inicio y la longitud del campo a sumar. Por ejemplo, supongamos que el fichero del ejemplo anterior contiene un campo con el importe de las ventas en la posición 30 (numérico empaquetado de 5 posiciones). Con la siguiente SYSIN generaríamos el fichero de sumas por provincia:
SORT FIELDS=(5,15,CH,A) - Campo clave
OUTFIL FNAMES=SALIDA, - DD de salida
REMOVECC, - Sin caracteres ANSI de impresión
NODETAIL, - Sin registros de detalle
SECTIONS=(5,15, - Campo de ruptura
TRAILER3=('Provincia: '
,5,15,
' Total ventas: ',
TOTAL=(30,5,PD,EDIT=(IIIIIT,TT)) - Total y máscara