Determining the size of the JCT data set

The JCT data set contains information about the status of jobs in the system. You must make the size of the JCT data set large enough to accommodate the maximum number of jobs that can be in your JES3 complex simultaneously. If the data set is larger than required, JES3 uses only that portion needed to hold the maximum number of jobs (the remainder of the JCT is used for write error recovery). However, the larger the JCT data set, the longer JES3 initialization takes. For optimum performance, minimize the size of the JCT data set as much as possible.
  1. Calculate the size, in bytes, of the JCT entry within the JCT data set:
    xxx= (4 x max SEs) + zzz + 28 bytes (prefix)
    where:
    • xxx is the size, in bytes, of a single JCT.
    • 4 is the size of one JCT scheduler element in the JCT.
    • Max SEs is the maximum number of scheduler elements as specified on the SE parameter of the OPTIONS initialization statement (10 through 90 is the valid range - 10 is the default).
    • zzz is the size, in bytes, of the fixed JCT. Field JCTFSIZE in the IATYJCT macro defines this value. If you have modified the size of your JCT by making changes to IATYJCT, IATYCNDB or IATYFDB, use the value (from an assembled listing) in JCTFSIZE as the zzz value in the formula. If you have not modified the size of the JCT, the value of JCTFSIZE is 668 bytes.
    • 28 is the size, in bytes, of the SRF header prefix mapped when using the IATYSRF macro.
  2. Determine the number of JCTs per cylinder. For IBM® 3380 and 3390 devices, use the following documents to determine the number of JCTs that will fit on a track and cylinder:
    • Using IBM 3390 Direct Access Storage in an MVS™ Environment
    • 3380 Direct Access Storage Introduction
    Each document contains a table matrix in an appendix that shows how many physical blocks fit on a track and a cylinder for various block sizes (because the JCT records are unblocked, the logical record size IS the block size).
    Note: JCT records are without keys. A portion of the information from Using IBM 3390 Direct Access Storage in an MVS Environment , the topic entitled "Records without Keys" is relevant to JCT records and is included below:
    Table 1. Physical blocks per track and cylinder
    Data Length Range Percent Max Track Capacity (*) Max Cylinder Capacity (*)
    Min Max Used (*) Records Bytes Records Bytes
    1019 1086 63.2 33 35838 495 537570
    985 1018 61.1 34 34612 510 519180
    951 984 60.8 35 34440 525 516600
    889 950 60.4 36 34200 540 513000
    855 888 58.0 37 32856 555 492840
    821 854 57.3 38 32452 570 486780
    787 820 56.4 39 31980 585 479700
    753 786 55.5 40 31440 600 471600
    719 752 54.4 41 30832 615 462480
    691 718 53.2 42 30156 630 452340
    657 690 52.4 43 29670 645 445050
    623 656 50.9 44 28864 660 432960
    589 622 49.4 45 27990 675 419850
    Note: (*) Calculations are made using the maximum size record in a range.

    The column "Maximum Track Capacity Records" will give how many JCTs per track a 3390 can contain.

    The column "Maximum Cylinder Capacity Records" will give how many JCTs per cylinder a 3390 can contain.

    The size ranges shown in this table will cover most of the likely JCT record sizes. For other JCT sizes, 3380 DASD, and other devices, consult the appropriate documents.

  3. Determine the required size of the JCT data set:
    JCT data set           (64 + max # of jobs)
        size       =   ----------------------------
    in cylinders        number of JCTs per cylinder
    where:
    • The JCT data set size in cylinders must be incremented to the next whole number if the result is not a whole number.
    • 64 is the number of JCTs JES3 reserves for write error recovery.
    • The max # of jobs is the maximum number of jobs that can simultaneously be in your JES3 complex.
    • The number of JCTs per cylinder (as explained in the device specific table - of step #2 above).
Note:
  1. JES3 reserves 64 or more JCT records in the JCT data set for "write" error recovery unless the number of records in the JCT data set is less than or equal to 64. If your JCT contains 64000 records and you specify JOBNO=(1,64000, 64000) on the OPTIONS statement, the number of jobs in the system is limited to 64000 - 64 = 63936. If you wanted to have 64,000 jobs in the system and specified JOBNO=(1, 64000,64000), the JCT data set would have to contain 64064 records to allow for the 64 records needed for "write" error recovery. On the other hand, if your JCT contains 64000 records and you specify JOBNO=(1,63000,63000) on the OPTIONS statement, the job number range is limited to 63000, and 1000 JCT records are reserved for "write" error recovery (64000 - 63000 = 1000).
  2. The JCT data set should be allocated on a cylinder boundary.
  3. In order to change the size or placement of the JCT data set, you must either perform a cold start or use the IATUTJCT utility. See JCT Utility (IATUTJCT) for more information on changing your JCT data set.
  4. If you have not modified the length of the JCT by changes to IATYJCT, IATYCNDB, or IATYFDB, and you use the default number of SE entries (10), then a JCT entry is 736 bytes long.
    • 38 entries per track or 570 entries per cylinder on a 3380 device
    • 41 entries per track or 615 entries per cylinder on a 3390 device
  5. The JCT data set can be greater than 65,535 tracks only if you specify the DSNTYPE=LARGE keyword on the JCL DD statement that is used to create the data set.
    • Creating or using a large format data set requires z/OS V1R7 or later. The large format data set cannot be opened on earlier-level systems.
  6. Unless you take special action, a JCT data set will not have extended attributes and will not be EAS-eligible. To create a data set with extended attributes that is EAS-eligible, code the EATTR=OPT keyword on the JCL DD statement that is used to create the data set; then the data set can exist in the Extended Addressing Space (EAS) of an Extended Address Volume (EAV).
    • Creating or using a data set with extended attributes requires z/OS V1R12 or later. A data set with extended attributes and residing in the EAS cannot be opened on earlier-level systems.

Example

You want to process 20,000 JES3 jobs concurrently. The size of the standard IBM-supplied JCT has not been modified by making changes to IATYJCT, IATYCNDB, or IATYFDB. You have specified SE=15 in the OPTIONS initialization statement, and are using IBM 3390 Direct Access Devices for the JCT data set:
  1. Calculate the size, in bytes, of the JCT entry within the JCT data set:
    xxx= (4 x max SEs) + zzz + 28 bytes (prefix)
    756= (4 x 15) + 668 + 28
  2. Determine the number of JCTs per cylinder:

    Using the 3390 capacity table above, a 756 byte record falls within the 753 - 786 data length range, and 600 of these records will fit in a 3390 cylinder.

  3. Determine the required size of the JCT data set:
    JCT data set         (64 + max # of jobs)
        size      =    ----------------------------
    in cylinders        number of JCTs per cylinder
    
    33.44 = (64 + 20,000) / 600
     
    Since the result is not a whole number, it must be incremented to the next whole number, 34.

Conclusion

You require a JCT data set size of 34 cylinders.

You can allocate the JCT data set by including the //JES3JCT DD statement in the JES3 cataloged start procedure or by using a DYNALLOC initialization statement (see Figure 1 for a sample of the JES3 cataloged procedure).