× 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.



Ed, Will the following game plan work for us?

During Sunday's upgrade, V5R1's QUSRSYS/QUSEXRGOBJ did indeed overlay &
destroy the top level of our function registry.  Now I don't want to roll
back our QUSRSYS to V4R5.  However, I think I can fix the problem like this
(unless I hear a warning).

The internal QSYS objects of type X'0ECA' (object name = our administrable
function name) still exist in QSYS library, and the user profiles still
have private authorities to these X'0ECA' objects.  We had named all of our
administrable functions beginning with the five characters "RVWK_".

Today I wrote a program that does MATCTX on the QSYS object types X'0ECA'
and object names that begin with "RVWK_".  For each index system pointer in
this materialization, I printed the index object name, and did MATAUU
function X"22" to get the system pointers to user profiles that have
private authorities to the index objects, then did MATUP and printed the
user profile names under each index name.

Next, I might run DESINX on all the object types X'0ECA' in QSYS with
object names beginning with "RVWK_".

Next, armed with these printouts of the administrable function names and
the user names, I might be able to re-key our company's entire function
structure from scratch, using "QsyRegisterFunction" API and
"QsyChangeFunctionUsageInfo" API.

Although the printouts don't show our prior function product names and
function group names, I'm pretty sure I can reconstruct that part from
memory.

Here is the program, with DESINX commented, and with the printing part
omitted in order to shorten this e-mail.  I hope this works when I
un-comment the DESINX.

dcl sysptr ?Qsys       auto init("QSYS", type(ctx));
dcl dd     Mat         auto char(H"2000") bdry(16);
dcl dd     *           def(Mat) pos(1) bin(4) init(H"2000");
dcl dd     IndexCount  def(Mat) pos(5) bin(4);
dcl spcptr ?Mat        auto init(Mat);

dcl spcptr ?Travel     auto;
dcl dd     IndexName   bas(?Travel) pos(3) char(30);
dcl sysptr ?Index      bas(?Travel) pos(H"21");

dcl dd     Mat2        auto char(H"2000") bdry(16);
dcl dd     *           def(Mat2) pos(1) bin(4) init(H"2000");
dcl dd     UserCount   def(Mat2) pos(11) bin(2);
dcl spcptr ?Mat2       auto init(Mat2);

dcl spcptr ?Travel2    auto;
dcl sysptr ?UserProf   bas(?Travel2) pos(H"11");

dcl dd     Mat3        auto char(H"100") bdry(16);
dcl dd     *           def(Mat3) pos(1) bin(4) init(H"100");
dcl dd     UserName    def(Mat3) pos(11) char(10);
dcl spcptr ?Mat3       auto init(Mat3);

    matctx     ?Mat, ?Qsys, X"030600050ECAD9E5E6D26D";  /* "RVWK_" */
    subn(s)    IndexCount, H"60";
    addspp     ?Travel, ?Mat, H"60";
AA: /* print index name here */
    matauu     ?Mat2, ?Index, X"22";
    addspp     ?Travel2, ?Mat2, H"10";
BB: matup      ?Mat3, ?UserProf;
    /* print user name here */
    addspp     ?Travel2, ?Travel2, H"20";
    subn(sb)   UserCount, 1 / pos(BB);
/*  desinx     ?Index;  */
    addspp     ?Travel, ?Travel, H"30";
    subn(sb)   IndexCount, H"30" / pos(AA);
    pend;



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.