× 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 29-Feb-2012 14:23 , James Lampert wrote:
I need to set up a logical file that is uniquely keyed on one of the
PF fields, but which omits all records in which that field is either
blank, or starts with an asterisk.

But I find that if I explicitly define a field substringing that
field (to check for the asterisk), I lose all the PF fields.

The LF DDS either defines the same format as the PF [i.e. no field specifications allowed], or defines explicitly the fields of the record format. Because a SST requires specifying a field, all of the fields for the LF record format must be named as an equivalent from the PF or [re]defined from field(s) in the referenced PFILE(s).

If there's a way to do this without explicitly including all of the
PF fields, I don't remember what it is.

Do not use the SST to define a new derived field against which to effect the select\omit COMParisons.

Help?

For example:

The DDS source for a PF [for this example, named FN] with 6-byte Alpha field C for RcdFmt FNR:

R FNR
C 6A

The DDS source for a unique keyed LF on field C of PF FN in *LIBL defined to effectively select only rows where (C *NE '') *AND (SST(C 1 1) *NE '*') while still sharing the based-on physical file Record Format FNR instead of having to define a new LF record format per having used the SST; defined [at least with SRTSEQ(*HEX)] and using Omit logic specifications to effect the exclusion of any rows from the unique key where effectively (C *EQ '') *OR (C *GT x'5B' *AND C *LT x'5D') /* where x'5C' defines the '*' asterisk, being the first byte of field C */:

UNIQUE
R FNR PFILE(FN)
K C
O C COMP(EQ ' ')
O C COMP(GE X'5C0000000000')
C COMP(LE X'5CFFFFFFFFFF')

The unique keyed access path for the above LF DDS enables the PF to have any number of duplicate values for C=' ' and for any value of C where LEFT(C,1)='*', but any other values must be distinct\unique. As a DYNSLT LF, no duplicate values would be allowed irrespective of the first character, but any one row with C=' ' and all distinct rows with LEFT(C,1)='*' would be omitted.

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...


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

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