This article describes considerations for using a non-zero page group on dictionary and catalog segments.
Release : All supported releases.
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.