← Todas las utilidades

NSSort

Versión 26.1 (build 295) Prueba 30 días
Índice

Qué es NSSort

nssort es la utilidad de ordenación/mezcla/copia compatible con SyncSort de Nacarsoft: sustituto directo de los trabajos SyncSort UNIX sobre ficheros, con la misma sintaxis /OPCION (/INFILE, /OUTFILE, /COPY, /FIELDS, /KEYS, /MERGE, /JOIN…). Solo procesa ficheros locales y stdin/stdout —no requiere cliente Adabas ni integra DB2, SAS o verbos COBOL— y acepta abreviaturas no ambiguas (p. ej. /INF por /INFILE) y formas con = o :.

  • Sustituir pasos SyncSort de copia en pipelines ETL y migraciones.
  • Copiar por ventanas (/SKIPRECORD, /STOPAFTER) con memoria acotada.
  • Validar juegos de opciones sin ejecutar (/NOEXECUTE).

Versión actual P0: implementa /COPY más ventanas de registros y estadísticas. El resto de opciones SyncSort pertenecen al roadmap (ver Alcance honesto). Los ficheros y rutas de los ejemplos son ficticios.

Casos de uso

1. Sustituir un paso SyncSort de copia en un pipeline ETL

nssort /INFILE /data/etl/ficticio-entrada.dat /OUTFILE /data/etl/ficticio-salida.dat /COPY /END

2. Extraer una ventana de registros para una prueba (omitir 100, tomar 1000)

nssort /INFILE /data/ficticio-grande.dat /OUTFILE /data/ficticio-muestra.dat /COPY /SKIPRECORD 100 /STOPAFTER 1000

3. Copiar a stdout con estadísticas para componer con pipes

nssort /INFILE /data/ficticio-entrada.dat /COPY /STATISTICS > /data/ficticio-copia.dat

4. Validar un JCL migrado sin tocar datos antes del despliegue

nssort /INFILE /data/ficticio-entrada.dat /OUTFILE /data/ficticio-salida.dat /COPY /NOEXECUTE

Referencia de comandos

Verificada contra ./nssort/build/nssort_rhel8 --help (más -help, -version y -license-status, comprobados ejecutando el binario). Se aceptan estilo SyncSort (/INFILE x) y estilo nssuite con guion (-infile x, ver INSTALL.md), abreviaturas no ambiguas (/INF, /STAT…/STATISTICS salvo ambigüedad) y formas /OPC=valor o /OPC:valor.

Operación y ficheros (P0, implementado)

ParámetroDescripciónRequerido
/INFILE ficheroFichero de entrada; debe existir y ser legible
/OUTFILE ficheroFichero de salida (se crea/trunca); si se omite o es -, los registros van a stdout y compone con pipesNo
/COPYCopia en streaming (en P0 registro = línea) respetando /SKIPRECORD y /STOPAFTER (u otra operación futura)
/ENDTerminador opcional (fin de argumentos)No

Ventanas, estadísticas y control (P0, implementado)

ParámetroDescripciónRequerido
/SKIPRECORD nOmite los n primeros registros de entradaNo
/STOPAFTER nProcesa como máximo n registros de salida (las builds demo limitan además a 50)No
/STATISTICS (alias /STATS)Muestra leídos/escritos/omitidos y tiempo en stderrNo
/SILENTSuprime banner, spinner y estadísticas (los exit codes no cambian)No
/NOEXECUTEValida el juego de opciones (incluida la licencia) y sale con 0 sin tocar datosNo

Informativos y licencia

ParámetroDescripciónRequerido
-versionMuestra versión, build, fecha y plataformaNo
-license ficheroRuta del fichero de licencia firmada Ed25519No
-license-statusMuestra el estado de licencia y saleNo
-helpMuestra la ayudaNo

Alcance honesto: roadmap, no implementado en P0

Las siguientes palabras clave se aceptan sintácticamente (incluidas abreviaturas) pero terminan con error «not yet implemented» e indican su fase, según doc/COMPATIBILITY.md —no son opciones utilizables todavía: /FIELDS, /KEYS (P2), /MERGE, /JOIN, /JOINKEYS (P4), /REFORMAT, /DERIVEDFIELD, /INCLUDE, /OMIT, /CONDITION, /SUMMARIZE, /AGGREGATE, /COLLECT, /IGNORE, /SKIPBLANK (P3), /STABLE, /CHECKSEQUENCE, /PADBYTE, /PADKEY, /PADRECORD, /RECORDLAYOUT, /DELIMITEDRECORDLAYOUT, /WORKSPACE, /MEMORY, /DATASIZE (P2), /COLLATINGSEQUENCE, /COLUMNS, /REPORT, /SECTION…, /TITLE, /TRAILER (P4), /SAVE, /INSERT, /DELETE, /DISPLAY, /EDIT, /BEGIN, /QUIT (P1). Fuera de ámbito: verbos COBOL de Micro Focus, procedimiento SAS, DB2 Load Accelerator.

Ejemplos comentados

# 1. Copia básica con terminador (abreviaturas como /INF y /OUTF también valen)
nssort /INFILE /data/ficticio-entrada.dat /OUTFILE /data/ficticio-copia.dat /COPY /END

# 2. A stdout con estadísticas en stderr (útil en pipes)
nssort /INFILE /data/ficticio-entrada.dat /COPY /STATISTICS > /data/ficticio-copia.dat

# 3. Ventana: salta 100 registros y procesa como máximo 1000
nssort /INFILE /data/ficticio-grande.dat /OUTFILE /data/ficticio-muestra.dat /COPY /SKIPRECORD 100 /STOPAFTER 1000

# 4. Solo valida opciones y licencia, sin ejecutar nada
nssort /INFILE /data/ficticio-entrada.dat /OUTFILE /data/ficticio-copia.dat /COPY /NOEXECUTE

# 5. Estilo nssuite con guiones (equivalente al ejemplo 1)
nssort -infile /data/ficticio-entrada.dat -outfile /data/ficticio-copia.dat -copy

# 6. Silencioso para cron (mismo exit code, sin banner ni spinner)
nssort /INFILE /data/ficticio-entrada.dat /OUTFILE /data/ficticio-copia.dat /COPY /SILENT

Códigos de retorno

Según el Reference Guide de SyncSort (cap. 2.1), documentados en el manual:

CódigoSignificado
0Completado correctamente (también -version, -license-status, -help, /NOEXECUTE válido)
1Registro fuera de secuencia con /CHECKSEQUENCE (fase P2, aún no implementada)
100Completado con advertencias, salida posiblemente incompleta (fases futuras)
111Terminación prematura: errores, licencia inválida, /INFILE inexistente u opción de roadmap

Nota honesta: en P0 el binario devuelve 0 o 111; 1 y 100 corresponden a fases P2-P3.

Preguntas frecuentes

¿Puedo usarlo sin licencia? Sí: hay trial automático de 30 días; con -license se usa la firmada y -license-status muestra el estado.

¿Por qué /FIELDS campo1 da error si sale en el ejemplo de ayuda? La línea de uso muestra la sintaxis objetivo compatible SyncSort; en P0 solo /COPY está implementado y las claves de ordenación llegan en la fase P2 (el error indica la fase).

¿/OUTFILE es obligatorio? No: omitido o con -, los registros van a stdout, ideal para pipes (/COPY /STATISTICS > copia.dat).

¿Las builds demo cortan mis datos? Las variantes demo limitan la salida a 50 registros aunque /STOPAFTER pida más; use la build release para producción.

También disponible en: en