IBM Support

Concurrent BRMS Control Groups

General Page

The Toolkit can handle concurrent BRMS control groups. There are multiple ways to start them:

  • From the CSEDTA Backup Commands (use the SBMJOB command, or the SBMJOB parameter on STRBKUBRM).
  • Place them in a CL program, and then call the CL program from the CSEDTA Backup Commands parameter
  • Start from STRBKUBRM *EXITs (making sure to use SBMJOB(*YES))

Keep in mind that QBATCH is not started by the toolkit and probably shouldn't be started on the Flashcopy LPAR. Use the job description QLPARJOBD to submit to subsytem QSYSWRK.

But where do you put the call to ENDFSFLASH ? If a control group always runs longer than the others, simply place ENDFSFLASH at the final *EXIT in that control group.

If there is some ambiguity regarding which one will be the final control group, then a better option is to use a semaphore to ensure that all the control groups check in before issing ENDFSFLASH.

First, create this CL program on the source LPAR (modify for your environment):


                 PGM                                                                
                                                                                    
                 DCL        VAR(&ALIBS) TYPE(*CHAR) LEN(1) VALUE('N')               
                 DCL        VAR(&BLIBS) TYPE(*CHAR) LEN(1) VALUE('N')               
                 DCL        VAR(&CLIBS) TYPE(*CHAR) LEN(1) VALUE('N')               
                 DCL        VAR(&IFS) TYPE(*CHAR) LEN(1) VALUE('N')                 
                                                                                    
                 DLTDTAARA  DTAARA(QGPL/ALIBS)                                      
                 MONMSG     MSGID(CPF0000)                                          
                                                                                    
                 DLTDTAARA  DTAARA(QGPL/BLIBS)                                      
                 MONMSG     MSGID(CPF0000)                                          
                                                                                    
                 DLTDTAARA  DTAARA(QGPL/CLIBS)                                      
                 MONMSG     MSGID(CPF0000)                                          
                                                                                    
                 DLTDTAARA  DTAARA(QGPL/JUSTIFS)                                    
                 MONMSG     MSGID(CPF0000)                                          
                                                                                    
                 STRBKUBRM  CTLGRP(ALIBS) SBMJOB(*YES) JOBD(QLPARJOBD)              
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))                 
                 STRBKUBRM  CTLGRP(BLIBS) SBMJOB(*YES) JOBD(QLPARJOBD)              
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))                

                 STRBKUBRM  CTLGRP(CLIBS) SBMJOB(*YES) JOBD(QLPARJOBD)        
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))           
                 STRBKUBRM  CTLGRP(JUSTIFS) SBMJOB(*YES) JOBD(QLPARJOBD)      
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))           
                                                                              
    WAIT:                                                                     
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) +                    
                              MSGDTA('Waiting...')                            
                 DLYJOB     DLY(60)                                           
                 CHKOBJ     OBJ(QGPL/ALIBS) OBJTYPE(*DTAARA)                  
                 MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(WAIT))            
                 IF         COND(&ALIBS *EQ 'N') THEN(DO)                     
                 CHGVAR     VAR(&ALIBS) VALUE('Y')                            
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('ALIBS +      
                              has finished.')                                 
                 ENDDO                                                        
                                                                              
                 CHKOBJ     OBJ(QGPL/BLIBS) OBJTYPE(*DTAARA)                  
                 MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(WAIT))            
                 IF         COND(&BLIBS *EQ 'N') THEN(DO)                     
                 CHGVAR     VAR(&BLIBS) VALUE('Y')                            
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('BLIBS +      
                              has finished.')                                 
                 ENDDO                                                       

                                                                             
                 CHKOBJ     OBJ(QGPL/CLIBS) OBJTYPE(*DTAARA)                  
                 MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(WAIT))            
                 IF         COND(&CLIBS *EQ 'N') THEN(DO)                     
                 CHGVAR     VAR(&CLIBS) VALUE('Y')                            
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('CLIBS +      
                              has finished.')                                 
                 ENDDO                                                        
                                                                              
                 CHKOBJ     OBJ(QGPL/IFS) OBJTYPE(*DTAARA)                    
                 MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(WAIT))            
                 IF         COND(&IFS *EQ 'N') THEN(DO)                       
                 CHGVAR     VAR(&IFS) VALUE('Y')                              
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('IFS has +    
                              finished.')                                     
                 ENDDO                                                        
                                                                              
                 SAVMEDIBRM DEV(TAPMLB03) MEDPCY(ULTRIUM3) OPTION(*OBJ)    
                 MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))        
                                                                          

                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('All +        
                              backups are successfull, calling +       
                              ENDFSFLASH.')                                   
                                                                              
                 QZRDHASM/ENDFSFLASH ACTION(*NORMAL)                          
                 GOTO       CMDLBL(DONE)                                      
    ERROR:                                                                   

                                                                              
                 SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Error +       
                              encountered. ENDFSFLASH not called.') +          
                              TOMSGQ(*SYSOPR) MSGTYPE(*ESCAPE)                 
                                                                               
    DONE:                                                                      
                                                                               
    ENDPGM                                                                    

Then, in each control group, create the correct data area in the final *EXIT, and don't save the BRMS media information (because the program above does it).

On the controller, use CHGCSEDTA to submit the above program to JOBD(QLPAR) and run the flashcopy.

[{"Type":"MASTER","Line of Business":{"code":"LOB57","label":"Power"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.1.0"}]

Document Information

Modified date:
18 December 2019

UID

ibm11138198