On 02-Dec-2014 09:05 -0600, Steinmetz, Paul wrote:
I'm re-evaluating my management of libl for some 3rd party products.
Currently, I have the products that are widely used in the QSYSLIBL.
  That use of the System or User portions of the library list has 
always been discouraged, irrespective the popularity of the deprecated 
implementation; perhaps a carry-over from the S/38 where perhaps there 
was no Product library support.?  If there is a perceived /requirement/ 
for effecting that setup, in order to make the products functional, then 
the products are probably at least somewhat poorly designed [with 
respect to the PRD portion of Library List concept].
I recently had a RDB40 upgrade fail because it was calling INSTALLC
with 2 parameters, but found INSTALLC from DBU10 expecting 1
parameter. It took a week with Prodata support till the issue was
discovered, easy fix. Prodata is fixing their RDB40 install process.
  The ten-byte naming often and quite legitimately is blamed.  For lack 
of a product-specific naming prefix for each specific object, the fully 
qualified name [with library name included] generally suffices in place 
of the actual name-prefix.  Yet without an arbiter of naming, a naming 
authority and all parties honoring that, a _potential for conflicts_ 
would always remain.
  Using library-qualified invocations are much more acceptable [and 
even often expected] for installation than for actual run-time.  Of 
course the dynamic nature in the run-time invocations is mostly about 
the convenience of testing alternative code; entry into the product can 
easily enough restrict the how dynamic their invocations will be.
Prodata support is suggesting using PRD lib.
  That is what IBM does with Licensed Program Products (LPP) they ship. 
 Third party products generally do\should as well.  If the library with 
the conflicting object had been in QUSRLIBL instead of QSYSLIBL, then 
their proper use of PRDLIB() would have prevented the conflict due to 
the temporary override to the order of the User LIBL; of course 
acknowledging that with the install-path vs a run-time-path the 
scenarios are distinct.
I've had issues with this with AJS and BRMS, they both use PRD.
  Anything specific to report?  They might be defects, or possibly 
exposing oversights or just plain poor-quality design.
IBM documentation states you can have up to 2 PRD libs, but haven't
seen that happen.
  PDM uses two at least sometimes; e.g. within 2=Edit of a source 
member from within the WRKMBRPDM.  IIRC the *CMD object can only support 
one, though does support a Current Library (CURLIB) override beyond just 
the support to override the Product Library (PRDLIB); those parameter 
keywords on Create Command (CRTCMD) and Change Command (CHGCMD).
  The Change Library List (QLICHGLL) API provides the capability to 
modify "the current library, the two product libraries, and the user 
part of the current thread's library list." 
<
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/qlichgll.htm>
Anyone have success with using PRD lib for managing a product libl?
  The IBM products seem to have little difficulty managing them; or at 
least suggesting their LPPs have long been quite dependent on the PrdLib 
might be an apt description.
I could add all these products to over 100 jobds, but I prefer not
going that route.
  That would effect what would have been available via the QUSRLIBL 
[not QSYSLIBL]; adding the library names via the Initial Library List 
(INLLIBL) parameter of those JOBD is not the same as what adding those 
libraries to QSYSLIBL had been providing.  Moving the third party 
product libraries further down the list is not generally helpful to 
remove the potential for name collisions; the fact that the many 
libraries are in the list and more importantly, possibly in an 
undesirable [path] order, is the issue of concern.  In conjunction with 
PRDLIB(), those various other product libraries in the UsrLibl would not 
present a problem, but that presumes all the products either [will] have 
no conflicts or that they use PRDLIB() support already [or something 
else] to prevent such name conflicts.
  Ensuring each of the products functions according to one [or two] 
specific Product Library List entry, irrespective the remaining portions 
of the library list [system, user, current] is the ideal solution; i.e. 
ensuring those libraries are *not* added, except when needed, and each 
product adjust the PRDLIB according to its needs.
Has anyone found some new magic on managing the libl for multiple
3rd  party products?
  I would expect their commands already use Proxy commands [or still 
use the old convention of a duplicate command object] copied into a 
common library, or recommended or scripts to effect that; the /common/ 
library is unlikely to be the same for every customer.  Products that do 
not operate with commands, hopefully have an alternate approach that 
limits the potential for a name conflict to as few possible objects as 
possible; e.g. just one [service] program that, like the PRDLIB() of a 
*CMD object, that establishes either a PRDLIB() or similar effect.
  Lacking the scripts or the automatic effect from the install, those 
customizations might be effected as part of system change management to 
be reapplied with any maintenance to those products.  But of course, the 
possibility exists such that the product was not [properly] designed to 
operate that way outside of what can be easily achieved with CHGCMD 
PRDLIB(prd_lib_name) to their *CMD objects.
As an Amazon Associate we earn from qualifying purchases.