|
On 26-Dec-2014 09:21 -0600, rob@xxxxxxxxx wrote:
You are trying to convert from an IFS file to a DB file.
So perhaps just use Copy From Import File (CPYFRMIMPF); i.e. use the
Import utility, to _import_ the [likely previously exported] text data into
a pre-created database file member.?
Therefore the IFS file (by that I assume you mean a stream file
outside of the QSYS.LIB file system) already has its "number of
records" determined. <<SNIP>> And stream files have no
concept of 'records'. <<SNIP>>
A text stream [a STMF of text data] has the concept of records; only a
binary stream would not support the record concept, except perhaps a
logical fixed-length representation. The problem however is much like with
any /flat-file/, what defines the data determines also what defines the
/records/ of the file; that could be a logical record length, an
End-Of-Record (EOR) delimiter [of some number of bytes\characters], or
whatever the programmer might dream up. The /convention/ however, is that
the /record/ is what is delimited by the conventional *EOR; typically that
is the <CRLF> or <LF> and according to the convention of the OS wherein the
program /wrote/ the text file.
<<SNIP setup for test.txt with three ['3'] records>>
So now I see you are looking to retrieve that '3'.
So, when I run
qsh cmd('cat /rob/test.txt | wc -l')
in an interactive session the following displays on the screen:
3
Press ENTER to end terminal session.
When I run
qsh cmd('cat /rob/test.txt | wc -l')
in a batch session.
SBMJOB CMD(QSH CMD('cat /rob/test.txt | wc -l'))
Job 420557/ROB/QDFTJOBD submitted to job queue QBATCH
wrkJob 420557/ROB/QDFTJOBD
4. Work with spooled files
I get a spool file with one row displaying 3 in it.
Run interactively, with a prior override to Standard Output (STDOUT), is
discussed in other replies. The override of the StdOut could be to either
a database file [Override With Database File (OVRDBF)] to cause the output
to be directed to a row of a database file or a printer file [Override With
Printer File (OVRPRTF)] to cause the output to be directed to a record of a
spool file.
I tried a few things
qsh cmd('cat /rob/test.txt | wc -l > /qsys.lib/qtemp.lib/mydtaara.
dtaara')
Command ended normally with exit status 2.
The previously discussed _datarea_ utility [in other replies] would be
used to write to a *DTAARA object. And although the stream file read\write
capabilities do not directly support the Data Area object [thus why the
datarea utility would be used to effect that], there is support for the
User Space (USRSPC) object type. Properly identifying a *USRSPC object
with IFS naming and the use of a permanent library name could succeed
without errors; a side bonus, is that the automatic creation of the User
Space object occurs, so there is no requirement to pre-create the object as
with a DBF member. So for example:
'cat test.txt | wc -l > /qsys.lib/rob.lib/myusrspc.usrspc'
qsh cmd('cat /rob/test.txt | wc -l > /qsys.lib/qtemp.lib/mytable.file')
Command ended normally with exit status 2.
Nothing wrong with the above, at least conceptually. The issues with
what was tried however, are with each of: the use of QTEMP, the failure to
identify a "file" [in the non-/QSYS.LIB sense; i.e. distinct from the
*FILE] as target for the data rather than a directory [must specify a
member as target, not a file], and the database *FILE object must be
pre-created. The database *FILE [object type of the /QSYS.LIB],
functionally serves as a directory within the IFS nomenclature, not as a
"file".
qsh cmd('cat /rob/test.txt | wc -l > /rob/RecordCount.txt')
Command ended normally with exit status 0.
So directing the output to a data area or a db2 file wasn't going to
happen. Directing it to a stream file was OK though.
Which leaves you a couple of choices.
<<SNIP>>
Hopefully my prior comments help elucidate, so as to suggest the choices
are not so narrow as might have been implied by the quoted text.
--
Regards, Chuck
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.