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



Ken:

I guess we're all supposed to be using direct APIs rather than *outfile support 
or IBM figures it's easy enough to roll-your-own or they figure a business 
partner will supply the feature/function or they have to budget where they 
spend their development dollars and not enough customers ask for it or...

Well, okay, I can feel comfortable with their direction whatever their 
rationale is; it forced me to learn a lot more APIs sooner than I would have 
otherwise. (Plus, I currently get paid by an IBM business partner.)

However, there are plenty of times I agree with your final sentiment.

I'm pasting a CLP that shows a possible approach. It's just a CRTPF, two API 
calls and a bunch of CHGVARS, all with minimal comments; but I think it will do 
pretty much exactly what you requested. With the addition of some parms to pass 
in values that you'll want to change with each run and maybe a command shell, 
it'll maybe be useful. By changing a couple things such as which format to 
request from the QSYRAUTU API and handling errors, and maybe doing some work on 
the minimal CRTPF parameters (possibly creating a "real" externally-described 
file) and allowing for adding records rather than replacing them, it might even 
become close to production-level.

It ought to compile and work just as it is assuming the profile name "#PRDNGO" 
is valid.

Comments are minimal because the documentation for the two APIs covers it all 
better than I would, not to mention how big the source would get for this post.

A major limitation is the current size of the list return variable for QSYRAUTU 
-- it's set to *char(9999) because it's a CL program. That limits it to only 
833 group members for the format being used. (It's _possible_ to get around 
this, but there are nasty potential problems.) But once it's seen in CL, it can 
be easier to visualize in RPG. Of course, once it's in RPG, writing to a file 
is no problem.

If a "real" utility for this isn't submitted by someone else, maybe this will 
give you a start.

Tom Liotta

midrange-l-request@midrange.com wrote:

>   8. Retrieving a list of group profile users (Graap, Ken)
>
>Does anyone know of a utility that will convert all the members of a group
>profile to a DB file for processing within a program?
>
>I'm always amazed that DSPUSRPRF USRPRF(#PRDNGO) TYPE(*GRPMBR)   won't !!


Source for List Group Members to Outfile:

pgm

/* Basic parms for QSYRAUTU */

   dcl      &rtnlst     *char   9999
   dcl      &lenrtnprf  *char      4
   dcl      &rtnfdbk    *char     16
   dcl      &prf        *char     10     value( '#PRDNGO   ' )

/* Basic parms for QLGSORT */

   dcl      &rcb        *char    256

/* Breakdown &rcb */

   dcl      &lenrcb     *char      4
   dcl      &typreq     *char      4
   dcl      &opts       *char      4
   dcl      &rcdlen     *char      4
   dcl      &rcdcnt     *char      4
   dcl      &offsetklst *char      4
   dcl      &nbrkey     *char      4
   dcl      &offsetflst *char      4
   dcl      &nbrf       *char      4
   dcl      &lenkey     *char      4
   dcl      &lennls     *char      4
   dcl      &lenfent    *char      4
   dcl      &keylst     *char     20
   dcl      &outflst    *char     38

/* Breakdown &keylst */

   dcl      &keystr     *char      4
   dcl      &keysiz     *char      4
   dcl      &keytyp     *char      4
   dcl      &keysrt     *char      4
   dcl      &keypos     *char      4

/* Misc.   */

   dcl      &errcod     *char      8     value( x'0000000000000000' )
   dcl      &hex0000    *char      4     value( x'00000000' )


/* Create a file for QLGSORT */

   crtpf    QTEMP/OUTFILE  rcdlen( 12 )
   monmsg ( cpf0000 )

/* Call QSYRAUTU to return group members */

   call     QSYRAUTU    ( +
                          &rtnlst      +
                          &lenrtnprf   +
                          &rtnfdbk     +
                          'AUTU0100'   +
                          '*MEMBER   ' +
                          '*FIRST    ' +
                          '1'          +
                          &prf         +
                          &errcod      +
                        )

/* Set &keylst values */

   chgvar   %bin( &keystr )      (    1 )
   chgvar   %bin( &keysiz )      (   10 )
   chgvar   %bin( &keytyp )      (    6 )
   chgvar   %bin( &keysrt )      (    1 )
   chgvar   %bin( &keypos )      (    0 )

/* Build &keylst */

   chgvar   &keylst     ( +
                          &keystr      *cat  +
                          &keysiz      *cat  +
                          &keytyp      *cat  +
                          &keysrt      *cat  +
                          &keypos            +
                        )

/* Build &outflst */

   chgvar   &outflst    ( +
                          'OUTFILE   ' *cat  +
                          'QTEMP     ' *cat  +
                          'OUTFILE   ' *cat  +
                          &hex0000     *cat  +
                          &hex0000           +
                        )

/* Set &rcb values */

   chgvar   %bin( &lenrcb )      (  138 )
   chgvar   %bin( &typreq )      (    4 )
   chgvar   %bin( &opts   )      (    0 )
   chgvar   %bin( &rcdlen )      (   12 )  /* Length of format AUTU0100 */
   chgvar   &rcdcnt                %sst( &rtnfdbk  9  4 )
   chgvar   %bin( &offsetklst )  (   80 )
   chgvar   %bin( &nbrkey )      (    1 )
   chgvar   %bin( &offsetflst )  (  100 )
   chgvar   %bin( &nbrf   )      (    1 )
   chgvar   %bin( &lenkey )      (   20 )
   chgvar   %bin( &lennls )      (  290 )  /* Most systems need this */
   chgvar   %bin( &lenfent )     (   38 )

/* Build &rcb */

   chgvar   &rcb        ( +
                          &lenrcb      *cat  +
                          &typreq      *cat  +
                          &hex0000     *cat  +
                          &opts        *cat  +
                          &rcdlen      *cat  +
                          &rcdcnt      *cat  +
                          &offsetklst  *cat  +
                          &nbrkey      *cat  +
                          &hex0000     *cat  +
                          &hex0000     *cat  +
                          &hex0000     *cat  +
                          &offsetflst  *cat  +
                          &nbrf        *cat  +
                          &lenkey      *cat  +
                          &lennls      *cat  +
                          &hex0000     *cat  +
                          &lenfent     *cat  +
                          &hex0000     *cat  +
                          &hex0000     *cat  +
                          &hex0000     *cat  +
                          &keylst      *cat  +
                          &outflst           +
                        )

/* Call QLGSORT to output to outfile */

   call     QLGSORT     ( +
                          &rcb         +
                          &rtnlst      +
                          ' '          +
                          x'00000000'  +
                          x'00000000'  +
                          &errcod      +
                        )

dmpclpgm

return

endpgm

End Source

--
Tom Liotta
The PowerTech Group, Inc.
19426 68th Avenue South
Kent, WA 98032
Phone  253-872-7788 x313
Fax    253-872-7904
http://www.powertechgroup.com


__________________________________________________________________
The NEW Netscape 7.0 browser is now available. Upgrade now! 
http://channels.netscape.com/ns/browsers/download.jsp

Get your own FREE, personal Netscape Mail account today at 
http://webmail.netscape.com/


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.