Comando ANZLIB CMD PROMPT('Analiza tamaņo de Biblioteca') PARM KWD(LIB) TYPE(*CHAR) LEN(10) + PROMPT('Biblioteca') El comando llama a este CLP (TOL425C ) PGM PARM(&LIB) DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&SYSASP) TYPE(*DEC) LEN(15 0) DCL VAR(&SYSASPUSED) TYPE(*DEC) LEN(15 4) DCL VAR(&TAMAŅO) TYPE(*DEC) LEN(15 0) DCL VAR(&TAMAŅOC) TYPE(*CHAR) LEN(15) DCL VAR(&SYSASPC) TYPE(*CHAR) LEN(15) DCL VAR(&PORCEN) TYPE(*DEC) LEN(5 2) DCL VAR(&PORCENC) TYPE(*CHAR) LEN( 7) DCL VAR(&STS) TYPE(*CHAR) LEN(1) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&SIZE) TYPE(*DEC) LEN(15 0) DCLF FILE(QADSPOBJ) RCDFMT(*ALL) RTVJOBA TYPE(&STS) USER(&USER) CHKOBJ QSYS/&LIB *LIB MONMSG CPF0000 EXEC(DO) IF (&STS = '1') DO SNDPGMMSG MSG('No se ha encontrado la biblioteca ' + || &LIB) ENDDO ELSE DO SNDMSG MSG('No se ha encontrado la biblioteca ' + || &LIB) TOUSR(&USER) ENDDO ENDDO DSPOBJD OBJ(&LIB/*ALL) OBJTYPE(*ALL) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/ANZLIBF) OVRDBF QADSPOBJ QTEMP/ANZLIBF OVRSCOPE(*JOB) START: RCVF *FILE MONMSG CPF0864 EXEC(GOTO END_PGM) CHGVAR &SIZE (&SIZE + &ODOBSZ) GOTO START END_PGM: CALL TOL872C (&SYSASPUSED &SYSASP) CHGVAR &SYSASP (&SYSASP * 1000000) CHGVAR &TAMAŅOC &SIZE CHGVAR &SYSASPC &SYSASP CHGVAR &PORCEN ((&SIZE / &SYSASP) * 100 ) CHGVAR &PORCENC &PORCEN IF (&STS = '1') DO SNDPGMMSG MSG(' Tamaņo de ' || &LIB |< ' es de ' || &tamaŅoc || ' + sobre ' || &sysaspc || ' , ' || + &porcenc || '%') ENDDO ELSE DO SNDMSG MSG(' Tamaņo de ' || &lib |< ' es de ' || &tamaŅoc || ' + sobre ' || &sysaspc || ' , ' || + &porcenc || '%') TOUSR(&USER) ENDDO DLTOVR *ALL LVL(*JOB) ENDPGM Pgm TOL872C PGM (&SYSASPUSED &SYSASP) DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(68) DCL VAR(&RCVVARLEN) TYPE(*CHAR) LEN(4) DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) DCL VAR(&RESET) TYPE(*CHAR) LEN(10) DCL VAR(&BIN4NBR) TYPE(*CHAR) LEN(4) DCL VAR(&DEC15NBR) TYPE(*DEC) LEN(15 0) DCL VAR(&SYSASP) TYPE(*DEC) LEN(15 0) DCL VAR(&SYSASPUSED) TYPE(*DEC) LEN(15 4) DCL VAR(&TOTAUXSTG) TYPE(*DEC) LEN(15 0) DCL VAR(&CURUNPUSED) TYPE(*DEC) LEN(15 0) DCL VAR(&MAXUNPUSED) TYPE(*DEC) LEN(15 0) DCL VAR(&APIERROR) TYPE(*CHAR) LEN(272) DCL VAR(&BYTESPROV) TYPE(*CHAR) LEN(4) DCL VAR(&BYTESAVAIL) TYPE(*CHAR) LEN(4) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(256) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) /* =============================================================== /* = Monitor Global de Errores = /* =============================================================== */ MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR)) /* =============================================================== */ /* = Inicializar Variables = */ /* =============================================================== */ CHGVAR VAR(&FORMAT) VALUE('SSTS0200') CHGVAR VAR(&RESET) VALUE('*YES') CHGVAR VAR(%BIN(&RCVVARLEN)) VALUE(68) CHGVAR VAR(%BIN(&BYTESPROV)) VALUE(272) CHGVAR VAR(%BIN(&BYTESAVAIL)) VALUE(0) CHGVAR VAR(%SST(&APIERROR 1 4)) VALUE(&BYTESPROV) CHGVAR VAR(%SST(&APIERROR 5 4)) VALUE(&BYTESAVAIL) /* =============================================================== */ /* = Recuperar Informacion de estado del sistema = */ /* =============================================================== */ CALL PGM(QWCRSSTS) PARM(&RCVVAR &RCVVARLEN + &FORMAT &RESET &APIERROR) /* --------------------------------------------------------------- */ /* - Verifica si existe algun tipo de Error - */ /* --------------------------------------------------------------- */ CHGVAR VAR(&BYTESAVAIL) VALUE(%SST(&APIERROR 5 4)) IF COND(%BIN(&BYTESAVAIL) *NE 0) THEN(DO) CHGVAR VAR(&MSGID) VALUE(%SST(&APIERROR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERROR 17 256)) CHGVAR VAR(&MSGF) VALUE('QCPFMSG') CHGVAR VAR(&MSGFLIB) VALUE('QSYS') GOTO CMDLBL(SNDMSG) ENDDO /* =============================================================== */ /* = Extrae Informacion de Estado del Sistema = */ /* =============================================================== */ CHGVAR VAR(&BIN4NBR) VALUE(%SST(&RCVVAR 49 4)) CHGVAR VAR(&SYSASP) VALUE(%BIN(&BIN4NBR)) CHGVAR VAR(&BIN4NBR) VALUE(%SST(&RCVVAR 53 4)) CHGVAR VAR(&DEC15NBR) VALUE(%BIN(&BIN4NBR)) CHGVAR VAR(&SYSASPUSED) VALUE(&DEC15NBR / 10000) CHGVAR VAR(&BIN4NBR) VALUE(%SST(&RCVVAR 57 4)) CHGVAR VAR(&TOTAUXSTG) VALUE(%BIN(&BIN4NBR)) CHGVAR VAR(&BIN4NBR) VALUE(%SST(&RCVVAR 61 4)) CHGVAR VAR(&CURUNPUSED) VALUE(%BIN(&BIN4NBR)) CHGVAR VAR(&BIN4NBR) VALUE(%SST(&RCVVAR 65 4)) CHGVAR VAR(&MAXUNPUSED) VALUE(%BIN(&BIN4NBR)) /* =============================================================== */ /* = Despues de Esto acomodar los valores que se quieren enviar = */ /* =============================================================== */ RETURN /* =============================================================== */ /* = Rutina de Error = */ /* =============================================================== */ ERROR: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) MSGFLIB(&MSGFLIB) MONMSG MSGID(CPF0000 MCH0000) SNDMSG: SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) MONMSG MSGID(CPF0000 MCH0000) ENDPGM