Iea1a331 PDF
Iea1a331 PDF
Iea1a331 PDF
GC28-1766-08
OS/390 IBM
MVS Programming: Authorized
Assembler Services Reference, Volume 3
(LLACOPY-SDUMPX)
GC28-1766-08
Note
Before using this information and the product it supports, be sure to read the general information under Appendix A, “Notices” on
page 307.
This edition applies to Version 2 Release 10 of OS/390 (5647-A01) and to all subsequent releases and modifications until otherwise indicated
in new editions.
Order publications through your IBM representative or the IBM branch office serving your locality. Publications are not stocked at the address
below.
IBM welcomes your comments. A form for readers' comments may be provided at the back of this publication, or you may address your
comments to the following address:
International Business Machines Corporation
Department 55JA, Mail Station P384
2455 South Road
Poughkeepsie, NY 12601-5400
United States of America
If you would like a reply, be sure to include your name, address, telephone number, or FAX number.
When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate
without incurring any obligation to you.
Copyright International Business Machines Corporation 1988, 2000. All rights reserved.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
Contents
About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Who Should Use this Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
How to Use This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Where to Find More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Summary of Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
LOADWAIT — Build a Wait State Parameter List for Use with WTO . . . . . . . . . . 39
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Some of the services included in this book are not authorized, but are included because they
are of greater interest to the system programmer than to the general applications
programmer. The functions of these services are of such a nature that their use should be
limited to programmers who write authorized programs. Services are also included if they
have one or more authorized parameters — parameters available only to authorized
programs.
Programmers using assembler language can use the macros described in this book to
invoke the system services that they need. This book includes the detailed information —
such as the function, syntax, and parameters — needed to code the macros.
This book is divided into four volumes. Volumes 1 through 4 present the macro descriptions
in alphabetical order.
Using this book also requires you to be familiar with the operating system and the services
that programs running under it can invoke.
| This book contains information previously presented in GC28-1766-07, which also supports
| OS/390 Version 2 Release 10.
Summary of Changes
for GC28-1766-07
OS/390 Version 2 Release 10
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-06
OS/390 Version 2 Release 9
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-05
OS/390 Version 2 Release 7
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-04
OS/390 Version 2 Release 6
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-02
OS/390 Version 1 Release 3
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-01
OS/390 Release 2
This book includes terminology, maintenance, and editorial changes. Technical changes or
additions to the text and illustrations are indicated by a vertical line to the left of the change.
Summary of Changes
for GC28-1766-00
OS/390 Release 1
Some of the topics covered in this chapter apply only to macros, some apply only to callable
services, and some apply to both. This chapter uses the word "services" when referring to
information that applies to both service types. When information applies only to one type or
the other, the particular service type is specified.
The following table lists the topics covered in this chapter and whether the topic applies to
macros, callable services, or both:
All callable services must pass 31-bit addresses to the system service regardless of what
addressing mode your program is running in. If your program is running in 24-bit mode and
you use a callable service, you must set the high-order byte of parameter addresses to
zeros.
Because the processor must resolve addresses differently for AR mode programs, IBM
recommends that:
All programs issue the SYSSTATE macro before issuing any other macros. Programs in
primary mode must issue SYSSTATE ASCENV=P. Programs in AR mode must issue
SYSSTATE ASCENV=AR.
If your program switches from one ASC mode to another, your program should issue
SYSSTATE immediately after the mode switch to indicate the new ASC mode.
Through the SYSSTATE macro, a program sets the SYSSTATE global variable
(&SYSASCE) to indicate whether the program runs in primary or AR mode. Once a program
has issued SYSSTATE, there is no need to reissue it unless the program switches ASC
mode.
Some macros can generate code that is appropriate for programs in either primary mode or
AR mode. These macros check &SYSASCE to determine which type of code to generate. If
your program does not set &SYSASCE, any macros that check the variable set it to a
default of primary mode upon assembly. Figure 7 on page 18 lists the macros that check
&SYSASCE.
Some services can generate code that is appropriate for programs in primary mode only. If
you write a program in AR mode that invokes one or more services, check the description in
this book for each service your program issues. Unless the description indicates that a
service supports callers in AR mode, the service does not support callers in AR mode. In this
case, use the SAC instruction to change the ASC mode of your program and issue the
service in primary mode.
Notes:
1. Whether the caller is in primary or AR ASC mode, the system uses ARs 0-1 and 14-15
as work registers across any service call.
2. You can issue the SYSSTATE macro within your own user-written macro to determine
whether your macro should generate code appropriate for primary or AR mode. See the
SYSSTATE macro description in OS/390 MVS Programming: Assembler Services
Reference for further details.
3. Callable services do not check &SYSASCE. To determine whether a callable service
supports callers in AR or primary mode, check the individual service description.
Programs in AR mode that pass parameters must use an access register and the
corresponding general purpose register together (for example, access register 1 and general
purpose register 1) to identify where the parameters are located. The access register must
contain an access list entry token (ALET) that identifies the address space where the
parameters reside. The general purpose register must identify where, within the address
space, the parameters reside.
MVS services do not accept the following ALETs, and you must not attempt to pass them to
a service:
One (1), which signifies that the parameters reside in the caller's secondary address
space
An ALET that is on the caller's primary address space access list (PASN-AL)
An ALET for a private entry on the PASN-AL or the DU-AL.
Throughout, this book uses the term AR/GPR n to mean an access register and its
corresponding general purpose register. For example, to identify access register 1 and
general purpose register 1, this book uses AR/GPR 1.
User Parameters
Some macros that you can issue in AR mode include control parameters, user parameters,
or both. Control parameters refer to the macro parameter list, and to the parameters whose
addresses are in the parameter list. Control parameters control the operation of the macro
itself. User parameters are parameters that the user provides to be passed through to a user
routine. For example, the PARAM parameter on the ATTACHX macro defines user
parameters. The ATTACHX macro passes these parameters to the routine that it attaches.
All other parameters on the ATTACHX macro are control parameters that control the
operation of the ATTACHX macro.
Notes:
1. User parameters are sometimes referred to as problem program parameters.
2. Control parameters are sometimes referred to as system parameters or control program
parameters.
The macros shown in Figure 1 allow a caller in AR mode to pass information in the form of
a parameter list (or parameter lists) to another routine. Figure 1 identifies the parameter that
receives the ALET-qualified address of the parameter list and tells you where the target
routine finds the ALET-qualified address.
When a caller in AR mode passes ALET-qualified addresses to the called program through
PARAM,VL=1 on the ATTACH/ATTACHX macro, the system builds a list formatted as shown
in Figure 2. The addresses passed to the called program are at the beginning of the list, and
their associated ALETs follow the addresses. The last address in the list has the high-order
bit on to indicate the size of the list. For example, Figure 2 shows the format of a list where
an AR mode issuer of ATTACHX codes the PARAM parameter as follows:
PARAM=(A,B,C),VL=1
0 @A
0 @B
1 @C
GPR1 @ ALET A
AR1 ALET B
ALET
ALET C
Register Use
Some services require that the caller place information in specific general purpose registers
(GPRs) or access registers (ARs) prior to issuing the service. If a service has such a
requirement, the “Input Register Information” section for the service provides that information.
The section lists only those registers that have a requirement. If a register is not specified as
having a requirement, then the caller does not have to place any information in that register
unless using it in register notation for a particular parameter, or using it as a base register.
Once the caller issues the service, the system can change the contents of one or more
registers, and leave the contents of other registers unchanged. When control returns to the
caller, each register contains one of the following values or has the following status:
The register content is preserved and is the same as it was before the service was
issued.
The register contains a value placed there by the system for the caller's use. Examples
of such values are return codes and tokens.
The system used the register as a work register. Do not assume that the register
content is the same as it was before the service was issued.
Note that the system uses ARs 0, 1, 14, and 15 as work registers for every service,
regardless of whether the caller is in primary or AR address space control (ASC) mode. The
system does not use ARs 2 through 13 for any service.
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.
The errors that cause unsuccessful completion fall into three broad categories:
Program errors Errors that your program causes: you can correct these.
Environmental errors Errors not caused directly by your program; rather, your
program's request caused a limit to be exceeded, such
as a storage limit, or the limit on the size of a particular
data set. You might or might not be able to correct these.
System errors Errors caused by the system: your program did nothing
to cause the error, and you probably cannot correct
these.
In some cases, a return or reason code can result from some combination of these errors.
The return and reason code descriptions for the services in this book indicate whether the
error is a program error, an environmental error, a system error, or some combination.
Whenever possible, the return and reason code descriptions give you a specific action that
you can take to fix the error.
IBM recommends that you read all the return and reason codes for each service that your
program issues. You can then design your program to handle as many errors as possible.
When designing your program, you should allow for the possibility that future releases of
MVS might add new return and reason codes to a service that your program issues.
In each of the first two cases, you can correct your program. For completeness, the return
and reason code descriptions give you specific actions to perform, even when it might seem
obvious what the action should be.
In the third case, you might have to contact your system administrator or system
programmer to obtain the necessary authorization, or to request that the service or function
be made available on your system, and the return or reason code description asks you to
take that step.
Note: Generally, the system does not take dumps for errors that your program causes
when issuing a system service. If you require such a dump, then it is your
responsibility to request one in your recovery routine. See the section on providing
recovery in OS/390 MVS Programming: Authorized Assembler Services Guide for
information about writing recovery routines.
You might be able to design your program to anticipate certain environmental errors and
handle them dynamically.
With system errors, as with environmental errors, often your first action should be to rerun
your program or retry the request one or more times. If the problem persists, you might have
to contact IBM support personnel.
Whenever possible for environmental and system errors, the return or reason code
description gives you either a specific action you can take, or a list of recommended actions
you can try.
For some errors, providing a specific action is not possible, because the action you should
take depends on your particular application, and on what is happening in your installation. In
those cases, the return or reason code description gives you one or more possible causes of
the error to help you to determine what action to take.
Some system errors result in return and reason codes that are provided for IBM diagnostic
purposes only. In these cases, the return or reason code description asks you to record the
information and provide it to the appropriate IBM support personnel.
In most cases, the reverse is also true. When you assemble programs that issue macros on
a particular version and release of MVS, those programs can run on earlier versions and
releases of MVS, provided you request only those functions that are supported by the earlier
version and release. This is useful for installations that write applications that might be
assembled on one level of MVS, but run on a different level. When this is not true, it is called
a downward incompatibility.
Placed in your program, the SPLEVEL macro helps you to deal with these downward
incompatibilities. See “Service Summary” on page 17 for a description of the ways in which
individual macros interact with the SPLEVEL macro. There are three categories of
information provided in the summary table:
none The macro has no downward incompatibilities. SPLEVEL is not examined.
n A number in the range 2 to 4, indicating the release in which a downward
incompatibility was introduced:
2 The macro is downward-incompatible between MVS/XA SP2.1.0
and prior releases
3 The macro is downward-incompatible between MVS/ESA SP3.1.0
and prior releases
4 The macro is downward-incompatible between MVS/ESA SP4.1.0
and prior releases
| 5 The macro is downward-incompatible between MVS/ESA SP5.1.0
| and prior releases
| 6 The macro is downward-incompatible between OS/390 Release 2
| and prior releases
AR The macro is downward incompatible between MVS/ESA SP3.1.0 and prior
releases when the program specifies SYSSTATE ASCENV=AR.
Note: The problem of downward compatibility is not the same as selecting a macro version
via the PLISTVER parameter to ensure the correct parameter list size for a macro.
For selecting a parameter list version number, see “Specifying a Macro Version
Number” on page 10.
Some MVS macros are downward incompatible between MVS/XA SP2.1.0 and prior
releases of MVS. When you assemble a program that issues these macros on an MVS/XA
SP2.1.0 or higher system and attempt to run the program on version 1, these macros
produce downward-incompatible statements, even though your program requests only
function supported by version 1. Consequently, the program might not run as expected. Also,
the version 1 expansions of these macros do not run on an MVS/XA SP2.1.0 or higher
system if the caller is in 31-bit addressing mode. So, programs in 31-bit addressing mode
must always use the MVS/XA SP2.1.0 or higher expansion of these macros.
The authorized macros that are downward incompatible between version 1 and MVS/XA
SP2.1.0 are:
ATTACH
ESTAE
EVENTS
FESTAE
SCHEDULE SCOPE=GLOBAL
SDUMP
SETFRR
In addition,
macro CALLDISP is downward incompatible between MVS/ESA SP3.1.0 and prior
releases; and
the SETLOCK macro is downward incompatible between MVS/ESA SP4.1.0 and prior
releases when TYPE=HIER is requested.
Many macros are sensitive to the difference between MVS/ESA SP3.1.0 and prior releases
when SYSSTATE ASCENV=AR. Set SYSSTATE ASCENV=AR when your program runs
in AR ASC mode, and not otherwise.
If you use installation- or vendor-written macros, some of these macros might have
incompatibilities between versions and releases as well. Check your installation or vendor
documentation to determine if such incompatibilities exist.
To manage the problem of incompatibilities between versions and releases of macros, use
the SPLEVEL macro. The SPLEVEL macro with the SET=n parameter allows your program
to select which level of a macro the assembler will generate.
You can also use SPLEVEL with the TEST parameter when you write your own macros to
ensure that the macro level for your macro is set. See the SPLEVEL macro description in
OS/390 MVS Programming: Assembler Services Reference for more information.
According to the indication in the service summary table for a particular macro, use
SPLEVEL as follows:
Indication SPLEVEL
none Specify SPLEVEL SET
2 If you need the expansion to work on a release prior to MVS/XA SP2.1.0,
specify SPLEVEL SET=1
3 If you need the expansion to work on a release prior to MVS/ESA SP3.1.0,
specify SPLEVEL SET=2
4 If you need the expansion to work on a release prior to MVS/ESA SP4.1.0,
specify SPLEVEL SET=3
| 5 If you need the expansion to work on a release prior to MVS/ESA SP5.1.0,
| specify SPLEVEL SET=4
| 6 If you need the expansion to work on a release prior to OS/390 Release 2,
| specify SPLEVEL SET=5
AR If you need the expansion to work on a release prior to MVS/ESA SP3.1.0,
specify SPLEVEL SET=1 or SPLEVEL SET=2 and specify (or default to)
SYSSTATE ASCENV=P
A program must select the level of the macro at execution time, based on the level of the
operating system on which the program runs. The example in Figure 3 on page 10 shows
one method of doing this. The example uses the WTOR macro but would work for any
downward-incompatible macro. The WTOR macro downward incompatibility was introduced
in MVS/XA SP2.1.0, and the macro has had new function added in each of MVS/XA
SP2.1.0, MVS/ESA SP3.1.0, MVS/ESA SP4.1.0, and MVS/ESA SP5.1.0. So in this example,
you could actually code the WTOR macro with different parameters depending on the level
of MVS on which the program runs. This example assumes that you assemble the program
on an OS/390 system. If you were coding WTOR with only version 1 parameters, you could
The program in this example tests various bits in the CVT data area:
1. The program first tests the CVTOSEXT bit in CVTDCB to see if the CVT extension,
which contains the bits that indicate whether the operating system is version 3 or higher,
is present.
a. If the extension is present, the program then determines if the operating system
supports the MVS/ESA SP5.1.0 functions by testing the CVTH5510 bit in the
CVTOSLV1 field. The CVTH5510 bit is 1 when the operating system is MVS/ESA
SP5.1.0 or later. In the path where the CVTH5510 bit is 1, the WTOR macro can
specify functions made available in MVS/ESA SP5.1.0 or a prior release.
b. If the extension is present, but the MVS/ESA SP5.1.0 indicator is 0, then the
program determines if the operating system supports the MVS/ESA SP4.1.0
functions by testing the CVTH4410 bit in CVTOSLV0. The CVTH4410 bit is 1 when
the operating system is MVS/ESA SP4.1.0 or later. In the path where the
CVTH4410 bit is 1, the WTOR macro can specify functions made available in
MVS/ESA SP4.1.0 or a prior release.
c. If the extension is present, but the version is neither 5 nor 4, then the program
determines if the operating system supports the MVS/ESA SP3.1.0 functions by
testing the CVTH3310 bit in CVTOSLV0. The CVTH3310 bit is 1 when the
operating system is MVS/ESA SP3.1.0 or later. In the path where the CVTH3310 bit
is 1, the WTOR macro can specify functions made available in MVS/ESA SP3.1.0
or a prior release.
2. If the extension is not present, the program tests the CVTMVSE bit in CVTDCB to
determine if the operating system is version 2 or version 1. If the CVTMVSE bit is 1, the
operating system is version 2; if the CVTMVSE bit is 0, the operating system is version
1. In the path where the CVTMVSE bit is 1, the WTOR macro can specify functions
made available in MVS/XA SP2.1.0 or a prior release.
In the path where the CVTMVSE bit is 0, it is important to specify SYSSTATE SET=1,
because the downward incompatibility lies between MVS/XA SP2.1.0 and earlier
releases. The WTOR macro can specify only functions made available prior to MVS/XA
SP2.1.0.
You also have the option of coding a specific version number using plistver, or of specifying
MAX:
plistver allows you to code a decimal value corresponding to the version of the macro
you require. The decimal value you provide determines the amount of storage allotted
for the parameter list.
MAX allows you to request that the system generate a parameter list for the highest
version number currently available. The amount of storage allotted for the parameter list
will depend on the level of the system on which the macro is assembled.
IBM recommends, if your program can tolerate additional growth, that you always
specify PLISTVER=MAX on the list form of the macro. MAX ensures that the list form
parameter list is always long enough to hold whatever parameters might be specified on
the execute form when both forms are assembled using the save level of the system.
The PLISTVER parameter appears in the syntax diagram and in the parameter descriptions.
Within each macro description, the PLISTVER parameter description specifies the range of
values and lists the parameters applicable for each version of the macro.
Using X-Macros
Some MVS services support callers in both primary and AR ASC mode. When the caller is in
AR mode, macros must generate larger parameter lists; the increased size of the list reflects
the addition of ALETs to qualify addresses, as described under “ALET Qualification” on
page 3. For some MVS macros, two versions of a particular macro are available: one for
callers in primary mode and one for callers in AR mode. The name of the macro for the AR
mode caller is the same as the name of the macro for primary mode callers, except the AR
The only way these macros know that a caller is in AR mode is by checking the global
symbol that the SYSSTATE macro sets. Each of these macros (and corresponding
non-X-macro) checks the symbol. If SYSSTATE ASCENV=AR has been issued, the macro
issues code that is valid for callers in AR mode. If it has not been issued, the macro
generates code that is not valid for callers in AR mode. When your program returns to
primary mode, use the SYSSTATE ASCENV=P macro to reset the global symbol.
IBM recommends that you use the X-macro regardless of whether your program is running
in primary or AR mode. However, you should consider the following before deciding which
macro to use:
IBM recommends you always use ESTAEX unless your program and your recovery routine
are in 24-bit addressing mode, or your program requires a branch entry. In these cases, you
should use ESTAE.
Macro Forms
You can code most macros in three forms: standard, list, and execute. Some macros also
have a modify form. When you code a macro, you use the MF parameter to select one of
the forms. The list, execute and modify forms are for reenterable programs that need to
change values in the parameter list of the macro. The standard form is for programs that are
not reenterable, or for programs that do not change values in the parameter list.
When a program wants to change values in the parameter list of a macro, it can make the
change dynamically.
However, using the standard form and changing the parameter list dynamically might cause
errors. For example, after storing a new value into the inline, standard form of the parameter
list, a reenterable program operating under a given task might be interrupted by the system
before the program can invoke the macro. In a multiprogramming environment, another task
can use the same reenterable program, and that task might change the inline parameter list
again before the first task regains control. When the first task regains control, it invokes the
macro. However, the inline parameter list now has the wrong values.
Through the use of the different macro forms, a program that runs in a multiprogramming
environment can avoid errors related to reenterable programs. The techniques required for
using the macro forms, however, are different for some macros, called alternative list form
macros, than for most other macros. For the alternative list form macros, the list form
description notes that different techniques are required and refers you to the information
under “Alternative List Form Macros” on page 13.
With this technique, the parameter list is safe even if the first task is interrupted and a
second task intervenes. When the program runs under the second task, it cannot access the
parameter list in the virtual storage of the first task.
You can use the macro forms for the alternative list form macros as follows:
1. Use the list form of the macro to define an area of storage that the execute form can
use to store the parameters. As with other macros, do not code the list form in the
instruction stream of your program.
2. In the instruction stream, code a GETMAIN or a STORAGE macro to obtain virtual
storage for the list form expansion.
3. Place the area defined by the list form into a DSECT that maps a portion of the virtual
storage you obtained.
4. Invoke the macro by issuing the execute form of the macro. The address parameter
specified on the list form references the parameter list in the virtual storage area that
you obtained.
The syntax tables assume that the standard begin, end, and continue columns are used.
Thus, column 1 is assumed as the begin column. To change the begin, end, and continue
columns, use the ICTL instruction to establish the coding format you want to use. If you do
not use ICTL, the assembler recognizes the standard columns. To code the ICTL instruction,
see HLASM Language Reference.
A B C
A1 TEST
MATH
A2 HIST
GEOG
The first column, A, contains those parameters that are required for that macro. If a
single line appears in that column, A1, the parameter on that line is required and you
must code it. If two or more lines appear together, A2, the parameters on those lines are
mutually exclusive, so you must code only one of those parameters.
The second column, B, contains those parameters that are optional for that macro. If a
single line appears in that column, B1, the parameter on that line is optional. If two or
more lines appear together, B2, the parameters on those lines are mutually exclusive,
so if you elect to make an entry, you must code only one of those parameters.
The third column, C, provides additional information about coding the macro.
Use the parameters to specify the services and options to be performed, and write them
according to the following rules:
If the selected parameter is written in all capital letters (for example, MATH, HIST, or
FMT=HEX), code the parameter exactly as shown.
If the selected parameter is written in italics (for example, grade), substitute the
indicated value, address, or name.
If the selected parameter is a combination of capital letters and italics separated by an
equal sign (for example, DATA=data addr), code the capital letters and equal sign as
shown, and then make the indicated substitution for the italics.
Read the table from top to bottom.
Code commas and parentheses exactly as shown.
Positional parameters (parameters without equal signs) appear first; you must code
them in the order shown. You may code keyword parameters (parameters with equal
signs) in any order.
If you select a parameter, read the third column before proceeding to the next
parameter. The third column often contains coding restrictions for the parameter.
Continuation Lines
You can continue the parameter field of a macro on one or more additional lines according
to the following rules:
Enter a continuation character (not blank, and not part of the parameter coding) in
column 72 of the line.
Continue the parameter field on the next line, starting in column 16. All columns to the
left of column 16 must be blank.
You can code the parameter field being continued in one of two ways. Code the parameter
field through column 71, with no blanks, and continue in column 16 of the next line; or
truncate the parameter field by a comma, where a comma normally falls, with at least one
blank before column 71, and then continue in column 16 of the next line. Figure 5 on
page 16 shows an example of each method.
,(test_type
,level
CALL SCORE ,data
,format_option
,return_code)
Service Summary
Figure 7 on page 18 lists the services described in the following:
OS/390 MVS Programming: Authorized Assembler Services Reference ALE-DYN
OS/390 MVS Programming: Authorized Assembler Services Reference ENF-IXG
OS/390 MVS Programming: Authorized Assembler Services Reference LLA-SDU
OS/390 MVS Programming: Authorized Assembler Services Reference SET-WTO.
Notes:
1. Cross memory mode means that at least one of the following conditions is true:
PASN¬=SASN The primary address space (PASN) and the
secondary address space (SASN) are different.
PASN¬=HASN The primary address space (PASN) and the home
address space (HASN) are different.
SASN¬=HASN The secondary address space (SASN) and the home
address space (HASN) are different.
For more information about functions that are available to programs in cross memory
mode, see OS/390 MVS Programming: Extended Addressability Guide.
2. A program running in primary ASC mode when PASN=SASN=HASN can issue any of
the services listed in the table.
IBM recommends that programs in AR ASC mode use the X-macros (ATTACHX,
SDUMPX, and SYNCHX). If, however, a program in AR mode issues ATTACH,
SDUMP, or SYNCH after issuing SYSSTATE ASCENV=AR, the system substitutes the
corresponding X-macro and issues a message telling you that it made the substitution.
2. CALLRTM TYPE=MEMTERM can be issued in cross memory mode. For CALLRTM
TYPE=ABTERM, see the CALLRTM macro description.
3. The only programs that can use ESTAE are programs that are in primary mode with
(PASN=SASN=HASN).
IBM recommends you always use ESTAEX unless your program and your recovery
routine are in 24-bit addressing mode, or your program requires a branch entry. In
these cases, you should use ESTAE.
4. IBM recommends that AR mode callers use the STORAGE macro instead of using
GETMAIN or FREEMAIN.
5. For HSPSERV SREAD and HSPSERV SWRITE, PASN=HASN=SASN for a non-shared
standard hiperspace for which an ALET is not used (that is, the HSPALET parameter is
omitted).
6. If you use the HSPALET parameter, the HSPSERV macro checks SYSSTATE.
7. If the input UCB is captured, the IOSCAPF, IOSCMXA, IOSCMXR, and IOSDCXR
macros can be issued in cross memory mode only if the UCB is captured in the primary
address space. IOSCAPU CAPTOACT without the ASID parameter also can be issued
in cross memory mode if the UCB was captured in the primary address space.
IOSCAPU CAPTUCB and IOSCAPU UCAPTUCB cannot be issued in cross memory
mode.
8. PGSER can be issued in AR ASC mode only if you specify BRANCH=Y. PGSER can
be issued in cross memory mode only if you specify BRANCH=Y or
BRANCH=SPECIAL.
9. Both SDUMP and SDUMPX can be issued in cross memory mode only if you specify
BRANCH=YES.
10. Only TIMEUSED LINKAGE=SYSTEM can be issued in AR ASC mode. TIMEUSED
LINKAGE=BRANCH cannot be issued in AR ASC mode.
11. For a QUERY request, CSVAPF can be issued only in primary mode. For all other
requests, CSVAPF can be issued in primary or AR mode.
12. For CSVAPF with the ADD, DELETE, and DYNFORMAT requests, PASN = HASN =
SASN. For CSVAPF with the QUERY, QUERYFORMAT, and LIST requests, any
PASN, any HASN, any SASN.
13. For a QUERY or a CALL request with FASTPATH=YES, CSVDYNEX can be issued
only in primary mode. For all other requests, CSVDYNEX can be issued in primary or
AR mode.
14. For CSVDYNEX CALL, RECOVER, and QUERY requests, any PASN, any HASN, any
SASN. For all other requests, PASN=HASN=SASN.
15. When the caller of the IAZXJSAB macro specifies the ASCB parameter, any PASN, any
HASN, any SASN; otherwise, PASN=HASN is required.
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:
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.
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:
LLACOPY
,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 OS/390 MVS System
Codes for an explanation of the reason codes and programmer responses for X'023'.
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
LLACOPY—List Form
Use the list form of the LLACOPY macro together with the execute form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage, which the execute form of the macro uses to store the parameters.
Syntax
The list form of the LLACOPY macro is written as follows:
LLACOPY
Parameters
The parameters are explained under the standard form of the LLACOPY macro with the
following exception:
MF=(L,list addr)
MF=(L,list addr,attr)
Specifies the list form of the LLACOPY macro.
list addr is the address of the storage area for the parameter list.
attr is an optional 1- to 60-character input string, which can contain any value that is
valid on an assembler DS pseudo-op. You can use this parameter to force boundary
alignment of the parameter list. If you do not code attr, the system provides a value of
0D, which forces the parameter list to a doubleword boundary.
LLACOPY—Execute Form
Use the execute form of the LLACOPY macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the LLACOPY macro is written as follows:
LLACOPY
Parameters
The parameters are explained under the standard form of the LLACOPY macro with the
following exception:
,MF=(E,list addr)
Specifies the execute form of LLACOPY.
list addr specifies the area that the system uses to store the parameters.
Description
The LOAD macro brings the load module containing the specified entry name into virtual
storage, if a usable copy is not available in virtual storage. Control is not passed to the load
module; instead, the load module's entry point address is returned in GPR 0. Load services
places the load module in storage above or below 16 megabytes depending on the RMODE
of the module. The responsibility count for the load module is increased by one.
The load module remains in virtual storage until the responsibility count is reduced to 0
through task terminations or until the effects of all outstanding LOAD requests for the module
have been canceled (using the DELETE macro described in OS/390 MVS Programming:
Assembler Services Reference), and there is no other requirement for the module.
Environment
The requirements for the caller are:
Minimum authorization: Problem state or supervisor state, and any PSW key. The
GLOBAL, EOM, ADDR, and ADRNAPF parameters are restricted
to authorized users (APF authorized, PSW key 0-7, or supervisor
state).
Dispatchable unit mode: Task
Cross memory mode: PASN=SASN=HASN
AMODE: 24- or 31-bit
ASC mode: Primary
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks held
Control parameters: Must be in the primary address space
Programming Requirements
If you code any of the parameters LSEARCH, ADDR, ADRNAPF, GLOBAL, EOM, or
LOADPT, you will obtain a macro-generated parameter list. Therefore, except for the error
routine address, all addresses must be specified as A-type addresses or registers (2) - (12).
Restrictions
Any module loaded by a task will not be removed from virtual storage unless the task
that loaded the module invokes the DELETE macro or terminates.
The load module entry name must be listed as a member name or alias in a partitioned
data set directory or it must have been specified previously in an IDENTIFY macro
invocation. If the LOAD macro cannot find the specified entry name, the caller's task is
ended abnormally unless the caller provides an ERRET exit.
The caller cannot have an EUT FRR established.
Register Information
After the caller issues the macro, the system might use some registers as work registers or
might change the contents of some registers. When the system returns control to the caller,
the contents of these registers are not the same as they were before the macro was issued.
Therefore, if the caller depends on these registers containing the same value before and
after issuing the macro, the caller must save these registers before issuing the macro and
restore them after the system returns control.
If the LOAD is successful, the GPRs contain the following when control returns to the caller:
Register Contents
0 Entry point address of the requested load module. Load services sets the
high-order bit of the entry point address to the load module's AMODE. If
the module's AMODE is ANY, it sets the indicator to the caller's AMODE.
1 The high-order byte contains the load module's APF authorization code.
The other three bytes contain the module length in doublewords. When the
module is a program object, bound with FETCHOPT=NOPACK option,
multiplying by eight the returned length value (to get the total number of
bytes) always results in a multiple of one page (4096 bytes) (this is the full
size of the area obtained with GETMAIN to hold the program object). If the
program object is bound with FETCHOPT=PACK, the length value returned
is the virtual storage size indicated in the directory entry. See OS/390
DFSMS Program Management for further information.
2-13 Unchanged
14 Used as a work register by the system
15 Zero, indicating successful completion.
If the LOAD is not successful and the caller provided an ERRET exit to receive control, the
GPRs contain:
Register Contents
0 Used as a work register by the system
1 System completion code for the abend that would have been issued had
the caller not provided an ERRET exit.
2-13 Unchanged
14 Used as a work register by the system
15 Reason code (never zero) associated with the system completion code
contained in GPR 1.
When control returns to the caller or the ERRET exit receives control, the access registers
(ARs) are unchanged.
Performance Implications
None.
Syntax
The LOAD macro is written as follows:
LOAD
,DCB=dcb addr dcb addr: RX-type address, or register (1) or (2) - (12); A-type
address or register (2) - (12).
,ERRET=err rtn addr err rtn addr: RX-type address, or register (2) - (12).
,RELATED=value
Parameters
The parameters are explained below:
EP=entry name
EPLOC=entry name addr
DE=list entry addr
Specifies the entry name, the address of the name, or the address of the name field in a
62-byte list entry for the entry name that was constructed using the BLDL macro. If
EPLOC is coded, the name must be padded to eight bytes, if necessary.
Note: When you use the DE parameter with the LOAD macro, DE specifies the
address of a list that was created by a BLDL macro. The LOAD and the BLDL
must be issued from the same task. Otherwise, the system might terminate the
program with a system completion code of 106 and a return code of 15.
Therefore, do not issue an ATTACH or DETACH between issuances of BLDL
and LOAD.
,DCB=dcb addr
Specifies the address of the data control block for the partitioned data set containing the
entry name described above. This parameter must indicate the same DCB used in the
BLDL mentioned above.
If the DCB parameter is omitted or if DCB=0 is specified when the LOAD macro is
issued by the job step task, the data sets referred to by either the STEPLIB or JOBLIB
DD statement are first searched for the entry name. If the entry name is not found, the
link library is searched.
If the DCB parameter is omitted or if DCB=0 is specified when the LOAD macro is
issued by a subtask, the data sets associated with one or more data control blocks
referred to by the TASKLIB operand of previous ATTACH macros in the subtask chain
are first searched for the entry name. If the entry name is not found, the search is
continued as if the LOAD had been issued by the job step task.
Note: DCB must reside in 24-bit addressable storage.
,LSEARCH=NO
,LSEARCH=YES
Specifies whether (YES) or not (NO) you want the library search limited to the job pack
area and to the first library in the normal search sequence.
,ADDR=load addr
,ADRNAPF=load addr
Specifies that the module is to be loaded beginning at the designated address. The
address must begin on a doubleword boundary. Storage for the module must have been
previously allocated in the key of the eventual user. The system does not search for the
module and does not maintain a record of the module once it is loaded. If you code
ADDR or ADRNAPF, you must also code the DCB parameter (not DCB=0) and you
must not code GLOBAL or LOADPT.
Note: The RMODE of the load module must agree with this address. If the user
specifies an address above 16 megabytes in virtual, the load module must have
an RMODE of ANY.
If your program requires that the module be in an APF-authorized library, use ADDR;
otherwise, use ADRNAPF.
For the ADDR parameter, the system checks that the module being loaded is in an
APF-authorized library.
For the ADRNAPF parameter, the system does not check that the module resides
in an APF-authorized library. Therefore, if the module is not in an APF-authorized
library, the program must make sure that the loaded programs receive control only
in problem state.
,GLOBAL=YES
,GLOBAL=(YES,P)
,GLOBAL=(YES,F)
,GLOBAL=NO
Specifies whether the module is to be loaded into the pageable common service area
(CSA) (GLOBAL=(YES,P) or GLOBAL=YES), loaded into fixed CSA (GLOBAL=(YES,F)),
or not loaded into CSA (GLOBAL=NO). (The module must not have been previously
loaded into CSA with different attributes by the same job step, the module must also be
reentrant and must reside in an APF-authorized library.) For GLOBAL=(YES,F), the
module must not be marked as requiring alignment on a page boundary. If you code the
GLOBAL parameter, you cannot code the ADDR or ADRNAPF parameter.
If the requested module resides in the link pack area, the LOAD request performs as
though the GLOBAL parameter was omitted. The LOAD request locates the module in
the link pack area, allows access to it, but does not load a copy of the desired module
into the common service area.
Note: A load request with the GLOBAL=YES, (YES,P), or (YES,F) option does not
cause the loaded module to be implicitly known to other address spaces. The
loaded module can be accessed by other address spaces, however, only the
task that loaded the module may delete it.
,EOM=YES
,EOM=NO
Indicates whether a module in global storage is to be deleted when the address space
terminates (EOM=YES) or when the task terminates (EOM=NO). If you code EOM, you
must also code GLOBAL.
,LOADPT=addr
Specifies that the starting address at which the module was loaded is to be returned to
the caller at the indicated address. If you code LOADPT, you cannot code ADDR or
ADRNAPF.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
If the load request was not successful and a caller-provided error routine (specified using the
ERRET keyword) receives control, GPR 1 contains the system completion code for the
ABEND that would have been issued had the caller not provided an ERRET exit. GPR 15
contains the reason code associated with the system completion code in GPR 1.
Example 1
Bring a load module with entry name PGMLKRUS into virtual storage. Let the system find
the module from available libraries.
LOAD EP=PGMLKRUS
Example 2
Bring a load module with entry name PGMEOM into pageable CSA storage and return the
load address at location PGMLPT.
LDPGM LOAD EP=PGMEOM,EOM=YES,LOADPT=PGMLPT,GLOBAL=(YES,P)
.
.
.
PGMLPT DS A LOAD ADDRESS RETURNED HERE
LOAD—List Form
The list form of the LOAD macro builds a nonexecutable parameter list that can be referred
to by the execute form of the LOAD macro.
Syntax
The list form of the LOAD macro is written as follows:
LOAD
,RELATED=value
,SF=L
Parameters
The parameters are explained under the standard form of LOAD macro with the following
exception:
,SF=L
Specifies the list form of the LOAD macro.
LOAD—Execute Form
The execute form of the LOAD macro can refer to and modify the parameter list constructed
by the list form of the macro.
Syntax
The execute form of the LOAD macro is written as follows:
LOAD
,ERRET=err rtn addr err rtn addr: RX-type address, or register (2) - (12).
,RELATED=value
,SF=(E,list addr) list addr: RX-type address or register (2) - (12) or (15).
Parameters
The parameters are explained under the standard form of LOAD macro with the following
exception:
,SF=(E,list addr)
Specifies the execute form of the LOAD macro.
LOADWAIT — Build a Wait State Parameter List for Use with WTO
Description
The LOADWAIT macro can:
Define storage for a parameter list
Define and initialize storage for a parameter list
Modify storage of an existing parameter list.
OS/390 MVS Programming: Authorized Assembler Services Guide describes how to use the
LOADWAIT macro.
The WSPARM parameter of the WTO macro contains the name of the parameter list that
you build using the LOADWAIT macro. WTO uses the parameter list from LOADWAIT to put
the system into the wait state and issues one message to the operator. The wait state code
and operator message explain what action the operator is to take. For more information
about wait state codes, see OS/390 MVS System Codes.
There is a list and modify form of the macro, but no standard form.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
The LOADWAIT parameter list and action code receiving byte, if specified, must be in fixed
storage of the WTO issuer’s address space.
Register Information
After the caller issues the macro, the system might use some registers as work registers or
might change the contents of some registers. When the system returns control to the caller,
the contents of these registers are not the same as they were before the macro was issued.
Therefore, if the caller depends on these registers containing the same value before and
after issuing the macro, the caller must save these registers before issuing the macro and
restore them after the system returns control.
When control returns to the caller after the caller has issued the modify form of the macro,
the general purpose registers contain:
Register Contents
0 Address of the action code variable if specified.
1 Address of parameter list.
2-15 Unchanged
Performance Implications
None.
LOADWAIT—List Form
Use the list form of the LOADWAIT macro together with the modify form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage or initializes that storage. The modify form of the macro updates the parameters in
the area previously defined by the list form.
Syntax
The list form of the LOADWAIT macro is written as follows:
LOADWAIT
Parameters
The parameters are explained as follows:
WAITTYPE=RESTARTABLE
WAITTYPE=NONREST
Identifies the type of wait state to be loaded. WAITTYPE=RESTARTABLE indicates a
restartable wait state. WAITTYPE=NONREST indicates a nonrestartable wait state.
,REASON=reason code
,REASON=0
Specifies a 2-byte wait state reason code. For more information about wait states and
their reason codes, see OS/390 MVS System Codes.
,PSAPARM=PSA parm
,PSAPARM=0
Specifies a fullword field that you can use for additional information, such as a pointer to
a data area, or a system ID at the time you issue the LOADWAIT macro. This
information is used for diagnostic purposes when the system enters a wait state. The
PSAPARM parameter is valid only if you specify WAITTYPE=RESTARTABLE.
If you do not specify PSAPARM, the system initializes the field to zeroes.
,MF=(L,list addr,attr)
Specifies the list form of the LOADWAIT macro. list addr names the area that the
system is to use for the parameter list. Use standard assembler variable naming
conventions to name this area, and refer to the parameter list by the same name. Use
this area name as input on the WSPARM parameter of the WTO macro.
attr is an optional 1- to 60-character string, which can contain any value that is valid on
an assembler DS pseudo-op. You can use this parameter to force boundary alignment
of the parameter list. If you do not code attr, the system provides a value of 0F, which
forces the parameter list to a fullword boundary.
Example 1
Generate a parameter list to load a restartable wait state.
LOADWAIT WAITTYPE=RESTARTABLE,CODE=WAIT262,MF=(L,WAITPRM)
.
.
.
DS 2D
WAIT262 EQU X'62' WAIT STATE CODE IS KNOWN
.
.
.
Example 2
Generate a parameter list to load a restartable wait state and specify a reason code and
PSAPARM.
LOADWAIT WAITTYPE=RESTARTABLE,CODE=WAIT114,REASON=REASON22,
PSAPARM=OPERINFO,MF=(L,WAITPRM2)
.
.
.
DS 2D
WAIT114 EQU X'114' WAIT STATE CODE IS KNOWN
REASON22 EQU X'2' REASON CODE IS KNOWN
OPERINFO EQU X'C5E2C1E3' PSAPARM = 'ESAT'
.
.
.
Example 3
Generate a parameter list to load a nonrestartable wait state.
LOADWAIT — Build a Wait State Parameter List for Use with WTO 41
LOADWAIT Macro
LOADWAIT WAITTYPE=NONREST,CODE=WAIT293,MF=(L,WAITPRM3)
.
.
.
DS 2D
WAIT293 EQU X'293' WAIT STATE CODE
.
.
.
LOADWAIT—Modify Form
The modify form of the macro updates an existing parameter list.
Note: When you use the modify form of the macro, the parameter list is reset to all zeroes.
You must specify all of the required information each time you use the modify form.
Syntax
The modify form of the LOADWAIT macro is written as follows:
LOADWAIT
Parameters
The parameters are explained under the list form of the macro with the following exceptions:
,ACTCODE=action code
,ACTCODE=0
Specifies a 1-byte field that the system updates with the contents of storage location
X'30E' after the system is restarted. The operator is not required to supply any
information but can store 1 byte of information into location X'30E' before initiating a
restart. ACTCODE is valid only if you specify WAITTYPE=RESTARTABLE on the modify
form of the macro.
,MF=(M,list addr)
Specifies the modify form of the LOADWAIT macro.
list addr specifies the area that the system uses to store the parameter list.
Example 1
Reserve storage for a parameter list named ‘WAITPRM’, then modify the existing list to load
a wait state code and reason code. Assume that you will not know all the wait state
information at program assembly time, so you must invoke LOADWAIT twice.
LOADWAIT MF=(L,WAITPRM)
.
.
.
LOADWAIT WAITTYPE=NONREST,CODE=WAIT232,REASON=STOPCPU,
MF=(M,WAITPRM)
.
.
.
WAIT232 DC XL2'2232' WAIT STATE CODE IS KNOWN
STOPCPU DS XL2 STOPPED PROCESSOR IS NOT KNOWN
.
.
.
Example 2
Reserve storage for a parameter list named ‘WAITPRM’, then modify the existing list to load
a wait state code and reason code. Also specify ‘OPRESP’ as the action code and
‘MOREINFO’ for the PSAPARM. Assume that you will not know all the wait state information
at program assembly time, so you must invoke LOADWAIT twice.
LOADWAIT MF=(L,WAITPRM)
.
.
.
LOADWAIT WAITTYPE=RESTARTABLE,CODE=WAIT245,ACTCODE=OPRESP,
PSAPARM=MOREINFO,REASON=REASON21,MF=(M,WAITPRM)
.
.
.
WAIT245 DC XL2'45' WAIT STATE CODE IS KNOWN
REASON21 DC XL2'7A' REASON CODE IS KNOWN
MOREINFO DC XL4'8227A245' PSAPARM IS KNOWN
OPRESP DS XL1 ACTION CODE ADDRESS IS NOT KNOWN
.
.
.
LOADWAIT — Build a Wait State Parameter List for Use with WTO 43
LOADWAIT Macro
Description
The system identifies an address space through an address space identifier (ASID), an
address space control block (ASCB), or a space token (STOKEN). Depending on the MVS
service you want to use, you might be required to supply an identifier you do not have. For
example, you might have the ASID of an address space but need to supply the ASCB. If you
have the ASID or STOKEN but need to supply the ASCB, use the LOCASCB macro to
return the ASCB address.
Environment
The requirements for the caller are:
Minimum authorization: Problem state or supervisor state, and any PSW key
Dispatchable unit mode: Task or SRB
Cross memory mode: PASN=HASN=SASN or PASN¬=HASN¬=SASN
AMODE: 24- or 31-bit
ASC mode: Primary or secondary when you specify the ASID parameter;
primary or access register (AR) when you specify STOKEN.
Interrupt status: Enabled or disabled for I/O and external interrupts
Locks: CMS lock, if you want to be sure that the address space doesn't
terminate while the system is referencing the ASCB; otherwise, no
requirement.
Control parameters: If you specify the ASID parameter, control parameters must be in
the primary address space; if you specify the STOKEN parameter,
control parameters must be in the primary address space or be in
an address/data space that is addressable through a public entry
on the caller's dispatchable unit access list (DU-AL).
Programming Requirements
None.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 Used as a work register by the system
1 ASCB address or 0
2-13 Unchanged
14 Used as a work register by the system
15 Return code
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0 Used as a work register by the system
1 0 if you specify STOKEN; otherwise, used as a work register by the
system
2-13 Unchanged
14-15 Used as work registers by the system
Performance Implications
None.
Syntax
The standard form of the LOCASCB macro is written as follows:
LOCASCB
Parameters
The parameters are explained as follows:
ASID=asid addr
Specifies the RX-type address of a halfword that contains the ASID for which the ASCB
is to be returned or the register that contains the ASID in bits 16-31. (Bits 0-15 of the
register are ignored.)
STOKEN=stoken addr
Specifies the RX-type address of the STOKEN that identifies the address space for
which the ASCB is to be returned.
ABEND Codes
None.
Return Codes
When the LOCASCB macro returns control to your program, GPR 15 contains a
hexadecimal return code.
Example 1
Get the ASCB address for the address space whose ASID is specified by the constant at
location ASN.
LA 4,ASN
LOCASCB ASID=(4)
ASN DC H'34'
Example 2
Get the ASCB address for the address space whose STOKEN is stored at the location
STOKADDR.
LOCASCB STOKEN=STOKADDR
STOKADDR DS 2F
Description
The LXFRE macro frees one or more linkage indexes. You cannot free a linkage index that
was reserved with the SYSTEM option. (See the LXRES macro). Before issuing the LXFRE
macro, disconnect all entry tables associated with the linkage index, unless you specify
FORCE=YES. If you do not disconnect the entry tables and do not specify FORCE=YES,
linkage indexes are not freed and the routine is abnormally terminated.
Related macro
LXRES
Environment
These are the requirements for the caller:
Programming Requirements
None.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the macro
2-13 Unchanged
14 Used as a work register by the macro
15 Return code
Performance Implications
None.
Syntax
The standard form of the LXFRE macro is written as follows:
LXFRE
Parameters
The parameters are explained as follows:
LXLIST=list addr
Specifies the address of a variable length list of fullword entries. The first word in the list
must contain the number (1 to 32) of linkage indexes to be freed. Each entry following
the first must contain a linkage index value specified in the form returned by the LXRES
macro.
,FORCE=NO
,FORCE=YES
Specifies whether (YES) or not (NO) the linkage index is to be freed even if entry tables
are currently connected to it. Any connected entry tables are disconnected before the
linkage index is freed. FORCE=NO is the default.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified can be any valid coding values.
ABEND Codes
052
053
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When LXFRE macro returns control to your program, GPR 15 contains a hexadecimal return
code and GPR 0 contains a hexadecimal reason code.
Examples
For examples of the use of this and other cross memory macros, refer to the chapter on
cross memory communication in OS/390 MVS Programming: Extended Addressability Guide.
LXFRE—List Form
The list form of the LXFRE macro is used to construct a nonexecutable parameter list. The
execute form of the LXFRE macro can refer to or modify the parameter list.
Syntax
The list form of the LXFRE macro is written as follows:
LXFRE
,MF=L
Parameters
The parameters are explained under the standard form of the LXFRE macro with the
following exception:
,MF=L
Specifies the list form of the LXFRE macro.
LXFRE—Execute Form
The execute form of the LXFRE macro can refer to and modify a remote parameter list
created by the list form of the macro.
Syntax
The execute form of the LXFRE macro is written as follows:
LXFRE
Parameters
The parameters are explained under the standard form of the LXFRE macro with the
following exception:
,MF=(E,cntl addr)
Specifies the execute form of the LXFRE macro. This form uses a remote parameter list.
Description
The LXRES macro reserves one or more linkage indexes for the caller's use. The reserved
linkage indexes are owned by the cross memory resource ownership task of the current
home address space. The linkage index reservation applies across all linkage tables in the
system and remains in effect until one of the following happens:
An LXFRE macro explicitly frees a reserved linkage index.
The cross memory resource ownership task terminates.
The operator re-IPLs the system.
Related macro
LXFRE
Environment
These are the requirements for the caller:
Programming Requirements
Register 13 must point to a standard register savearea that must be addressable in primary
mode.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the macro
2-13 Unchanged
14 Used as a work register by the macro
15 Return code
Performance Implications
None.
Syntax
The standard form of the LXRES macro is written as follows:
LXRES
Parameters
The parameters are explained as follows:
LXLIST=list addr
Specifies the address of a variable-length list of fullword entries. The first fullword in the
list must contain the number (1 to 32) of linkage index values to be returned. The list
must be long enough to contain the requested number of values. The linkage index
values are returned in the list entries in the proper position for ORing with the entry
index to form a PC number.
,SYSTEM=NO
,SYSTEM=YES
Specifies whether (YES) or not (NO) the linkage indexes are being reserved for system
connections. If YES is specified, a subsequent ETCON macro specifying the linkage
index causes all address spaces to be connected to the entry table.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding services performed elsewhere. The format and contents of the
information specified can be any valid coding values.
ABEND Codes
052
053
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When the LXRES macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Examples
For examples of the use of this and other cross memory macros, refer to the chapter on
cross memory communication in OS/390 MVS Programming: Extended Addressability Guide.
LXRES—List Form
The list form of the LXRES macro is used to construct a nonexecutable parameter list. The
execute form of the macro can then refer to this list or a copy of it for reentrant programs.
Syntax
The list form of the LXRES macro is written as follows:
LXRES
,MF=L
Parameters
The parameters are explained under the standard form of the LXRES macro with the
following exception:
,MF=L
Specifies the list form of the LXRES macro.
LXRES—Execute Form
The execute form of the LXRES macro can refer to and modify a remote parameter list
constructed by the list form of the macro.
Syntax
The execute form of the LXRES macro is written as follows:
LXRES
Parameters
The parameters are explained as under the standard form of the LXRES macro with the
following exception:
,MF=(E,cntl addr)
Specifies the execute form of the LXRES macro, and cntl addr is the name or address
of the list form of the macro.
Description
MCSOPER enables you to activate and manage extended MCS consoles. An extended MCS
console is a program that acts as a console. It can issue MVS commands, and receive
command responses and unsolicited message traffic. MCSOPER defines and activates an
extended MCS console to the system and provides a means of storing operator messages
and command responses. MCSOPER also deactivates the extended console or console
class, allows the extended console to receive the hardcopy message set, and releases
migration IDs. See OS/390 MVS Programming: Authorized Assembler Services Guide for a
definition of migration ID.
Use the MCSOPMSG macro to retrieve messages stored using MCSOPER. For more
information on MCSOPER and MCSOPMSG, see OS/390 MVS Programming: Authorized
Assembler Services Guide.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
In a JES3 environment prior to JES3 5.2.1 or in a mixed sysplex containing pre-MVS SP V5
systems, results might vary when you issue an MCSOPER ACTIVATE request with the
HARDCOPY OPERPARM option. (See OS/390 MVS Planning: Operations.)
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0-1 Used as work registers by the system
2-14 Unchanged
15 Used as a work register 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
MSGDLVRY=FIFO delivers better performance than MSGDLVRY=SEARCH. Use
MSGDLVRY=SEARCH when you are looking only for certain types of messages such
as command responses.
If you request that an extended console receive the hardcopy message set from all the
systems in a sysplex by specifying the MSCOPE=*ALL console attribute with the
HARDCOPY OPERPARM option, you might experience performance problems.
Syntax
The standard form of the MCSOPER macro is written as follows:
MCSOPER
,TERMNAME=terminal name terminal name addr: RX-type address or register (2) - (12).
addr
,OPERPARM=parm area addr parm area addr: RX-type address or register (2) - (12).
Parameters
The parameters are explained as follows:
REQUEST=ACTIVATE
REQUEST=DEACTIVATE
REQUEST=RELEASE
Specifies the MCSOPER function you want to perform. This is a required parameter.
The functions are as follows:
You can specify only one of these functions each time you invoke MCSOPER.
,NAME=opername addr
Specifies the address of an 8-byte field that contains the name of the console to be
activated. NAME is required if you specified REQUEST=ACTIVATE. Do not use a name
that might match the name of a device number (for example, BAD). If the name of a
console matches a device number, a VARY command might not work as expected.
,CONSID=console id addr
Specifies the address of the 4-byte user console ID. If you specified
REQUEST=ACTIVATE, CONSID is an output area that will receive the console ID. If
you specified REQUEST=DEACTIVATE, supply the address of the ID you wish to
deactivate. CONSID is required if you specified either REQUEST=ACTIVATE or
REQUEST=DEACTIVATE.
,ABTERM=NO
,ABTERM=YES
Indicates an abnormal termination of an extended MCS console. If you request to
deactivate a user console ID by abnormally terminating the console, the system
switches the extended MCS console to an active alternate console, if one is available.
If ABTERM is not specified, ABTERM=NO is the default.
,MCSCSA=csa addr
Specifies the address of a 4-byte output area that will contain the address of the MCS
console status area. When MCSOPER posts the ECB and if the return and reason
codes indicate that queueing has been disabled, you need to check the MCS console
status area, which is defined in the MCSCSA data area, mapped by IEAVG131, to
determine which problem has disabled queuing. The MCSCSA parameter is required if
you specified REQUEST=ACTIVATE.
,MCSCSAA=alet addr
Specifies the address of a 4-byte output area on a fullword boundary that will contain
the ALET that identifies the address or data space that contains the MCS console status
area. MCSCSAA is required if you specified REQUEST=ACTIVATE.
,MSGDLVRY=FIFO
,MSGDLVRY=SEARCH
,MSGDLVRY=NONE
Specifies how MCSOPER queues messages to extended MCS consoles. Specifying
FIFO will cause MCSOPER to deliver messages on a first-in, first-out basis. This is the
default option. Specifying SEARCH allows you to request messages based on search
arguments specified in the MCSOPMSG macro. Specifying NONE will keep messages
from being delivered to this console.
,MSGECB=ecb addr
Specifies the address of the ECB that the system posts when it queues a message to
the console. Note that the system posts this ECB for every message it delivers to the
message dataspace. However, since it is not possible to tell how many times an ECB
has been posted since it was last waited on, once an ECB is posted, users should issue
MCSOPMSG to retrieve messages until they receive a return and reason code
indicating that no more messages remain to be retrieved. This keyword is optional and
is not valid if you specified MSGDLVRY=NONE.
,QLIMIT=qlimit addr
Specifies either the maximum number or the address of the maximum number of
messages which the system can queue to the console issuing the request. You can
specify the maximum number as any number from 1 to 2147483647 (2 gigabytes).
QLIMIT=2147483647 is the default.
,ALERTECB=alert addr
,ALERTECB=0
Specifies the address of the ECB that the system will post when one of the following is
true:
The number of messages in storage has reached the number specified in QLIMIT.
The number of messages in storage matches the percentage of the QLIMIT number
specified in ALERTPCT.
You ran out of space for messages in storage.
There is a queuing error.
,ALERTPCT=percent addr
,ALERTPCT=percent num
Specifies the address of the percentage of the maximum number of messages specified
in QLIMIT or the number representing the percent. When the queue reaches this
percentage, the MCSOPER posts the ALERTECB. If you do not specify percent addr, or
percent num is outside the range of 1 through 99, MCSOPER will operate on the
default, 100.
,QRESUME=qresume
,QRESUME=qresume num
Specifies the address that contains the depth percent at which the queue must be to
resume queuing. If the system disabled queuing because the number of messages in
the data space reached the percentage of the QLIMIT (ALERTPCT) and you retrieve
enough messages to meet the percentage you specify in QRESUME, queuing will
resume automatically for the console issuing the request. If you do not specify
QRESUME, or QRESUME is outside the range of 0 through 99, queuing will only
resume after explicit action by the application using the MCSOPMSG
REQUEST=RESUME macro. The default is QRESUME=0.
,MIGID=id addr
Specifies the address of a one-byte output and input area. id addr specifies either the
address of the area in which MCSOPMSG returns the migration ID assigned when
REQUEST=ACTIVATE is specified or the address of the name of the migration ID you
wish to release, when specified with REQUEST=RELEASE. This ID must be in the
range of 100 through 127 or 129 through 250.
,MIGIDREL=NO.
,MIGIDREL=AUTO.
Specifies if the system will automatically release the migration ID. If NO is specified, the
migration ID will never be automatically released. This is the default option. If AUTO is
specified, the migration ID will be automatically released when a requested OR
,RTNCODE=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=reason code
Specifies the location where the system is to store the reason code. The reason code is
also in GPR 0.
ABEND Codes
None.
Figure 14 (Page 1 of 3). Return and Reason Codes for the MCSOPER Macro
Return Code Reason Code Meaning and Action
00 00 Meaning: Processing was successful.
Action: None.
00 04 Meaning: Environmental error. MCSOPER did not obtain a
migration ID if you requested one.
Action: If you need a migration ID, deactivate a console and retry
the request. It might be necessary to release some other
migration IDs.
04 None Meaning: Environmental error. For REQUEST=ACTIVATE, the
console was already active. For REQUEST=DEACTIVATE, the
console was already inactive.
Action: If you specified the wrong console, correct the error and
retry the request.
08 None Meaning: Program or environmental error. For
REQUEST=DEACTIVATE, the console has not been defined.
Action: If you specified the wrong console, correct the error and
retry the request. If the console should have been active, find out
why it was not, correct the problem, and rerun the program.
0C None Meaning: For an ACTIVATE request, the issuer does not have
read authority access to resource name, MVS.MCSOPER.*,
where * is the name of the console.
Action: Correct the problem and rerun the program.
10 00 Meaning: System error. The input parameter list contains an
error. This reason code is for IBM diagnostic purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
10 08 Meaning: System error. The input parameter list contains an
error. This reason code is for IBM diagnostic purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
Figure 14 (Page 2 of 3). Return and Reason Codes for the MCSOPER Macro
Return Code Reason Code Meaning and Action
10 0C Meaning: Program error. The specified console ID is not valid.
The reason could be one of the following:
The syntax of the console ID is incorrect
You specified the wrong console ID.
Action: Correct any errors and rerun the program.
10 18 Meaning: Program error. The authority level specified in the
OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 1C Meaning: Program error. The message format specified in the
OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 20 Meaning: Program error. The message level specified in the
OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 24 Meaning: Program error. The message type specified in the
OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 28 Meaning: Program error. The log command response specified in
the OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 2C Meaning: System error. This reason code is used for IBM
diagnostic purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
10 30 Meaning: Program error. The key specified in the OPERPARM
segment is not valid.
Action: Correct the problem and rerun the program.
10 34 Meaning: Program error. The specified migration ID is not valid.
Action: To determine the valid migration IDs, issue the DISPLAY
C command. Obtain the correct value, correct the problem, and
rerun the program.
10 38 Meaning: Program error. The command association specified in
the OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 3C Meaning: Program error. The message scope specified in the
OPERPARM segment is not valid. One of the following errors
exists:
The calling program specified ALL with some other value
A system name contains a syntax error
A duplicate system name exists in the list of systems
The specified number of systems is not valid.
Action: Correct the problem and rerun the program.
10 40 Meaning: Program error. The alternate group name specified in
the OPERPARM segment is not valid.
Action: Correct the problem and rerun the program.
10 44 Meaning: You issued MCSOPER while in cross-memory mode.
You cannot issue MCSOPER if your program is in cross-memory
mode.
Action: Correct the problem and rerun the program.
14 00 Meaning: System error. This reason code is for IBM diagnostic
purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
14 08 Meaning: System error. This reason code is for IBM diagnostic
purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
Figure 14 (Page 3 of 3). Return and Reason Codes for the MCSOPER Macro
Return Code Reason Code Meaning and Action
14 0C Meaning: Program or environmental error. There was an SAF
routine error.
Action: Check your OPERPARM statement for incorrect entries. If
you do not find an error, record the return and reason code and
supply them to the appropriate IBM support personnel.
14 10 Meaning: System error. This reason code is for IBM diagnostic
purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
14 14 Meaning: System error. This reason code is for IBM diagnostic
purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
14 18 Meaning: Program error. The console ID you specified is not
defined to the sysplex at this time.
Action: Check to see that you specified the correct console ID.
Determine whether the console is active by issuing a DISPLAY C
command from a console. Correct the problem and rerun the
program.
14 1C Meaning: System error. This reason code is for IBM diagnostic
purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
14 20 Meaning: System error. There was a data space initialization
error. The system could not create a data space because it could
not obtain a data space or ALET.
Action: This might be a performance or tuning problem. Contact
your system programmer.
14 24 Meaning: This reason code is for IBM diagnostic purposes only.
Action: Record the return and reason code and supply them to
the appropriate IBM support personnel.
14 28 Meaning: System error. Necessary storage could not be obtained
for the console.
Action: Attempt to rerun the program. If the error persists, record
the return and reason code and supply them to the appropriate
IBM support personnel.
18 None Meaning: Program error. The caller is not in supervisor state.
Action: Correct your program and resubmit it.
1C None Meaning: Environmental error. For REQUEST=RELEASE, the
user identified by the migration ID is not defined to the system.
Action: Determine the correct migration ID and rerun the
program.
20 None Meaning: Environmental error. For REQUEST=RELEASE, the
console with the specified migration ID is still active.
Action: Make sure you specified the correct migration ID. If so,
deactivate the console and reissue REQUEST=RELEASE.
Example 1
This example activates a console named TAPE1 with operator parameter information
contained in an area called PARMAREA, and values for MCSCSA and return and reason
codes.
MDR CSECT
STM 14,12,12(13)
BALR 12,2
USING ,12
MCSOPER REQUEST=ACTIVATE,NAME=TAPE1,CONSID=IDAREA, X
MSGECB=ALERT_ECB,TERMNAME=TERMINAL, X
OPERPARM=PARMAREA, X
MCSCSA=STATUS_AREA,MCSCSAA=MY_ALET, X
RTNCODE=RETCODE,RSNCODE=REASON
LM 14,12,12(13)
BR 14
PARMAREA DS CL42
IDAREA DS CL4
ASCBPTR DS A
CLASSNAME DS CL8
TERMINAL DC CL8'CN3E2'
TAPE1 DC CL8'TAPE1'
RETCODE DS F
REASON DS F
ALERT_ECB DS A
DS 2D
STATUS_AREA DS CL4
MY_ALET DS F
IEZVG111
END MDR
Example 2
This example deactivates a console named TAPE1 and switches processing to an active
alternate console.
MDR CSECT
STM 14,12,12(13)
BALR 12,2
USING ,12
MCSOPER REQUEST=DEACTIVATE,CONSID=IDAREA,ABTERM=YES, X
RTNCODE=RETCODE,RSNCODE=REASON
LM 14,12,12(13)
BR 14
IDAREA DS CL4
RETCODE DS F
REASON DS F
END MDR
Example 3
Activate an extended MCS console and specify that it is to receive the hardcopy message
set.
TESTHC CSECT
TESTHC AMODE 31
TESTHC RMODE ANY
R2 EQU 2
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R12 EQU 12
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
STM R14,R12,12(R13)
BALR R12,2
USING ,R12
MODID BRANCH=YES
GETMAIN RU,LV=DATAEND Obtain storage for data areas
LR R11,R1
USING DATAAREA,R11
ST R13,SAVEAREA+4
LA R15,SAVEAREA
ST R15,8(R13)
LR R13,R15
LA R8,OPERDATA Address of operparm area
USING MCSOPPRM,R8 IEZVG111 addressability
XC MCSOPPRM(MCSOPLEN),MCSOPPRM Clear the operparm area
Override the console attributes specified in the user profile
of the security product by turning on bit MCSOVRDY in the MCSOP data
area. Request the hardcopy attribute (to receive hardcopy message set).
OI MCSOFLAG,MCSOVRDY Override console attributes
OI MCSOMISC,MCSOHDCY Request the hardcopy attribute
MODESET MF=(E,SUP) Change to supervisor state
to issue MCSOPER ACTIVATE request
Activate an extended MCS console whose name is contained in a field
called HCCONSNM. The attributes of the extended MCS console are
contained in a field called OPERDATA, mapped by IEZVG111. The
console will have its messages delivered on a first-in-first-out
basis. The system will post a message ECB called HCMECB.
The address of the output area that contains the
address of the MCS console status area is contained in a field
called HCSTATUS. The address of the ALET that identifies the address
or data space that contains the MCS console status area is
contained in a field called HCSTATAL.
The system returns the console ID in the field called HCCONSID.
The system returns a return code and a reason code in fields
called HCRETC and HCRNC, respectively.
MCSOPER—List Form
Use the list form of the MCSOPER macro together with the execute form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage, which the execute form of the macro uses to store the parameters.
Syntax
The list form of the MCSOPER macro is written as follows:
MCSOPER
Parameters
The parameters are explained under the standard form of the macro with the following
exception:
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
Specifies the list form of the MCSOPER macro.
list addr is the name of a storage area to contain the parameters.
attr is an optional 1- to 60-character input string, which can contain any value that is
valid on an assembler DS pseudo-op. You can use this parameter to force boundary
alignment of the parameter list. If you do not code attr, the system provides a value of
0D, which forces the parameter list to a doubleword boundary.
MCSOPER—Modify Form
The modify form of the MCSOPER macro changes parameters in the control parameter list
that the system created through the list form of the macro.
Syntax
The modify form of the MCSOPER macro is written as follows:
MCSOPER
,TERMNAME=terminal name terminal name addr: RX-type address or register (2) - (12).
addr
,OPERPARM=parm area addr parm area addr: RX-type address or register (2) - (12).
Parameters
The parameters are explained under the standard form of the macro with the following
exception:
,MF=(M,list addr,COMPLETE)
,MF=(M,list addr,NOCHECK)
Specifies the modify form of the MCSOPER macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that are not specified. NOCHECK specifies
that the system does not check for required parameters and does not supply the
optional parameters that you did not specify.
MCSOPER—Execute Form
Use the execute form of the MCSOPER macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the MCSOPER macro is written as follows:
MCSOPER
,TERMNAME=terminal name terminal name addr: RX-type address or register (2) - (12).
addr
,OPERPARM=parm area parm area addr: RX-type address or register (2) - (12).
addr
Parameters
The parameters are explained under the standard form of the MCSOPER macro with the
following exception:
,MF=(E,list addr,COMPLETE)
,MF=(E,list addr,NOCHECK)
Specifies the execute form of the MCSOPER macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that are not specified. NOCHECK specifies
that the system does not check for required parameters and does not supply the
optional parameters that you did not specify.
Description
MCSOPMSG retrieves messages queued to an extended MCS console, and returns
message information in a message data block (MDB). “Retrieving” a message more
specifically means that MCSOPMSG returns the address of the MDB that contains the
message and information pertaining to that message. MCSOPMSG also resumes queuing to
a message storage area if queuing was previously suspended.
Use MCSOPMSG to retrieve messages stored using the MCSOPER macro. For more
information on MCSOPMSG, see OS/390 MVS Programming: Authorized Assembler
Services Guide.
Environment
The requirements for the caller are:
Programming Requirements
The console for which you are issuing this macro must already be activated.
If you specified MSGDLVRY=NONE on the MCSOPER macro for a particular console,
do not issue MCSOPMSG for that console.
Only the address space that activated the extended console can issue MCSOPMSG for
that console.
If you specified MSGDLVRY=FIFO for MCSOPER and you are running in a multi-task
environment, ensure that only one task is currently performing MCSOPMSG for the
console at any time.
You can use the CMDRESP, CART, and MASK parameters only if you activate the
console with MCSOPER MSGDLVRY=SEARCH.
You must include mapping macro IEAVM105. You can use mapping macro IEAVM105
to access fields in the message data block (MDB), which is returned by MCSOPMSG.
Refer to OS/390 MVS Data Areas, Vol 3 (IVT-RCWK) for the format and content of this
information.
Restrictions
None.
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0 Used as a work register by the system
1 If your program is in AR mode and GPR 1 contains the address of an
MDB, AR 1 contains the ALET for the MDB; otherwise, AR 1 is used as
work register by the system
2-14 Unchanged
15 Used as a work register 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
None.
Syntax
The standard form MCSOPMSG macro is written as follows:
MCSOPMSG
,RTNCODE=return code return code addr: RX-type address or register (2) - (12).
addr
,RSNCODE=reason code reason code addr: RX-type address or register (2) - (12).
addr
Parameters
The parameters are explained as follows:
REQUEST=GETMSG
REQUEST=RESUME
Specifies the MCSOPMSG function you want to perform.
GETMSG retrieves a queued message from storage, and RESUME resumes message
queuing.
,CMDRESP=NO
,CMDRESP=YES
Specifies the type of message search. NO indicates that MCSOPMSG will obtain the
next message. YES indicates that MCSOPMSG will return the next command response
message. CMDRESP is valid only with REQUEST=GETMSG, and is meaningful only if
you specified MSGDLVRY=SEARCH on the MCSOPER macro.
,CART=cart addr
Specifies the address of an 8-character field that contains the name of the CART
(command and response token) to use to search for the next message. A CART
associates a command with a response. You can specify CART only if you specify
CMDRESP=YES and you specified MSGDLVRY=SEARCH on MCSOPER.
,MASK=mask addr
Specifies the address of an 8-character field that contains the mask that MCSOPMSG
will compare with the CART using the logical AND instruction. Specify MASK only if you
specified CART.
,CONSID=console id addr
Specifies the address of the 4-byte console ID.
ABEND Codes
None.
Figure 16 (Page 1 of 2). Return and Reason Codes for the MCSOPMSG Macro
Return Code Reason Code Meaning and Action
00 None Meaning: MCSOPMSG completed successfully. If
REQUEST=GETMSG was specified, MCSOPMSG retrieved a
message; if REQUEST=RESUME was specified, message
queuing resumed.
Action: None
04 None Meaning: Program error. MCSOPMSG retrieved a message, but
either message queuing is disabled (if you specified
REQUEST=GETMSG) or message queuing was already enabled
(if you specified REQUEST=RESUME).
Action: For REQUEST=GETMSG, continue until all messages
have been retrieved. Then, attempt a REQUEST=RESUME to
allow the system to send messages to that console again.
08 00 Meaning: Program error. For REQUEST=GETMSG, MCSOPMSG
attempted to retrieve a message, but there are no messages
available for the specified search criteria. Note that this is the
normal, expected, return and reason code issued when
MCSOPMSG retrieved all messages currently queued to this
EMCS console.
Action: None if all messages have been retrieved or change the
search criteria and reissue MCSOPMSG.
08 01 Meaning: Environmental error. For REQUEST=RESUME,
queueing is not resumed because the message queue is being
rebuilt.
Action: If you specified ALERTECB=alert address on the
MCSOPER request to define this extended MCS console, the
calling program will receive control when the queue has been
rebuilt. Either add this parameter to the MCSOPER specification
and provide an ECB to be posted, or retry the request at a later
time.
0C None Meaning: Program error or environmental error. MCSOPMSG did
not retrieve a message. Message queuing is disabled. You either
specified search criteria on the CMDRESP, CART, or MASK
parameters for which there is no current match, or the extended
console needs to be reset.
Action: If you specified search criteria on REQUEST=GETMSG,
specify different search criteria, or specify only the CONSID
parameter. If you specified only the CONSID parameter, issue
REQUEST=RESUME on the MCSOPMSG macro.
10 01 Meaning: Program error. The specified console is not active.
Action: Verify that you specified the correct console. If so, take
steps to activate the console and retry the request. If not, correct
the error and retry the request.
10 02 Meaning: Program or environmental error. The specified console
was not activated by this address space.
Action: Ensure that you specified the correct console and that
you issued MCSOPMSG from the correct address space. Correct
the problem and retry the request.
14 01 Meaning: Program error. The parameter list contains an incorrect
acronym or an incorrect version indicator.
Action: Correct the problem and retry the request.
14 02 Meaning: Program error. The caller is not in AR mode.
Action: Correct the problem and retry the request.
Figure 16 (Page 2 of 2). Return and Reason Codes for the MCSOPMSG Macro
Return Code Reason Code Meaning and Action
14 03 Meaning: Environmental error. Another MCSOPMSG request is in
progress for this console.
Action: This duplication can happen only if you specified
MSGDLVRY=FIFO on the initial MCSOPER request. Either wait
for the current request to complete and then retry, or do not
specify MSGDLVRY=FIFO when you issue the MCSOPER macro.
14 04 Meaning: Program error. The extended console was activated
with MSGDLVRY=FIFO, but MCSOPMSG was issued with the
CMDRESP parameter.
Action: Issue MCSOPMSG without the CMDRESP parameter.
14 05 Meaning: Program error. The caller is not in supervisor state.
Action: Reissue MCSOPMSG in supervisor state.
18 None Meaning: System error. The service ended abnormally.
Action: Record the return code and supply it to the appropriate
IBM support personnel.
Example
Obtain a message for a console whose ID is specified in the field named ID. Request
message queuing to resume using a parameter list named DATA. The parameter list was
created using the list form of the macro.
MDR CSECT
R12 EQU 12
R13 EQU 13
R14 EQU 14
STM R14,R12,12(R13) 2222622
BALR R12,2
USING ,R12
MCSOPMSG REQUEST=RESUME,CONSID=ID,MF=(E,DATA,COMPLETE)
LM R14,R12,12(R13)
BR R14
DROP R12
CONSTANTS AND DATA
ID DS F
MCSOPMSG MF=(L,DATA)
IEAVM125
END MDR
MCSOPMSG—List Form
Use the list form of the MCSOPMSG macro together with the execute form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage, which the execute form of the macro uses to store the parameters.
Syntax
The list form of the MCSOPMSG macro is written as follows:
MCSOPMSG
Parameters
The parameters are explained under the standard form of the macro with the following
exception:
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
Specifies the list form of the MCSOPMSG macro.
list addr is the name of a storage area to contain the parameters.
attr is an optional 1- to 60-character input string, which can contain any value that is
valid on an assembler DS pseudo-op. You can use this parameter to force boundary
alignment of the parameter list. If you do not code attr, the system provides a value of
0D, which forces the parameter list to a doubleword boundary.
MCSOPMSG—Execute Form
Use the execute form of the MCSOPMSG macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the MCSOPMSG macro is written as follows:
MCSOPMSG
,RTNCODE=return code return code addr: RX-type address or register (2) - (12).
addr
,RSNCODE=reason code reason code addr: RX-type address or register (2) - (12).
addr
Figure 17. Parameters valid with REQUEST= services for the execute form of the macro
Parameters REQUEST=GETMSG REQUEST=RESUME
CMDRESP optional not valid
CART optional not valid
MASK optional not valid
CONSID required required
RTNCODE optional optional
RSNCODE optional optional
MF required required
Parameters
The parameters are explained under the standard form of the MCSOPMSG macro with the
following exception:
,MF=(E,list addr,COMPLETE)
,MF=(E,list addr,NOCHECK)
Specifies the execute form of the MCSOPMSG macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that you did not specify.
NOCHECK specifies that the system does not check for required parameters and does
not supply the optional parameters that you did not specify.
MCSOPMSG—Modify Form
Use the modify form of the MCSOPMSG macro together with the list and execute forms of
the macro for service routines that need to provide different options according to
user-provided input. Use the list form to define a storage area; use the modify form to set the
appropriate options; then use the execute form to call the service.
Syntax
The modify form of the MCSOPMSG macro is written as follows:
MCSOPMSG
,RTNCODE=return code return code addr: RX-type address or register (2) - (12).
addr
,RSNCODE=reason code reason code addr: RX-type address or register (2) - (12).
addr
Figure 18. Parameters valid with REQUEST= services for the modify form of the macro
Parameters REQUEST=GETMSG REQUEST=RESUME
CMDRESP optional not valid
CART optional not valid
MASK optional not valid
CONSID required required
RTNCODE optional optional
RSNCODE optional optional
MF required required
Parameters
The parameters are explained under the standard form of the macro with the following
exception:
,MF=(M,list addr,COMPLETE)
,MF=(M,list addr,NOCHECK)
Specifies the modify form of the MCSOPMSG macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that you did not specify.
NOCHECK specifies that the system does not check for required parameters and does
not supply the optional parameters that you did not specify.
Description
Note: IBM recommends that you use the MGCRE macro rather than MGCR.
The MGCR macro starts a program or subsystem from within your program and passes 31
bits of information, in the form of a token, to the started program. The MGCR macro can
also issue a reply to a WTOR macro. In other words, use MGCR to issue an internal START
or REPLY command.
Environment
The requirements for the caller are:
Programming Requirements
The command buffer can be located in 24-bit or 31-bit addressable storage.
A program token is meaningful only with the START command.
Restrictions
You can use MGCR to issue only START or REPLY commands. You must use MGCRE for
any other commands.
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
None.
Syntax
The MGCR macro is written as follows:
MGCR
Parameters
The parameters are explained as follows:
command-buffer-address
Specifies the address of a command buffer mapped by the IEZMGCR macro. The
command buffer must contain the following information:
ABEND Codes
MGCR might abnormally terminate with abend code X'D22'. See OS/390 MVS System
Codes for an explanation and programmer response for this code.
Example
Issue an internal REPLY command in response to an action message. Security tokens are
not in use.
ISSUMGCR EQU
XC MGCRPL(MGCRLTH),MGCRPL Clear the parameter list
MVC MGCRTEXT(L'TXTINSRT),TXTINSRT Move in the reply buffer
MVC REPLY,CTXTRPID Insert the reply ID
LA REG1,(MGCRTEXT-MGCRPL)+L'TXTINSRT Get MGCRPL length
STC REG1,MGCRLGTH Save length in the MGCRPL
SR REG2,REG2 Clear register zero
MGCR MGCRPL Issue the command
.
.
.
IEZMGCR DSECT=NO Mapping of MGCR parameter list
ORG MGCRTEXT
COMMAND DS CL6 Storage for REPLY verb
REPLY DS CL2 Reply ID
REPLYMSG DS CL3 WTOR response
ORG
Description
MGCRE allows a program to issue commands without operator intervention. For example,
an application could issue a VARY or CONTROL command by using MGCRE, which might
satisfy an outstanding action message.
MGCRE can pass a UTOKEN to SAF (Security Authorization Facility) to validate the
authority of the issuer.
Note: You can still use the MGCR macro to issue internal START or REPLY commands.
However, IBM recommends using MGCRE.
See OS/390 MVS Programming: Authorized Assembler Services Guide for more information
on using the MGCRE macro.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
It is possible that a console associated with a command has a CMDSYS parameter on a
control command in effect. This condition may cause the command to be sent to another
system in a sysplex.
If you issue MGCRE from a program or an address space controlling a console,
CMDSYS takes effect.
The caller cannot have an EUT FRR established.
Performance Implications
None.
MGCRE—List Form
Use the list form of the MGCRE macro together with the execute form of the macro. The list
form of the macro defines an area of storage, which the execute form of the macro uses to
store the parameters.
Syntax
The list form of the MGCRE macro is written as follows:
␣
One or more blanks must precede MGCRE.
MGCRE
,MF=L
Parameters
The parameters are explained as follows:
,MF=L
Specifies the list form of MGCRE. Do not specify any other parameters with the list form
of MGCRE.
MGCRE—Execute Form
Use the execute form of the MGCRE macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the MGCRE macro is written as follows:
␣
One or more blanks must precede MGCRE.
MGCRE
TEXT=text addr text addr: RX-type address or address in register (2) - (12).
,CMDFLAG=NOHCPY
,UTOKEN=utoken addr utoken addr: RX-type address or address in register (2) - (12).
,MF=(E, list addr) list addr: RX-type address or register (2) - (12).
Parameters
The parameters are explained as follows:
TEXT=text addr
Specifies the required input field that contains the address of a command area. If a
register is used, it should contain the address of the command area. The first 2 bytes of
this command area contain the length of the command. The command text immediately
follows this 2-byte area, and can be up to 126 characters. The command must be in
storage addressable by the caller at the time the caller issues MGCRE.
Operator commands may contain the following characters:
A to Z
0 to 9
'#$&()*+,−./¢<|!;¬%_>?:@"=
The system translates characters that are not valid into null characters (X'00').
To code: Specify the RX-type address of a pointer field that contains the address, or
the register (2) - (12), of a particular field.
,CONSID=console id
,CONSNAME=console name
CONSID specifies the required input field that contains the 4-byte ID of the console that
issued the command specified in the TEXT parameter. If a register is used, it should
contain the 4-byte console ID. If you specify CONSID, do not specify CONSNAME.
CONSNAME specifies the required input field that contains the console name. The
console name is a 2- to 8-byte character string. If a register is used, it should contain
the address of an 8-byte field containing the console name. This name identifies the
console that issued the command specified in the TEXT parameter. The console name
is left-justified and padded with blanks. If you specify CONSNAME, do not specify
CONSID.
You must specify either CONSID or CONSNAME. Use the DISPLAY CONSOLES
command to obtain these values.
Note: When you specify a console ID of X'00000000' on the CONSID parameter, the
issuer receives MASTER command authority. Entries in the hardcopy log for the
command have the name INTERNAL associated with them.
,CMDFLAG=NOHCPY
Requests that no copy of the command appear in the hardcopy log.
Note: If you do not specify this option, the system logs the command in the hardcopy
log.
,TOKEN=token
Specifies the optional input field that contains a 31-bit right-justified program token for
the command specified in the TEXT parameter. If a register is used, it should contain a
31-bit right justified token. Any 4-byte value is valid as input. TOKEN is optional.
,UTOKEN=utoken addr
Specifies the optional input field that contains the address of a security token for the
command identified in the TEXT parameter. If a register is used, it should contain the
address of a data area for the UTOKEN. You can obtain the UTOKEN value by using
the RACROUTE REQUEST=TOKENXTR, RACROUTE REQUEST=VERIFYX, or
RACROUTE REQUEST=TOKENBLD macros. See OS/390 SecureWay Security Server
External Security Interface (RACROUTE) Macro Reference for more information on the
RACROUTE macros. Command processing passes the UTOKEN to SAF (Security
Authorization Facility) to validate the authority of the issuer. The UTOKEN should be
that of the user on whose behalf the command is issued. UTOKEN is an optional
parameter; if it is omitted, the address space's UTOKEN is used.
,CART=cart
Specifies the optional input field that contains the address of the 8-byte field that
contains a command and response token. If a register is used, it should contain the
address of a data area containing the command and response token. Your installation
can use any value as a CART. The program that issues the command can tag each
command with this token, which associates the command with its response. CART is an
optional parameter.
,MF=(E,list addr)
Specifies the execute form of MGCRE. This form generates the code to store the
parameters into the parameter list and execute the MGCRE macro.
list addr specifies the area that the system uses to store the parameters.
ABEND Codes
MGCRE might abnormally terminate with abend code X'D22'. See OS/390 MVS System
Codes for an explanation and programmer response for this code.
Example
Create the list form of MGCRE, modify it using the execute form of MGCRE, and issue a
display consoles command associated with a console named CON4.
DOMTST CSECT
R2 EQU 2
USING ,R12
LA R2,CMD R2 POINTS TO THE COMMAND AREA
MGCRE MF=(E,LAREA),TEXT=(R2),CMDFLAG=(NOHCPY),CONSNAME=MYCON
CMD DS 2CL6 THE COMMAND AREA
CMDLEN DC XL2'4' LENGTH OF COMMAND
CMDCOMM DC CL4'D C ' THE ACTUAL COMMAND
MYCON DC CL8'CON4 ' NAME OF ISSUING CONSOLE
LAREA MGCRE MF=L LIST FORM OF MGCRE
END
Description
Use the MIHQUERY macro to retrieve the current MIH time interval setting for a device.
Environment
The requirements for the caller are:
Programming Requirements
Before issuing the MIHQUERY macro, you must pin the UCB you specify in the macro. The
UCB identifies the device. Pinning the UCB ensures that a reconfiguration request does not
delete or reuse the UCB between the time you determine the UCB address and the time the
MIHQUERY service uses the address.
For more information about pinning, see OS/390 MVS Programming: Authorized Assembler
Services Guide.
Restrictions
None.
When control returns to the caller of the MIHQUERY macro, the access registers (ARs)
contain:
Register Contents
0-1 Used as work registers by the system
2-13 Unchanged
14-15 Used as a work register 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
To ensure that the system can detect missing interrupts, do not issue this macro more than
once per second. Issuing the macro more than once per second might also interfere with
DISPLAY, SET IOS, and SETIOS commands.
Syntax
The standard form of the MIHQUERY macro is written as follows:
MIHQUERY
UCBPTR=ucb addr ucb addr: RS-type address, or address in register (2) - (12).
,TIMEINT=time interval time interval: RS-type address, or address in register (2) - (12).
,RETCODE=return code return code: RS-type address, or address in register (2) - (12).
,RSNCODE=reason code reason code: RS-type address, or address in register (2) - (12).
Parameters
The parameters are explained as follows:
UCBPTR=ucb addr
A required parameter that specifies the fullword containing the address of the UCB or a
copy of the UCB for the device whose MIH time interval you are requesting. To
determine the UCB address, use the UCBSCAN or UCBLOOK macro, described in
OS/390 MVS Programming: Authorized Assembler Services Guide.
,TIMEINT=time interval
A required parameter that specifies the fullword output field where the MIHQUERY
service is to place the hexadecimal value of the MIH time interval, reported in seconds.
,RETCODE=return code
An optional parameter that specifies the location where the system is to place the return
code. The return code is also in register 15.
,RSNCODE=reason code
An optional parameter that specifies the location where the system is to place the
reason code. The reason code is also in register 0.
ABEND Codes
Any errors related to state, key, and addressing requirements cause an abend X'2C6'. See
OS/390 MVS System Codes for complete information about this abend and its associated
reason codes. To help debug the problem, provide a recovery routine that records and/or
dumps the needed data, including the address and contents of the parameter list.
Figure 21. Return and Reason Codes for the MIHQUERY Macro
Return Code Reason Code Meaning and Action
00 None Meaning: MIHQUERY processing completed successfully.
Action: None.
04 None Meaning: The MIH interval for this device is zero. The system
does not monitor missing interrupts for the device.
Action: None.
08 01 Meaning: Environmental error. NIP processing is still in progress.
Action: Retry.
0C None Meaning: System error. This return code is for IBM diagnostic
purposes only.
Action: Supply the following information to the appropriate IBM
support personnel:
Return codes
Dump data
LOGREC data
Example
Obtain an address of a UCB from the DASD class and pass that address to the MIHQUERY
service. MIHQUERY determines the MIH time interval for the device.
USE THE LIST AND EXECUTE FORM OF THE MIHQUERY SERVICE. OBTAIN
AN ADDRESS OF A UCB FROM THE DASD CLASS AND PASS THAT ADDRESS TO
THE MIHQUERY SERVICE.
ASSUMPTIONS:
ENTRY STATE: SUPERVISOR
ENTRY KEY : 7
ENTRY MODE : PRIMARY
REGISTER USAGE:
BASEREG: 9
DYNAMIC AREA: 6 (SUBPOOL 2)
IOTMW111 CSECT ,
IOTMW111 AMODE 31
IOTMW111 RMODE ANY
ENTRY LINKAGE
BAKR 14,2
LR 9,15
USING IOTMW111,9
OBTAIN STORAGE FOR THE SERVICE PARAMETER LISTS AND WORKAREAS.
ESTABLISH ADDRESSABILITY TO ALL.
MIHQUERY—List Form
Use the list form of the MIHQUERY macro together with the execute form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage, which the execute form of the macro uses to store the parameters.
Syntax
The list form of the MIHQUERY macro is written as follows:
MIHQUERY
Parameters
The parameter is explained as follows:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the MIHQUERY macro.
list addr is the name of a storage area to contain the parameters.
attr is an optional 1- to 60-character input string, which can contain any value that is
valid on an assembler DS pseudo-op. You can use this parameter to force boundary
alignment of the parameter list. If you do not code attr, the system provides a value of
0D, which forces the parameter list to a doubleword boundary.
MIHQUERY—Execute Form
Use the execute form of the MIHQUERY macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the MIHQUERY macro is written as follows:
MIHQUERY
UCBPTR=ucb addr ucb addr: RS-type address, or address in register (2) - (12).
,TIMEINT=time interval time interval: RS-type address, or address in register (2) - (12).
,RSNCODE=reason code reason code: RS-type address, or address in register (2) - (12).
,MF=(E,list addr) list addr: RS-type address, or address in register (2) - (12).
,MF=(E,list addr,COMPLETE) Default: COMPLETE
Parameters
The parameters are explained under the standard form of the MIHQUERY macro with the
following exception:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the MIHQUERY macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that are not specified.
Description
The MODESET macro is used to change system status by altering the PSW key and/or
PSW problem state indicator. The MODESET macro has two forms: the form that generates
inline code and the form that generates an SVC.
Environment
The requirements for the caller are:
Minimum authorization: Problem state, with any PSW key; also, the program must reside in
an APF–authorized library and be link–edited with authorization
code AC=1.
Dispatchable unit mode: Task
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 24- or 31-bit
ASC mode: Primary or secondary
Interrupt status: Enabled or disabled for I/O and external interrupts
Locks: The caller may hold locks, but is not required to hold any.
Control parameters: None.
Programming Requirements
The caller must include the IKJTCB and IHARB mapping macros. If EXTKEY= TCB, RBT1,
or RBT234 is specified, the home address space must be the currently addressable address
space.
Restrictions
None.
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
None.
Syntax
The standard form of the MODESET macro that generates inline code is written as follows:
MODESET
,SAVEKEY=old key addr old key addr: RX-type address or register (2).
Notes:
1. If KEYADDR=(2) is specified above, then SAVEKEY=(2)
cannot be specified.
2. If WORKREG and SAVEKEY are specified with KEYREG, the
KEYREG register should be different from the WORKREG
register. Also, if SAVEKEY is specified with KEYREG, the
KEYREG register should not be register 2.
Notes:
1. WORKREG is required if the following are specified:
EXTKEY=TCB
EXTKEY=RBT234
EXTKEY=RBT1
2. The WORKREG parameter should be register 1-15 if one of
these four parameters is specified because WORKREG is
used as a base register on the SPKA instruction.
WORKREG=0 sets the PSW key to zero.
Parameters
The parameters are explained as follows:
EXTKEY=key
Specifies the key, or the address of the key, to be set in the current PSW.
,WORKREG=work reg
Specifies the register into which the contents of register 2 are to be saved while
performing the SAVEKEY function, or the working register to be used by the EXTKEY or
KEYADDR function. If WORKREG=2 is specified, no register saving takes place.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
ABEND Codes
The MODESET macro might abnormally terminate with abend code X'0C2'. See OS/390
MVS System Codes for an explanation and programmer response.
Example 1
Save the current PSW key, and change the key to that of the active TCB.
MODESET EXTKEY=TCB,SAVEKEY=KEYSAVE,WORKREG=1
Example 2
Save the current key at location KEY and set the key to the value contained in bits 24-27 of
register 3.
MODESET KEYREG=REG3,SAVEKEY=KEY,WORKREG=4
SVC Generation
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
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
None.
Syntax
The standard form of the MODESET macro that generates an SVC is written as follows:
MODESET
Parameters
The parameters are explained as follows:
KEY=ZERO
KEY=NZERO
Specifies that the PSW key (bits 8-11) is to be either set to zero (ZERO) or set to the
value in the caller's TCB (NZERO).
,MODE=PROB
,MODE=SUP
Specifies that the PSW problem state indicator (bit 15) is to be either turned on (PROB)
or turned off (SUP). If the MODESET operation completes with a problem state PSW,
only the key specified by the problem state PSW will be authorized.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
ABEND Codes
The MODESET macro might abnormally terminate with abend code X'16B'. See OS/390
MVS System Codes for an explanation and programmer response.
Figure 22. Return and Reason Codes for the MODESET Macro
Return Code Reason Code Meaning and Action
00 00 Meaning: The operation was successful.
Action: None.
Example
Change to supervisor mode and key zero.
MODESET KEY=ZERO,MODE=SUP
MODESET—List Form
Syntax
The list form of the MODESET macro that generates an SVC is written as follows:
MODESET
,MF=L
Parameters
The parameters are explained under the standard form of the MODESET macro that
generates an SVC, with the following exception:
,MF=L
Specifies the list form of the MODESET macro.
MODESET—Execute Form
Syntax
The execute form of the MODESET macro that generates an SVC is written as follows:
MODESET
Parameters
The parameters are explained under the standard form of the MODESET macro that
generates an SVC, with the following exception:
,MF=(E,list addr)
Specifies the execute form of the MODESET macro.
list addr specifies the area that the system used to store the parameters.
Description
The NIL macro is used to provide a lock on a byte of storage on which an AND immediate
(NI) instruction is to be executed. Because the byte of storage exists in a multiprocessing
environment, the possibility exists that the byte might be changed by another processor at
the same time. Storage modification during NIL processing is accomplished by using the
compare and swap (CS) instruction.
For details on the AND immediate and compare and swap instructions, see Principles of
Operation.
Environment
These are the requirements for the caller:
Programming Requirements
None.
Restrictions
None.
Performance Implications
None.
Syntax
The NIL macro is written as follows:
NIL
Parameters
The parameters are explained as follows:
byte addr
Specifies the address of the byte to which the AND function is to be applied.
,mask
Specifies the value to be ANDed to the byte at the address specified above.
,REF=stor addr
Specifies the address of a storage location on a fullword boundary. This address
provides the means by which the compare and swap instruction may be executed. The
address must be less than or equal to the byte address specified above, and the
difference between the addresses must be less than 4095. The two addresses must be
addressable via the same base register.
,WREGS=(reg1,reg2,reg3)
,WREGS=(reg1,reg2)
,WREGS=(reg1,,reg3)
,WREGS=(,reg2,reg3)
,WREGS=(reg1)
,WREGS=(,reg2)
,WREGS=(,,reg3)
Specifies the work registers to be used to perform the compare and swap instruction.
reg1 is used to contain the “old” byte; reg2 is used to contain the “updated” byte; and
reg3 is used to contain the mask.
ABEND Codes
None.
Example
Turn off bit TNVLXMET in byte TNVLCS1. The reference field, TNVLFW3, specifies the word
being updated.
NIL TNVLCS1,X'FF'-TNVLXMET,REF=TNVLFW3
Description
A set of tables, called nucleus module lists (NMLs), are used to identify the members in
SYS1.NUCLEUS that are to be loaded into the DAT-on nucleus region. NMLs can be
installed as part of an IBM product, a vendor product, or a customer user modification. Each
NML contains a list of the SYS1.NUCLEUS members that are part of the same product or
user modification. The NMLs themselves are load modules that also reside in
SYS1.NUCLEUS.
The NML must have a module name in the form of IEANCnnn where nnn is a 3-digit number
from 001 through 256.
Use the NMLDEF macro to generate an NML statement (at the end of the macro expansion).
See OS/390 MVS Programming: Authorized Assembler Services Guide for more information
on using the NMLDEF macro.
Environment
The requirements for the caller are:
Minimum authorization: Problem state or supervisor state, and any PSW key
Dispatchable unit mode: Task or SRB
Cross memory mode: No requirement
AMODE: 24- or 31-bit
ASC mode: No requirement
Interrupt status: No requirement
Locks: No requirement
Control parameters: None.
Programming Requirements
None.
Restrictions
None.
Register Information
None.
Performance Implications
None.
Syntax
The standard form of the NMLDEF macro is written as follows:
NMLDEF
Parameters
The parameter is explained as follows:
NUCL=nucid
Identifies the name of one or more SYS1.NUCLEUS members that are to be loaded into
the nucleus region. At least one nucleus identifier must be specified on the NMLDEF
macro. If you specify more than one nucleus identifier, enclose the list in parentheses
and use commas to separate the identifiers.
ABEND Codes
None.
Example 1
Specify the macro as follows to name an NML as IEANC002 and identify the members
named ABC00122 and ABC00123 in SYS1.NUCLEUS that are to be loaded into the nucleus
region.
IEANC222 NMLDEF NUCL=(ABC22122,ABC22123)
Example 2
To install a user nucleus-resident routine or a release of a product, you can use SMP/E, or
code your own JCL.
The following example JCL creates an NML with the CSECT name of IEANC001 containing
the module name of DXXTEST.
//FORDON JOB MSGLEVEL=(1,1)
//NMLDEF EXEC ASMHCL
//ASM.SYSIN DD
IEANC221 NMLDEF NUCL=DXXTEST
//LKED.SYSLMOD DD DSN=SYS1.NUCLEUS,VOL=SER=DCH352,UNIT=3382,DISP=OLD
//LKED.SYSIN DD
NAME IEANC221
/
Example 3
To install a user nucleus-resident routine or a release of a product, you can use SMP/E, or
code your own JCL.
The following example JCL creates NMLs with the CSECT name of IEANC002 containing
module names of ABC00001-ABC00010.
//FORDON JOB MSGLEVEL=(1,1)
//NMLDEF EXEC ASMHCL
//ASM.SYSIN DD
IEANC222 NMLDEF NUCL=(ABC22221,ABC22222,ABC22223,ABC22224,ABC22225, X
ABC22226,ABC22227,ABC22228,ABC22229,ABC22212)
//LKED.SYSLMOD DD DSN=SYS1.NUCLEUS,VOL=SER=DCH352,UNIT=3382,DISP=OLD
//LKED.SYSIN DD
NAME IEANC222
/
Description
The NUCLKUP macro provides lookup functions by name and by address. Use the macro to
get:
The name and address of a nucleus CSECT if you have an address within the CSECT
The address and AMODE of a nucleus CSECT or ENTRY if you have its name
Environment
The requirements for the caller are:
Minimum authorization: Problem state or supervisor state, and any PSW key
Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 24- or 31-bit
ASC mode: Primary
Interrupt status: Enabled or disabled for I/O and external interrupts
Locks: No requirement
Control parameters: Must be in the primary address space
Programming Requirements
The caller must include the CVT mapping macro in the program that issues the NUCLKUP
macro.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 For a BYNAME request, the address and AMODE of the CSECT or
ENTRY; for a BYADDR request, the 31-bit address of the CSECT.
1 For a BYNAME request, the high-order byte is zero and the low-order
three bytes contain the length from the entry point to the end of the
CSECT; for a BYADDR request, register 1 contains the address of the
8-byte area in which the CSECT name is returned.
2-14 Unchanged, except if you specify BYNAME,NAME=name id,ADDR=addr,
and addr is a register. In this case, the register you specify will contain the
address of the CSECT or ENTRY.
15 Return code.
Performance Implications
None.
Syntax
The standard form of the NUCLKUP macro is written as follows:
NUCLKUP
Parameters
The parameters are explained as follows:
BYNAME
BYADDR
Specifies the function to be performed. If BYNAME is specified, the user supplies on
NAME=name id the name of a CSECT or ENTRY and receives on ADDR the address
and AMODE of that CSECT or ENTRY. If BYADDR is specified, the user supplies on
ADDR an address within a CSECT and receives on NAME=name id the name and
address of the CSECT.
,NAME=name id
,NAME=name loc
Specifies the name or the location of the name of the CSECT depending on the option
requested. If the user specifies BYNAME, name id contains the 8-character name to be
searched for or the address of that name. If the user specifies BYADDR, name loc will
contain the address of the 8-byte area in which the CSECT name is to be returned.
,ADDR=addr
Contains the address to be searched for if BYADDR is specified; contains the address
of the CSECT or ENTRY that is returned if BYNAME is specified.
The NUCLKUP service routine sets bit 0 of the word containing the address returned on
a BYNAME request to indicate the AMODE of the CSECT. For example, if the
requestor's AMODE is 31-bit and the AMODE of the CSECT is ANY, the NUCLKUP
service routine sets bit 0 to 1. The setting of bit 0 is summarized in the following table:
24 0 1 0
31 0 1 1
ABEND Codes
None.
Return Codes
When NUCLKUP macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Example 1
Place the address and AMODE of entry point IEAVESTU in register 0.
NUCLKUP BYNAME,NAME='IEAVESTU',ADDR=(2)
Example 2
Look up the address and amode of the entry point mane in location STRING and return it at
location RETLOC.
NOCLKUP BYNAME,NAME=STRING,ADDR=RETLOC
.
.
STRING DS CL8
RETLOC DS F
Example 3
Return the CSECT name and address of the nucleus routine in which the address at location
INADDR falls. Return the name at location EPLOC1 and the address at INADDR.
NUCLKUP BYADDR,NAME=EPLOC,ADDR=INADDR
.
.
EPLOC DS CL8
INADDR DS F
Description
The OIL macro is used to provide a lock on a byte of storage on which an or immediate (OI)
instruction is to be executed. Because the byte of storage exists in a multiprocessing
environment, the possibility exists that the byte might be changed by another processor at
the same time. Storage modification during OIL processing is accomplished by using the
compare and swap (CS) instruction.
For details on the or immediate and compare and swap instructions, see Principles of
Operation.
Environment
These are the requirements for the caller:
Programming Requirements
None.
Restrictions
None.
Performance Implications
None.
Syntax
The OIL macro is written as follows:
OIL
Parameters
The parameters are explained as follows:
byte addr
Specifies the address of the byte to which the OR function is to be applied.
,mask
Specifies the value to be ORed to the byte at the address specified above.
,REF=stor addr
Specifies the address of a storage location on a fullword boundary. This address
provides the means by which the compare and swap instruction may be executed. The
address must be less than or equal to the byte address specified above, and the
difference between the addresses must be less than 4095. The two addresses must be
addressable via the same base register.
,WREGS=(reg1,reg2,reg3)
,WREGS=(reg1,reg2)
,WREGS=(reg1,,reg3)
,WREGS=(,reg2,reg3)
,WREGS=(reg1)
,WREGS=(,reg2)
,WREGS=(,,reg3)
Specifies the work registers to be used to perform the compare and swap instruction.
reg1 is used to contain the “old” byte; reg2 is used to contain the “updated” byte; and
reg3 is used to contain the mask.
ABEND Codes
None.
Example
Turn on bit TVNLXMET in byte TVNLCS1. The reference field TVNL specifies the area
containing the word being updated.
OIL TVNLCS1,TVNLXMET,REF=TVNL
Description
Use the OUTADD macro to create an output descriptor for a system output (sysout) data set.
For information about using the OUTADD macro, see “Dynamic Output” in OS/390 MVS
Programming: Authorized Assembler Services Guide.
The OUTADD macro has no standard form. Use the list form to generate a storage
declaration for the input parameter list to dynamic output. Use the execute form to modify the
parameter list and invoke dynamic output.
Environment
The requirements for the caller are:
Programming Requirements
When you code the input data to dynamic output, all character data must be left-justified in a
field of blanks. Any noncharacter input data must be right-justified in a field of binary zeroes.
All input addresses or pointers must be coded as 31-bit addresses, even when you invoke
dynamic output in a 24-bit addressing environment. If you use a 24-bit address, you must
right-justify the address in a 4-byte field, and set the left-most byte to binary zeroes.
Restrictions
You can use dynamic output in a JES2 environment or a JES3 4.2.1 or later
environment.
Output descriptors are deleted with the OUTDEL macro. On some systems, the system
does not free the output descriptor's storage when you delete the output descriptor.
Whether or not this storage is freed depends on the version of JES that is being used
on your system. For more information, see “Dynamic Output” in OS/390 MVS
Programming: Authorized Assembler Services Guide.
When you use OUTADD to create output descriptors in a program that also uses
checkpoint/restart, you must observe the restrictions that are described in OS/390
DFSMS Checkpoint/Restart.
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
None.
OUTADD—List Form
Syntax
The list form of the OUTADD macro is written as follows:
OUTADD
MF=L
The parameters of the list form, which are both required, are explained as follows:
name
The list form defines the storage area to be used as the input parameter list to the
OUTADD macro. name specifies the symbolic address of this storage.
MF=L
Specifies the list form of the OUTADD macro.
Example
Use the list form of the OUTADD macro to generate the input parameter list that is to be
used by the execute form of the OUTADD macro. Locate the parameter list at symbolic
location, PARML.
PARML OUTADD MF=L
OUTADD—Execute Form
The execute form of the OUTADD macro modifies and executes the parameter list that was
built with the list form of the OUTADD macro.
Syntax
The execute form of the OUTADD macro is written as follows:
OUTADD
NAME=descriptor name addr descriptor name addr: Rx-type address or register (2)-(12).
SYSNAME=descriptor name
addr
Parameters
The parameters are explained as follows:
,ENQ=CONDITIONAL
,ENQ=UNCONDITIONAL
Specifies whether the OUTADD create request is to wait on a system queue. When you
invoke dynamic output to create an output descriptor, the system serializes the create
request. Because the system processes the requests one at a time, each must wait on a
system queue for all the previous requests to be processed. If you do not want your
request to wait, code ENQ=CONDITIONAL. This causes the system to ignore your
create request unless the queue is empty. You get return code 04 with reason code of
X'405' when the system ignores your create request. To allow your request to go on
the queue, code ENQ=UNCONDITIONAL. If you omit the ENQ parameter, your request
always goes on the queue.
,MF=(E,list addr)
Specifies the execute form of the OUTADD macro.
list addr specifies the area that the system uses to store the parameters.
ABEND Codes
OUTADD might abnormally terminate with abend codes X'76D' or X'054'. See OS/390
MVS System Codes for explanations and programmer responses.
If the dynamic output request fails, you get a nonzero return code in GPR 15 and a reason
code in GPR 0. If any text unit can be associated with the failure, the key of the failing text
unit is in the rightmost two bytes of GPR 1. GPR 1 contains zero if the failure does not
implicate a particular text unit, or if a text unit caused the failure but the system cannot
determine what text unit is responsible.
When you are using a reason code to debug your program, it is sometimes advisable to look
beyond the immediate explanation of the reason code. For example, even if the reason code
indicates a bad text unit, the text units you coded might be perfectly correct. The pointers to
the text units, however, might be incorrectly coded, or one of the pointers in the pointer list
might be bad.
For programmers who want them, symbolic names for reason codes are available in the
IEFDORC mapping macro. (See OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).)
Reason codes are four bytes long.
Figure 24. Return and Reason Codes for the OUTADD Macro
Return Code Reason Code Meaning and Action
00 000 Meaning: The dynamic output request is successful.
Action: None.
04 400-408 Meaning: The dynamic output request failed because of an error
in dynamic output or elsewhere in the system.
08 380-391 Meaning: The dynamic output request failed. There is an error in
500-504 an operating system program.
Action: Contact the system programmer.
08 000 Meaning: The dynamic output request failed. The request was
6000-7FFF denied by your installation. These reason codes are defined by
your installation.
0C 300-314 Meaning: The dynamic output request failed. The program that
invoked dynamic output has built the text units incorrectly or, less
likely, the installation exit routine has built the text units
incorrectly.
0C 380-394 Meaning: The dynamic output request failed because the
parameter list is incorrectly initialized.
0C 409 Meaning: The dynamic output request failed. The caller's text unit
pointer list was altered by another task during dynamic output
processing.
10 700-702 Action: An abend occurred in the system.
Action: Consult the system programmer.
The table below documents the reason codes that can occur when the OUTADD macro
returns with a return code of 0C (in GPR15). The symbol for return code 0C is DOINVPRM in
macro IEFDORC. The “symbol” field in the following table gives the symbolic name for the
different reason code values. These symbols can be found in macro IEFDORC.
Note: Reason codes less than 380 (hexadecimal) can be returned if the dynamic output
installation exit modifies the text units associated with the request, producing an error
that is detected later by dynamic output processing.
The table below documents the reason codes that can occur when the OUTADD macro
returns with a return code of 10 (in GPR15). The symbol for return code 10 is DOSYSERR in
macro IEFDORC. The “symbol” field in the following table gives the symbolic name for the
different reason code values. These symbols can be found in macro IEFDORC.
Example
Use the execute form of the OUTADD macro to modify and execute a parameter list at
symbolic location PLIST. The output descriptor is at symbolic location, DESCR2. The text
unit pointer list is at symbolic location, TEXTL.
OUTADD NAME=DESCR2,TEXTPTR=TEXTL,MF=(E,PLIST)
Description
Use the OUTDEL macro to delete an output descriptor for a system output (sysout) data set.
For information about using the OUTDEL macro, see “Dynamic Output” in OS/390 MVS
Programming: Authorized Assembler Services Guide.
The OUTDEL macro has no standard form. Use the list form to generate a storage
declaration for the input parameter list to dynamic output. Use the execute form to modify the
parameter list and invoke dynamic output.
Environment
The requirements for the caller are:
Programming Requirements
Use OUTDEL only when the output descriptor being deleted was added by the
OUTADD macro.
When you code the input data to dynamic output, all character data must be left-justified
in a field of blanks. Any noncharacter input data must be right-justified in a field of binary
zeroes.
Restrictions
You can use dynamic output in a JES2 environment or a JES3 4.2.1 or later
environment.
On some systems, the system does not free the output descriptor's storage when you
delete the output descriptor. Whether or not this storage is freed depends on the version
of JES being used on your system. For more information, see “Dynamic Output” in
OS/390 MVS Programming: Authorized Assembler Services Guide.
Register Contents
0 Reason code
1 Zero
2-14 Unchanged
15 Return code
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
None.
OUTDEL—List Form
Syntax
The list form of the OUTDEL macro is written as follows:
OUTDEL
,MF=L
Parameters
The parameters of the list form, which are both required, are explained as follows:
name
The list form defines the storage area to be used as the input parameter list to the
OUTDEL macro. name specifies the symbolic address of this storage.
MF=L
Specifies the list form of the OUTDEL macro.
Example
Use the list form of the OUTDEL macro to generate the input parameter list that is to be
used by the execute form of the OUTDEL macro. Locate the parameter list at symbolic
location, PARML.
PARML OUTDEL MF=L
OUTDEL—Execute Form
The execute form of the OUTDEL macro modifies and executes the parameter list that was
built with the list form of the OUTDEL macro.
Syntax
The execute form of the OUTDEL macro is written as follows:
OUTDEL
NAME=descriptor name addr descriptor name addr: RX-type address or register (2)-(12).
Parameters
The parameters are explained as follows:
,MF=(E,list addr)
Specifies the execute form of the OUTDEL macro.
list addr specifies the area that the system uses to store the parameters.
ABEND Codes
OUTDEL might abnormally terminate with abend codes X'76D' or X'054'. See OS/390
MVS System Codes for explanations and programmer responses.
For programmers who want them, symbolic names for reason codes are available in the
IEFDORC mapping macro. (See OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).)
Reason codes are four bytes long.
Figure 29 (Page 1 of 2). Return and Reason Codes for the OUTDEL Macro
Return Code Reason Code Meaning and Action
00 00 Meaning: The dynamic output request is successful.
Action: None.
04 400-407 Meaning: The dynamic output request failed because of an error
in dynamic output or elsewhere in the system.
Action: None.
08 380-38B Meaning: The dynamic output request failed. There is an error in
391 an operating system program.
500-503
Action: Contact the system programmer.
Figure 29 (Page 2 of 2). Return and Reason Codes for the OUTDEL Macro
Return Code Reason Code Meaning and Action
08 00 Meaning: The dynamic output request failed. The request was
6000-7FFF denied by your installation. These reason codes are defined by
your installation.
Action: None.
0C 30B-394 Meaning: The dynamic output request failed because the
parameter list is incorrectly initialized.
Action: None.
10 700-702 Meaning: An abend occurred in the system.
Action: Consult the system programmer.
For programmers who want them, symbolic names for reason codes are available in the
IEFDORC mapping macro. (See OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).)
Reason codes are four bytes long.
The table below documents the reason codes that can occur when the OUTDEL macro
returns with a return code of 0C (in GPR15). The symbol for return code 0C is DOINVPRM in
macro IEFDORC. The “symbol” field in the following table gives the symbolic name for the
different reason code values. These symbols can be found in macro IEFDORC.
The table below documents the reason codes that can occur when the OUTDEL macro
returns with a return code of 10 (in GPR15). The symbol for return code 10 is DOSYSERR in
macro IEFDORC. The “symbol” field in the following table gives the symbolic name for the
different reason code values. These symbols can be found in macro IEFDORC.
Example
Use the execute form of the OUTDEL macro to modify and execute a parameter list at
symbolic location PLIST. The output descriptor is at symbolic location, DESCR2.
OUTDEL NAME=DESCR2,MF=(E,PLIST)
Description
Note: IBM recommends the use of stacking PC routines instead of basic PC routines;
stacking PC routines use system-provided linkage rather than issuing PCLINK to
save and restore the caller's environment.
Routines that receive control as a result of a basic PC instruction use the PCLINK macro to
provide a standardized method of maintaining basic PC linkage information. PCLINK has
three forms:
PCLINK STACK saves some of the environment when a routine gets control as a result
of a basic PC instruction.
PCLINK UNSTACK restores that environment before the routine issues a PT instruction
to return control to the calling routine.
PCLINK EXTRACT retrieves information from the environment that PCLINK STACK
saved.
See OS/390 MVS Programming: Extended Addressability Guide for information about basic
and stacking PC routines, the instructions they can use, and the environmental information
that PCLINK saves and restores.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
Your program must not change registers 13-4 between receiving control and the time of
issuing PCLINK.
Performance Implications
Processing is more efficient if SAVE=NO is specified.
Syntax
The STACK option of the PCLINK macro is written as follows:
PCLINK
STACK
,INKEY=ZERO
Parameters
The parameters are explained as follows:
STACK
Saves some of the environment when a routine gets control as a result of a basic PC
instruction.
,INKEY=ZERO
Specifies that the PSW key is zero upon entry to PCLINK. If this parameter is not
specified, the PSW key is temporarily changed to zero.
,OUTKEY=CALLER
,OUTKEY=ZERO
,OUTKEY=KEYn
Specifies the setting of the PSW key after the PCLINK macro has completed.
Specifying CALLER causes the PSW key to be restored to the value it had on entry.
Specifying ZERO sets the PSW key to zero. Specifying a key value indicates a specific
value for the key. You may specify any key value from zero to F.
,SAVE=YES
,SAVE=NO
Specifies whether (YES) or not (NO) to preserve registers 8 - 12. The save area used is
different from the area addressed by register 13. SAVE=YES is the default.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding services performed elsewhere. The format and contents of the
information specified can be any valid coding values.
ABEND Codes
052
053
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
Performance Implications
Processing is more efficient if UNSTACK,SAVE=NO,THRU is specified separately for each
stack element to be dequeued rather than one request for several elements.
Syntax
The UNSTACK option of the PCLINK macro is written as follows:
PCLINK
UNSTACK
,INKEY=ZERO
Parameters
The parameters are explained as follows:
UNSTACK
Restores the environment before the routine issues a PT instruction to return control to
the calling routine.
,THRU=(reg)
Specifies that the stack element identified by the token contained in the specified
register, as well as all more recently stacked elements, are to be removed from the
requestor's stack. The stack element specified by the token is used to restore registers.
If the system cannot process the request, the routine specified by the ERRET parameter
gets control; if the ERRET parameter is not specified, the requestor is abnormally
terminated.
When a PCLINK UNSTACK,THRU is completed, the PSW program mask is restored
from the stack element identified by the token and the registers are as follows:
Register Contents
0-1 Unchanged
2 Bits 24-27 contain the PSW key from the stack element identified by
the token
3 As saved by PCLINK STACK
4-7 Unchanged
8-12 Unchanged if SAVE=YES is specified, used as work registers by the
system if SAVE=NO is specified
,TO=(reg)
Specifies that all stack elements stacked more recently than the element identified by
the token contained in the specified register are to be removed from the stack. The
element identified by the token remains on the stack. If the system cannot process the
request, the routine specified by the ERRET parameter gets control; if the ERRET
parameter is not specified, the requestor is abnormally terminated.
Use the TO parameter for stack cleanup in an FRR or ESTAE retry routine or in an FRR
that is going to retry.
When a PCLINK UNSTACK,TO is completed, the registers are as follows:
Register Contents
0-1 Used as work registers by the system
2 Unchanged if INKEY=ZERO is specified and ERRET is not specified;
otherwise, PSW key of PCLINK caller
3-7 Unchanged
8-12 Unchanged if SAVE=YES is specified, used as work registers by the
system if SAVE=NO is specified
13 Unchanged
14-15 Used as work registers by the system
,PURGE=YES
Specifies that each stack element is to be freed until no more exist on the requestor's
stack. Any element that resides in a terminated address space as well as elements
stacked prior to it are not freed, but the stack pointer indicates an empty stack and the
PCLINK request returns normally to the caller.
The ERRET parameter cannot be used with PURGE.
When the PCLINK UNSTACK,PURGE is completed, the registers are as follows:
Register Contents
0-1 Used as work registers by the system
2 Unchanged if INKEY=ZERO is specified; otherwise, PSW key of
PCLINK caller
3-7 Unchanged
8-12 Unchanged if SAVE=YES is specified, used as work registers by the
system if SAVE=NO is specified
13 Unchanged
14-15 Used as work registers by the system
,INKEY=ZERO
Specifies that the PSW key is zero on entry to PCLINK. If this parameter is not
specified, the key is temporarily changed to zero.
,OUTKEY=STACK
,OUTKEY=ZERO
Specifies the setting of the PSW key after the PCLINK request is completed. Specifying
OUTKEY=ZERO returns to the caller in key zero. Specifying OUTKEY=STACK restores
the key to the value contained in the stack element identified by token.
OUTKEY=STACK is the default.
This parameter is valid only with PCLINK UNSTACK,THRU.
,SAVE=YES
,SAVE=NO
Specifies whether (YES) or not (NO) registers 8 - 12 are to be preserved. The save
area used for these registers is not the area pointed to by register 13.
,ERRET=addr
Specifies the address of an exit routine to be given control if PCLINK UNSTACK
encounters an error. ERRET is valid only with the TO and THRU parameters.
The ERRET exit routine receives control in the addressing mode of the caller of
PCLINK. When an ERRET exit routine gets control, the cross memory state is the same
as when the PCLINK macro was issued. The registers are as follows:
Register Contents
0-1 Used as work registers by the system
2 PSW key of PCLINK caller
3 Used as a work register by the system
4-7 Unchanged
8-12 Unchanged if SAVE=YES is specified, used as work registers by the
system if SAVE=NO is specified
13 Used as a work register by the system
14 The token passed as input
15
4 - stack was empty
8 - input token is invalid
12 - an address on the queue is invalid
16 - An ASID on the queue is invalid
20 - Unknown error
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding services performed elsewhere. The format and contents of the
information specified can be any valid coding values.
ABEND Codes
052
053
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Environment
The requirements for the caller are:
Programming Requirements
Your program must have addressability to the address space from which PCLINK STACK
was issued for the current stack element.
Restrictions
None.
Performance Implications
None.
Syntax
The EXTRACT option of the PCLINK macro is written as follows:
PCLINK
EXTRACT
,ALL=YES
,SVAREA=(reg)
,RETADR=(reg)
,PARM15=(reg)
,PARM0=(reg)
,PARM1=(reg)
,KEY=(reg)
,ASID=(reg)
,LP=(reg)
,ENTRY=(reg)
Parameters
The parameters are explained as follows:
EXTRACT
Retrieves information from the saved environment.
,TOKEN=(reg)
Specifies a register that contains a 32-bit stack token identifying the most recently
stacked element.
,ALL=YES
Specifies that all information stored in the stack element identified by the token is to be
extracted. The stored information is placed into the same registers (registers 13, 15, and
0-4) it was in when PCLINK STACK was issued. Registers 5 and 14 are not restored.
,SVAREA=(reg)
Specifies a register into which the address of the program call issuer's save area is to
be placed.
,RETADR=(reg)
Specifies a register into which the AMODE (in which control is to be returned), the return
address, and PSW problem state bit are to be placed. These occupy bits 0,1-30, and
31, respectively.
,PARM15=(reg)
,PARM1=(reg)
,PARM0=(reg)
Specifies a register into which the contents of register 15 (PARM15), register 1
(PARM1), or register 0 (PARM0) at the time PCLINK STACK was issued are to be
placed.
,KEY=(reg)
Specifies a register into which the basic PC issuer's PSW key is to be placed. The key
occupies bit positions 24-27.
,ASID=(reg)
Specifies a register into which the basic PC issuer's PSW key mask (bits 0-15) and
ASID (bits 16-32) are to be placed.
,LP=(reg)
Specifies a register into which the latent parameter list address is to be placed.
,ENTRY=(reg)
Specifies a register into which the contents of register 5 as established by the PCLINK
STACK macro are to be placed. Bit 0 of the register used by the ENTRY parameter
specifies the addressing mode of the program call routine that issued the PCLINK
macro.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding services performed elsewhere. The format and contents of the
information specified can be any valid coding values.
ABEND Codes
052
053
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Description
Note: IBM recommends that you use the PGSER macro rather than PGANY.
Some fixed pages are assigned within the first 16 megabytes of storage. The system
assumes that once a page has been fixed, it is likely to be fixed again. The next time that
page is loaded, the system tries to put it in the first 16 megabytes in anticipation of a fix. Use
the PGANY macro to indicate to the system that no further page fixes are planned for a
particular page and that the next time the page is loaded, the system can put it anywhere.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the macro
2-13 Unchanged
14 Used as a work register by the macro
15 Return code
Syntax
The PGANY macro is written as follows:
PGANY
L,LA=list addr list addr: RX-type address or register (1) or (2) - (12).
R,A=start addr start addr: RX-type address or register (1), (2) - (12).
,EA=end addr end addr: RX-type address or register (15), (2) - (12).
Note: Cannot be specified unless R is specified.
Default: EA=start addr + 1.
Parameters
The parameters are explained as follows:
L Specifies that the virtual subarea list (VSL) is being supplied with this request. (See
“Input to Page Services” in OS/390 MVS Programming: Authorized Assembler Services
Guide for a description of the virtual subarea list.)
,LA=list addr
Specifies the address of the virtual subarea list.
R Specifies that the necessary parameters will be passed in registers. A virtual subarea list
is not being supplied.
,A=start addr
Specifies the address of the start of the virtual area.
,EA=end addr
Specifies the end + 1 byte of the virtual area. If this parameter is not coded, the
default is the start address + 1.
Note: start addr and end addr must be located in 24-bit addressable storage.
For return codes 04 and 10, registers are loaded before the abend as follows:
R0 Used as a work register by the macro
R1 Abend code
R2-R10 Used as a work register by the macro
R11 Address of input VSL list or 0 for R-form
R12 0 (ECB address =0)
R13-R14 Current VSL entry being processed
R15 Return code
Description
Note: IBM recommends that you use the PGSER macro rather than PGFIX.
The PGFIX macro makes virtual storage areas, below 16 megabytes, resident in central
(also called real) storage and ineligible for page-out while the requesting task's address
space is swapped into central storage. PGFIX ignores requests to fix storage in a system
area that has the fixed attribute (for example, the LSQA and SQA). A FIX request for a page
in the LSQA or SQA will not cause the page to be backed by central storage below 16
megabytes. A subsequent PGFREE is effective only if issued by the same task. The PGFIX
function is available only to authorized users.
PGFIX does not prevent pages from being paged out when an entire address space is
swapped out of central storage. Consequently, when using the PGFIX macro, you cannot
assume a constant real address mapping for fixed pages that are susceptible to swapping.
Syntax
The standard form of the PGFIX macro is written as follows:
PGFIX
R
L
,LA=list addr list addr: A-type address, or register (1) or (2) - (12).
,A=start addr start addr: A-type address, or register (1) or (2) - (12).
,ECB=ecb addr ecb addr: A-type address, or register (0) or (2) - (12).
,EA=end addr end addr: A-type address, or register (2) - (12) or (15).
Default: start addr + 1
Parameters
The parameters are explained as follows:
,LA=list addr
Specifies the address of the first entry of a virtual subarea list (VSL). See “Input to
Page Services” in OS/390 MVS Programming: Authorized Assembler Services Guide for
a description of the VSL.
,A=start addr
Specifies the start address of the virtual area to be fixed.
Note: start addr must be located in 24-bit addressable storage.
,ECB=ecb addr
Specifies the address of the ECB that is used to signal event completion. If the ECB
address specified is zero, (ECB=0 or ECB=(register) where the contents of the register
specified is 0), the fix request is completely satisfied before control is returned.
Note: If the user intends to wait on the ECB as part of an ECB list, he must ensure
that the list and associated ECBs are fixed in central storage before issuing the
WAIT. The PGFIX service routine ensures that the specified ECB is fixed.
,EA=end addr
Specifies the end address + 1 of the virtual area to be fixed.
Note: end addr must be located in 24-bit addressable storage.
,LONG=Y
,LONG=N
Specifies that the relative real time duration anticipated for the fix is long (Y) or short
(N).
,RELEASE=N
,RELEASE=Y
Specifies that the contents of the virtual area is to remain intact (N) or be released (Y)
before the fix is done.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
The ECB is unchanged if the request was initiated but not complete (return code 8), or if an
ABEND was issued with return code 10. Otherwise, the ECB is posted complete with code:
0 - operation completed successfully.
4 - operation incomplete because of invalid address in VSL entry.
If the return code issued is 8, the ECB is posted asynchronously when paging I/O has
completed, with code:
0 - operation completed successfully.
4 - operation incomplete because of paging error; requesting TCB will be abnormally
terminated.
The ECB code is posted in the low-order 3 bytes of the ECB, and is right-justified.
Example 1
Fix a single byte of virtual storage addressed by register 3. Note that the full 4096-byte page
containing the specified byte is actually fixed. The storage is long fixed.
PGFIX R,A=(R3),ECB=(R5)
Example 2
Fix virtual storage without using a virtual subarea list. Storage is long fixed.
PGFIX R,A=(R3),EA=(R4),ECB=ECB1
Example 3
Fix, but not long-fix, virtual storage, and ensure that the pages fully included in the address
range are forfeited before fixing the area specified by registers 3 and 4.
PGFIX R,A=(R3),EA=(R4),ECB=(R5),LONG=N,RELEASE=Y
Description
Note: IBM recommends that you use the PGSER macro rather than PGFIXA.
The PGFIXA macro makes virtual storage areas, below 16 megabytes, resident in central
(also called real) storage and ineligible for page-out while the requesting task's address
space is swapped into central storage. The PGFIXA function is available only to key zero
and supervisor state users. The PGFIXA macro executes short-term, synchronous page
fixes. The preferred area(s) of storage are intended for long term page fixes. A long term
page fix in the V=R or nonpreferred areas may delay V=R functions or CONFIG STORAGE
commands. All fix processing is assumed to be short-term and is complete when control is
returned to the issuer of the macro.
PGFIXA does not prevent pages from being paged out when an entire address space is
swapped out of central storage. Consequently, when using the PGFIXA macro, you cannot
assume a constant real address mapping for fixed pages that are susceptible to swapping.
Output
If the PGFIXA is successful, control is returned enabled to the user, all pages are fixed, and
register 15 contains a return code of zero.
If the PGFIXA is unsuccessful, the user will be abended with a system completion code of
X‘171’ or a system complete code of X‘028’. For X‘171’ abends, all pages processed up to,
but not including the page causing the error, will be fixed. Register 10 will contain the
address of the pages in error when the abend is issued. No pages will be fixed in the event
of a X‘028’ abend.
Restrictions
Use of the PGFIXA macro is subject to the following restrictions:
Can be used only for short term synchronous fixes.
The user must be in supervisor state with a protection key of zero.
The user must not hold any spin locks.
The program mask byte in the PSW is zero and interrupts are enabled upon return from
the PGFIXA.
The user is responsible for freeing any pages fixed via the PGFIXA. A corresponding
PGFREEA macro should be issued. In addition, an FRR should be established during
the period where fixes are outstanding. The FRR should free the frames in case there is
an unexpected error.
DSECTs for the IHAPSA, CVT, and IHAPVT must be provided.
The user must ensure that the end address is greater than or equal to the start address.
The SAVE keyword can only be used with TYPE=R.
Syntax
The standard form of the PGFIXA macro is written as follows:
PGFIXA
,TYPE=L
,TYPE=R Default: TYPE=R
Parameters
The parameters are explained as follows:
TYPE=L
TYPE=R
Specifies the type of input. When L is specified, register 1 is to contain the address of a
virtual subarea list (VSL) fixed in storage. (See the topic “Input to Page Services” in
OS/390 MVS Programming: Authorized Assembler Services Guide for a description of
the VSL.) By specifying TYPE=L, registers 1 through 13 are saved. If TYPE=R is
specified, then register 1 contains the address of the first byte to be fixed in a
contiguous range and register 2 contains the address of the last byte to be fixed (actual
end address). When TYPE=R is specified, the registers saved depend upon what is
specified on the SAVE parameter.
Note: All other users of the PGFIX, PGFIXA (TYPE=L), and PGFREEA macros must
specify the actual end address plus one.
,SAVE=YES
,SAVE=NO
Specifies the registers to be saved for TYPE=R. Registers 1 through 13 are saved if
SAVE=YES is specified or if the default is taken. Registers 2 through 10 are saved if
SAVE=NO is specified.
Example 1
Use PGFIXA to fix virtual storage without using a virtual subarea list. Registers 2 through 10
will be saved.
FIX1 PGFIXA TYPE=R,SAVE=NO
Example 2
Use PGFIXA to fix virtual storage using a virtual subarea list. Registers 1 through 13 will be
saved.
FIX2 PGFIXA TYPE=L
Description
Note: IBM recommends that you use the PGSER macro rather than PGFREE.
The PGFREE macro makes virtual storage pages, below 16 megabytes, that were fixed via
the PGFIX macro eligible for page-out. The PGFREE function is available only to authorized
users. PGFREE must be issued by the same task that issued the PGFIX, otherwise
PGFREE has no effect.
Note: A fixed page is not considered pageable until the number of PGFREEs issued for the
page is equal to the number of PGFIXes previously issued for that page. That is, a
page is not automatically made pageable as the result of issuing a PGFREE macro.
Syntax
The standard form of the PGFREE macro is written as follows:
PGFREE
,LA=list addr list addr: A-type address, or register (1) or (2) - (12).
,A=start addr start addr: A-type address, or register (1) or (2) - (12).
,ECB=ecb addr ecb addr: A-type address, or register (0) or (2) - (12).
,EA=end addr end addr: A-type address, or register (2) - (12) or (15).
Default: start addr + 1
Parameters
The parameters are explained as follows:
,LA=list addr
Specifies the address of the first entry of a virtual subarea list (VSL). See “Input to
Page Services” in OS/390 MVS Programming: Authorized Assembler Services Guide for
a description of the VSL.
,A=start addr
Specifies the start address of the virtual area to be freed.
Note: start addr must be located in 24-bit addressable storage.
,ECB=ecb addr
Specifies the address of the ECB that was used in a prior PGFIX request. This
parameter is used if there is any possibility that the ECB for the previously issued
PGFIX was not posted complete.
,EA=end addr
Specifies the end address + 1 of the virtual area to be freed.
Note: end addr must be located in 24-bit addressable storage.
,ANYWHER=N
,ANYWHER=Y
On subsequent page-ins, assign real frames below 16 megabytes in anticipation of a
page fix (N) or on subsequent page-ins, assign real frames anywhere (Y). The
ANYWHER option takes effect only when the page fix count goes to zero. The default is
ANYWHER=N.
,RELEASE=N
,RELEASE=Y
Specifies that the contents of the virtual area is to remain intact (N) or be released (Y).
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
Example 1
Free the storage in Example 1 of standard-form PGFIX.
PGFREE R,A=(R3)
Example 2
Free the storage in Example 2 of standard-form PGFIX.
PGFREE R,A=(R3),EA=(R4)
Example 3
Free the storage in Example 3 of standard-form PGFIX, and forfeit the pages fully included
in the address range.
PGFREE R,A=(R3),EA=(R4),ECB=(R5),RELEASE=Y
Description
Note: IBM recommends that you use the PGSER macro rather than PGFREEA.
The PGFREEA macro makes virtual storage areas, below 16 megabytes, that were fixed by
the PGFIXA macro eligible for page-out.
Syntax
The standard form of the PGFREEA macro is written as follows:
PGFREEA
Restrictions
Use of the PGFREEA macro is subject to the following restrictions:
The issuer of the PGFREEA must provide a fixed virtual subarea list (VSL) or chain of
them, pointed to by register 1. For a description of the VSL, see OS/390 MVS
Programming: Authorized Assembler Services Guide.
The user must be in supervisor state, protection key 0.
The user must provide DSECTs for IHAPSA, CVT, and IHAPVT.
Output
If the PGFREEA is successful, all pages will be freed and register 15 will contain a return
code of zero. If unsuccessful, all pages up to, but not including the one that caused the
abend will be freed. The user will be abended with a system completion code of X‘171’.
Description
The PGSER macro and its fast path version (see “PGSER — Fast Path Page Services” on
page 179) perform the same paging services that the PGANY, PGFIX, PGFIXA, PGFREE,
PGFREEA, PGLOAD, PGOUT, and PGRLSE macros perform for addresses below 16
megabytes. The PGSER macro performs these services for addresses either above or below
16 megabytes.
The syntax of the fast path version of PGSER is presented separately following the standard
description.
Note: IBM recommends the use of PGSER for paging services.
Environment
The requirements for the caller invoking PGSER with BRANCH=N are:
Minimum authorization: Problem state, and any key except as noted under
“Restrictions” on page 172.
To use the PROTECT and UNPROTECT options, the caller
must have either PSW key 0 or a PSW key that matches the
key of the storage.
The parameters FIX and FREE are restricted to
APF-authorized, key 0, or supervisor state callers. (See
“Branch Entry to the PGSER Routine” in OS/390 MVS
Programming: Authorized Assembler Services Guide for more
information about branch entry.)
The RELEASE option of the macro is restricted to supervisor
state with key 0 callers if pages in the common area are being
released.
Dispatchable unit mode: Task
Cross memory mode: PASN=HASN=SASN
AMODE: 31-bit
ASC mode: Primary
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks held
Control parameters: Must be in the primary address space
The requirements for the caller invoking PGSER with BRANCH=Y are:
Programming Requirements
The caller must include the IHAPVT mapping macro.
Except for the TCB, all input parameters to this macro can reside in storage above 16
megabytes if the caller is executing in 31-bit addressing mode.
Regardless of the addressing mode, all addresses passed in registers are used as
31-bit addresses.
All RX-type addresses are assumed to be in the addressing mode of the caller.
Restrictions
IBM recommends that page fixes of more than 100 pages be divided into several smaller fix
requests. Large page fix requests can cause an excessive spin loop to occur.
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0-4 Used as work registers by the system
5-13 Unchanged
14 Used as work registers by the system
15 Return Code
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
None.
Syntax
The standard form of the PGSER macro is written as follows:
PGSER
R
L
,FIX
,FREE
,LOAD
,OUT
,PROTECT
,UNPROTECT
,RELEASE
,ANYWHER
,LA=list addr list addr: RX-type address or register (1), (5) - (12) for branch
entry; or register (1), (2) - (12) for SVC entry.
Note: This parameter is valid only with L.
,A=start addr start addr: RX-type address or register (1), (5) - (12) for branch
entry; or register (1), (2) - (12) for SVC entry.
Note: This parameter is valid only with R.
Parameters
The parameters are explained as follows:
R
L Specifies the manner in which the input is supplied. If R is specified, the user supplies
the starting and ending addresses of the virtual area for which the service needs to be
performed. If L is specified, the user supplies the address of the page services list,
which specifies the virtual area for which the service is to be performed. See “Input to
Page Services” in OS/390 MVS Programming: Authorized Assembler Services Guide for
a description of the PSL.
,FIX
,FREE
,LOAD
,OUT
,PROTECT
,UNPROTECT
,RELEASE
,ANYWHER
Indicates the function to be performed.
FIX specifies that the virtual storage areas are to reside in central (also called real)
storage and are ineligible for page-out while the address space is swapped in. This
parameter does not prevent pages from being paged out when the entire address space
is swapped out of central storage. FIX will ignore a request to fix storage in a system
area that has the fixed attribute (for example, the LSQA and SQA). A FIX request for a
page in the LSQA or SQA will not cause the page to be backed by central storage
below 16 megabytes. Requests for disabled reference (DREF) storage are not valid for
the FIX parameter.
FREE specifies that the virtual storage areas that were previously fixed via the FIX
option are eligible for page-out. A fixed page is not considered pageable until the
number of FREE and FIX requests for the page are equal. Requests for disabled
reference (DREF) storage are not valid for the FREE parameter.
LOAD specifies that a page-in operation is to be initiated for the virtual storage area
specified, in anticipation of future needs. Requests for disabled reference (DREF)
storage are not valid for the LOAD parameter.
OUT specifies that a page-out operation is to be initiated for the virtual storage area
specified. Requests for disabled reference (DREF) storage are not valid for the OUT
parameter.
PROTECT specifies that a range of virtual storage be made read-only. R, L, LA, A,
BRANCH, EA, and RELATED are valid keywords with the PROTECT option.
UNPROTECT specifies that a range of virtual storage be made modifiable. R, L, LA, A,
BRANCH, EA, and RELATED are valid keywords with the UNPROTECT option. The
caller must have either key 0 or a PSW key that matches the key of the storage.
RELEASE specifies the release of all physical paging resources, including both
processor storage and auxiliary storage. Functionally, RELEASE is equivalent to a
FREEMAIN macro followed by a GETMAIN macro. That is, the virtual space is
maintained, but the data is discarded. When a released page is next referred to, its
contents are binary zeros. RELEASE is the only PGSER function that is valid for
disabled reference (DREF) storage.
Use PGSER RELEASE instead of the MVCL instruction for these reasons:
ANYWHER applies to virtual storage areas that did not specify LOC=(BELOW,ANY) or
LOC=(ANY,ANY) or LOC=ANY on a GETMAIN request, that have been previously fixed,
and probably will not need to be fixed again. ANYWHER specifies that the virtual
storage area specified can be placed either above or below 16 megabytes central on
future page-ins.
,LA=list addr
Specifies the address of the page services list (PSL) for L requests.
,A=start addr
Specifies the address of the start of the virtual area for R requests.
,EA=end addr
Specifies the last byte of the virtual area to be fixed for R requests.
,TCB=tcb addr
Specifies either zero or the address of the TCB to be assigned ownership of fixes for a
FIX request or fixes for a FREE request. If zero is specified, no TCB is assigned
ownership of the request. Cross memory callers must specify zero.
For OUT and LOAD requests, the PGSER routine associates the request with a
particular TCB so that the request can be purged if the task terminates before the
request is complete. For SVC entry (BRANCH=N), the PGSER routine uses the current
TCB.
Note: The TCB resides in storage below 16 megabytes.
,ECB=ecb addr
Specifies the address of the ECB that is used to signal event completion for an
asynchronous FIX or LOAD request. If the caller is in cross memory mode or if the caller
requests a synchronous page fix (a FIX for which the caller is suspended until the entire
FIX request is complete), the ECB must be zero (ECB=0 or ECB=(r), where (r)
represents a register that contains zero).
For a FREE request, ECB specifies the address of the ECB that was used in a previous
FIX request. If this parameter is specified, any pages in the previous FIX request that
are not yet fixed, will not be fixed. If L is specified, the PSL chain must contain the
addresses of the virtual pages in the same order in both the FREE and the previous FIX
request. Also, the ECB for the FIX request will not be posted if it was not yet posted at
the time of the FREE request.
If the ECB parameter is not specified on a FREE request, only the fix counts for the
valid pages in storage at the time of the FREE request are decreased. This will not
affect the paging activity and the posting of the ECB associated with the original FIX
request.
If an ECB is supplied on a FIX or LOAD request, the caller must check the return code
because the ECB will not be posted if the return code is zero. If an ECB is not supplied,
it is not necessary to check the return code because control returns to the caller only if
the request was successfully completed; if unsuccessful, page services abnormally
terminates the caller.
For all callers that supply an ECB, page services verifies that the ECB address is in an
area allocated through the GETMAIN macro and if the caller is not in key 0, page
services also verifies that the ECB is in the caller's protect key. You must ensure that
the page containing the ECB is not freed and that the key is not altered; otherwise, page
services does not post the ECB.
,RELEASE=Y
,RELEASE=N
Specifies that all the central and auxiliary storage associated with the virtual storage
areas is to be released to the system (Y) or that all the central and auxiliary storage
associated with the virtual storage areas is not to be released to the system (N).
,KEEPREL=Y
,KEEPREL=N
Specifies that the virtual pages should be validated again after the page-out completes
(Y); or that the virtual pages will be marked not valid and the real frames freed for reuse
(N).
,LONG=Y
,LONG=N
Specifies that the relative real time anticipated for the FIX is long (Y); or that the relative
real time anticipated for the FIX is short (N). (In general, the duration of a fix is long if it
can be measured in seconds.)
,BACKOUT=Y
,BACKOUT=N
Specifies the procedure to follow when a nonallocated page is encountered during the
processing of a FIX request. If BACKOUT=Y, all pages fixed as part of the request are
freed before returning to the caller. If BACKOUT=N, the pages previously fixed as part
of the request are not freed and no further processing is done before returning to the
caller.
,ANYWHER=N
,ANYWHER=Y
Specifies that on subsequent page-ins, page services is to assign real frames below 16
megabytes in anticipation of a page-fix (N); or on subsequent page-ins, page services is
to assign real frames anywhere (Y). The ANYWHER option takes effect only when the
page-fix count goes to zero.
,BRANCH=Y
,BRANCH=N
Specifies whether this is a branch entry.
If BRANCH=Y is specified, it is a branch entry and users of this option must provide the
address of an 18-word save area in GPR 13. Cross memory callers and callers in AR
mode must use BRANCH=Y.
If BRANCH=N is specified, it is an SVC entry.
,RELATED=value
Provides information to document the macro by relating the service performed to some
corresponding function or service. The format can be any valid coding value that the
user chooses.
ABEND Codes
PGSER might abnormally terminate with one of the following abend codes: X'18A', X'28A'.
See OS/390 MVS System Codes for explanations and programmer responses.
Example 1
Synchronously fix the page that starts at the address given in register 1 and ends at the
address given in LOADWORD. Use branch entry. No particular TCB is associated with this
request. Include the IHAPVT mapping macro.
PGSER R,FIX,A=(1),ECB=2,EA=LOADWORD,TCB=2,BRANCH=Y
IHAPVT
Example 2
Free the page specified in the PSL pointed to by register 2. The ECB address is given in
register 8. Use branch entry. Release all central and auxiliary storage associated with this
virtual area. Do not attempt to back the area below 16 megabytes on future page-ins.
Include the IHAPVT mapping macro.
PGSER L,FREE,LA=(2),ECB=(8),RELEASE=Y,ANYWHER=Y,BRANCH=Y
IHAPVT
Example 3
Load the page specified in the PSL pointed to by register 1. Supply an ECB of zero. Include
the IHAPVT mapping macro.
PGSER L,LOAD,LA=(1),ECB=2
IHAPVT
Example 4
Perform a page-out for the virtual area starting at the address given in register 1 and ending
at the address given in register 5. The address of the TCB is given in register 8. Use branch
entry. Include the IHAPVT mapping macro.
PGSER R,OUT,A=(1),EA=(5),TCB=(8),BRANCH=Y
IHAPVT
Example 5
Perform a page-out for the virtual area specified in the PSL located at LOADWORD. Use
branch entry. Include the IHAPVT mapping macro.
PGSER L,OUT,LA=LOADWORD
IHAPVT
Example 6
Protect the storage area that starts at the address in GPR 4 and ends at the address in the
variable ENDIT. Include the IHAPVT mapping macro.
PGSER R,PROTECT,A=(4),EA=ENDIT
IHAPVT
Description
The fast path PGSER macro performs FIX and FREE requests for users on performance
paths.
Environment
The requirements for the caller are:
Programming Requirements
The caller must include the IHAPVT mapping macro.
Restrictions
The following restrictions apply to the fast path services:
Short term fixes only
No ECB can be specified
No TCB can be specified
No VIO window page scan be specified
When the list form of the macro is being used, all user-defined short page service lists
(SSLs) must be valid in nonpageable storage.
IBM recommends that page fixes of more than 100 pages be divided into several
smaller fix requests. Large page fix requests can cause an excessive spin loop to
occur.
The fast path PGSER macro does not verify any of the restricted conditions. The caller is
responsible for verifying the restricted conditions and providing recovery to purge FIX
requests when the task terminates before a page service request is complete.
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
None.
Syntax
The fast path PGSER macro is written as follows:
PGSER
R
L
,FIX
,FREE
,LA=list addr list addr: RX-type address or register (1), (5) - (12).
Note: This parameter is valid only if L is specified.
,A=start addr start addr: RX-type address or register (1), (5) - (12).
Note: This parameter is valid only if R is specified.
,EA=ending addr ending addr: RX-type address or register (2), (5) - (12).
Note: This parameter is valid only if R is specified.
,BRANCH=SPECIAL
Parameters
The parameters are explained as follows:
R
L Specify the manner in which the input is supplied. If R is specified, the user supplies the
starting and ending addresses of the virtual storage area for which the service is to be
performed. If L is specified, the user supplies the address of the short page services list
(SSL), which specifies the virtual storage area for which the service is to be performed.
See the topic “Input to Page Services” in OS/390 MVS Programming: Authorized
Assembler Services Guide for a description of the SSL.
,FIX
,FREE
Indicate the function to be performed.
FIX specifies that the virtual storage areas are to reside in central (also called real)
storage and are ineligible for page-out while the address space is swapped in. This
parameter does not prevent pages from being paged out when the entire address space
is swapped out of central storage. FIX will ignore a request to fix storage in a system
area that has the fixed attribute (for example, the LSQA and SQA). A FIX request for a
page in the LSQA or SQA will not cause the page to be backed by central storage
below 16 megabytes.
FREE specifies that the virtual storage areas that were previously fixed through the FIX
option are eligible for page-out. A fixed page is not considered pageable until the
number of FREE and FIX requests for the page are equal.
,LA=list addr
Specifies the address of the short page service list (SSL) for L requests.
,A=start addr
Specifies the address of the start of the virtual area for R requests.
,EA=end addr
Specifies the last byte on the last page of the virtual area for R requests.
,BACKOUT=Y
,BACKOUT=N
Specify the procedure to follow if an unallocated page is encountered during the
processing of a fix request.
If BACKOUT=Y is specified, all pages fixed as part of the request will be freed before
control returns to the caller.
If BACKOUT=N is specified, the pages previously fixed as part of the request will not be
freed before control returns to the caller. In this situation, no further pages are
processed once an unallocated page is encountered.
,ASCB=ascb addr
Specifies the address of the ASCB for the currently addressable address space.
Note: The ASCB must reside in 24-bit addressable storage.
,RELATED=value
Specifies information used to document the macro and to relate the service performed to
some corresponding service or function. The format of the information specified can be
any valid coding values that the user chooses.
,BRANCH=SPECIAL
Specifies a branch entry call to the fast path FIX and FREE services.
ABEND Codes
None.
Example 1
Fix 4096 bytes of storage starting at the address BUFFER. The address of the ASCB is in
register 6. Include the IHAPVT mapping macro.
PGSER R,FIX,A=BUFFER,EA=BUFFER+4295,BRANCH=SPECIAL,ASCB=(6)
IHAPVT
Example 2
Free the area specified in the SSL defined at LISTSSL. Use the ASCB in PSAAOLD. Include
the IHAPVT mapping macro.
L 5,PSAAOLD
PGSER L,FREE,LA=LISTSSL,ASCB=(5),BRANCH=SPECIAL
IHAPVT
Description
Use the POST macro to set a specified event control block (ECB) to indicate the occurrence
of an event. If this event satisfies the requirements of an outstanding WAIT or EVENTS
macro, the waiting task is taken out of the wait state and dispatched according to its priority.
The POST macro is also described in OS/390 MVS Programming: Assembler Services
Reference with the exception of the parameters ASCB, ERRET, ECBKEY, and
LINKAGE=BRANCH. For further information on how to use POST to serialize parallel tasks,
see OS/390 MVS Programming: Authorized Assembler Services Guide.
Environment
The requirements for callers of POST with LINKAGE=SVC or LINKAGE=SYSTEM are:
Minimum authorization: Problem state with any PSW key. For the ASCB, ERRET, and
ECBKEY parameters, one or more of the following:
Supervisor state
PSW key 0-7
APF-authorized
Dispatchable unit mode: Task or SRB. (Programs running in SRB mode may use only
LINKAGE=SYSTEM or LINKAGE=BRANCH.)
Cross memory mode: One of the following:
For LINKAGE=SVC: PASN=HASN=SASN
For LINKAGE=SYSTEM: Any PASN, any HASN, any SASN
AMODE: 24- or 31-bit
ASC mode: Primary
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks held
Control parameters: If the caller specifies the ASCB parameter, the event control block
(ECB) must be addressable from the address space identified by
the ASCB parameter. If the caller does not specify the ASCB
parameter, the ECB must be in the primary address space.
Programming Requirements
For LINKAGE=BRANCH or BRANCH=YES, the caller must include the CVT mapping macro.
Restrictions
Callers that specify LINKAGE=SVC cannot have any enabled unlocked task (EUT) functional
recovery routines (FRR) established.
For LINKAGE=SYSTEM, when control returns to the caller, the general purpose registers
(GPRs) contain:
Register Contents
0-1 Used as work registers by the system
2-13 Unchanged
14 Used as a work register by the system
15 Return code
For LINKAGE=BRANCH, when control returns to the caller the general purpose registers
(GPRs) contain one of the following:
If the ASCB parameter is not specified:
Register Contents
0-9 Unchanged
10-11 Used as work registers by the system
12-13 Unchanged
14-15 Used as work registers by the system
If the ASCB parameter is specified, the LOCAL lock is held and MEMREL=YES is
specified (or defaulted):
Register Contents
0 One of the following:
– If the ECBKEY parameter is not specified: Unchanged
– If the ECBKEY parameter is specified: Used as a work register by
the system
1-9 Unchanged
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
None.
Syntax
The standard form of the POST macro is written as follows:
POST
ecb addr ecb addr: RX-type address, or register (2) - (12), except (10).
,comp code comp code: Symbol, decimal or hexadecimal digit, or register (0),
(2) - (9), (10), or (12).
Range of values: 0 - 2NO-1, Default: 0
,ASCB=addr,ERRET=err addr
,ASCB=addr,ERRET=err addr,ECBKEY=key
addr: RX-type address, or register (2) - (9), (12).
err addr: RX-type address, or register (2) - (9), (12).
key: Symbol, decimal or hexadecimal digit, or register (2) - (9),
(12).
Range of values: 0 - 15 (decimal), Default: None.
Note: If the register form is specified, bits 24-27 of the register
must contain the key.
Parameters
The explanation of the parameters is as follows:
ecb addr
Specifies the address of the fullword event control block representing the event.
,comp code
Specifies the completion code to be placed in the event control block upon completion.
,ASCB=addr,ERRET=err addr
,ASCB=addr,ERRET=err addr,ECBKEY=key
Specifies the address of the ASCB of the address space containing the ECB being
posted, and a pointer to the address of the routine that receives control when an error
condition resulting from a POST failure is detected. The ASCB must reside in 24-bit
addressable storage.
You can also specify the storage protection key of the ECB to be posted. The system
checks the storage key of the ECB against the ECBKEY before posting it.
If there is a wait condition against the ECB, the system also ensures that the waiting
task is in a valid key to modify the ECB. (See “Cross Memory Post” in OS/390 MVS
Programming: Authorized Assembler Services Guide for more information.)
,LINKAGE=SVC
,LINKAGE=BRANCH
,LINKAGE=BRANCH,ECBKEY=key
,LINKAGE=SYSTEM
,LINKAGE=SYSTEM,ERRET=err addr
Specifies the type of linkage from the caller to a system service routine that POST
invokes. The default is LINKAGE=SVC.
For LINKAGE=SVC, the linkage is through an SVC instruction. This linkage is valid only
when the caller is in task mode and primary ASC mode, where primary, home, and
secondary are the same address space. For SVC callers, registers 2-14 are preserved.
For LINKAGE=BRANCH, the linkage is through a branch entry. This linkage is valid
when the caller is in primary or secondary ASC mode. The calling requirements and the
registers that are preserved depend on the other parameters specified, as follows:
If ASCB is not specified, the caller must hold the local lock and be in noncross
memory mode. Registers 0-9, 12, and 13 are preserved.
If ASCB is specified, the MEMREL parameter and the LOCAL lock determine the
calling requirements and registers saved.
– If the LOCAL lock is held and MEMREL=YES is specified (or defaulted), then
the current address space must be the home address space and registers 1-9
are preserved. If the ECBKEY parameter is not specified, register 0 is also
preserved.
– If the LOCAL lock is not held or MEMREL=NO is specified, then only register 9
is preserved. The current address space can be any address space.
With LINKAGE=BRANCH, you can also specify the storage protection key of the ECB to
be posted using the ECBKEY parameter. The way the key specified on the ECBKEY
parameter is processed depends on whether or not there is a wait condition against the
ECB:
If there is no wait condition against the ECB, the system checks the storage key of
the ECB before posting it.
If there is a wait condition against the ECB, the system ignores any value specified
on the ECBKEY parameter. Instead, the system ensures that the waiting task is in a
valid key to post the macro. (See “Cross Memory Post” in OS/390 MVS
Programming: Authorized Assembler Services Guide for more information.)
Note: BRANCH=YES and BRANCH=NO are still supported by the system, but
LINKAGE is the recommended parameter.
For LINKAGE=SYSTEM, the linkage uses a non-SVC entry. Callers must be enabled,
unlocked, and in primary ASC mode. This linkage is valid for callers in both noncross
memory and cross memory mode. If you specify the ASCB parameter, the ECB must be
addressable from the address space identified by ASCB. If you do not specify ASCB,
the ECB must be in the caller's primary address space. When you specify
LINKAGE=SYSTEM and ASCB, you must also specify ECBKEY.
ERRET=err_addr specifies a pointer to the address of the routine that gets control
when the system detects a POST failure. If the caller is not authorized, the error
routine does not receive control. When you have specified LINKAGE=SYSTEM
without ASCB=, ERRET is only needed when you are posting an extended ECB
and the primary address space is different from the home address space.
When you issue LINKAGE=SYSTEM, the POST macro service issues the return
codes described in “Return Codes” on page 188.
LINKAGE=SYSTEM without the ASCB parameter is intended to be used by
programs in cross memory mode.
,MEMREL=YES
,MEMREL=NO
Specifies the address space in which the routine specified on the ERRET parameter is
to run:
Specify MEMREL=YES (or accept the default of MEMREL=YES) if you want the
ERRET routine to run in the caller's home address space.
Specify MEMREL=NO if you want the ERRET routine to run in the master
scheduler's address space.
Note: You cannot specify MEMREL=YES if you hold the local lock and you are running
in cross memory mode. Therefore, if you do not know that the primary and home
address spaces are the same, you should specify MEMREL=NO.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
ABEND Codes
POST might abnormally terminate with one of the following abend codes:
X'102'
X'202'
X'302'
X'402'
X'502'
X'602'
X'702'
Return Codes
When you issue LINKAGE=SYSTEM, the POST macro service issues the following
hexadecimal return codes.
Example 1
Post an event control block whose address is ECB, where the address space containing the
ECB has an ASCB specified by register 5, and where ERRRTN is the routine to be given
control on error conditions.
POST ECB,ASCB=(REG5),ERRET=ERRRTN
Example 2
Post the ECB from example 1 with a hexadecimal completion code of 3FF.
POST ECB,X'3FF',ASCB=(REG5),ERRET=ERRRTN
Example 3
Post the ECB from example 1 using a stacking PC for linkage. The address of the error
routine is in register 3.
POST ECB,LINKAGE=SYSTEM,ECBKEY=2,ASCB=(REG5),ERRET=(REG3)
POST—List Form
Syntax
The list form of the POST macro is written as follows:
POST
,ASCB=addr,ERRET=err addr
,ASCB=addr,ERRET=err addr,ECBKEY=YES
addr: A-type address.
,MF=L
Parameters
The parameters are explained under the standard form of the POST macro, with the
following exceptions:
,MF=L
Specifies the list form of the POST macro.
POST—Execute Form
Syntax
The execute form of the POST macro is written as follows:
POST
,comp code comp code: Symbol, decimal or hexadecimal digit, or register (0) or
(2) - (12).
Range of values: 0 - 2NO-1
,ASCB=addr,ERRET=err addr
,ASCB=addr,ERRET=err addr,ECBKEY=key
addr: RX-type address, or register (2) - (12).
err addr: RX-type address, or register (2) - (12).
key: Symbol, decimal or hexadecimal digit, or register (2) - (12).
Range of values: 0 - 15 (decimal), Default: None.
Note: If the register form is specified, bits 24-27 of the register
must contain the key.
,MF=(E,prob addr) prob addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained under the standard form of the POST macro, with the
following exception:
,MF=(E,prob addr)
Specifies the execute form of the POST macro using a remote control program
parameter list.
Description
The PTRACE macro creates a trace table entry and places it in the system trace table. The
entry consists of an event identifier, the contents of a designated range of general registers
or storage locations, and system supplied status information.
When using this macro, the user must provide the following information:
The type of trace entry that is to be created
The data to be recorded in the trace entry
The PTRACE macro can only be issued with DAT-ON. The caller must be in key 0 and
supervisor state but can be in cross memory mode and in either 24 or 31-bit addressing
mode. All addresses passed to the PTRACE routine are treated as 31-bit addresses.
PTRACE users must include the IHAPSA and IHATRVT mapping macros and register 13
must point to a 72-byte save area that can be used by the PTRACE service.
Environment
The requirements for the caller are:
Programming Requirements
The PTRACE macro can only be issued with DAT-ON. All addresses passed to the PTRACE
routine are treated as 31-bit addresses. PTRACE users must include the IHAPSA and
IHATRVT mapping macros and register 13 must point to a 72-byte save area that can be
used by the PTRACE service.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the system
2-13 Unchanged
14 Used as a work register by the system
15 Return code
Performance Implications
None.
Syntax
The PTRACE macro is written as follows:
PTRACE
,SAVEAREA=STANDARD
Parameters
The parameters are explained as follows:
TYPE=USRn
Specifies a user-event explicit trace entry. The hexadecimal number, n, identifies the
entry. Trace processing places this number in the trace entry for identification purposes.
,REGS=(reg1,reg2)
,REGS=(1)
Defines the data to be placed in the user's trace entries. Multiple trace entries are
created if more than 5 registers or 5 words of data are requested.
If REGS=(reg1,reg2) is specified, the data is located in a range of registers, where reg1
specifies the first register in the range and reg2 specifies the last register in the range.
The register number, reg2, must always be greater than or equal to the register number,
reg1. A maximum of 11 words of data can be indicated for tracing using
REGS=(reg1,reg2).
If REGS=(1) is specified or used as the default, register 1 must contain the 31-bit
address of a parameter list. The high order bit of this address must be set to 0. If
REGS=(1) is specified, up to 1024 words of data can be recorded. The parameter list
contains N+1 fullword entries. The first word contains the number of words of data (N) to
be recorded. This is followed by the N words of data to be placed in the user's trace
entries.
,SAVEAREA=STANDARD
Specifies that register 13 contains the address of a 72-byte save area that can be used
by the PTRACE routine.
When control returns to the caller, registers 2-13 are restored to their original values, but the
original contents of registers 0, 1, 14, and 15 are destroyed. On exit, register 15 contains a
return code.
Example 1
Create a trace table entry for user event 4. Registers 5, 6, and 7 contain the user data to be
recorded.
PTRACE TYPE=USR4,REGS=(5,7),SAVEAREA=STANDARD
Example 2
Create trace table entries for user event C. Register 1 contains the address of a parameter
list containing the data to be recorded.
PTRACE TYPE=USRC,REGS=(1),SAVEAREA=STANDARD
Description
The PURGEDQ macro allows a task to purge particular SRB activity. The system dispatches
an SRB routine asynchronously from when the SCHEDULE macro was issued. For this
reason, the conditions that existed in the system at the time the SCHEDULE was issued
might have changed by the time the routine is dispatched. If the environment that the
asynchronous routine requires to run successfully has been changed, the results are
unpredictable. For this reason, the PURGEDQ macro is available to:
Dequeue SRBs not yet dispatched.
Allow processing for dispatched SRBs to complete.
“Clean up” each dequeued SRB.
The parameters on PURGEDQ determine the target address space and limit the scope of
the purge. When purging SRBs scheduled in the primary address space, PURGEDQ waits
for dispatched SRBs to finish. When purging SRBs scheduled in an address space other
than the primary, PURGEDQ does not purge SRBs that have been dispatched, nor does
PURGEDQ wait for dispatched SRBs to complete.
When the target address space is not the primary address space, PURGEDQ does not
guarantee that all SRBs matching the purge parameters will be purged. The issuer of
PURGEDQ is not informed of SRBs that are not purged. When purging SRBs scheduled in
an address space other than primary, use a resource manager termination routine (RMTR) if
you need to know whether a particular SRB has been purged.
Except for the TCB, all input parameters to this macro can reside in storage above 16
megabytes if the issuer is executing in 31-bit addressing mode.
See OS/390 MVS Programming: Authorized Assembler Services Guide for more information
on using the PURGEDQ macro, especially the resource manager termination routine
(RMTR).
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the system
2-13 Unchanged
14-15 Used as work registers by the system
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
Performance Implications
None.
Syntax
The standard form of the PURGEDQ macro is written as follows:
PURGEDQ
,ASIDTCB=addr addr: RX-type address of an 8-byte field, or register (2) - (12) that
contains an address of an 8-byte field.
Parameters
The parameters are explained as follows:
RMTR=RMTR addr
Specifies the address of the RMTR. If the program scheduled the SRB using
SCHEDULE, this is the address that was placed in the SRBRMTR field (mapped by
IHASRB). If the program scheduled the SRB using IEAMSCHD, this is the address
specified on the RMTRADDR parameter. It limits the purge to SRBs that are protected
by the same RMTR; that is, where the SRBs have the same address.
,ASID=ASID addr
Specifies the address of a halfword that contains the ASID of the target address space
into which the SRB was scheduled. If you omit ASID, the system assumes that the
primary address space is the target address space. Note that when you use the ASID
parameter to purge SRBs scheduled to an address space other than primary,
PURGEDQ does not guarantee that all SRBs will be purged.
,ASIDTCB=addr
Specifies the address of a doubleword that describes the TCB for which SRBs are to be
purged. Through this parameter, you can purge the SRBs associated with a specific
task. If you omit the parameter, the system purges SRBs associated with the current
task in the primary address space.
When you use the ASID parameter to purge SRBs scheduled to an address space other
than primary, PURGEDQ does not guarantee that all SRBs will be purged.
Specify the ASIDTCB parameter in one of the following ways:
2. To purge all SRBs scheduled by a specified address space, set the ASIDTCB
parameter as described below:
3. To purge all SRBs associated with a specified TCB in a specified address space,
set the ASIDTCB parameter as described below:
ABEND Codes
17B
27B
47B
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Example 1
Purge all SRBs scheduled to ASID ‘20’X with:
SRBPTCB equal to the current TCB (that is, the TCB issuing the PURGEDQ)
SRBPASID equal to the primary ASID
SRBRMTR equal to the address of RMTR routine RMTRA
PURGEDQ ASID=AS1,RMTR=RMTRA
AS1 DC XL2'2222'
Example 2
Purge all SRBs scheduled to ASID ‘21’X, regardless of what is specified in SRBPASID and
SRBPTCB, and that have SRBRMTR equal to the address of RMTR routine RMTRB.
PURGEDQ ASID=AS2,ASIDTCB=PURGPRM1,RMTR=RMTRB
PURGPRM1 DC XL8'22222222'
AS2 DC XL2'2221'
Example 3
Purge all SRBs scheduled to the primary address space (that is, the address space from
which this PURGEDQ was issued) that have:
SRBPASID of ‘12’X
SRBPTCB equal to the address of TCBX
SRBRMTR equal to the address of RMTR routine RMTRC
PURGEDQ ASIDTCB=PURGPRM2,RMTR=RMTRC
PURGPRM2 DS 2CL8
DC XL2'2222'
PURGASID DC XL2'2212'
PURGTCB DC A(TCBX)
Example 4
Purge all SRBs scheduled into the primary address space, related to the current
(terminating) task, and associated with the resource manager termination routine located at
RESCLEAN.
PURGEDQ RMTR=RESCLEAN
PURGEDQ—List Form
For programs that require reentrant code, use the list form of the PURGEDQ macro together
with the execute form of the macro. The list form of the macro defines an area of storage
that the execute form of the macro uses to store parameter values.
Syntax
The list form of the PURGEDQ macro is written as follows:
PURGEDQ
,MF=L
Parameters
The parameters are explained under the standard form of the PURGEDQ macro, with the
following exception:
,MF=L
Specifies the list form of the PURGEDQ macro.
Example
Specify the resource manager termination routine located at RESCLEAN and produce the
parameter list to be used by the execute form of the PURGEDQ macro.
STATPDQ PURGEDQ RMTR=RESCLEAN,MF=L
PURGEDQ—Execute Form
For programs that require reentrant code, use the execute form of the PURGEDQ macro
together with the list form. The execute form of the macro stores the parameters into the
storage area defined by the list form.
Syntax
The execute form of the PURGEDQ macro is written as follows:
PURGEDQ
,MF=(E,ctrl addr) ctrl addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained under the standard form of the PURGEDQ macro, with the
following exception:
,MF=(E,ctrl addr)
Specifies the execute form of the PURGEDQ macro, using a remote control program
parameter list.
Example
Purge all SRBs scheduled into the address space given in register 6 and associated with the
resource manager termination routine located at RESCLEAN. Indicate that the remote
control program parameter list is located at STATPDQ.
PURGEDQ ASID=(6),RMTR=RESCLEAN,MF=(E,STATPDQ)
Description
The QEDIT macro generates the required entry parameters and processes the command
input buffer for the following uses:
Dechaining and freeing of a command input buffer (CIB) from the CIB chain for a task.
Setting a limit for the number of CIBs that may be simultaneously chained for a task.
Syntax
The QEDIT macro is written as follows:
QEDIT
ORIGIN=CIB addr ptr CIB addr ptr: RX-type address, or register (0),(2) - (12).
,BLOCK=CIB addr CIB addr: RX-type address, or register (1), (2) - (12).
,CIBCTR=CIB nmbr CIB nmbr: Decimal digit, with a maximum value of 255 or register
(1), (2) - (12).
Parameters
The parameters are explained as follows:
,BLOCK=CIB addr
Specifies the address of the CIB to be freed from the CIB chain for a task.
,CIBCTR=CIB nmbr
Specifies the limit for the number of CIBs to be chained at any time for a task.
Notes:
1. When using any address returned from the EXTRACT macro as input to the QEDIT
macro, the user must use the IEZCOM mapping macro to establish addressability based
on the address returned by EXTRACT.
2. The CIB must reside in 24-bit addressable storage.
Example 1
Free the entire CIB chain, where register 8 contains the address of the pointer to the CIB
chain.
QEDIT ORIGIN=(8)
Example 2
Free the CIB whose address is in register 5 from the CIB chain. Register 8 contains the
address of the pointer to the CIB chain.
QEDIT ORIGIN=(8),BLOCK=(5)
Description
The RESERVE macro reserves a device for use by a particular system; it must be issued by
each task needing to reserve a device shared with one or more systems. The RESERVE
macro protects the caller from interference by other tasks in the system and locks out other
systems. The reserve actually occurs when the first I/O is done to the device after the
RESERVE macro is issued. When the reserving program no longer needs the reserved
device, it should issue a DEQ macro to release the resource.
For information about how to obtain the UCB address for a device, see the section “Finding
the UCB Address for the RESERVE Macro” in OS/390 MVS Programming: Authorized
Assembler Services Guide.
If global resource serialization is active, the hardware RESERVE can be suppressed leaving
a SYSTEMS ENQ depending on the contents of the resource name lists. See OS/390 MVS
Planning: Global Resource Serialization for information on resource name lists.
A RESERVE used with the MASID and MTCB operands provides a special form of the
RESERVE macro that allows a further conditional control of a resource. One task, called the
“issuing task” can issue a RESERVE macro for a resource specifying the ASID and TCB of
another task, called the “matching task”.
The RESERVE macro is also described in OS/390 MVS Programming: Assembler Services
Reference, with the exception of the MASID, MTCB, and ECB parameters.
Environment
The requirements for the caller are:
Minimum authorization: Problem state with any PSW key. For the MASID, MTCB, and ECB
parameters, one of the following:
Supervisor state
PSW key 0-7
APF-authorized.
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: If the caller's AMODE is 24-bit, all parameters must reside below
16 megabytes.
Programming Requirements
Before issuing the RESERVE macro with a UCB address, an authorized caller must serialize
the UCB against dynamic I/O reconfiguration requests. The caller can accomplish this
serialization by allocating or pinning the UCB. Such serialization ensures that a dynamic I/O
reconfiguration request does not delete or reuse the UCB before the RESERVE macro uses
the address.
Restrictions
If a task issues two RESERVE macros for the same device without an intervening DEQ
macro, the task ends abnormally unless the second RESERVE specifies the keyword
parameter RET or ECB. (If a restart occurs after the caller successfully issued the
RESERVE macro for a resource, the system does not reserve the device again; the caller
must reissue the RESERVE macro.) If a DEQ macro is not issued for a particular resource,
the system releases the reserved resource when the task ends.
The system counts and limits the number of concurrent resource requests in an address
space. If an unconditional RESERVE (a RESERVE macro with RET=NONE) causes the
number of global resource serialization requests to exceed the limit, the caller is abnormally
terminated with a system code of X'538'. For further information about limiting concurrent
requests for resources, see in OS/390 MVS Programming: Assembler Services Guide. For
further information about limiting global resource serialization requests, see OS/390 MVS
Programming: Authorized Assembler Services Guide.
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.
Syntax
The standard form of the RESERVE macro is written as follows:
RESERVE
, Default: E
,E
,S
,
,rname length rname length: symbol, decimal digit, or register (2) - (12).
,SYSTEMS
)
,RET=TEST
,RET=USE
,RET=HAVE
,RET=NONE
Parameters
The parameters are explained as follows:
qname addr
Specifies the address in virtual storage of an 8-character name. The name should not
start with SYS, so that it will not conflict with system names. Every task issuing
RESERVE against the same resource must use the same qname and rname to
represent the resource.
,rname addr
Specifies the address in virtual storage of the name used together with qname to
represent a single resource. The name can be qualified, and must be from 1 to 255
bytes long.
,
,E
,S Specifies whether the request is for exclusive (E) or shared (S) control of the resource.
If the resource is modified while under control of the task, the request must be for
exclusive control; if the resource is not modified, the request should be for shared
control.
,
,rname length
Specifies the length of the rname. If this parameter is omitted, the system uses the
assembled length of the rname. To override the assembled length, specify this
parameter; the value you can code depends on whether or not you also specify MASID
and MTCB:
If you specify MASID and MTCB, you can code a value between 1 and 128.
If you do not specify MASID and MTCB, you can code a value between 1 and 255.
In either case, you can specify 0, which means that the length of the rname must be
contained in the first byte at the rname addr.
,SYSTEMS
Specifies that the resource is shared among systems.
,RET=TEST
,RET=USE
,RET=HAVE
,RET=NONE
RET=TEST, RET=USE, and RET=HAVE specify a conditional request for the resource
named on the macro, as follows:
RET=NONE specifies an unconditional request for the resource named on the macro.
,ECB=ecb addr
Specifies the address of an ECB, and conditionally requests the resource named in the
macro. If the return code for one or more requested resources is 4 and the request is
not nullified by a corresponding DEQ, the ECB is posted when all the requested
resources (specifically, those that initially received a return code of 4) are assigned to
the requesting task.
,UCB=ucb addr
Specifies the address of a fullword that contains the address of the UCB for the device
to be reserved. The UCB does not need to be allocated to the job step before
RESERVE is issued.
Note: The UCB keyword might specify a UCB address for a UCB that resides in
storage above or below 16 megabytes. If the UCB address might point to a UCB
above 16 megabytes you must also specify LOC=ANY.
,MASID=matching-asid addr
Specifies the matching task (by defining a matching ASID) for the RESERVE. MASID
defines the ASID of a task that may be using a resource desired by the issuer of the
RESERVE macro.
Note: MASID can be specified only if MTCB is also specified.
,MTCB=matching-tcb addr
Specifies the matching task (by defining a matching TCB) for the RESERVE. MTCB
defines the TCB of a task that may be using a resource desired by the issuer of the
RESERVE macro.
Note: MTCB can be specified only if MASID is also specified.
If the task specified by the MASID and MTCB parameters is not using the resource,
global resource serialization gives control to the issuer of the RESERVE and returns a
return code indicating whether the resource can be used. If the task specified by
MASID and MTCB parameters is using the resource, global resource serialization
records a request for the resource, suspends the issuing task until the resource is
available, or optionally returns a return code indicating that an ECB will be posted when
the resource can be used.
The MASID and MTCB parameters are specified with the RET=HAVE, RET=TEST, or
ECB parameters to elicit additional return codes that provide information about the
owner of the resource.
See the description of rname length for information about specifying rname length with
MASID and MTCB.
,LOC=BELOW
,LOC=ANY
Specifies the location of the input UCB address. ANY specifies that the input UCB
address is to be treated as a 31-bit address. BELOW specifies that the input UCB
address is to be treated as a 24-bit address. The default is LOC=BELOW.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid values.
ABEND Codes
For unconditional requests only, the caller might encounter abend code X'138' or X'538'.
For unconditional or conditional requests, the caller might encounter one of the following
abend codes:
X'238'
X'338'
X'438'
X'738'
X'838'
X'938'
See OS/390 MVS System Codes for explanations and responses for these codes.
Address
Returned in
Register 15
1 2 3 4 12
0
12
Figure 40. Return Code Area Used by RESERVE
The return codes for the RESERVE macro with the RET=TEST parameter are described in
Figure 41.
Figure 41. Return Codes for the RESERVE Macro with the RET=TEST Parameter
Hexadecimal Meaning and Action
Return Code
0 Meaning: The resource is immediately available.
Action: None required. However, you might take some action based on your
application.
4 Meaning: The resource is not immediately available.
Action: None required. However, you might take some action based on your
application.
8 Meaning: A previous request for control of the same resource has been made
for the same task. The task has control of the resource.
Action: None required. However, you might take some action based on your
application.
To determine whether the task has exclusive control or shared control of the
resource, check bit 3 of Byte 0 as shown in Figure 40. If bit 3 is off, the task
has exclusive control; If bit 3 is on, the task has shared control.
14 Meaning: A previous request for control of the same resource has been made
for the same task. The task does not have control of the resource.
Action: None required. However, you might take some action based on your
application.
20 Meaning: The matching task (the task specified in the MASID and MTCB
parameters) owns the resource.
Action: None required. However, you might take some action based on your
application.
The return codes for the RESERVE macro with the RET=USE parameter are described in
Figure 42.
Figure 42. Return Codes for the RESERVE Macro with the RET=USE Parameter
Hexadecimal Meaning and Action
Return Code
0 Meaning: The active task now has control of the resource.
Action: None.
4 Meaning: The resource is not immediately available.
Action: None required. However, you might take some action based on your
application.
8 Meaning: A previous request for control of the same resource has been made
for the same task. The task has control of the resource.
Action: None required. However, you might take some action based on your
application.
To determine whether the task has exclusive control or shared control of the
resource, check bit 3 of Byte 0 as shown in Figure 40 on page 209. If bit 3 is
off, the task has exclusive control; If bit 3 is on, the task has shared control.
14 Meaning: A previous request for control of the same resource has been made
for the same task. The task does not have control of the resource.
Action: None required. However, you might take some action based on your
application.
18 Meaning: Environmental error. The limit for the number of concurrent resource
requests has been reached. The task does not have control of the resource
unless some previous ENQ or RESERVE request caused the task to obtain
control of the resource.
Action: Retry the request one or more times. If the problem persists, consult
your system programmer, who might be able to tune the system so that the
limit is no longer exceeded.
The return codes for the RESERVE macro with the RET=HAVE parameter are described in
Figure 43 on page 211.
Figure 43. Return Codes for the RESERVE Macro with the RET=HAVE Parameter
Hexadecimal Meaning and Action
Return Code
0 Meaning: The active task now has control of the resource.
Action: None.
8 Meaning: A previous request for control of the same resource has been made for the
same task. The task has control of the resource.
Action: None required. However, you might take some action based on your application.
To determine whether the task has exclusive control or shared control of the resource,
check bit 3 of Byte 0 as shown in Figure 40 on page 209. If bit 3 is off, the task has
exclusive control; If bit 3 is on, the task has shared control.
14 Meaning: A previous request for control of the same resource has been made for the
same task. The task does not have control of the resource.
Action: None required. However, you might take some action based on your application.
18 Meaning: Environmental error. The limit for the number of concurrent resource requests
has been reached. The task does not have control of the resource unless some previous
ENQ or RESERVE request caused the task to obtain control of the resource.
Action: Retry the request one or more times. If the problem persists, consult your system
programmer, who might be able to tune the system so that the limit is no longer
exceeded.
20 Meaning: The matching task (the task specified in the MASID and MTCB parameters)
owns the resource.
Action: The caller can use the resource, but it must ensure that the owning task does not
terminate while the caller is using the resource. If the caller requested exclusive control,
then this return code indicates that the matching task is the only task that currently owns
the resource. If the caller requested shared control and the owning task requested shared
control, this return code might indicate that a previous task had requested exclusive
control. The caller must issue a DEQ macro to cancel this RESERVE request.
28 Meaning: The caller cannot obtain exclusive control of the resource using the RESERVE
macro with the MASID and MTCB parameters. The matching task's involvement with other
tasks precludes control by the caller.
Action: This task must not issue a DEQ macro to cancel the RESERVE request.
44 Meaning: The caller is violating a restriction of using the RESERVE macro with the
MASID and MTCB parameters in one or more of the following ways:
Another task has already issued the RESERVE macro for this resource specifying the
same values for the MASID and MTCB parameters
The MASID and MTCB parameters specify a task that acquired control of the
resource by using the RESERVE macro with the MASID and MTCB parameters
The matching task requested ownership of the resource but has not yet been granted
ownership.
Action: Do not use the resource; the caller does not have control of it.
The return codes for the RESERVE macro with the ECB parameter are described in
Figure 44.
Figure 44 (Page 1 of 2). Return Codes for the RESERVE Macro with the ECB Parameter
Hexadecimal Meaning and Action
Return Code
0 Meaning: The active task now has control of the resource.
Action: Do not wait on the ECB; it will not be posted.
4 Meaning: The active task does not have control of the resource yet. The ECB
will be posted when the system assigns control to that task.
Action: Wait on the ECB if your program cannot continue processing without
control of the resource.
Figure 44 (Page 2 of 2). Return Codes for the RESERVE Macro with the ECB Parameter
Hexadecimal Meaning and Action
Return Code
8 Meaning: A previous request for control of the same resource has been made
for the same task. The task has control of the resource.
Action: Do not wait on the ECB; it will not be posted.
To determine whether the task has exclusive control or shared control of the
resource, check bit 3 of Byte 0 as shown in Figure 40 on page 209. If bit 3 is
off, the task has exclusive control; If bit 3 is on, the task has shared control.
14 Meaning: A previous request for control of the same resource has been made
for the same task. The task does not have control of the resource.
Action: Do not wait on the ECB; it will not be posted.
18 Meaning: Environmental error. The limit for the number of concurrent resource
requests has been reached. The task does not have control of the resource
unless some previous ENQ or RESERVE request caused the task to obtain
control of the resource.
Action: Do not wait on the ECB; it will not be posted. Retry the request one or
more times. If the problem persists, consult your system programmer, who
might be able to tune the system so that the limit is no longer exceeded.
20 Meaning: The matching task (the task specified in the MASID and MTCB
parameters) owns the resource.
Action: Do not wait on the ECB; it will not be posted. The caller can use the
resource, but it must ensure that the owning task does not terminate while the
caller is using the resource. If the caller requested exclusive control, then this
return code indicates that the matching task is the only task that currently
owns the resource. If the caller requested shared control and the owning task
requested shared control, this return code might indicate that a previous task
had requested exclusive control. The caller must issue a DEQ macro to cancel
this RESERVE request.
24 Meaning: The caller that specifies the RESERVE macro with the MASID and
MTCB parameters will have exclusive control after the ECB is posted.
Action: Wait on the ECB. Once the ECB is posted, the caller may use the
resource, but must ensure that the matching task does not terminate while the
caller is using the resource. The caller must issue a DEQ macro to cancel the
RESERVE request.
28 Meaning: The caller cannot obtain exclusive control of the resource using the
RESERVE macro with the MASID and MTCB parameters. The matching task's
involvement with other tasks precludes control by the caller.
Action: Do not wait on the ECB; it will not be posted. The caller must not
issue a DEQ macro to cancel the RESERVE request.
44 Meaning: The caller is violating a restriction of using the RESERVE macro
with the MASID and MTCB parameters in one or more of the following ways:
Another task has already issued the RESERVE macro for this resource
specifying the same values for the MASID and MTCB parameters
The MASID and MTCB parameters specify a task that acquired control of
the resource by using the RESERVE macro with the MASID and MTCB
parameters
The matching task requested ownership of the resource but has not yet
been granted ownership.
Action: Do not wait on the ECB; it will not be posted. Do not use the resource;
the caller does not have control of it.
Example
Unconditionally reserve exclusive control of a device. The length of the rname is allowed to
default.
RESERVE (MAJOR3,MINOR3,E,,SYSTEMS),UCB=(R3)
RESERVE—List Form
The list form of the RESERVE macro is written as follows:
RESERVE
,
,E
,S
,
,SYSTEMS
)
,RET=TEST
,RET=USE
,RET=HAVE
,RET=NONE
,MASID=0
,MTCB=0
,MF=L
Parameters
The parameters are explained under the standard form of the RESERVE macro, with the
following exception:
,MF=L
Specifies the list form of the RESERVE macro.
The list form of this macro generates a prefix followed by the parameter list; however, the
label specified in MF=L does not include an offset prefix area. If MASID, MTCB, or ECB are
specified, these labels are offset; allowance must be made for the parameter list prefix.
Note: If the ECB parameter is specified on the execute form of the macro, it also must be
specified on the list form of the macro. If MASID and MTCB also are specified on the
execute form, MASID=0 and MTCB=0 must be specified in the list form.
RESERVE—Execute Form
The execute form of the RESERVE macro is written as follows:
RESERVE
( Note: ( and ) are the beginning and end of a parameter list. The
entire list is optional. If nothing in the list is desired, the (, ), and all
parameters between ( and ) should not be specified. If something
in the list is desired, then (, ), and all parameters in the list should
be specified as indicated at the left.
,
,E
,S
,
,SYSTEMS
,RET=TEST
,RET=USE
,RET=HAVE
,RET=NONE
,MF=(E, list addr) list addr: RX-type address, or register (1) - (12).
Parameters
The parameters are explained under the standard form of the RESERVE macro, with the
following exception:
,MF=(E,ctrl addr)
Specifies the execute form of the RESERVE macro.
list addr specifies the area that the system uses to contain the parameters.
Note: If the ECB parameter is specified on the execute form of the macro, it also must be
specified on the list form of the macro. If MASID and MTCB also are specified on the
execute form, MASID=0 and MTCB=0 must be specified in the list form.
Description
RESMGR allows an authorized program to add (ADD parameter) or delete (DELETE
parameter) a resource manager routine.
Upon completion of RESMGR ADD, the resource manager is established for a task or
address space. On the TYPE parameter, you choose whether the resource manager routine
receives control when a task (TYPE=TASK) or an address space (TYPE=ADDRSPC)
terminates. On the ROUTINE parameter, you designate the routine and choose the kind of
linkage the routine has with RTM:
LINK macro
Branch instruction
PC instruction.
For information about the uses of resource managers, see OS/390 MVS Programming:
Authorized Assembler Services Guide.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
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
The LINK option on the ROUTINE parameter might degrade the performance of the system
during task and address space termination.
If you specify TCB=ALL and ASID=ALL, the system invokes the resource manager program
for every task termination initiated by the system. You can improve system performance by
specifying a particular task or ASID.
Syntax
The standard form of the RESMGR macro is written as follows:
RESMGR
ADD
DELETE
,TYPE=ADDRSPC
,TYPE=TASK
,TCB=CURRENT
,TCB=ALL
,TCB=tcbaddr tcbaddr: A-type address or register (2) - (12).
,TTOKEN=ttoken ttoken: A-type address or register (2) - (12).
,ROUTINE=(LINK, pgname) pgname: C-type constant, A-type address, or register (2) - (12).
,ROUTINE=(BRANCH, pgaddr) pgaddr: A-type address or register (2) - (12).
,ROUTINE=(PC, pcnum) pcnum: A constant or register (2) - (12).
Parameters
The parameters are explained as follows:
ADD
DELETE
Specifies whether a resource manager is to be added or deleted. You must specify the
same values for TYPE, TCB, TTOKEN, and ASID on DELETE as you specified on those
parameters for ADD. On DELETE, you must specify the token that ADD returned so the
system can identify the resource manager that you want to delete.
Note that you can use RESMGR to delete a resource manager from the resource
manager routine itself.
,TOKEN=tokaddr
Specifies the address of the fullword where you want the system to store the token that
it returns after an ADD. The token represents the resource manager that the system
added. On DELETE, however, you store the token in this fullword before invoking the
delete function. TOKEN is required for both ADD and DELETE.
,TYPE=ADDRSPC
,TYPE=TASK
Specifies whether the resource manager is an address space resource manager
(ADDRSPC) or a task resource manager (TASK). The default is address space. If you
specify TYPE=ADDRSPC, you cannot specify TTOKEN=ttoken.
,ASID=CURRENT
,ASID=ALL
,ASID=asid
Specifies the ID of the address space or spaces to be monitored for termination
(TYPE=ADDRSPCE) or the home address space or the primary address space
(TYPE=TASK). If you want to monitor:
,TCB=CURRENT
,TCB=ALL
,TCB=tcbaddr
,TTOKEN=ttoken
Specifies the task that the system is to monitor for termination. If you want to monitor:
The current task, specify TCB=CURRENT. Note that a program in SRB mode or in
cross memory mode cannot issue TCB=CURRENT.
If your program is in cross memory mode and you want to monitor a task in the
primary address space, do not specify TCB=CURRENT. In this case, specify the
primary address space through ASID=asid and the task through TCB=tcbaddr or
TTOKEN=ttoken.
All tasks in the specified address space, specify TCB=ALL. If you specify TCB=ALL
with ASID=ALL, the system monitors all tasks in all address spaces.
A task in the primary or home address space, specify TCB=tcbaddr or
TTOKEN=ttoken. Note that TTOKEN is not valid on TYPE=ADDRSPC.
If your program is in cross memory mode and it holds the local lock for the primary
address space, it cannot request monitoring of a task in the home address space.
,ROUTINE=(LINK, pgname)
,ROUTINE=(BRANCH, pgaddr)
,ROUTINE=(PC, pcnum)
Specifies:
the type of linkage to be used by the system when giving control to the resource
manager
the resource manager to receive control when the task or address space
terminates.
If you specify PC, the resource manager receives control through a PC instruction.
pcnum is the PC number of the PC instruction that gives control to the resource
manager. The address space from which the resource manager is called must have the
authority to issue the PC.
If you specify BRANCH, the resource manager receives control in 31-bit addressing
mode and in primary ASC mode through a branch instruction, and the resource
manager (whether address space termination resource manager or task termination
resource manager) must reside in storage addressable from all address spaces in which
it can get control. Note that for address space termination, resource managers run in
master's address space (ASID 1). pgaddr is the address of the resource manager.
ROUTINE is required on the ADD request.
,ECB=ecbaddr
The processing to delete a resource manager might not be complete when RESMGR
returns. If you require notification after DELETE has completed, code ECB. The ECB will
be posted when DELETE is completed. Note, however, that DELETE may already be
complete upon return, in which case the system does not post any completion ECB.
Check the return code from RESMGR before you wait on the ECB.
The system associates the completion ECB with the home address space of the
DELETE requestor. ECB is valid only for DELETE. You must specify either of the
following when you specify ECB:
,PARAM=paddr
Specifies the address of an 8-byte field containing parameter data to be used by the
resource manager when it receives control. The parameter data must reside in the
caller's primary address space. PARAM is valid only with ADD. A copy of the 8-byte field
is passed to the resource manager as the second parameter.
,RELATED=value
Specifies information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and contents of the information
specified are at the discretion of the user, and may be any valid coding values.
ABEND Codes
None.
Example 1
Establish a resource manager that receives control for every address space termination and
every task termination. This resource manager is equivalent to having included the name
IAMARESM in the IEAVTRML table.
RESMGR ADD,TOKEN=MYTOKEN,TYPE=ADDRSPC,ASID=ALL,
ROUTINE=(LINK,'IAMARESM')
RESMGR ADD,TOKEN=MYTOKEN,TYPE=TASK,ASID=ALL,TCB=ALL,
ROUTINE=(LINK,'IAMARESM')
Example 2
Establish a resource manager for the current task, using a branch interface and specifying
the routine using register notation:
L R2,RMADDR Obtain address of resource manager routine
RESMGR ADD,TOKEN=MYTOKEN,TYPE=TASK,ASID=ALL,
TCB=ALL,ROUTINE=(BRANCH,(R2))
EXTRN RMROUTIN
RMADDR DC A(RMROUTIN) Address of resource manager routine
RESMGR—List Form
Use the list form of RESMGR together with the execute form of the macro for applications
that require reentrant code. The list form of the macro defines an area of storage, which the
execute form of the macro uses to store the parameters.
Syntax
The list form of the RESMGR macro is written as follows:
RESMGR
ADD
DELETE
,TYPE=ADDRSPC
,TYPE=TASK
,TCB=CURRENT
,TCB=ALL
,TCB=tcbaddr tcbaddr: A-type address
,TTOKEN=ttoken ttoken: A-type address
,MF=L
Parameters
The parameters are explained under the standard form of the RESMGR macro with the
following exceptions:
,MF=L
Specifies the list form of the RESMGR macro.
RESMGR—Execute Form
Use the execute form of RESMGR together with the list form of the macro for applications
that require reentrant code. The execute form of the macro stores the parameters into the
storage area defined by the list form. You do not have to specify any parameters except MF
on the execute form. For the parameters you do not specify on the execute form, RESMGR
uses the parameters on the list form or their defaults.
Syntax
The execute form of the RESMGR macro is written as follows:
RESMGR
,ADD
,DELETE
,TYPE=ADDRSPC
,TYPE=TASK
,TCB=CURRENT
,TCB=ALL
,TCB=tcbaddr tcbaddr: RX-type address or register (2) - (12).
,TTOKEN=ttoken ttoken: RX-type address or register (2) - (12).
,ROUTINE=(LINK, pgname) pgname: a C-type constant, RX-type address, or register (2) - (12).
,ROUTINE=(BRANCH, pgaddr) pgaddr: RX-type address or register (2) - (12).
,ROUTINE=(PC, pcnum) pcnum: A constant, an expression, or register (2) - (12).
Parameters
The parameters are explained under the standard form of the RESMGR macro with the
following exceptions:
MF=(E,listaddr)
E specifies the execute form of the RESMGR macro and listaddr specifies the address
of the parameter list.
Description
Resume an SRB
To resume or purge a suspended SRB, use the variation of the RESUME macro
described under “RESUME — Resume or Purge a Suspended SRB” on page 231.
To resume a request block (RB) that was suspended through the SUSPEND macro, use this
variation of the RESUME macro.
Environment
Requirements for the calling program's environment are:
Programming Requirements
The task to be resumed must be in the primary address space.
The caller must include the IHAPSA and CVT mapping macros.
Restrictions
The list and execute forms of the RESUME macro are not valid for resuming execution of a
suspended RB.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 Reason code
1 Used as a work register by the system
2-3 Unchanged
4-5 Used as work registers by the system
6-10 Unchanged
11-14 Used as work registers by the system
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
Performance Implications
None.
Syntax
The RESUME macro is coded as follows:
RESUME
Parameters
The parameters are explained as follows:
TCB=(4)
TCB=tcbaddr
Specifies the TCB address of the task to be resumed. Register 4 is the default; it is
assumed to contain the TCB address.
Note: The TCB resides in storage below 16 megabytes.
,RB=(5)
,RB=rbaddr
Specifies the address of the RB to be resumed. Register 5 is the default; it is assumed
to contain the address of the RB to be resumed.
Note: The RB resides in storage below 16 megabytes.
,RETURN=Y
,RETURN=N
Specifies whether control is to be returned to the caller (RETURN=Y) or not
(RETURN=N). RETURN=N causes RESUME to make the specified TCB/RB
dispatchable and gives the specified TCB/RB control directly. Only programs running
under an SRB in primary ASC mode can issue RETURN=N. If you specify RETURN=N,
you must also specify MODE=UNCOND and ASYNC=N and must not specify ASCB.
,MODE=UNCOND
,MODE=COND
If MODE=COND is specified, the action RESUME takes if the function cannot be
completed synchronously depends on the ASYNC option. If ASYNC=Y is specified,
RESUME makes a conditional attempt to acquire an SRB. If an SRB is available, it is
scheduled to complete the RESUME function asynchronously. If ASYNC=N is specified
explicitly or as a default and the RESUME cannot immediately complete the function,
the system places return code 04 in register 15 and returns to the caller.
If MODE=UNCOND is specified, the action RESUME takes also depends on the ASYNC
option. If ASYNC=Y is specified, RESUME makes an unconditional request for an SRB,
and completes the RESUME function asynchronously. If ASYNC=N is specified explicitly
or as a default, RESUME unconditionally obtains the CML lock of the ASCB whose TCB
or RB is to be resumed. The TCB or RB is resumed before control returns to the caller.
,ASYNC=Y
,ASYNC=N
Specifies whether the RESUME is to be completed asynchronously (Y) or not (N).
,ASCB=ascbaddr
Specifies the address of the ASCB whose TCB or RB is to be resumed. The caller must
establish current addressability to the address space before calling RESUME. If this
option is not specified, the home address space is assumed. This option must be
specified if ASYNC=Y is specified.
Note: The ASCB resides in storage below 16 megabytes.
ABEND Codes
070
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When the RESUME macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Figure 47. Return Codes for the RESUME Macro for RBs
Return Code Meaning and Action
00 Meaning: A normal, synchronous RESUME completed the function.
Action: None.
04 Meaning: Environmental error. For MODE=COND and ASYNC=N, the RESUME cannot
complete the function.
For MODE=COND or MODE=UNCOND and ASYNC=Y, an SRB is completing the
function asynchronously.
Action: None required. However, you might take some action based upon your
application.
08 Meaning: Environmental error. For MODE=COND and ASYNC=Y the SRB cannot be
acquired and RESUME cannot complete the function.
Action: None required. However, you might take some action based upon your
application.
Example
Resume execution of the task specified in the address labeled CURRTCB. Use the request
block address in register 5. Pass control back to the task (the issuer is currently in SRB
mode and this step terminates SRB mode processing).
RESUME TCB=CURRTCB,RB=(5),RETURN=N
Description
Resume an RB
To resume an RB, use the variation of the RESUME macro described under “RESUME
— Resume Execution of a Suspended RB” on page 227.
To resume or purge a suspended supervisor request block (SRB), use this variation of the
RESUME macro. Optionally, the RESUME macro enables the caller to provide a fullword of
data (the resume code) to the suspended SRB routine.
Environment
Requirements for the calling program are:
Programming Requirements
Programming requirements for the calling program are:
Before issuing the RESUME macro, ensure that the global symbol &SYSASCE is
correctly set to indicate the ASC mode of your program. To test or set this global
symbol, use the SYSSTATE macro.
Programs in AR ASC mode must ensure that parameter addresses are ALET-qualified.
Restrictions
None.
When control returns to the caller, the general purpose registers contain:
Register Contents
0-1 Used as work registers by the macro
2-13 Unchanged
14 Used as a work register by the macro
15 Return code
Syntax
The standard form of the RESUME macro is written as follows:
RESUME
Parameters
The parameters are explained as follows:
SPTOKEN=sptoken addr
Specifies the address of an 8-byte location that contains the system-provided suspend
token. The suspend token identifies the SRB that is to be resumed or purged.
,PURGE=NO
,PURGE=YES
Indicates whether the system is to resume (PURGE=NO) or purge (PURGE=YES) the
SRB. The default is PURGE=NO. A purged SRB never regains control and cannot be
resumed. Do not use RSCODE with PURGE=YES.
,RSCODE=rscode addr
Specifies the address of a fullword where you can place a value that the system will
return to the resumed SRB routine. Code RSCODE only if you also code PURGE=NO
or take the default. If you omit RSCODE, the system returns a resume code of zero to
the resumed SRB routine.
,RELATED=value
Provides information used to self-document macros by “relating” functions or services to
corresponding functions or services. The format and content of the information provided
is at the discretion of the user and may be any valid coding values.
ABEND Codes
17
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When the RESUME macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Figure 48. Return Codes for the RESUME Macro for SRBs
Return Code Meaning and Action
00 Meaning: The system has scheduled the suspended SRB to be resumed.
Action: None.
04 Meaning: The address space in which the suspended SRB would have executed has
been scheduled for termination. The system will purge the suspended SRB.
Action: None required. However, you might take some action based upon your
application.
08 Meaning: The suspend token (SPTOKEN) does not identify a currently suspended SRB
routine. The SRB may have already been resumed or purged.
Action: None required. However, you might take some action based upon your
application.
24 Meaning: System error. An error occurred while trying to resume the suspended SRB.
The SRB cannot be resumed.
Action: Retry the request.
Example
Resume the execution of a suspended SRB.
..
.
RESUME SPTOKEN=TOKEN,PURGE=NO,RSCODE=RCODE
..
.
DS F
RCODE DC X'99999999'
TOKEN DS CL8
..
.
Syntax
The list form of the RESUME macro is valid only for resuming an SRB. It is written as
follows:
RESUME
MF=L
Parameters
The parameters are explained under the standard form of the RESUME macro with the
following exception:
MF=L
Requests the list form of RESUME.
Syntax
The execute form of the RESUME macro is valid only for resuming an SRB. It is written as
follows:
RESUME
Parameters
The parameters are explained under the standard form of the RESUME macro with the
following exceptions:
,MF=(E,cntl addr)
Requests the execute form of RESUME. cntl addr must be the address of the parameter
list provided by the list form of the macro.
Description
The RISGNL macro uses the emergency signal (EMS) order code of the signal processor
(SIGP) instruction to invoke the execution of a specified software program on a specific
processor in a multiprocessing configuration. The program may be requested to execute in
parallel or serially with the function requesting the program. The specified software program
(receiving routine) gets control disabled, in key 0, and supervisor state. The receiving routine
cannot enable for I/O or external interrupts, request locks, or issue SVCs. In addition, the
receiving routine must return via the address in register 14.
Environment
The requirements for the caller are:
Programming Requirements
The receiving routine must be loaded into page-fixed, common storage.
The caller must include the CVT mapping macro.
Restrictions
If the receiving routine establishes an FRR, the FRR should not depend on the storage
areas passed to it by the signalling routine. When alternate CPU recovery (ACR) is active,
the signalling routine might receive control from RISGNL before the receiving routine's FRR
gets control. IBM recommends that the receiving routine's FRR access only storage areas
owned independently of the signalling routine. If the receiving routine's FRR attempts to
access storage and the signalling routine has already freed the storage, the FRR might
abnormally end.
Performance Implications
None.
Syntax
The RISGNL macro is written as follows:
RISGNL
PARALLEL
SERIAL
,EP=entry name addr entry name addr: RX-type address, or register (12).
Parameters
The parameters are explained as follows:
PARALLEL
SERIAL
Specifies that control is to be returned to the caller when the specified receiving routine
has been given control (PARALLEL) or has completed execution (SERIAL) on the
designated processor.
,CPU=PCCA addr
Specifies the address of the physical configuration communication area (PCCA) of the
processor on which the function is to be performed.
Note: The PCCA must reside in 24-bit addressable storage.
,PARM=parm addr
Specifies the address of a user-defined fullword parameter to be passed to the receiving
routine. When the receiving routine receives control, general purpose register one points
to a fullword parameter.
ABEND Codes
07B
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When the RISGNL macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Example 1
The routine whose address is in register 12 is to be given control on the processor whose
PCCA address is in register 1. Return control to the caller when the specified receiving
routine has been given control.
RISGNL PARALLEL,CPU=(1),EP=(12)
Example 2
The routine whose address is in register 12 is to be given control on the processor whose
PCCA address is in register 1. The routine will complete before the caller of RISGNL
receives control again. Register 11 contains the address of a parameter to be passed to the
receiving routine.
RISGNL SERIAL,CPU=(1),EP=(12),PARM=(11)
Description
Use the SCHEDIRB macro to initialize and schedule asynchronous exits.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
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
None.
Syntax
The standard form of the SCHEDIRB macro is written as follows:
SCHEDIRB
,TCBPTR=tcb addr tcb addr: RX-type address or address in register (2) - (12).
,RBPTR=rb addr rb addr: RX-type address or address in register (2) - (12).
,IQEPTR=iqe addr iqe addr: RX-type address or address in register (2) - (12).
RETCODE is the only parameter you can specify with IQEPTR.
,PARAMPTR=parm addr parm addr: RX-type address or address in register (2) - (12).
Parameters
The parameters are explained as follows:
EPPTR=ep addr
Specifies a required input parameter containing the 31-bit entry point address of the
asynchronous exit routine. The exit routine will get control in 31-bit addressing mode.
,TCBPTR=tcb addr
,RBPTR=rb addr
,IQEPTR=iqe addr
TCBPTR specifies an input parameter containing the address of a TCB in the current
address space. The asynchronous exit will run under the TCB specified. Use TCBPTR
when you want your asynchronous exit to run under a particular task.
RBPTR specifies an input parameter containing the address of an RB under the current
TCB in the current address space. The asynchronous exit will run directly prior to the
specified RB. Use RBPTR when you want your asynchronous exit to run before a
particular RB.
IQEPTR specifies an input parameter containing the address of an IQE initialized using
the CIRB macro. If you specify IQEPTR, SCHEDIRB will not obtain a new IQE/IRB pair
for scheduling the asynchronous exit.
This option is only valid if you use the CIRB macro to create and initialize an IRB for the
asynchronous exit. For more information on using the CIRB macro, see the OS/390
MVS Programming: Authorized Assembler Services Guide.
RETCODE is the only optional parameter you can specify with IQEPTR.
Notes:
,MODE=PROB
,MODE=SUPR
Specifies whether the asynchronous exit routine is to operate in problem program
(PROB) or supervisor (SUPR) state.
,KEY=PROP
,KEY=SUPR
Specifies that the asynchronous exit routine run in the key propagated from the target
TCB (PROP) or in supervisor key zero (SUPR).
,SVAREA=NO
,SVAREA=YES
Specifies whether to obtain a 72-byte register save area from the virtual storage
assigned to the task specified by the TCBPTR keyword. SVAREA=YES can only be
specified with TCBPTR.
,PARAMPTR=parm addr
Specifies an input parameter containing the address of the parameter list to be passed
to the asynchronous exit routine.
RETCODE=ret code
Specifies a storage location or register where the system is to store the return code. The
return code is also in GPR 15.
ABEND Codes
The SCHEDIRB macro issues the X'AC7' abend code. See OS/390 MVS System Codes for
more information.
SCHEDIRB—List Form
Use the list form of the SCHEDIRB macro together with the execute form of the macro for
applications that require reentrant code. The list form of the macro defines an area of
storage, which the execute form of the macro uses to store the parameters.
Syntax
The list form of the SCHEDIRB macro is written as follows:
SCHEDIRB macro
Parameters
The parameters are explained under the standard form of the SCHEDIRB macro with the
following exception:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the SCHEDIRB macro.
list addr is the name of a storage area to contain the parameters.
attr is an optional 1- to 60-character input string, which can contain any value that is
valid on an assembler DS pseudo-op. You can use this parameter to force boundary
alignment of the parameter list. If you do not code attr, the system provides a value of
0D, which forces the parameter list to a doubleword boundary.
SCHEDIRB—Execute Form
Use the execute form of the SCHEDIRB macro together with the list form of the macro for
applications that require reentrant code. The execute form of the macro stores the
parameters into the storage area defined by the list form.
Syntax
The execute form of the SCHEDIRB macro is written as follows:
SCHEDIRB macro
,TCBPTR=tcb addr tcb addr: RX-type address or address in register (2) - (12).
,RBPTR=rb addr rb addr: RX-type address or address in register (2) - (12).
,IQEPTR=iqe addr iqe addr: RX-type address or address in register (2) - (12).
RETCODE is the only parameter you can specify with IQEPTR.
,PARAMPTR=parm addr parm addr: RX-type address or address in register (2) - (12).
,RETCODE=ret code ret code: RX-type address or address in register (2) - (12).
,MF=(E,list addr) list addr: RX-type address or address in register (2) - (12).
,MF=(E,list addr,COMPLETE) Default: COMPLETE
Parameters
The parameters are explained under the standard form of the SCHEDIRB macro with the
following exception:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the SCHEDIRB macro.
list addr specifies the area that the system uses to store the parameters.
COMPLETE, which is the default, specifies that the system is to check for required
parameters and supply optional parameters that you did not specify.
Description
Use the SCHEDULE macro to schedule a service request block (SRB) for asynchronous
execution. The SRB may be scheduled for execution in any address space and may be
scheduled at either global or local priorities.
A global SRB has a priority that is greater than, and independent of, any address space
priority. A local SRB has a priority within the specific address space in which it executes, but
still has a priority greater than that of any task within the address space.
On the SRB parameter, you specify the address of the SRB. See the section on scheduling
SRBs in OS/390 MVS Programming: Authorized Assembler Services Guide for information
about obtaining storage for the SRB and initializing the fields in the SRB.
For information on using this macro on an MVS/SP version other than the current version,
see “Selecting the Macro Level” on page 7.
Environment
The requirements for the caller when MODE=FULLXM is specified on the SCHEDULE macro
are:
The requirements for the caller when MODE=NONXM is specified on the SCHEDULE macro
are:
Programming Requirements
The scheduling program must obtain 44 bytes of storage for the SRB and initialize certain
fields, as described in the section on scheduling SRBs in OS/390 MVS Programming:
Authorized Assembler Services Guide.
The scheduling program that builds the SRB must include the IHASRB mapping macro, the
CVT mapping macro with DSECT=YES specified, and the IHAPSA mapping macro.
Restrictions
Address space resource managers cannot use the STOKEN parameter.
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
None.
Syntax
The SCHEDULE macro is written as follows:
SCHEDULE
SRB=SRB addr SRB addr: RX-type address, or register (1) or (2) - (12).
,DISABLED
,FEATURE=CRYPTO
Parameters
The parameters are explained as follows:
SRB=SRB addr
Specifies the address of the service request block (SRB).
,SCOPE=LOCAL
,SCOPE=GLOBAL
Specifies whether the service is to be scheduled at a local or global priority.
,LLOCK=NO
,LLOCK=YES
Specifies whether the SRB is to receive control with the LOCAL lock held.
Note: CML (cross memory local) lock means the local lock of an address space other
than the home address space. LOCAL lock means the local lock of the home
address space. When written in lower case, local lock means any local-level
lock, either the LOCAL or a CML lock.
,MODE=NONXM
,MODE=FULLXM
Specifies whether or not the SRB routine receives a copy of the scheduling program's
dispatchable unit access list (DU-AL), and it receives control in the scheduling program's
current cross memory environment.
When you specify NONXM, the SRB routine receives control in noncross memory mode,
and it receives an empty DU-AL. The SRB's primary, secondary, and home address
spaces are all equal to the contents of SRBASCB.
When you specify FULLXM:
The SRB routine will be able to access a copy of the scheduling program's DU-AL,
with the exception of any subspace entries in the scheduling program's DU-AL. The
system does not copy subspace entries. If the scheduling program establishes
addressability to any new data spaces after the SRB is scheduled, the SRB routine
will not have access to the new data space. See the discussion on access lists in
OS/390 MVS Programming: Extended Addressability Guide for more details about
how the system copies a DU-AL.
The SRB routine will receive control in the scheduling program's current cross
memory environment.
Addressing is the following:
– Primary is the scheduling program's primary
– Secondary is the scheduling program's secondary
– Home is the scheduling program's home
When you specify FULLXM, a DU-AL with more than 256 entries is not available to the
scheduled SRB routine until the SRB routine is dispatched. If an error occurs before the
SRB routine is dispatched, the DU-AL might not be available to the SRB routine's FRR.
When you specify FULLXM, you cannot:
,FRR=NO
,FRR=YES
Specifies whether the SRB is to receive control with recovery established. If FRR=YES
is specified, the user must place the address of the FRR in the field SRBFRRA of the
SRB. Before the SRB receives control, the system adds the FRR to the FRR stack.
When you specify YES, the system passes a 24-byte FRR parameter area address to
the SRB routine in register 2. If the scheduling program specifies MODE=FULLXM and
FRR=YES, the recovery routine will be established with SETFRR MODE=FULLXM. If
the scheduling program specifies MODE=NONXM and FRR=YES, the recovery routine
will be established with SETFRR MODE=HOME.
,DISABLED
Specifies that the calling program is running disabled. DISABLED should be specified
only when the calling program is disabled for I/O or external interrupts.
,STOKEN=stoken addr
Specifies the address of the 8-byte STOKEN of the address space in which the SRB
routine is to run. SCHEDULE verifies that SRBASCB represents the same address
space that the STOKEN identifies and that the address space is still active. If the
address space is different or the address space is not active, the system abends the
caller. This action prevents a scheduled SRB from running in an address space other
than the one intended.
,FEATURE=CRYPTO
Specifies that the SRB routine must run on a processor that has an Integrated
Cryptographic Feature (ICRF) associated with it. When you specify this parameter, the
system assigns the correct processor affinity for the routine and overrides any affinity
assigned for the routine in the SRBCPAFF field of the SRB. Use this parameter only for
routines whose exclusive purpose is to encrypt or decrypt data.
ABEND Codes
If STOKEN is specified, the caller might encounter a X'075' abend. If STOKEN is not
specified, the caller might encounter a X'08C' abend. See OS/390 MVS System Codes for
an explanation and programmer responses for these codes.
Example 1
Schedule an SRB at a global priority.
SCHEDULE SRB=(1),SCOPE=GLOBAL
Example 2
Schedule an SRB at a local priority.
SCHEDULE SRB=(1),SCOPE=LOCAL
Example 3
Schedule an SRB at a global priority specifying that the SRB is to receive control with the
LOCAL lock held and recovery established. The issuer of the SCHEDULE macro is disabled.
SCHEDULE SRB=(1),SCOPE=GLOBAL,LLOCK=YES,FRR=YES,DISABLED
Example 4
Schedule an SRB at a local priority specifying that the SRB is to receive control with the
LOCAL lock held and recovery established. The SRBASCB field of the SRB points to the
home address space ASCB. The STOKEN parameter also identifies the home address
space.
MVC SRBASCB,PSAAOLD
ALESERV EXTRACTH,STOKEN=MYSTOKEN
SCHEDULE SRB=(1),LLOCK=YES,FRR=YES,STOKEN=MYSTOKEN
.
.
MYSTOKEN DS 2F
Example 5
Schedule an SRB at a local priority specifying that the SRB is to receive control with the
scheduling program's cross memory environment, a copy of the caller's DU-AL, and recovery
established. The SRB will have addressability to the data space represented by DSSTOKEN.
ALESERV ADD,STOKEN=DSSTOKEN,ALET=DSALET
SCHEDULE SRB=(1),MODE=FULLXM,FRR=YES
.
.
DSSTOKEN DS 2F
DSALET DS 1F
Example 6
Schedule an SRB at a local priority specifying that the SRB routine is to run on a processor
with an ICRF associated with it.
SCHEDULE SRB=(1),SCOPE=LOCAL,FEATURE=CRYPTO
Description
Note: IBM recommends that you use the SCHEDIRB macro rather than SCHEDXIT to
request asynchronous exits.
The SCHEDXIT macro schedules an asynchronous exit routine for execution under a
specific task.
Before using this macro, read the description of using asynchronous exits in the OS/390
MVS Programming: Authorized Assembler Services Guide.
Environment
The requirements for the caller are:
Programming Requirements
If the IQE resides below 16 megabytes, the IQE address that is passed must be a 31-bit
address with the high-order byte of the address set to zero.
The caller must have addressability to the address space on which the exit routine is to be
dispatched.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 Used as a work register by the system
1 IQE address
2-13 Unchanged
14-15 Used as work registers by the system
Performance Implications
None.
Syntax
The standard form of the SCHEDXIT macro is written as follows:
SCHEDXIT
Parameters
The parameter is explained as follows:
IQE=iqe-address
Specifies the address of the interrupt queue element (IQE) that defines the task under
which the exit routine will execute.
ABEND Codes
00A
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Description
Note: IBM recommends that you use the SDUMPX macro rather than SDUMP.
The SDUMP macro invokes SVC dump to provide a fast unformatted dump of virtual storage
to a data set. It is intended for use by authorized routines that encounter errors. If your
program is in primary ASC mode, you can use either SDUMP or SDUMPX. If your program
runs in access register (AR) mode, use SDUMPX instead of SDUMP. SDUMPX provides all
of the functions of SDUMP, as well as some that SDUMP does not offer, but generates code
and addresses that are appropriate for AR mode.
You cannot use the SDUMP macro to dump data space storage. To dump data space
storage, issue SDUMPX.
The caller can initiate an SVC dump in an address space other than the primary. A branch
entry is available for callers who wish a dump of their own or another address space, but
cannot issue an SVC.
When you request a dump of virtual storage, the combination of parameters you code
determines whether MVS produces either a scheduled (asynchronous) or a synchronous
SVC dump. You might make different design decisions for your program based on the type
of dump that MVS produces. Read the information about dumping virtual storage in OS/390
MVS Programming: Authorized Assembler Services Guide for the parameter combinations
that produce each type of dump, and for guidance about designing your program to handle
each type.
For information about how to select this macro for an MVS/SP version other than the current
version, see “Selecting the Macro Level” on page 7.
Except for the data control block (DCB) parameter, all input parameters to this macro can
reside in storage above 16 megabytes if the caller is executing in 31-bit addressing mode.
You can produce reentrant code using the standard form of SDUMP if you do not specify
parameters other than the following:
SDATA
TYPE
HDR
ID
BRANCH
SUSPEND
QUIESCE
BUFFER
PLISTVER
Programs in page-protected storage (such as the nucleus, PLPA, and MLPA) can issue the
standard form of the SDUMP macro without causing a protection exception. However, IBM
recommends using the list and execute forms of SDUMP for programs in page-protected
storage.
Environment
The requirements for the caller with BRANCH=NO are:
Assuming that one of the above conditions has been satisfied, other requirements for callers
with BRANCH=YES are:
Programming Requirements
To generate reentrant code, code the list and execute forms of the SDUMP macro. Because
the execute form of the macro is dependent on the length determined by the list form, the list
form must appear before the execute form in a reentrant program.
Callers can determine the length of the parameter list by using the following programming
technique to calculate the amount of storage needed for only those options specified for the
SDUMP macro:
SDUMPBEG SDUMP SDATA=(SUM),SUMLIST=SLIST,MF=L
SDUMPEND EQU
SDUMPLEN DC A(SDUMPEND-SDUMPBEG)
Callers that issue SDUMP with BRANCH=YES must include the CVT mapping macro.
Restrictions
For SVC entry, the caller cannot have an EUT FRR established.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0-1 Used as work registers by the system
2-13 Unchanged
14 Used as a work register by the system
15 Return code in bits 24-31. If the return code is X'08', and you specified
the FAILRC parameter, GPR 15 also contains a reason code in bits 16-23.
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
Performance Implications
None.
Syntax
The standard form of the SDUMP macro is written as follows:
SDUMP
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: RX-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: RX-type address, or register (2) - (12).
addr Note: KEYLIST cannot be specified without SUBPLST.
Parameters
The parameters are explained as follows:
HDR=‘dump title’
HDRAD=dump title addr
Specifies the title or address of the title to be used for the dump. If HDR is specified, the
title must be 1-100 characters enclosed in apostrophes, although the apostrophes do not
appear in the actual title. If HDRAD is specified, the first byte at the indicated address
specifies the length of the title in bytes.
If the length of the title is greater than 100, SVC dump issues an abend with a
completion code of X'233', reason code X'14', then returns to the caller with a return
code of 8. If the length of the title is zero, SVC dump continues processing as if the
HDR or HDRAD parameter was not specified.
If these keywords are specified with BRANCH=YES or ASID/ASIDLST (that is, to cause
a scheduled dump), the system moves the title to SVC dump storage before it returns
control to the caller. There is no requirement to synchronize with the completion of the
dump.
,DCB=dcb addr
Specifies the address of a previously opened data control block (DCB) for the data set
that is to contain the dump. If this parameter is omitted, one of the SYS1.DUMP data
sets is used. When you specify the DCB parameter, the dump contains data from only
the requestor's home address space. The DCB must be addressable from the home
address space. The control blocks built by OPEN must also be addressable from the
home address space. The DCB must support EXCP. You must specify the following
parameters on the DCB macro: RECFM=FB, LRECL=4160, and BLKSIZE=4160.
The DCB must reference device types supported by SVC dump. Eligible device types
are unlabeled 9-track 2400-series tape devices (or tape devices compatible with the
2400-series) and any direct access devices supported by the system that have a track
size of at least 4160 bytes. (4160 bytes equals 1 SVC dump output record.) SVC dump
does not support secondary extents on DCB data sets.
SVC dump does not close the dump data set. Use the CLOSE macro to close the data
set and cause an end-of-file mark or a tape mark to be placed after the dump data. SVC
dump sets up the DCB so that CLOSE works correctly and positions the end-of-file mark
or tape mark at the correct place on the data set. For tape data sets, you can write a
tape mark to separate multiple dumps without using the CLOSE macro.
Because it is the caller's responsibility to close the dump data set and the data set may
be closed only after all the data has been written to it, the caller needs to receive
notification when the dump writing phase is complete. Therefore, if you specify the DCB
parameter with the ECB parameter, the system posts the ECB at the completion of the
dump writing phase. The ECB parameter is required when a DCB is provided for
scheduled dumps. If an ECB is not provided with the DCB for a synchronous dump,
SVC dump returns to the caller at the completion of the dump writing phase. See
OS/390 MVS Programming: Authorized Assembler Services Guide for descriptions of
scheduled and synchronous dumps.
,ASID=ASID addr
,ASIDLST=list addr
Specifies the address of a halfword or a list of halfwords containing the hexadecimal
address space identifier of an address space to be dumped. If register notation is used,
the low-order halfword of the register contains the address space identifier of the
address space to be dumped. If both parameters are omitted, the primary address
space is dumped. If 0 is specified for the address space identifier, a dump is scheduled
for the home address space of the issuer of the SDUMP macro. No private area storage
is included in the dump for the specified address space if either of the following events
occurred:
No SDATA parameters were specified that apply to the private area of the
requested address space.
The CHNGDUMP operator command was used to set an overriding parameter in
the system dump options list that limits SVC dumps to areas outside of the private
area.
The ASID list can contain a maximum of 15 address space identifiers. The high-order bit
of the halfword containing the last identifier of the list must be set to 1, and all other
high-order bits must be set to 0.
,TYPE=XMEM
,TYPE=XMEME
,TYPE=NOLOCAL
,TYPE=FAILRC
Specifies that the caller's cross memory mode determines the address spaces to dump
(XMEM or XMEME) or that the caller cannot allow SDUMP to obtain a local lock
(NOLOCAL) or that SVC dump should return a reason code with the return code to the
DUMP command processor when the requested dump was not taken (FAILRC).
XMEM requests SVC dump to use the caller's cross memory mode at the time the
SDUMP macro is executed.
XMEME requests SVC dump to use the caller's cross memory mode at the time of the
error for which the dump is being taken. The home address space is dumped for both
keywords. The relevant primary and secondary address spaces are also dumped if they
are unique. If a cross memory local lock was held, the address space whose local lock
is held is also dumped.
NOLOCAL indicates that the caller is in an environment where SDUMP cannot hold a
local lock. This option has meaning only when BRANCH=YES is specified and the caller
is enabled and unlocked (for example, the caller has an enabled unlocked task FRR
established or is in SRB or cross memory mode).
FAILRC requests that the caller receive special information from SVC dump whenever
the dump fails. Some information is already placed in SDWASDRC as a result of the
SVC dump failure. When the caller receives control again after a dump failure (return
code 8) and the caller has specified TYPE=FAILRC, the reason code is combined with
the return code and passed to the caller in either register 15 or the ECB, or through the
IHASDST mapping macro if the SRBPARM area was provided for an SRB. The reason
code is in bits 16-23; the return code is in bits 24-31. When the return code is in the
ECB, the POST flag is set on. SDUMP passes back a return code in register 15 and
places the reason code in the SDWA. The reason code explains why the dump failed.
,PLISTVER=1
,PLISTVER=2
Specifies the length of the parameter list used. When PLISTVER=1 is specified, SDUMP
uses a parameter list of up to 68 bytes. PLISTVER=2 specifies a 128-byte parameter
list. The default is PLISTVER=1, unless you specify SYMREC, ID, IDAD, PSWREGS,
SDATA=DEFAULTS, SDATA=NODEFAULTS, or SDATA=IO, in which case the default
is PLISTVER=2.
,SYMREC=symrec addr
Specifies the address of a valid symptom record for DAE to use for dump suppression.
DAE suppresses the SVC dump if the primary symptom string found in the symptom
record matches previously known symptoms, and, suppression has been enabled by the
installation.
The caller must build the symptom record and fill in at least the ‘SR’ identifier and the
primary symptom string, which should uniquely identify the error.
SVC dump issues an abend with a completion code of X'233', reason code X'9C',
then returns to the caller with a return code of 8 if the symptom record identifier is not
‘SR’, if the offset and length of the primary symptom string are not initialized, or if the
first byte of the symptom record and the last byte of the secondary symptom string are
not addressable.
SVC dump does not include the symptom record in the dump. The caller can use the
SUMLIST keyword to include the symptom record in the dump.
See the dump analysis and elimination (DAE) section in OS/390 MVS Programming:
Authorized Assembler Services Guide for more information on symptom strings and how
to build them.
The ADSR macro maps the symptom record. See OS/390 MVS Data Areas, Vol 1
(ABEP-DALT) for a macro mapping of the ADSR.
,ID='identifier'
,IDAD=identifier addr
Specifies an identifier that is included in dump message IEA911E, which is issued at the
completion of the dump. The identifier must be from one to 50 printable characters. If ID
is specified, the identifier must be enclosed in apostrophes, although the apostrophes do
not appear in the actual identifier. If IDAD is specified, the first byte at the indicated
address specifies the length of the identifier in bytes. If the length of the identifier is
greater than 50, SVC dump issues an abend with a completion code of X'233', reason
code X'8C', then returns to the caller with a return code of 8. If the length of the
identifier is zero, SVC dump continues processing as if the ID or IDAD parameter was
not specified.
,PSWREGS=list addr
Specifies a PSW or register area to be passed to SVC dump. This area may contain a
PSW, control registers 3 and 4, all the general purpose registers (GPRs), and all the
access registers (ARs). When PSWREGS is specified, SVC dump includes the following
information in the summary dump portion of the dump:
Note: If the control registers are provided, they will be used to determine the primary
and secondary address spaces. If no control registers are provided, then the
storage will be dumped from the caller's primary and secondary address spaces.
The PSWREGS parameter allows programs running in a nonabend environment, where
there is no SDWA, to request SVC dump and dump suppression services similar to
those available in an abend environment, where an SDWA is present.
The parameter list for the PSWREGS parameter must reside in the address space
currently addressable by SVC dump. The caller must provide at least the length and the
mask field. Each bit in the mask refers to a data area. If a bit is set, SVC dump expects
that the data area is supplied. If a mask bit is off and any lower-order mask bit is on, the
corresponding storage area must be included in the parameter list. If a mask bit is off,
but no lower-order mask bits are set, then the storage area need not be supplied. The
following diagram describes the parameter list:
,ECB=(ecb addr)
,SRB=(srb addr)
Specifies how the system should synchronize your program with dump processing.
ECB specifies that the system should post the event control block (ECB) indicated by
ecb addr. The system normally posts the ECB at the completion of the capture phase.
However, if you specify the DCB parameter with the ECB parameter, the system posts
the ECB at the completion of the dump writing phase. If the capture phase is not
successful, the system posts the ECB at the completion of SVC dump processing.
If an A-type address is specified, ecb addr specifies the address of a fullword containing
the address of the ECB. If a register operand is used, the register must contain the
actual address of the ECB. If this parameter is omitted, the caller is not notified of the
completion of the capture phase. The fullword and the ECB must be addressable from
the home address space. The fullword address that points to the ECB must be a 24-bit
or 31-bit address.
SRB specifies that the system should schedule the service request block (SRB)
indicated by srb addr. The system normally schedules the SRB at the completion of the
capture phase. However, if you specify the DCB parameter with the SRB parameter, the
system schedules the SRB at the completion of the dump writing phase. If the capture
phase is not successful, the system schedules the SRB at the completion of SVC dump
processing.
When the caller builds the SRB, the caller may pass the address of a status area in the
SRBPARM field. This status area, SDSTATUS, is mapped by IHASDST. SVC dump
passes information about the dump to the SRB routine by means of this status area. If
SVC dump schedules the SRB at the completion of the capture phase, the name of the
dump data set is not passed to the caller.
Note: If you want SVC dump to pass the name of the dump data set to the caller, use
the SDUMPX macro and specify SRB=(srb addr,WRITE).
,SDATA=(sdata options)
Specifies the system is to dump the following:
LPA The active link pack area modules and SVCs for each address space
being dumped.
LSQA The LSQA and ELSQA for each address space being dumped
(subpools 203-205, 213-215, 223-225, 233-235, and 253-255).
NOALLPSA or NOALL
The PSA for one processor is dumped. This is either the processor at
the time of the error or the processor at the time of the dump.
NOSQA The system queue area is not dumped.
NOSUMDUMP or NOSUM
A summary dump is not included in the SVC dump.
NUC The non-page-protected areas of the DAT-ON nucleus. (The ALLNUC
parameter must be specified to obtain the entire nucleus, including the
page-protected areas of the DAT-ON nucleus and the DAT-OFF
nucleus.)
PSA The PSA for one processor is dumped. This is either the processor at
the time of the error or the processor at the time of the dump.
RGN The allocated pages in the private area of each address space being
dumped. This includes the following areas:
Subpools Storage
0-127, 129-132, 229, 230, 240, 249, 250-252 All storage allocated to these subpools
203-205, 213-215, 223-225, 233-235, 253-255 All storage allocated to the LSQA and ELSQA
236, 237 All storage allocated to the SWA and ESWA
SVC dump does not dump all the obtained private storage in an
address space when the RGN option of SDATA is specified. This
reduces the number of page faults that occur during SVC dump
processing, decreases the time required to take a dump, and reduces
the size of the dump.
SVC dump dumps only those obtained pages that have something
stored into them. Data-in-virtual pages that have been changed since
the last DIV macro (that specified the SAVE service) executed, will
also be dumped.
Eliminated from the dump are the pages of storage that are in a
freshly-obtained state. Data-in-virtual pages that are in central storage,
but have not been changed, are also considered to be in a
freshly-obtained state. They will not be dumped.
SQA The SQA and ESQA subpools (226, 239, 245, 247, and 248).
SUMDUMP or SUM
A summary dump is to be included with the SVC dump output. The
trace table is included in the nonsummary portion of the dump if this
option is specified or used as a default.
The type of summary dump depends on how you specify the BRANCH
and SUSPEND parameters:
If you specify BRANCH=YES and SUSPEND=NO, you get a
disabled summary dump.
If you specify BRANCH=YES and SUSPEND=YES, you get a
suspend summary dump.
If you specify BRANCH=NO, you get an enabled summary dump.
For a description of the dump contents, see OS/390 MVS Diagnosis:
Tools and Service Aids.
SWA The scheduler work area subpools for each address space being
dumped (subpools 236 and 237). This includes all storage allocated
above and below 16 megabytes.
TRT The system trace table, the GTF trace records, and master trace data
if these types of traces are active.
DEFAULTS or DEFS
The following default SDATA options are included in the SVC dump:
ALLPSA
SQA
SUMDUMP
IO
Any default SDATA options specified by the CHNGDUMP
command when CHNGDUMP is in ADD mode.
Notes:
1. DEFAULTS is not required. All SVC dumps include the default
SDATA options unless NODEFAULTS is specified.
2. DEFAULTS and NODEFAULTS are mutually exclusive.
NODEFAULTS or NODEFS
The SDATA defaults are NOT included in the SVC dump. Specifying
NODEFAULTS reduces the size of an SVC dump by excluding the
following default SDATA options:
ALLPSA
SQA
SUMDUMP
IO
Any default SDATA options specified by the CHNGDUMP
command when CHNGDUMP is in ADD mode.
If a data area relating to an SDATA option is required in the dump, the
programmer can code that SDATA option on the SDUMP macro
invocation. All keywords and SDATA options are valid when NODEFS
is coded.
If you specify NODEFAULTS, the dump still contains some default
system areas that are included in all dumps.
IO The IO data areas are included in the SVC dump.
4 bytes
Length of the list (X4848 bytes)
First ASID Number of ranges to be
dumped - this ASID
Number of ranges to be
Last ASID dumped - this ASID
Range 1 starting address
Range 1 ending address
Note: If LISTA or SUBPLST is specified for a scheduled dump request and if the list
does not exceed 484 bytes in size, SVC dump will move the list to SVC dump
storage. The caller can free or reuse this space on return from SVC dump. No
synchronization with SVC dump completion is required. If the list exceeds 484
bytes, SVC dump will not move the list and synchronization with SVC dump
completion is required.
The first word contains the ASID in bits 0-15 and the number of subpools
associated with this ASID (n) in bits 16-31. If 0 is specified as the ASID, the caller's
home ASID is used.
The next n halfwords contain the subpool IDs (right justified) corresponding to the
virtual storage to be included in the SVC dump. The manner in which these
subpools are dumped depends on whether they are private or common area
subpools.
– If a private area subpool (related to a TCB) is specified, all virtual storage
associated with this subpool, for all TCBs in the specified address space, is
dumped.
– If a common area subpool is specified, all of the virtual storage allocated in the
subpool is dumped.
SVC dump does not dump all the obtained storage in an address space if the SUBPLST
list keyword for private subpools is coded. This reduces the number of page faults that
occur during SVC dump processing and the time required to take a dump. It also
reduces the size of dumps on tape or DASD.
For storage that is not related to data-in-virtual, only obtained pages that have
something stored into them are dumped. This eliminates the pages of storage that are in
a freshly obtained state.
For storage that is related to data-in-virtual, only pages that are in central storage are
dumped, as well as pages that have been changed since the last data-in-virtual SAVE
operation.
Notes:
,BUFFER=NO
,BUFFER=YES
Specifies that the contents of the SQA buffer is (YES) or is not (NO) to be included in
the dump. (The SQA buffer does not include the SDUMP parameter list or any data
pointed to by the parameter list.) Callers who specify BUFFER=YES on the SDUMP
macro will obtain a dump of a 4K buffer reserved in the SQA for the callers of SVC
dump. You can reserve the buffer by setting the high-order bit of the CVTSDBF field in
the communications vector table (CVT). Once you have reserved the buffer, you can fill
it with data before issuing SDUMP. Programs that are involved with data that might
change before SDUMP can dump it should use this buffer.
The CVTSDBF field of the CVT points to the buffer. Before using the buffer, use
compare and swap logic to serialize on the high-order bit of CVTSDBF. If the bit was on
(B‘1’), the buffer is in use, and you should continue processing as though a dump could
not be taken. If the bit was off (B‘0’), the bit is set to B‘1’ by the compare and swap. You
can then fill the buffer and issue SDUMP. If the compare and swap sets the CVTSDBF
bit, SDUMP resets it for you.
,QUIESCE=YES
,QUIESCE=NO
Specifies that the system is to be set nondispatchable until the contents of the SQA and
the CSA are dumped (YES), or that the system is to be left dispatchable (NO). If the
SDATA parameter does not specify SQA or CSA, the QUIESCE=YES request is
ignored.
Note: Summary dumps (SUMDUMP) for branch entries (BRANCH=YES) always cause
the system to be set nondispatchable until the summary dump is written.
,BRANCH=NO
,BRANCH=YES
Specifies that a branch entry is to be used for interfacing with SVC dump to schedule a
dump (YES), or that an SVC instruction is to be generated for interfacing with SVC
dump (NO).
ASIDLIST
ASID=asid addr
TYPE=XMEM or TYPE=XMEME
LISTA
LISTD=list addr, when the STOKEN represents either an address space other than
the primary address space, or a SCOPE=SINGLE data space owned by a program
that is not running in the primary address space
SUBPLST=subpool id list addr, when the list of address spaces with associated
subpool IDs contains at least one address space other than the primary address
space.
You might make different design decisions for your program based on the type of dump
MVS produces. See OS/390 MVS Programming: Authorized Assembler Services Guide
for guidance about designing your program to handle each type of dump. If
BRANCH=YES is specified and the caller has not specified at least one of the following
keywords: ASID, ASIDLST, TYPE=XMEM, TYPE=XMEME, or LISTA, the dump is
scheduled to the home address space. Routines that issue SDUMP with BRANCH=YES
must provide a 72-byte save area pointed to by register 13, and must include the CVT
mapping macro.
For BRANCH=YES entry by reentrant recovery routines, SDUMP processing moves the
data supplied by the following parameters to a system area:
HDR
HDRAD
ID
IDAD
ASIDLIST
STORAGE
LIST
LISTA
SUBPLST
KEYLIST
This enables the recovery routine to free its storage on return from SDUMP although the
dump has not completed.
,SUSPEND=NO
,SUSPEND=YES
Specifies that a suspend summary dump is requested (YES) or not requested (NO).
SUSPEND=YES must be used together with the BRANCH=YES and
SDATA=SUMDUMP parameters. This keyword should be used by routines that can
experience page faults but that want to save dump information in a virtual storage
buffer.
,SUMLIST=list addr
,SUMLSTA=list addr
Specifies a list of starting and ending addresses of areas to be included in a summary
dump (SUMLIST) or specifies a combined list of ASIDs and storage ranges (SUMLSTA).
SUMDUMP must be specified as an SDATA parameter and each starting address must
be less than its corresponding ending address.
For SUMLIST, the storage list must contain an even number of addresses, and each
address must occupy one fullword. In the list, the high-order bit of the fullword
containing the last ending address of the list must be set to 1, and all other high-order
bits must be set to 0.
For SUMLSTA, the first fullword of the list contains the number of bytes (including the
first word) in the list. SUMLSTA specifies a list of ASIDs and storage ranges as follows:
4 bytes
Length of the list
First ASID Number of ranges to be
dumped - this ASID
Range 1 starting address
Range 1 ending address
Range 2 starting address
Range 2 ending address
Restriction:
When BRANCH=YES and SUSPEND=NO are also specified, the list must be
addressable using the addressability established when SVC dump was entered. The
lists themselves and all ranges specified must reference paged-in data. Paged-out data
is not dumped by summary dump.
When BRANCH=YES and SUSPEND=YES are also specified, the lists must be
addressable using the addressability established when SVC dump was entered. The
lists and referenced data can either be in paged in or paged out areas. The maximum
amount of summary dump data with this type of dump is 1M.
When BRANCH=NO is also specified, the lists must be addressable in all address
spaces in which the dump will be taken (those address spaces specified by ASID,
ASIDLST, LISTA, or TYPE=XMEM, TYPE=XMEME, or SUBPLST). The lists and
referenced data can be in paged-in or paged-out areas. The maximum amount of
summary dump data possible with this type of dump is dependent only on the size of
the dump data set.
Each ASID specified with SUMLSTA must represent a valid, swapped-in address space
in order for the data to be dumped.
Programming Notes: The total number of distinct ASIDs that can be specified by
TYPE=XMEM, TYPE=XMEME, LISTA, ASID, SUBPLST and ASIDLST is fifteen. If more
than fifteen are requested, only the first fifteen are processed. There is no restriction on
the number of ASIDs specified by the SUMLSTA parameter, nor do SUMLSTA ASIDs
contribute toward the fifteen ASID limit.
Figure 52. Return Codes for the SDUMP Macro when BRANCH=NO
Return Code Meaning and Action
00 Meaning: A complete dump was taken.
Action: None
04 Meaning: A partial dump was taken because the dump data set did not have sufficient
space.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 268).
If BRANCH=YES or any ASID other than the current ASID was requested, register 15
contains one of the following hexadecimal return codes when control is returned after the
system has scheduled the dump:
Figure 53. Return Codes for the SDUMP Macro when BRANCH=YES
Return Code Meaning and Action
00 Meaning: A dump was scheduled.
Action: None
08 Meaning: The system was unable to schedule a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 268).
Figure 54. Return Codes for the ECB Parameter and SRB Parameter
Return Code Meaning and Action
00 Meaning: All the requested data was captured and the dump writing phase was
successfully initiated.
Action: None
04 Meaning: Some of the requested data could not be captured and one or more partial
dump indicators have been set in SDRSN. The dump writing phase was successfully
initiated.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 268).
If you specify the DCB parameter with the ECB or SRB parameter, the system also returns
one of the following hexadecimal codes in the ECB or SRB at the completion of the dump
writing phase:
Figure 55. Return Codes for the ECB or SRB Parameter with the DCB Parameter
Return Code Meaning and Action
00 Meaning: All the requested data was captured and then written to the dump data set.
Action: None
04 Meaning: Some of the requested data could not be captured or could not be written to the
dump data set.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information. The
reason codes might also be passed to the SRB routine in the SDSTPDRC field of
SDSTATUS.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 268).
Note: The ECB will not be posted unless the return code from SDUMP is 0.
Example 1
This example shows how SVC dump can be branch entered to initiate a dump in an address
space by callers who cannot issue an SVC. Areas to be dumped are requested via three
parameters (BUFFER, SDATA, and STORAGE). The dump has the title indicated in the
HDR parameter, the caller requests to be notified of the completion of the scheduled dump
via the ECB parameter, and the dump is going to a private data set (indicated by the DCB
option).
SDUMP HDR='USER DATA FOR TEST A',DCB=TESTADCB,BUFFER=YES, X
ASID=TSTAASID,ECB=(8),QUIESCE=YES,BRANCH=YES, X
STORAGE=(A,B,C,D,(9),E),SDATA=(ALLPSA,SQA,LSQA)
Example 2
This example shows how SVC dump can be invoked via a branch entry to initiate a dump of
several address spaces by callers who cannot issue an SVC. Areas to be dumped are
requested via four parameters (BUFFER, SDATA, LIST, and SUMLIST). The address spaces
to be dumped are described by the ASIDLST parameter. Note that areas specified by
SUMLIST only apply to the primary address space. The LIST addressed by the LIST
keyword must be addressable from any address space. The dump has the title indicated in
the HDR parameter, and the caller requests to be notified of the completion of the scheduled
dump via the ECB parameter.
SDUMP HDR='USER DATA FOR TEST B', X
BUFFER=YES,ASIDLST=TSTALIST,ECB=(8), X
QUIESCE=YES,BRANCH=YES,LIST=(9), X
SDATA=(ALLPSA,NUC,SQA,SUMDUMP), X
SUMLIST=TSTSLIST
.
.
.
TSTALIST DC X'2222222A822B'
TSTSLIST DC X'2222222282422222'
SDUMP—List Form
Use the list form of the SDUMP macro to construct a control program parameter list. You
can specify any number of storage addresses using the STORAGE parameter. Therefore,
the number of starting and ending address pairs in the list form of SDUMP must be equal to
the maximum number of addresses specified in the execute form of the macro.
Syntax
The list form of the SDUMP macro is written as follows:
SDUMP
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: A-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: A-type address, or register (2) - (12).
addr Note: KEYLIST cannot be specified without SUBPLST.
,MF=L
Parameters
The parameters are explained under the standard form of the SDUMP macro, with the
following exception:
,MF=L
Specifies the list form of the SDUMP macro.
SDUMP—Execute Form
A remote control program parameter list is referred to and can be modified by the execute
form of the SDUMP macro.
If you code one or more of the SDATA parameters on the execute form of the macro, any
SDATA parameters coded on the list form are lost.
Syntax
The execute form of the SDUMP macro is written as follows:
SDUMP
,TYPE=(type code) type code: Any of the following, separated by commas: XMEM,
XMEME, NOLOCAL, FAILRC
Note: XMEM and XMEME are mutually exclusive codes.
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: RX-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: RX-type address, or register (2) - (12).
addr
Note: KEYLIST cannot be specified without SUBPLST.
,MF=(E,ctrl addr) ctrl addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained under the standard form of the SDUMP macro, with the
following exception:
Example 1
The execute form is used to change SDATA areas, BUFFER, and QUIESCE options in the
SDUMP parameter list. The list form of SDUMP was previously used to create the basic
SDUMP parameter list located by register 1.
SDUMP SDATA=(SQA,LPA),BUFFER=NO,QUIESCE=NO,MF=(E,(1))
Example 2
Operation: This example shows a dump request from SUBSYSTEM1. This dump will be
suppressed if the symptoms in the symptom record match a previous dump's symptoms, and
if the installation has enabled dump suppression. The dump does not include the SDATA
options specified on CHNGDUMP or the ALLPSA or SQA data areas. The dump does
include the IO data areas and a summary dump which contains PSW/register data.
SDUMP ID='SUBSYSTEM1',SYMREC=(8),SDATA=(NODEFS,IO),PSWREGS=(9)
Description
The SDUMPX macro invokes SVC dump to provide a fast unformatted dump of virtual
storage or coupling facility structure information to a data set. Programs that run in either
primary or access register (AR) mode can use SDUMPX. SDUMPX is similar to SDUMP,
except that SDUMPX can generate code and addresses that are appropriate for AR mode,
whereas SDUMP cannot. All parameters on SDUMP are valid for SDUMPX. Parameters
available only on SDUMPX are: LISTD; SUMLSTL; STRLIST; COUPLE, WLM, and
XESDATA options on SDATA; options on ECB and SRB; REMOTE; INTOKEN; PROBDESC;
JOBLIST; DSPLIST; and PLISTVER=3.
To dump data space storage, issue SDUMPX and specify either the DSPLIST, LISTD or
SUMLSTL parameters.
The caller can initiate an SVC dump in an address space other than the primary. A branch
entry is available for callers who wish a dump of their own or another address space, but
cannot issue an SVC.
When you request a dump of virtual storage, the combination of parameters you code
determines whether MVS produces either a scheduled (asynchronous) or a synchronous
SVC dump. You might make different design decisions for your program based on the type
of dump that MVS produces. Read the information about dumping virtual storage in OS/390
MVS Programming: Authorized Assembler Services Guide for the parameter combinations
that produce each type of dump, and for guidance about designing your program to handle
each type.
For information about how to select this macro for an MVS/SP version other than the current
version, see “Selecting the Macro Level” on page 7.
Except for the data control block (DCB) parameter, all input parameters to this macro can
reside in storage above 16 megabytes if the caller is executing in 31-bit addressing mode.
You can produce reentrant code using the standard form of SDUMPX if you do not specify
parameters other than the following:
SDATA
TYPE
HDR
ID
BRANCH
SUSPEND
QUIESCE
BUFFER
PLISTVER
SVC dump allows programs in page-protected storage (such as the nucleus, PLPA, and
MLPA) to issue the standard form of the SDUMPX macro without causing a protection
exception. However, IBM recommends using the list and execute forms of SDUMPX for
programs in page-protected storage.
Wildcards
You can use wildcards to identify multiple names. On an SDUMPX macro, you can specify
wildcards in job names, data space names, and system names. The parameter descriptions
tell you when you can use wildcards. The wildcards are:
Wildcards Meaning
* Zero or more characters, up to the maximum length of the string. An * can
start the string, end it, appear in the middle, or appear in several places in
the string. A single * for the name indicates that all job names, data space
names, or system names will match.
? One character. One or more ? can start the string, end it, appear in the
middle, or appear in several places in the string. A single ? indicates all
names consisting of one character.
Note: You can mix wildcards in any combination.
Examples are:
*A* specifies all names that contain an A, including the name A.
*A*B specifies all names that contain an A followed by and ending with a B, with or
without any intervening characters. The name can have characters before the A.
?A? specifies all 3-character names with an A as the second character.
?A?B specifies all 4-character names with A as the second character and B as the
fourth character.
?A* specifies all names of 2 or more characters with A as the second character.
Environment
The requirements for the caller with BRANCH=NO are:
The requirements for the caller with BRANCH=YES are one of the following:
Be in SRB mode
Hold any lock
Have an enabled-unlocked-task FRR on the FRR stack
Assuming that one of the above conditions has been satisfied, the other requirements for
callers with BRANCH=YES are:
Programming Requirements
For AR mode callers:
– Issue the SYSSTATE ASCENV=AR macro before SDUMPX. SYSSTATE
ASCENV=AR tells the system to generate code appropriate for AR mode.
– The parameter list address must be qualified by an ALET of zero.
To generate reentrant code, code the list and execute forms of the SDUMPX macro.
Because the execute form of the macro is dependent on the length determined by the
list form, the list form must appear before the execute form in a reentrant program.
Callers can determine the length of the parameter list by using the following
programming technique to calculate the amount of storage needed for only those
options specified for the SDUMPX macro:
SDMPXBEG SDUMPX SDATA=(SUM),SUMLIST=SLIST,MF=L
SDMPXEND EQU
SDMPXLEN DC A(SDMPXEND-SDMPXBEG)
Callers that issue SDUMPX with BRANCH=YES must include the CVT mapping macro.
Restrictions
None.
Before issuing the SDUMPX macro, the caller does not have to place any information into an
access register (AR).
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
None.
Syntax
The standard form of the SDUMPX macro is written as follows:
SDUMPX
,TYPE=(type code) type code: Any of the following, separated by commas: XMEM,
XMEME, NOLOCAL, FAILRC
Note: XMEM and XMEME are mutually exclusive codes.
,STRLIST=structure list addr structure list addr: RX-type address or register (2) - (12).
Use the IHABLDP macro to build the structure list address.
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: RX-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: RX-type address, or register (2) - (12).
addr
Note: KEYLIST cannot be specified without SUBPLST.
Parameters
The parameters are explained as follows:
HDR=‘dump title’
HDRAD=dump title addr
Specifies the title or address of the title to be used for the dump. If HDR is specified, the
title must be 1-100 characters enclosed in apostrophes, although the apostrophes do not
appear in the actual title. If HDRAD is specified, the first byte at the indicated address
specifies the length of the title in bytes.
If the length of the title is greater than 100, SVC dump issues an abend with a
completion code of X'233', reason code X'14', then returns to the caller with a return
code of 8. If the length of the title is zero, SVC dump continues processing as if the
HDR or HDRAD parameter was not specified.
If these keywords are specified with BRANCH=YES or ASID/ASIDLST (that is, to cause
a scheduled dump), the system moves the title to SVC dump storage before it returns
control to the caller. There is no requirement to synchronize with the completion of the
dump.
,DCB=dcb addr
Specifies the address of a previously opened data control block (DCB) for the data set
that is to contain the dump. If this parameter is omitted, one of the SYS1.DUMP data
sets is used. When you specify the DCB parameter, the dump contains data from only
the requestor's home address space. The DCB must be addressable from the home
address space. The control blocks built by OPEN must also be addressable from the
home address space. The DCB must support EXCP. You must specify the following
parameters on the DCB macro: RECFM=FB, LRECL=4160, and BLKSIZE=4160.
The DCB must reference device types supported by SVC dump. Eligible device types
are unlabeled 9-track 2400-series tape devices (or tape devices compatible with the
2400-series) and any direct access devices supported by the system that have a track
size of at least 4160 bytes. (4160 bytes equals 1 SVC dump output record.) SVC dump
does not support secondary extents on DCB data sets.
SVC dump does not close the dump data set. Use the CLOSE macro to close the data
set and cause an end-of-file mark or a tape mark to be placed after the dump data. SVC
dump sets up the DCB so that CLOSE works correctly and positions the end-of-file mark
or tape mark at the correct place on the data set. For tape data sets, you can write a
tape mark to separate multiple dumps without using the CLOSE macro.
Because it is the caller's responsibility to close the dump data set and the data set may
be closed only after all the data has been written to it, the caller needs to receive
notification when the dump writing phase is complete. Therefore, if you specify the DCB
parameter with the ECB parameter, the system posts the ECB at the completion of the
dump writing phase, no matter what has been specified on the ECB parameter. The
ECB parameter is required when a DCB is provided for scheduled dumps. If an ECB is
not provided with the DCB for a synchronous dump, SVC dump returns to the caller at
the completion of the dump writing phase. See OS/390 MVS Programming: Authorized
Assembler Services Guide for descriptions of scheduled and synchronous dumps.
,ASID=ASID addr
,ASIDLST=list addr
Specifies the address of a halfword or a list of halfwords containing the hexadecimal
address space identifier of an address space to be dumped. If register notation is used,
the low-order halfword of the register contains the address space identifier of the
address space to be dumped. If both parameters are omitted, the primary address
space is dumped. If 0 is specified for the address space identifier, a dump is scheduled
for the home address space of the issuer of the SDUMPX macro. No private area
storage is included in the dump for the specified address space if either of the following
events occurred:
No SDATA parameters were specified that apply to the private area of the
requested address space.
The CHNGDUMP operator command was used to set an overriding parameter in
the system dump options list that limits SVC dumps to areas outside of the private
area.
The ASID list can contain a maximum of 15 address space identifiers. The high-order bit
of the halfword containing the last identifier of the list must be set to 1, and all other
high-order bits must be set to 0.
If the combined address spaces from the following exceed 15, the system dumps the
first 15.
,JOBLIST=list addr
Specifies the address of an area that identifies jobs to be dumped. If register notation is
used, the register contains the address of the area. If the parameter is omitted, the
current job is dumped.
The area must be in common storage. The area consists of:
A 4-byte header, which indicates the total length of the area. The length includes
the 4 bytes of the header.
If the area exceeds 256 bytes, the caller must not free the area until data capture
for the dump is completed. For an asynchronous dump, use an ECB or SRB
parameter to be notified when data capture is complete or use a SUSPEND
parameter to suspend other processing until data capture is completed. (For a
synchronous dump on the local system, you do not have to worry about freeing the
area too soon because the system does not return control to the caller until
processing completes.)
If the length is less than 4 bytes, the system ignores the JOBLIST parameter.
One or more 8-character job names for jobs to be included in the dump. Left
justify each name in its 8-character field; pad it on the right with blanks, if needed. A
job name can be specified with wildcards. See “Wildcards” on page 278.
You can specify a maximum of 15 job names. See the ASID parameter for the limit on
address spaces that can be specified.
,DSPLIST=list addr
Specifies the address of an area that identifies 256 data spaces to be dumped. If
wildcard specifications are used, only 256 of the data spaces that match can be
dumped. Also, each data space reduces the number of LISTD entries available by one.
If register notation is used, the register contains the address of the area. If the
parameter is omitted, data spaces are not dumped.
The area must be in common storage. The area consists of:
A 4-byte header, which indicates the total length of the area. The length includes
the 4 bytes of the header.
If the area exceeds 512 bytes, the caller must not free the area until data capture
for the dump is completed. For an asynchronous dump, use an ECB or SRB
parameter to be notified when data capture is complete or use a SUSPEND
parameter to suspend other processing until data capture is completed. (For a
synchronous dump on the local system, you do not have to worry about freeing the
area too soon because the system does not return control to the caller until
processing completes.)
If the length is less than 4 bytes, the system ignores the DSPLIST parameter.
One or more 16-byte data space identifiers for data spaces to be included in the
dump. An identifier is an ASID or jobname in the left 8 bytes and the data space
name in the right 8 bytes:
ASID
An 8-byte field containing an explicit hexadecimal address space identifier in
bytes 7 and 8. Bytes 1 through 6 must be hexadecimal zeros.
jobname
A 1 to 8 character job name left-justified in the 8-byte field. Pad it on the right
with blanks, if needed. The job name can be specified with wildcards. See
“Wildcards” on page 278.
See the ASID parameter for the limit on address spaces that can be specified.
,TYPE=XMEM
,TYPE=XMEME
,TYPE=NOLOCAL
,TYPE=FAILRC
Specifies that the caller's cross memory mode determines the address spaces to dump
(XMEM or XMEME) or that the caller cannot allow SDUMPX to obtain a local lock
(NOLOCAL) or that SVC dump should return a reason code with the return code to the
DUMP command processor when the requested dump was not taken (FAILRC).
XMEM requests SVC dump to use the caller's cross memory mode at the time the
SDUMPX macro is executed.
XMEME requests SVC dump to use the caller's cross memory mode at the time of the
error for which the dump is being taken.
The home address space is dumped for both keywords. The relevant primary and
secondary address spaces are also dumped if they are unique. If a cross memory local
lock was held, the address space whose local lock is held is also dumped.
NOLOCAL indicates that the caller is in an environment where SDUMPX cannot hold a
local lock. This option has meaning only when BRANCH=YES is specified and the caller
is enabled and unlocked (for example, the caller has an enabled unlocked task FRR
established or is in SRB or cross memory mode).
FAILRC requests that the caller receive special information from SVC dump whenever
the dump fails. Some information is already placed in SDWASDRC as a result of the
SVC dump failure. When the caller receives control again after a dump failure (return
code 8) and the caller has specified TYPE=FAILRC, the reason code is combined with
the return code and passed to the caller in either register 15 or the ECB, or through the
IHASDST mapping macro if the SRBPARM area was provided for an SRB. The reason
code is in bits 16-23; the return code is in bits 24-31. When the return code is in the
ECB, the POST flag is set on. SDUMPX passes back a return code in register 15 and
places the reason code in the SDWA. The reason code explains why the dump failed.
,PLISTVER=1
,PLISTVER=2
,PLISTVER=3
Specifies the length of the parameter list used:
,SYMREC=symrec addr
Specifies the address of a valid symptom record for DAE to use for dump suppression.
DAE suppresses the SVC dump if the primary symptom string found in the symptom
record matches previously known symptoms, and, suppression has been enabled by the
installation.
The caller must build the symptom record and fill in at least the ‘SR’ identifier and the
primary symptom string, which should uniquely identify the error.
SVC dump issues an abend with a completion code of X'233', reason code X'9C',
then returns to the caller with a return code of 8 if the symptom record identifier is not
‘SR’, if the offset and length of the primary symptom string are not initialized, or if the
first byte of the symptom record and the last byte of the secondary symptom string are
not addressable.
SVC dump does not include the symptom record in the dump. The caller can use the
SUMLIST keyword to include the symptom record in the dump.
See the dump analysis and elimination (DAE) section in OS/390 MVS Programming:
Authorized Assembler Services Guide for more information on symptom strings and how
to build them.
The ADSR macro maps the symptom record. See OS/390 MVS Data Areas, Vol 1
(ABEP-DALT) for a macro mapping of the ADSR.
,ID='identifier'
,IDAD=identifier addr
Specifies an identifier that is included in dump message IEA911E, which is issued at the
completion of the dump. The identifier must be from one to 50 printable characters. If ID
is specified, the identifier must be enclosed in apostrophes, although the apostrophes do
not appear in the actual identifier. If IDAD is specified, the first byte at the indicated
address specifies the length of the identifier in bytes. If the length of the identifier is
greater than 50, SVC dump issues an abend with a completion code of X'233', reason
code X'8C', then returns to the caller with a return code of 8. If the length of the
identifier is zero, SVC dump continues processing as if the ID or IDAD parameter was
not specified.
,INTOKEN=token addr
Specifies the address of a 32-byte area that contains an incident token previously built
by an IEAINTKN macro. If register notation is used, the register contains the address of
the area.
The system associates the token with the SVC dump on this system and with any SVC
dumps requested by the REMOTE parameter on other sysplex systems. If the
parameter is omitted, the system generates an incident token.
,REMOTE=area addr
Specifies the address of an area that identifies other systems in the sysplex to be
dumped by this SDUMPX macro. If register notation is used, the register contains the
address of the area. If the parameter is omitted, only the current system is dumped.
The area is mapped by the IHASDRMT mapping macro and must be in common
storage. Through IHASDRMT, you can identify the systems to be dumped and specify
the content of the dumps on individual systems. The area consists of:
A 4-byte header, which indicates the total length of the area. The length includes
the 4 bytes of the header.
ID, length, contents entries. Each entry consists of:
– ID: A 2-byte field, whose value identifies the type of the contents. The values
are declared by the constants with names beginning with SDRMT_IDCON in
the IHASDRMT mapping.
– Length: A 2-byte field that gives the length of the contents portion. The length
includes the 2 bytes of this length field and the 2 bytes of the ID field.
– Contents: A variable field that gives the contents identified in the ID field. The
contents you can specify are the system names, job names, XCF group and
member names, data space names, address space identifiers, SDATA options,
storage ranges, subpools, and keys. Within the contents, you can specify items
explicitly or, for the following, use wildcards.
- System name
- Job name
- XCF group name
- XCF member name
- Data space name and its qualifying job name
See “Wildcards” on page 278.
4 bytes
Length of the area
ID Length
Contents
ID Length
Contents
If the area exceeds 1024 bytes, the caller must not free the area until data capture for
the dump is completed. For an asynchronous dump, use an ECB or SRB parameter to
be notified when data capture is complete or use a SUSPEND parameter to suspend
other processing until data capture is completed. (For a synchronous dump on the local
system, you do not have to worry about freeing the area too soon because the system
does not return control to the caller until processing completes.)
If the length of the area is less than 4 bytes, the system ignores the REMOTE
parameter. If the length of any of its entries is less than 4 bytes, the dump request
returns with an error return code.
The dumps requested through REMOTE are affected by other parameters on the
SDUMPX macro: LISTD, SDATA, ASIDLST, JOBLIST, DSPLIST, SUBPLST, and
KEYLIST; you can specify that the values of these parameters be copied for the dumps
requested through REMOTE. The dumps requested through REMOTE do not contain
information for the LIST and LISTA parameters.
,PSWREGS=list addr
Specifies a PSW or register area to be passed to SVC dump. This area may contain a
PSW, control registers 3 and 4, all the general purpose registers (GPRs), and all access
registers (ARs). When PSWREGS is specified, SVC dump includes the following
information in the summary dump portion of the dump:
Note: If the control registers are provided, they will be used to determine the primary
and secondary address spaces. If no control registers are provided, then the
storage will be dumped from the caller's primary and secondary address spaces.
The PSWREGS parameter allows programs running in a nonabend environment, where
there is no SDWA, to request SVC dump and dump suppression services similar to
those available in an abend environment, where an SDWA is present.
The parameter list for the PSWREGS parameter must reside in the address space
currently addressable by SVC dump. The caller must provide at least the length and the
mask field. Each bit in the mask refers to a data area. If a bit is set, SVC dump expects
that the data area is supplied. If a mask bit is off and any lower-order mask bit is on, the
corresponding storage area must be included in the parameter list. If a mask bit is off,
but no lower-order mask bits are set, then the storage area need not be supplied.
The following diagram describes the parameter list:
,ECB=(ecb addr)
,ECB=(ecb addr,CAPTURE)
,ECB=(ecb addr,WRITE)
,SRB=(srb addr)
,SRB=(srb addr,CAPTURE)
,SRB=(srb addr,WRITE)
Specifies how the system should synchronize your program with dump processing.
ECB specifies that the system should post the event control block (ECB) indicated by
ecb addr. For ECB=ecb addr and ECB=(ecb addr,CAPTURE), the system posts the
ECB at the completion of the capture phase unless you have also specified the DCB
parameter. If you specify both the DCB and ECB parameters, the system posts the ECB
at the completion of the writing phase, no matter what has been specified on the ECB
parameter. For ECB=(ecb addr,WRITE), the system posts the ECB at the completion of
the dump writing phase. If the capture phase is not successful, the system posts the
ECB at the completion of SVC dump processing.
If an A-type address is specified, ecb addr specifies the address of a fullword containing
the address of an ECB that is posted on completion of a scheduled dump. If a register
operand is used, the register must contain the actual address of the ECB. If this
parameter is omitted, the caller is not notified of the completion of the capture phase.
The fullword and the ECB must be addressable from the home address space. The
fullword address that points to the ECB must be a 24-bit or 31-bit address.
SRB specifies that the system should schedule the service request block (SRB)
indicated by srb addr. For SRB=srb addr and SRB=(srb addr,CAPTURE), the system
schedules the SRB at the completion of the capture phase unless you have also
specified the DCB parameter. If you specify both the DCB and SRB parameters, the
system schedules the SRB at the completion of the writing phase, no matter what has
been specified on the SRB parameter. For SRB=(srb addr,WRITE), the system
schedules the SRB at the completion of the dump writing phase. If the capture phase is
not successful, the system schedules the SRB at the completion of SVC dump
processing.
When the caller builds the SRB, the caller may pass the address of a status area in the
SRBPARM field. This status area, SDSTATUS, is mapped by IHASDST. SVC dump
passes information about the dump to the SRB routine by means of this status area. If
SVC dump schedules the SRB at the completion of the capture phase, the name of the
dump data set is not passed to the caller.
,SDATA=(sdata options)
Specifies the system is to dump the following:
Subpools Storage
0-127, 129-132, 229, 230, 240, 249, 250-252 All storage allocated to these subpools
203-205, 213-215, 223-225, 233-235, 253-255 All storage allocated to the LSQA and ELSQA
236, 237 All storage allocated to the SWA and ESWA
SVC dump does not dump all the obtained private storage in an
address space when the RGN option of SDATA is specified. This
reduces the number of page faults that occur during SVC dump
processing, decreases the time required to take a dump, and reduces
the size of the dump.
SVC dump dumps only those obtained pages that have something
stored into them. Data-in-virtual pages that have been changed since
the last DIV macro (that specified the SAVE service) executed, will
also be dumped.
Eliminated from the dump are the pages of storage that are in a
freshly-obtained state. Data-in-virtual pages that are in central storage,
but have not been changed, are also considered to be in a
freshly-obtained state. They will not be dumped.
SQA The SQA and ESQA subpools (226, 239, 245, 247, and 248).
SUMDUMP or SUM
A summary dump is to be included with the SVC dump output. The
trace table is included in the nonsummary portion of the dump if this
option is specified or used as a default.
The type of summary dump depends on how you specify the BRANCH
and SUSPEND parameters:
If you specify BRANCH=YES and SUSPEND=NO, you get a
disabled summary dump.
If you specify BRANCH=YES and SUSPEND=YES, you get a
suspend summary dump.
If you specify BRANCH=NO, you get an enabled summary dump.
For a description of the dump contents, see OS/390 MVS Diagnosis:
Tools and Service Aids.
SWA The scheduler work area subpools for each address space being
dumped (subpools 236 and 237). This includes all storage allocated
above and below 16 megabytes.
TRT The system trace table, the GTF trace records, and master trace data
if these types of traces are active
XESDATA Cross-system extended services (XES) information.
DEFAULTS or DEFS
The following default SDATA options are included in the SVC dump:
ALLPSA
SQA
SUMDUMP
IO
Any default SDATA options specified by the CHNGDUMP
command when CHNGDUMP is in ADD mode.
Notes:
1. DEFAULTS is not required. All SVC dumps include the default
SDATA options unless NODEFAULTS is specified.
2. DEFAULTS and NODEFAULTS are mutually exclusive.
NODEFAULTS or NODEFS
The SDATA defaults are NOT included in the SVC dump. Specifying
NODEFAULTS reduces the size of an SVC dump by excluding the
following default SDATA options:
ALLPSA
SQA
SUMDUMP
IO
Any default SDATA options specified by the CHNGDUMP
command when CHNGDUMP is in ADD mode.
If a data area relating to an SDATA option is required in the dump, the
programmer can code that SDATA option on the SDUMPX macro
invocation. All keywords and SDATA options are valid when NODEFS
is coded.
If you specify NODEFAULTS, the dump still contains some default
system areas that are included in all dumps.
IO The IO data areas are included in the SVC dump.
,PROBDESC=area addr
Specifies the address of an area that contains information describing the problem. If
register notation is used, the register contains the address of the area.
The area can be passed to any SVC dump, but is primarily intended for dumps
requested by the REMOTE parameter. When a dump is requested through REMOTE,
the system being dumped calls an IEASDUMP.QUERY routine. The routine uses the
area to determine if its system should be dumped and, if so, what storage areas should
be added to the dump.
The area is mapped by the IHASDPD mapping macro and must be in common storage.
The area consists of:
A 4-byte header, which indicates the total length of the area. The length includes
the 4 bytes of the header.
Key, length, data entries. Each entry consists of:
– Key: An 8-byte key, which you can use to identify the application or the
problem or both. You might use the key field, for example, to contain a 3-byte
identifier for the application and a 5-byte area for application information.
4 bytes
Length of the area
Key
Key
If the area exceeds 1024 bytes, the caller must not free the area until data capture for
the dump is completed. For an asynchronous dump, use an ECB or SRB parameter to
be notified when data capture is complete or use a SUSPEND parameter to suspend
other processing until data capture is completed. (For a synchronous dump on the local
system, you do not have to worry about freeing the area too soon because the system
does not return control to the caller until processing completes.) If the area exceeds
32,768 bytes, the system places in the dump only the first 32,768 bytes.
If the length is less than 4 bytes, the system ignores the PROBDESC parameter.
Each starting address must be less than its corresponding ending address.
STORAGE and LIST: When STORAGE or LIST is specified, the list must contain an
even number of addresses, and each address must occupy one fullword. In the list, the
high-order bit of the fullword containing the last ending address of the list must be set to
1; all other high-order bits must be set to 0.
LISTA: When LISTA is specified, the first fullword of the storage list contains the
number of bytes (including the first word) in the list. LISTA specifies a list of ASIDs and
storage ranges as follows:
4 bytes
Length of the list (X4848 bytes)
First ASID Number of ranges to be
dumped - this ASID
Number of ranges to be
Last ASID dumped - this ASID
Range 1 starting address
Range 1 ending address
Note: If LISTA or SUBPLST is specified for a scheduled dump request and if the list
does not exceed 484 bytes in size, SVC dump will move the list to SVC dump
storage. The caller can free or reuse this space on return from SVC dump. No
synchronization with SVC dump completion is required. If the list exceeds 484
bytes, SVC dump will not move the list and synchronization with SVC dump
completion is required.
LISTD: When LISTD is specified, the first fullword of the list contains the number of
bytes (including the first word) in the list. The list can be up to 5124 bytes (for a possible
256 single range entries). The number of entries processed will be fewer than 256, if
either data spaces are requested using the DSPLIST parameter, or multiple ranges are
specified for an STOKEN. For LISTD, specify the STOKENs and address ranges as
follows:
4 bytes
Length of list
STOKEN refers to any address/data space. SVC dump does not dump data space
storage that has not been referenced.
LISTD causes a scheduled dump when the caller performs one of the following actions:
See the ASID parameter for the limit on address spaces that can be specified.
Dumps on Other Systems in a Sysplex: If the SDUMPX macro specifies
SDRMT_IDCON_STORAGE_COPY in the area specified by the REMOTE parameter,
the dumps requested by REMOTE contain areas specified by LISTD on this macro; the
dumps do not contain areas specified by LIST and LISTA. If an STOKEN is all zeros in
the area specified by the REMOTE parameter, the dumps include the indicated address
range within all address spaces included in the dump.
If the LISTD area exceeds 484 bytes, only the data requested in the first 484 bytes is
included in the dumps requested by REMOTE.
The first word contains the ASID in bits 0-15 and the number of subpools
associated with this ASID (n) in bits 16-31. If 0 is specified as the ASID, the caller's
home ASID is used.
The next n halfwords contain the subpool IDs (right justified) corresponding to the
virtual storage to be included in the SVC dump. The manner in which these
subpools are dumped depends on whether they are private or common area
subpools.
– If a private area subpool (related to a TCB) is specified, all virtual storage
associated with this subpool, for all TCBs in the specified address space, is
dumped.
– If a common area subpool is specified, all of the virtual storage allocated in the
subpool is dumped.
SVC dump does not dump all the obtained storage in an address space if the SUBPLST
list keyword for private subpools is coded. This reduces the number of page faults that
occur during SVC dump processing and the time required to take a dump. It also
reduces the size of dumps on tape or DASD.
For storage that is not related to data-in-virtual, only obtained pages that have
something stored into them are dumped. This eliminates the pages of storage that are in
a freshly obtained state.
For storage that is related to data-in-virtual, only pages that are in central storage are
dumped, as well as pages that have been changed since the last data-in-virtual SAVE
operation.
Notes:
,BUFFER=NO
,BUFFER=YES
Specifies that the contents of the SQA buffer is (YES) or is not (NO) to be included in
the dump. (The SQA buffer does not include the SDUMPX parameter list or any data
pointed to by the parameter list.) Callers who specify BUFFER=YES on the SDUMPX
macro will obtain a dump of a 4K buffer reserved in the SQA for the callers of SVC
dump. You can reserve the buffer by setting the high-order bit of the CVTSDBF field in
the communications vector table (CVT). Once you have reserved the buffer, you can fill
it with data before issuing SDUMPX. Programs that are involved with data that might
change before SDUMPX can dump it should use this buffer.
The CVTSDBF field of the CVT points to the buffer. Before using the buffer, use
compare and swap logic to serialize on the high-order bit of CVTSDBF. If the bit was on
(B‘1’), the buffer is in use, and you should continue processing as though a dump could
not be taken. If the bit was off (B‘0’), the bit is set to B‘1’ by the compare and swap. You
can then fill the buffer and issue SDUMPX. If the compare and swap sets the CVTSDBF
bit, SDUMPX resets it for you.
,QUIESCE=YES
,QUIESCE=NO
Specifies that the system is to be set nondispatchable until the contents of the SQA and
the CSA are dumped (YES), or that the system is to be left dispatchable (NO). If the
SDATA parameter does not specify SQA or CSA, the QUIESCE=YES request is
ignored.
Note: Summary dumps (SUMDUMP) for branch entries (BRANCH=YES) always cause
the system to be set nondispatchable until the summary dump is written.
,BRANCH=NO
,BRANCH=YES
Specifies that a branch entry is to be used for interfacing with SVC dump to schedule a
dump (YES), or that an SVC instruction is to be generated for interfacing with SVC
dump (NO).
For BRANCH=YES, MVS produces a scheduled (asynchronous) SVC dump. For
BRANCH=NO, the parameters you code to identify storage determine whether MVS
produces a scheduled or synchronous SVC dump. MVS produces a scheduled dump
when you code BRANCH=NO with one or more of the following:
ASIDLST
ASID=asid addr
TYPE=XMEM or TYPE=XMEME
LISTA
LISTD=list addr, when the STOKEN represents either an address space other than
the primary address space, or a SCOPE=SINGLE data space owned by a program
that is not running in the primary address space
SUBPLST=subpool id list addr, when the list of address spaces with associated
subpool IDs contains at least one address space other than the primary address
space.
You might make different design decisions for your program based on the type of dump
MVS produces. See OS/390 MVS Programming: Authorized Assembler Services Guide
for guidance about designing your program to handle each type of dump.
If BRANCH=YES is specified and the caller has not specified at least one of the
following keywords: ASID, ASIDLST, TYPE=XMEM, TYPE=XMEME, or LISTA, the
dump is scheduled to the home address space.
Routines that issue SDUMPX with BRANCH=YES must provide a 72-byte save area
pointed to by register 13, and must include the CVT mapping macro.
For BRANCH=YES entry by reentrant recovery routines, SDUMPX processing moves
the data supplied by the following parameters to a system area:
HDR
HDRAD
ID
IDAD
ASIDLST
STORAGE
LIST
LISTA
SUBPLST
KEYLIST
This enables the recovery routine to free its storage on return from SDUMPX although
the dump has not completed.
,SUSPEND=NO
,SUSPEND=YES
Specifies that a suspend summary dump is requested (YES) or not requested (NO).
SUSPEND=YES must be used together with the BRANCH=YES and
SDATA=SUMDUMP parameters. This keyword should be used by routines that can
experience page faults but that want to save dump information in a virtual storage
buffer.
,SUMLIST=list addr
,SUMLSTA=list addr
,SUMLSTL=list addr
Specifies one of the following:
SUMDUMP must be specified as an SDATA parameter and each starting address must
be less than its corresponding ending address.
SUMLIST: For SUMLIST, the storage list must contain an even number of addresses,
and each address must occupy one fullword. In the list, the high-order bit of the fullword
containing the last ending address of the list must be set to 1, and all other high-order
bits must be set to 0.
SUMLSTA: For SUMLSTA, the first fullword of the list contains the number of bytes
(including the first word) in the list. SUMLSTA specifies a list of ASIDs and storage
ranges as follows:
4 bytes
Length of the list
First ASID Number of ranges to be
dumped - this ASID
Range 1 starting address
Range 1 ending address
Range 2 starting address
Range 2 ending address
Restriction:
When BRANCH=YES and SUSPEND=NO are also specified, the list must be
addressable using the addressability established when SVC dump was entered. The
lists themselves and all ranges specified must reference paged-in data. Paged-out data
is not dumped by summary dump.
When BRANCH=YES and SUSPEND=YES are also specified, the lists must be
addressable using the addressability established when SVC dump was entered. The
lists and referenced data can either be in paged in or paged out areas. The maximum
amount of summary dump data with this type of dump is 1M.
When BRANCH=NO is also specified, the lists must be addressable in all address
spaces in which the dump will be taken (those address spaces specified by ASID,
ASIDLST, LISTA, or TYPE=XMEM, TYPE=XMEME, or SUBPLST). The lists and
referenced data can be in paged-in or paged-out areas. The maximum amount of
summary dump data possible with this type of dump is dependent only on the size of
the dump data set.
Each ASID specified with SUMLSTA must represent a valid, swapped-in address space
in order for the data to be dumped.
Programming Notes: The total number of distinct ASIDs that can be specified by
TYPE=XMEM, TYPE=XMEME, LISTA, ASID, SUBPLST and ASIDLST is fifteen. If more
than fifteen are requested, only the first fifteen are processed. There is no restriction on
the number of ASIDs specified by the SUMLSTA parameter, nor do SUMLSTA ASIDs
contribute toward the fifteen ASID limit.
SUMLSTL: For SUMLSTL, the first fullword of the list contains the number of bytes
(including the first word) in the list. Specify the ALETs and address ranges as follows:
4 bytes
Length of list
First ALET (4 bytes)
Number of ranges to dump for this ALET
Range 1 starting address
Range 1 ending address
Range n starting address
Range n ending address
ALET refers to entries in either a DU-AL or a PASN-AL, and associated with any
address/data space that the caller has addressability to. SVC dump does not dump data
space storage that has not been referenced.
Figure 58. Return Codes for the SDUMPX Macro when BRANCH=NO
Hexadecimal Meaning and Action
Return Code
00 Meaning: A complete dump was taken.
Action: None
04 Meaning: A partial dump was taken because the dump data set did not have sufficient
space.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 299).
If BRANCH=YES or any ASID other than the current ASID was requested, register 15
contains one of the following hexadecimal return codes when control is returned after the
system has scheduled the dump:
Figure 59. Return Codes for the SDUMPX Macro when BRANCH=YES
Hexadecimal Meaning and Action
Return Code
00 Meaning: A dump was scheduled.
Action: None
08 Meaning: The system was unable to schedule a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 299).
Figure 60. Return Codes for the ECB Parameter and SRB Parameter
Hexadecimal Meaning and Action
Return Code
00 Meaning: All the requested data was captured and the dump writing phase was
successfully initiated.
Action: None
04 Meaning: Some of the requested data could not be captured and one or more partial
dump indicators have been set in SDRSN. The dump writing phase was successfully
initiated.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 299).
Figure 61. Return Codes for the ECB or SRB Parameter with the DCB Parameter
Hexadecimal Meaning and Action
Return Code
00 Meaning: All the requested data was captured and then written to the dump data set.
Action: None
04 Meaning: Some of the requested data could not be captured or could not be written to the
dump data set.
Action: Examine the reason code that explains why a partial dump was taken. The
reason code is contained in message IEA911E. If you specified the SRB parameter, you
can include the IHASDRSN mapping macro to map the reason code information. The
reason codes might also be passed to the SRB routine in the SDSTPDRC field of
SDSTATUS.
08 Meaning: The system was unable to take a dump.
Action: Examine the reason code that explains why no dump was taken (see “Reason
Codes for Return Code 08” on page 299).
Note: The ECB will not be posted unless the return code from SDUMPX is 0.
SDUMPX—List Form
Use the list form of the SDUMPX macro to construct a control program parameter list. You
can specify any number of storage addresses using the STORAGE parameter. Therefore,
the number of starting and ending address pairs in the list form of SDUMPX must be equal
to the maximum number of addresses specified in the execute form of the macro.
Syntax
The list form of the SDUMPX macro is written as follows:
SDUMPX
,STRLIST-structure list addr structure list addr: RX-type address or register (2) - (12).
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: A-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: A-type address, or register (2) - (12).
addr
Note: KEYLIST cannot be specified without SUBPLST.
,MF=L
Parameters
The parameters are explained under the standard form of the SDUMPX macro, with the
following exception:
,MF=L
Specifies the list form of the SDUMPX macro.
SDUMPX—Execute Form
A remote control program parameter list is referred to and can be modified by the execute
form of the SDUMPX macro.
If you code one or more of the SDATA parameters on the execute form of the macro, any
SDATA parameters coded on the list form are lost.
Syntax
The execute form of the SDUMPX macro is written as follows:
SDUMPX
,TYPE=(type code) type code: Any of the following, separated by commas: XMEM,
XMEME, NOLOCAL, FAILRC
Note: XMEM and XMEME are mutually exclusive codes.
,STRLIST-structure list addr structure list addr: RX-type address or register (2) - (12).
,PSWREGS=parm list addr parm list addr: RX-type address, or register (2) - (12).
,SUBPLST=subpool id list subpool id list addr: RX-type address, or register (2) - (12).
addr
,KEYLIST=storage key list storage key list addr: RX-type address, or register (2) - (12).
addr
Note: KEYLIST cannot be specified without SUBPLST.
,MF=(E,ctrl addr) ctrl addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained under the standard form of the SDUMPX macro, with the
following exception:
IBM may not offer the products, services, or features discussed in this document in other
countries. Consult your local IBM representative for information on the products and services
currently available in your area. Any reference to an IBM product, program, or service is not
intended to state or imply that only that IBM product, program, or service may be used. Any
functionally equivalent product, program, or service that does not infringe any IBM intellectual
property right may be used instead. However, it is the user's responsibility to evaluate and
verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in
this document. The furnishing of this document does not give you any license to these
patents. You can send license inquiries, in writing, to:
For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual
Property Department in your country or send inquiries, in writing, to:
The following paragraph does not apply to the United Kingdom or any other country
where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS
MACHINES CORPORATION PROVIDES THIS PUBLICATION “AS IS” WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of
express or implied warranties in certain transactions, therefore, this statement may not apply
to you.
This information could include technical inaccuracies or typographical errors. Changes are
periodically made to the information herein; these changes will be incorporated in new
editions of the publication. IBM may make improvements and/or changes in the product(s)
and/or the program(s) described in this publication at any time without notice.
Any references in this information to non-IBM Web sites are provided for convenience only
and do not in any manner serve as an endorsement of those Web sites. The materials at
those Web sites are not part of the materials for this IBM product and use of those Web
sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes
appropriate without incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose of enabling:
(i) the exchange of information between independently created programs and other programs
(including this one) and (ii) the mutual use of the information which has been exchanged,
should contact:
Such information may be available, subject to appropriate terms and conditions, including in
some cases, payment of a fee.
The licensed program described in this information and all licensed material available for it
are provided by IBM under terms of the IBM Customer Agreement, IBM International
Program License Agreement, or any equivalent agreement between us.
If you are viewing this information softcopy, the photographs and color illustrations may not
appear.
Trademarks
The following terms are trademarks of the IBM Corporation in the United States or other
countries or both:
IBM
IBMLink
MVS/ESA
MVS/SP
MVS/XA
OS/390
RACF
SP
SP1
SP2
Other company, product and service names may be the trademarks or service marks of
others.
A L
addressing mode and the services 1 linkage index
ALET qualification freeing 49
of parameters 3 reserving 53
AR (access register) mode LLACOPY macro 25
description 2 LOAD macro 31
ASC (address space control) mode load module
defining 2 bringing into virtual storage 31
ASCB (address space control block) LOADWAIT macro 39
locating 45 LOCASCB macro 45
asynchronous execution lock
scheduling system services 246 providing
via an NI instruction 105
via an OI instruction 117
C LXFRE macro 49
callable service LXRES macro 53
coding 16
coding the callable services 16
coding the macros 13 M
command input buffer macro
manipulating 201 coding 13
continuation line 15 forms 12
CVT (communications vector table) level
CVTSDBF field 264, 294 selecting 7
sample 14
selecting level 7
D user parameter, passing 3
downward incompatible macro X-macros
list 7 using 11
dynamic output MCSOPER macro 57
text unit MCSOPMSG macro 73
pointer list 124 MGCR macro 81
MGCRE macro 85
MIHQUERY macro 91
E MODESET macro 97
event
signalling completion 183
N
NIL macro 105
F NML (nucleus module list) 109
fast path page service 179
NMLDEF macro 109
FRACHECK macro 203
Notices 307
nucleus map lookup service 113
I nucleus module list
See also NMLDEF macro
initialize asynchronous exits 239
internal START command 81 description 109
issue NUCLKUP macro 113
remote immediate signal 235
O
OIL macro 117
U
Q user parameter
QEDIT macro 201 passing 3
R V
RACDEF macro 203 virtual storage
RACF macros 203 bringing in a load module 31
RACHECK macro 203 contents
RACINIT macro 203 fix 163
RACLIST macro 203 free 165
RACROUTE macro 203 dumping 253, 277
RACSTAT macro 203 freeing contents 169
RACXTRT macro 203
RESERVE macro 205
RESMGR macro 217 W
RESUME macro for RBs 227 wait state
RESUME macro for SRBs 231 putting the system into 39
RISGNL macro 235
X
S X-macros
SCHEDIRB macro 239 using 11
schedule asynchronous exits 239
If you especially like or dislike anything about this book, please use one of the methods
listed below to send your comments to IBM. Whichever method you choose, make sure you
send your name, address, and telephone number if you would like a reply.
Feel free to comment on specific errors or omissions, accuracy, organization, subject matter,
or completeness of this book. However, the comments you send should pertain to only the
information in this manual and the way in which the information is presented. To request
additional publications, or to ask questions or make comments about the functions of IBM
products or systems, you should talk to your IBM representative or to your IBM authorized
remarketer.
When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute
your comments in any way it believes appropriate without incurring any obligation to you.
If you are mailing a reader's comment form (RCF) from a country other than the United
States, you can give the RCF to the local IBM branch office or IBM representative for
postage-paid mailing.
If you prefer to send comments by mail, use the RCF at the back of this book.
If you prefer to send comments by FAX, use this number:
– FAX: (International Access Code)+1+845+432-9405
If you prefer to send comments electronically, use one of these network IDs:
– Internet e-mail: [email protected]
– World Wide Web: http://www.ibm.com/s390/os390/webqs.html
Make sure to include the following in your note:
Title and publication number of this book
Page number or topic to which your comment applies
Optionally, if you include your telephone number, we will be able to respond to your
comments by phone.
Reader's Comments — We'd Like to Hear from You
OS/390
MVS Programming: Authorized
Assembler Services Reference, Volume 3
(LLACOPY-SDUMPX)
Publication No. GC28-1766-08
You may use this form to communicate your comments about this publication, its organization, or subject matter, with the
understanding that IBM may use or distribute whatever information you supply in any way it believes appropriate without
incurring any obligation to you. Your comments will be sent to the author's department for whatever review and action, if any,
are deemed appropriate.
Note: Copies of IBM publications are not stocked at the location to which this form is addressed. Please direct any requests
for copies of publications, or for assistance in using your IBM system, to your IBM representative or to the IBM branch office
serving your locality.
Today's date:
What is your occupation?
Newsletter number of latest Technical Newsletter (if any) concerning this publication:
How did you use this publication?
[ ] As an introduction [ ] As a text (student)
[ ] As a reference manual [ ] As a text (instructor)
[ ] For another purpose (explain)
Is there anything you especially like or dislike about the organization, presentation, or writing in this manual? Helpful
comments include general usefulness of the book; possible additions, deletions, and clarifications; specific errors and
omissions.
Page Number: Comment:
Name Address
Company or Organization
Phone No.
Cut or Fold
Reader's Comments — We'd Like to Hear from You
IBM
Along Line
GC28-1766-08
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES
IBM Corporation
Department 55JA, Mail Station P384
2455 South Road
Poughkeepsie, NY 12601-5400
Cut or Fold
GC28-1766-08 Along Line
IBM
GC28-1766-28