Hilary,

Here is what I use, for what it's worth. It get's the job done. I put in some 
/*%%%%%%%%%%%%% ...' where you would make changes for your shop. It's not 
perfect, in fact I have some more work to do to make it 'pretty' and more 
error-catching. Unfortuately I don't have the restore exec. Hmmm, guess I 
better get busy with one. :-) 


Hope it helps,
Michael




DDR Parm file example:


SYSPRINT CONS
INPUT 0200 3390 530RES
OUTPUT 181 3590 (LEAVE
DUMP ALL
INPUT 0201 3390 530W01
OUTPUT 181 3590 (LEAVE
DUMP ALL
INPUT 0202 3390 530PAG
OUTPUT 181 3590 (LEAVE
DUMP ALL
INPUT 0203 3390 530SPL
OUTPUT 181 3590 (LEAVE
DUMP ALL
INPUT 0204 3390 VMSYS2
OUTPUT 181 3590 (LEAVE
DUMP ALL











Exec:


/***** This exec is used to backup non-VSE systems, namely:
       The VM system it's self, using DDR
       ID SUSE9, Linux Suse V9
       ID SLES10, Linux Suse V10
       IDs Lin01-Lin04
*****/
Trace o
ADDRESS COMMAND 'CP SP CONS START *'
Call Misc_Settings
Call Check_Tape_Unit
Call Check_Volumes
Call Relink_mdisks
Call Check_Tape_Unit
Call Check_Tape_Media
Call Build_DDR_Parm_File
Call Backup_using_DDR
'pipe cp q tapes | locate /BACKDASD/ | spec w2 1 | var the_tape'
If the_tape='THE_TAPE' then do
   say '+----------------------------------------------------+'
   say '+ It appears as though the tape you used has already'
   say '+ been detached. '
   say '+ You will need to attach the tape drive you used to'


/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
   say '+ PROD. If the tape unit is 5A2, following is what you '
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


   say '+ would key:'


/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
   say '+  att 5A2 PROD'
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


   say '+----------------------------------------------------+'
   End
address command 'CP DETACH 181'


/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
address command 'CP ATT 'the_tape' PROD'
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


say '+----------------------------------------------------+'
say '+ The backup is now complete.'
say '+ The backup is now complete.'
say '+ The backup is now complete.'
say '+ The backup is now complete.'
say '+ The backup is now complete.'
say ' '
say '+ Please mark the date and the '1 of 5', '2 of 5', etc.'
say '+ designation as appropriate.'
say '+----------------------------------------------------+'


ADDRESS COMMAND 'SP CONS CLOSE *'
Exit


/***********************************************/
 Misc_Settings:
/***********************************************/
f_type=date(S)                         /***** date(S)=yyyymmdd *****/
/***** Fmt is: volser virt_addr volser virt_addr ... *****/


/***** let the terminal proceed with little operator intervention *****/
address command 'CP TERM MORE 3 3'
address command 'CP TERM HOLD OFF'


/***** Tables of dasd and dasd addrs are below *****/


/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
VM_test_dasd= '  '
SLES10_dasd=  'HMA903 0400 '
LIN01_dasd=   'HMA902 0401 '
LIN02_dasd=   'HMA901 0402 '
LIN03_dasd=   'HMA904 0403 LIN000 0405 LIN001 0406'
LIN04_dasd=   'HMA909 0404 LIN003 0407 LIN004 0408 LIN005 0409'
VM_DASD     = '530RES 0200 530W01 0201 530PAG 0202 530SPL 0203 VMSYS2 0204 
VMSYS1 0205'
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


All_together= VM_dasd ,
              SLES10_dasd ,
              LIN01_dasd LIN02_dasd LIN03_dasd LIN04_dasd ,
              VM_test_dasd
              VM_test_dasd


/***** If disks are not attached to system, attach them then re-link them *****/
'pipe literal Detail on non-VSE disk backups | > DETAIL 'f_type' a'
Return


/***********************************************/
 Check_Volumes:
/***********************************************/
Do a=1 by 2 to words(All_together)                   /*****#####do 
one#####*****/
   vol_ser=subword(All_together,a,1)
   say '+----------------------------------------------------+'
   say '+ Pre-checking volume 'vol_ser'...'
   say '+----------------------------------------------------+'
  'pipe cp q dasd 'vol_ser' ' ,  /***** get real addr *****/
    '| var out_put1'
   real_addr=subword(out_put1,2,1)
  'pipe cp q dasd details 'real_addr ,  /***** record details of vols *****/
    '| >> DETAIL 'f_type' a'
   If subword(out_put1,3,2)='CP SYSTEM' then iterate a
   If subword(out_put1,3,2)='CP OWNED'  then iterate a
   If subword(out_put1,3,2)='ATTACHED TO' then do    /*****#####do 
two#####*****/
      who_has_it=subword(out_put1,5,1)
     'cp det 'real_addr  who_has_it  ;  ret_code=rc
      If ret_code=0 then nop
        else call Error_exit exec_cmd="'cp detach "real_addr who_has_it"'"
     'cp att 'real_addr' system 'vol_ser
      If ret_code=0 then nop
        else call Error_exit exec_cmd="'cp attach "real_addr" system "vol_ser"'"
      End  /*****#####end do two#####*****/
  'cp att 'real_addr' system 'vol_ser        /***** since all spec excp was 
skipped, att to sys *****/
   End  /*****#####end do one#####*****/
Return


/***********************************************/
 Relink_Mdisks:
/***********************************************/
Do a=2 by 2 to words(All_together)                   /*****#####do 
one#####*****/
   virt_addr=subword(All_together,a,1)
   b=a-1
   say '+----------------------------------------------------+'
   say '+ Re-linking virtual address 'virt_addr' for volser 
