It's been quite a while (perhaps 2004?) since we used RMSMASTR, and I did 
a bunch of local stuff before it began, but the methods to correlate with 
VM:Tape that I used was to change the PROFILE EXEC to call our "HASERVE 
EXEC" before it looped calling the RMSSERV EXEC.

Here's the pertinent part from the HASERVE EXEC (pasted intact with all 
it's gory learn-as-we-went commented-out stuff):

   /*---------------------------------------------------------------*/ 
   /* Build a SESSION GLOBALV value with all RMSMASTR-controlled    */ 
   /* tape drives for use by "QFRMSEXT EXEC", as well as error      */ 
   /* recovery in case a VTS is not ready yet and needs retries.    */ 
   /*---------------------------------------------------------------*/ 
   'PIPE (END ? NAME GetRdevs)' , 
      '| < RMCONFIG DATA L' , 
      '| STRIP LEADING' , 
      '| SPLIT BEFORE *' ,              /* Split comment to next line*/ 
      '| STRNFIND \*\' ,                /* Blitz comments            */ 
      '| LOCATE WORD 1' ,               /* Blitz blank lines         */ 
      '| SPACE 0' ,                     /* Remove spaces             */ 
      '| STEM rdevs.'                   /* Resultant rdev-rdev(s)    */ 
 
    /* Handle either case: rdev rdev ... * Some comments             */ 
    /*                 or: rdev-rdev ... *other comments             */ 
    /*            but not: rdev rdev-rdev * Not both ranges + single */ 
    sdevs=''                            /* sdevs = Serial rdev addrs */ 
    Signal OFF NoValue 
    Do rx=1 to rdevs.0 
       If pos('-',rdevs.rx)=0 then 
          Do 
            sdevs=sdevs rdevs.rx 
            Iterate 
          End 
       /* Must have an "rdev-rdev" range */ 
       Do until rest='' 
          parse var rdevs.rx rbeg'-'rend rest 
          rest=strip(rest,'B') 
          parse var rest c1 2 . 
          If c1='*' then rest=''        /* Ignore comments           */ 
          rnext=x2d(rbeg) 
          rstop=x2d(rend) 
          Do until rnext>rstop 
             sdevs=sdevs d2x(rnext) 
             rnext=rnext+1 
          End 
       End /* While */ 
    End rx 
    Signal ON  NoValue 
    rmsdrives=sdevs 
    drop sdevs 
   'GLOBALV SELECT HASERV PUTS RMSDRIVES'  /* Set SESSION GLOBALV */ 
 
   ?msgop=0                        /* CP MSG OP of critical problems */
   ?hamimgr=0                      /* Perform H.A. version of MI init*/
   If 1=2 then         /* No longer used, this was an early attempt */     
 
      Do 
       'VMTAPE RMS QUERY'                             /* Status?    */
       'VMTAPE SUSPEND' /*Don't let VMT alloc before RMS is fully up*/
      End 
   errcnt=0                                           /* Init as OK */
   sleeptime='1 MIN' 
   retries=60 
/* Do rx=1 to retries until errcnt<>2 */ 
   Do rx=1 to retries until src=0 
      say '' 
      If rx=1 then Call Notify 'DFSMS initialization begins.' 
              else Call Notify 'DFSMS initialization attempt:' rx 
      say '' 
     /* A Pipe traps all messages until RMSSERV, and it's module    */
     /* "FSMDFSMS" complete, which prevents us from knowing what    */
     /* is going on when it runs normally.                          */
   /*'PIPE (END ? NAME RMSSERV)' , 
    *   '| COMMAND EXEC RMSSERV' , 
    *   '| CONSOLE' , 
    *   '| nBBC: LOCATE WORD 1 /FSMBBC0505E/' , 
    *   '| LOCATE / 2523, /' , 
    *   '| PICK WORD -1;* == /3/' ,                   /* rc=3       */
    *   '| fany: FANINANY' , 
    *   '| COUNT LINES' , 
    *   '| VAR errcnt' , 
    *   '? nBBC:' , 
    *     '| LOCATE WORD 1 /FSMXXX0505E/' , 
    *     '| LOCATE / 2522, /' , 
    *     '| PICK WORD -1;* == /3/' ,                 /* rc=3       */
    *     '| FANY:' 
    */ 
     'EXEC RMSSERV' 
      src=rc 
     'SET IMPEX ON'          /* RMSSERV sets it off                 */
      If src=0 then Leave    /* No specific rc for not-ready VTS    */
      Call ResetRdevs         
      If rx>1 then                     /* It's not the first try    */
         Do 
           Call Notify 'Sleeping' sleeptime 'before retry' , 
                        rx+1 'of' retries'.'  
          'CP SLEEP' sleeptime 'ATTN' 
           If rc=1457 then             /* Someone pressed ENTER     */ 
              Do 
                say time() 'Aborting after' rx 'attempts due to' , 
                    'ENTER key interrupt.' 
                Call Exit rc 
              End 
         End 
   End 
 
   say '' 
   Call Notify 'DFSMS has ended, rc='src , 
               '('rx 'initialization attempts)'   
 
   say '' 
   Call Notify 'DFSMS has ended, rc='src , 
               '('rx 'initialization attempts)' 
 
   If cons('D') then     /* Local exec returning 1 if Disconnected */      
 
     'CP LOGOFF' 
  'ACCESS 191 A' 
   Call Exit src 
 
