Using DYNAGDG - syncsort_capacity_management - 12 - 12.40

Syncsort Capacity Management Installation Guide

Product type
Software
Portfolio
Integrate
Product family
Syncsort
Product
Syncsort Capacity Management
Version
12.40
Language
English
Product name
Syncsort Capacity Management
Title
Syncsort Capacity Management Installation Guide
Topic type
How Do I
Copyright
2023
First publish date
1985

Many users of z/OS systems have SMF data dumped out to a GDG when a MANx dataset fills up. At some pre-defined time, often at or just after midnight, a final SMF dump is forced, then the all the datasets in a GDG represent “yesterdays” data. This has traditionally been fine for z/OS sites that are not particularly large or busy. Anything more than a moderate size will mean this data volume is significant and takes a lot of time and resources to process.

The DYNAGDG= parameter allows a user to give control of what data is processed to Acquire if that data is in a GDG. By telling Acquire to dynamically and intelligently decide what to process through a day, users can spread out the processing burden and potentially get data into Syncsort Capacity Management more quickly.

The format of the parameter card is : DYNAGDG=datasetnamestem[,NOINFO]

datasetnamestem should be the name of a GDG, without the final qualifier. For example if your SMF data is dumped to PROD.SMF.DATA.G0001V00, PROD.SMF.DATA.G0002V00, PROD.SMF.DATA.G0003V00, etc. then dataset­namestem would be PROD.SMF.DATA.

By default, Acquire will open and read the first two records from each file and print the dates and times of each one in the job log. Adding the ,NOINFO option pre­vents it from doing this.

When using DYNAGDG= Acquire requires the addition of a 1-track file to its JCL under the //LASTGDG DD name. This is used to store the dataset name and date and time of the last RMF interval processed. This is used to determine where to start on a subsequent run of Acquire, and automatically sets the SDATE= and STIME= parameters (providing they have not been explicitly provided by the user).

The flow of processing is like this:

First run at say 08:00

DYNAGDG=PROD.SMF.DATA parameter is supplied by the user

//LASTGDG is a new and empty file

Datasets in existence:

PROD.SMF.DATA.G0001V00PROD.SMF.DATA.G0002V00

PROD.SMF.DATA.G0003V00

 

Acquire will read //LASTGDG and see it is empty. It will then obtain a list of data­sets starting with PROD.SMF.DATA.* from the catalog and allocate/concatenate all datasets in the correct order to //SMFDATA. Acquire will then process them as normal. At the end of the run, //LASTGDG will be updated with (say):

PROD.SMF.DATA.G0003V00 05JUL16 07:00:00

Second run at say 15:00

DYNAGDG=PROD.SMF.DATA parameter is supplied by the user

//LASTGDG contains PROD.SMF.DATA.G0003V00 05JUL16 07:00:00

Datasets in existence:

PROD.SMF.DATA.G0001V00PROD.SMF.DATA.G0002V00

PROD.SMF.DATA.G0003V00PROD.SMF.DATA.G0004V00

PROD.SMF.DATA.G0005V00PROD.SMF.DATA.G0006V00

PROD.SMF.DATA.G0007V00PROD.SMF.DATA.G0008V00

Acquire will read //LASTGDG and see it contains data. It will then list all the available datasets starting PROD.SMF.DATA and dynamically allocate PROD.SMF.DATA.G0003V00 through PROD.SMF.DATA.G0008V00, setting SDATE=05JUL16 and STIME=070000. Acquire will then process as normal. At the end of the run, //LASTGDG will contain (say):

PROD.SMF.DATA.G0007V00 05JUL16 14:15:00

 

Third run at say 21:00

DYNAGDG=PROD.SMF.DATA parameter is supplied by the user

//LASTGDG contains PROD.SMF.DATA.G0003V00 05JUL16 14:15:00

Datasets in existence:

PROD.SMF.DATA.G0001V00PROD.SMF.DATA.G0002V00

PROD.SMF.DATA.G0003V00PROD.SMF.DATA.G0004V00

PROD.SMF.DATA.G0005V00PROD.SMF.DATA.G0006V00

PROD.SMF.DATA.G0007V00PROD.SMF.DATA.G0008V00

PROD.SMF.DATA.G0009V00PROD.SMF.DATA.G0010V00

 

Acquire will read //LASTGDG and see it contains data. It will then list all the available datasets starting PROD.SMF.DATA and dynamically allocate PROD.SMF.DATA.G0008V00 through PROD.SMF.DATA.G0010V00, setting SDATE=05JUL16 and STIME=141500. Acquire will then process as normal. At the end of the run, //LASTGDG will contain (say):

PROD.SMF.DATA.G0010V00 05JUL16 20:15:00

 

Fourth run at say 00:10 after a midnight “cut off”

DYNAGDG=PROD.SMF.DATA parameter is supplied by the user

//LASTGDG contains PROD.SMF.DATA.G0010V00 05JUL16 20:45:00

Datasets in existence:

PROD.SMF.DATA.G0001V00PROD.SMF.DATA.G0002V00

PROD.SMF.DATA.G0003V00PROD.SMF.DATA.G0004V00

PROD.SMF.DATA.G0005V00PROD.SMF.DATA.G0006V00

PROD.SMF.DATA.G0007V00PROD.SMF.DATA.G0008V00

PROD.SMF.DATA.G0009V00PROD.SMF.DATA.G0010V00

PROD.SMF.DATA.G0011V00

Acquire will read //LASTGDG and see it contains data. It will then list all the available datasets starting PROD.SMF.DATA and dynamically allocate PROD.SMF.DATA.G0010V00 through PROD.SMF.DATA.G0011V00, setting SDATE=05JUL16 and STIME=204500. Acquire will then process as normal. At the end of the run, //LASTGDG will contain (say):

PROD.SMF.DATA.G0011V00 06JUL16 00:00:00

If a job then resets (deletes) the PROD.SMF.DATA GDG and clears out the //LASTGDG file, then “todays” processing is ready to go again.

  • Acquire will automatically take all datasets if:

  • //LASTGDG is empty

  • The dataset name in //LASTGDG does not match anything in the list of data­sets returned from the catalog

 

See the DYNACOL1 and DYNACOL2 sample JCL members for examples.