Home The Company Publications Products Links Tips

Purge User Queue Elements Programatically

By Dieter W. Storr

Last update: 8 June 2004
The NATURAL Program:

* Program : PURGEUQE                                                   
*           This program creates modify commands to purge inactive and 
*           active user queue elements to prevent ADABAS RC 48         
* Input   : Report (DDDRUCK) of ADADBMOD OPERCOM DUQA                  
* Output1 : Modify commands /*$VS,'F server,STOPU=X'userid-hex''       
*           to internal reader                                         
* Output2 : Report of all modify commands with UQE info                
* Author  : Dieter W. Storr                                               
* Date    : August 17, 1998                                            
* ---------------------------------------------------------------------
* Name      Date      Change and Enhancements                          
* ---------------------------------------------------------------------
* D.Storr   08/24/98  END OF DATA for /*EOF (end of command stream)    
* D.Storr   06/08/04  Changed for publishing                          
*                                                                      
* ---------------------------------------------------------------------
*                                                                      
DEFINE DATA LOCAL                                                      
01 #P-SERVER      (A08)                                                
01 #T-DBID        (N03/1:04)   /* Table for dbid and server names      
01 #T-SERVER      (A08/1:04)                                   
01 #I1            (P4)         /* Index for loops              
*                                                              
01 #MOD           (A37)                                        
01 REDEFINE #MOD                                               
  02 #MOD-CMD    (A09)                                         
  02 #MOD-REST   (A28)                                         
*                                                              
01 #DDD           (A121)      /* DDDRUCK                       
01 REDEFINE #DDD              /*                               
  02 #DDD-FA     (A001)       /* asa control                   
  02 #DDD-F1     (A001)       /* blank                         
  02 #DDD-UQE    (A008)       /* hex value user queue element  
  02 REDEFINE #DDD-UQE                                         
    03 #DDD-UQE-A2 (A2)       /* check-out UQE = 00...... all??
    03 #DDD-UQE-A6 (A6)       /*                 ..xxxxxx      
  02 #DDD-F3     (A003)       /* blank                         
  02 #DDD-JOB    (A008)       /* jobname                       
  02 #DDD-F4     (A003)       /* blank                         
  02 #DDD-TID    (A008)       /* TID                           
  02 #DDD-F5     (A023)       /* blank and TID hex        
  02 #DDD-TYPE   (A001)       /*                          
  02 #DDD-F6     (A005)       /* blank                    
  02 #DDD-ACTIV  (A010)       /* last activity            
01 REDEFINE #DDD              /* DDDRUCK                  
  02 #DDD-F27    (A027)       /* not relevant             
  02 #DDD-DB     (A009)       /* text: 'DBID = 00'        
  02 #DDD-DBID   (N003)       /* dbid: 200                
  02 #DDD-F82    (A082)       /* not relevant             
END-DEFINE                                                
*                                                         
* --------------------------------   Initials             
MOVE '/*$VS,''F '  TO #MOD-CMD                            
*                                    Table                
MOVE 123           TO #T-DBID   (01)                      
MOVE 'ADAPROD1'    TO #T-SERVER (01)                      
MOVE 124           TO #T-DBID   (02)                      
MOVE 'ADAPROD2'    TO #T-SERVER (02)                      
MOVE 125           TO #T-DBID   (03)                      
MOVE 'ADAPROD3'    TO #T-SERVER (03)                      
MOVE 200           TO #T-DBID   (04)                                   
MOVE 'ADATEST '    TO #T-SERVER (04)                                   
*                                                                      
* ---------------------                                                
*                                                                      
READ WORK FILE 1 #DDD            /* read DDDRUCK report                
*                                                                      
  IF #DDD-DB =  'DBID = 00'      /* DBID in header = 00200             
*                                                                      
    FOR #I1 = 1 TO 4                                                   
      IF #DDD-DBID  = #T-DBID   (#I1)                                  
        MOVE #T-SERVER (#I1) TO #P-SERVER                              
      END-IF                                                           
    END-FOR                                                            
*                                                                      
    WRITE NOTITLE                                                      
      01T '-'(79)                                                   /  
      01T 'Lib:' *LIBRARY-ID     25T 'Purged User Queue Elements'      
      67T 'Pgm:'*PROGRAM                                            /  
      01T *DATX(EM=YYYY-MM-DD)                                         
      18T 'Prevents ADABAS Utility Response Code 48'                   
      67T *TIME                                                     /  
      20T 'DBID =' #DDD-DBID '- Server Name =' #P-SERVER            /  
      01T '-'(79)                                                   /  
      01T 'Modify Command' 39T 'Display User Queue Element (UQE) '  /  
      01T 'As Sent  '      39T 'Jobname' 49T 'TID'                     
      59T 'Type'  66T 'Last activity'                               /  
      01T '-'(79)                                                      
  END-IF                                                               
*                                                                      
  AT END OF DATA                                                       
    MOVE '/*EOF' TO #MOD                                               
    WRITE WORK FILE 2 #MOD                                             
    WRITE                                                              
      01T #MOD 39T 'end of command stream'                             
  END-ENDDATA                                                          
*                                                                      
  IF #DDD-UQE-A2 = '00'                                                
    COMPRESS #P-SERVER ',' 'STOPU=X''' #DDD-UQE '''''' INTO #MOD-REST  
      LEAVING NO SPACE                                                 
    WRITE WORK FILE 2 #MOD                                             
    WRITE                                                              
      01T #MOD 39T #DDD-JOB 49T #DDD-TID 61T #DDD-TYPE 69T #DDD-ACTIV  
  END-IF                                                               
END-WORK                                                               
*                                                                      
END                                                                    
Job Control for MVS

//JOBNAME  JOB ......
//* ----------------------------------------                      
//* --- Determine all User Queue Elements                       
//* ----------------------------------------                      
//OPERCOM  EXEC ADADBS                                            
//DDKARTE  DD *
ADADBS OPERCOM DUQA       
//DDDRUCK  DD DSN=&&DDDRUCK,DISP=(,PASS),SPACE=(TRK,(5,5),RLSE)   
//* ----------------------------------------                      
//* --- Submit STOPU (PURGE) Modify Commands                      
//* ----------------------------------------                      
//NATBATCH EXEC NATBATCH,COND=(O,NE)                                          
//CMSYNIN  DD DISP=SHR,DSN=Zxxxxx.DBA.CNTL(CMSYNIN)               
//         DD *               
PURGEUQE              
//CMWKF01  DD DSN=&&DDDRUCK,DISP=(OLD,DELETE,DELETE)              
//CMWKF02  DD BUFNO=16,BLKSIZE=0,SYSOUT=(X,INTRDR) INTERNAL READER
//CMPRINT  DD SYSOUT=*,BLKSIZE=0,BUFNO=30
//                                                                
CMPRINT Output

-------------------------------------------------------------------------------
Lib: LBXXXXXX           Purged User Queue Elements                Pgm: PURGEUQE
2004-06-08       Prevents ADABAS Utility Response Code 48         12:24:55.2   
                   DBID =  200 - Server Name = ADATEST                                
-------------------------------------------------------------------------------
Modify Command                        Display User Queue Element (UQE)         
As Sent                               Jobname   TID       Type   Last activity 
-------------------------------------------------------------------------------
/*$VS,'F ADATEST,STOPU=X'00000374''   XXXXXXUQ     ...~.    U             0    
/*$VS,'F ADATEST,STOPU=X'0000033F''   COMTEST   XXXBKR 1    E          7239    
/*$VS,'F ADATEST,STOPU=X'00000363''   COMTEST   XXXBKR 2    E          6479    
/*$VS,'F ADATEST,STOPU=X'00000329''   COMTEST   XXXDAP 1    E         14076    
/*$VS,'F ADATEST,STOPU=X'0000002D''   COMTEST   XXXD9L 1    E         95532    
/*$VS,'F ADATEST,STOPU=X'0000026D''   COMTEST   XXXLXU 1    E         72340    
/*$VS,'F ADATEST,STOPU=X'00000373''   COMTEST   XXXDWS 1    E           231    
/*EOF                                 end of command stream                    

Top Page


Back to ADABAS Tips, Tricks, Techniques -- Overview