gtps4m3oSystem Generation

Other Generation Processes Executed During Stage II

GTSZ Getsize

GTSZ is an offline C program that obtains the size of components to be placed in the core image restart area (CIMR).

C$GTSZ is a C header file created as part of SIP stage II. It contains a list of CIMR components, with version codes, which GTSZ is compiled against. GTSZ gets the sizes of the components listed by C$GTSZ.

Output from GTSZ is segment SKGTSZ, a list of macro language global variables, one for each CIMR component, set to the size in bytes of the corresponding CIMR component. For example, a sample list looks like the following:

&XAACPL     SETA  13664          ACPLxx
&XAICDF     SETA  80972          ICDFxx
&XAIPAT     SETA  339108         IPATxx
&XAIPLB     SETA  73032          IPLBxx
&XARIAT     SETA  23000          RIATxx
&XASIGT     SETA  1780           SIGTxx

These values are used in creating CTKX. A 30% expansion factor is added when CTKX is created.

Running GTSZ

The recommended way to run GTSZ is assembling a SIP stage I deck and executing the output in SIP stage II. Users who want to run GTSZ independent of SIP because of customization should assemble a SIP stage I deck to get the initial JCL necessary to compile, link and run GTSZ, and get header file C$GTSZ. Users then carefully update header file C$GTSZ to include the CIMR component names and version codes they require. Each component must be added to the appropriate array: additional segments to be searched for in an object module data set go into the objname array while additional segments to search for in link module data sets go into the loadname array. The order of segments in the arrays is irrelevant. Users should be familiar with the C programming language before doing this. The following is a sample C$GTSZ:

/************************************************************/
/* THIS HEADER WAS PRODUCED BY SIP SEGMENT SKSYPS           */
/************************************************************/
char *objname[] = {
      "ACPLxx",
      "ICDFxx",
      "IPLBxx",
      "SIGTxx",
      "RIATxx",
      "IPATxx"
                  };
#define OBJNUM (sizeof(objname)/sizeof(char *))
 
char *loadname[] = {
      "FCTBxx",
      "CPS0xx"
                  };
#define LOADNUM (sizeof(loadname)/sizeof(char *))

Once C$GTSZ has been updated and put into data set ACP.SYMACRO.RELxx.yyy (yyy = BSS or other subsystem names) JCL similar to that below should be run:

//J1A1E EXEC EDCCLG,INFILE='ACP.CSRCE.OL.RELxx(GTSZ40)'
//COMPILE.SYSLIB  DD DSN=&VSCCHD&CVER&EDCHDRS,DISP=SHR
//                DD DSN=ACP.SYMACRO.RELxx.yyy,DISP=SHR
//GO.SYSUDUMP  DD SYSOUT=A
//GO.OUTFILE   DD DSN=ACP.OBJ.RELxx.yyy(SKGTSZ),DISP=OLD
//GO.OBJDSN   DD DSN=ACP.OBJ.RELxx.yyy,DISP=SHR
//GO.LNKDSN1  DD DSN=ACP.LINK.RELxx.yyy,DISP=SHR
/*

Once GTSZ is run and SKGTSZ is created, segments which rely on SKGTSZ (such as CTKX) should be reassembled and reloaded if necessary.