Using Chuck's input as guidance, I was doing a little more research on
the QADBXREF file and its associated views. One of those is a view
called SYSINDEXES. For fun and excitement, I tried to duplicate the
view (CRTDUPOBJ) and not surprisingly I can only duplicate it using a
profile with *ALLOBJ authority, not with normal *PUBLIC authority. But
then I saw something interesting. When I created the view with the
right authority and then took a look at the created object with DSPFD,
the associated SQL has an unusual piece to it. You can do it yourself
by doing a CRTDUPOBJ and then doing a DSPFD, but the relevant bit is
CREATE VIEW SYSINDEXES (INDEX_NAME FOR "NAME" ...
... CASE WHEN IX.DBXIDXSEL<> 'Y' THEN NULL WHEN IX.DBXIDXSELX IS NOT NULL
THEN IX.DBXIDXSELX ELSE TESTLIB.SQLGETWHERE(IX.DBXLIB,IX.DBXFIL) END ...
Note the call to procedure TESTLIB.SQLGETWHERE. I didn't create that
function! It doesn't actually seem to exist; if I try to call it myself
I get SQLGETWHERE in TESTLIB not found. If I call it unqualified I get
results. This works fine:
SELECT SQLGETWHERE(DBXLIB,DBXFIL) from QADBXREF
Which brings me to my primary question. Maybe the function is in the
system library list, but I can't find it on the system anywhere. Where
would I look to find more information about this function? I haven't
been able to find it anywhere. I looked in SYSFUNCS, but no luck. Is
it some sort of undocumented built-in function?
And the minor corollary question is that the generated VIEW in the DSPFD
doesn't seem to be quite right: certainly as written the query wouldn't
seem to work since there is no SQLGETWHERE in TESTLIB. Maybe that's
just an artifact of DSPFD, though.