Description

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.

Environment

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

Programming requirements

None.

Restrictions

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.

Input register information

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.

Output register information

When control returns to the caller, the general purpose registers (GPRs) contain:
Register
Contents
0-1
If GPR 15 contains a return code of X'8', GPR 0 contains a reason code; otherwise, used as a work register by the system
2-14
Unchanged
15
Return code
When control returns to the caller, the access registers (ARs) contain:
Register
Contents
0-1
Used as work registers by the system
2-13
Unchanged
14-15
Used as work registers by the system

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.

Performance implications

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.

Syntax

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  
   

Parameters

The parameters are explained as follows:

DCB=dcb addr
Specifies the address of an open DCB that LLACOPY uses to issue the BLDL macro to obtain new directory entries.
,BLDLLIST=list addr
Specifies the address of a list of member names in the format required by the BLDL macro.
,RETCODE=ret code
Specifies the location where the system is to store the return code. The return code is also in general purpose register (GPR) 15.
,RSNCODE=rsn code
Specifies the location where the system is to store the reason code. If the return code is X'8', the reason code is also in GPR 0.
,MF=S
Specifies the standard form of LLACOPY. The standard form places the parameters into an in-line parameter list.

ABEND codes

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'.

Return and reason codes

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.

Table 1. Return and Reason Codes for the LLACOPY Macro
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.

Example

Request LLACOPY to retrieve and update module ABC from library USERLIB. USERLIB is opened by the application program. The DCB that was used to OPEN the library is also used in the LLACOPY.
            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