DFSORT and Syncsort are both high-performance sort/merge utilities used on IBM mainframes. They do similar jobs—sorting, merging, copying, and transforming datasets—but they come from different vendors and are not the same product. This page compares them so you can understand the differences and work with whichever one your shop uses.
DFSORT (Data Facility Sort) is IBM's sort/merge utility. It is supplied with z/OS (as an optional feature or part of the operating system, depending on release and licensing). When you use DFSORT, you are using an IBM product supported by IBM documentation and service.
Syncsort is a sort product from Syncsort, Inc. (now part of Precisely). It is a licensed third-party product that many mainframe sites install alongside or instead of DFSORT. Syncsort provides its own documentation and support. So the first big difference is simply: who makes it—IBM vs Syncsort.
Your JCL might look the same either way (e.g. EXEC PGM=SORT). The way to know which product actually ran is to look at the messages in the sort step's SYSOUT (job log).
Your site may also define which product is the default (e.g. via the load library in JOBLIB or STEPLIB) or may run both and select by library. When in doubt, run a small test job and check the message prefixes in SYSOUT.
It is common to see PGM=SORT or PGM=ICEMAN in JCL for both products. The program name does not by itself tell you which product runs; the load library does. Whichever sort program is in the concatenation used for the step (e.g. STEPLIB or JOBLIB) is the one that runs. So the same JCL can run DFSORT in one shop and Syncsort in another—only the SYSOUT messages and product documentation will tell you which.
123456789//SORTSTEP EXEC PGM=SORT //* STEPLIB points to Syncsort in this example; use system lib for DFSORT //STEPLIB DD DSN=SYSS.SYNCSORT.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //SORTIN DD ... //SORTOUT DD ... //SYSIN DD * SORT FIELDS=(1,20,CH,A) /*
In the example above, STEPLIB points to Syncsort; if you changed it to a library containing IBM's SORT, you would run DFSORT. Control cards (SYSIN) must match the product that actually runs.
Both products support similar concepts: SORT FIELDS, MERGE, INCLUDE/OMIT, INREC, OUTREC, OUTFIL, SUM, and so on. So basic sort and merge jobs often look alike. But they are different products: syntax and options are not fully interchangeable.
If you move a job from a DFSORT shop to a Syncsort shop (or the other way around), do not assume the same SYSIN will work. Test and adjust using the appropriate product's documentation.
Below is a simplified comparison. Exact capabilities depend on product version; always check the vendor's documentation for your release.
So: DFSORT is known for strong IFTHEN and ICETOOL; Syncsort is often noted for MAXSORT when dealing with very large files. Your shop may standardize on one product or use both for different workloads.
You typically do not choose—your site does. Most shops standardize on either DFSORT or Syncsort (or use one as default and the other for specific cases like MAXSORT). You should:
Imagine two different brands of the same kind of tool—like two brands of scissors. Both cut paper, but they might look a bit different and have different extra features. DFSORT and Syncsort are like that: both "cut" (sort and merge) your data, but they are made by different companies. You use the one your school (your company) has. If you look at the label on the tool (the messages in the job log), you can tell which brand it is.
1. How can you tell from SYSOUT whether you ran DFSORT or Syncsort?
2. Who supplies DFSORT and who supplies Syncsort?
3. What is a feature often associated with Syncsort for very large files?
4. Are DFSORT and Syncsort control statements fully interchangeable?
5. Can the same JCL (e.g. PGM=SORT) run either product?