Syntax format of the LNKLST statements

Rule: You must enter parameters on the LNKLST statement in the order shown in the syntax diagrams.
Syntax Format of LNKLST DEFINE:
   LNKLST DEFINE NAME(name)
          [COPYFROM(name)]
          [NOCHECK] 
Syntax Format of LNKLST ADD:
   LNKLST ADD NAME(name) DSNAME(dsname)
          [{VOLUME|VOLSER|VOL}(name)]
          [{ATBOTTOM|ATTOP|AFTER(dsname)}]
          [CONCAT(NOCHECK|CHECK)] 
Syntax Format of LNKLST DELETE:
   LNKLST DELETE NAME(name) DSNAME(dsname) 
Syntax Format of LNKLST UNDEFINE:
   LNKLST UNDEFINE NAME(name) 
Syntax Format of LNKLST TEST:
   LNKLST TEST NAME(name) MODNAME(modname) 
Syntax Format of LNKLST ACTIVATE:
   LNKLST ACTIVATE NAME(name) 
Syntax Format of LNKLST UPDATE:
   LNKLST UPDATE {JOB(jobname)}
                 {ASID(asid)}
                 [DELAY(delay)]
Syntax Format of UNALLOCATE:
   LNKLST UNALLOCATE 
Syntax Format of ALLOCATE:
   LNKLST ALLOCATE 
LNKLST
Statement type indicating that an action is to be performed for a LNKLST set. LINKLIST, LINKLST, LNK, or LNKLIST can be specified as an alternative to LNKLST.
DEFINE
Specifies the definition of a LNKLST set (a set of ordered data sets for the LNKLST concatenation).
Default: None
ADD
Indicates that you want to add a data set to the specified LNKLST set.

IBM suggests using the COPYFROM parameter,when feasible, to define a LNKLST set instead of defining the set and then using LNKLST ADD statements to add individual data sets. The use of COPYFROM reduces system processing time. Use the LNKLST ADD statement to add a new data set to a specific LNKLST set.

You cannot add a data set to the current or active LNKLST set. If a data set has been migrated, the request waits until the data set is available. For information about the maximum number of data sets you can define to a LNKLST set, see Concatenating data sets to the LNKLST concatenation.

Default: None.
DELETE
Indicates that you want to delete a data set from the specified LNKLST set. You cannot delete a data set from the current or active LNKLST set.
Default: None.
UNDEFINE
Indicates that you want to remove the definition of the LNKLST set from the system. You cannot remove the definition of the current LNKLST set, another LNKLST set that is being actively used by a job or address space, or the LNKLST defined at IPL through LNKLSTxx and the LNK parameter of IEASYSxx.
Note: You cannot specify this parameter at IPL. It is valid only when you specify SET PROG=xx.

See Removing or compressing a data set in an active LNKLST set for information about LLA management of LNKLST sets.

Default: None.
TEST
Indicates that you want to locate a specific routine associated with a data set in the LNKLST set. If the system locates the data set, the system indicates the name of the data set. If a data set has been migrated, the request waits until the data set is available.
Note: You cannot specify this parameter at IPL. It is valid only when you specify SET PROG=xx.
ACTIVATE
Indicates that you want to activate the specified LNKLST set as the LNKLST concatenation. If you use SETPROG LNKLST or SET PROG=xx to activate another LNKLST set after IPL, jobs or address spaces that are still active continue to use the previous current LNKLST set. To associate a job or an address space with the current LNKLST set after IPL, you can use the UPDATE option on the SETPROG LNKLST command or the LNKLST UPDATE statement specified in the member for SET PROG=xx.

If a data set in the LNKLST set has been migrated before the LNKLST set is activated, the request waits until the data set is available.

When the ACTIVATE request completes, the system issues an event (ENF) signal (event code 52). Depending on the options specified in SMFPRMxx, whenever a LNKLST set is activated, the system records SMF record type 90 subtype 29. See SMFPRMxx (system management facilities (SMF) parameters).

You must have a LNKLST ACTIVATE statement defined in PROGxx when you use PROG=xx to activate the LNKLST set at IPL.

See Removing or compressing a data set in an active LNKLST set for information about LLA management of LNKLST sets.

UPDATE
Indicates that the system is to update an address space or the specified job or jobs to use the current LNKLST set. Otherwise, if the job is using another LNKLST set when the current LNKLST set is activated, it will continue to use the previous LNKLST set until it completes operations. When the job completes and restarts, the job then uses the data sets defined in the new currently active LNKLST set.

