In addition to the i5 toolkit suggestion... the most recent versions
of the ibm_db2 driver has an option as well:
$conn = db2_pconnect("","","", array("i5_naming"=>DB2_I5_NAMING_ON,
"i5_libl"=>"QGPL QTEMP IESMTFIL"));
I have to admit, though, I've had trouble getting this i5_libl option to
work -- I wonder if I'm not using a new enough version of the ibm_db2
driver.
Another approach (that seems to work consistently for me) is turning the
QCMDEXC API into a stored procedure...
CREATE PROCEDURE QGPL/QCMDEXC (
IN CMDLINE CHAR(32702) ,
IN LENGTH DECIMAL(15, 5) )
LANGUAGE CL
NOT DETERMINISTIC
NO SQL
EXTERNAL NAME 'QSYS/QCMDEXC'
PARAMETER STYLE GENERAL
Once you've done that, you'll be able to easily call QCMDEXC as a stored
procedure, and you can use it to run the addlible command. I have the
following PHP routine that I will include into my scripts:
function db_addlible($conn, $lib, $pos) {
$cmd = "ADDLIBLE LIB(" . $lib . ") POSITION(" . $pos . ")";
$sql = "CALL QSYS/QCMDEXC('" . $cmd . "', " . strlen($cmd) .")";
if (!db2_exec($conn, $sql))
return FALSE;
return TRUE;
}
With that, I can simply do:
$conn = db2_connect(...etc...);
db_addlible($conn, "ACCTLIB" "*LAST");
I tend ignore the errors from this, since often times the library is
already in the library list, so it fails :)
elehti@xxxxxxxxxxxxxxxxxx wrote:
Our web developer hard-codes library name (library.table) on each SQL
statement because he does not know how to change a job library list
(INLLIBL parameter (Initial Library List) on the job description.)
As an Amazon Associate we earn from qualifying purchases.