home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hall of Fame
/
HallofFameCDROM.cdr
/
3x400
/
addlibl.lzh
/
CPP2040.CLP
< prev
Wrap
Text File
|
1985-12-02
|
6KB
|
132 lines
PGM PARM(&LIB &POSITION &PROMPT)
/* ADDLIBL */
/* Add to Library List. CPP */
DCL VAR(&LIB) TYPE(*CHAR) LEN(242)
DCL VAR(&ALIB) TYPE(*CHAR) LEN(264)
DCL VAR(&POSITION) TYPE(*CHAR) LEN(13)
DCL VAR(&POS) TYPE(*CHAR) LEN(10)
DCL VAR(&BA) TYPE(*CHAR) LEN(1)
DCL VAR(&PROMPT) TYPE(*LGL) LEN(1)
DCL VAR(&RPLLIBL) TYPE(*CHAR) LEN(15)
DCL VAR(&LIBL) TYPE(*CHAR) LEN(275)
DCL VAR(&OFFSET) TYPE(*DEC) LEN(3 0)
DCL VAR(&OFFSET1) TYPE(*DEC) LEN(3 0) VALUE(1)
DCL VAR(&OFFSET2) TYPE(*DEC) LEN(3 0) VALUE(3)
DCL VAR(&LEN) TYPE(*DEC) LEN(3 0)
DCL VAR(&LEN2) TYPE(*DEC) LEN(3 0)
DCL VAR(&LIBNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&TIMES) TYPE(*DEC) LEN(3 0)
DCL VAR(&CMD) TYPE(*CHAR) LEN(350)
DCL VAR(&COUNTER) TYPE(*DEC) LEN(3 0)
DCL VAR(&CNT) TYPE(*DEC) LEN(15 0)
DCL VAR(&P1) TYPE(*DEC) LEN(3 0)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132)
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO RCVMSG)
RTVJOBA USRLIBL(&LIBL)
CHGVAR VAR(&POS) VALUE(%SST(&POSITION 03 10))
CHGVAR VAR(&BA) VALUE(%SST(&POSITION 13 01))
BINCVT BINVAL(%SST(&LIB 01 02)) DECVAR(&CNT)
CHGVAR VAR(&P1) VALUE((&CNT * 11))
LOOP: IF (&TIMES *LT &CNT) DO
CHGVAR VAR(%SST(&ALIB &OFFSET1 10)) VALUE(%SST(&LIB +
&OFFSET2 10))
CHGVAR VAR(&OFFSET1) VALUE(&OFFSET1 + 11)
CHGVAR VAR(&OFFSET2) VALUE(&OFFSET2 + 10)
CHGVAR VAR(&TIMES) VALUE(&TIMES + 1)
GOTO LOOP
ENDDO
IF COND(&PROMPT) THEN(CHGVAR VAR(&RPLLIBL) +
VALUE('? RPLLIBL LIBL('))
ELSE CMD(CHGVAR VAR(&RPLLIBL) VALUE('RPLLIBL +
LIBL('))
IF (&POS *EQ '*FIRST') DO
CHGVAR VAR(&OFFSET) VALUE(1)
GOTO SETUP
ENDDO
IF COND(&POS *EQ '*LAST') THEN(CHGVAR +
VAR(&LIBNAME) VALUE(' '))
ELSE CHGVAR VAR(&LIBNAME) VALUE(&POS)
CHGVAR VAR(&OFFSET) VALUE(1)
LOOP2: IF COND(%SST(&LIBL &OFFSET 10) *EQ &LIBNAME *OR +
%SST(&LIBL &OFFSET 10) *EQ ' ') THEN(GOTO +
CMDLBL(START))
CHGVAR VAR(&OFFSET) VALUE(&OFFSET + 11)
IF (&OFFSET *GT 266) DO
SNDPGMMSG MSG('Library list is full. No more +
libraries may be entered.') TOPGMQ(*PRV) +
MSGTYPE(*DIAG)
GOTO RCVMSG
ENDDO
GOTO LOOP2
START: IF ((&POS *EQ '*LAST') *OR (&LIBNAME *EQ ' ')) +
CHGVAR VAR(&OFFSET) VALUE(&OFFSET - 11)
SETUP: IF (&BA = '0') DO /* Place before */
IF (&OFFSET = 1) DO /* If first library then +
bypass code. */
CHGVAR VAR(&LIBL) VALUE(&ALIB *BCAT &LIBL)
GOTO EXECMD
ENDDO
/* Move offset pointer to library to the left +
of the selected library. This will cause +
the "place before" action. */
CHGVAR VAR(&OFFSET) VALUE(&OFFSET - 11)
ENDDO
CHGVAR VAR(&LEN) VALUE(&OFFSET + 10)
CHGVAR VAR(&LEN2) VALUE((275 - (&OFFSET + 10)) - 1)
CHGVAR VAR(&OFFSET) VALUE(&OFFSET + 11)
CHGVAR VAR(&LIBL) VALUE(%SST(&LIBL 1 &LEN) *BCAT +
&ALIB *BCAT %SST(&LIBL &OFFSET &LEN2))
EXECMD: CHGVAR VAR(&CMD) VALUE(&RPLLIBL *CAT &LIBL *TCAT ')')
CALL PGM(QCACHECK) PARM(&CMD 350)
MONMSG MSGID(CPF0006) EXEC(DO)
SNDPGMMSG MSG(%SST(&CMD 01 132)) TOPGMQ(*PRV) +
MSGTYPE(*DIAG)
SNDPGMMSG MSG(%SST(&LIB 02 132)) TOPGMQ(*PRV) +
MSGTYPE(*DIAG)
SNDPGMMSG MSG(%SST(&ALIB 01 132)) TOPGMQ(*PRV) +
MSGTYPE(*DIAG)
GOTO CPP2040
ENDDO
CALL PGM(QCAEXEC) PARM(&CMD 300)
GOTO CPP2040
RCVMSG: RCVMSG RMV(*YES) MSGDTA(&MSGDTA) MSGID(&MSGID)
IF (&MSGID *NE ' ') DO
IF (%SST(&MSGID 1 3) *EQ 'CPF' +
*OR %SST(&MSGID 1 3) *EQ 'MCH') DO
IF (&MSGDTA *EQ ' ') SNDPGMMSG MSGID(&MSGID) +
MSGF(QCPFMSG) TOPGMQ(*PRV) MSGTYPE(*DIAG)
ELSE SNDPGMMSG MSGID(&MSGID) MSGF(QCPFMSG) +
MSGDTA(&MSGDTA) TOPGMQ(*PRV) MSGTYPE(*DIAG)
CHGVAR VAR(&COUNTER) VALUE(&COUNTER + 1)
ENDDO
IF (&COUNTER *LE 10) GOTO RCVMSG
ENDDO
CPP2040: /* CONTINUE */
ENDPGM