×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
On 25-Aug-2014 12:45 -0500, Bill Howie wrote:
<<SNIP>> Hopefully this isn't completely confusing.
I did find the scenario description to be confusing. But I infer the
overall issue is that the created\copied files should exist only *if*
the desired\selected data was found.? The explicit mention of the
Include Records By Field Test (INCREL) parameter seems probably not to
be germane; given that parameter happens to be the source of a great
number of [other data-related] difficulties, knowing only that the
data-copy request is selective [versus what achieves the selectivity]
may be the most appropriate level of detail for that particular scenario.
The Copy File (CPYF) utility copies data and optionally creates a
file [according to Create File (CRTFILE) specification of *YES] for that
specific data-copy request, irrespective the existence of any data being
selected\filtered from the specified From File (FROMFILE). Thus even if
no data was copied, a target file.mbr will be created; given the copy
did not fail for any other reason. There is no special value on the
CRTFILE parameter that suggests to the utility "only if there is data
that would be copied" :-(
The completion message that records the number of records copied to
the target file.mbr could be reviewed, or a review of the number of
[additional] records for the target member [e.g. per Retrieve Member
Description (RTVMBRD) for Number Of Current Records (NBRCURRCD)] might
be used, to infer the effect of the copy request [taking into
consideration any possible effects from concurrent activity, e.g. by
preventing any concurrency albeit effectively impossible in that
scenario]. If the effect was verified to be _no records copied_ then
the program would have learned that [the existing target-file member or]
the created file and member are not desired and thus perhaps should be
_deleted_ [e.g. Delete File (DLTF) or Remove Member (RMVM)] as a
reactive procedure]. Of course a proactive test for the existence of
the data, by performing the chosen selection prior to invoking the CPYF,
would seem duplicitous.
Any input would be much appreciated.
I would probably code the solution entirely in SQL using the System
Database Cross-Reference (DBXREF) files (QADB* in QSYS) as the basis for
the /file/ and /field/ information; the SQL catalog VIEW files such as
SYSTABLES and SYSCOLUMNS may suffice in that regard [verify the WHERE
clause to be sure the required data will be included], as they are built
over the *DBXREF data. The SQL has the advantage of being able to
operate with isolation-level [whereas CPYF does not] and other issues
with potential concurrency are more easily solved. And if there is any
relevance to the use of the INCREL() of CPYF, then the use of SQL
instead, is a much better choice; switching to SQL is often an option
chosen to deal with the undesirable effects from trying to use the
INCREL feature. If performing the /copy/ work is done under isolation,
then after an effective /copy/ request whereby no data was inserted, the
next request against the TABLE previously created, would be to DROP
TABLE, such that when the overall work completed the effect of the
COMMIT would be that the empty file would no longer exist.
As an Amazon Associate we earn from qualifying purchases.