/********************************************************************/ 
/*                   Sub-Routines below this point                  */ 
/********************************************************************/ 
 
Exit: 
   parse arg exitrc . 
   If verify(exitrc,'-0123456789')=0 then Exit exitrc 
                                     else Exit 999999 

Notify: 
 
   parse arg msgtxt 
  'CP MSG *' msgtxt 
   If ?msgop then 
     'CP MSG OP' msgtxt 
Return 

ResetRdevs: 
   /*****************************************************************/
   /* It is possible that we took a power hit, and VM came back up  */
   /* before the ATL(s) initialized, leaving the devices not        */
   /* properly replying to read-device-characteristics CCW.         */
   /* Drop them from CP and re-add them to get a fresh look.        */
   /*****************************************************************/
 
   Call Notify 'It appears that one or more IBM VTLs are' , 
               'not yet ready, the VTL(s) may still be initializing.' 
   Call Notify 'Retry attempt' rx 'of' retries 
 
   Do ix=1 to rdevs.0 
      rdevs=rdevs.ix 
     'CP VARY OFF' rdevs 
     'CP VARY OFF SUBCH' rdevs 
     'CP DELETE RDEVICE' rdevs 
     'CP SET RDEVICE' rdevs 'TYPE TAPE' 
     'CP VARY ON SUBCH' rdevs 
     'CP VARY ON' rdevs 
   End 
Return                                                                     
 


I hope that provides some ideas for those in need.

Mike Walter
Hewitt Associates
The opinions expressed herein are mine alone, not my employer's.



"Christy Brogan" <ccbro...@us.ibm.com> 

Sent by: "The IBM z/VM Operating System" <IBMVM@LISTSERV.UARK.EDU>
07/28/2010 03:33 PM
Please respond to
"The IBM z/VM Operating System" <IBMVM@LISTSERV.UARK.EDU>



To
IBMVM@LISTSERV.UARK.EDU
cc

Subject
Re: RMSMASTR : ready or not






Like Richard, we run VM:Tape. Here, it is NOT happy if it tries to start 
when RMSMASTR isn't ready. (Maybe we can chat Richard!) Basically what we 
do is to have a sleep in autolog2 to start up RMSMASTR, wait a few minutes 
and then do VMTAPE. It's not precise, but it works for us. :-)




"Schuh, Richard" ---07/28/2010 01:24:33 PM---You could always loop while 
trying to mount a tape. When it is mounted, RMSMASTR is ready.:-) In rea


From:

"Schuh, Richard" <rsc...@visa.com>

To:

IBMVM@LISTSERV.UARK.EDU

Date:

07/28/2010 01:24 PM

Subject:

Re: RMSMASTR : ready or not

Sent by:

The IBM z/VM Operating System <IBMVM@LISTSERV.UARK.EDU>



You could always loop while trying to mount a tape. When it is mounted, 
RMSMASTR is ready.:-)

In reality, the tape manager should be able to wait to open the interface 
until RMSMASTR is ready. Here, we have both a VTS, controlled by RMSMASTR, 
and 2 SL3000s, controlled by STKACS, and some tapes that are outside the 
silos. VMTAPE manages to initialize before RMSMASTR is ready and is quite 
happy adding the VTS to its stable when it is ready.

If you really need to insure that RMSMASTR is running, you need an 
Observer or a Secuser of it that looks for the message FSMSMS3203I 
RMSMASTR is running. 


Regards, 
Richard Schuh 



> -----Original Message-----
> From: The IBM z/VM Operating System 
> [mailto:ib...@listserv.uark.edu] On Behalf Of Alain Benveniste
> Sent: Wednesday, July 28, 2010 11:40 AM
> To: IBMVM@LISTSERV.UARK.EDU
> Subject: RMSMASTR : ready or not
> 
> Looking back to my autolog2 profile, I found not much pretty 
> to xautolog rmsmastr and sleep 30 sec to xautolog products 
> they require tape mounts.
> Rather than that I thought to trap a message that says in 
> substance "rmsmastr is ready, the tapes drives are there...". 
> Or "rmsmastr did not found a drive to initialize library ABC123...". 
> 
> What could I test to be sure of its good initialization ?
> 
> 
> Alain
> 
> 




The information contained in this e-mail and any accompanying documents may 
contain information that is confidential or otherwise protected from 
disclosure. If you are not the intended recipient of this message, or if this 
message has been addressed to you in error, please immediately alert the sender 
by reply e-mail and then delete this message, including any attachments. Any 
dissemination, distribution or other use of the contents of this message by 
anyone other than the intended recipient is strictly prohibited. All messages 
sent to and from this e-mail address may be monitored as permitted by 
applicable law and regulations to ensure compliance with our internal policies 
and to protect our business. E-mails are not secure and cannot be guaranteed to 
be error free as they can be intercepted, amended, lost or destroyed, or 
contain viruses. You are deemed to have accepted these risks if you communicate 
with us by e-mail. 


Reply via email to