On 14-Aug-2015 16:06 -0600, Alan Campin wrote:
On 14-Aug-2015 15:25 -0600, Vinay Gavankar wrote:

I was looking for way to retrieve number of fields in a file. I
wrote a CL program to do a DSPFFD to a file, and then read the
first record in that file to get number of fields.

I also saw that there is an API to retrieve File Description, which
has the number of fields "somewhere".

Since I am not too familiar with writing API's I was wondering if
someone has some code using that API, or whether the CL I have
would be good enough?

dcl-s NumberOfColumns Int(10);

Exec Sql Select COLUMN_COUNT
Into :NumberOfColumns
Where TABLE_NAME = '<Your Table Name>' And
SYSTEM_TABLE_SCHEMA = '<Your Library Name>';

FWiW: That would be functional for "relational" and non-QTEMP files only. The OP currently uses DSPFFD which has neither limitation; though the description in the OP would have a fatal flaw for some LF [see below] and for non-relational PF would give an implementation-specific answer rather than a truthful result; unknown which the OP would want if even that is a factor for them.

For a[n explicitly or implicitly] Multi-Format Logical File (MFLF) [note: the "TABLES" in the catalog VIEW name is somewhat a misnomer], that COLCOUNT value is the /maximum/ number of fields across the format(s) [much like the record length is the maximum RcdLen across potentially multiple RcdFmt for a Logical File (LF)]. Of course, given the MFLF is tagged non-relational [per DBXREL='N'], such a file will not be selected per the predicate DBXREL='Y' in the WHERE clause of that catalog VIEW's encapsulated query.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2020 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].