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