Zitat Zitat von GerdG
Hallo zusammen,

gibt es eine einfache Möglichkeit, die vom System erstellten DEVD nach der Abmeldung, also quasi "nach Gebrauch" automatisch wieder zu löschen?

Gerd
hallo gerdg,

von einem "befreundetem" forum geklaut.

Honeurs für gerdmmeier (autor):

*-----------------------------------------------------------------S*/
/* DV058C IKS.--.--.--- */
/*------------------------------------------------------------------*/
/*------------------------------------------------------------------*/
/* FUNCTION: Löschen virtueller Einheitenbeschreibungen */
/* -----------------------------------------------------------*/
/* INPUT : ./. */
/* SELECT : ./. */
/* PARMLIST: ./. */
/* OUTPUT : ./. */
/* SWITCH : ./. */
/* CALL <--: QCMD */
/* CALL -->: CMD DLTDEVD */
/* -----------------------------------------------------------*/
/* */
/* -----------------------------------------------------------*/
/*------------------------------------------------------------------*/
/* erstellt: 00.00.00 von: .......... V.00 PA: ..... */
/* geändert: 00.00.00 von: ......... V.01 PA: ..... */
/*-----------------------------------------------------------------E*/
/*--*/
PGM PARM(&OBJNAME)
/*--*/
/*------------------------------------------------------------------*/
/* DECL VARIABLE.. TYPE. LENGTH.... +VALUE.......... */
/*------------------------------------------------------------------*/
/*--*/
DCL VAR(&DEVD) TYPE(*CHAR) LEN(10)
DCL VAR(&OBJNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) +
VALUE('QSYS ')
DCL VAR(&USRSPC1) TYPE(*CHAR) LEN(20) +
VALUE('QPAD QTEMP ')
DCL VAR(&JOBNR) TYPE(*CHAR) LEN(6)
DCL VAR(&OBJ) TYPE(*CHAR) LEN(20)
DCL VAR(&BIN4) TYPE(*CHAR) LEN(4)
DCL VAR(&ELEN) TYPE(*DEC) LEN(8 0)
DCL VAR(&ELENB) TYPE(*CHAR) LEN(4)
DCL VAR(&LOOP) TYPE(*DEC) LEN(8 0)
DCL VAR(&DEC8) TYPE(*DEC) LEN(8 0)
DCL VAR(&DATA) TYPE(*CHAR) LEN(128)
DCL VAR(&STATUS) TYPE(*DEC) LEN(5 0)
DCL VAR(&RDEVD) TYPE(*CHAR) LEN(892)
DCL VAR(&DEVDH) TYPE(*CHAR) LEN(4)
DCL VAR(&DEVDD) TYPE(*DEC) LEN(5 0) VALUE(892)
DCL VAR(&TYPE) TYPE(*CHAR) LEN(4)
/*--*/
/*------------------------------------------------------------------*/
/* Erstellen *USRSPC und Auflistung Objekte im System */
/*------------------------------------------------------------------*/
/* */
/* This creates the user space */
/* */
RTVJOBA NBR(&JOBNR)
CHGVAR VAR(%SST(&USRSPC1 5 6)) VALUE(&JOBNR)
CALL PGM(QUSCRTUS) PARM(&USRSPC1 'DLT_QPADE' 2048 +
' ' '*EXCLUDE' 'Benutzerbereich für +
Objektliste')
/* */
/* Einlesen aller Objektinformationen */
/* */
CHGVAR VAR(&OBJ) VALUE(&OBJNAME *CAT &LIB)
CALL PGM(QUSLOBJ) PARM(&USRSPC1 'OBJL0100' &OBJ +
'*DEVD' 0)
/* */
CHGVAR VAR(%BIN(&DEVDH)) VALUE(&DEVDD)
/* */
/* Feststellen, ob Objekte vorhanden sind, wenn nicht --> Abbruch */
/* */
CALL PGM(QUSRTVUS) PARM(&USRSPC1 X'00000085' +
X'00000004' &BIN4)
/* */
CHGVAR VAR(&LOOP) VALUE(%BIN(&BIN4))
/* */
IF COND(&LOOP = 0) THEN(SNDPGMMSG +
MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('Keine Einheiten in Bibliothek' +
*BCAT &LIB *BCAT 'vorhanden') +
MSGTYPE(*ESCAPE)) /* Kein Objekt +
ausgewählt */
/* */
/* */
/* Länge des Satzes in *USRSPC feststellen */
/* */
CALL PGM(QUSRTVUS) PARM(&USRSPC1 X'00000089' +
X'00000004' &ELENB)
CHGVAR VAR(&ELEN) VALUE(%BIN(&ELENB))
CALL PGM(QUSRTVUS) PARM(&USRSPC1 X'0000007D' +
X'00000004' &BIN4)
CHGVAR VAR(&DEC8) VALUE(%BIN(&BIN4))
CHGVAR VAR(&DEC8) VALUE(&DEC8 + 1)
/* */
/* This loops for the number of files until no more files are */
/* found and goes to the ALLDONE label. */
/* */
STARTLOOP: IF COND(&LOOP = 0) THEN(GOTO CMDLBL(ALLDONE))
/* */
/* Falls keine Einheiten gefunden wurde, weiter mit nächstem */
/* Satz */
/* */
/* */
CHGVAR VAR(%BIN(&BIN4)) VALUE(&DEC8)
CALL PGM(QUSRTVUS) PARM(&USRSPC1 &BIN4 &ELENB &DATA)
/* */
CHGVAR VAR(&DEVD) VALUE(%SST(&DATA 01 10))
/* */
RTVCFGSTS CFGD(&DEVD) CFGTYPE(*DEV) STSCDE(&STATUS)
/* */
IF COND(&STATUS ^< 30) THEN(GOTO CMDLBL(ENDLOOP))
/* */
CHGVAR VAR(&RDEVD) VALUE(' ')
CALL PGM(QDCRDEVD) PARM(&RDEVD &DEVDH 'DEVD0600' +
&DEVD X'00000000')
CHGVAR VAR(&TYPE) VALUE(%SST(&RDEVD 175 4))
IF COND(&TYPE = 'V100') THEN(GOTO +
CMDLBL(ENDLOOP))
/* */
VRYCFG CFGOBJ(&DEVD) CFGTYPE(*DEV) STATUS(*OFF) +
RANGE(*OBJ)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDLOOP))
DLTDEVD DEVD(&DEVD)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDLOOP))
/* */
ENDLOOP: CHGVAR VAR(&DEC8) VALUE(&DEC8 + &ELEN)
CHGVAR VAR(&LOOP) VALUE(&LOOP - 1)
GOTO CMDLBL(STARTLOOP)
/* */
ALLDONE: DLTUSRSPC USRSPC(%SST(&USRSPC1 11 10)/%SST(&USRSPC1 01 +
10))
MONMSG MSGID(CPF0000)
/*--*/
/*------------------------------------------------------------------*/
/* E N D E -ROUTINE */
/*------------------------------------------------------------------*/
/*--*/
NOOBJ: ENDPGM
/*------------------------------------------------------------------*/