I should have asked "Does /tables/ mean to imply a 'database file
[member]' with a described format?" No matter. As Charles suggests,
the default TEXT mode is almost surely the problem. FTP is essentially
a two trick pony, either TEXT or BINARY /record/ data transport, where
/records/ are either delimited or non-delimited. If all of the data is
not pure text, then typically the only option is to use binary mode
transport; thus requiring conversion of the text portions on either end,
outside of FTP.
Using default TEXT mode transport with EBCDIC will, in response to
FTP encountering hex code points that represent the /record delimiters/,
divide a single fixed-length record into two /records/ of data. That is
because, regardless that the database file is fixed-length, the default
behavior of FTP assumes /stream data/ which implies there are delimited
records. In a homogeneous transport, the i5/OS FTP has a means whereby
the file data can be assured to transport as fixed-length irrespective
of the existence of any apparent record delimiter control-characters.
That is effected by setting the file mode to BLOCK versus STREAM. In
that manner the EBCDIC transport should work, and prevent the /broken/
rows causing more than one row to be generated in the target file.
Note: The TRIM setting *may* play a role in some TEXT transport
scenarios. I am not sure. I never need to know because I avoid that
ever being an issue since I only ever transport full binary [via save
files] or exported database rows [as text].
Dave Odom wrote:
You wrote and my answers are imbedded:
"Does /tables/ mean to imply SQL TABLE?" No, since I thought
DB2/400 was part of the IBM family of Relational Database Management
Systems, tables is the correct wording for those objects that hold
data in the normal sense. I know the old timers like to refer to
them as files. I used to myself when I was on a S/38.
"Has an interactive query report been performed and data paged
through to get a visual if the transport seemed valid...?" No, I'm
looking at the record count using PDM option 8 on source and target.
I've also looked at the data via PDM and the browse function and the
data looks normal. When I use a FIND on a few records, they are
there at the target. Like I say, the target for some reason has
MORE records than the source. An "interactive report" would produce
the same info and there is WAY too much data to reconcile manually.
"... or an automated compare for example by join against a
saved\restored copy of the same data?" No, but I could do that. I
just hate messing with save/restore if I don't have to. I thought of
making a copy of the table in the same LPAR, clear the table and run
an INSERT SELECT and see what results I get.
"Any DECIMAL or BINARY types?" Probably some decimal but no binary.
I can look further if needs be.
"Are they both i5/OS for the /source/ and /target/ partitions?" Yep,
two different LPARs on the same machine.
"FTP using PUT or GET subcommand, on or to i5/OS?" Sure
"BINary or TEXT transport?" Text
"TRIM setting?" I don't set anything like that.
I've used FTP on this system for years and always with source and
target being the same so I'm puzzled why there's a difference in some
of the tables now.