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



Matt,

I haven't read it, but I'll bet it helps.....

Understanding LDAP:
http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg244986.html?
Open

Eric DeLong
Sally Beauty Company
MIS-Project Manager (BSG)
940-898-7863 or ext. 1863



> -----Original Message-----
> From: Haas, Matt [mailto:Matt.Haas@thomsonlearning.com]
> Sent: Friday, June 28, 2002 1:26 PM
> To: RPG-L (E-mail)
> Subject: Getting error 'Decoding error' calling LDAP API
> ldap_get_values
> ()
>
>
> Greetings everyone!
>
> I'm new to this list but not to RPG. My latest exploit into
> somewhat uncharted territory (at least as far as doing things
> with RPG is concerned) has me using the LDAP API's. We're
> currently on V4R5 so I haven't done anything with free form
> RPG yet but I'm sure I can follow along if anyone has
> examples written that way to answer my question.
>
> I'm attempting to call the LDAP API ldap_get_values and I'm
> getting the message 'Decoding error' back after the API call.
> I've spent quite a bit of time looking at the API
> documentation (which hasn't been much help in
> troubleshooting) and searching the web looking for a solution.
>
> The only things I've found so far related to this problem are
> related to either not getting the attribute values using
> ldap_search_s() (I've checked and I'm okay there) or passing
> a non-existent attribute name (I've double checked and I'm
> using the names printed as a result of the QShell utility
> ldapsearch and I even pulled in a name using
> ldap_first_attribute() and I've gotten the same results).
>
> I've also been referring to the excellent article Barbara
> Morris put together on converting C prototypes to RPG
> prototypes (I was referred to it at
> http://www.opensource400.org/hintsandtips.html) and some of
> the information contained in the Red Book "Who Knew You Could
> Do That In RPG IV?". Up to this point, these resources along
> with my meager knowledge of C has allowed me to convert the
> other API's successfully.
>
> I'm pretty sure that I've either prototyped the API wrong or
> I'm missing an API call somewhere. I'd rather not send the
> complete source to the list (it's even longer than this post
> is getting to be <G>) but if someone needs it or the output
> from the ldapsearch utility to tell me what I'm doing wrong,
> I'll gladly send it privately.
>
> Anyway, here's what my program is doing:
>
> - Call ldap_init (I am getting a pointer).
> - Call ldap_simple_bind_s (returns a zero and a call to
> ldap_err2string returns 'Success').
> - Call ldap_set_option to limit myself to 25 results (that's
> working okay).
> - Call ldap_search_s (returns a zero and a call to
> ldap_err2string returns 'Success') and I am setting parameter
> 'attrsonly' to 0.
> - Call ldap_count_entries to see how many search results are
> returned (I'm getting 1 which is what I expect).
> - Call ldap_first_entry (I'm getting a pointer and a call to
> ldap_err2string returns 'Success').
> - Call ldap_count_attributes to see how many attributes I
> have (I'm getting 6 in this case which is what I expect).
> - Call ldap_first_attribute (in this case, it's returning 'mail').
> - Call ldap_memfree passing in the pointer I got from
> ldap_first_attribute.
> - Call ldap_get_value which is returning a null pointer and
> setting error message 'Decoding error'.
> - Call ldap_unbind to close the connection.
>
> I have the ldap_get_values API prototyped like this:
>
> Dldap_get_values  PR              *   extproc('ldap_get_values')
> D LDAPinfo                        *   value
> D LDAPMessage                     *   value
> D attr                            *   value options(*STRING)
>
> The C prototype is like this:
> char **ldap_get_values(
>                 LDAP *ld,
>                 LDAPMessage *entry,
>                 char *attr)
>
> Here's a snippet of my program that's using this API:
>
> DptrLDAPinfo      S               *
> Dres              S               *
> DLDAPentry        S               *
> Dattrs            S            300A
> DptrLDAPvalue     S               *
> DLDAPvalue        S            300A   based(ptrLDAPvalue)
>
>  *   Get pointer to first entry
> C                   eval      LDAPentry=ldap_first_ent(ptrLDAPinfo:
> C                                                      res)
> Get the values of attribute 'mail'
> C                   eval      attrs='mail'
> C                   eval
> ptrLDAPvalue=ldap_get_values(ptrLDAPinfo:
> C                                                          LDAPentry:
> C
> %addr(attrs))
> C                   eval      ErrorMsg=CheckError(ptrLDAPinfo)
>
> Has anyone else done this and gotten it to work? It's clear
> that it can since the QShell utilites are working. Any
> examples will be much appreciated.
>
> Thanks in advance for your help on this,
>
> Matt
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L)
> mailing list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
>
>



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.