The LLACOPY macro obtains new directory entries from DASD and uses them to synchronously refresh the LLA directory. LLACOPY uses the BLDL macro to obtain the directory entries, and returns them to the caller even if LLA is not active. LLACOPY requires the same input parameters as BLDL: an open DCB and a BLDL list of member names. If the directory entry for any of the member names is not found, that member will be removed from LLA's directory as part of the refresh.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state with any key |
Dispatchable unit mode: | Task |
Cross memory mode: | PASN=HASN=SASN |
AMODE: | 24- or 31-bit |
ASC mode: | Primary |
Interrupt status: | Enabled for I/O and external interrupts |
Locks: | No locks held |
Control parameters: | None |
None.
The storage key of the parameter list and the storage key of the BLDL list must be the same as the PSW key in which the caller runs.
The caller must have UPDATE access to the data set in either the FACILITY class or the DATASET class. LLACOPY first checks to see if the caller is authorized in the FACILITY class. The resource name used in this check is in the form CSVLLA.data_set_name. If the caller is authorized (or if there is no profile protecting the resource name), LLACOPY completes successfully. If the caller is not authorized, LLACOPY then checks to see if the caller is authorized in the DATASET class. If the caller is authorized, LLACOPY completes successfully. Otherwise, LLACOPY fails, and an SMF record may be created by the external security product.
Before issuing the LLACOPY macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
LLACOPY eliminates the reduced fetch I/O benefit of LLA's module caching until the module is again staged to LLA's VLF data space.
An additional cost of using LLACOPY for LLA-managed data sets is that LLA serializes the use of the LLA directory. So, for the duration of the LLACOPY, the LLA directory cannot be changed by another LLACOPY or LLA command.
The standard form of the LLACOPY macro is written as follows:
Syntax | Description |
---|---|
name | name: Symbol. Begin name in column 1. |
␢ | One or more blanks must precede LLACOPY. |
LLACOPY | |
␢ | One or more blanks must follow LLACOPY. |
DCB=dcb addr | dcb addr: RX-type address or register (2) - (12). |
,BLDLLIST=list addr | list addr: RX-type address or register (2) - (12). |
,RETCODE=ret code | ret code: RX-type address or register (2) - (12). |
,RSNCODE=rsn code | rsn code: RX-type address or register (2) - (12). |
,MF=S | |
The parameters are explained as follows:
LLACOPY might abnormally terminate with abend code X'023'. See z/OS MVS System Codes for an explanation of the reason codes and programmer responses for X'023'.
The return and reason codes for LLACOPY are the same as those for the BLDL macro. When control returns from LLACOPY, GPR 15 (and ret code, if you coded RETCODE) contains one of the following hexadecimal return codes. If you receive a return code of 8, GPR 0 (and rsn code, if you coded RSNCODE) contains one of the following hexadecimal reason codes.
Return Code | Reason Code | Meaning and Action |
---|---|---|
00 | None | Meaning: LLACOPY found all requested directory
entries and copied the new entries into the caller's BLDL list. If
LLA was available, LLACOPY refreshed the LLA directory for the given
members in the data set concatenation that the open DCB defined. Action: None. |
04 | None | Meaning: LLACOPY did not find all the
requested directory entries, and might not have found any entries.
It copies into the caller's BLDL list entries that it did find.
If LLA was available, LLACOPY refreshed the LLA directory for the
entries that it found, and removed from the LLA directory any members
whose directory entries it did not find. Action: Ensure that each member name in the caller's BLDL list is in one of the data sets described by the caller's DCB. |
08 | 00 | Meaning: Environmental error. LLACOPY detected
a permanent I/O error when trying to search the directory. LLACOPY
did not update the BLDL list or refresh the LLA directory. Action: Contact your system programmer. The error could be caused by a software or hardware problem. |
08 | 04 | Meaning: Environmental error. LLACOPY did
not have sufficient virtual storage in the primary address space to
complete. LLACOPY did not update the BLDL list or refresh the LLA
directory. Action: Contact your system programmer, who can ensure that sufficient virtual storage is available. |
LLACOPY BLDLLIST=B_LIST,DCB=USERDCB,
RETCODE=RETNCODE,RSNCODE=RSONCODE
USERDCB DCB DDNAME=USERLIB,MACRF=R,DSORG=PO
B_LIST DS 0F BLDL LIST
DC H'01' NUMBER OF ENTRIES
DC H'76' LENGTH OF ENTRY
MODNAME DC CL8'ABC ' MODULE NAME
DS CL68 DIRECTORY INFO FILLED IN BY LLACOPY
RETNCODE DS F
RSONCODE DS F