> That's the problem with us now ...we don't see significant difference
from
> the logs .
>
> When one device is varied offline , it gets processed instantly
>
> When vary is issued against a set of devices (may be 10 ) , we see a
delay
> of 15 to 20 seconds . But our storage person keeps complaining that vary
> commands are processed slow . I believe , it is because there are so
many
> backup jobs failing from last few months compared to earlier .
>
> For eg , we had an abend yesterday where STEP 1 issues a vary command
> against a set of volumes . And STEP 2 runs an ICKDSF to init the volume
.
> It fails saying the volume is not offline .
To avoid having a job fail because a device is not yet in the
desired online/offline state, I would suggest adding a step to the job
which runs a program which waits until the device is in the desired state.
This is a simple program that we use. Since it is PL/X source, it isn't
directly usable, but it demonstrates the logic which could be used
in a program written in an externally available language.
@PROCESS TITLE('VARYWAIT -- WAIT FOR VARY DEVICE TO COMPLETE')
FORMAT DOBARS GMAR(1,72) NOIMP ENV(MVS/XA) OPT(STD);
VARYWAIT: PROC(PARM) OPTIONS(?ID(VARYWAIT);,CODEREG(12),
AMODE(31),RMODE(ANY));
%INCLUDE SYSLIB(IEFUCBOB);
DCL UCBPTR PTR(31);
DCL PTOKEN CHAR(8); /*PTR TO PIN TOKEN */
DCL NOTPINNED CHAR(8) INIT('0000000000000000'X);
DCL PINTEXT CHAR(58)
INIT('DEVICE PINNED BY VARYWAIT PROGRAM - IE: CLEANUP JOB');
DCL R15 PTR(31) REG(15);
DCL DEVNUM FIXED(32);
DCL WAIT1 FIXED(32);
DCL RC FIXED(31);
DCL 1 PARM, /* "0000DDDD,TTTTTTTT,ON " */
2 LEN FIXED(15),
2 PARMDATA,
3 DEVPRM CHAR(8),
3 COMMA1 CHAR(1),
3 WAIT1PRM CHAR(8),
3 COMMA2 CHAR(1),
3 ONOFFPRM CHAR(3);
DCL 1 TRANSHEX CHAR(256),
2 * CHAR(193),
2 * BIT(48) INIT('0A0B0C0D0E0F'X),
2 * CHAR(41),
2 * BIT(80) INIT('00010203040506070809'X);
DCL 1 UNPACKED CHAR(9),
2 SIGUNPK CHAR(8);
DCL 1 PACKED CHAR(5) BDY(WORD),
2 HEXNUM CHAR(4),
PARMFIX FIXED(32) DEF(HEXNUM);
IF LEN ¬= LENGTH(PARMDATA) | COMMA1¬=',' | COMMA2¬=',' THEN
?ABEND (1) DUMP;
SIGUNPK=DEVPRM;
TR(SIGUNPK,TRANSHEX);
PACK(PACKED,UNPACKED);
DEVNUM=PARMFIX;
SIGUNPK=WAIT1PRM;
TR(SIGUNPK,TRANSHEX);
PACK(PACKED,UNPACKED);
WAIT1=PARMFIX;
?MODESET MODE(SUP) KEY(NZERO);
RFY R15 RSTD;
PTOKEN = NOTPINNED;
?UCBLOOK DEVN(DEVNUM) UCBPTR(UCBPTR) DYNAMIC(YES) LOC(ANY)
PIN PTOKEN(PTOKEN) TEXT(PINTEXT) RANGE(ALL);
RC = R15; /* SAVE RETURN CODE */
IF RC ¬= 0 THEN
?ABEND (2) DUMP;
RFY R15 UNRSTD;
SELECT (ONOFFPRM);
WHEN ('ON ')
DO WHILE(¬UCBONLI);
IF WAIT1¬=0 THEN
GEN REFS(WAIT1) (STIMER WAIT,BINTVL=WAIT1 );
END;
WHEN ('OFF')
DO WHILE(UCBONLI);
IF WAIT1¬=0 THEN
GEN REFS(WAIT1) (STIMER WAIT,BINTVL=WAIT1 );
END;
OTHERWISE
?ABEND (3) DUMP;
END;
IF PTOKEN ¬= NOTPINNED THEN /* UNPIN IF REQUIRED */
?UCBPIN UNPIN PTOKEN(PTOKEN);
?MODESET MODE(PROB) KEY(NZERO);
RETURN CODE(0);
?EPILOG;
END VARYWAIT;
Jim Mulder z/OS System Test IBM Corp. Poughkeepsie, NY
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN