Non-zero page groups in dictionary segments
search cancel

Non-zero page groups in dictionary segments

book

Article ID: 217484

calendar_today

Updated On:

Products

IDMS

Issue/Introduction

This article describes considerations for using a non-zero page group on dictionary and catalog segments.

Environment

Release : All supported releases.
Component : CA IDMS/DB.

Resolution

Dictionary and catalog segments can be assigned a page group other than zero.

However, all of the segments in the same dictionary DBNAME must have the same page group.
This is a restriction imposed by the compilers and is documented at Assigning Dictionary Areas to Segments (scroll down to Page Groups).

This presents a problem with the usage of the SYSMSG segment.
SYSMSG is a system defined segment which typically has page group 0, and is normally included in every dictionary DBNAME.
So how is it possible to construct a dictionary DBNAME whose dictionary segment has a page group other than zero?

Assume the SYSMSG segment is defined like this:

     CREATE                                       
     SEGMENT SYSMSG                               
         FOR NONSQL                               
         PAGE GROUP 0                             
         MAXIMUM RECORDS PER PAGE 255             
         ;                                        
     CREATE                                       
     FILE SYSMSG.DCMSG                            
         ASSIGN TO DCMSG                          
         DSNAME 'IDMS.CV01.SYSMSG.DDLDCMSG'       
         DISP SHR                                 
         NONVSAM                                  
         ;                                        
     CREATE                                       
     PHYSICAL AREA SYSMSG.DDLDCMSG                
         PRIMARY SPACE 4000 PAGES  FROM PAGE 10001
         MAXIMUM SPACE 4000 PAGES                 
         PAGE SIZE 4276 CHARACTERS                
         WITHIN FILE DCMSG                        
             FROM 1 FOR ALL BLOCKS                
         ;                                        

And that the proposed dictionary segment is this:

     CREATE                                         
     SEGMENT PG01DICT                               
         FOR NONSQL                                 
         PAGE GROUP 1                               
         MAXIMUM RECORDS PER PAGE 255               
         ;                                          
     CREATE                                         
     FILE PG01DICT.DCDML                            
         ASSIGN TO PG01DML                          
         DISP SHR                                   
         NONVSAM                                    
         ;                                          
     CREATE                                         
     FILE PG01DICT.DCLOD                            
         ASSIGN TO PG01LOD                          
         DISP SHR                                   
         NONVSAM                                    
         ;                                          
     CREATE                                         
     PHYSICAL AREA PG01DICT.DDLDML                  
         PRIMARY SPACE 30000 PAGES  FROM PAGE 170001
         MAXIMUM SPACE 30000 PAGES                  
         PAGE SIZE 13680 CHARACTERS                 
         WITHIN FILE DCDML                          
             FROM 1 FOR ALL BLOCKS                  
         ;                                          
     CREATE                                         
     PHYSICAL AREA PG01DICT.DDLDCLOD                
         PRIMARY SPACE 10000 PAGES  FROM PAGE 70001 
         MAXIMUM SPACE 10000 PAGES                  
         PAGE SIZE 23476 CHARACTERS                 
         WITHIN FILE DCLOD                          
             FROM 1 FOR ALL BLOCKS                  
         ;                                          

Add a FILE and AREA definition for this dictionary's DDLDCMSG area and make sure it has the exact same page range, page size and even dataset name as the one in SYSMSG.

     CREATE                                       
     FILE PG01DICT.DCMSG                          
         ASSIGN TO PG01MSG                        
         DSNAME 'IDMS.CV01.SYSMSG.DDLDCMSG'       
         DISP SHR                                 
         NONVSAM                                  
         ;                                        
     CREATE                                       
     PHYSICAL AREA PG01DICT.DDLDCMSG              
         PRIMARY SPACE 4000 PAGES  FROM PAGE 10001
         MAXIMUM SPACE 4000 PAGES                 
         PAGE SIZE 4276 CHARACTERS                
         WITHIN FILE DCMSG                        
             FROM 1 FOR ALL BLOCKS                
         ;                                        

Then create an area override for this area in the DMCL that defines it to be in retrieval mode.

     ALTER                                       
     DMCL CV01DMCL
       INCLUDE SEGMENT PG01DICT              
             DEFAULT BUFFER BUFFER_27996         
             ON STARTUP SET STATUS TO UPDATE     
             ON WARMSTART MAINTAIN CURRENT STATUS
             DATA SHARING NO                     
             DEFAULT SHARED CACHE NULL                                          
         INCLUDE AREA PG01DICT.DDLDCMSG          
             ON STARTUP SET STATUS TO RETRIEVAL  
             ON WARMSTART MAINTAIN CURRENT STATUS
             DATA SHARING NO                     
             MEMORY CACHE NO                     
         ;                                       

This technique works because the page group is not stored anywhere in the database area (in this case, PG01DICT.DDLDCMSG), only in its definition.