How does XCOM write records to a RECFM=U dataset
search cancel

How does XCOM write records to a RECFM=U dataset

book

Article ID: 261189

calendar_today

Updated On:

Products

XCOM Data Transport - z/OS XCOM Data Transport XCOM Data Transport - Linux PC XCOM Data Transport - Windows

Issue/Introduction

Had a situation where a remotely initiated transfer (from XCOM on Windows) had specified RECFM=U LRECL=132 and BLOCKSIZE=24264
The actual data turns out to be text and of a fixed length of 132 bytes
This results in a dataset with blocks of fixed length of 132, containing 1 record

Apart from wondering why this parameter combination would be chosen by the sender, my questions are:

1. What role is XCOM doing here when it writes this data or is the data just handed over to the access method? I'm wanting to understand why there is only 1 record per block.

2. The final solution is going to be to change the definition to make it FB-132 (and blocksize=0). That's all very well, but given that the definition is on a remote system which I don't have any influence over what sort of controls are possible on the receiving system to avoid this scenario?

It was also found that if the receiving dataset was made into an extended format dataset the space requirements go up by a factor of about 200 because the access method will pad the written block with x'00' up to the defined block size of 24264.

Environment

Release : 12.0

Resolution

XCOM Engineering advised the following:

RECFM=U (UNDEFined) datasets are by definition unblocked.
RECFM=U should only be used for cases where the format of the data is unknown. Its purpose is to accommodate any size (unblocked...) record without raising a "Wrong Length Record" condition.
It is similar to RECFM=V records, with the exception that the RDW (Record Descriptor Word - aka LENGTH) is not included as part of the record.

XCOM writes UNDEFined records in accordance with IBM's defined usage.
Generally, the BLKSIZE determines the largest record that can be expected.
The length of the record received by XCOM will be used to write the output record to DASD.
It is suspected that the partner XCOM (based on the BLKSIZE provided) is sending individual records of "BLKSIZE" length.

XCOM correctly writes UNDEFined records.
This is proven by the fact that it supports and correctly transfers LOADLIB PDS datasets, which are by definition RECFM=U.
The LOAD modules in LOADLIBs created by XCOM are executable, and compare identical to the source LOADLIBs using SUPERC.

The underlying problem is that the remote partners are not using the best characteristics to define the data they are transferring.
Even with automated parameterization, there is no substitute for users knowing the characteristics of the data to be transferred.