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.

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.