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.
As an Amazon Associate we earn from qualifying purchases.