'subword(All_together,b,1)'...'
   say '+----------------------------------------------------+'
  'cp link * 'virt_addr virt_addr 'rr'  ;  ret_code=rc
   If ret_code=0 then nop
     else call Error_exit exec_cmd="'cp link "virt_addr virt_addr" rr'"
   End  /*****#####end do one#####*****/
Return


/***********************************************/
 Check_Tape_Unit:
/***********************************************/
say '+----------------------------------------------------+'
say '| Do you have a tape drive attached as 181? Review  '
say '| output below and answer y(es) or press enter.   '
say '| (The 2nd field is the virtual address and needs to '
say '|  be 181. i.e. attach 5a2 backdasd 181 ) '
say '+----------------------------------------------------+'
'CP Q V TAPES'
pull ans_wer .
upper ans_wer
If (ans_wer='Y' | ans_wer='') then return


/***** the code below needs work


/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
If ans_wer='N' then do until ( tape_addr='5A0' | tape_addr='5A1' | 
tape_addr='5A2' )
   say '+----------------------------------------------------+'
   say '| Please specify the real address of the 3590 drive '
   say '| you CAN use (5A0, 5A1 or 5A2).'
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/


   say '+----------------------------------------------------+'
   pull tape_addr .
   End
'pipe cp q 'tape_addr'| var out_put2'  ;  upper out_put2
If subword(out_put2,3,2)='ATTACHED TO' then do
   'cp det 'tape_addr subword(out_put2,5,1)  ;  ret_code=rc
   If ret_code=0 then nop
     else call Error_exit exec_cmd="'cp detach "tape_addr" * 181'"
   End
'pipe cp q 'tape_addr'| var out_put2'  ;  upper out_put2
If subword(out_put2,3,1)='FREE' then do
   'cp att 'tape_addr' * 181'  ;  ret_code=rc
   If ret_code¬=0 then call Error_exit exec_cmd="'cp attach "tape_addr" * 181'"
   End
********************/
Return


/***********************************************/
 Check_Tape_Media:
/***********************************************/
say '+----------------------------------------------------+'
say '| Mount the 1st 3590 scratch tape on your dedicated '
say '| drive. When complete, press enter '
say '+----------------------------------------------------+'
'tape rew'


/****************************************************
'pipe tape 181 | take 1 | var vol_rec'
If substr(vol_rec,1,4)¬='VOL1' then do
   say '+----------------------------------------------------+'
   say '| The tape media mounted on the drive does not have '
   say "| a standard header 'vol1' record. Please re-init   "
   say '| the media using the "tape wvol1" command and try  '
   say '| this exec again. '
   say '| Exiting...'
   say '+----------------------------------------------------+'
   Exit
   End
If substr(vol_rec,5,3)¬='900' then Do
   say '+----------------------------------------------------+'
   say '| The tape media mounted on the drive is not one of '
   say "| the 900 series tapes. Please dismount and mount a "
   say '| 900 series tape and restart this exec.  '
   say '| Exiting...'
   say '+----------------------------------------------------+'
   Exit
   End
****************************************************/
Return


/***********************************************/
 Backup_using_DDR:
/***********************************************/
'cp sp cons start *'
'tape rew'  ;  'tape fsf 1'
'ddr budasd parm1 a'
Return


/***********************************************/
 Build_DDR_Parm_File:
/***********************************************/
c=1  ;  card.1='SYSPRINT CONS'
'pipe literal 'All_together' ',     /***** fmt the records into volser 
virt_addr *****/
'| tokenize / / ',
'| join 1 / /',
'| stem input_recs.'
Do a=1 to input_recs.0                           /*****#####do one#####*****/
   vol_ser=subword(input_recs.a,1,1)  ;  virt_addr=subword(input_recs.a,2,1)
   c=c+1
   card.c='INPUT 'virt_addr' 3390 'vol_ser
   c=c+1
   card.c='OUTPUT 181 3590 (LEAVE'
   c=c+1
   card.c='DUMP ALL'
   End
card.0=c
'pipe stem card. | > budasd parm1 a'
Return


Error_exit:
say '+----------------------------------------------------+'
say '| An error has occurred while executing, '
say '|    '
say '|    'exec-cmd'.'
say '|    '
say '| Now exiting so you can fix it. Re-execute when the'
say '| error has been corrected.'
say '+----------------------------------------------------+'
Exit
Return











----- Original Message ----
From: Hilary Hurwitz <[EMAIL PROTECTED]>
To: IBMVM@LISTSERV.UARK.EDU
Sent: Thursday, March 6, 2008 3:42:41 AM
Subject: Procedure to ddr multiple disks to one tape and restore

  I am not really a VM 
person, so I am asking for help a bit .
 
Does anyone have a 
Rexx proc that will take a list of disks as input and back them up to one 
tape . We just became the proud owners of 3590 drives. Before it was at least 
two tapes per disk. (yes we took a few boxes of tapes to do DRP testing) 

 
IIdeally I would like to produce 
a rexx proc for restoring those disks too . ( I can wish cant 
I?)
 
Otherwise I will be 
reinventing the wheel.  
 
Many 
thanks
 
                                                   Hilary Hurwitz               
      הילרי הורביץ                  System Programmer          עובדת סיסטם      
                               Phone:              + 972 2 6297034              
       02-6297034          טלפון:                  Fax:              + 972 2 
6295247          02-6295247          פקס:                  Mobile:              
+ 972 50 7605551          050-7605551          סלולרי:                  Email:  
            [EMAIL PROTECTED]          [EMAIL PROTECTED]          דוא''ל:       
                                                                                
                                                 
www.malam.com                       







      
____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

Reply via email to