See Removing or compressing a data set in an active LNKLST set for information about LLA management of LNKLST sets.

Note:
  1. You cannot specify this parameter at IPL. It is valid only when you specify SET PROG=xx.
  2. Be careful when you use UPDATE. Updating jobs in an address space while it is fetching a module can cause the fetch to fail or result in fetching a copy that is not up-to-date. The system does not attempt to verify the validity of the data for the update function.
UNALLOCATE
Indicates that you want to undo all existing allocations obtained while processing active LNKLST sets. This also releases the SYSDSN ENQ.
Note:
  1. Make sure that you do not delete or move the LNKLST data sets while the allocations are not in effect (from the time that you use the UNALLOCATE request until the time that you use the ALLOCATE request).
  2. Once you have completed everything associated with the UNALLOCATE, you must specify LNKLST ALLOCATE to re-obtain the remaining ENQs.
ALLOCATE
Indicates that you want to re-obtain the allocation (and SYSDSN ENQ) for every data set in every active LNKLST.
NAME(name)
The name of the LNKLST set that you want to specify. Naming conventions are as follows:
  • You can specify from 1 to 16 characters for name.
  • You can use alphanumerics, underscores, periods, and #, $, or @.
  • Do not use imbedded blanks.
  • Do not use the names CURRENT or IPL. The system uses CURRENT to mean the current LNKLST set and IPL to mean LNKLST information specified in SYS1.PARMLIB member LNKLSTxx.
  • Do not begin the name with SYS. SYS is reserved for IBM® use.
Example: NAME(MY.LNKLST.SET)
[COPYFROM(name)]
The name of an existing LNKLST set from which to initialize the LNKLST set you are defining. If you specify CURRENT for the name, the system uses the current LNKLST set.
Example:
LNKLST DEFINE NAME(MY.LNKLST.SET)
COPYFROM(SYSTEM.ACCT.DATA)
Example: If you omit this parameter, the system initializes the LNKLST set with the LINKLIB, MIGLIB, CSSLIB, LINKLIBE, and MIGLIBE data sets in that order.
[NOCHECK]
Indicates that the system does not check to determine if the specified LNKLST set contains SYS1.LINKLIB, SYS1.MIGLIB, SYS1.CSSLIB, SYS1.SIEALNKE, SYS1.SIEAMIGE before allocating the LNKLST concatenation.
Note: Use NOCHECK with caution. NOCHECK is available ONLY to allow the creation of a LNKLST without SYS1.LINKLIB/MIGLIB/CSSLIB/LINKLIBE/MIGLIBE. NOCHECK should be used ONLY when needed (such as if the pack has a problem).
For the following code to work, you must IPL using the SYSLIB statement to define an alternate LINKLIB data set. The LINKLIB, MIGLIB, CSSLIB, LINKLIBE, and MIGLIBE data sets are all determined during IPL and can never be changed or removed from the LNKLST. To create a LNKLST without those data sets, IPL specifying other data sets (empty PDSs can be used) with the PROGxx SYSLIB statement. The PROGxx statement would contain the following:
     SYSLIB LINKLIB(SYS2.LINKLIB)
     SYSLIB MIGLIB(SYS2.MIGLIB)
     SYSLIB CSSLIB(SYS2.CSSLIB)
     SYSLIB LINKLIBE(SYS2.SIEALNKE) 
     SYSLIB MIGLIBE(SYS2.SIEAMIGE)

Then IPL with prog=(xx) or prog=(xx,00).

You might use NOCHECK after you have modified SYS1.LINKLIB and want to compress SYS1.LINKLIB. The following procedure is an example:

  1. Create a data set that contains a copy of SYS1.LINKLIB.
  2. Define a LNKLST set that has the same name as the current LNKLST set but includes the replacement for SYS1.LINKLIB. Specify NOCHECK when defining this LNKLST.
  3. Activate the LNKLST set you have defined with the replacement copy of SYS1.LINKLIB.
  4. Stop the library lookaside (LLA) procedure. (See "Starting LLA" and "Modifying LLA" in z/OS MVS Initialization and Tuning Guide.)
  5. Use SET PROG=xx with LNKLST UPDATE or SETPROG LNKLST UPDATE to specify that jobs use the LNKLST set. At this point, SYS1.LINKLIB is not active.
  6. Compress SYS1.LINKLIB.
  7. Use SET PROG=xx with LNKLST ACTIVATE or SETPROG LNKLST ACTIVATE to activate the original LNKLST set that includes SYS1.LINKLIB.
  8. Use SET PROG=xx with LNKLST UPDATE or SETPROG LNKLST UPDATE to specify that jobs use the original LNKLST set and SYS1.LINKLIB.

