Abstract for MVS Programming: Authorized Assembler Services Guide
Summary of changes
Summary of changes for z/OS Version 2 Release 1 (V2R1) as updated February 2015
Summary of changes in z/OS Version 2 Release 1 (V2R1), as updated December 2013
z/OS Version 2 Release 1 summary of changes
Introduction
Subtask creation and control
Creating a new task (ATTACH or ATTACHX macro)
Ensuring that a process completes (STATUS macro)
Communicating with a program (EXTRACT, QEDIT)
Providing an EXTRACT answer area
Program management
Residency and addressing mode of programs
Placement of modules in storage
Addressing mode
Specifying where the module is to be loaded (LOAD macro)
Synchronous exits (SYNCH or SYNCHX macro)
Using checkpoint/restart
Using re-entrant modules
Using LLACOPY to refresh LLA directories
Changing the LNKLST concatenation
Changing the current LNKLST set
Monitoring dynamic LPA processing
Listing contents of dynamic LPA with CSVDLPAU
Invoking CSVDLPAU
CSVD002W
Serialization
Choosing a serialization service
Providing ENQ resource information on DISPLAY GRS command
Locking
Categories of locks
Types of locks
Examples of lock types
Locking hierarchy
CML lock considerations
Obtaining, releasing, and testing locks (SETLOCK)
Disabled/enabled state for obtain
Disabled/enabled state for release
Suspend lock instrumentation data
Using the must-complete function (ENQ/DEQ)
Characteristics of the must-complete function
Programming notes
Shared direct access storage devices (shared DASD)
Volume/device status
Volume handling
Macros used with shared DASD (RESERVE, EXTRACT, GETDSAB)
Releasing devices
Preventing interlocks
Timing contention
Volume assignment
Program libraries
Using different serialization techniques for the same volume
Finding the UCB address for the RESERVE macro
Using the GETDSAB macro to find the UCB address
Procedures
Using the IEFDDSRV macro to find the UCB address
Procedures
Using the EXTRACT macro to find the UCB address
Procedures
Using the DEB and the DCB to find the UCB address
Procedures
RESDEQ subroutine using IEFDDSRV
Serializing parallel tasks (WAIT and POST)
Asynchronous cross memory POST
When LINKAGE=SYSTEM is not specified
When LINKAGE=SYSTEM is specified
Synchronous cross memory post
Bypassing the POST routine
Waiting for event completion (EVENTS)
Writing POST exit routines
Identifying and deleting exit routines
Initializing extended ECBs and ECB extensions
POST interface with exit routines
Re-entry to POST from a POST exit
Branch entry to the POST service routine
Branch entry to the WAIT service routine
Serializing RB processing
Suspending an RB until an event completes (SUSPEND)
Scenario 1:
Scenario 2:
Considerations when suspending an RB
General considerations
RB=PREVIOUS considerations
RB=CURRENT considerations
Using the CALLDISP macro
Resuming execution of a suspended RB
Synchronizing unit of work (tasks or SRBs)
Pause elements and pause element tokens
Using the services
PE ownership and cleanup
Global resource serialization latch manager
Overview
How to use the callable services
Planning to use the latch manager callable services
Including a latch manager interface definition file (IDF)
Loading the linkage assist routines
Providing recovery for the latch manager
Steps for providing recovery for the latch manager
FRR tasks
Program mainline example
FRR example
Guide to the latch manager callable services
Creating a latch set (ISGLCRT and ISGLCR64 services)
Specifying the number of latches in a latch set
Identifying latch sets
Specifying a latch's identity or usage
Obtaining a latch (ISGLOBT and ISGLOB64 services)
Specifying the number of a requested latch
Specifying an obtain option
Summary of results of calls to Latch_Obtain
Releasing a latch (ISGLREL and ISGRE64 services)
Specifying a release option
Summary of results of calls to Latch_Release
Purging one or more latches (ISGLPRG and ISGLPR64 services)
Purging one or more latches in a group of latch sets for a group of requestors (ISGLPBA and ISGLPB64 services)
Purging groups of latch sets
Reporting system characteristics
Collecting information about resources and their requestors (ISGQUERY and GQSCAN macros)
How GQSCAN returns resource information
How area size determines the information GQSCAN returns
How scope and token values determine the information GQSCAN returns
How global resource serialization determines the scope of an ENQ or RESERVE request
Using the SRM reporting interface to measure subsystem activity
Obtaining dispatchability data about address spaces (IEAMRMF3 macro)
Tracing applications using component trace
Planning an application trace
Trace activities
Executable macros for component tracing
Operator commands for component tracing
IPCS subcommands for component tracing
Exit routines for component tracing
Data areas and mapping macros for component tracing
Parmlib members for component tracing
When to trace
Where and what to trace
Creating trace buffers
Using multiple traces
Setting up user-defined options
Starting, stopping and changing the trace
Using parmlib members
Externalizing trace data in a dump
Externalizing trace data through the external writer
Coding macros for application traces
Using the CTRACE macro to define the application to component trace
Using CTRACECS to manage trace buffer status
Deleting the application from component trace
Coding a start/stop exit routine
Exit routine environment
Exit routine processing
Programming considerations
Start/stop exit routine communications
Entry specifications
Return specifications
Coding a display trace exit routine
Exit routine environment
Exit routine processing
Programming considerations
Exit routine communications
Entry specifications
Return code specifications
Creating trace entries
Understanding the fields in a CTE
Organizing variable data in CTEs
Communication
Interprocessor communication
Writing and Deleting Messages (WTO, WTOR, and DOM Macros)
Routing the Message
Altering Message Text
Writing a Multiple-Line Message
Embedding Label Lines in a Multiple-Line Message
Issuing a Message and Loading a Wait State (WTO and LOADWAIT Macros)
Using the Wait State Macro (LOADWAIT)
Non-restartable and Restartable Wait States
Invoking the LOADWAIT Macro
Example with All Wait State Information Known at Assembly Time
Example with Wait State Information Not Known at Assembly Time
Deleting Messages Already Written
Writing to the System Log
Issuing an internal START or REPLY command (MGCR)
Issuing operator commands from a program (MGCRE macro)
Issuing a command response message
Rules for a command response WTO
Old code conversion
Where to get the information
CIB control block (mapped by IEZCIB)
CSCB control block (mapped by IEECHAIN)
CMDX control block (mapped by IEZVX101)
SSCM control block (mapped by IEFSSCM)
Assembler example with CIB control block
Assembler example with CMDX control block, multi-line WTO
Controlling command flooding (IEECMDS macro)
Routing commands in a sysplex (CPF macro)
Assigning a prefix
Persistence of the prefix
What is an extended MCS console?
Activating an extended MCS console
Specifying console attributes
Storing messages directed to an extended MCS console
Controlling message traffic directed to an extended MCS console
Receiving messages and command responses, and issuing commands
Receiving messages and command responses
What is the message data block (MDB)
Receiving the hardcopy message set
Issuing commands
What to do if message queuing stops
Deactivating extended MCS consoles
Switching to another console
Removing extended MCS consoles
Example of managing an extended MCS console session
Listening for system events
Establishing a listen request
Qualifying events
QUAL example
nn filtering events
Coding the listener user exit routine
Non-SRBEXIT routine
SRBEXIT routine
Passing parameters to a listener user exit routine
Ending the listener user exit routine
ENF event codes and meanings
ENF sample programs
SMFLSTEN - Sample ENF listener
Issue listen request without qualifier
Issue listen request with QUAL=ENF37Q00
Sample ENFREQ DELETE request
Module declarations
SMFLSTAL - Sample ENF listener user exit routine
Module declarations
SMFLST00 - Sample ENF listener user exit routine
Listening for global resource serialization-related system events
Monitoring contention changes
Listening for RNL change data
Listening for other global resource serialization events
Using a service request block (SRB)
What is an SRB?
Why would you use an SRB?
Scheduling and managing SRBs
Specifying the addressing environment of the SRB routine
Using the ENV parameter on IEAMSCHD
Using the MODE parameter on SCHEDULE
Characteristics and restrictions of SRB routines
Implications of running in SRB mode
Environment of the SRB routine at entry
Scheduling an SRB (IEAMSCHD or SCHEDULE macro)
Scheduling an SRB using IEAMSCHD
Scheduling an SRB using SCHEDULE
Initializing the SRB
Purging an SRB (PURGEDQ macro)
Identifying the SRB to be purged
The resource manager termination routine (RMTR)
Scenario of scheduling and purging an SRB
Example 1
Example 2
Serializing SRB processing
Suspending an SRB until an event completes (SUSPEND macro)
Suspend exit routine
Resuming or purging a suspended SRB (RESUME macro)
Scenario of suspending and resuming an SRB
Recovery responsibilities for a suspended SRB
Terminating a preemptable SRB
Calling an SRB to run synchronously
Transferring control for SRB processing (TCTL macro)
Virtual storage management
Allocating and freeing virtual storage (GETMAIN, FREEMAIN and STORAGE macros)
Comparison of GETMAIN/FREEMAIN macros with the STORAGE macro
Specifying branch entry to GETMAIN and FREEMAIN services
Obtaining storage in another address space
Obtaining and using disabled reference (DREF) storage
Using cell pool services (CPOOL macro)
Selecting the right subpool for your virtual storage request
Program authorization
Selecting private or common storage
Managing private storage allocation
Selecting fetch protected or non-fetch protected storage
Selecting the storage key
Selecting pageable, DREF, or fixed storage
Selecting storage persistence
Selecting central storage backing
Additional considerations
Making the final selection
The subpool table
Tracking virtual storage allocation (CPOOL BUILD, GETMAIN, and STORAGE OBTAIN macros)
Obtaining information about the allocation of virtual storage (VSMLIST)
Using the VSMLIST work area
Allocated storage information
Free space
Unallocated storage information
Using IARQD — The page status interface routine
Decide which entry point you want to use
Obtain storage and load register 1
IARQDUMP
IARQDSPD
The delimiter page
Use NUCLKUP to find the address of the entry point you want to use
Example
Input register information
Invoke the entry point
Accessing the scheduler work area
Using the IEFQMREQ and the SWAREQ macros
The SWAREQ macro
How to invoke SWAREQ
SWAREQ summary
Example of using SWAREQ
Return codes and reason codes from SWAREQ
UNAUTH=YES
UNAUTH=NO
The IEFQMREQ macro
How to invoke IEFQMREQ
Example of using IEFQMREQ
Return codes and reason codes from IEFQMREQ
The virtual lookaside facility (VLF)
Deciding when to use VLF
Planning to use VLF
Data objects and classes
Private data sets
Cross-system sharing
When VLF notification is automatic
When VLF notification is not automatic
Data integrity
Recovery
Using the VLF macros
Defining a class of VLF objects
Identifying an end user to VLF
Retrieving a VLF object
Creating a VLF object
Using REPLACE
Notifying VLF of a change
Removing a VLF end user
Purging a VLF class
Modifying VLF
Data-in-virtual
When to use data-in-virtual
Factors affecting performance
Creating a linear data set
Using the services of data-in-virtual
Identify
Access
Map
Save, Savelist, and Reset
Unmap
Unaccess
Unidentify
The IDENTIFY service
The ACCESS service
The MAP service
The SAVE service
The SAVELIST service
The RESET service
Effect of RETAIN mode on RESET
The UNACCESS and UNIDENTIFY services
Sharing data in an object
DIV macro programming examples
Executing an application
Processing a data-in-virtual object
Sharing application data (name/token callable services)
Levels for name/token pairs
Determining what your program can do with name/token pairs
Checking authorization when retrieving a token
Deciding what name/token level you need
Primary-level name/token pair
System-level name/token pair
Owning and deleting name/token pairs
Example of using the name/token services
Processor storage management
Fixing/freeing virtual storage contents
Protecting a range of virtual storage pages
PGFIX/PGFREE completion considerations
Input to page services
Virtual subarea list (VSL)
Page service list (PSL)
Short page service list (SSL)
Branch entry to page services
Cross memory mode
Non-cross memory mode
Sharing data in virtual storage (IARVSERV macro)
Understanding the concepts of sharing data with IARVSERV
Storage you can use with IARVSERV
Obtaining storage for the source and target
Defining storage for sharing data and access
Changing storage access
How to share and unshare data
Accessing data in a sharing group
Example of sharing storage with IARVSERV
Use with data-in-virtual (DIV macro)
Use with page services (PGSER macro)
Diagnosing problems with shared data
Converting a central to virtual storage address (IARR2V macro)
The nucleus
Linking to routines in the DAT-OFF nucleus (DATOFF)
Using system provided DAT-OFF routines (DATOFF)
INDMVCL0 and INDMVCL64 - Move character long
INDMVCLK and INDMVCL64 - Move character long in user key
INDXC0 and INDXC64 - Exclusive OR
INDCDS and INDCDS64 - Compare double and swap
Writing user DAT-OFF routines
Placing user DAT-OFF routines in the DAT-OFF nucleus
Obtaining information about CSECTs in the DAT-ON nucleus (NUCLKUP)
Customizing the nucleus region
The NMLDEF macro
Removing existing routines from IEANUC0x
Providing recovery
Understanding general recovery concepts
Deciding whether to provide recovery
Understanding errors in MVS
Understanding recovery routine states
Understanding the various routines in a recovery environment
Mainline routine
Recovery routine
Retry routine
Resource manager
Choosing the appropriate recovery routine
Choosing an ESTAE-type recovery routine
Choosing an FRR
Floating point implications
Summary of recovery routine states
Understanding recovery routine options
Understanding how routines in a recovery environment interact
Writing recovery routines
Understanding what recovery routines do
Saving the return address to the system
Checking for the SDWA
Establishing addressability to the parameter area
Checking important fields in the SDWA
Checking the contents of the parameter area
Saving serviceability data
Recording in the Logrec data set
Requesting a dump
Correcting or minimizing the error
Deciding to retry or percolate
Recovery routines that retry
What the retry routine does
Recovery routines that percolate
Understanding the means of communication
Setting up, passing, and accessing the parameter area
Deciding what to include in the parameter area
Passing the parameter area
Accessing the parameter area
Using the SDWA
Updating the SDWA
Recording the SDWA in the logrec data set
Using the SETRP macro to update the SDWA
Symptom data required in the SDWA for dump suppression
Important fields in the SDWA
Special considerations for ESTAE-type recovery routines
RB considerations
Linkage stack considerations
Recovery routine
Retry routine
Deactivating an ESTAE-type recovery routine
Outstanding I/Os at the time of failure
Additional considerations specific to ESTAE-type recovery routines
Using ARRs
Special considerations for FRRs
Understanding the recovery environment
Register contents
Register contents on entry to a recovery routine
Register contents on return from a recovery routine
Register contents on entry to a retry routine
Retry from an ESTAE-type recovery routine
Retry from an FRR
Other environmental factors in recovery
Environment on entry to an ESTAE-type recovery routine
Authorization
SDWA storage key
Dispatchable unit mode
Cross memory mode
AMODE
ASC mode
Interrupt status
DU-AL
Locks
Program mask
Condition of the linkage stack
AX
EAX
Restricted environments
Environment on entry to a retry routine from an ESTAE-type recovery routine
Authorization
SDWA storage key
Dispatchable unit mode
Cross memory mode
AMODE
ASC mode
Interrupt status
DU-AL
Locks
Program mask
Condition of the linkage stack
AX
EAX
Summary of environment on entry to an ESTAE-type recovery routine and its retry routine
Environment on entry to an FRR
Authorization
SDWA storage key
Dispatchable unit mode
Cross memory mode
AMODE
ASC mode
Interrupt status
DU-AL
Locks
Program mask
Condition of the linkage stack
AX
EAX
Summary of environment on entry to an FRR
Restricted environments
Environment on entry to a retry routine from an FRR
Authorization
SDWA storage key
Dispatchable unit mode
Cross memory mode
AMODE
ASC mode
Interrupt status
DU-AL
Locks
Program mask
Condition of the linkage stack
AX
EAX
Linkage stack at time of retry
Understanding recovery through a coded example
Understanding advanced recovery topics
Providing recovery with minimal processor overhead (FESTAE macro)
Invoking RTM
Using the CALLRTM macro
TYPE=ABTERM
TYPE=MEMTERM
TYPE=SRBTERM
Using the ABEND macro
Providing multiple recovery routines
Percolation for the same unit of work
SRB-to-task percolation
Providing recovery for recovery routines
Providing recovery for multitasking programs
Using resource managers
Resource manager execution environment
Environment for ROUTINE=(BRANCH,routine)
Environment for ROUTINE=(LINK,routine)
Environment for ROUTINE=(PC,routine)
Installation-written resource managers
Adding an installation-written resource manager
Dynamically
At IPL
The resource manager parameter list
Register use
Processing sequence
Using STAE/STAI routines
Processing program interruptions (SPIE, ESPIE)
Interruption types
Dumping virtual storage (SDUMPX, SDUMP, and IEATDUMP macros)
SVC dumps
Deciding when to request an SVC dump
Understanding the type of SVC dump that MVS produces
Coding parameters that produce a synchronous dump
Designing a program to handle a synchronous dump
Coding parameters that produce a scheduled dump
Designing a program to handle a scheduled dump
Synchronizing your program through an ECB or SRB
Designing your program to run asynchronously with dump processing
Identifying the data set to contain the dump
Defining the contents of the dump
Identifying the address spaces or data spaces to be dumped
Customizing the contents of the SVC dump
Requesting the summary dump
Suppressing SVC dumps that duplicate previous SVC dumps
Providing symptom information through the SDUMPX macro
Requesting dumps on other systems in a sysplex
Using dynamic exits to control dumps in a sysplex
IEASDUMP.QUERY dynamic exit
Installing IEASDUMP.QUERY
IEASDUMP.QUERY dynamic exit environment
IEASDUMP.QUERY dynamic exit recovery
IEASDUMP.QUERY dynamic exit processing
Registers at entry to IEASDUMP.QUERY dynamic exit
Parameter area at entry to IEASDUMP.QUERY dynamic exit
Registers at exit from IEASDUMP.QUERY dynamic exit
Disassociating IEASDUMP.QUERY
IEASDUMP.GLOBAL and IEASDUMP.LOCAL dynamic exits
Installing IEASDUMP.GLOBAL and IEASDUMP.LOCAL
IEASDUMP.GLOBAL and IEASDUMP.LOCAL dynamic exit environment
IEASDUMP.GLOBAL and IEASDUMP.LOCAL dynamic exit
IEASDUMP.GLOBAL and IEASDUMP.LOCAL dynamic exit processing
Registers at entry to IEASDUMP.GLOBAL or IEASDUMP.LOCAL dynamic exit
Parameter area at entry to IEASDUMP.GLOBAL or IEASDUMP.LOCAL dynamic exit
Registers at exit from IEASDUMP.GLOBAL or IEASDUMP.LOCAL dynamic exit
Disassociating IEASDUMP.GLOBAL and IEASDUMP.LOCAL
IEASDUMP.SERVER dynamic exit
Installing IEASDUMP.SERVER
IEASDUMP.SERVER dynamic exit environment
IEASDUMP.SERVER dynamic exit recovery
IEASDUMP.SERVER dynamic exit processing
Registers at entry to IEASDUMP.SERVER dynamic exit
Parameter area at entry to IEASDUMP.SERVER dynamic exit
Registers at exit from IEASDUMP.SERVER dynamic exit
Disassociating IEASDUMP.SERVER
Transaction dumps
Deciding when to request a transaction dump
Understanding the type of transaction dump that MVS produces
Identifying the data set to contain the dump
Defining the contents of the dump
Customizing the contents of the transaction dump
Requesting the summary dump
Suppressing transaction dumps that duplicate previous transaction dumps
Providing symptom information through the IEATDUMP macro
Requesting dumps of other systems
Protecting the system
System integrity
Documentation on system integrity
Installation responsibility
Elimination of potential integrity exposures
User-supplied addresses for user storage areas
User-supplied addresses for protected control blocks
Resource identification
SVC routines calling SVC routines
Control program and user data accessibility
Fetch protection provided for the PSA
Control program extensions
Authorized programs
Using APF to restrict access to system functions
Guidelines for using APF
APF-authorized libraries
APF-authorized library list
Requesting APF list services (CSVAPF macro)
Restricting the use of SVC routines
Restricting load module access
Assigning APF authorization to a load module
Overriding an authorization code - SETCODE statement
Authorization results under various conditions
Resource Access Control Facility (RACF)
System Authorization Facility (SAF)
MVS router
MVS router exit
Interface to the MVS router (RACROUTE)
Defining a resource (RACROUTE REQUEST=DEFINE)
Identifying a user (RACROUTE REQUEST=VERIFY and REQUEST=VERIFYX)
RACROUTE REQUEST=VERIFY
RACROUTE REQUEST=VERIFYX
Checking resource authorization (RACROUTE REQUEST=AUTH and REQUEST=FASTAUTH)
RACROUTE REQUEST=AUTH
RACROUTE REQUEST=FASTAUTH
Retrieving and encoding data (RACROUTE REQUEST=EXTRACT)
Building in-storage profiles (RACROUTE REQUEST=LIST)
Checking auditing options (RACROUTE REQUEST=AUDIT)
Checking user authority (RACROUTE REQUEST=DIRAUTH)
SAF interface to an external security product
Requirements for the external security product router
Input parameters to the external security product router
Return and reason codes from the external security product router
Programming considerations
Using the command authorization service
Command resource names
Syntax
Examples
Changing system status (MODESET)
Generating an SVC
Generating inline code
Exit routines
Using asynchronous exit routines
Using the SCHEDIRB macro to initialize and schedule an IRB
Using the SCHEDIRB macro to schedule an IRB
Using the CIRB macro to initialize an IRB
Using the SCHEDXIT macro to schedule an IRB
System processing to run an asynchronous exit
Linkage stack considerations for asynchronous exit routines
Establishing a timer disabled interrupt exit
DIE characteristics
Exit from the DIE routine
DIE execution
Timer queue element control
Obtaining and freeing the TQE
Serializing the use of each TQE
Clock failure
Interval cancellation
Using dynamic exits services
CSVDYNEX terminology
Vector Register protocol for user exits
Defining an exit
FASTPATH processing
Removing the definition of an exit
Calling an exit routine or routines
Floating point protocol for user exits
Ensuring that exit routines exist at the CALL
Returning information from multiple exit routines
Merging return codes
Recovery for the CALL request
Recovery for exit routines with FASTPATH processing
Associating an exit routine with an exit
Ensuring that exit routines exist at the time of the association
Deleting an exit routine from an exit
User-written SVC routines
Writing SVC routines
Type 6 SVC routines
Non-preemptable SVC routines
Programming conventions for SVC routines
Inserting SVC routines into the control program
Standard SVC routines
Example of adding user SVC routines to system libraries
Modifying the SVC table at execution time (SVCUPDTE macro)
Intercepting an SVC routine
Extended SVC routines
Subsystem SVC screening
Accessing unit control blocks (UCBs)
Scanning for UCBs
Obtaining UCB addresses
UCB Common Segment
UCB Common Extension
UCB Prefix Extension
UCB Prefix Area
UCB details
Ensuring that UCBs are not deleted
Pinning and unpinning UCBs
When pinning is required
Example: Pinning an unallocated and offline device
Example: Passing an UCB address between asynchronously running programs
When pinning is not required
Example: Allocating a device
Requesting notification of I/O configuration changes
Using the CONFCHG macro
Coding a configuration change user exit routine
Exit routine environment
Programming considerations
Entry specifications
Registers at entry
Parameter list contents
Return specifications
Exit recovery
Exit routine processing
Example
Coded example: CONFCHG macro invocation of configuration change user exit
Detecting I/O configuration changes
Retrieving the current MIH time interval
Retrieving information about I/O hardware on an I/O path
Length of the CDR area
How IOSCDR retrieves the CDR
Time that IOSCDR performs I/O
Validating I/O paths
Obtaining device information for an allocation request
Configuring a channel path online or offline
Obtaining UCB information (general methods)
Obtaining UCB addresses for a specified device number
Scanning UCBs
Examples: Using the UCB macros
Example 1
Example 2
Determining if the UCB macros (general methods) are available
Procedure for pre-MVS/SP Version 4 libraries
Procedure for MVS/SP Version 4 and above libraries
Obtaining UCB information (limited method)
The UCB scan service
Invoking the UCB scan service
Input to the UCB scan service
Limiting the UCB scan
Output from the UCB scan service
Example: Using the UCB scan service
Obtaining the subchannel number for a unit control block (UCB)
Accessing above 16-megabyte UCBs
Dynamic allocation
An allocation overview
Choosing the type of allocation for your program
Characteristics of job step allocation
Characteristics of dynamic allocation
When to avoid using dynamic allocation
Programming considerations for using the DYNALLOC macro
Selecting the type of allocation based on program requirements
Dynamic allocation functions
Using dynamic allocation functions in either a batch or interactive environment
Using dsname or pathname allocation
JCL DD statement facilities not supported by dynamic allocation
Dynamic allocation facilities without JCL equivalents
Checking for conflicts with your existing allocation environment
Using an existing allocation to fulfill a dsname allocation request
Characteristics required in your request
Characteristics prohibited in your request
Characteristics required in the existing allocation
System selection from multiple matching allocations
System creation of new ddname for existing allocation
Changing the parameters of an existing allocation
Using a new allocation to fulfill a dsname or pathname allocation request
Considerations when requesting dsname or pathname allocation
Allowing the system to generate a ddname
Specifying a password
Allocating a data set with a status of MOD
Allocating a dummy z/OS UNIX file
Determining the status of a z/OS UNIX file
Cataloging a data set
Requesting a data set that is in use
Retrieving information from allocation
Retrieving data set organization information from allocation
Access methods that are not available with dynamic allocation
Requesting an allocated but unavailable data set
Allocating a GDG data set
Retrieving volume information
Exceeding the control limit
Deallocating resources
Deallocating resources by dsname or pathname
Deallocating resources by ddname
Deallocating concatenated groups
Changing parameters at dynamic unallocation
Concatenating resources
Requesting the permanently concatenated attribute
Deconcatenating resources
Obtaining allocation environment information
Using dynamic allocation functions in an interactive environment
In-use attribute
Removing the in-use attribute by dsname or ddname
Removing the in-use attribute by task ID
Control limit
Permanently allocated attribute
Convertible attribute
Using ddname allocation
Installation options for DYNALLOC macro functions
Using default values
Mounting volumes and bringing devices online
Installation input validation routine for dynamic allocation
Requesting dynamic allocation functions
Building the SVC 99 parameter list
Coding a dynamic allocation request
Obtaining storage for the parameter list
Estimating the amount of storage for your request
Characteristics of storage for parameter list
Clearing the storage
Passing the address of the obtained storage to DYNALLOC
Mapping storage for the parameter list
Setting up the request block pointer
Setting up the request block
S99RB fields
Length (S99RBLN)
Verb code (S99VERB)
Flags (S99FLAG1)
Error code (S99ERROR)
Info code (S99INFO)
Text unit pointers' address (S99TXTPP)
Request block extension address (S99S99X)
Additional flags (S99FLAG2)
S99RBEND
Relationships among selected fields
Setting up the text units
Key (S99TUKEY)
Number (S99TUNUM)
Combination (S99TUENT)
Length (S99TULNG)
Parm (S99TUPAR)
Structure of the text units
Using special characters in text units
Using trailing blanks in text units
Order of text units
Independence of text unit key meaning across DYNALLOC functions
Setting up the text unit pointer list
Establishing addressability to the text unit pointer list
Filling in the text unit pointer list
Setting the end of list indicator
Processing messages and reason codes from dynamic allocation
Setting up the request block extension
S99RBX fields
Request block extension identifier (S99EID)
Version (S99EVER)
Processing options (S99EOPTS)
Message block subpool (S99ESUBP)
Storage key (S99EKEY)
Severity level (S99EMGSV)
Number of message blocks returned (S99ENMSG)
CPPL address (S99ECPPL)
Not an intended programming interface (S99ERCR)
Not an intended programming interface (S99ERCM)
Message processing reason code (S99ERCO)
Message block freeing reason code (S99ERCF)
PUTLINE/WTO macro return code (S99EWRC)
Message block chain address (S99EMSGP)
Information retrieval error code (S99EERR)
Information retrieval information code (S99EINFO)
SMS reason code (S99ERSN)
Processing messages from dynamic allocation
Sending dynamic allocation messages to the end user
Using the functions of the IEFDB476 program
Extracting messages (EMRETURN)
Sending messages (EMPUTLIN or EMWTP)
Freeing or retaining message blocks (EMKEEP)
Linking to the IEFDB476 program
Providing input to IEFDB476 through EMPARMS
Function flags (EMFUNCT)
Caller identification number (EMIDNUM)
Number of message blocks (EMNMSGBK)
(EMRSV0x) - Not an intended programming interface
Parameter list address (EMS99RBP)
Parameter list address (EMDAPLP)
Return code (EMRETCOD)
CPPL address (EMCPPLP)
Message buffer address (EMBUFP)
(EMRSV0y) - Not an intended programming interface
Parameter address (EMWTPCDP)
Not an intended programming interface
Using EMABUFFS to receive message information from the system
Length of message text (EMABUFLN)
Offset (EMABUFOF)
Message text (EMABUFTX)
Not an intended programming interface
Using EMBUFS to receive message information from the system
Length of the first message (EMBUFL1)
Offset (EMBUF01)
First message text (EMBUFT1)
Not an intended programming interface
Length of second message (EMBUFL2)
Offset (EMBUF02)
Second message text (EMBUFT2)
Interpreting return codes from IEFDB476
Interpreting DYNALLOC return codes
Interpreting information reason codes from DYNALLOC
Interpreting error reason codes from DYNALLOC
SVC 99 parameter list verb codes and text units, by function
Coding a dsname allocation text unit
JCL DD statement parameters and equivalent text units
Using system symbols in text units
Dsname allocation text units
Ddname specification - Key = '0001'
Dsname specification - Key = '0002'
Member name specification - Key = '0003'
Data set status specification - Key = '0004'
Data set normal disposition specification - Key = '0005'
Data set conditional disposition specification - Key = '0006'
Track space type (TRK) specification - Key = '0007'
Cylinder space type (CYL) specification - Key = '0008'
Block length specification - Key = '0009'
Primary space quantity specification - Key = '000A'
Secondary space quantity specification - Key = '000B'
Directory block specification - Key = '000C'
Unused space release (RLSE) specification - Key = '000D'
Format of allocated space specification - Key = '000E'
Whole cylinder allocation (ROUND) specification - Key = '000F'
Volume serial specification - Key = '0010'
Private volume specification - Key = '0011'
Volume sequence number specification - Key = '0012'
Volume count specification - Key = '0013'
Volume reference to a dsname specification - Key = '0014'
Device description specification - Key = '0015'
Device count specification - Key = '0016'
Parallel mount specification - Key = '0017'
SYSOUT specification - Key = '0018'
SYSOUT program name specification - Key = '0019'
SYSOUT form number specification - Key = '001A'
SYSOUT output limit specification - Key = '001B'
Unallocation at CLOSE specification - Key = '001C'
SYSOUT copies specification - Key = '001D'
Label type specification - Key = '001E'
Data set sequence number specification - Key = '001F'
Password protection specification - Key = '0020'
Input only or output only specification - Key = '0021'
Expiration date specification (short form) - Key = '0022'
Retention period specification - Key = '0023'
Dummy data set specification - Key = '0024'
Forms control buffer (FCB) image identification specification - Key = '0025'
Form alignment and image verification specification - Key = '0026'
QNAME specification - Key = '0027'
Terminal specification - Key = '0028'
Universal character set (UCS) specification - Key = '0029'
Fold mode specification - Key = '002A'
Character set image verification specification - Key = '002B'
DCB reference to a dsname specification - Key = '002C'
DCB reference to a ddname specification - Key = '002D'
SYSOUT remote work station specification - Key = '0058'
SYSOUT hold queue specification - Key = '0059'
Subsystem name request specification - Key = '005F'
Subsystem parameter specification - Key = '0060'
PROTECT specification - Key = '0061'
SYSOUT user ID specification - Key = '0063'
Burst specification - Key = '0064'
Character arrangement table specification - Key = '0065'
Copy groups specification - Key = '0066'
Flash forms overlay specification - Key = '0067'
Flash forms overlay count specification - Key = '0068'
Copy modification module specification - Key = '0069'
Copy module table reference specification - Key = '006A'
DEFER specification - Key = '006C'
EXPIRATION DATE specification (long form) - Key = '006D'
Override job affinity - Key = '0070'
CTOKEN return specification - Key = '0071'
SMSHONOR specification – Key = '0076'
Access specification - Key = '8001'
OUTPUT statement reference - Key = '8002'
CNTL specification - Key = '8003'
Storage class specification - Key = '8004'
Management class specification - Key = '8005'
Data class specification - Key = '8006'
Record organization specification - Key = '800B'
Key offset specification - Key = '800C'
Copy DD specification - Key = '800D'
Copy profile specification - Key = '800E'
Copy model specification - Key = '800F'
Average record specification - Key = '8010'
Data set type specification - Key = '8012'
Spin data set specification - Key = '8013'
Segment spin data set specification - Key = '8014'
z/OS UNIX file path specification - Key = '8017'
z/OS UNIX file options - Key = '8018'
z/OS UNIX file access attributes - Key = '8019'
z/OS UNIX file normal disposition specification - Key = '801A'
z/OS UNIX file abnormal disposition specification - Key = '801B'
Record-level sharing specification - Key = '801C'
Organization of a z/OS UNIX file - Key = '801D'
VSAM RLS log stream specification - Key = '801F'
CCSID specification - Key = '8020'
Block size limit specification - Key = '8022'
Key label 1 specification - Key = '8023'
Key label 2 specification - Key = '8024'
Key encode 1 specification - Key = '8025'
Key encode 2 specification - Key = '8026'
Extended attributes specification - Key = '8028'
FREEVOL specification - Key = '8029'
SPIN interval for the allocated SYSOUT data set - Key = '802A'
SYMLIST on a DD statement - Key = '802B'
DSNTYPE version - Key = '802C'
Maximum PDSE Generation - Key = '802D'
GDGORDER specification – Key = '802E'
JCL DD statement DCB subparameters and equivalent text units
DCB attribute text units
BFALN specification - Key = '002E'
BFTEK specification - Key = '002F'
BLKSIZE specification - Key = '0030'
BUFIN specification - Key = '0031'
BUFL specification - Key = '0032'
BUFMAX specification - Key = '0033'
BUFNO specification - Key = '0034'
BUFFOFF specification - Key = '0035'
BUFOUT specification - Key = '0036'
BUFRQ specification - Key = '0037'
BUFSZ specification - Key = '0038'
CODE specification - Key = '0039'
CPRI specification - Key = '003A'
DEN specification - Key = '003B'
DSORG specifications - Key = '003C'
EROPT specification - Key = '003D'
GNCP specification - Key = '003E'
INTVL specification - Key = '003F'
KEYLEN specification - Key = '0040'
LIMCT specification - Key = '0041'
LRECL specification - Key = '0042'
MODE specification - Key = '0043'
NCP specification - Key = '0044'
OPTCD specification - Key = '0045'
Receiving PCI specification - Key = '0046'
Sending PCI specification - Key = '0047'
PRTSP specification - Key = '0048'
RECFM specification - Key = '0049'
First buffer reserve specification - Key = '004A'
Secondary buffer reserve specification - Key = '004B'
SOWA specification - Key = '004C'
STACK specification - Key = '004D'
THRESH specification - Key = '004E'
TRTCH specification – Key = '004F'
Diagnostic trace specification (DIAGNS=TRACE) - Key = '0054'
FUNC= specification - Key = '005A'
FRID= specification - Key = '005B'
Record length specification - Key = '006B'
Kilobyte BLKSIZE type specification - Key = '0072'
Megabyte BLKSIZE type specification - Key = '0073'
Gigabyte BLKSIZE type specification - Key = '0074'
Non-JCL dynamic allocation functions
Password specification - Key = '0050'
Permanently allocated attribute specification - Key = '0052'
Convertible attribute specification - Key = '0053'
Ddname return specification - Key = '0055'
Dsname return specification - Key = '0056'
DSORG return specification - Key = '0057'
Subsystem request specification - key = '005C'
Volume serial return specification - Key = '005D'
Subsystem request type specification - Key = '0062'
Spool data set browse token specification - Key = '006E'
Volume interchange specification - Key = '006F'
Subsystem request specification - Key = '0075'
Uniquely allocated temporary data set - Key = '0077'
Dynamic unallocation text units
Ddname specification - Key = '0001'
Dsname specification - Key = '0002'
Member name specification - Key = '0003'
Overriding disposition specification - Key = '0005'
Unallocate option specification - Key = '0007'
Remove in-use option specification - Key = '0008'
Overriding SYSOUT nohold specification - Key = '000A'
Overriding SYSOUT class specification - Key = '0018'
Overriding SYSOUT remote workstation specification - Key = '0058'
Overriding SYSOUT hold queue specification - Key = '0059'
Overriding SYSOUT user ID specification - Key = '0063'
Overriding spin data set specification - Key = '8013'
z/OS UNIX file path specification - Key = '8017'
z/OS UNIX overriding file disposition specification - Key = '801A'
Dynamic concatenation text units
Ddname specification - Key = '0001'
Permanently concatenated attribute specification - Key = '0004'
Dynamic deconcatenation text unit
Ddname specification - Key = '0001'
Text units for removing the in-use attribute based on task ID
TCB address specification - Key = '0001'
Current task option specification - Key = '0002'
Ddname allocation text units
Ddname specification - Key = '0001'
Return DUMMY indication specification - Key = '0002'
Dynamic information retrieval text units
Ddname specification - Key = '0001'
Dsname specification - Key = '0002'
Return ddname specification - Key = '0004'
Return dsname specification - Key = '0005'
Return member name specification - Key = '0006'
Return status specification - Key = '0007'
Return normal disposition specification - Key = '0008'
Return conditional disposition specification - Key = '0009'
Return data set organization specification key = '000A'
Return limit specification - Key = '000B'
Return dynamic allocation attribute specification - Key = '000C'
Return last entry specification - Key = '000D'
Return data set type specification - Key = '000E'
Relative request number specification - Key = '000F'
Return first volume serial specification - Key = '0010'
Return ddname extended specification - Key = '0011'
Return relative position specification - Key = '0012'
z/OS UNIX file path specification - Key = '8017'
CNTL specification - Key = 'C003'
Return storage class specification - Key = 'C004'
Return management class specification - Key = 'C005'
Return data class specification - Key = 'C006'
Return record organization specification - Key = 'C00B'
Return key offset specification - Key = 'C00C'
Return copy DD specification - Key = 'C00D'
Return copy profile specification - Key = 'C00E'
Return copy model specification - Key = 'C00F'
Return average record specification - Key = 'C010'
Return data set type specification - Key = 'C012'
Return spin data set specification - Key = 'C013'
Return segment spin data set specification - Key = 'C014'
Return z/OS UNIX file path specification - Key = 'C017'
Return z/OS UNIX file options - Key = 'C018'
Return z/OS UNIX file access attributes - Key = 'C019'
Return z/OS UNIX file normal disposition specification - Key = 'C01A'
Return z/OS UNIX file abnormal disposition specification - Key = 'C01B'
Return organization of a z/OS UNIX file - Key = 'C01D'
Return spin of interval specification - Key = 'C02A'
Return symbol list on a DD statement - Key = 'C02B'
Return DSNTYPE version information - Key = 'C02C'
Return MAXGENS generation information - Key = 'C02D'
Return GDGORDER specification – Key = 'C02E'
Example of a Dynamic Allocation Request
Dynamic output
Creating and naming output descriptors
System generated names
Job step considerations
Output descriptors and text units
Table of dynamic output text units and JCL equivalents
Relationship between text units and JCL equivalents
OUTPUT JCL statement
Text units
Deleting output descriptors
Specifying SYSOUT without an output descriptor
Dynamic output programming example
Dynamic output programming example (continued)
Dynamic output programming example (continued)
Dynamic output programming example (concluded)
Scheduler JCL facility (SJF)
Understanding SJF terms
The SJF environment
Retrieving output descriptor information (SJFREQ macro with RETRIEVE)
Initializing the keyword list
Establishing a storage area
Information returned from SJF RETRIEVE processing
Merging SWBTUs (SJFREQ macro with SWBTU_MERGE)
Validating and building text units (SJFREQ macro with VERIFY)
SJFREQ VERIFY functions
Preparing to use VERIFY for validating and building text units
Examples of using SJFREQ VERIFY functions
Validate a statement name
Validate a keyword operand
Validate and build a text unit for a keyword operand and subparameters
Validate and build a text unit for a keyword operand with a sublist
Requesting last call
Freeing the SJF environment (SJFREQ macro with TERMINATE)
Understanding the OUTDES statement
Operand and keyword operand abbreviations
Comments and line continuation
Delimiters
Rules for parsing data with and without quotation marks
OUTDES statement syntax
Processing user trace entries in the system trace table
Formatting a USRn trace table entry
Replacing a USRn TTE formatting routine
Parameters passed to the USRn formatter
Return codes from the USRn formatter
Printing the trace output buffer contents
Handling errors during TTE formatting
Using system logger services
What is system logger?
The log stream
Coupling facility log stream
DASD-only log stream
The system logger configuration
The system logger component
Overview of authorized system logger services
Summary of system logger services
Coding a system logger complete exit for IXGBRWSE, IXGWRITE, and IXGDELET
Information passed to the complete exit
Environment
Input specifications
Registers at entry
Return specification
Programming considerations
Using ENF event code 48 in system logger applications
IXGCONN: Connecting to and disconnecting from a log stream
Connecting as a resource manager
Using ENF event code 48 with a resource manager
Using ENF event 48 when a connect request is rejected
Coding a resource manager exit for IXGCONN
Information passed to the resource manager exit
Environment
Input specifications
Registers at entry
Return specification
Programming considerations
Overriding delete requests
When the resource manager exit hangs
IXGDELET: Deleting log blocks from a log stream
Delete requests and resource manager exit processing
Setting up the system logger configuration
Writing an ENF event 48 listen exit
Logger server address space availability considerations
ENF 48 and system logger initialization
ENF 48 event code scenarios
Considerations for logger resources temporarily unavailable
Considerations for logger log stream disconnected
When things go wrong: Recovery scenarios for system logger
When a resource manager fails
System REXX
Planning to use system REXX
Security
Argument and variable processing
Input/output files
Functions
Time limits and canceling a request
Error handling
Examples
z/OS FBA services
z/OS Distributed Data Backup (zDDB)
z/OS FBA devices
Controlling access to z/OS FBA devices
z/OS FBA services
Querying and allocating FBA devices
Reading from and writing to z/OS FBA devices
Erasing data on z/OS FBA devices
Unallocating z/OS FBA devices
Improving performance when using IOSFBA services
Providing a recovery or resource manager
Using the unit verification service
Functions
Check groups - Function code 0
Check units - Function code 1
Return unit name - Function code 2
Return unit control block (UCB) addresses - Function code 3
Return group ID - Function code 4
Indicate unit name is a look-up value - Function code 5
Return look-up value - Function code 6
Convert device type to look-up value - Function code 7
Return attributes - Function code 8
Check units with no validity bit - Function code 9
Specify subpool for returned storage - Function code 10
Return unit names for a device class - Function code 11
Callers of IEFEB4UV
Callers of IEFGB4UV or IEFAB4UV
Input to and output from unit verification service routines
Input parameter list
Input and output data structures
Register 15 if request fails
Requesting function code 0 (check groups)
Input
Output
Requesting function code 1 (check units)
Input
Output
Requesting function code 2 (return unit name)
Input
Output
Requesting function code 3 (return UCB addresses)
Input
Output
Requesting function code 4 (return group ID)
Input
Output
Requesting function code 5 (indicate unit name is a look-up value)
Input
Output
Requesting function code 6 (return look-up value)
Input
Output
Requesting function code 7 (convert device type to look-up value)
Input
Output
Requesting function code 8 (return attributes)
Input
Output
Requesting function code 9 (check units with no validity bit)
Input
Output
Requesting function code 10 (specify subpool for returned storage)
Input
Output
Requesting function code 11 (return unit names for a device class)
Input
Output
Requesting multiple functions - Examples
Example 1 - Function codes 0 and 1
Input
Output
Example 2 - Function codes 3 and 10
Input
Output
Example 3 - Function codes 1 and 5
Input
Output