Mainframe Software3 min read

XCOM: Stop Transferring Data Like It’s 1999!

Photo for Austin WilloughbyAustin Willoughby
data-transfer

In the world of z/OS data transfer, milliseconds matter and every CPU cycle counts. Yet many organizations still rely on XCOM Data Transport’s original record-by-record transfer method.

It’s safe. It’s reliable.

And for today’s data volumes, the overall speed and resource requirements creates inefficiency.

If your XCOM transfers are stuck in the last millennium, here’s the 411 on the freshest way to transfer data. By enabling record packing, you may be able to dramatically increase throughput, reduce CPU consumption, and unlock the power of your zIIP processor, all without changing applications or redesigning workflows.

PACK=LENGTH with MAXPACK=1023000

It’s pretty simple; by modifying your configuration to change how XCOM prepares data for transport, you can instruct XCOM to pack records into large buffers instead of sending them individually. For all XCOM partner transfers you can use the following transfer options:


PACK=LENGTH
MAXPACK=1023000

These settings pack the data allowing XCOM to deal with packed buffers rather than discrete records, potentially dramatically reducing overhead.

  • z/OS to z/OS transfers: When both partners support MAXPACK=1023000, XCOM can use Extra Large (XL) Record Packing for maximum throughput.

  • z/OS to non-z/OS transfers: If the receiving partner supports a smaller MAXPACK (for example, 31744), XCOM automatically negotiates down, yet still delivers meaningful performance gains over record-by-record processing.

Why this is totally rad:

  • Reduced CPU overhead: Packing hundreds or thousands of records into a single buffer greatly reducing the per-record processing costs

  • Faster transfers: Fewer physical data sends result in shorter elapsed times, which is especially noticeable with large datasets

  • Enables zIIP offload: For TCP/IP transfers, enabling PACK=LENGTH with a high MAXPACK value (for example, above 4096) is a prerequisite for offloading compression work to your zIIP engines, reducing general-purpose CPU consumption

 

Get Started in 3 Steps

1. Check if you’re already using XL Packing

Don't guess—check! You can use standard z/OS monitoring tools and utilities to inspect the features registered by XCOM to check if XL Packing is used.

Check the details using either:

  • SYSVIEW FXE command
    Vendor:  Broadcom
    Product:  XCOM Data Transport
    Function:  XL Packing

  • FXEPRINT utility
    //FEATREG1 EXEC PGM=FXEPRINT
    //SYSPRINT DD  SYSOUT=*
    //SYSOUT   DD  SYSOUT=*,DCB=(LRECL=80)
    //SYSIN    DD  DUMMY

    Look for XCOM function name: “XL Packing”

Check both:

  • XCOMJOB (used for TYPE=EXECUTE transfers)
  • Your XCOM started task names (used for TYPE=SCHEDULE or remotely initiated transfers)

What to look for:

  • “NotUsed”: XL Packing is available but not enabled
  • “Used”: XL Packing is already active for some transfers

If it’s already active, review transfer logs to identify additional candidates that could benefit.

2. Enable XL Packing

Ensure all z/OS XCOM partners are running maintenance Level Set 12.0.03 (PTF LU16627) or later. This maintenance level includes:

  • XL Record Packing
  • Feature Registration Service integration for verification

By applying this maintenance Level Set, you’ll be able to leverage the XL Packing feature and use the Feature Registration Service Integration to verify you’ve enabled the optimization. For more information about Level Set 12.0.03, visit this link.

Once applied, you can enable packing at multiple levels for granular control:

To enable the best performance, ensure PACK=LENGTH is set in one of the following locations (listed in order of precedence):

  1. Transfer Request (SYSIN01): For individual transfers
  2. Execution Parameter (EXEC PARM): For specific started tasks or address spaces
  3. Destination Member: For all transfers going to a specific partner
  4. Global Configuration (CONFIG Member): When no value is specified for one of the above, XCOM defaults to the global configuration setting. Ensure the global PACK parameter is set correctly.

Note: The MAXPACK value sets the maximum possible packed block size and is negotiated down during the connection handshake to the capacity of the receiving partner.  Ensure your receiving z/OS XCOM partner specifies the largest possible value, but you’ll need a value greater than 31744 to be considered as using XL Packing.

3. Understand the Tradeoff

What you gain:

  • Faster transfers
  • Lower CPU utilization
  • Better zIIP efficiency

What it costs:

  • Higher buffer storage usage

For most environments, the additional storage usage is a negligible tradeoff compared to the performance and CPU savings.

Beyond Packing: Compression Synergy

Once packing is optimized, you can layer in compression for additional gains.

  • PACK=LENGTH improves compression efficiency
  • Options like zEDC and zIIP offload minimize CPU impact
  • Software compression (e.g. ZLIB) may increase CPU usage if not offloaded

Our recommendation is simple:

  • Prioritize PACK=LENGTH with a high MAXPACK first
  • Secondly, evaluate compression by adding COMPRESS=ZLIB where appropriate

Modern Data Volumes Need Modern Moves

Here’s the bottom line: If you’re still shuffling data one record at a time, you’re wasting CPU and leaving serious performance on the table.

It’s 2026. The party already left the building—and XCOM just showed up with the boombox.

Let’s stop moving data like it’s 1999.

Have questions about XL Packing or XCOM configuration?

Schedule a no-cost technical consultation with Broadcom Mainframe engineers and architects.