DSNAME(dsname)
The 44-character name of a data set or library that you want to add to the specified LNKLST set or delete from the specified LNKLST set. DSN, LIB, LIBRARY are accepted synonyms for this parameter.

The data set can be a PDS or a PDSE. (IBM suggests that you use PDSEs because of the limitations on the number of extents for a LNKLST concatenation. See Concatenating data sets to the LNKLST concatenation.) For the LNKLST created at IPL, the dsname cannot be an alias.

Data sets to be added can be SMS-managed or non SMS-managed. After the system determines the volume and the SMS status of the data set, the following actions result in an error when the system tries to allocate the LNKLST set:
  • If the data set in the LNKLST set changes status from SMS-managed to non SMS-managed, or from non-SMS managed to SMS-managed.
  • If a non SMS-managed data set in the LNKLST set is deleted and moved to another volume.

In either case, to add the data set after the change has occurred, you must first delete the data set from the LNKLST set and add it again.

[{VOLUME|VOLSER|VOL}(name)]
The name of the volume on which the data set resides. The data set must be cataloged. If the volume does not match the name in the catalog, the ADD request fails. The name can be from 1 to 6 characters.

You can use a value of ****** to indicate that the data set is located on the current SYSRES volume. You can use a value of "*MCAT*" to indicate that the data set is located on the volume containing the master catalog.

When the data set is cataloged in a user catalog instead of the master catalog, you can use this parameter. If a data set is cataloged in a user catalog, but not in the system master catalog, you must specify the VOLSER of the volume on which the data set resides. See Cataloging LNKLST data sets.

Default: If you omit this parameter, the system uses the volume indicated in the catalog.
[{ATBOTTOM|ATTOP|AFTER(dsname)}]
Indicates where in the LNKLST set you want to place the data set.

ATBOTTOM indicates that you want to place the data set specified on the DSNAME parameter at the bottom of the list of data sets in the LNKLST set.

ATTOP indicates that you want the data set specified on the DSNAME parameter to be added to the beginning of the LNKLST set. The system always places the LINKLIB, MIGLIB, CSSLIB LINKLIBE, and MIGLIBE data sets in that order at the beginning of every LNKLST set in the LNKLST concatenation. If you use ATTOP, the system always places the data set after the CSSLIB data set.

AFTER(dsname) indicates that the system places the data set specified on the DSNAME parameter after the data set specified by dsname. You cannot use this parameter to place a data set after the LINKLIB, MIGLIB, CSSLIB LINKLIBE, or MIGLIBE data set in the LNKLST set. Instead, use ATTOP if you want to place the data set immediately after the CSSLIB data set.

Default: If you omit ATBOTTOM, ATTOP, or AFTER, the system adds the data set to the bottom of the LNKLST set.
[CONCAT(NOCHECK|CHECK)]
Indicates whether to check to see if the concatenation defined by the LNKLST set is full.

NOCHECK indicates that you do not want to check to see if the concatenation is full. If the concatenation is full, it will be detected when the LNKLST set is activated.

CHECK indicates that you want to check to see if the concatenation is full. This implies that all the data sets in the LNKLST set must be concatenated. Specification of CHECK causes system processing to take longer.

Default: NOCHECK
MODNAME(name)
MODNAME specifies the name of a routine or module to be located in the LNKLST set. MODULE and MOD can be used as synonyms for MODNAME.
LNKLST TEST NAME(MY.LNKLST.SET) MODNAME(MYMODULE)
{JOB(jobname)|ASID(asid)}
Specifies the name of the job or address space.

JOB specifies the name of the job or jobs specified by jobname. You can use wildcard characters (? or *) for jobname. LNKLST UPDATE updates any job whose name matches the specified criteria. The system compares jobname to the name of any initiated job or jobs that match, or to the name of the address space.

ASID specifies the address space ID for the job.

LNKLST UPDATE JOB(MYJOB)
DELAY(delay)
Indicates the number of seconds to delay the completion of the UPDATE operation. The number of seconds can be from 0 - 255.

The LNKLST statement is updated immediately, but the processing for closing and unallocating LNKLST data sets that are no longer in use is delayed by the specified amount of time.