IBM Support

Adding and Removing Libraries From the Library List in CL

Troubleshooting


Problem

This document provides information about using a CL program to add a library to the library list, then restoring the original library list when processing is finished.

Resolving The Problem

Users will occasionally want to add a library to the library list, then restore the original library list when processing is finished. Many times when they attempt to do so within a CL program they will get errors such as message CPD0078 stating that the value for parameter LIBL is not a valid name. One suggestion is to use APIs to restore the library list. However, if a user wants to do this strictly within CL, here is a program that will do just that.

Note: There are added pieces in here for testing purposes, such as ADDLIBLE LIB(ADDTEST) and a few DMPCLPGM commands. Simply remove or comment out whatever parts you do not want.
 
Disclaimer: This is an example only. IBM accepts no responsibility for its correctness.
 
             PGM
             DCL        VAR(&USRLIBL) TYPE(*CHAR) LEN(275)
             DCL        VAR(&USRLIBL2) TYPE(*CHAR) LEN(275)
             DCL        VAR(&USRLIBL3) TYPE(*CHAR) LEN(275)
             DCL        VAR(&USER) TYPE(*CHAR) LEN(10)
             DCL        VAR(&CURLIB) TYPE(*CHAR) LEN(10)
             DCL        VAR(&X) TYPE(*DEC) LEN(3 0) VALUE(1)
             DCL        VAR(&LIB1) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB2) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB3) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB4) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB5) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB6) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB7) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB8) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB9) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB10) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB11) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB12) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB13) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB14) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB15) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB16) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB17) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB18) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB19) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB20) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB21) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB22) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB23) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB24) TYPE(*CHAR) LEN(11)
             DCL        VAR(&LIB25) TYPE(*CHAR) LEN(11)
             MONMSG     MSGID(CPF2103)
             MONMSG     MSGID(CPD0078)
             MONMSG     MSGID(CPF0001)
             RTVJOBA    USER(&USER) USRLIBL(&USRLIBL) CURLIB(&CURLIB)
             DMPCLPGM
             ADDLIBLE   LIB(ADDTEST)
             RTVJOBA    USER(&USER) USRLIBL(&USRLIBL2)
             DMPCLPGM
             CHGVAR     VAR(&LIB1) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB1 *EQ '           ') THEN(GOTO CMDLBL(END))
             CHGVAR     VAR(&LIB2) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB2 *EQ '           ') THEN(GOTO CMDLBL(CHG1))
             CHGVAR     VAR(&LIB3) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB3 *EQ '           ') THEN(GOTO CMDLBL(CHG2))
             CHGVAR     VAR(&LIB4) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB4 *EQ '           ') THEN(GOTO CMDLBL(CHG3))
             CHGVAR     VAR(&LIB5) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB5 *EQ '           ') THEN(GOTO CMDLBL(CHG4))
             CHGVAR     VAR(&LIB6) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB6 *EQ '           ') THEN(GOTO CMDLBL(CHG5))
             CHGVAR     VAR(&LIB7) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB7 *EQ '           ') THEN(GOTO CMDLBL(CHG6))
             CHGVAR     VAR(&LIB8) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB8 *EQ '           ') THEN(GOTO CMDLBL(CHG7))
             CHGVAR     VAR(&LIB9) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB9 *EQ '           ') THEN(GOTO CMDLBL(CHG8))
             CHGVAR     VAR(&LIB10) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB10 *EQ '           ') THEN(GOTO CMDLBL(CHG9))
             CHGVAR     VAR(&LIB11) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB11 *EQ '           ') THEN(GOTO CMDLBL(CHG10))
             CHGVAR     VAR(&LIB12) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB12 *EQ '           ') THEN(GOTO CMDLBL(CHG11))
             CHGVAR     VAR(&LIB13) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB13 *EQ '           ') THEN(GOTO CMDLBL(CHG12))
             CHGVAR     VAR(&LIB14) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB14 *EQ '           ') THEN(GOTO CMDLBL(CHG13))
             CHGVAR     VAR(&LIB15) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB15 *EQ '           ') THEN(GOTO CMDLBL(CHG14))
             CHGVAR     VAR(&LIB16) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB16 *EQ '           ') THEN(GOTO CMDLBL(CHG15))
             CHGVAR     VAR(&LIB17) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB17 *EQ '           ') THEN(GOTO CMDLBL(CHG16))
             CHGVAR     VAR(&LIB18) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB18 *EQ '           ') THEN(GOTO CMDLBL(CHG17))
             CHGVAR     VAR(&LIB19) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB19 *EQ '           ') THEN(GOTO CMDLBL(CHG18))
             CHGVAR     VAR(&LIB20) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB20 *EQ '           ') THEN(GOTO CMDLBL(CHG19))
             CHGVAR     VAR(&LIB21) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB21 *EQ '           ') THEN(GOTO CMDLBL(CHG20))
             CHGVAR     VAR(&LIB22) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB22 *EQ '           ') THEN(GOTO CMDLBL(CHG21))
             CHGVAR     VAR(&LIB23) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB23 *EQ '           ') THEN(GOTO CMDLBL(CHG22))
             CHGVAR     VAR(&LIB24) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB24 *EQ '           ') THEN(GOTO CMDLBL(CHG23))
             CHGVAR     VAR(&LIB25) VALUE(%SST(&USRLIBL &X 11))
             CHGVAR     VAR(&X) VALUE(&X + 11)
             IF         COND(&LIB25 *EQ '           ') THEN(GOTO CMDLBL(CHG24))
             GOTO       CMDLBL(CHG25)
 CHG1:       CHGLIBL    LIBL(&LIB1) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG2:       CHGLIBL    LIBL(&LIB1 &LIB2) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG3:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG4:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG5:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG6:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG7:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG8:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG9:       CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG10:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10) +
                          CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG11:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG12:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG13:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG14:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG15:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG16:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG17:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG18:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG19:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19) +
                          CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG20:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG21:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20 &LIB21) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG22:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20 &LIB21 &LIB22) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG23:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20 &LIB21 &LIB22 &LIB23) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG24:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20 &LIB21 &LIB22 &LIB23 &LIB24) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 CHG25:      CHGLIBL    LIBL(&LIB1 &LIB2 &LIB3 &LIB4 &LIB5 &LIB6 &LIB7 &LIB8 &LIB9 &LIB10 +
                          &LIB11 &LIB12 &LIB13 &LIB14 &LIB15 &LIB16 &LIB17 &LIB18 &LIB19 +
                          &LIB20 &LIB21 &LIB22 &LIB23 &LIB24 &LIB25) CURLIB(&CURLIB)
             GOTO       CMDLBL(END)
 END:        RTVJOBA    USER(&USER) USRLIBL(&USRLIBL3)
             DMPCLPGM
             ENDPGM   


[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m3p0000006x8GAAQ","label":"CL"},{"code":"a8m0z0000000CHtAAM","label":"Programming ILE Languages"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions"}]

Historical Number

22055628

Document Information

More support for:
IBM i

Component:
CL, Programming ILE Languages

Software version:
All Versions

Operating system(s):
IBM i

Document number:
641393

Modified date:
15 November 2024

UID

nas8N1017533

Manage My Notification Subscriptions