Thanks a ton Jim and John !

On Tue, Apr 22, 2014 at 2:16 AM, John Clifford <[email protected]> wrote:

> We had this issue back in early 2000's. Ended up being something with GRS
> across 4 LPARs.
> We ended up writing a small rexx to delay next step for xxx seconds.
> ================================================================
>  /* REXX */
>  /* SLEEPS FOR THE SPECIFIED NUMBER OF SECONDS.                        */
>  /********1*********2*********3*********4*********5*********6*********7*/
>  SIGNAL ON ERROR
>  PARSE ARG SECONDS
>  IF SECONDS = "" THEN
>     CALL BADSYNTAX
>  IF DATATYPE( SECONDS, 'W' ) == 0 THEN
>     DO
>        SAY "ERROR!  SECONDS PARAMETER MUST BE A WHOLE NUMBER!"
>        CALL BADSYNTAX
>     END
>  CALL SYSCALLS 'ON'
>  ADDRESS SYSCALL
>  "SLEEP" SECONDS
>  CALL SYSCALLS 'OFF'
>  EXIT 0
>  /** BADSYNTAX()
>   *  PRINTS THE CORRECT SYNTAX...
>   */
>  BADSYNTAX:  PROCEDURE
>     SAY "SYNTAX ERROR!"
>     SAY ""
>     SAY "SYNTAX:  SLEEP( SECONDS )"
>     CALL SYSCALLS 'OFF'
>  EXIT 1
>  /** ERROR
>   *  CALLED WHEN AN ERROR SIGNAL OCCURS.
>   */
>  ERROR:
>     SAY "ERROR!  KILLING REXX SCRIPT."
>     CALL SYSCALLS 'OFF'
>     EXIT 1
> =======================================================================
> Save rexx in a SYSEXEC lib
> then insert;
>
> //STEP01  EXEC PGM=IKJEFT01
> //SYSPRINT DD SYSOUT=*
> //SYSLBC   DD DSN=SYS1.BRODCAST,DISP=SHR
> //SYSPROC  DD DISP=SHR,DSN=YOUR.SYSEXEC.LIB
> //SYSTSPRT DD SYSOUT=*
> //SYSOUT   DD SYSOUT=*
> //SYSTSIN  DD *
>  SLEEP 12
> ===========================================
> Maybe it will help. It won't explain what is causing your command
> completion delay. We found it using TMON for MVS.
>
> John Clifford
> IBM contractor
>
>
>
> On Mon, Apr 21, 2014 at 2:47 PM, Jim Mulder <[email protected]> wrote:
>
> > > 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
> >
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to