Iea1a421 PDF
Iea1a421 PDF
GC28-1767-09
OS/390 IBM
MVS Programming: Authorized
Assembler Services Reference, Volume 4
(SETFRR-WTOR)
GC28-1767-09
Note
Before using this information and the product it supports, be sure to read the general information under Appendix A, “Notices” on
page 319.
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
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
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.
The book assumes that the reader understands system concepts and writes programs in
assembler language.
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-1767-08 which also supports
| OS/390 Version 2 Release 10.
| The following changes appear only in the online version of this publication. A vertical line (|)
| in the left margin indicates changes to the text and illustrations.
| Changed Information
| The SETRP macro is updated.
| The SVCUPDTE macro is updated.
Summary of Changes
for GC28-1767-08
OS/390 Version 2 Release 10
Changed Information
The STORAGE macro is updated.
The VSMLIST macro is updated.
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-1767-07
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-1767-06
as Updated December 1998
online only for SK2T-6700-11
The following changes appear only in the online version of this publication. A vertical bar
( | ) in the left margin indicates changes to the text and illustrations.
Summary of Changes
for GC28-1767-05
OS/390 Version 2 Release 6
Summary of Changes
for GC28-1767-04
OS/390 Version 2 Release 5
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-1767-03
OS/390 Version 2 Release 4
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-1767-02
OS/390 Version 1 Release 3
New Information
A new SYSEVENT parameter, ENCASSOC, is added to associate an enclave and an
address space for storage management purposes.
Changed Information
Clarifications are added to the ENQHOLD and ENQRLSE parameter descriptions.
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-1767-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-1767-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 SETFRR macro gives authorized programs the ability to define their recovery in the
FRR (functional recovery routine) LIFO stack, which is used during processing of the system
recovery manager. Any program function can use SETFRR to define its own unique recovery
environment.
The SETFRR macro can be used to add, delete, or replace FRRs in the LIFO stack, or to
purge all FRRs in the stack. The macro also optionally returns to the user the address of a
parameter area that is eventually passed to the FRR when an error occurs. The parameter
area can be used to keep information that might be useful to the FRR. The recovery and
retry routines execute in the same addressing mode as the issuer of the macro.
OS/390 MVS Programming: Authorized Assembler Services Guide describes the interface to
an FRR and contains guidelines for writing an FRR.
Environment
The requirements for the caller are:
Note: If the caller does not specify the EUT=YES parameter, the caller must be one of the
following:
Holding a lock
Disabled for I/O and external interrupts
In SRB mode.
Programming Requirements
If your program is in AR mode, issue the SYSSTATE ASCENV=AR macro before issuing
SETFRR. SYSSTATE ASCENV=AR tells the system to generate code appropriate for AR
mode.
For primary mode callers, the parameter list you specify on the PARMAD parameter must be
in the primary address space. For AR mode callers, this parameter list can be located in any
address space.
Restrictions
None.
Performance Implications
None.
Syntax
The SETFRR macro is written as follows:
SETFRR
,PARMAD=parm area addr parm area addr: A-type address, or register (2) - (12).
Note: This parameter may only be specified with A or R above.
,EUT=YES
Parameters
The parameters are explained as follows:
A,FRRAD=FRRAD addr
R,FRRAD=FRRAD addr
D
P Specifies the operation to be performed on the FRR LIFO stack:
FRRAD specifies the address of a fullword containing the FRR address that is to be
added or replaced. The parameter specifies the FRR address in a register or specifies
the address of a storage location containing the FRR address.
Note: When an FRR wants to deactivate itself, IBM recommends that the FRR issue
SETRP with REMREC=YES rather than issuing SETFRR D. See the chapter on
providing recovery in OS/390 MVS Programming: Authorized Assembler
Services Guide for an explanation.
,WRKREGS=(reg1,reg2)
Specifies two unique general purpose registers to be used as work registers by the
system.
,CANCEL=YES
,CANCEL=NO
Specifies whether you want to allow the recovery routine to be interrupted by cancel or
detach processing.
To allow a recovery routine to be interrupted, specify CANCEL=YES.
To prevent a recovery routine from being interrupted, specify CANCEL=NO. If a cancel
or detach is attempted against a recovery routine for which you have specified
CANCEL=NO, MVS defers cancel and detach processing until the recovery routine
returns control to the system.
Usage Notes:
1. If a recovery routine that runs under the CANCEL=NO option can be called by an
unauthorized program running under the same task, IBM recommends that you
specify ASYNCH=NO for each ESTAE(X) macro that the recovery routine issues.
This also includes any ESTAE(X) macros issued by programs that the recovery
routine calls.
2. If a recovery routine running under the CANCEL=NO option calls an unauthorized
program, cancel and detach processing is also deferred for the called program.
,EUT=YES
Used only with A and R, specifies that the new FRR can be used in any environment.
EUT=YES is used by routines that are not certain of their environment; for example, a
routine that can be called by an SRB or by a task that is executing enabled and might
not hold any locks. While the FRR remains in effect, no SVCs can be issued, no new
asynchronous exits are dispatched, and no vector instructions can be executed.
,MODE=options
Specifies the environment in which the FRR is to get control and also, optionally,
identifies the FRRs that free critical resources. The normal or expected addressing
environment is identified by FULLXM, PRIMARY, or HOME. Specify LOCAL to enable
the FRR to be entered in a restricted addressing environment for freeing critical
resources. Parentheses are not needed if only one option is chosen.
FULLXM
Specifies that the FRR must be entered in the same cross memory environment
that existed when the SETFRR was issued.
PRIMARY
Specifies that the FRR must be entered in primary addressing mode with both the
PASID and SASID the same as the PASID that existed when the SETFRR was
issued, the home address space must be unchanged, and the PSW key mask must
be the same as when the SETFRR was issued.
HOME
Specifies that the FRR must be entered in primary addressing mode with
PASID=SASID=HASID, and the PSW key mask either the same as that at the time
of the error for SRB mode, or the task storage protect key for TCB mode.
If neither FULLXM, PRIMARY, nor HOME is coded, HOME is the default.
LOCAL
Specifies that the FRR frees a critical local resource. If the FRR cannot be entered
in its normal addressing environment then it must be entered in LOCAL restricted
addressing environment to free resources.
For the FRR to be entered in LOCAL restricted addressing environment, a local lock
must be held.
If it cannot be entered either as an FRR or as a resource manager, the FRR is
skipped.
,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
SETFRR might abnormally end with abend code X'07D'. See OS/390 MVS System Codes
for an explanation and programmer response for this code.
Example 1
Add an FRR to the FRR stack and return the address of the parameter list to the issuer of
the SETFRR. The FRR address contained in register (R5) is placed on the FRR stack in the
next available FRR entry. On return, register (R2) contains the address of the parameter list
associated with this FRR entry. Registers R3 and R4 are work registers used by the system.
SETFRR A,FRRAD=(R5),PARMAD=(R2),WRKREGS=(R3,R4)
Example 2
Delete the last FRR added to the FRR stack. Registers 1 and 6 are work registers used by
the system.
SETFRR D,WRKREGS=(1,6)
Description
Use the SETLOCK macro to control access to serially reusable resources. Each kind of
serially reusable resource is assigned a separate lock.
For information on using this macro on an MVS/SP version other than the current version,
see “Selecting the Macro Level” on page 7.
Locks are discussed in the “Serialization” chapter in OS/390 MVS Programming: Authorized
Assembler Services Guide.
Note
The OBTAIN, RELEASE, and TEST options of the SETLOCK macro have the same
environmental specifications, programming requirements, restrictions, register
information, and performance implications described below, except where noted in the
explanations of each option.
Environment
The requirements for the caller are:
Programming Requirements
Before you invoke the SETLOCK macro in access register mode, issue SYSSTATE
ASCENV=AR.
The caller must include the IHAPSA mapping macro.
Before issuing an OBTAIN request for a CML lock, establish the target ASCB as either
the primary or secondary address space.
Restrictions
None.
For an OBTAIN or RELEASE request when the REGS parameter is specified, see the
description of the REGS parameter for information on GPR usage.
For a TEST request, the contents of the GPRs after control returns to the caller are as
follows:
Register Contents
0-1 Unchanged.
2-12 If one of these registers is specified on the LOCKHLD parameter, that
register is used as a work register by the system; otherwise, registers 2-12
are unchanged.
13-14 Unchanged.
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.
SETLOCK OBTAIN
Syntax
The OBTAIN option of SETLOCK macro is written as follows:
SETLOCK
OBTAIN
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=CML,ASCB=(11)
,TYPE=CML,ASCB=addr addr: A-type address
,REGS=SAVE
,REGS=USE
,REGS=STDSAVE
Parameters
The parameters are explained as follows:
OBTAIN
Specifies that the lock designated by the TYPE parameter is to be obtained on the
caller's behalf.
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=CML,ASCB=(11)
,TYPE=CML,ASCB=addr
Specifies the type of lock. The types available are:
,MODE=COND
,MODE=UNCOND
Specifies whether the lock is to be conditionally or unconditionally obtained.
COND Specifies that the lock is to be conditionally obtained. That is, if the
lock is not owned on another processor, it is acquired on the caller's
behalf. If the lock is already held, control is returned indicating that the
caller holds the lock or that another unit of work on another processor
owns the lock.
UNCOND Specifies that the lock is to be unconditionally obtained. That is, if the
lock is not owned on another processor, it is acquired on the caller's
behalf. If the lock is already held by the caller, control is returned to
the calling program indicating that it already owns the lock. If the lock
is held on another processor, the system suspends the SETLOCK
caller until the lock is available.
The system does not permit an unconditional OBTAIN request for a
CML lock if the lock is held by a unit of work that is set
nondispatchable.
,REGS=SAVE
,REGS=USE
,REGS=STDSAVE
Specifies the use of general purpose registers by the SETLOCK macro.
SAVE Specifies that the contents of registers 11 through 14 are saved in the
area pointed to by register 13 and are restored upon completion of the
SETLOCK request. This save area must be at least 20 bytes, and
must not be the same area as the standard linkage save area used by
the program.
Upon completion of the SETLOCK macro with REGS=SAVE, the
register contents are as follows:
Register Contents
0-14 Unchanged
15 Return code
USE Specifies that the contents of registers 11 through 13 are saved in
work registers 0, 1, and 15.
Upon completion of the SETLOCK macro with REGS=USE, the
register contents are as follows:
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
STDSAVE Specifies that the contents of registers 2 through 12 are saved in a
standard 72-byte save area pointed to by register 13.
Upon completion of the SETLOCK macro with REGS=STDSAVE, the
register contents are as follows:
Register Contents
0-1 Unchanged
2-13 Unchanged
14 Used as a work register by the system
15 Return code
Note: See “Output Register Information” on page 32 for information on register usage
when the REGS parameter is not specified.
,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
SETLOCK might abnormally terminate with abend code X'073'. See OS/390 MVS System
Codes for an explanation and programmer response for this code.
When the SETLOCK OBTAIN request is for the CPU lock, the system returns only return
code 0. You do not need to check the return code because once control is returned to you
after the SETLOCK OBTAIN,TYPE=CPU request, you will have the CPU lock.
Example 1
Obtain the CPU lock, saving registers 2 through 12 in the standard save area whose
address is in register 13.
SETLOCK OBTAIN,TYPE=CPU,REGS=STDSAVE
Example 2
Obtain the CMS lock. Because the caller must hold the LOCAL or CML lock to obtain the
CMS lock, the caller must first obtain the LOCAL lock unconditionally, saving registers 2
through 12 in the save area pointed to by register 13. The caller then issues the request to
obtain the CMS lock.
SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=STDSAVE
SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND,REGS=STDSAVE
Example 3
Obtain the LOCAL lock unconditionally, saving registers 11 through 14 in the save area
pointed to by register 13. The save area pointed to by register 13 is not the same area as
the standard linkage save area.
SETLOCK RELEASE
Syntax
The RELEASE option of the SETLOCK macro is written as follows:
SETLOCK
RELEASE
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=CML,ASCB=(11)
,TYPE=CML,ASCB=addr addr: A-type address
,REGS=SAVE
,REGS=USE
,REGS=STDSAVE
Parameters
The parameters are explained as follows:
RELEASE
Specifies that the lock designated by the TYPE parameter is to be released.
Note: If you specify RELEASE,TYPE=CML,ASCB=(11) or ASCB=addr, the ASCB
parameter specifies the home address space, and the lock that the caller holds
is home's local lock, then SETLOCK processing treats the CML release request
as a RELEASE, TYPE=LOCAL.
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=CML,ASCB=(11)
,TYPE=CML,ASCB=addr
Specifies the type of lock. The types available are:
Users can obtain the CPU lock to become disabled for I/O and
external interrupts.
CMS The cross memory services lock. It is a global suspend lock used to
serialize functions between address spaces.
LOCAL The lock that serializes resources in the home address space pointed
to by PSAAOLD. It is a local level suspend lock.
CML The cross memory local lock. It is a local level suspend type lock used
to serialize resources in an address space other than the home
address space.
The requestor of a CML lock must have authority to access the
specified address space before requesting the lock. To establish
authority, the requestor sets the primary or secondary address space
to the one specified by the ASCB=(11) or ASCB=addr parameter.
Register 11 or addr must contain the address of the ASCB whose
local lock is requested. This address space must be nonswappable
before the SETLOCK request.
Note: If the requestor specifies OBTAIN,TYPE=CML and the ASCB
parameter points to the home address space, the request is
treated as though the LOCAL lock were being obtained.
,REGS=SAVE
,REGS=USE
,REGS=STDSAVE
Specifies the use of general purpose registers by the SETLOCK macro.
SAVE Specifies that the contents of registers 11 through 14 are saved in the
area pointed to by register 13 and are restored upon completion of the
SETLOCK request. This save area must be at least 20 bytes, and
must not be the same area as the standard linkage save area used by
the program.
Upon completion of the SETLOCK macro with REGS=SAVE, the
register contents are as follows:
Register Contents
0-14 Unchanged
15 Return code
USE Specifies that the contents of registers 11 through 13 are saved in
work registers 0, 1, and 15.
Upon completion of the SETLOCK macro with REGS=USE, the
register contents are as follows:
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
STDSAVE Specifies that the contents of registers 2 through 12 are saved in a
standard 72-byte save area pointed to by register 13.
Upon completion of the SETLOCK macro with REGS=STDSAVE, the
register contents are as follows:
Register Contents
0-1 Unchanged
2-13 Unchanged
14 Used as a work register by the system
15 Return code
Note: See “Output Register Information” on page 32 for information on register usage
when the REGS parameter is not specified.
,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
Release the local lock and check the return code from the SETLOCK request. If the release
was unsuccessful, branch to the code at the RLSEFAIL label.
SETLOCK RELEASE,TYPE=LOCAL
LTR 13,13
BNZ RLSEFAIL
Example 2
Release the CML lock, saving the contents of registers 2 through 12 in a standard save
area. Check the return code from the SETLOCK request, and branch to the code at the
RLSEFAIL label if the release was unsuccessful.
SETLOCK RELEASE,TYPE=CML,REGS=STDSAVE
LTR 15,15
BNZ RLSEFAIL
SETLOCK TEST
Syntax
The TEST option of the SETLOCK macro is written as follows:
SETLOCK
TEST
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=ALOCAL
,TYPE=CML Note: LOCKHLD or ASCB must be specified with TYPE=CML.
Parameters
The parameters are explained as follows:
TEST
Specifies that the lock designated by the TYPE parameter is to be checked to determine
if it is currently held on the requesting processor.
,TYPE=CPU
,TYPE=CMS
,TYPE=LOCAL
,TYPE=ALOCAL
,TYPE=CML
Specifies the type of lock. The types available are:
,LOCKHLD=(reg)
Specifies that the designated register is to be used as a return register by the macro.
This parameter is valid only for TYPE=CML, TYPE=CPU, and TYPE=ALOCAL.
If TYPE=CML is specified and a CML lock is held, the system returns the ASCB address
of the CML-locked address space in the specified register.
If TYPE=CPU is specified, the system returns the current CPU lock use count for this
processor in the specified register.
If TYPE=ALOCAL is specified and the LOCAL lock is held, the system returns a zero in
the specified register.
If TYPE=ALOCAL is specified and a CML lock is held, the system returns the ASCB
address of the CML-locked address space in the specified register. If a local lock is
held, the system returns a zero in the specified register.
,ASCB=(reg)
Specifies a register that contains the ASCB address. The system checks the ASCB to
determine whether the requestor's local lock is a CML lock. This parameter is valid only
with TYPE=CML.
Note: Unlike the OBTAIN and RELEASE options of the SETLOCK macro, ASCB=addr
is not valid.
,BRANCH=(HELD,addr)
,BRANCH=(NOTHELD,addr)
If (HELD,addr) is specified, the specified address is branched to if the specified lock is
held on the requesting processor.
If (NOTHELD,addr) is specified, the specified address is branched to if the specified lock
is not currently held on the requesting processor.
,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.
Note: TYPE=CMS is used to determine if at least one cross memory services lock is held,
but cannot be used to determine which one, or to determine if all are held.
Example 1
If a local lock is not held, branch to DSRLLINT; otherwise, execute the next sequential
instruction.
SETLOCK TEST,TYPE=LOCAL,BRANCH=(NOTHELD,DSRLLINT)
Example 2
Put the current CPU lock use count for this processor into register 3.
SETLOCK TEST,TYPE=CPU,LOCKHLD=(3)
Example 3
Determine whether the local lock of the address space specified in register 11 is held as a
CML lock.
SETLOCK TEST,TYPE=CML,ASCB=(11)
Description
Use the SETRP macro within a recovery routine to indicate the various requests that the
recovery routine can make. SETRP is valid for functional recovery routines (FRRs) and
ESTAE-type recovery routines. For more information about recovery routines, see the
section on providing recovery in OS/390 MVS Programming: Authorized Assembler Services
Guide.
The SETRP macro is also described in OS/390 MVS Programming: Assembler Services
Reference with the exception of the RECORD, FRELOCK, SERIAL, RETRY, RETRY15,
FRLKRTY, and SSRESET parameters.
Environment
The requirements for the caller are:
Minimum authorization: Problem state and any PSW key. For the RECORD, FRELOCK,
SERIAL, RETRY, RETRY15, AND FRLKRTY parameters,
supervisor state or PSW key 0-7.
Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 24- or 31-bit
ASC mode: Primary, secondary, or access register (AR)
Note: Callers in secondary ASC mode cannot specify the
DUMPOPX keyword.
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
If the program is in AR mode, issue the SYSSTATE ASCENV=AR macro before
SETRP. SYSSTATE ASCENV=AR tells the system to generate code appropriate for AR
mode.
Include the IHASDWA mapping macro to map the system diagnostic work area (SDWA).
The SDWA is addressable when the recovery routine is entered; when the SETRP
macro is issued, the same address space must be addressable. (See SDWA in OS/390
MVS Data Areas, Vol 4 (RD-SRRA) for the mapping provided by IHASDWA.)
If you plan to specify RETREGS=YES,RUB=reg info addr, you must obtain storage for
and initialize the register update block (RUB). See the RETREGS parameter description
for more information about this area.
Restrictions
You can use SETRP only if the system provided an SDWA.
Recovery routines established through the STAE macro, or the STAI parameter on the
ATTACH or ATTACHX macro, cannot update registers on retry, so the RETREGS
parameter does not apply.
For FRRs, RETREGS=YES (or RETREGS=NO) has no effect. For FRRs, the system
always restores GPRs 0-14 from the SDWASRSV field, and ARs 0-14 from the
SDWAARSV field. If you specify RETRY15=YES, the system also restores GPR 15 and
AR 15 from the SDWASRSV and SDWAARSV fields, respectively.
Before issuing the SETRP macro, the caller must ensure that the following access registers
(ARs) contain the specified information:
Register Contents
1 If you do not specify the WKAREA parameter, ALET of the SDWA whose
address is in GPR 1; otherwise, the caller does not have to place any
information into this register.
13 If you specify the REGS parameter, ALET of the standard 72-byte save
area whose address is in GPR 13; otherwise, the caller does not have to
place any information into this register.
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
Note: Control does not return to the caller if the caller specifies the REGS parameter.
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 SETRP macro is written as follows:
SETRP
,DUMPOPT=parm list addr parm list addr: RX-type address, or register (2) - (12).
,DUMPOPX=parm list addr Note: Specify these parameters only if you specify DUMP=YES.
,RECPARM=record list addr record list addr: RX=type address, or register (2) - (12).
Note: This parameter may be specified only if RECORD=IGNORE
or RECORD=YES is specified above.
,SERIAL=YES
,SERIAL=NO
,SSRESET=YES
,SSRESET=NO
Parameters
The parameters are explained below:
WKAREA=(reg)
Specifies the address of the SDWA passed to the recovery routine. If this parameter is
omitted, the address of the SDWA must be in register 1.
,REGS=(reg 1)
,REGS=(reg 2)
Specifies the register or range of registers to be restored from the 72-byte standard
save area pointed to by the address in register 13. If you specify REGS, a branch on
register 14 instruction will also be generated to return control to the system. If you do
not specify REGS, you must code your own branch on whichever register contains the
return address.
Note: If you specify reg1,reg2, specify the registers in the same order as in an STM
instruction; for example, to restore all registers except register 13, specify
REGS=(14,12).
,DUMP=IGNORE
,DUMP=YES
,DUMP=NO
Specifies that the dump option fields will not be changed (IGNORE), will be zeroed
(NO), or will be merged with dump options specified in previous dump requests, if any
(YES). If IGNORE is specified, a previous recovery routine had requested a dump or a
dump had been requested through the ABEND macro, and the previous request will
remain intact. If NO is specified, no dump will be taken.
,REASON=code
Specifies the reason code that the user wishes to pass to subsequent recovery routines.
The value range for code is any 32-bit hexadecimal number or 31-bit decimal number.
See OS/390 MVS Programming: Assembler Services Reference for information about
how a user can change this code.
,RC=0
,RC=4
,RC=16
Specifies the return code the recovery routine sends to the system to indicate what
further action is required:
,RETADDR=retry addr
Specifies the address of the retry routine to which control is to be given.
,RETREGS=NO
,RETREGS=YES
,RETREGS=YES ,RUB=reg info addr
| ,RETREGS=64
Specifies the contents of the registers to be restored on entry to the retry routine.
RETREGS=NO indicates that you do not want the system to restore any register
contents from the SDWA.
If you specify RETREGS=YES, in a recovery routine defined through the ESTAE,
ESTAEX, or FESTAE macro, the ESTAI parameter on the ATTACH or ATTACHX
macro, or an associated recovery routine (ARR), the system does the following:
The first two bytes represent the registers to be updated, register 0 corresponding
to bit 0, register 1 corresponding to bit 1, and so on. The user indicates which of the
registers are to be stored in the SDWA by setting the corresponding bits in these
two bytes.
The remaining 64 bytes contain the update information for the registers, in the order
0-15. If all 16 registers are being updated, this field consists of 64 bytes. If only one
register is being updated, this field consists of only 4 bytes for that one register.
,FRESDWA=NO
,FRESDWA=YES
Specifies that the entire SDWA be freed (YES) or not be freed (NO) before entry into
the retry routine.
,COMPCOD=code1
,COMPCOD=(code)
,COMPCOD=(code,USER)
,COMPCOD=(code,SYSTEM)
Specifies the user or system completion code that the user wants to pass to subsequent
recovery routines.
,FRELOCK=(locks)
Specifies the locks to be freed and the corresponding lockwords that are placed in the
SDWA:
Note: If FRLKRTY=NO is specified or taken as a default, the specified locks are freed
only on percolation, not on retry. Specifying FRLKRTY=YES allows the locks
listed in FRELOCK to be freed on retry.
,RECORD=IGNORE
,RECORD=YES
,RECORD=NO
Specifies whether the SDWA is to be recorded in SYS1.LOGREC (RECORD=YES/NO),
or whether the system should honor previous instructions about recording the SDWA in
SYS1.LOGREC (RECORD=IGNORE).
If you specify RECORD=YES, the system records the entire SDWA (including the fixed
length base, the variable length recording area, and the recordable extensions) in
SYS1.LOGREC when the ESTAE recovery routine returns control, even if the mainline
program issued the ESTAE or ESTAEX macro with RECORD=NO.
If you specify RECORD=NO, the system does not record the SDWA in SYS1.LOGREC,
even if the mainline program issued ESTAE or ESTAEX with RECORD=YES.
If you specify RECORD=IGNORE, the system honors the request as specified by the
RECORD parameter on the ESTAE or ESTAEX macro.
,SERIAL=YES
,SERIAL=NO
Specifies whether the percolation from an SRB mode FRR to a related task recovery
routine (ESTAE or FRR) is to be serialized (YES) or not serialized (NO) with respect to
unlocked task recovery. See 'SRB to Task Percolation' in OS/390 MVS Programming:
Authorized Assembler Services Guide.
If the task is already in recovery for another error when SERIAL=YES is specified, the
percolation request is deferred pending a requested task retry from any recovery routine
covering mainline code. If such a retry is not requested, the task is terminated and all
deferred percolations are purged. Only the last FRR to receive control when an error
occurs can specify SERIAL=YES.
,RETRY=FRR
,RETRY=ERROR
Specifies the cross memory environment in which the retry routine gets control.
RETRY=FRR, the default, specifies that the retry routine gets control in the cross
memory environment that exists at the time of entry to the FRR.
RETRY=ERROR specifies that the retry routine gets control in the cross memory
environment that existed at the time of the error. Do not specify RETRY=ERROR if the
cross memory status at the time of the error is not available, that is, if SDWARPIV is set
to one. (Be careful not to create a loop by retrying to an erroneous cross memory state
with RETRY=ERROR.)
,RETRY15=YES
,RETRY15=NO
In an FRR environment only, specifies that GPR 15 is restored from SDWASRSV and
AR 15 is restored from SDWAARSV if RETRY15=YES. Otherwise, it contains the entry
point address of the retry routine.
This parameter may be specified only when RC=4 is specified. If RETRY15=YES is not
coded on any SETRP invocation prior to returning to the system, the effect is that of
specifying RETRY15=NO.
,REMREC=YES
,REMREC=NO
In an FRR or ESTAE environment, specifies that the FRR/ESTAE entry for the currently
running FRR/ESTAE routine be removed (REMREC=YES) or not removed
(REMREC=NO). This parameter may be specified only when RC=4 is specified,
indicating a retry request.
The entry is removed before control returns to the retry point. If REMREC=YES is not
coded on any SETRP invocation before the system receives control, the effect is that of
specifying REMREC=NO. The REMREC parameter may be used to remove a recovery
routine that has been defined with a token, although the token cannot be specified when
you code the SETRP macro.
,FRLKRTY=YES
,FRLKRTY=NO
In an FRR environment only, specifies that the locks specified on FRELOCK be freed
(FRLKRTY=YES) or not be freed (FRLKRTY=NO) on retry.
This parameter may be specified only when RC=4 is specified. If FRLKRTY=YES is not
coded on any SETRP invocation prior to returning to the system, the effect is that of
specifying FRLKRTY=NO.
SSRESET=YES
SSRESET=NO
SSRESET=YES specifies that, if the current recovery routine abnormally ends, the next
recovery routine is to get control in the subspace environment that existed when the
current recovery routine was entered. Specify SSRESET=YES when the current
recovery routine has temporarily modified the subspace environment, and when it is
appropriate for the next recovery routine to receive control in the subspace environment
in which the current recovery routine received control.
SSRESET=NO negates an earlier specification of SSRESET=YES. Specify
SSRESET=NO when SSRESET=YES protection is no longer needed. If the current
recovery routine abnormally ends after specifying SSRESET=NO, the next recovery
routine will get control in the subspace in which the current routine was running when
the error occurred.
If you do not specify SSRESET and the current recovery routine abnormally ends, the
next recovery routine will get control in the subspace in which the current recovery
routine was running when the error occurred.
See the chapter on subspaces in OS/390 MVS Programming: Extended Addressability
Guide for more information about subspaces and recovery.
Notes:
1. The FRESDWA parameter cannot be specified or defaulted for a functional recovery
routine (FRR). The SDWA is always released before an FRR's retry routine gets control.
2. The SERIAL parameter is relevant only for FRRs defined for SRBs that have a related
task.
3. The SERIAL and RETRY parameters are mutually exclusive.
The following table indicates which parameters are available to functional recovery routines
(FRRs) and which parameters are available to ESTAE-type recovery routines.
ABEND Codes
None.
Example 1
The first FRR established for an SRB routine requests percolation, freeing of the CML lock
(the ASCB address is in register 2), and serialization of percolation to the related task.
SETRP RC=2,FRELOCK=(CML(2)),SERIAL=YES
Example 2
An FRR requests retry with the retry routine getting control in the same cross memory mode
as the time of FRR entry. The retry address is in register 3.
SETRP RC=4,RETADDR=(3),RETRY=FRR
Description
The SJFREQ macro services can be used to manipulate text unit data that represents
processing options for system output (sysout) data sets. The SJFREQ services described in
this section include the following:
The SJFREQ RETRIEVE service retrieves keyword subparameter information in text unit
format from output descriptors. These output descriptors can be specified either on an
OUTPUT JCL statement or through dynamic output.
The SJFREQ SWBTU_MERGE service merges lists of scheduler work block text units
(SWBTUs) and allows applications to indicate keys to be removed from a list of
SWBTUs.
The SJFREQ VERIFY service verifies OUTDES statements, operands, and
subparameters and builds text units to represent them. Your application can use these
text units to dynamically define processing options for a sysout data set.
The SJFREQ TERMINATE service cleans up SJF's recovery and working storage
environment.
OS/390 MVS Programming: Authorized Assembler Services Guide describes the OUTDES
statement and its operands, as well as the individual SJF services.
Environment
The requirements for the caller are:
Programming Requirements
The application must include the CVT and IEFJESCT mapping macros. If the application
codes the PARM parameter on the SJFREQ macro, the caller must also declare a 4-byte
pointer, SJFPTR.
For each SJFREQ invocation, the application must initialize certain fields in an input
parameter list. Fields are discussed within each service description. The following lists the
parameter list name for each service.
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
None.
Syntax
The standard form of the SJFREQ macro is written as follows:
SJFREQ
REQUEST=RETRIEVE
REQUEST=SWBTU_MERGE
REQUEST=VERIFY
REQUEST=TERMINATE
Parameters
The parameters are explained as follows:
REQUEST=RETRIEVE
REQUEST=SWBTU_MERGE
REQUEST=VERIFY
REQUEST=TERMINATE
Specifies the SJF service to be called. SJF services that you can request through the
SJFREQ macro are:
,PARM=addr
Specifies the address of the parameter list for the service requested. You must initialize
certain parameter list fields for each service. The following list indicates where the
parameter lists are described.
You may only use IEFSJREP, IEFSJSMP, or IEFSJVEP (use the same one you
used on a prior request) for the TERMINATE service.
If you omit PARM, register 1 must contain the address of a word that contains the
address of the input parameter list.
Programming Requirements
An application must complete the following steps to issue a RETRIEVE request:
1. Obtain storage for the RETRIEVE parameter list (IEFSJREP) and initialize the fields.
Place the address of IEFSJREP in the PARM parameter.
2. Provide a keyword list (SJRELIST). The keyword list contains the keywords for which
the application wants information retrieved. SJFREQ RETRIEVE Keyword List describes
the list.
3. Issue SJFREQ RETRIEVE.
The following table shows the SJRELIST paired fields and their offsets and lengths. The
fields that the application initializes are indicated.
In addition to JCL keywords, SJFREQ can also return a text unit for the keyword providing
special TCP/IP support. This text unit has the following characteristics in the Output
Descriptor.
ABEND Codes
None.
Figure 11 (Page 1 of 2). Return and Reason Codes for the SJFREQ RETRIEVE Service
Return Code Reason Code Meaning and Action
0 000 Meaning: RETRIEVE processing completed
successfully.
Action: None.
4 002 Meaning: Program error. The token specified in
SJRETOKN is not valid.
Action: Specify a valid token in SJRETOKN.
4 004 Meaning: Program error. The RETRIEVE request was
not processed. The value specified in SJREJDVT is
not valid.
Action: Set SJREJDVT to hexadecimal zeros or to
the value returned on the previous call.
4 005 Meaning: System error. The information referenced
by parameter field SJREJDVT does not exist.
Action: SJF did not initialize properly. Contact the
appropriate IBM support personnel.
4 0C8 Meaning: Program error. SJRETOKN refers to a JCL
statement that is not valid.
Action: Supply a value in SJRETOKN that refers to a
valid JCL statement.
4 0C9 Meaning: Program error. A keyword in the keyword
list is not defined to the JCL statement referred to by
SJRETOKN.
Action: SJREKERR contains the address of the
keyword in error. Correct or delete the keyword in
error.
4 258 Meaning: Program error. The area specified by
SJRESIZE is less than the minimum allowed.
Action: Define SJRESIZE to a size that can contain
at least one text unit.
4 25B Meaning: Program error. No storage area address
was specified.
Action: Specify a storage area address in
SJREAREA.
4 25C Meaning: Program error. The value in SJRENKWD
indicates that no keywords were specified.
Action: Specify a value of one or greater for
SJRENKWD.
4 25D Meaning: Program error. No keyword list address was
specified.
Action: Specify a keyword list address in
SJREKWDL.
4 25F Meaning: Program error. Zero is given as the value
for a keyword in the keyword list.
Action: SJREKERR contains the address of the
keyword. Change the zero to a valid value.
0C 000 Meaning: System error. The system could not obtain
storage for this request.
Action: Inform your system programmer of this
problem.
Figure 11 (Page 2 of 2). Return and Reason Codes for the SJFREQ RETRIEVE Service
Return Code Reason Code Meaning and Action
10 000 Meaning: System error. The ESTAE-type recovery
routine failed.
Action: Inform your system programmer of this
problem.
14 000 Meaning: System error. SJF encountered a condition
that caused an abnormal termination.
Action: Check the input parameters, particularly any
pointer fields, to determine if the input values are
correct.
18 000 Meaning: System error. The service routines for
SJFREQ are not available.
Action: SJF did not initialize properly. Contact the
appropriate IBM support personnel.
Programming Requirements
You must provide input information in the SWBTU_MERGE parameter list (IEFSJSMP).
In addition to the IEFSJSMP parameter list, you can provide an erase list. An erase list is a
contiguous set of text units that you request to be erased from a base SWBTU. An erase list
is required when you set SJSMETUP and SJSMETUS. If only a merge SWBTU and erase
list are provided on input, SWBTU_MERGE validates the erase list, but does not apply it to
the resulting SWBTU.
SJSMSWBN The number of SWBTU pointers in the base SWBTU pointer list. This field
can be zero if the address of the base SWBTU pointer list (SJSMSWBA) is
also zero and you specify a merge SWBTU pointer list.
SJSMSWBA The address of the base SWBTU pointer list. You can specify zero for this
value if the number of SWBTU pointers in the base SWBTU pointer list
(SJSMSWBN) is zero and you specify a merge SWBTU pointer list.
SJSMMTUP The address of the merge SWBTU pointer list. You can specify zero for
this value if the number of SWBTU pointers in the merge SWBTU pointer
list (SJSMMTUN) is zero and you specify a base SWBTU pointer list.
SJSMMTUN The number of SWBTU pointers in the merge SWBTU pointer list. You can
specify zero for this value if the address of the merge SWBTU pointer list
(SJSMMTUP) is zero and you specify a base SWBTU pointer list.
SJSMETUS The number of elements contained on input in the erase text unit list area.
You can specify zero for this value if the address of the erase text unit list
area (SJSMETUP) is zero.
SJSMETUP The address of the erase text unit list area. You can specify zero for this
value if the address of the erase text unit list area (SJSMETUS) is zero.
SJSMJDVT Enter zero for this field on input. This field must contain zero on the first
SWBTU_MERGE call. On subsequent calls, the field contains the value
returned from the most recent SWBTU_MERGE call. Use the value
returned for subsequent calls.
SJSMWARN Set on to indicate that processing should continue after allowable errors.
Clear this field so that processing does not continue after allowable errors.
Allowable errors are described the section “Merging SWBTUs” in OS/390
MVS Programming: Authorized Assembler Services Guide.
SJSMBYMV Set on to indicate whether the merge SWBTU text units should be
validated.
SJSMBYEV Set on to indicate whether the erase text units' keys should be validated.
SJSMSBTL When SJSMSWBA and SJSMSWBN contain values, this field must contain
the mapping of the base SWBTU pointer list. When SJSMMTUP and
SJSMMTUN contain values, this field must contain the mapping of the
merge SWBTU pointer list.
SJSMERRS This field contains a value when certain errors occur. See Figure 13 on
page 64 for descriptions of the errors.
SJSMERRP The point in the base or merge SWBTU pointer list entry at which an error
was encountered.
Figure 12 (Page 1 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
0 000 Meaning: SWBTU_MERGE processing completed
successfully.
Action: None.
0 0CA Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, the
value in SJSMMKER or SJSMEKER was ignored.
SJSMMKER or SJSMEKER contains a key in error.
Action: Determine if it is acceptable for the
information in SJSMMKER or SJSMEKER to be
ignored.
0 0CB Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, the text
unit count for the key that appears in SJSMMKER is
not valid. All data for this text unit is ignored.
Action: Determine if it is acceptable for the text unit
data to be ignored.
0 1F4 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a text
unit length in a length-value pair for the key that
appears in SJSMMKER is not valid. All data for this
text unit is ignored.
Action: Check the length specified for the key that
appears in SJSMMKER. Determine if it is acceptable
for the text unit to be ignored.
0 1F5 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a text
unit value in a length-value pair for the key that
appears in SJSMMKER is not valid. All data for this
text unit is ignored.
Action: Check the value specified for the key that
appears in SJSMMKER. Determine if it is acceptable
for the text unit to be ignored.
0 1F6 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a
numeric value of a length-value pair in a text unit
exceeds the maximum allowable value. SJSMMKER
contains the key from the text unit that is in error. All
data for this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
Figure 12 (Page 2 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
0 1F7 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a
numeric value of a length-value pair in a text unit is
less than the minimum allowable value. SJSMMKER
contains the key from the text unit that is in error. All
data for this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 1FE Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a
character value level length in a text unit exceeds the
maximum allowed for character data. SJSMMKER
contains the key from the text unit that is in error. All
data for this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 1FF Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, the
number of levels for a character value in a text unit
exceeds the maximum allowed. SJSMMKER contains
the key from the text unit that is in error. All data for
this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 200 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, the first
character of the level in the character value in a text
unit is not valid for character data. SJSMMKER
contains the key from the text unit that is in error. All
data for this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 201 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a
character is not valid for character data. The incorrect
value is not the first character of the level in the
character value in a text unit. SJSMMKER contains
the key from the text unit that is in error. All data for
this text unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 226 Meaning: Program error. SWBTU_MERGE
processing completed successfully; however, a text
unit contained a text character that is outside the
range X'40' - X'FE'. SJSMMKER contains the key
from the text unit that is in error. All data for this text
unit is ignored.
Action: Check the value specified in the text unit and
determine if it is acceptable for the text unit to be
ignored.
0 227 Meaning: SWBTU_MERGE processing completed
successfully; however, the sequence of characters in
a text unit is not valid. SJSMMKER contains the key
from the text unit that is in error. All data for this text
unit is ignored.
Action: Check the value specified in the text unit
parameter and determine if it is acceptable for the text
unit to be ignored.
Figure 12 (Page 3 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
0 228 Meaning: SWBTU_MERGE processing completed
successfully; however, there are bits on in the text
unit parameter that the system does not recognize.
SJSMMKER contains the key from the text unit that is
in error. All data for this text unit is ignored.
Action: Check the value specified in the text unit
parameter and determine if it is acceptable for the text
unit to be ignored.
0 76C Meaning: SWBTU_MERGE processing completed
successfully. The resulting SWBTU (pointed to by
SJSMAREA) has a prefix and no text units.
Action: None required. However, you might take
some action based on your application.
4 0C8 Meaning: Program error. The specified verb is not
defined to the system.
Action: Specify a valid verb.
4 0CA Meaning: Program error. The system does not
recognize the text unit key. SJSMMKER or
SJSMEKER contains the key from the text unit that is
in error. All data for this text unit is ignored.
Action: Check the text unit key. Correct the key and
issue the SJFREQ macro again.
4 0CB Meaning: Program error. The count in a text unit is
not valid. SJSMMKER contains the key for the text
unit that is not valid.
Action: Check the text unit count. Correct the count
and issue the SJFREQ macro again.
4 1F4 Meaning: Program error. A length in a length-value
pair in a text unit is not valid. SJSMMKER contains
the key for the text unit that is not valid.
Action: Check the length. Correct the length and
issue the SJFREQ macro again.
4 1F5 Meaning: Program error. A text unit value in a
length-value pair is not valid. SJSMMKER contains
the key for the text unit that is not valid.
Action: Check the value. Correct the value and issue
the SJFREQ macro again.
4 1F6 Meaning: Program error. A numeric value of a
length-value pair in a text unit exceeds the maximum
allowable value. SJSMMKER contains the key from
the text unit that is in error.
Action: Check the value. Correct the value and issue
the SJFREQ macro again.
4 1F7 Meaning: Program error. A numeric value of a
length-value pair in a text unit is less than the
minimum allowable value. SJSMMKER contains the
key from the text unit that is in error.
Action: Check the value. Correct the value and issue
the SJFREQ macro again.
4 1FE Meaning: Program error. A character value level
length in a text unit exceeds the maximum allowed for
character data. SJSMMKER contains the key from the
text unit that is in error.
Action: Check the value specified in the text unit.
Correct the value and issue the SJFREQ macro
again.
4 1FF Meaning: Program error. The number of levels for a
character value in a text unit exceeds the maximum
allowed. SJSMMKER contains the key from the text
unit that is in error.
Action: Check the value specified in the text unit.
Correct the value and issue the SJFREQ macro
again.
Figure 12 (Page 4 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
4 200 Meaning: Program error. A character in a text unit is
not valid for character data. The character is the first
character in the level in the text unit. SJSMMKER
contains the key from the text unit that is in error.
Action: Check the value specified in the text unit.
Correct the value and issue the SJFREQ macro
again.
4 201 Meaning: Program error. A character is not valid for
character data. The character is not the first character
of the level in the character value in a text unit.
SJSMMKER contains the key from the text unit that is
in error.
Action: Check the value specified in the text unit.
Correct the value and issue the SJFREQ macro
again.
4 206 Meaning: A text unit key contained hex zeros.
Action: Check the text unit key value specified in the
text unit. Correct the value and issue the SJFREQ
macro again.
4 226 Meaning: Program error. A text unit contained a text
character that is outside the range X'40' - X'FE'.
SJSMMKER contains the key from the text unit that is
in error.
Action: Check the value specified in the text unit.
Correct the value and issue the SJFREQ macro
again.
4 227 Meaning: The sequence of characters in a text unit is
not valid. SJSMMKER contains the key from the text
unit that is in error.
Action: Check the value specified in the text unit
parameter. Correct the value and issue the SJFREQ
macro again.
4 228 Meaning: There are bits on in the parameter that the
system does not recognize. SJSMMKER contains the
key from the text unit that is in error.
Action: Check the value specified in the text unit
parameter. Correct the value and issue the SJFREQ
macro again.
4 76D Meaning: Program error. The output area (identified
by SJSMAREA and SJSMSIZE) is not large enough
for the resulting SWBTU.
Action: Increase the size of the output area and issue
the SJFREQ macro again.
4 76E Meaning: Program error. One of the following
occurred:
The base SWBTU pointer list address
(SJSMSWBA) is zero and the number of SWBTU
pointers (SJSMSWBN) in the base pointer list is
not zero
The SWBTU pointer list address is not zero and
the number of SWBTU pointers in the base
pointer list is zero.
Action: Supply the correct values for SJSMSWBA
and SJSMSWBN and issue the SJFREQ macro
again.
Figure 12 (Page 5 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
4 76F Meaning: Program error. One of the following
occurred:
The merge SWBTU pointer list address
(SJSMMTUP) is zero and the number of SWBTU
pointers (SJSMMTUN) in the merge pointer list is
not zero
The merge SWBTU pointer list address is not
zero and the number of SWBTU pointers in the
merge pointer list is zero.
Action: Supply the correct values for SJSMMTUP and
SJSMMTUN and issue the SJFREQ macro again.
4 770 Meaning: Program error. One of the following
occurred:
The erase text unit address (SJSMETUP) is zero
and the size of the erase text unit list area
(SJSMETUS) is not zero
The erase text unit address (SJSMETUP) is not
zero and the size of the erase text unit list area
(SJSMETUS) is zero.
Action: Supply the correct values for SJSMETUP and
SJSMETUS and issue the SJFREQ macro again.
4 771 Meaning: Program error. Either the output area
address (SJSMAREA) is zero or the output area size
(SJSMSIZE) is not greater than zero.
Action: Check the values in SJSMAREA and
SJSMSIZE and determine which is incorrect. Specify
valid values and issue the SJFREQ macro again.
4 772 Meaning: Program error. One of the following
happened:
Neither a base SWBTU nor a modify SWBTU
were specified (SJSMSWBA and SJSMMTUP are
both zero).
A base SWBTU was provided, but no modify
SWBTU and no erase list were provided
(SJSMMTUP and SJSMETUP are zero).
Action: Do one of the following:
Specify a base or modify SWBTU.
If a base SWBTU was provided, specify either a
modify SWBTU or an erase list.
4 773 Meaning: Program error. The verb name in the merge
SWBTU list does not match the verb name in the
base SWBTU list.
Action: Supply input for the same verb in both the
base SWBTU list and the merge SWBTU list.
4 774 Meaning: Program error. One of the following
occurred:
The version number (SJSMVERS) supplied in the
parameter list does not match the version defined
in macro IEFSJSMP
The length (SJSMLEN) supplied in the parameter
list does not match the actual length.
Action: Ensure that the constant SJSMCVER is used
in field SJSMVERS of the input parameter list and
that the constant SJSMLGTH is used in field
SJSMLEN of the input parameter list.
4 7A1 Meaning: Program error. The base SWBTU list
contains an error.
Action: Check output fields SJSMERRP and
SJSMERRS. SJSMERRP contains the address of a
SWBTU that is in error. SJSMERRS may contain a
reason code that indicates an error in the base or
merge SWBTU list. See Figure 13 on page 64 for
the reason code descriptions.
Figure 12 (Page 6 of 6). Return and Reason Codes for the SJSMREAS Macro
Return Code Reason Code Meaning and Action
0C 000 Meaning: System error. The system could not obtain
storage for this request.
Action: Inform your system programmer of this
problem.
10 000 Meaning: System error. The ESTAE-type recovery
routine failed.
Action: Inform your system programmer of this
problem.
14 000 Meaning: System error. SJF encountered a condition
that caused an abnormal termination.
Action: Check the input parameters, particularly any
pointer fields, to determine if the input values are
correct.
18 000 Meaning: System error. The service routines for
SJFREQ are not available.
Action: SJF did not initialize properly. Contact the
appropriate IBM support personnel.
Output field SJSMERRS contains a reason code when certain errors occur. Figure 13 lists
the reason codes and their meanings.
Figure 13. Return and Reason Codes for the SJFREQ Macro SWBTU_MERGE Service
Return Code Reason Code Meaning and Action
4 018 Meaning: Program error. The application did not
supply either the base SWBTU list or the merge
SWBTU list.
Action: Determine which list is missing. Supply the
missing list and issue the SJFREQ macro again.
4 019 Meaning: Program error. The prefix for either the
base SWBTU list or merge SWBTU list is not valid.
Action: Determine which prefix is not valid. Supply
the correct prefix and issue the SJFREQ macro again.
4 028 Meaning: Program error. The verb and label values in
either the base SWBTU list or the merge SWBTU list
do not match.
Action: Determine which pair does not match. Correct
the information and issue the SJFREQ macro again.
VERIFY performs three functions. Use Figure 14 to determine the required parameters for
the SJFREQ VERIFY function you want to request. The table gives details about the
required values.
SJVEID The identifier ‘SJVE’ of the VERIFY parameter list. Assign the symbolic
equate SJVECID to this field.
SJVEVERS The current version number of the SJFREQ VERIFY parameter list. Assign
the symbolic equate SJVECVER to this field.
SJVEFLAG The environment control flag.
SJVENOCU Indicates whether the SJF environment is preserved from
call to call or obtained for each call. Parameter
SJVESTOR references the environment. When set to 0,
the environment is obtained for each call. When set to 1,
the environment is preserved.
SJVEUNAU Indicates whether the caller is unauthorized. If an
application makes repetitive service calls using the same
SJF environment, the authorization must be same for
each call.
SJVELEN The length of the VERIFY parameter list (IEFSJVEP). Assign the symbolic
equate SJVELGTH to this field.
SJVESTOR The local working storage pointer or zero. This field must contain zero on
the first VERIFY call. On subsequent calls, the field contains the value
returned from the most recent VERIFY call.
SJVEJDVT Enter zero for this field on input. If a value is returned in the field, use the
returned value for subsequent uses of the service.
SJVECMND The name of the statement that contains the output descriptor information.
Specify the statement name OUTDES in an 8-character field, left-justified,
and padded with blanks.
SJVEOPEP The pointer to the operand or keyword operand to be validated. This field
should contain an address of the first byte of the operand or keyword
operand. Set the length of the operand in SJVEOPEL. Zero is a valid
value when specifying just the statement name as specified in
SJVECMND.
SJVEOPEL The length of the operand or keyword operand to be validated. This field
should contain the actual length of the operand or keyword operand
pointed to by SJVEOPEP.
SJVEPARM The subparameter number representing the subparameter to be validated.
Set this value to one whenever validating an operand. When validating a
keyword operand, set this to the correct subparameter number.
SJVESUBL The sublist element number representing the sublist element to be
validated. This field should be set to zero if the subparameter is not a
sublist.
SJVEPRMP The pointer to the subparameter or sublist element to be validated. Set the
length of the subparameter or sublist element in SJVEPRML.
SJVEPRML The length of the subparameter or sublist element pointed to by
SJVEPRMP. This field should contain the actual length of the
subparameter or sublist element pointed to by SJVEPRMP.
SJVETUBL The length of the text unit output area. The field should contain the length
of the output area pointed to by SJVETUBP. The minimum you should
specify for the output area is 256 bytes plus sufficient storage to
accommodate the text units that will be built as a result of your VERIFY
request. A work area of 1K is large enough for any set of text units to be
built.
SJVETUBP The pointer to the text unit output area. The output area will contain the
text unit pointer list and text units upon return from the VERIFY service
call. If the output area is not large enough to hold all the text units and the
text unit pointer list, you can point to and use an additional output area.
When using additional output areas, the original output area must be
accessible to SJF; it cannot be freed or changed. Set the length of the
output area in SJVETUBL.
SJVEFLG1 The VERIFY option flag.
SJVELSTC Indicates last call for the text units being built. Set this
indicator to one for the last VERIFY call. Setting this
indicator on makes the text units available for use.
SJVERSBS Indicates that the same text unit output area is to be
used for multiple calls. SJVETUBS contains the returned
length of the area the service used to build the text units
and text unit pointer list. When this indicator is on,
SJVETUBP must be the same for each VERIFY call.
SJVEQUOT Indicates that a subparameter was specified in quotes.
To allow quotes on all subparameters, the caller can set
this bit to zero. Note that some subparameters do not
allow quotes. For any value specified in quotes, the caller
should have:
Removed the delimiting quotes
Converted two consecutive single quotes to one
single quote.
SJVEPRFX The prefix to be concatenated to a subparameter that is a data set name.
This field is not used if SJVEQUOT is on or if the subparameter is not
defined as allowing unqualified data set names. If no prefix is specified,
this field must be set to zero.
SJVEPRML. VERIFY returns a value in this field for return code 4 with
some reason codes. Refer to “Return and Reason Codes with Related
Message Text” on page 70 for the actual message text VERIFY returns.
Operand Descriptions
Operand descriptions appear in parameter list field SJVEOPD as indicated in Figure 15. The
table that follows lists the operands, keyword operands and their descriptions.
Figure 16 (Page 1 of 2). SJF Operand and Keyword Operand Descriptions. These descriptions
appear in parameter field SJVEOPD.
Operand or Description
Keyword
Operand
ADDRESS ADDRESS FOR SEPARATOR PAGE
BUILDING BUILDING ID
BURST BURSTER TRIMMER STACKER
NOBURST BURSTER TRIMMER STACKER
CHARS CHARACTER ARRANGEMENT TABLE
CKPTLINE CHECKPOINT LINES
CKPTPAGE CHECKPOINT PAGES
CKPTSEC CHECKPOINT SECONDS
Figure 16 (Page 2 of 2). SJF Operand and Keyword Operand Descriptions. These descriptions
appear in parameter field SJVEOPD.
Operand or Description
Keyword
Operand
CLASS OUTPUT CLASS
COMPACT COMPACTION TABLE NAME
CONTROL CARRIAGE CONTROL
COPIES NUMBER OF COPIES
DATACK DATA CHECK
DEFAULT DEFAULT OUTPUT DESCRIPTOR
NODEFAULT DEFAULT OUTPUT DESCRIPTOR
DEPT DEPARTMENT ID
DEST OUTPUT DESTINATION
DPAGELBL DATA PAGE LABEL
NODPAGELBL DATA PAGE LABEL
FCB FORMS CONTROL IMAGE
FLASH FORMS OVERLAY
FORMDEF FORM DEFINITION MEMBER NAME
FORMS PRINT FORMS
GROUPID OUTPUT GROUP IDENTIFIER
INDEX RIGHT PRINT POSITION INDEX
LINDEX LEFT PRINT POSITION INDEX
LINECT LINE COUNT
MODIFY COPY MODIFICATION MODULE
NAME NAME OF SYSOUT OWNER
NOTIFY DESTINATION FOR PRINT COMPLETE MESSAGES
OUTBIN PRINTER OUTPUT BIN ID
OUTDISP SYSOUT DISPOSITION
PAGEDEF PAGE DEFINITION MEMBER NAME
PIMSG PRINTER INFORMATION MESSAGES
PRMODE PROCESS MODE
PRTY OUTPUT PRIORITY
ROOM ROOM IDENTIFICATION
SYSAREA SYSTEM PRINTABLE AREA
NOSYSAREA SYSTEM PRINTABLE AREA
THRESHLD MAXIMUM LINES OF OUTPUT
TITLE NAME FOR SEPARATOR PAGE
TRC TABLE REFERENCE CHARACTER
NOTRC TABLE REFERENCE CHARACTER
UCS UNIVERSAL CHARACTER SET
USERLIB USER SPECIFIED AFP RESOURCE LIBRARIES
WRITER EXTERNAL WRITER NAME
ABEND Codes
SJFREQ VERIFY might abnormally terminate with abend code X'054'. See OS/390 MVS
System Codes for an explanation and programmer response.
For return code 4, reason codes 1F4 - 204, 226, and 4B3, the subparameter or sublist
element referenced in SJVEPRMP and SJVEPRML is not correct. For each of these
conditions, a description of the correct specification of the field is returned in SJVEMSG. The
related message text appears with the appropriate reason codes that follow. SJVEOPD
contains a description of the operand or keyword operand. Figure 16 on page 68 lists the
operands and keyword operands and their descriptions.
Figure 17 (Page 1 of 5). Return and Reason Codes for the SJFREQ Macro VERIFY Service
Return Code Reason Code Meaning and Action
0 000 Meaning: VERIFY processing completed successfully.
Action: None.
04 004 Meaning: Program error. The VERIFY request was
not processed. The value specified in SJVEJDVT is
not valid.
Action: Set SJVEJDVT to hexadecimal zeros or to
the value returned on the previous call.
04 005 Meaning: System error. The information referenced
by parameter field SJVEJDVT does not exist.
Action: SJF did not initialize properly. Contact the
appropriate IBM support personnel.
04 0CB Meaning: Program error. SJF does not recognize the
subparameter specified in SJVEPARM.
Action: Check the number of subparameters allowed
and the value specified in SJVEPARM.
04 0CF Meaning: Program error. The command specified in
SJVECMND is not recognized by SJF.
Action: Check the spelling and specification
(left-justified, padded with blanks) of the value
specified in SJVECMND.
04 0D0 Meaning: Program error. The operand or keyword
operand indicated by fields SJVEOPEP and
SJVEOPEL is not recognized by SJF.
Action: Check the specified length and the spelling of
the operand or keyword operand. Make sure
SJVEOPEP is a pointer value.
04 1F4 Meaning: Program error. The length of a specified
subparameter or sublist element as specified in
SJVEPRML is not valid.
Action: Check the subparameter or sublist element
length specified in SJVEPRML and the allowable
subparameter or sublist element length.
Message text:
VALUE MUST BE 1 CHARACTER
VALUE MUST BE n CHARACTERS
VALUE MUST BE minimum length TO maximum
length CHARACTERS
Figure 17 (Page 2 of 5). Return and Reason Codes for the SJFREQ Macro VERIFY Service
Return Code Reason Code Meaning and Action
04 1F5 Meaning: Program error. A subparameter that was
specified is not a valid choice.
Action: Specify one of the allowable subparameters
for the keyword operand.
Message text:
VALUE MUST BE choice1. . .OR choice n
04 1F6 Meaning: Program error. A numeric subparameter or
sublist element exceeds the maximum allowable
value.
Action: Check the values specified in SJVEPRMP
and SJVEPRML and the allowable value for this
subparameter or sublist element.
Message text:
VALUE MUST BE IN THE RANGE OF minimum
value TO maximum value
04 1F7 Meaning: Program error. A numeric subparameter or
sublist element is less than the minimum allowable
value.
Action: Check the values specified in SJVEPRMP
and SJVEPRML and the allowable value for this
subparameter or sublist element.
Message text:
VALUE MUST BE IN THE RANGE OF minimum
value TO maximum value
04 1FA Meaning: Program error. No subparameter or sublist
element was specified for the keyword operand.
Action: Specify a value in SJVEPRML.
Message text:
VALUE MUST BE 1 LEVEL
VALUE MUST BE 1 TO maximum number of levels
LEVELS
VALUE MUST BE 1 TO maximum number of levels
LEVELS WITH 1 TO maximum level length
CHARACTERS IN EACH LEVEL
VALUE MUST BE 1 CHARACTER
VALUE MUST BE n CHARACTERS
VALUE MUST BE minimum length TO maximum
length CHARACTERS
Figure 17 (Page 3 of 5). Return and Reason Codes for the SJFREQ Macro VERIFY Service
Return Code Reason Code Meaning and Action
04 1FE Meaning: Program error. The subparameter or sublist
element level length exceeds the maximum allowed
for character data.
Action: Check the value in SJVEPRML.
Message text:
VALUE MUST BE 1 LEVEL
VALUE MUST BE 1 TO maximum number of levels
LEVELS
VALUE MUST BE 1 TO maximum number of levels
LEVELS WITH 1 TO maximum level length
CHARACTERS IN EACH LEVEL
If an error occurs involving a subparameter that is a
data set name and the application specified a prefix,
and SJVEQUOT is off (0), the following message
might be added to the above message text.
VALUE NOT ENCLOSED IN QUOTES IS
CONCATENATED TO PREFIX value in SJVEPRFX.
04 1FF Meaning: Program error. The number of levels for a
subparameter or sublist element exceeds the
maximum allowed.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE 1 LEVEL
VALUE MUST BE 1 TO maximum number of levels
LEVELS
VALUE MUST BE 1 TO maximum number of levels
LEVELS WITH 1 TO maximum level length
CHARACTERS IN EACH LEVEL
If an error occurs involving a subparameter that is a
data set name and the application specified a prefix,
and SJVEQUOT is off (0), the following message
might be added to the above message text.
VALUE NOT ENCLOSED IN QUOTES IS
CONCATENATED TO PREFIX value in SJVEPRFX.
04 200 Meaning: Program error. The first character of the
level in the subparameter or sublist element is not
valid for character data.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL, OR list of special characters FIRST
CHARACTER
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL, OR list of special characters
CHARACTER
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL, OR list of special characters
CHARACTERS
VALUE CONTAINS INVALID FIRST CHARACTER
If an error occurs involving a subparameter that is a
data set name and the application specified a prefix,
and SJVEQUOT is off (0), the following message
might be added to the above message text.
VALUE NOT ENCLOSED IN QUOTES IS
CONCATENATED TO PREFIX value in SJVEPRFX.
Figure 17 (Page 4 of 5). Return and Reason Codes for the SJFREQ Macro VERIFY Service
Return Code Reason Code Meaning and Action
04 201 Meaning: Program error. A character other than the
first character of the level in the subparameter or
sublist element is not valid for character data.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL OR, list of special characters
CHARACTERS OTHER THAN THE FIRST
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL, OR list of special characters
CHARACTER
VALUE MUST BE ALPHABETIC, NUMERIC,
NATIONAL, OR list of special characters
CHARACTERS
If an error occurs involving a subparameter that is a
data set name and the application specified a prefix,
and SJVEQUOT is off (0), the following message
might be added to the above message text.
VALUE NOT ENCLOSED IN QUOTES IS
CONCATENATED TO PREFIX value in SJVEPRFX.
04 202 Meaning: Program error. The level specification is not
valid.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE 1 LEVEL
VALUE MUST BE 1 TO maximum number of levels
LEVELS
VALUE MUST BE 1 TO maximum number of levels
LEVELS WITH 1 TO maximum level length
CHARACTERS IN EACH LEVEL
If an error occurs involving a subparameter that is a
data set name and the application specified a prefix,
and SJVEQUOT is off (0), the following message
might be added to the above message text.
VALUE NOT ENCLOSED IN QUOTES IS
CONCATENATED TO PREFIX value in SJVEPRFX.
04 203 Meaning: Program error. Nonhexadecimal characters
were specified for a subparameter or sublist element.
Action: Check the value pointed to by SJVEPRMP.
04 204 Meaning: Program error. Nonnumeric characters were
specified for a subparameter or sublist element.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE NUMERIC CHARACTER,
CHARACTERS
04 226 Meaning: Program error. A text character that was
specified for a subparameter or sublist element is not
valid.
Action: Check the value pointed to by SJVEPRMP.
Message text:
VALUE MUST BE PRINTABLE CHARACTER,
CHARACTERS
04 229 Meaning: A keyword operand specified was not a
valid choice.
Action: Specify one of the allowable keyword
operands.
Message text:
VALUE IS NOT AN ALLOWABLE KEYWORD
OPERAND
Figure 17 (Page 5 of 5). Return and Reason Codes for the SJFREQ Macro VERIFY Service
Return Code Reason Code Meaning and Action
04 4B0 Meaning: Program error. No statement was specified.
The value specified for SJVECMND is zero.
Action: Specify a statement in SJVECMND.
04 4B1 Meaning: Program error. No address was specified in
SJVETUBP for the text unit output area.
Action: Specify a value in SJVETUBP.
04 4B2 Meaning: Program error. There is not enough storage
in the text unit output area to construct the text unit
for the current value.
Action: Increase the size of the output area, adjust
SJVETUBP and SJVETUBL, and call VERIFY again
with the same input.
04 4B3 Meaning: Program error. A subparameter or sublist
element cannot be specified in quotes. SJVEQUOT is
set on, but quotes are not allowed for the specified
subparameter or sublist element.
Action: Either set SJVEQUOT off or specify a value
for which quotes are allowed.
Message text:
VALUE CANNOT BE SPECIFIED IN QUOTES
04 4B4 Meaning: Program error. The text unit output area is
different than the text unit output area passed on the
first call. SJVETUBP has a different value than on the
first call, and SJVERSBS is set on. SJF cannot obtain
the amount of contiguous storage necessary for the
text unit pointer list and text units when more than
one buffer is provided.
Action: Check the value in SJVETUBP.
08 000 Meaning: Program error. The input parameter list,
IEFSJVEP, is not valid.
Action: Check to see if SJVEID, SJVEVERS, or
SJVELEN is incorrect and not recognized by SJF.
0C 000 Meaning: System error. The system could not obtain
storage for this request.
Action: Inform your system programmer of this
problem.
10 000 Meaning: System error. The ESTAE-type recovery
routine failed.
Action: Inform your system programmer of this
problem.
14 000 Meaning: System error. SJF encountered a condition
that caused an abnormal termination.
Action: Check the input parameters, particularly any
pointer fields, to determine if the input values are
correct.
18 000 Meaning: System error. The service routines for
SJFREQ are not available.
Action: SJF did not initialize properly. Contact the
appropriate IBM support personnel.
Example
Invoke the VERIFY service to:
Validate the syntax of the statement OUTDES, the keyword operand CHARS, and the
subparameter (GT10)
Build text units for the valid keyword operand and subparameter.
OUTDES out1 CHARS(GT12)
Use the label out1 for the OUTDES statement in this example. The statement is to be
converted into text units and used as input to OUTADD, the dynamic output macro.
This program segment has attributes that allow the defined
storage to be altered.
Set up SJVEP, VERIFY parameter list area.
XC SJVEP(SJVELGTH),SJVEP Clear the parameter list
MVC SJVEID,=A(SJVEPEYE) Parameter list ID
MVI SJVEVERS,SJVECVER Parameter list version
OI SJVEFLAG,SJVENOCU Indicate no cleanup to SJF on this
call, another call to SJF is
expected.
LA R4,SJVELGTH Get parameter list length
STH R4,SJVELEN Set parameter list length
SJVESTOR and SJVEJDVT are properly
set at zero from XC instruction.
Set up statement and operand information.
MVC SJVECMND,STATMNT Set statement name field to OUTDES
ST R2,SJVEOPEP Set the operand pointer
LR R15,R3 Get pointer to last operand
character
SR R15,R2 Get difference from first operand
character
LA R15,1(R15) Add 1 to get proper operand length
STH R15,SJVEOPEL Set operand length
Set up subparameter information.
LA R15,1 Set up for first subparameter
STC R15,SJVEPARM Set subparameter number to 1
ST R4,SJVEPRMP Set the subparameter pointer
LR R15,R5 Get pointer to last subparameter
character
SR R15,R4 Get difference from first
subparameter character
LA R15,1(R15) Add 1 to get proper subparameter
length
STH R15,SJVEPRML Set the subparameter pointer
Set up output area information.
LA R15,AREASIZE Get output work area length
STH R15,SJVETUBL Set text unit output area length
LA R15,OUTAREA Get address of output work area
ST R15,SJVETUBP Set text unit output area size
Set up Register 1 to point to a word of storage that
contains the address of SJVEP.
LA R4,SJVEP Address of
ST R4,SJVEPPTR the SJFREQ VERIFY
LA R1,SJVEPPTR parameter list
Invoke SJFREQ VERIFY service.
SJFREQ REQUEST=VERIFY Issue the SJF macro.
Check for a zero return code.
R3 EQU 3 Register 3
R4 EQU 4 Register 4
R5 EQU 5 Register 5
R6 EQU 6 Register 6
R7 EQU 7 Register 7
R8 EQU 8 Register 8
R9 EQU 9 Register 9
R15 EQU 15 Register 15
SJVEPEYE EQU C'SJVE' VERIFY parameter list identifier
STATMNT DC CL8'OUTDES ' Statement name
Description
Note: IBM recommends that you use the ESPIE macro rather than SPIE. Callers in 31-bit
addressing mode must use the ESPIE macro, which performs the same function as
the SPIE macro for callers in both 24-bit and 31-bit addressing mode.
The SPIE macro specifies the address of an interruption exit routine and the program
interruption types that are to cause the exit routine to get control.
Note: In MVS/370 the SPIE environment existed for the life of the task. In later versions of
MVS, the SPIE environment is deleted when the request block that created it is
deleted. That is, when a program running under a later version of MVS completes,
any SPIE environments created by the program are deleted. This might create an
incompatibility with MVS/SP Version 1 for programs that depend on the SPIE
environment remaining in effect for the life of the task rather than the request block.
Each succeeding SPIE macro invocation completely overrides any previous SPIE macro
specifications for the task. The specified exit routine is given control in the key of the TCB
when one of the specified program interruptions occurs in any problem program of the task.
When a SPIE exit routine issues the SPIE macro, the system resets (zeros) the program
interruption element (PIE). Thus, a SPIE exit routine should save any required PIE data
before issuing a SPIE. If a caller issues an ESPIE macro from within a SPIE exit routine, it
has no effect on the contents of the PIE. However, if an ESPIE macro deletes the last
SPIE/ESPIE environment, the PIE is freed and the SPIE exit cannot retry.
If the current SPIE environment is cancelled during SPIE exit routine processing, the control
program will not return to the interrupted program when the SPIE program terminates.
Therefore, if the SPIE exit routine wishes to retry within the interrupted program, a SPIE
cancel should not be issued within the SPIE exit routine.
The SPIE macro can be issued by any problem program being executed in the performance
of the task. The control program automatically deletes the SPIE exit routine when the
request block (RB) that issued the SPIE macro terminates.
A PICA (program interruption control area) is created as part of the expansion of SPIE. The
PICA contains the exit routine's address and a code indicating the interruption types
specified in SPIE.
For more information on the SPIE macro, see the sections on program interruption services
in OS/390 MVS Programming: Assembler Services Guide and OS/390 MVS Programming:
Authorized Assembler Services Guide.
The following description of the SPIE macro also appears in OS/390 MVS Programming:
Assembler Services Reference, with the exception of interruption type 17. This interruption
type designates page faults and its use is restricted to an authorized program.
Environment
The requirements for the caller are:
Minimum authorization: To issue SPIE without encountering an abnormal end, callers must
be in problem state, with a PSW key value that is equal to the TCB
assigned key. To specify page fault processing, the caller must be
APF-authorized.
Dispatchable unit mode: Task
Cross memory mode: PASN=HASN=SASN
AMODE: 24-bit
ASC mode: Primary
Programming Requirements
The caller must include the following mapping macros:
IHAPIE
IHAPICA
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 SPIE macro is written as follows:
SPIE
Parameters
The parameters are explained as follows:
exit addr
Specifies the address of the exit routine to be given control when a specific program
interruption occurs. The exit routine receives control in 24-bit addressing mode.
,(interrupts)
Indicates the type of interruption for which the exit routine is to be given control. The
interruption types are as follows:
Notes:
1. If an exit address is zero or no parameters are specified, the current SPIE and any
previously active ESPIE environments are cancelled.
2. If a program interruption type is maskable, the corresponding program mask bit in
the PSW (program status word) is set to 1 when specified and to 0 when not
specified. Interruption types that are not maskable and not specified above are
handled by the system, which forces an abend with the program check as the
completion code. If an ESTAE-type recovery routine is also active, the SDWA
indicates a system-forced abnormal termination. The registers at the time of the
error are those of the system.
3. If you are using vector instructions and an interruption of 8, 12, 13, 14, or 15
occurs, your recovery routine can check the exception extension code (the first byte
of the two-byte interruption code in the EPIE or PIE) to determine whether the
exception was a vector or scalar type of exception.
ABEND Codes
The SPIE macro might return the following abend codes:
X'10E'
X'30E'
X'46D'.
See OS/390 MVS System Codes for explanations and programmer responses.
Example
Give control to an exit routine for interruption 17. DOITSPIE is the address of the SPIE exit
routine.
SPIE DOITSPIE,(17)
SPIE—List Form
Use the list form of the SPIE macro to construct a control program parameter list in the form
of a program interruption control area.
Syntax
The list form of the SPIE macro is written as follows:
SPIE
,MF=L
Parameters
The parameters are explained under the standard form of the SPIE macro, with the following
exception:
,MF=L
Specifies the list form of the SPIE macro.
SPIE—Execute Form
A remote control program parameter list is used in, and can be modified by, the execute
form of the SPIE macro. The PICA (program interruptions control area) can be generated by
the list form of SPIE, or you can use the address of the PICA returned in register 1 following
a previous SPIE macro. If this macro is being issued to reestablish a previous SPIE
environment, code only the MF parameter.
The address of the remote control program parameter list associated with any previous SPIE
environment is returned by the SPIE macro.
Syntax
The execute form of the SPIE macro is written as follows:
SPIE
,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 SPIE macro, with the following
exception:
,MF=(E,ctrl,addr)
Specifies the execute form of the SPIE macro using a remote control program
parameter list.
Note: If SPIE is coded with a zero as the control address, the SPIE environment is
canceled.
Description
The SPOST macro is used in a cross memory post environment to ensure that all
outstanding cross memory post requests to the current address space have completed.
SPOST resolves a synchronization problem that arises when it becomes necessary to free
an ECB that is a potential target for a cross memory post request. Before issuing SPOST,
you must stop any new posts from being initiated.
For explanation of the parameters in a cross memory post request, see the POST macro.
Environment
These are the requirements for the caller:
Programming Requirements
The caller must include the CVT mapping macro.
Restrictions
None.
Performance Implications
None.
Syntax
The SPOST macro is written as follows:
SPOST
ABEND Codes
17B
27B
47B
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Example
Execute the SPOST macro with a comment.
SPOST ,ISSUE SPOST
Description
Note: IBM recommends that you use the following macros rather than SRBSTAT:
SUSPEND - Suspend Execution of an SRB
RESUME - Resume or Purge a Suspended SRB
The SRBSTAT macro allows the caller to save, restore, and modify the status of an SRB in
a caller-supplied savearea. Control returns from the SRBSTAT macro in primary ASC mode.
Environment
These are the requirements for the caller:
Programming Requirements
None.
Restrictions
The caller of SRBSTAT RESTORE must not change PASID before the request; the
RESTORE will restore the PASID saved by the earlier SAVE request.
Register Contents
0-14 Unchanged
15 Return code
Performance Implications
None.
Syntax
The SRBSTAT macro is written as follows:
SRBSTAT
SAVE
RESTORE
MODIFY
,STSV=stsv addr stsv addr: RX-type address or register (1) - (12), register (1)
preferred.
,STSV=0
,NEWFRR=addr addr: RX-type address or register (0) or (2) - (12), register (0)
preferred.
,PRGAT=pat addr pat addr: RX-type address or register (2) - (12), register (2)
preferred.
Parameters
The parameters are explained as follows:
SAVE
RESTORE
MODIFY
Specifies whether a save, restore, or modify operation is requested. For SAVE or
RESTORE, only the following status is saved or restored:
If SAVE is specified, only caller's registers 1 and 15 are destroyed. Register 1 is used
to hold an FRR parameter area address if NEWFRR is also specified and register 15 is
used for a return code. The PCLINK stack header is saved and zeroed.
If RESTORE is specified, registers 0-13 are restored. The contents of register 14 are the
same as when RESTORE was entered. The current PCLINK stack header must be
zero; the saved one is restored.
If MODIFY is specified, registers 0-14 are unchanged and register 15 contains a return
code.
Notes:
,STSV=stsv addr
Specifies the address of the savearea to be used for the SAVE, RESTORE, or MODIFY
operation. The size of this savearea is contained in field SVTSSTSV of the SVT control
block. The savearea can be in private pageable storage, but it must be addressable
from the home address space and it must begin on a doubleword boundary. For
RESTORE or MODIFY, the savearea must contain valid status.
,STSV=0
Specifies that the current status is to be modified. This parameter is valid only with
MODIFY.
For MODIFY, an existing SRB status savearea or the current status is modified. Only
the purge ASID/TCB information can be modified. All registers are saved and restored
except register 15, which contains a return code.
Hexadecimal Meaning
Code
00 The modify function was successfully completed.
,NEWFRR=addr
Specifies the address of an FRR established with MODE=FULLXM. For SAVE, the
address of the FRR parameter area is returned to the caller in register 1. The first word
of the parameter area contains the address of the SRB status savearea being used.
For RESTORE, the FRR address is used only if the saved status cannot be reinstated
on the current processor. An SRB with the FRR option is scheduled specifying this FRR.
For MODIFY, this parameter is invalid.
,PRGAT=pat addr
Specifies the address of a 6-byte area of storage, currently addressable in the primary
address space, that contains the new purge ASID/TCB. Bytes 1 and 2 contain the ASID;
bytes 3-6 contain the TCB address. This parameter is required with MODIFY but is
invalid with SAVE or RESTORE.
ABEND Codes
05E
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Description
The SRBTIMER macro is used to establish a time limit for a system service running in SRB
mode. Time accumulates while the service is running; when the time limit expires, the
service abends with a system completion code of X'05B'. The service can retry following the
05B ABEND.
The caller can cancel an established time limit by reissuing the macro and specifying a time
limit of zero. The caller can also override the established time limit with a subsequent
SRBTIMER macro.
Environment
These are the requirements for the caller:
Programming Requirements
None.
Restrictions
None.
Performance Implications
None.
Syntax
The SRBTIMER macro is written as follows:
SRBTIMER
LIMIT=stor addr stor addr: RX-type address or register (0) or (2) - (12).
,ERRET=err rtn addr err rtn addr: RX-type address or register (2) - (12).
Parameters
The parameters are explained as follows:
LIMIT=stor addr
Specifies the virtual storage address of a doubleword field on a doubleword boundary
that contains the time limit. The time limit is in the form of a signed 64-bit binary number
and must be positive in order for time to elapse. A negative number causes immediate
expiration of the time limit. Bit 51 of the binary number is approximately equivalent to
one microsecond. If you specify a value greater than 208 days, the control program
changes the value to 208 days. The resolution of the timer is model dependent. See
Principles of Operation for details concerning the timer facility.
ABEND Codes
None.
Return Codes
When SRBTIMER macro returns control to your program, GPR 15 contains a hexadecimal
return code.
Description
The STATUS macro with the START or STOP option starts or stops a subtask. The
STATUS macro with the SET or RESET option places a program in process-must-complete
mode or ends process-must-complete mode. Process-must-complete mode postpones
delays from the following:
Asynchronous exits
Status stops (by issuing the STATUS macro with the STOP option)
Timer exits
Dumping
Swapping
Attention exits
The description of the STATUS macro has two parts: the START/STOP option and the
SET/RESET option. OS/390 MVS Programming: Assembler Services Reference describes
the STATUS macro START and STOP options with the exception of the SRB and ASID
parameters. These parameters, which are available only to supervisor state and key 0
callers, allow the caller to manipulate the dispatchability status or SRBs.
See OS/390 MVS Programming: Authorized Assembler Services Guide for more information
on how to use the STATUS macro SET and RESET options and OS/390 MVS Programming:
Assembler Services Guide for more information on how to use the STATUS macro START
and STOP options.
Environment
The requirements for the caller issuing STATUS with the START or STOP parameters are:
Minimum authorization: Problem state or supervisor state, with any PSW key. For SRB and
ASID parameters, supervisor state and PSW key 0.
Dispatchable unit mode: Task
Cross memory mode: PASN=HASN=SASN or PASN¬=HASN¬=SASN
AMODE: 31-bit
ASC mode: Primary or access register (AR)
Interrupt status: Enabled or disabled for I/O and external interrupts
Locks: No locks held
Control parameters: No requirements
The requirements for the caller issuing STATUS with the SET or RESET parameters are:
Programming Requirements
None.
Restrictions
Except for the TCB, all input parameters to this macro can reside in storage above 16
megabytes.
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, 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
Using STATUS will degrade performance of the calling program's address space while
STATUS runs.
Remaining in process-must-complete mode for an extended period of time will degrade the
performance of other programs waiting to use global resources that the program in this mode
holds.
START/STOP Options
Syntax
The START/STOP options of the STATUS macro are written as follows:
STATUS
START
STOP
,TCB=tcb addr tcb addr: RX-type address or address in register (2) - (12), or 0.
,SRB ASID addr: RX-type address or address in register (2) - (12).
,SRB, ASID=ASID addr Note: ASID may only be specified with START.
Parameters
The parameters are described as follows:
START
STOP
Specifies that the task identified in the TCB parameter is to be stopped (STOP) or
started (START). If you omit the TCB parameter, all subtasks of the originating task are
stopped or started.
Note: The STOP parameter does not ensure that the subtask is stopped when control
returns to the issuer. A subtask can have a “stop deferred” condition that would
cause that particular subtask to remain dispatchable until stops are no longer
deferred. In an MP environment, it would be possible to have a task issue the
STATUS macro with the STOP parameter and resume processing while the
subtask (for which the STOP was issued) is redispatched to another processor.
,TCB=tcb addr
,SRB
,SRB,ASID=ASID addr
Specifies the status of the stop/start function:
,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.
Return Codes
When control returns to the caller, register 15 contains one of the following hexadecimal
return codes:
SET/RESET Option
Syntax
The SET/RESET option of the STATUS macro is written as follows:
STATUS
SET,MC,PROCESS
RESET,MC,PROCESS
Parameters
The parameters are explained as follows:
SET,MC,PROCESS
RESET,MC,PROCESS
SET,MC,PROCESS places the program that invokes the macro in
process-must-complete mode.
RESET,MC,PROCESS ends process-must-complete mode.
Return Codes
When control returns to the caller, register 15 contains one of the following hexadecimal
return codes:
Example
Cause a program process to enter, then end, process-must-complete mode.
SETPMC CSECT
SETPMC AMODE 31
SETPMC RMODE ANY
STM 14,12,12(13) SAVE REGISTERS
LR 12,15 GET ENTRY POINT ADDRESS
USING SETPMC,12 ESTABLISH ADDRESSABILITY
ST 13,SAVEAREA+4 SAVE REGISTER 13
LR 2,13 GET CALLER SAVEAREA ADDRESS
LA 13,SAVEAREA SET UP OUR SAVEAREA ADDRESS
ST 13,8(2) SAVE SAVEAREA ADDRESS IN CALLER
SAVEAREA
MODESET MODE=SUP,KEY=ZERO GET INTO SUPERVISOR STATE, KEY 2
STATUS SET,MC,PROCESS SET PMC MODE
LTR 15,15 CHECK RETURN CODE
BNZ BADSET NOT SUCCESSFUL, GO HANDLE...
Perform processing that requires process-must-complete mode...
Note: This processing must not request the local lock and
must not issue any SVCs or issue a WAIT.
RESET STATUS RESET,MC,PROCESS RESET PMC MODE
LTR 15,15 PMC MODE HAD ALREADY BEEN RESET,
ALREADY OUT OF PMC MODE
BNZ BADRESET NOT SUCCESSFUL, GO HANDLE...
EXIT DS 2H
MODESET MODE=PROB,KEY=NZERO GET OUT OF SUPERVISOR STATE, KEY 2
L 13,4(13) RESTORE REGISTER 13
L 14,12(13) RESTORE REGISTER 14
LM 2,12,22(13) RESTORE REGISTERS 2 THRU 12
SLR 15,15 SET RETURN CODE 2 IN REGISTER 15
BR 14 RETURN TO THE CALLER
BADSET DS 2H
Perform appropriate processing for nonzero return code from
STATUS SET,MC,PROCESS.
B EXIT
BADRESET DS 2H
Perform appropriate processing for nonzero return code from
STATUS RESET,MC,PROCESS.
B EXIT
SAVEAREA DC 18F'2' 18-WORD SAVEAREA
END SETPMC
Description
The STORAGE macro requests that the system obtain or release an area of virtual storage
in the primary address space (by default), or in the address space defined through the ALET
parameter. The two functions of the macro are:
STORAGE OBTAIN, which requests one or more areas of virtual storage
STORAGE RELEASE, which releases one or more areas of virtual storage.
The STORAGE macro is also described in OS/390 MVS Programming: Assembler Services
Reference, with the exception of the ALET, TCBADDR, and OWNER parameters.
| If you use STORAGE OBTAIN to request real storage backing above 2 gigabytes, but your
| system does not support 64-bit storage, your request will be treated as a request for backing
| above 16 megabytes, even on earlier releases of OS/390 that do not support backing above
| 2 gigabytes. However, boundary requirements indicated by the CONTBDY and STARTBDY
| parameters will be ignored by earlier releases of OS/390.
Environment
The requirements for the caller are:
Minimum authorization: For subpools 0-127: problem state and PSW key 8-15.
For subpools 131 and 132, one or more of the following:
Supervisor state
PSW key 0-7
PSW key mask (PKM) that allows the calling program to
switch its PSW key to match the key of the storage to be
obtained or released.
For the ALET parameter, the TCBADDR parameter, and all other
subpools, either of the following:
Supervisor state
PSW key 0-7
To issue a subpool release for subpool 0: PSW key 0.
Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 24- or 31-bit
ASC mode: Primary or AR
Interrupt status: Enabled for I/O and external interrupts.
Enabled or disabled for I/O and external interrupts only if obtaining
or releasing common storage.
Locks: No requirement.
You may hold the local lock for the target address space.
If you hold the local lock, you may also hold the CMS lock.
You may hold the CPU lock when obtaining or releasing
common storage.
Control parameters: No requirement.
Programming Requirements
None.
Restrictions
None.
Register Information
Register usage varies depending on the type of STORAGE request. For specific information,
see the descriptions of STORAGE OBTAIN and STORAGE RELEASE.
Performance Implications
None.
STORAGE OBTAIN
The STORAGE macro with the OBTAIN parameter requests that the system allocate an area
of virtual storage to the specified task. The length you specify must not exceed the length
available. The length available depends on how much storage has already been allocated
and, for subpools 0 - 127, 129-132, 240, and 250-252, the region size. For some subpools,
the system releases the storage when the owning task terminates. For other subpools, you
must issue STORAGE RELEASE or FREEMAIN to release them. Before obtaining storage,
be sure to read “Selecting the Right Subpool for Your Virtual Storage Request” in OS/390
MVS Programming: Authorized Assembler Services Guide.
Note: When you obtain storage, the system clears the requested storage to zeros if you
obtain either:
8192 bytes or more from a pageable, private storage subpool, CSA or ECSA.
4096 bytes or more from a pageable, private storage subpool, CSA or ECSA
with BNDRY=PAGE specified.
The caller can specify CHECKZERO=YES to detect these and other cases
where the system clears the requested storage to zeroes.
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0 Used as a work register by the system.
1 The ALET value if you specified the ALET parameter and the STORAGE
OBTAIN is successful; otherwise, used as a work register by the system.
2-13 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 service returns
control.
Syntax
The OBTAIN option of the STORAGE macro is written as follows:
STORAGE
OBTAIN
,LENGTH=length value length value: Symbol, decimal number, or register (0), (2)-(12).
,LENGTH=(max length,min max length: Symbol, decimal number, or register (0), (2) - (12).
length)
min length: Symbol, decimal number, or register (1) - (12).
,KEY=key number key number: Decimal number 0-15 or register (2) - (12).
Note 1: KEY is valid only when SP is specified.
Note 2: You cannot specify both KEY and CALLRKY=YES.
| ,LOC=24
| ,LOC=(24,31)
| ,LOC=(24,64)
| ,LOC=31
| ,LOC=(31,31)
| ,LOC=(31,64)
,LOC=RES Default: LOC=RES
| ,LOC=(RES,31)
| ,LOC=(RES,64)
,LOC=EXPLICIT Note: You must specify the INADDR parameter with
| ,LOC=(EXPLICIT,24) EXPLICIT.
| ,LOC=(EXPLICIT,31)
| ,LOC=(EXPLICIT,64)
,RTCD=rtcd addr rtcd addr: RX-type address or register (2) - (12) or (15).
Default: RTCD=(15).
Parameters
The parameters are explained as follows:
OBTAIN
Requests that the system obtain virtual storage.
,LENGTH=length value
,LENGTH=(max length,min length)
Specifies the amount of storage the system is to obtain. length value specifies the
length, in bytes, of the requested virtual storage. max length and min length specify the
maximum and minimum amounts of storage. These numbers should be a multiple of 8;
if they are not, the system uses the next higher multiple of 8.
,ADDR=stor addr
Specifies the location where the system is to return the address of the storage it
allocates.
,INADDR=stor addr
Specifies the desired virtual address for the storage to be obtained. When you specify
INADDR, you must specify EXPLICIT on the LOC parameter.
Notes:
,SP=subpool number
Specifies the subpool number for the storage. (See OS/390 MVS Programming:
Authorized Assembler Services Guide for a list of valid subpools.) If you specify a
register, the subpool number must be in bits 24-31 of the register, with bits 0-23 set to
zero. If you omit this parameter, the system uses the default, which is subpool 0.
Notes:
1. Callers executing in supervisor state and key 0, who specify subpool 0, will obtain
storage from subpool 252. Therefore, when requesting a dump of this storage
through the SDUMP or SDUMPX macro, they must specify subpool 252 rather than
zero.
2. Storage requested from subpools 240 and 250 are translated to subpool 0 requests.
,ALET=alet-value
Specifies the ALET of the target address space — the address space in which the
storage is to be obtained. The ALET must have the value 1 or 2, or be on the caller's
dispatchable unit access list (DU-AL) and, if the ALET indexes a private entry, the caller
must be authorized to the target address space through the extended authorization
index (EAX). For more information, see OS/390 MVS Programming: Extended
Addressability Guide. If you omit this parameter, the system assumes the target address
space is in the primary address space.
,BNDRY=DBLWD
,BNDRY=PAGE
Specifies that alignment on a doubleword boundary (DBLWD) or alignment with the start
of a virtual page on a 4K boundary (PAGE) is required for the start of a requested area.
If the request specifies one of the LSQA or SQA subpools, the system ignores the
BNDRY=PAGE keyword. Requests for storage from these subpools are then fulfilled
from a single page, unless the request is greater than a page. See OS/390 MVS
Programming: Authorized Assembler Services Guide for a list of the LSQA and SQA
subpools.
The default is BNDRY=DBLWD.
| ,CONTBDY=containing_bdy
| Specifies the boundary the obtained storage must be contained within. Specify a power
| of 2 that represents the containing boundary. Supported values are 3-31. For example,
| CONTBDY=10 means the containing boundary is 2**10, or 1024 bytes. The containing
| boundary must be at least as large as the maximum requested boundary. The obtained
| storage will not cross an address that is a multiple of the requested boundary.
| If a register is specified, the value must be in bits 24-31 of the register. Do not specify
| CONTBDY on a variable-length request.
| CONTBDY is not valid with LOC=EXPLICIT or BNDRY=PAGE.
| CONTBDY applies to all subpools.
| If you omit this parameter, there is no containing boundary.
| ,STARTBDY=starting_bdy
| Specifies the boundary the obtained storage must start on. Specify a power of 2 that
| represents the start boundary. Supported values are 3-31. For example, STARTBDY=10
| means the start boundary is 2**10, or 1024 bytes. The obtained storage will begin on an
| address that is a multiple of the requested boundary.
| If a register is specified, the value must be in bits 24-31 of the register. Do not specify
| STARTBDY on a variable-length request.
| STARTBDY is not valid with LOC=EXPLICIT or BNDRY=PAGE.
| STARTBDY applies to all subpools.
| If you omit this parameter, the start boundary is 8 bytes (equivalent to specifying
| STARTBDY=3).
,KEY=key-number
Indicates the storage key of the storage to be obtained. The valid storage keys are 0-15.
If you pass the storage key in a register, it must be in bits 24-27 in that register. KEY is
valid only when SP is specified, and applies only to subpools 129-132, 227-231, 241,
and 249. The system ignores the KEY parameter if KEY is used for any other subpools.
For detailed information about how the system determines what storage key to assign to
your storage request, see “Selecting the Right Subpool for Your Virtual Storage
Request” in the OS/390 MVS Programming: Authorized Assembler Services Guide.
,CALLRKY=NO
,CALLRKY=YES
Specifies how the system assigns the key for the storage to be obtained:
CALLRKY=NO The system assigns the value according to the specified subpool:
For subpools 129-132, 227-231, 241, and 249, the system
assigns the value specified on the KEY parameter (or zero, if the
KEY parameter is omitted) as the storage key
For all other subpools, the system ignores the CALLRKY
parameter.
CALLRKY=YES The system assigns the caller's current PSW key as the storage key.
When you specify CALLRKY=YES, do not also specify KEY. Specify
CALLRKY only when obtaining storage from subpools 129-132,
227-231, 241, and 249. For all other subpools, the system ignores the
CALLRKY parameter.
The default is CALLRKY=NO. For detailed information about how the system determines
what storage key to assign to your storage request, see “Selecting the Right Subpool for
Your Virtual Storage Request” in the OS/390 MVS Programming: Authorized Assembler
Services Guide.
| ,LOC=24
| ,LOC=(24,31)
| ,LOC=(24,64)
| ,LOC=31
| ,LOC=(31,31)
| ,LOC=(31,64)
,LOC=RES
| ,LOC=(RES,31)
| ,LOC=(RES,64)
,LOC=EXPLICIT
| ,LOC=(EXPLICIT,24)
| ,LOC=(EXPLICIT,31)
| ,LOC=(EXPLICIT,64)
Specifies the location of virtual storage and central (also called real) storage. This is
especially helpful for callers with 24-bit dependencies. When LOC is specified, central
storage is allocated anywhere until the storage is fixed (for example, using the PGSER
macro). You can specify the location of central storage (after the storage is fixed) and
virtual storage (whether or not the storage is fixed) using the following LOC parameter
values:
| LOC=24 indicates that central and virtual storage are to be located below 16 megabytes.
| LOC=24 must not be used to allocate disabled reference (DREF) storage.
| Note: Specifying LOC=BELOW is the same as specifying LOC=24. LOC=BELOW is
| still supported, but IBM recommends using LOC=24 instead.
| LOC=(24,31) indicates that virtual storage is to be located below 16 megabytes and
| central storage can be located anywhere below 2 gigabytes.
| Note: Specifying LOC=(BELOW,ANY) is the same as specifying LOC=(24,31).
| LOC=(BELOW,ANY) is still supported, but IBM recommends using LOC=(24,31)
| instead.
| LOC=(24,64) indicates that virtual storage is to be located below 16 megabytes and
| central storage can be located anywhere in 64-bit storage.
| LOC=31 and LOC=(31,31) indicate that virtual and central storage can be located
| anywhere below 2 gigabytes.
| Note: Specifying LOC=ANY or LOC=(ANY,ANY) is the same as specifying LOC =31 or
| LOC=(31,31). LOC=ANY and LOC=(ANY,ANY) are still supported, but IBM
| recommends using LOC=31 or LOC=(31,31) instead.
| LOC=(31,64) indicates that virtual storage is to be located below 2 gigabytes and central
| storage can be located anywhere in 64-bit storage.
When you use LOC=RES to allocate storage that can reside either above or below 16
megabytes, LOC=RES indicates that the location of virtual and central storage depends
on the location of the caller. If the caller resides below 16 megabytes, virtual and central
storage are to be located below 16 megabytes. If the caller resides above 16
megabytes, virtual and central storage are to be located either above or below 16
megabytes.
| LOC=(RES,31) indicates that the location of virtual storage depends upon the location of
| the caller. If the caller resides below 16 megabytes, virtual storage is to be located
| below 16 megabytes; if the caller resides above 16 megabytes, virtual storage can be
| located anywhere below 2 gigabytes. In either case, central storage can be located
| anywhere below 2 gigabytes.
| Note: Specifying LOC=(RES,ANY) is the same as specifying LOC=(RES,31).
| LOC=(RES,ANY) is still supported, but IBM recommends using LOC=(RES,31)
| instead.
| LOC=(RES,64) indicates that the location of virtual storage depends upon the location of
| the caller. If the caller resides below 16 megabytes, virtual storage is to be located
| below 16 megabytes; if the caller resides above 16 megabytes, virtual storage can be
| located anywhere in 64-bit storage. In either case, central storage can be located
| anywhere in 64-bit storage.
Note: If your program resides below 16 megabytes but runs with 31-bit addressing
| mode, you can specify LOC=RES (as a default or explicitly) or LOC=(RES,31) to
obtain storage from a subpool supported only above 16 megabytes. Do not
specify subpools supported only above 16 megabytes on requests using
| LOC=RES or LOC=(RES,31) if your program resides below 16 megabytes and
runs with 24-bit addressing.
| LOC=EXPLICIT, LOC=(EXPLICIT,24), LOC=(EXPLICIT,31), or LOC=(EXPLICIT,64)
| specify that the requested virtual storage is to be located at the address specified with
| the INADDR parameter, which is required with EXPLICIT. EXPLICIT is valid only for
| subpools 0-127, 129-132, 240, 250, 251, and 252. You cannot specify the BNDRY,
| OWNER, or LENGTH=(max length,min length) parameters with EXPLICIT.
| Note: Specifying LOC=(EXPLICIT,BELOW) is the same as specifying
| LOC=(EXPLICIT,24). Specifying LOC=(EXPLICIT,ANY is the same as
| specifying LOC=(EXPLICIT,31). The older specifications are still supported, but
| IBM recommends using the newer specifications instead.
| LOC=(EXPLICIT,31) indicates that virtual storage is to be located at the address
| specified on the INADDR parameter, and central storage can be located anywhere
| below 2 gigabytes.
| LOC=(EXPLICIT,24) indicates that virtual storage is to be located at the address
specified on the INADDR parameter, and central storage is to be located below 16
megabytes. The virtual storage address specified on the INADDR parameter must be
below 16 megabytes.
| LOC=EXPLICIT and LOC=(EXPLICIT,64) indicate that virtual storage is to be located at
| the address specified on the INADDR parameter, and central storage can be located
| anywhere in 64-bit storage.
When you specify EXPLICIT on a request for storage from the same virtual page as
previously requested storage, you must request it in the same key, subpool, and central
storage area as on the previous storage request. For example, if you request virtual
storage backed with central storage below 16 megabytes, any subsequent requests for
| storage from that virtual page must be specified as LOC=(EXPLICIT,24).
Notes:
,OWNER=HOME
,OWNER=PRIMARY
,OWNER=SECONDARY
,OWNER=SYSTEM
Specifies the entity to which the system will assign ownership of requested CSA, ECSA,
SQA, and ESQA storage. The system uses this ownership information to track the use
of CSA, ECSA, SQA and ESQA storage. This parameter can have one of the following
values:
The default value is OWNER=HOME. The system ignores the OWNER keyword unless
you specify a CSA, ECSA, SQA, or ESQA subpool on the SP parameter.
Storage tracking is available as of MVS/SP release 4.3. However, programs that issue
the STORAGE OBTAIN macro with the OWNER parameter can run on any MVS system
from MVS/SP 3.1 to the current release.
,RTCD=rtcd addr
Specifies the location where the system is to store the return code. The return code is
also in GPR 15. This parameter is valid only if you specify COND=YES.
| ,COND=YES
| ,COND=NO
| Specifies whether the request is unconditional or conditional.
| COND=YES specifies that the active unit of work should not be abnormally terminated if
| there is insufficient contiguous virtual storage to satisfy the request, and instead should
| return to the caller with a non-zero return code. Use of COND=YES does not prevent
| all abnormal terminations. For example, if the request has incorrect or inconsistent
| parameters, the system abnormally terminates the active unit of work. If you specify
| COND=YES, you may also specify the RTCD parameter to define the location where the
| system is to store the return code.
| COND=NO indicates that the request is unconditional. The system abnormally
| terminates the active unit of work if the STORAGE OBTAIN request cannot complete
| successfully. This situation occurs if the parameters passed on the request are incorrect
| or inconsistent, if the system encounters internal errors, or if there is not enough
| contiguous virtual storage to satisfy the request. COND=NO is the default.
,TCBADDR=tcbaddress
Specifies the address of a word that contains the address of the input task control block
(TCB), or a register that contains the address of the input TCB. The system assumes
that the input TCB resides in the address space where the storage is to be obtained.
For an explanation of the term input TCB, and to determine the system-assigned
defaults for private storage ownership, see “Selecting the Right Subpool for Your Virtual
Storage Request” in OS/390 MVS Programming: Authorized Assembler Services Guide.
The system ignores the TCBADDR keyword if the STORAGE OBTAIN request is for a
common storage subpool.
,CHECKZERO=YES
,CHECKZERO=NO
Specifies whether or not the return code for a successful completion should indicate if
the system has cleared the requested storage to zeroes. When CHECKZERO=NO is
specified or defaulted, the return code for a successful completion is 0. When
CHECKZERO=YES is specified, the return code for a successful completion is X'14' if
the system has cleared the requested storage to zeroes, and 0 if the system has no
cleared the requested storage to zeroes.
There is no performance cost to specifying CHECKZERO=YES.
CHECKZERO processing is available as of OS/390 R6. Programs that issue the
GETMAIN macro with the CHECKZERO parameter can run on any MVS system from
MVS/SP 2.1 to the current release. On a down-level system, CHECKZERO will be
ignored, and the return code for a successful completion (conditional or unconditional)
will be 0.
,RELATED=value
Specifies information used to self-document macro 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 can be any valid coding values.
ABEND Codes
Abend codes that STORAGE OBTAIN might issue are listed below. For detailed abend code
information, see OS/390 MVS System Codes.
Examples
For examples of how to use the STORAGE macro with the OBTAIN option, see “Examples
of the OBTAIN and RELEASE Options” on page 112.
STORAGE RELEASE
The STORAGE macro with the RELEASE parameter requests that the system release an
area of virtual storage or an entire virtual storage subpool, previously allocated through the
STORAGE or GETMAIN macro. The system abends the active task if the specified virtual
storage does not start on a doubleword boundary or, for an unconditional request, if the
specified area or subpool is not allocated to the current task. The current task is determined
from the input task specified on the TCBADDR parameter (see “Selecting the Right Subpool
for Your Virtual Storage Request” in OS/390 MVS Programming: Authorized Assembler
Services Guide for more information about the input task).
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 service returns
control.
Syntax
The RELEASE option of the STORAGE macro is written as follows:
STORAGE
RELEASE
,LENGTH=length value length value: Symbol, decimal number, or register (0), (2) - (12).
,ADDR=stor addr stor addr: RX-type address or register (1) - (12).
,LENGTH=length value
,SP=subpool number subpool number: Symbol, decimal number, or register (2) - (12),
(15).
Default: SP=0.
,KEY=key number key number: Decimal number 0-15 or register (2) - (12).
Note: KEY is valid only when SP is specified.
,RTCD=rtcd addr rtcd addr: RX-type address or registers (2) - (12), (15).
Default: RTCD=(15)
Parameters
The parameters are explained as follows:
RELEASE
Requests that the system release virtual storage.
,LENGTH=length value
Specifies the number of bytes of storage that the system is to release. If you specify
LENGTH, you must also specify ADDR. To free an entire subpool, use SP instead of
LENGTH and ADDR. Do not specify a length value of zero with an address of zero. This
will cause STORAGE RELEASE to free the subpool specified with the SP parameter, or
subpool 0, if the SP parameter is omitted.
,ADDR=stor addr
Specifies the address of the storage to be released. If you specify ADDR, you must also
specify LENGTH. To free an entire subpool, use SP instead of LENGTH and ADDR.
,SP=subpool number
Specifies the subpool number for the storage to be released. The subpool number must
be a valid subpool number between 0 and 255. If you specify the subpool in a register,
the subpool number must be in bits 24-31 of the register, with bits 0-23 set to zero. If
you omit this parameter, the system uses subpool 0.
A request to release all the storage in a subpool is known as a subpool release. To
issue a subpool release, use SP to indicate the subpool and do not specify either
LENGTH or ADDR. Issue subpool releases only for the following subpools: 0-127,
129-132, 203, 204, 213, 214, 223, 224, 229, 230, 233, 236, 237, 240, 249, and 250-253.
If you try to issue a subpool release for any other subpool, an abend X'478' or X'40A'
occurs. See the list of subpool characteristics in OS/390 MVS Programming: Authorized
Assembler Services Guide for information and requirements pertaining to specific
subpools.
Notes:
1. The system translates subpool 0 storage requests to subpool 252 storage requests
when you are running in supervisor state and key 0. If you are not running in
supervisor state and key 0, you will receive storage from subpool 0 when you
request it.
2. The system translates subpool 240 and 250 storage requests to subpool 0 storage
requests. Bearing this in mind, you must be careful to specify the correct subpool
when obtaining and releasing storage. For instance, if you obtain subpool 0 storage
while running in problem state, you will receive subpool 0 storage. If you attempt to
release it after switching to supervisor state and PSW key 0, you cannot specify
subpool 0 because the system will try to free subpool 252 storage. Instead, you
must release the storage specifying subpools 240 or 250, which are translated by
the system to subpool 0.
,ALET=alet-value
Specifies the ALET of the address space in which the storage is to be released. The
ALET must be 1 or 2, or be on the caller's dispatchable unit access list (DU-AL) and, if
the ALET is PRIVATE, the caller must be authorized through the extended authorization
index (EAX) to the address space. For additional information, see OS/390 MVS
Programming: Extended Addressability Guide. If you omit this parameter, the system
assumes storage is in the primary address space.
,KEY=key-number
Indicates the storage key of the storage to be released. The valid storage keys are 0-15.
If you pass the storage key in a register, it must be in bits 24-27 in that register. KEY is
valid only with SP and applies only to subpools 129-132, 227-231, 241, and 249. The
system ignores the KEY parameter if KEY is used for any other subpools. KEY allows
you to release storage in the specified storage protection key. See list of subpool
characteristics in OS/390 MVS Programming: Authorized Assembler Services Guide for
information on authorization requirements pertaining to specific subpools.
,CALLRKEY=NO
,CALLRKEY=YES
Specifies how the system assigns the key for the storage to be obtained:
CALLRKY=NO The system assigns the value according to the specified subpool:
For subpools 129-132, 227-231, 241, and 249, the system
assigns the value specified on the KEY parameter (or zero, if the
KEY parameter is omitted) as the storage key
For all other subpools, the system ignores the CALLRKY
parameter.
CALLRKY=YES The system assigns the caller's current PSW key as the storage key.
When you specify CALLRKY=YES, do not also specify KEY. Specify
CALLRKY only when obtaining storage from subpools 129-132,
227-231, 241, and 249. For all other subpools, the system ignores the
CALLRKY parameter.
The default is CALLRKY=NO. For detailed information about how the system determines
what storage key to assign to your storage request, see “Selecting the Right Subpool for
Your Virtual Storage Request” in the OS/390 MVS Programming: Authorized Assembler
Services Guide.
,RTCD=rtcd addr
Specifies the location where the system is to store the return code. The return code is
also in GPR 15. This parameter is only valid if you specify COND=YES.
,COND=YES
,COND=NO
Specifies whether the request is unconditional or conditional.
COND=YES specifies that the task should not abend if the system cannot release the
storage. However, the system cannot prevent some abends. The RTCD parameter
specifies the location where the system is to store a return code. COND=NO specifies
that the system abend the active task if it cannot release the storage.
COND=NO is the default.
,TCBADDR=tcbaddress
Specifies the address of a word that contains the address of the input task control block
(TCB), or a register that contains the address of a word that contains the address of the
input TCB.
For an explanation of the term input TCB, and to determine the system-assigned
defaults for private storage ownership, see “Selecting the Right Subpool for Your Virtual
Storage Request” in OS/390 MVS Programming: Authorized Assembler Services Guide.
The system ignores the TCBADDR keyword if the STORAGE RELEASE request is for a
common storage subpool. If you specified TCBADDR on STORAGE OBTAIN, you
should also specify TCBADDR on STORAGE RELEASE.
,RELATED=value
Specifies information used to self-document macro 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 can be any valid coding values.
ABEND Codes
Abend codes that STORAGE RELEASE might issue are listed below. For detailed abend
code information, see OS/390 MVS System Codes.
Release the 1000 bytes obtained above from subpool 223 and abend the caller if the request
fails. Assume that the length of the storage is still in register 2 and the address of the
storage is in register 3.
STORAGE RELEASE,LENGTH=(2),ADDR=(3),SP=223,COND=NO
.
.
Example 2
Code the instructions to obtain 4096 bytes of virtual storage from subpool 227 — above 16
megabytes, if possible. The address is returned at location STRGA. The protection key is the
caller's PSW key. The system is to assign the storage to be obtained to the primary address
space. The system is to store the return code at location MY_RC.
STORAGE OBTAIN,LENGTH=ONE_PAGE,ADDR=STRGA,SP=MY_SUBPOOL,
CALLRKY=YES,LOC=ANY,COND=YES,OWNER=PRIMARY,RTCD=MY_RC
To release the 4096 bytes obtained above from subpool 227, issue:
L 2,KEY_5
STORAGE RELEASE,LENGTH=ONE_PAGE,ADDR=STRGA,SP=MY_SUBPOOL,
KEY=(2),COND=YES,RTCD=MY_RC
.
.
MY_RC DS F
STRGA DS F
KEY_5 DC X'22222252'
ONE_PAGE EQU 4296
MY_SUBPOOL EQU 227
Note that, when the caller passes the key in a register, the key must be in bits 24-27. Note
also, that KEY=KEY_5 is not valid, as KEY_5 is neither a register nor a decimal number.
Example 3
Code the instructions to obtain 4096 bytes of virtual storage from subpool 227. Indicate that,
if the system cannot obtain 4096 bytes, the caller can settle for as little as 1024 bytes. The
system returns the address of the storage obtained at location STRGA. The protection key is
5. The system is to store the return code at location MY_RC.
STORAGE OBTAIN,LENGTH=(ONE_PAGE,ONE_K),ADDR=STRGA, X
SP=MY_SUBPOOL,KEY=5,LOC=ANY,COND=YES,RTCD=MY_RC
ST 2,STRG_LEN
Release the storage from subpool 227, obtained above. Note that you cannot specify
LENGTH=STRG_LEN.
L 2,KEY_5
L 3,STRG_LEN
STORAGE RELEASE,LENGTH=(3),ADDR=STRGA,SP=MY_SUBPOOL, X
KEY=(2),COND=YES,RTCD=MY_RC
.
.
STRG_LEN DS F
MY_RC DS F
STRGA DS F
KEY_5 DC X'22222252'
ONE_K EQU 1224
ONE_PAGE EQU 4296
MY_SUBPOOL EQU 227
Example 4
Code the instructions to set up an 18-word save area, such as one that a program in AR
address space control (ASC) mode would obtain to call a program in primary mode. The
program issuing the STORAGE macro is in 31-bit addressing mode, and the code is
reentrant.
PGM CSECT
PGM AMODE 31
PGM RMODE ANY
BAKR 14,2 SAVE CALLER'S ARS, GPRS AND RETURN
ADDRESS ON LINKAGE STACK
SAC 512 SWITCH TO AR ASC MODE
LAE 12,2(15,2) SET UP PROGRAM BASE REGISTER AND AR
USING PGM,12
STORAGE OBTAIN,LENGTH=72 GET REENTRANT SAVEAREA
LAE 13,2(1,2) PUT SAVEAREA ADDRESS IN AR/GPR 13
MVC 4(4,13),=C'F1SA' PUT ACRONYM INTO SAVEAREA TO
INDICATE STATUS SAVED ON LINKAGE STACK
.
BEGIN PROGRAM CODE HERE
Description
Suspend an SRB
To suspend an SRB, use the variation of the SUSPEND macro described under
“SUSPEND — Suspend Execution of an SRB” on page 117.
To suspend execution of a request block (RB), use this variation of the SUSPEND macro.
The RB remains suspended until a subsequent RESUME macro causes the RB to resume
execution.
Environment
The requirements for the caller are:
Programming Requirements
The caller must include the IHAPSA mapping macro and the CVT mapping macro specifying
DSECT=YES.
Restrictions
The list and execute forms of the SUSPEND macro are not valid for suspending execution of
an RB.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 Address of the suspended TCB
1 Address of the suspended RB
2-10 Unchanged
11-15 Used as work registers by the system
Performance Implications
None.
Syntax
The SUSPEND macro is written as follows:
SUSPEND
Parameters
The parameters are explained as follows:
RB=PREVIOUS
RB=CURRENT
Specifies which RB on the TCB to suspend. The current RB is the one that is executing;
it is the first RB on the RB chain. The previous RB is the one that follows the current RB
on the RB chain.
ABEND Codes
070
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Example
Suspend the execution of the most recently chained request block of the current task.
SUSPEND RB=CURRENT
Description
Suspend an RB
To suspend an RB, use the variation of the SUSPEND macro described under
“SUSPEND — Suspend Execution of an RB” on page 115.
To request suspension of a supervisor request block (SRB), use this variation of the
SUSPEND macro.
When a caller issues the SUSPEND macro for an SRB, the system passes control to an exit
routine identified on the SUSPEND macro and passes the suspend token to the routine. The
exit routine decides whether to suspend the SRB or allow the SRB to continue execution and
informs the system of its decision. If the SRB is to be suspended, the exit routine must store
the suspend token so that the token can later be used to resume the SRB. The system takes
the action requested by the exit routine. If the SRB is suspended, the SRB remains
suspended until a subsequent RESUME macro either causes the SRB to resume execution
or purges the SRB. If the exit routine allows the SRB to continue execution, control returns
to the program that issued the SUSPEND macro.
Note: If the suspend completes successfully, the system will release any local lock that the
caller might have held.
Environment
The requirements for the caller are:
Programming Requirements
Programming requirements for the calling program are:
Before issuing the SUSPEND 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 system
2-13 Unchanged
14 Used as a work register by the system
15 Return code
Performance Implications
None.
Syntax
The standard form of the SUSPEND macro is written as follows:
SUSPEND
Parameters
The parameters are explained as follows:
SPTOKEN=sptoken addr
Specifies the address of an 8-byte location where the system is to place the suspend
token that identifies the SRB that is to be suspended.
,EXIT=exit addr
The 31-bit address of the suspend exit routine. The suspend exit routine must be
addressable in the caller's primary address space.
,EXITPARM=exitparm addr
The 31-bit address of the parameters to be passed to the suspend exit routine.
,RSCODE=rscode addr
Specifies the address of the fullword where the system is to place the resume code
optionally returned by the suspend exit routine or by the program that issued the
RESUME macro.
,RELATED=value
Specifies 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
017
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Return Codes
When the SUSPEND macro returns control to your program, GPR 15 contains a
hexadecimal return code.
Example
Suspend the execution of an SRB.
..
.
SUSPEND SPTOKEN=TOKEN,EXIT=EXITADD,RSCODE=RCODE
..
.
RCODE DS F'2'
EXITADD DC A(EXITRTN)
TOKEN DS CL8
..
.
Syntax
The list form of the SUSPEND macro is valid only for suspending an SRB. It is written as
follows:
SUSPEND
MF=L
Parameters
The parameters are explained under the standard form of the SUSPEND macro with the
following exception:
MF=L
Requests the list form of SUSPEND.
Syntax
The execute form of the SUSPEND macro is valid only for suspending an SRB. It is written
as follows:
SUSPEND
Parameters
The parameters are explained under the standard form of the SUSPEND macro with the
following exception:
,MF=(E,cntl addr)
Requests the execute form of SUSPEND. cntl addr must be the address of the
parameter list provided by the list form of the macro.
Description
Use the SVCUPDTE macro to dynamically replace or delete SVC table entries, or return the
SVC number of a routine at a specified entry point. Callers who use this service are
responsible for providing recovery. Improper deletion or replacement of system-provided
SVC routines causes unpredictable results and might terminate the system.
The resource name, SYSZSVC TABLE, is available as the operand of an ENQ or DEQ
macro, to be used when you must serialize the execution of a program that uses the
SVCUPDTE macro.
See OS/390 MVS Programming: Authorized Assembler Services Guide for additional
information about the SVCUPDTE macro.
Environment
The requirements for the caller are:
Programming Requirements
Ensure that the code for the SVC routine added to the SVC table has the correct attributes
for the type of SVC specified.
Restrictions
None.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 One of the following:
If EXTRACT is specified: The SVC number
If REPLACE or DELETE is specified: Unchanged
1-13 Unchanged
14 Used as a work register by the system
15 Return code
Performance Implications
None.
Syntax
The SVCUPDTE macro is written as follows:
SVCUPDTE
,REPLACE
,DELETE
,EXTRACT
| ,EXTRACTANY
Parameters
The parameters are explained as follows:
num
Specifies the number of the SVC that is being inserted or deleted.
,REPLACE
,DELETE
Specifies the function to be performed. REPLACE indicates that an SVC table entry is to
be inserted in the SVC table. This could be a new SVC or a replacement for an existing
SVC. DELETE indicates that the specified SVC number is to be deleted from the SVC
table.
If you issue an SVC instruction with a deleted or undefined SVC number, the program
abnormally ends with a system completion code of X'Fnn' (nn is the operand of the
SVC instruction, in hexadecimal). However, if you issue an SVCUPDTE macro using the
DELETE parameter and specify a previously deleted SVC number, no abnormal end
results.
,EXTRACT
Indicates that the user has supplied an EP or EPNAME and wishes to have the SVC
number of that routine returned in register 0. The num parameter is not valid with this
option.
| ,EXTRACTANY
| Indicates that the user has supplied an EP or EPNAME and wishes to have the SVC or
| extended SVC number of that routine returned in register 0.
| For a non-extended SVC Bit 0 of register 0 has a value of 0. Bits 24–31 contain the
| SVC number.
| For an extended SVC Bit 0 of register 0 has a value of 1. Bits 16–23 contain the ESR
| number. Bits 24–31 contain the SVC number.
,TYPE=1
,TYPE=2
,TYPE=3
,TYPE=4
,TYPE=6
Specifies the SVC type for a REPLACE request. See the topic “Programming
Conventions for SVC Routines” in OS/390 MVS Programming: Authorized Assembler
Services Guide for information concerning the characteristics and restrictions for each
type of SVC.
,EP=addr
Specifies the entry point address of the SVC routine. The addressing mode of the entry
point is defined by bit 0 of the entry point address of the SVC routine. If bit 0=1, the
SVC routine will be entered in 31-bit addressing mode; if bit 0=0, the SVC routine will be
entered in 24-bit addressing mode.
,EPNAME=entry-name
Specifies the entry name of the SVC routine. The entry name must be the load module
name or alias of a module in LPA or the entry name of a module link edited into the
nucleus. The AMODE of the SVC routine is determined when the SVC is link edited.
,LOCKS=(lname,lname,...)
Specifies the lock(s) required when the SVC routine executes. The lock(s) specified can
be CMS or LOCAL. This parameter is valid only with REPLACE.
Notes:
,APF=YES
,APF=NO
Specifies whether or not the invocation of the SVC is to be restricted to authorized
programs. This parameter is valid only with REPLACE.
,AR=YES
,AR=NO
Specifies whether or not the SVC can be issued by a program in access register mode.
If you specify NO, a program that issues the SVC while in access register mode abends
with a completion code of X‘0F8’. This parameter is valid only with REPLACE.
,NPRMPT=YES
,NPRMPT=NO
Indicates whether or not the SVC can be preempted for I/O interruptions.
,RELATED=value
Provides information to document the macro by relating the function performed to
another service or function. The format can be any valid coding value that the user
chooses.
| ,ESR=esr
| Specifies the extended SVC routing number of an extended SVC. You may supply a
| decimal number or a value in register (2) - (12). When you supply an explicit SVC
| number, the ESR parameter is only allowed with SVC numbers 109, 116, 122, and 137.
| When you provide the SVC number in a register, the ESR specification is ignored if the
| SVC number is not 109, 116, 122, or 137. This parameter is not valid with EXTRACT.
| When ESR is specified, the TYPE parameter is only used to validate other parameters,
| because each extended SVC has a predefined type that cannot be changed.
| Note: When using SVC screening with the ESR parameter, the system ignores the
| screening information associated with the ESR number itself (for example, 109).
| The system only uses screening information associated with the routing code.
| ,USEECVT=YES
| ,USEECVT=NO
| If you have verified that you are running OS/390 Release 10 or higher by checking the
| feature bits in the CVT, you may use this optional parameter to avoid some system
| processing. Specifying YES allows the system to locate the SVCUPDTE service with a
| pointer in the ECVT instead of using the NUCLKUP service. You must be running in
| AMODE 31 to use this parameter. This parameter also requires the IHAECVT mapping
| macro.
ABEND Codes
None.
Return Codes
When the SVCUPDTE macro returns control to your program, GPR 15 contains a
hexadecimal return code.
Example 1
Delete SVC 200 from the SVC table.
SVCUPDTE 222,DELETE
Example 2
Insert SVC 201 in the SVC table. This is a type 2 SVC, with entry point at location
SVCADDR. The SVC cannot be preempted for I/O interruptions.
SVCUPDTE 221,REPLACE,NPRMPT=NO,TYPE=2,EP=SVCADDR
Example 3
Replace SVC 202 in the SVC table. This is a type 1 SVC with entry point at the location in
register 2.
SVCUPDTE 222,REPLACE,TYPE=1,EP=(2)
Example 4
Replace SVC 203 in the SVC table. SVC 203 is a type 4 SVC requiring the LOCAL lock.
The routine has been loaded into LPA with the name MYSVC.
SVCUPDTE 223,REPLACE,TYPE=4,LOCKS=LOCAL,EPNAME=MYSVC
Example 5
Determine the SVC number associated with the name IGC062. The SVC number is to be
returned in register 0.
SVCUPDTE ,EXTRACT,EPNAME=IGC262
Example 6
Replace SVC 202 in the SVC table. This is a type 3 SVC with entry point at explicit location
X‘FFEC00’. Note that this example uses a symbol as the SVC number.
SVCUPDTE SVCNUM,REPLACE,TYPE=3,EP=X'FFEC22'
.
.
.
SVCNUM EQU 222
SVCUPDTE—List Form
The list form of the SVCUPDTE macro builds a nonexecutable parameter list that can be
referred to by the execute form of the SVCUPDTE macro.
Syntax
The list form of the SVCUPDTE macro is written as follows:
SVCUPDTE
Note: This parameter must be specified on the execute and the list
form of the macro. Do not specify num with EXTRACT.
,REPLACE
,DELETE
,EXTRACT
| ,EXTRACTANY
,MF=L
Parameters
The parameters are explained under the standard form of the SVCUPDTE macro with the
following exception:
,MF=L
Specifies the list form of the SVCUPDTE macro.
Example 1
Use the list form of the macro to replace SVC 202 in the SVC table. It is a type 2 SVC with
entry point at location SVCADDR. The SVC routine needs the local lock.
SVCUPDTE 222,REPLACE,TYPE=2,LOCKS=LOCAL,MF=L,EP=SVCADDR
Example 2
Use the list form of the macro to replace SVC 201 in the SVC table. The routine is a type 2
SVC.
SVCUPDTE 221,REPLACE,TYPE=2,MF=L
SVCUPDTE—Execute Form
Syntax
The execute form of the SVCUPDTE macro is written as follows:
SVCUPDTE
Parameters
The parameters are explained under the standard form of the SVCUPDTE macro with the
following exception:
,MF=(E,addr)
Specifies the execute form of the SVCUPDTE macro.
Example
Use the execute form of the SVCUPDTE macro to perform the function specified by the
parameter list whose address is given in register 2.
SVCUPDTE MF=(E,(2))
Description
The SWAREQ macro has no standard form. It only has a list, an execute, and a modify
form. The MF parameter, which indicates the form of the macro, is required.
When you invoke this macro in execute form, it uses the two parameters, FCODE and EPA,
to modify the parameter list, which is at the location you specify by the addr value in the
MF=(E,addr) parameter. After ensuring the validity of the parameters, it invokes the SWA
manager in locate mode. The SWA manager obtains its input from the parameter list, and
performs the function associated with the specified FCODE. If you do not specify any
parameters, the macro assumes the parameter list already exists, and it simply invokes the
SWA manager.
The modify form of SWAREQ is functionally the same as the execute form, except that the
macro only modifies the parameter list without invoking the SWA manager. The list form of
SWAREQ generates the parameter list that is modified by the other two forms of the macro,
and it does not invoke the SWA manager.
Environment
The requirements for the caller are:
Minimum authorization: Problem state and any PSW key; see the UNAUTH=NO parameter
description for an exception.
Dispatchable unit mode: Task
Cross memory mode: PASN=SASN=HASN; see the UNAUTH parameter description for
an exception.
AMODE: 24- or 31-bit; UNAUTH=YES requires 31-bit addressing mode.
ASC mode: Primary
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks held; see the UNAUTH parameter description for an
exception.
Control parameters: Must be in the caller's primary address space
Programming Requirements
The caller must include the following mapping macros:
IEFZB505
IEFJESCT
CVT
IEFQMIDS
If you have specified through JES parameters that SWA is to be located above 16
megabytes, you must be in 31-bit addressing mode to access SWA. See OS/390 JES2
Initialization and Tuning Guide or OS/390 JES3 Initialization and Tuning Guide for
information about locating SWA above 16 megabytes.
Restrictions
None.
Performance Implications
None.
ABEND Codes
The caller of the SWAREQ macro might receive abend code X'0B0' with one of the
following reason codes:
X'04'
X'08'
X'0C'
X'1C'
X'20'
X'24'
X'28'
X'34'
See OS/390 MVS System Codes for explanations and responses for these codes.
When you do not specify UNAUTH=YES, the return codes have the following meanings:
SWAREQ—List Form
Syntax
The list form of the SWAREQ macro is written as follows:
SWAREQ
,MF=L
Parameters
The parameters are explained as follows:
,FCODE=fncde
Specifies the function code for the locate mode request. Valid codes are:
RL Read/Locate
WL Write/Locate
For more information about the meaning of each code, see OS/390 MVS Programming:
Authorized Assembler Services Guide.
,EPA=addr
Specifies the address of the pointer to the extended parameter area (EPA). Do not
specify the EPA itself on the EPA parameter.
,MF=L
Specifies the list form of the SWAREQ macro.
SWAREQ—Execute Form
Syntax
The execute form of the SWAREQ macro is written as follows:
SWAREQ
Parameters
The parameters are explained under the list form of the SWAREQ macro, with the following
exceptions:
,UNAUTH=YES
,UNAUTH=NO
UNAUTH=YES specifies that the system is to invoke the unauthorized form of the SWA
manager. The unauthorized form of the SWA manager provides the output of the RL
function of the authorized SWA manager. If you also specify the FCODE parameter, the
SWAREQ macro checks the syntax of the FCODE parameter but does not use the
function code.
To use SWAREQ with the default of UNAUTH=NO, you must be in supervisor state,
holding no locks, in task mode, and not in cross memory mode. However, when you are
using SWAREQ to perform a Read Locate, you can override these restrictions by
specifying UNAUTH=YES. You must also issue the macro IEFZB505 LOCEPAX=YES,
which generates a longer, 28 byte, EPA.
To use SWAREQ with UNAUTH=YES, you must be in 31-bit addressing mode.
,MF=(E,addr)
E specifies the execute form of the SWAREQ macro, and addr specifies the address of
the parameter list.
SWAREQ—Modify Form
Syntax
The modify form of the SWAREQ macro is written as follows:
SWAREQ
Parameters
The parameters are explained under the list form of the SWAREQ macro, with the following
exceptions:
,MF=(M,addr)
M specifies the modify form of the SWAREQ macro, and addr specifies the address of
the parameter list.
Description
SWBTUREQ requests services for processing scheduler work block text units (SWBTUs).
The RETRIEVE service can be requested on the SWBTUREQ macro. RETRIEVE obtains
text unit information from SWBTUs for a specified set of keys and places the information in
the output area defined by the caller.
Examples of the use of SWBTUREQ RETRIEVE are the JES sysout separator page
installation exits. See the HASX15A member of SYS1.SAMPLIB for a sample exit.
For the RETRIEVE service, there are three calls that you can make:
A call to determine the local working storage size needed for the service
A call to determine the output area size needed to accommodate all the matched text
units
A call to obtain the text units that match the requested keys.
Environment
The requirements for the caller are:
Minimum authorization: Problem state, and any PSW key. For SWBTUREQ RETRIEVE,
the caller must have a PSW key that matches the key of the
caller's storage.
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: Must be in the primary address space
Programming Requirements
The caller must set up recovery for SWBTUREQ RETRIEVE. The caller must include the
CVT and IEFJESCT mapping macros. IEFSJTRP maps the storage for the required
RETRIEVE service parameter list. “SWBTUREQ RETRIEVE Input Parameters” on page 139
describes the parameter list's input fields. “SWBTUREQ RETRIEVE Output” on page 140
describes the fields that contain output on return from the SWBTUREQ RETRIEVE service.
The caller is responsible for supplying all storage for SWBTUREQ RETRIEVE processing.
You can use SWBTUREQ RETRIEVE with different combinations of parameters to
determine the local working storage size needed, and to determine and obtain the output
area size needed for a particular request. A third combination of parameters allows you to
invoke SWBTUREQ RETRIEVE to obtain text unit information. Figure 28 on page 139 lists
the required combination of parameters to use based on the type of service call you are
making.
Restrictions
None.
Performance Implications
None.
Syntax
The standard form of the SWBTUREQ macro is written as follows:
SWBTUREQ
Parameters
The parameters are explained as follows:
REQUEST=service
Specifies the SJF SWBTU service to be called. RETRIEVE is the valid service name.
,PARM=addr
Specifies the address of the parameter list for the service requested. The parameter list
for the RETRIEVE service is IEFSJTRP. “SWBTUREQ RETRIEVE Input Parameters” on
page 139 lists the parameter fields you must initialize.
SJTRID
The identifier ‘SJTR’ of the SWBTUREQ RETRIEVE parameter list. Assign the symbolic
equate SJTRCID to this field.
SJTRVERS
The current version number of the SWBTUREQ RETRIEVE service. Assign the symbolic
equate SJTRCVER to this field.
SJTRLEN
The length of the SWBTUREQ RETRIEVE parameter list (IEFSJTRP). Assign the
symbolic equate SJTRLGTH to this field.
SJTRSTOR
The local working storage pointer or zero.
SJTRSTSZ
The size of the local working storage area required by the service.
SJTRSWBN
The number of SWBTUs in the SWBTU address list table. The table is mapped by
SJTRSBTL.
SJTRSWBA
The address of the SWBTU address list table from which text units are retrieved. The
address list is mapped by SJTRSBTL.
SJTRAREA
The address of the text unit output area.
SJTRSIZE
The size of the text unit output area.
SJTRKIDN
The number of entries in the key list. The key list is mapped by SJTRKEYL.
SJTRKIDL
The address of the list of keys that are to be retrieved. The key list is mapped by
SJTRKEYL.
SJTRSBTL
SWBTU address list from which text units are returned. The list contains one entry per
SWBTU. Parameter SJTRSWBN specifies the number of entries in the list; SJTRSWBA
specifies the address of the list. More than one SWBTU may be used to represent a
single JCL statement.
SJTRSTUP
An SWBTU address entry.
SJTRKEYL
The requested list of keys to be retrieved. Parameter SJTRKIDN specifies the number of
entries in the list; SJTRKIDL specifies the address of this list.
SJTRKYID
The key to be used for the retrieve. If you are using the RETRIEVE service to
obtain information about output descriptors, the key values for the attributes are
defined in mapping macro IEFDOKEY. See OS/390 MVS Data Areas, Vol 2
(DCCB-ITZYRETC) for the mapping provided by IEFDOKEY. OS/390 MVS
Programming: Authorized Assembler Services Guide lists the dynamic output keys
and their JCL equivalents.
SJTRREAS
The reason code returned. The reason codes are defined in “Return and Reason
Codes” on page 141.
SJTRWKSZ
The local working storage size required by the SWBTUREQ service.
SJTRTULN
The size of the area needed to contain all matched requested text units.
SJTRERRP
This field contains a zero unless a parameter list error (key list or SWBTU address entry
error) occurs. In the case of a key list error (return code 8 with a reason code of 65), the
address of the key list entry in error appears in the field. In the case of a SWBTU
address entry error (return code 8 with a reason code of 19 or 28), the address of the
SWBTU address entry in error appears in the field.
SJTRAREA
The address of the text unit output area. The text unit output area contains the matched
text unit strings organized by key in the order they were requested. Matched text unit
strings are contiguous in the text unit output area. For the mapping of each text unit see
the IEFDOTUM mapping macro in OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).
SJTRKEYL
The requested key list. Parameter SJTRKIDN specifies the number of entries in the list;
SJTRKIDL specifies the address of this list.
SJTRTPAD
The address of a text unit for this key in the output area. Values are returned in this
field only if the key and text unit match. If the address is not found, this field is zero.
IEFSJTRP
Working Storage
SJTRSTOR
SJTRSBTL SJTRSTSZ Local working
storage area
The SWBUT address
list. Each entry in SJTRSWBN
this table addresses SJTRSWBA
an input SWBTU.
SJTRKEYL
On input, contains
a list of requested
keys (SJTRKYID).
On output:
on output
SJTRTPAD
ABEND Codes
None.
Figure 30 (Page 1 of 3). Return and Reason Codes for SWBTUREQ RETRIEVE
Return Code Reason Code Meaning and Action
00 None Meaning: RETRIEVE processing completed
successfully. At least one text unit and key match was
found. For any unmatched text units, the
corresponding SJTRTPAD values are zero.
Action: None.
04 None Meaning: Either the caller did not provide enough
storage for the service or none of the requested items
was found. This is the expected return code if you
issue the RETRIEVE request to obtain the working
storage size or output area size.
Figure 30 (Page 2 of 3). Return and Reason Codes for SWBTUREQ RETRIEVE
Return Code Reason Code Meaning and Action
004 Meaning: RETRIEVE requires more local working
storage. The size of the local working storage, as
specified in input parameter SJTRSTSZ, is not large
enough for the service. The amount of local working
storage needed appears in output parameter
SJTRWKSZ.
Action: Repeat the request and supply the amount of
storage returned in SJTRWKSZ in SJTRSTSZ.
008 Meaning: RETRIEVE requires more text unit output
area storage. The size needed for the output storage
area appears in output parameter SJTRTULN.
Action: Repeat the request and supply the amount of
storage returned in SJTRTULN in SJTRAREA.
064 Meaning: Successful completion. None of the keys in
the input key list were found in the SWBTUs. All
corresponding SJTRTPAD values are zero. There are
no returned text units in the output area.
Action: None required.
08 None Meaning: The parameter list is not valid.
015 Meaning: The parameter length specified in
SJTRLEN is not valid for the specified version.
016 Meaning: The version number specified is not correct
for this service.
018 Meaning: The caller must provide at least one
SWBTU. Input parameter SJTRSWBN must be
greater than zero, and SJTRSWBA must reference
the SWBTU address list.
Action: Set SJTRSWBN to a value greater than zero;
set SJTRSWBA to the address of the SWBTV
address list.
019 Meaning: The specified SWBTU is not valid. Either
one of the entries is zero, or the SWBTU address
entry is not valid. Output parameter SJTRERRP
contains the address of the SWBTU address entry.
Action: Specify a valid SWBTU referenced by the
SWBTU address is in SJTRERRP.
01A Meaning: Program error. The text length shown in the
DOCNTLEN field in the IEFDOTUM mapping macro is
not valid. SWBTUREQ RETRIEVE processing stops.
One possible cause of the problem is a storage
overlay.
Action: If your program has overlaid storage, correct
the error and rerun the program. Otherwise, contact
the appropriate IBM support personnel.
028 Meaning: Either all of the verbs for the SWBTUs or
all of the labels for the SWBTUs do not match. Output
parameter SJTRERRP contains the address of the
SWBTU address entry where the inconsistency was
found.
Action: Correct the SWBTU in the SWBTU address
table entry whose address is in SJTRERRP.
029 Meaning: The output area size, defined by the
combination of the input parameters SJTRAREA and
SJTRSIZE, is not valid. One of the parameters is zero
and the other is not zero.
Action: Set SJTRAREA and SJTSIZE to values
greater than 0. (See “SWBTUREQ RETRIEVE Input
Parameters” on page 139.)
065 Meaning: The key entry is not valid. Input parameter
SJTRKYID is zero. Output parameter SJTRERRP
contains the address of the error key entry,
SJTRKYID.
Action: Correct the key in error (the key pointed to by
SJTRKYID).
Figure 30 (Page 3 of 3). Return and Reason Codes for SWBTUREQ RETRIEVE
Return Code Reason Code Meaning and Action
066 Meaning: At least one key must be requested. Input
parameter SJTRKIDN must be greater than zero and
SJTRKIDL must reference the key entry list.
Action: Set SJTRKIDN and SJTRKIDL to values
greater than zero. (See input parameter description.)
0C None Meaning: A severe parameter list error occurred. The
reason code appears in register 0.
014 Meaning: An incorrect parameter ID was specified.
SJTRID is not ‘SJTR’.
Action: See “SWBTUREQ RETRIEVE Input
Parameters” on page 139 for SJTRID.
015 Meaning: An incorrect parameter length was
specified. SJTRLEN is not at least as large as the
common parameter list size, 36 bytes.
Action: See “SWBTUREQ RETRIEVE Input
Parameters” on page 139 for SJTRLEN.
016 Meaning: The version number is not correct.
SJTRVERS is less than one.
Action: See “SWBTUREQ RETRIEVE Input
Parameters” on page 139 for SJTRVERS.
017 Meaning: The service specified by SWBTUREQ
REQUEST=service, is not known.
Action: Specify a valid request for 'service'.
14 None Meaning: SJF encountered a condition that would
have caused an abend. If processing had continued,
an abend would have occurred.
18 None Meaning: The service routines for SWBTUREQ are
not available.
Example
Invoke the SWBTUREQ RETRIEVE service to obtain text unit information for three output
descriptor attributes (title, name, and room). Represent the output descriptor with SWBTU1
and SWBTU2. Use register 6 to contain the address of SWBTU1, and register 7 to contain
the address of SWBTU2. Use AREA to define the text unit output area. Define the service's
local working storage in LCLSTOR. Establish an ESTAE for a recovery environment.
On return, register 15 contains return code 0, register 0 contains reason code 0, and
SJTRREAS contains reason code 0. The output areas from the service contain the following
information:
SJTRAREA contains two contiguous text units that were in the SWBTUs and were
requested in the key list.
SJTRWKSZ contains the size of local working storage required for the SWBTUREQ
RETRIEVE service.
SJTRTULN contains the size of the area used to return the two matched text units.
SJTRKEYL contains unchanged SJTRKYIDs.
SJTRTPAD contains the pointers for the matched text units and zero for unmatched
text units. For this example, SJTRTPAD's first entry points to the first text unit
returned in the text unit output area. The second entry contains zero, and the third
entry points to the second text unit returned in the text unit output area.
Fill in 3 requested keys in the key list, SJTRKEYL.
XC KEYLIST,KEYLIST Initialize KEYLIST area
R2 EQU 2 Register 2
R1 EQU 1 Register 1
R2 EQU 2 Register 2
R3 EQU 3 Register 3
R4 EQU 4 Register 4
R15 EQU 15 Register 15
SWBTUNUM EQU 2 Indicates number of SWBTUs
KEYNUM EQU 3 Indicates number of requested keys
IEFDOKEY Dynamic Output keys
CVT DSECT=YES CVT mapping macro
IEFJESCT IEFJESCT mapping macro
Description
The SYNCH macro takes a synchronous exit to a processing program. After the processing
program has been executed, the program that issued the SYNCH macro regains control. The
SYNCH macro is also described in OS/390 MVS Programming: Assembler Services
Reference with the exception of the KEYADDR, STATE, KEYMASK, and XMENV
parameters. These parameters are restricted to programs in supervisor state, key 0-7, or
APF-authorized.
If you are executing in 31-bit addressing mode, you must use the MVS/SP Version 2 of this
macro, or a later version.
The SYNCH macro is intended for use by primary mode programs only. If your program runs
in access register (AR) mode, use SYNCHX, which provides the same function as SYNCH.
Descriptions of SYNCH and SYNCHX in this book are:
The standard form of the SYNCH macro, which includes general information about the
SYNCH and SYNCHX macros and some specific information about the SYNCH macro.
The syntax of the SYNCH macro is presented, and all SYNCH parameters are
explained.
The standard form of the SYNCHX macro, which presents information specific to the
SYNCHX macro and callers in AR mode.
The list form of the SYNCH and SYNCHX macros.
The execute form of the SYNCH and SYNCHX macros.
If the caller is in AR mode, the system passes the following values, unchanged, to the
processing program:
ARs 0-13
Bits 16 and 17 of the current PSW indicating the ASC mode (primary or AR mode,
where primary=secondary=home)
Extended authorization index (EAX)
Parameters for SYNCH and SYNCHX must be in the caller's primary address space. Callers
in AR mode must initialize AR 1 to zero before issuing SYNCHX.
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.
Syntax
The SYNCH macro is written as follows:
SYNCH
entry point addr entry point addr: RX-type address, or register (2) - (12) or (15).
Parameters
The parameters are explained as follows:
,RESTORE=NO
,RESTORE=YES
Specifies whether registers 2-13 are to be restored when control is returned to the
issuer of SYNCH.
,KEYADDR=addr
,KEYADDR=NOKEYADDR
addr specifies the address of a one-byte area that contains the key in which the exit is
to receive control. The key must be in bits 0-3; bits 4-7 must be zero. If KEYADDR=addr
is not specified, the key in the TCB is used as the default.
,STATE=PROB
,STATE=SUPV
Specifies the state in which the requested program receives control. PROB specifies
problem state and SUPV specifies supervisor state.
,KEYMASK=addr
Specifies the address of a halfword, which along with the protect key of the currently
active TCB, will be an operand in an OR instruction. The results of that instruction
produce the PKM of the routine to which your program will take a synchronous exit.
If you specify KEYMASK, do not specify XMENV.
,XMENV=addr
Specifies the address of a parameter list that the caller passes to the SYNCH macro
service. The parameter list contains values that set up a cross memory environment for
the new PRB. The parameter list consists of a 10-byte list of values that determine
some of the characteristics the PRB will have when it receives control. The parameter
list must reside in the primary address space and the AR that qualifies the address must
be set be set to zero. The format of the parameter list is as follows:
,AMODE=24
,AMODE=31
,AMODE=DEFINED
,AMODE=CALLER
Specifies the addressing mode in which the requested program is to receive control.
If AMODE=24 is specified, the requested program will receive control in 24-bit
addressing mode.
If AMODE=31 is specified, the requested program will receive control in 31-bit
addressing mode.
If AMODE=DEFINED is specified, the user must provide the entry point using a register,
not an RX-type address. The requested program will receive control in the addressing
mode indicated by the high-order bit of the entry point address. If the bit is off, the
requested program will receive control in 24-bit addressing mode; if the bit is set, the
requested program will receive control in 31-bit addressing mode.
If AMODE=CALLER is specified, the requested program will receive control in the
addressing mode of the caller.
Example 1
Take a synchronous exit to a processing program whose entry point address is specified in
register 8.
SYNCH (8)
Example 2
Take a synchronous exit to a processing program labeled SUBRTN and restore registers
2-13 when control is returned.
SYNCH SUBRTN,RESTORE=YES
Example 3
Take a synchronous exit to a processing program whose entry point address is specified in
register 5, modify the program's protect key by the KEYADDR and KEYMASK values, and
restore registers 2-13 when control returns.
SYNCH (5),RESTORE=YES,KEYADDR=KEYBYTE,KEYMASK=MSKADDR
.
.
.
KEYBYTE DC X'82'
MSKADDR DC X'2282'
Example 4
Take a synchronous exit to the program located at the address given in register 8 and
restore registers 2-13 when control returns. Indicate that this program is to execute in 24-bit
addressing mode.
SYNCH (8),RESTORE=YES,AMODE=24
Before you issue the SYNCHX macro, issue the SYSSTATE ASCENV=AR macro to tell the
SYNCHX macro to generate code appropriate for AR mode.
Syntax
The SYNCHX macro is written as follows:
SYNCHX
entry point addr entry point addr: RX-type address, or register (2) - (12) or (15).
Parameters
The parameters are described under the syntax of the standard form of the SYNCH macro.
Syntax
The list form of the SYNCH or SYNCHX macro is written as follows:
SYNCH or SYNCHX
,MF=L
Parameters
The parameters are explained under the standard form of the SYNCH macro with the
following exception:
,MF=L
Specifies the list form of the SYNCH macros.
Example
Use the list form of the SYNCH macro to specify that registers 2-13 are to be restored when
control returns from executing the SYNCH macro and that the addressing mode of the
program is to be defined by the high-order bit of the entry point address. Assume that the
execute form of the macro specifies the program address.
SYNCH ,RESTORE=YES,AMODE=DEFINED,MF=L
Syntax
The execute form of the macro is written as follows:
SYNCH
entry point addr entry point addr: RX-type address, or register (2) - (12) or (15).
,RESTORE=NO
,RESTORE=YES
,STATE=PROB
,STATE=SUPV
,MF=(E,ctrl addr) ctrl addr: RX-type address or register (1), (2) - (12).
Parameters
The parameters are explained under the standard form of the SYNCH macro with the
following exceptions:
,KEYADDR=NOKEYADDR
Indicates that the default(the key in the TCB) should be used instead of the key in the
parameter list defined by a list form of the macro.
,MF=(E,ctrl addr)
Specifies the execute form of the SYNCH macro using a list generated by the list form
of SYNCH.
Example
Use the execute form of the SYNCH macro to take a synchronous exit to the program
located at the address given in register 8 and restore registers 2-13 when control returns.
Indicate that the program is to receive control in the same addressing mode as the caller
and that the parameter list is located at SYNCHL2.
SYNCH (8),RESTORE=YES,AMODE=CALLER,MF=(E,SYNCHL2)
Description
The following SYSEVENTs are product-sensitive programming interfaces:
ENCASSOC
ENCSTATE
ENQHOLD
ENQRLSE
REQASCL
REQASD
REQFASD
REQSRMST
The SYSEVENT macro provides the interface to the system resource manager (SRM). Using
SYSEVENT mnemonics, you can notify SRM of an event or ask SRM to perform a specific
function.
Environment
The requirements for the ENTRY=BRANCH caller are:
All other requirements are as noted above for ENTRY=BRANCH and ENTRY=SVC.
Programming Requirements
When you specify ENTRY=BRANCH, include the CVT mapping macro as a DSECT in the
calling program. If a specific SYSEVENT requires a parameter list in addition to the
information specified on the macro invocation, load register 1 with the address of that
parameter list before issuing the macro.
When control returns to the caller, the general purpose registers (GPRs) contain:
Register Contents
0 Used as a work register by the system
1 One of the following:
Unchanged, for ENCASSOC, STGTEST, TRAXRPT, TRAXFRPT,
TRAXERPT, REQASCL, REQASD, REQFASD, REQSRMST,
ENQHOLD, and ENQRLSE SYSEVENTs
Status code for DONTSWAP, OKSWAP, and TRANSWAP
SYSEVENTs
2-13 Unchanged
14 Used as a work register by the system
15 One of the following:
Return code, for ENCASSOC, TRAXRPT, TRAXFRPT, TRAXERPT,
REQASCL, REQASD, REQFASD, and REQSRMST SYSEVENTs
Used as a work register by the system, for DONTSWAP, OKSWAP,
STGTEST, TRANSWAP, ENQHOLD, and ENQRLSE SYSEVENTs
Syntax
The SYSEVENT macro is written as follows:
SYSEVENT
,ENTRY=SVC Defaults:
ENTRY=BRANCH for the following SYSEVENTs:
ENCASSOC
ENCSTATE
TRAXERPT
TRAXFRPT
TRAXRPT
REQFASD
,ENTRY=BRANCH ENTRY=SVC for the following SYSEVENTs:
DONTSWAP OKSWAP
TRANSWAP STGTEST
REQASCL REQASD
REQSRMST ENQHOLD
ENQRLSE
Parameters
The parameters are explained as follows:
sysevent mnemonic
Identifies the SYSEVENT being requested. The valid options are:
DONTSWAP
ENCASSOC
ENCSTATE
ENQHOLD
ENQRLSE
OKSWAP
REQASCL
REQASD
REQFASD
REQSRMST
STGTEST
TRAXERPT
TRAXFRPT
TRAXRPT
TRANSWAP
,ENTRY=SVC
,ENTRY=BRANCH
Specifies the instruction used to pass control to SRM.
Only users who do not hold a lock can specify ENTRY=SVC.
Branch entry is required when the caller holds a lock. It is also the only supported entry
for TRAXERPT, TRAXFRPT, TRAXRPT, and REQFASD.
TYPE=BLOCK
TYPE=BYTE
Indicates whether SYSEVENT STGTEST is to return values that reflect either available
central and expanded storage, or available expanded storage. TYPE=BYTE requests
central and expanded storage; TYPE=BLOCK requests expanded storage.
ASID=register
ASIDL=asid
Specifies the address space identifier in ASIDL=asid, or the register containing the
address space identifier in ASID=register.
Either ASIDL or ASID is required for REQASD, REQFASD, ENQHOLD, and ENQRLSE.
SYSEVENT Mnemonics
A description of the SYSEVENTs available for use follows. These mnemonics are grouped
according to the basic function that they perform.
As of MVS/ESA SP 5.1 you should instead use the workload management services to notify
SRM of transaction start and completion times, as well as notifying SRM of transaction
delays encountered. For more information, see OS/390 MVS Programming: Workload
Management Services.
TRAXRPT
Notifies SRM that a transaction has completed and provides its start time. Register 1
must point to a serialized parameter list with the following format:
The names must be in EBCDIC format, left-justified, and padded with blanks. Note that
the subsystem name is restricted to four characters in length even though the parameter
list provides an eight-character field. Use the first four characters of the field for the
subsystem name.
TRAXFRPT
Notifies SRM that a transaction has completed and provides the elapsed time. Because
the issuer calculates the elapsed time before issuing the macro, this path is shorter than
the path for TRAXRPT. Register 1 must point to a serialized parameter list with the
following format:
Note: To map the parameter list, use the IHATRBPL mapping macro described in
OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).
The names must be in EBCDIC format, left-justified, and padded with blanks.
Note that the subsystem name is restricted to four characters in length.
TRAXERPT
Notifies SRM that a transaction has completed, provides its start time, and includes
resource utilization data for determining service consumption. Register 1 must point to a
serialized parameter list in the following format:
Note: To map the parameter list, use the IHATREPL mapping macro described in
OS/390 MVS Data Areas, Vol 2 (DCCB-ITZYRETC).
The names must be in EBCDIC format, left-justified, and padded with blanks.
Note that the subsystem name is restricted to four characters in length.
Example 1
Use the SYSEVENT TRAXRPT to report transaction data providing transaction identifiers
and the transaction start time. In the example, TRAXDESC is the name of a storage area
that is initialized with the subsystem name, transaction name, userid and class information
needed to pass to SRM.
.
.
.
Transaction begins Initialize transaction identifiers
(TRAXDESC)
STCK INITTIME Save start time
.
Process transaction
Transaction completes
LA R13,SVAREA Provide 72-byte save area
LA R1,PARMS Point to parameter area
MVC 2(8,R1),INITTIME Move in start time
MVC 8(32,R1),TRAXDESC Get subsystem name, transaction
name, userid, and class
SYSEVENT TRAXRPT
.
.
INITTIME DS D
PARMS DS 5D
SVAREA DS 18F
TRAXDESC DS CL42
Example 2
Use the SYSEVENT TRAXERPT to report transaction data, providing transaction identifiers,
start time and resource utilization data. In the example, TRAXDESC is the name of a storage
area that is initialized with the subsystem name, transaction name, userid and class
information needed to pass to SRM.
.
.
Transaction begins Initialize transaction identifiers
(TRAXDESC)
STCK INITTIME Save start time
.
Process transaction Accumulate resource utilization data
(TRAXDESC)
.
Transaction completes
LA R13,SVAREA Provide 72-byte save area
LA R1,PARMS Point to parameter area
MVC 2(8,R1),INITTIME Move in start time
MVC 8(64,R1),TRAXDESC Get subsystem name, transaction
name, user id, class, and
resource utilization data
SYSEVENT TRAXERPT
.
.
.
INITTIME DS D
PARMS DS 9D
SVAREA DS 18F
TRAXDESC DS CL72
Example 3
Use the SYSEVENT TRAXFRPT to report transaction data, providing transaction identifiers
and calculating the elapsed time. In the example, TRAXDESC is the name of a storage area
that is initialized with the subsystem name, transaction name, userid and class information
needed to pass to SRM.
.
.
Transaction begins Initialize transaction identifiers (TRAXDESC)
.
.
Process transaction Calculate elapsed time (TOTLTIME)
.
Transaction completes Calculate elapsed time (TOTLTIME)
LA R13,SVAREA Provide 72-byte save area
LA R1,PARMS Point to parameter area
MVC 2(4,R1),TOTLTIME Move in elapsed time
XC 4(4,R1),4(R1) Clear reserved field
MVC 8(32,R1),TRAXDESC Get subsystem name, transaction name,
user id, and class
SYSEVENT TRAXFRPT
.
.
.
TOTLTIME DS F
PARMS DS 5D
SVAREA DS 18F
TRAXDESC DS CL42
Control Swapping
The SYSEVENTs DONTSWAP, OKSWAP, and TRANSWAP control swapping. The choice
of mnemonic depends on the period of time for which the address space is to be
non-swappable.
For a short period of time (less than one minute), use DONTSWAP to make it
non-swappable and OKSWAP to make it swappable.
For an extended period of time (more than one minute), use TRANSWAP to make the
address space non-swappable and OKSWAP to make it swappable.
DONTSWAP
Notifies SRM that the address space from which this SYSEVENT is issued cannot be
swapped out until the system receives a matching OKSWAP for each DONTSWAP
issued or until the jobstep ends.
No input parameters are required. One of the following codes will be returned in register
1, byte 3:
Hexadecimal Meaning
Code
00 The request was honored.
04 The request was not honored because it was not for the current address
space.
08 The request was not honored because the issuer was not authorized or the
outstanding count of DONTSWAP requests had reached its maximum.
OKSWAP
Notifies SRM that the address space from which the SYSEVENT was issued can be
considered for swapping.
No input parameters are required. One of the following codes will be returned in register
1, byte 3:
Hexadecimal Meaning
Code
00 The request was honored.
04 The request was not honored because it was not for the current address
space.
08 The request was not honored because the issuer was not authorized.
TRANSWAP
Forces a swap out. After the subsequent swap-in, frames are allocated from preferred
storage and the address space is non-swappable. TRANSWAP prevents programs from
allocating frames in reconfigurable storage. If the program issuing SYSEVENT depends
on the transition to complete, you should ensure that register 1 contains the address of
an ECB. SYSEVENT will then post this ECB when it swaps out the address space. If no
dependency exists, set register 1 to 0 (zero).
One of the following codes will be returned in register 1, byte 3:
Hexadecimal Meaning
Code
00 The request was honored. If an ECB was specified, your program should issue
a WAIT macro specifying the same ECB.
04 The transition was previously done or the address space is permanently
non-swappable. If an ECB was specified it will not be posted.
If an ECB was specified, the following POST codes may occur in the last three bytes of
the ECB:
Hexadecimal Meaning
Code
000000 The transition is complete.
000004 The address space became non-swappable before it could be swapped out.
Example 1
Make the current address space non-swappable for a time period of less than one minute.
SYSEVENT DONTSWAP
.
.
.
SYSEVENT OKSWAP
Example 2
Make the current address space non-swappable for an indefinite period of time.
SYSEVENT TRANSWAP
ST 1,RETCODE
CLI TSWP_RC,2
BNE FAILED
WTO 'TSWP SUCCESSFUL'
...
B DONE
FAILED EQU
WTO 'TSWP UNSUCCESSFUL (BAD RC)'
DONE EQU
...
RETCODE DS 2F
DS CL3
TSWP_RC DS FL1
The user must supply the address of a storage area large enough to store the requested
data.
STGTEST
Returns information about the amount of storage available in the system. The purpose
of SYSEVENT STGTEST is to help an application decide whether to use an additional
| virtual storage area, such as a hiperspace. In ESA/390 mode, this information is about
| either central and expanded or only expanded storage.
| In z/Architecture mode, this information is about central storage only. The TYPE=BLOCK
| parameter is not valid in this case, because expanded storage is not supported in
| z/Architecture mode. For compatibility, STGTEST TYPE=BLOCK will return the same
| data as TYPE=BYTE in z/Architecture mode. This ensures that applications that use
| STGTEST before creating a hiperspace will not fail.
When you use this information, be aware of the dynamic nature of storage. Output of
the SYSEVENT STGTEST represents the current state of storage and does not
reserve this storage for the caller or guarantee that it will be available for use.
TYPE=BYTE
TYPE=BLOCK
| In ESA/390 mode, this parameter specifies whether the system is to provide
information about central storage and expanded storage (through TYPE=BYTE), or
expanded storage (through TYPE=BLOCK). The default is TYPE=BLOCK.
| In z/Architecture mode, TYPE=BLOCK is not valid because expanded storage is not
| supported. For compatibility, STGTEST TYPE=BLOCK and TYPE=BYTE return the
| same data in z/Architecture mode.
Register 1 must contain the address of a three-word output area where SRM is to return the
information. After SRM returns, each word contains a storage amount that represents a
specific number of frames. Before you choose a number to use as the basis for decision, be
aware of how your decision affects the performance of the system. The meaning of the
returned values is:
Use of the first number will affect system performance very little, if at all.
Use of the second number might affect system performance to some degree.
Use of the third number might substantially affect system performance.
If you base decisions on the value in the second or third word, SRM may have to take
processor storage away from other programs and replace it with auxiliary storage.
The best way to understand SRM's calculations when storage isolation is in effect is through
an example. Consider an application that issues SYSEVENT STGTEST,TYPE=BLOCK to
find out the number of expanded storage frames available. In this example, the application:
Is running in a performance group with storage isolation in effect
Currently holds 100 frames
Assume that SRM has calculates a value of 20 frames for the first word if storage isolation
were not in effect. In this example, 20 is the base number.
Figure 32 shows how SRM adjusts the base number to arrive at the value for word one.
Note how SRM takes into account the boundaries that are set on the PWSS keyword. In
calculating a value, SRM might add to the base number to match the PWSS minimum
number of frames. On the other hand, SRM might subtract from the base number to match
the PWSS maximum number of frames.
SRM adjusts the values for word two for storage isolation in the same way it adjusts word
one, as described in Figure 32.
SRM does not directly consider storage isolation in calculating word three. However,
because the value of word two determines the value of word three, the value SRM returns
for word three indirectly reflects storage isolation.
If the example in Figure 32 on page 162 was for a TYPE=BYTE request, the effect of
storage isolation would be exactly the same. However, because the base number would
have reflected both expanded and central storage, the base number would probably have
been greater than 20.
See OS/390 MVS Initialization and Tuning Guide if you want more information about:
The syntax of the PWSS keyword in IEAIPSxx
Storage isolation
Example
An application needs a standard hiperspace. Before it makes the request, the application
uses SYSEVENT STGTEST to find out how much expanded storage is available. The values
that SRM returns determine how large a hiperspace the application will create.
The application will base its decision on the numbers in the first and second words of the
output area.
The user must supply the address of a storage area large enough to hold the requested
data.
REQASCL
Returns classification information about an address space.
Both return the same kind of information. REQFASD is quicker; it does not serialize data
collection, and does not provide recovery of its own. The user must provide the recovery for
REQFASD.
The user must supply the address of a storage area large enough to hold the requested
data.
REQASD
Returns workload activity information about an address space.
REQFASD
Returns the same information as REQASD, but is a fast path SYSEVENT, with no
recovery of its own.
The names are in EBCDIC format, left-justified, and padded with blanks.
For REQFASD, register 13 must point to a workarea. The workarea must be addressable via
the caller's primary address space. The workarea must be the length in the RQFASDWA
field which is defined in the IRARASD mapping.
If you issue the ENQHOLD SYSEVENT, you are responsible for issuing a corresponding
ENQRLSE SYSEVENT when the holder has released the resource.
There are some considerations to be aware of when using enclaves for tasks that serialize
on resources using the ENQ macro or the latch manager callable services. A task cannot
change its transaction status, that is, cannot join or leave an enclave, while holding a
resource using ENQ or the latch manager. Otherwise, enqueue promotion processing may
not work properly. The recommended sequence is:
Join an enclave (through IWMEJOIN, IWMSTBGN, or SYSEVENT ENCASSOC).
Obtain resource with ENQ or latch manager.
Process using serialized resource.
Release resource.
Leave an enclave (through IWMELEAV, IWMSTEND, or SYSEVENT ENCASSOC).
Access register (AR) 0 and 1 must contain the enclave token whose state you are setting.
Description
The TTOKEN is the 16-byte identifier of a task. Unlike a TCB address, each TTOKEN is
unique within the IPL; the system does not reassign this same identifier to any other TCB.
The TCBTOKEN macro provides five mutually exclusive services depending on how you
specify the TYPE parameter:
TYPE=TOTTOKEN gives you the TTOKEN for the task associated with a specified TCB
address.
TYPE=TOTCB gives you the TCB address for a specified TTOKEN.
TYPE=CURRENT gives you the TTOKEN for the current task.
TYPE=PARENT gives you the TTOKEN for the task that attached the current task.
TYPE=JOBSTEP gives you the TTOKEN for the job step task.
Environment
The requirements for the caller are:
Programming Requirements
None.
Restrictions
None.
Register Information
After the caller issues the macro, the macro might use some registers as work registers or
might change the contents of some registers. When the macro 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, 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
When control returns to the caller, the access registers (ARs) contain:
Register Contents
0-1 Used as work registers by the macro
2-13 Unchanged
14-15 Used as work registers by the macro
Performance Implications
None.
Syntax
The standard form of the TCBTOKEN macro is written as follows:
TCBTOKEN
TYPE=TOTTOKEN Note: See the table following this diagram for information on
parameter usage with TYPE.
TYPE=TOTCB
TYPE=CURRENT
TYPE=PARENT
TYPE=JOBSTEP
The following table shows how the parameters may be specified with the TYPE keywords.
Parameters
The parameters are explained as follows:
TYPE=TOTTOKEN
TYPE=TOTCB
TYPE=CURRENT
TYPE=PARENT
TYPE=JOBSTEP
Specifies the type of TCB information requested, as follows:
TOTTOKEN The system returns the TTOKEN of the task whose TCB address is
specified in the TCB parameter. The TTOKEN is returned at the
address specified by the TTOKEN parameter.
TOTCB The system returns the TCB address for the task whose TTOKEN is
specified in the TTOKEN parameter. The TCB address is returned at
the address specified by the TCB parameter.
CURRENT The system returns the TTOKEN of the currently active task. The
TTOKEN is returned at the address specified by the TTOKEN
parameter.
PARENT The system returns the TTOKEN of the task that attached the
currently active task. The TTOKEN is returned at the address specified
by the TTOKEN parameter.
JOBSTEP The system returns the TTOKEN of the job step task for the address
space in which the currently active task is running. The TTOKEN is
returned at the address specified by the TTOKEN parameter.
,TCB=tcb addr
Specifies the TCB address. For TYPE=TOTTOKEN, tcb addr contains the TCB address
that is to be translated to a TTOKEN. For TYPE=TOTCB, tcb addr points to a fullword
where the system returns the TCB address for the task whose TTOKEN is specified by
the TTOKEN parameter.
,TTOKEN=ttoken addr
Specifies the address of the 16-byte TTOKEN. For TYPE=TOTTOKEN,
TYPE=CURRENT, TYPE=PARENT, and TYPE=JOBSTEP, ttoken addr is the address at
which the TTOKEN associated with the specified TCB is returned. For TYPE=TOTCB,
ttoken addr is the address of the TTOKEN for the task whose TCB address is to be
obtained.
,ASCB=ascb addr
,STOKEN=stoken addr
Identifies the address space of the TCB. ASCB specifies the address of the fullword
containing the ASCB address. STOKEN specifies the address of the 8-byte STOKEN
that identifies the address space in which the TCB resides. If you do not specify either
ASCB or STOKEN, TCBTOKEN uses the home address space by 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 are at the discretion of the user and may be any valid coding values.
Abend Codes
None.
Return Codes
When TCBTOKEN returns control, register 15 contains one of the following hexadecimal
return codes:
Note: Return codes 04, 08, 0C, 1C, and 2C are valid only with TYPE=TOTTOKEN and
TYPE=TOTCB.
Example 1
Obtain the TTOKEN for the task whose TCB address is specified in THEIR_TCB. The task
resides in the address space whose ASCB address is specified in register 4. Store the
returned TTOKEN in THEIR_TOKEN.
TCBTOKEN TYPE=TOTTOKEN,TCB=THEIR_TCB,TTOKEN=THEIR_TTOKEN,ASCB=(4)
Example 2
Obtain the TTOKEN for the currently active task and store it in CURRENT_TTOKEN.
TCBTOKEN TYPE=CURRENT,TTOKEN=CURRENT_TTOKEN
Example 3
Obtain the TCB address of the job step TCB and store it in JOBSTEP_TCB_ADDR.
TCBTOKEN TYPE=JOBSTEP,TTOKEN=JOBSTEP_TTOKEN
TCBTOKEN TYPE=TOTCB,TTOKEN=JOBSTEP_TTOKEN,TCB=JOBSTEP_TCB_ADDR
TCBTOKEN—List Form
Use the list form of the TCBTOKEN 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 that the execute form of the macro uses to store the parameters.
Syntax
The list form of the TCBTOKEN macro is written as follows:
TCBTOKEN
,MF=L
Parameters
The parameters are explained 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 coding values.
,MF=L
Specifies the list form of the TCBTOKEN macro.
TCBTOKEN—Execute Form
Use the execute form of the TCBTOKEN 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 TCBTOKEN macro is written as follows:
TCBTOKEN
TYPE=TOTTOKEN Note: See the table following this diagram for information on
parameter usage with TYPE.
TYPE=TOTCB
TYPE=CURRENT
TYPE=PARENT
TYPE=JOBSTEP
Parameters
The parameters are the same as those for the standard form of the TCBTOKEN macro with
the following addition:
,MF=(E,cntl addr)
Specifies the execute form of the TCBTOKEN macro. This form uses a remote
parameter list. The cntl addr specifies the address of the remote parameter list that the
list form of the macro generates.
Description
The TCTL (transfer control) macro allows an SRB routine to exit from its processing and to
pass control directly to a task.
Environment
Requirements for the caller are:
Programming Requirements
The caller must include the following mapping macros:
IHAPSA
CVT with DSECT=YES
Restrictions
None.
Performance Implications
None.
Syntax
The TCTL macro is coded as follows:
TCTL
Parameters
The parameters are explained as follows:
TCB=(4)
TCB=tcbaddr
Specifies the task designated for dispatching. Register 4 is the default; if you use the
default, you must ensure that register 4 contains the appropriate TCB address.
Note: The TCB resides in storage below 16 megabytes.
ABEND Codes
070
See OS/390 MVS System Codes for an explanation and programmer responses for this
code.
Example
From SRB mode processing, terminate the SRB and give control to the task specified in
register 4.
TCTL TCB=(4)
Description
The TESTAUTH macro is used on behalf of a privileged or sensitive function to verify that its
caller is appropriately authorized.
TESTAUTH supports the authorized program facility (APF) - a facility that permits the
identification of programs that are authorized to use restricted functions. In addition,
TESTAUTH provides the capability for testing for system key 0-7 and supervisor state. An
EUT FRR may not be in force for a caller using BRANCH=NO.
Environment
The requirements for the caller are:
BRANCH=NO entry
Programming Requirements
None.
BRANCH=YES entry
Programming Requirements
Callers must include the CVT mapping macro.
Performance Implications
None.
Syntax
The TESTAUTH macro is written as follows:
TESTAUTH
,BRANCH=YES
Parameters
The parameters are explained as follows:
FCTN=fctn
Specifies the authorization of a program to be checked through APF.
FCTN=0 specifies that APF-authorization is not checked.
FCTN=1 specifies that APF-authorization is checked.
,STATE=NO
,STATE=YES
Specifies whether or not (YES or NO) a check is to be made for supervisor/problem
program state. (Supervisor state is authorized, problem program state is not authorized.)
,KEY=NO
,KEY=YES
Specifies whether or not (YES or NO) a check is to be made of the protection keys.
(Protection keys 0-7 are authorized, protection keys 8-15 are not authorized.)
Note: TESTAUTH is used to test one or more of three conditions: FCTN, STATE, or KEY.
If any of the requested conditions are tested favorably, a return code of zero is
returned in register 15. If all of the requested conditions are tested unfavorably, the
return code is set to 4.
,RBLEVEL=2
,RBLEVEL=1
Specifies whether the TESTAUTH caller is a type 2, 3, or 4 SVC (RBLEVEL=2) or a
type 1 SVC (RBLEVEL=1). If the TESTAUTH caller is not an SVC, specify RBLEVEL=1.
Specify RBLEVEL only if you also specify KEY and/or STATE; otherwise RBLEVEL is
ignored.
,BRANCH=NO
,BRANCH=YES
Specifies a branch entry (YES) or an SVC entry (NO). If BRANCH=YES is specified,
registers 2 and 3 are modified by the TESTAUTH routine. Only SVC routines can use
BRANCH=YES.
ABEND Codes
None.
Return Codes
When control is returned, register 15 contains one of the following hexadecimal return codes:
Example 1
Test jobstep for APF authorization.
TESTAUTH FCTN=1
Example 2
Test for APF authorization and supervisor state and do not check protection keys.
TESTAUTH STATE=YES,KEY=NO,FCTN=1
Description
The TIMEUSED macro returns an 8-byte hexadecimal number in a doubleword storage area
that you specify. The number is the total CPU or vector time used by the current TCB or
SRB up until you issue the macro. The format of the number is time-of-day (TOD) clock or
microseconds time format.
If you use the SRBSTAT save and restore services, the number includes the interval
between dispatch and save and between restore and TIMEUSED. It does not include the
interval between save and restore. If you have not yet issued restore, the number includes
only the interval between save and TIMEUSED.
Environment
The requirements for the caller are:
Minimum authorization: Supervisor state and PSW key 0 when you specify
LINKAGE=BRANCH. Supervisor or problem state and any PSW
key when you specify LINKAGE=SYSTEM.
Dispatchable unit mode: Task or SRB when LINKAGE=BRANCH. Task when
LINKAGE=SYSTEM.
Cross memory mode: PASN=HASN=SASN or PASN¬=HASN¬=SASN
AMODE: 31-bit
ASC mode: Primary or secondary when LINKAGE=BRANCH. Primary or AR
(access register) when LINKAGE=SYSTEM.
Interrupt status: Enabled for I/O and external interrupts
Locks: No locks held
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.
Performance Implications
None.
Syntax
The TIMEUSED macro is written as follows:
TIMEUSED
Parameters
The parameters are explained as follows:
STORADR=addr
Specifies the 31-bit address of a doubleword area where the accumulated CPU or
vector time is returned. The time interval is represented as an unsigned 64-bit binary
number. If you specify CPU=TOD or VECTOR=TOD, bit 51 is the low-order bit of the
interval value and equivalent to 1 microsecond. If you specify CPU=MIC or
VECTOR=MIC, bit 63 is the low-order bit of the interval value and equivalent to 1
microsecond.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of linkage used in TIMEUSED processing. LINKAGE=BRANCH
indicates branch entry. You may specify or default to LINKAGE=BRANCH if you are a
key zero supervisor state program running under a TCB or SRB. LINKAGE=SYSTEM
indicates the linkage is by nonbranch entry.
,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.
,CPU=TOD
,CPU=MIC
,VECTOR=TOD
,VECTOR=MIC
Specifies that TIMEUSED should return the total CPU or vector time in either TOD clock
format (CPU=TOD or VECTOR=TOD) or in microseconds (CPU=MIC or VECTOR=MIC).
You may specify CPU=MIC or VECTOR only if LINKAGE=SYSTEM.
Return Codes
When control returns to the caller, GPR 15 contains one of the following hexadecimal return
codes.
Example 1
Using the unauthorized TIMEUSED service, request the total CPU time in TOD clock format
to be stored at the address in register 2.
TIMEUSED STORADR=(2),LINKAGE=SYSTEM,CPU=TOD
Example 2
Using the unauthorized TIMEUSED service in task mode, request the total vector time in
microseconds to be stored at the address in register 2.
TIMEUSED STORADR=(2),LINKAGE=SYSTEM,VECTOR=MIC
Example 3
Using the authorized TIMEUSED service, request the total CPU time in TOD clock format to
be stored at the address in register 2.
TIMEUSED STORADR=(2),LINKAGE=BRANCH
Description
The T6EXIT macro returns control from a type 6 SVC. This exit macro can only be used in a
type 6 SVC routine.
Environment
The requirements for the caller are:
Programming Requirements
The caller must include the CVT mapping macro with DSECT=YES specified.
Restrictions
None.
Performance Implications
None.
Syntax
The T6EXIT macro is written as follows:
T6EXIT
RETURN=DISPATCH
RETURN=SRB
Parameter
The explanation of the RETURN parameter is as follows:
RETURN
Specifies how the type 6 SVC has chosen to exit, which is one of the following:
CALLER specifies that the return is directly to the caller or issuer of the SVC. The
contents of GPRs 0, 1, and 15 at the time of the T6EXIT are returned to the issuer
of the SVC. CALLER is the default return option.
DISPATCH specifies that the return should be to the system to dispatch other work.
This function is for the use of routines that have suspended the current task. When
the task resumes, the issuer of the type 6 SVC receives control at the instruction
after the SVC.
SRB specifies that the system should immediately dispatch an SRB. This SRB
must:
– Be initialized by the type 6 SVC.
– Be pointed to by register 1.
– Run in the same address space as the SVC. The SRB has the same format as
an SRB dispatched through the SCHEDULE macro.
ABEND Codes
None.
Example
Terminate type 6 SVC processing and return control from the type 6 SVC to the caller of the
SVC.
T6EXIT RETURN=CALLER
Description
Use the UCBINFO macro to obtain information from a unit control block (UCB) for a
specified device. The UCBINFO macro provides the following options:
DEVCOUNT Returns a count of the UCBs for a device class or device group.
DEVINFO Returns information about a device, specifically, why the device is offline.
For the base UCB of a &pav., DEVINFO returns the number of alias UCBs
that are defined and the number that are usable.
PATHINFO Returns information about the device path and type of channel path
associated with the device.
PATHMAP Returns information about the device path.
PRFXDATA Obtains a copy of the UCB prefix extension segment.
PAVINFO Returns information about the alias UCBs for a parallel access volume.
The options of the UCBINFO macro have the same environmental specifications,
programming requirements, restrictions, register information, and performance implications
described below, except where noted in the explanations of each option.
Environment
The requirements for the caller are:
Programming Requirements
Before issuing the UCBINFO macro, you can issue the UCBSCAN macro to obtain either the
UCBPTR or the device number, which you must provide as input to UCBINFO. Authorized
callers must serialize (such as through pinning) the device against dynamic deletions when
specifying any of the following:
DEVINFO with the UCBPTR parameter
PATHINFO with the UCBPTR parameter
PATHMAP with the UCB pointer in the MAPAREA field.
PRFXDATA with the UCBPTR parameter
PAVINFO with the UCBPTR parameter
See OS/390 MVS Programming: Authorized Assembler Services Guide for information about
accessing and pinning UCBs.
The caller must include the appropriate mapping macro for the UCBINFO option being used:
Option Mapping Macro
DEVCOUNT None
DEVINFO IOSDDEVI mapping macro
PATHINFO IOSDPATH mapping macro
PATHMAP IOSDMAP mapping macro
PRFXDATA IOSDUPI mapping macro
PAVINFO IOSDPAVA mapping macro
Restrictions
None.
Performance Implications
None.
UCBINFO DEVCOUNT
Use the UCBINFO DEVCOUNT macro to obtain a count of the UCBs for a device class.
Syntax
The standard form of the DEVCOUNT option of the UCBINFO macro is written as follows:
UCBINFO
DEVCOUNT
,GROUP=DEVICELASS
,GROUP=OTHER
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
DEVCOUNT
Specifies that the system is to return a count of the UCBs.
,COUNT=count addr
Specifies the address of the fullword field that is to receive the count.
,GROUP=DEVICECLASS
GROUP specifies the grouping upon which the UCB count is based.
DEVICECLASS indicates that the UCB count is based on device classes.
,DEVICECLASS=ALL|CHAR|COMM|CTC|DASD|DISP|TAPE|UREC
Specifies the device class for which the corresponding UCBs are to be counted:
,GROUP=OTHER
GROUP specifies the grouping upon which the UCB count is based.
OTHER indicates that the UCB count is not based on device classes.
,DEVGROUP=PAVBASE
,DEVGROUP=PAVALIAS
Specifies the device group for which the corresponding UCBs are to be counted.
PAVBASE, counts UCBs for Parallel Access Volume (PAV) base UCBs.
PAVALIAS, counts UCBs for Parallel Access Volume (PAV) alias UCBs.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference . If
the I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 2.
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Hexadecimal Hexadecimal
Return Code Reason Code Meaning and Action
00 None Meaning: The DEVCOUNT function completed successfully.
Action: None.
08 01 Meaning: Program error. A caller in AR mode specified an ALET
that was not valid.
Action: Correct the ALET and reissue the macro.
08 02 Meaning: Program error. The system could not access the caller's
parameter list.
Action: Check to see if your program inadvertently overlaid the
parameter list generated by the macro.
08 03 Meaning: Program error. The UCB address provided by the caller
does not represent a valid UCB.
Action: Correct the UCB address and reissue the macro.
08 05 Meaning: Program error. An error occurred when the system
referenced the caller-supplied area specified in the IOCTOKEN
parameter. This reason code is valid only for callers using the
IOCTOKEN parameter.
Action: Correct the IOCTOKEN parameter.
0C None Meaning: Environmental error. The I/O configuration token
supplied through the IOCTOKEN parameter is not current. This
return code is valid only for callers using the IOCTOKEN
parameter.
Action: Obtain the current I/O configuration token by issuing an
IOCINFO macro or by setting the input IOCTOKEN parameter in
the UCBINFO macro to zero.
20 None Meaning: System error. An unexpected error occurred.
Action: Supply the return code to the appropriate IBM support
personnel.
Example
To invoke UCBINFO to return a count of all DASD devices, code:
UCBINFO DEVCOUNT,COUNT=CTAREA,DEVCLASS=DASD, X
RETCODE=INFORTCD,RSNCODE=RSNCD
.
.
.
DS 2D
CTAREA DS F
INFORTCD DS F
RSNCD DS F
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the DEVCOUNT option of the UCBINFO macro is written as follows:
UCBINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO DEVCOUNT with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO DEVCOUNT 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.
The execute form of the DEVCOUNT option of the UCBINFO macro is written as follows:
UCBINFO
DEVCOUNT
,GROUP=DEVICELASS
,GROUP=OTHER
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO DEVCOUNT with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO DEVCOUNT macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
UCBINFO DEVINFO
Use the UCBINFO DEVINFO macro to obtain information about a device, specifically,
reasons why the device is offline.
Syntax
The standard form of the DEVINFO option of the UCBINFO macro is written as follows:
UCBINFO
DEVINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
DEVINFO
Specifies that the system is to return information about the specified UCB.
,DEVIAREA=deviarea addr
Specifies the address of a required 256-byte output field into which the system is to
return information about the specified UCB. This field is mapped by the mapping macro
IOSDDEVI.
,DEVN=devn addr
Specifies the address of a halfword that contains, in binary form, the device number of
the device. The DEVN and UCBPTR parameters are mutually exclusive.
,UCBPTR=ucbptr
Specifies that address of a fullword that contains the address of the UCB common
segment. The DEVN and UCBPTR parameters are mutually exclusive.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If the
I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 2
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Example
To invoke UCBINFO to return device information, code:
UCBINFO DEVINFO,DEVIAREA=INFOAREA,DEVN=DEVNUM, X
RETCODE=INFORTCD
.
.
.
DS 2D
INFOAREA DS CL256
INFORTCD DS F
DEVNUM DS H
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the DEVINFO option of the UCBINFO macro is written as follows:
UCBINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO DEVINFO with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO DEVINFO 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.
The execute form of the DEVINFO option of the UCBINFO macro is written as follows:
UCBINFO
DEVINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO DEVINFO with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO DEVINFO macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
UCBINFO PATHINFO
Use the UCBINFO PATHINFO macro to obtain information about the device path and type of
channel path associated with the device.
Syntax
The standard form of the PATHINFO option of the UCBINFO macro is written as follows:
UCBINFO
PATHINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
PATHINFO
Specifies that the system is to return information about the device path and type of
channel path for the specified UCB.
,PATHAREA=patharea addr
Specifies the address of the required 256-byte output field into which the system is to
return information about the device path and type of channel path for the specified UCB.
This field is mapped by the mapping macro IOSDPATH.
,DEVN=devn addr
Specifies the address of a halfword that contains, in binary form, the device number of
the device.
,UCBPTR=ucbptr
Specifies the address of a fullword that contains the address of the UCB common
segment. The caller can obtain the address of the UCB common segment by a
UCBPTR parameter on a UCBLOOK macro.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If
the I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 2
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Example
To invoke UCBINFO to return device path and type of channel path information, code:
UCBINFO PATHINFO,PATHAREA=INFOAREA,DEVN=DEVNUM, X
RETCODE=INFORTCD
.
.
.
DS 2D
INFOAREA DS CL256
INFORTCD DS F
DEVNUM DS H
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the PATHINFO option of the UCBINFO macro is written as follows:
UCBINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO PATHINFO with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO PATHINFO 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.
The execute form of the PATHINFO option of the UCBINFO macro is written as follows:
UCBINFO
PATHINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO PATHINFO with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO PATHINFO macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
UCBINFO PATHMAP
Use the UCBINFO PATHMAP macro to obtain information about the device path.
Syntax
The standard form of the PATHMAP option of the UCBINFO macro is written as follows:
UCBINFO
PATHMAP
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
PATHMAP
Specifies that the system is to return information about the device path for the specified
UCB.
,MAPAREA=maparea addr
Specifies a required 40-byte field into which the system is to return information about the
device path for the specified UCB. This field is mapped by the mapping macro
IOSDMAP.
,DEVN=devn addr
,DEVN=NONE
Specifies the address of a halfword that contains, in binary form, the device number of
the device.
If the caller does not specify an address on the DEVN parameter, or specifies
DEVN=NONE, the caller must place the address of the UCB common segment into the
fullword field within the MAPAREA DSECT that is assigned the name MAPUCB by
mapping macro IOSDMAP. See OS/390 MVS Programming: Authorized Assembler
Services Guide for information about using UCBSCAN to obtain the address of the UCB.
If the caller codes the DEVN parameter, the MAPUCB field contains hexadecimal zeros
when control returns to the caller.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If
the I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 2
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Example
To invoke UCBINFO to return device path information, code:
UCBINFO PATHMAP,MAPAREA=INFOAREA,DEVN=DEVNUM, X
RETCODE=INFORTCD
.
.
.
DS 2D
INFOAREA DS CL256
INFORTCD DS F
DEVNUM DS H
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the PATHMAP option of the UCBINFO macro is written as follows:
UCBINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO PATHMAP with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO PATHMAP 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.
The execute form of the PATHMAP option of the UCBINFO macro is written as follows:
UCBINFO
PATHMAP
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO PATHMAP macro
with the following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO PATHMAP macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
UCBINFO PAVINFO
| Use the UCBINFO PAVINFO macro to obtain selected information applicable to each
| exposure (base and alias) of a Parallel Access Volume (PAV).
Syntax
The standard form of the PAVINFO option of the UCBINFO macro is written as follows:
UCBINFO
PAVINFO
PAVINFOSUM=NO Default: NO
PAVINFOSUM=YES
,PAVLEN=pavarea length pavarea lenth addr: RX-type address or register (2) - (12).
addr
,SCHINFO=NO Default: NO
,SCHINFO=YES
,LINKAGE=BRANCH
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
| PAVINFO
| Obtain selected information that applies to each exposure of a Parallel Access Volume
| (PAV) device. The data returned by this function is an array. Depending on the input
| device, the following is returned:
| When the input device is a PAV-base, the first array entry represents the base and
| each subsequent array entry represents each of the bound PAV-alias devices
| associated with the base. Note that if the base has no bound PAV-aliases, then
| only the first array entry is filled in.
| When the input is a non-PAV DASD device, only the first array entry is filled in.
| When the input device is a PAV-alias or a non-DASD, a non-zero return code is
| returned.
PAVINFOSUM=NO
PAVINFOSUM=YES
Specifies whether to retrieve only a sum of channel measurement data and model
dependent subchannel data for the base device and all of its aliases.
Note: The model dependent subchannel data is only retrieved if SCHINFO=YES.
YES Retrieve only a sum of channel measurement data and model dependent
subchannel data for the base device and all of its aliases. This option
causes the first element of the PAVA array to contain information on the
base device, however, the PAVACMB and PAVASMDB fields will contain
totals for the base and all of its aliases.
,PAVAREA=pavarea addr
Specifies the address of a required output field into which the system will return
information about the alias UCBs for the specified base device number or base UCB
address. This field is mapped by the mapping macro IOSDPAVA.
,PAVLEN=pavarea lengthaddr
Specifies the address or a register containing the length of the area specified by the
PAVAREA parameter.
,SCHINFO=NO
,SCHINFO=YES
Specifies whether to retrieve model-dependent subchannel data for the device.
,DEVN=devn addr
Specifies the address of a halfword that contains the base device number in binary form.
The DEVN and UCBPTR parameters are mutually exclusive.
,UCBPTR=ucbptr
Specifies the address of a fullword that contains the address of the UCB common
segment. The DEVN and UCBPTR parameters are mutually exclusive.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If
the I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value in the range of 1 - 3.
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Example
To invoke UCBINFO to return information about alias UCBs for a base device number, code:
UCBINFO PAVINFO,DEVN=DEVNUM,PAVAREA=INFOAREA,PAVLEN=AREALEN, X
RETCODE=INFORTCD
.
.
.
DS 2D
DEVNUM DS H
INFOAREA DS CL256
AREALEN DS F
INFORTCD DS F
To invoke UCBINFO to return information about alias UCBs for a base UCB, code:
UCBINFO PAVINFO,UCBPTR=UCBP,PAVAREA=INFOAREA,PAVLEN=AREALEN, X
RETCODE=INFORTCD
.
.
.
DS 2D
UCBP DS A
INFOAREA DS CL256
AREALEN DS F
INFORTCD DS F
The list form of the PAVINFO option of the UCBINFO macro is written as follows:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO PAVINFO with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO PAVINFO 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
X'0D', which forces the parameter list to a doubleword boundary.
The execute form of the PAVINFO option of the UCBINFO macro is written as follows:
PAVINFO
PAVINFOSUM=NO Default: NO
PAVINFOSUM=YES
,PAVLEN=pavarea length pavarea lenth addr: RX-type address or register (2) - (12).
addr
,SCHINFO=NO Default: NO
,SCHINFO=YES
,LINKAGE=BRANCH
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO PAVINFO with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO PAVINFO macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
UCBINFO PRFXDATA
Use the UCBINFO PRFXDATA macro to obtain a copy of the UCB prefix extension segment.
Syntax
The standard form of the PRFXDATA option of the UCBINFO macro is written as follows:
UCBINFO
PRFXDATA
,PLISTVER=IMPLIED_VERSION
Parameters
The parameters are explained as follows:
PRFXDATA
Specifies that the system is to obtain information from the UCB prefix extension
segment.
,DEVN=devn addr
Specifies the address of a halfword that contains, in binary form, the device number of
the device.
,UCBPTR=ucbptr addr
Specifies the address of a fullword that contains the address of the UCB common
segment. The caller can obtain the address of the UCB common segment by a
UCBPTR parameter on a UCBLOOK macro.
,UCBPAREA=ucbparea addr
Specifies the address of a 48-character storage area into which the system copies the
UCB prefix extension segment. The IOSDUPI mapping macro maps the area.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If
the I/O configuration token that is current when UCBINFO is invoked does not match the
token whose address is supplied here, the system issues a return code to the caller.
If you set the input IOCTOKEN (specified by ioctoken addr) to binary zeros, UCBINFO
sets IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
list-form parameter list is always long enough to hold all the parameters you might
specify on the execute form; in this way, MAX ensures that the parameter list does
not overwrite nearby storage.
2, if you use the currently available parameters.
IMPLIED_VERSION
MAX
A decimal value of 2
,RETCODE=retcode addr
Specifies the address of a fullword field into which the system copies the return code
from GPR 15.
,RSNCODE=rsncode addr
Specifies the address of a fullword field into which the system copies the reason code
from GPR 0.
Example
To invoke UCBINFO to obtain a copy of the UCB prefix extension segment, code:
UCBINFO PRFXDATA,DEVN=DEVNUM,UCBPAREA=UAREA, X
RETCODE=INFORTCD
.
.
.
DS 2D
DEVNUM DS H
UAREA DS CL48
INFORTCD DS F
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the PRFXDATA option of the UCBINFO macro is written as follows:
UCBINFO
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of UCBINFO PRFXDATA with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBINFO PRFXDATA 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.
The execute form of the PRFXDATA option of the UCBINFO macro is written as follows:
UCBINFO
PRFXDATA
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
,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 UCBINFO PRFXDATA with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBINFO PRFXDATA macro.
list addr specifies the area that the system uses to contain the parameters.
COMPLETE, which is the default, specifies that the macro is to check for required
parameters and supply defaults for omitted optional parameters.
Description
The UCBLOOK macro obtains the address of the following for a given device number or
volume serial number:
The UCB common segment
The UCB common extension segment
The UCB prefix extension segment
The input device number may be specified as binary or EBCDIC, and may be a 3-digit or
4-digit number.
You can use UCBLOOK to locate any UCB segment, including a segment for a dynamic
UCB. The caller must pin the UCB by means of the PIN parameter unless one of the
following is true:
The caller is running in an environment where dynamic I/O configuration changes cannot
occur.
The caller can otherwise guarantee that the UCB will not be deleted.
After the system returns the address of the UCB segment, and the caller is done processing
the UCB, the caller must unpin the UCB. The caller can unpin the UCB by using the
UCBPIN macro with the UNPIN parameter.
Note: The caller can optionally restrict the search to UCBs that are static and
installation-static, have 3 digit device numbers, or are below 16 megabytes.
Environment
The requirements for the caller are:
Programming Requirements
If in AR mode, specify SYSSTATE ASCENV=AR before invoking the macro.
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
Performance Implications
None.
Syntax
The standard form of the UCBLOOK macro is written as follows:
UCBLOOK
,PIN
,NOPIN Note: TEXT and PTOKEN are required with PIN and are not valid
with NOPIN.
,UNBOUND_ALIAS=NO Default: NO
,UNBOUND_ALIAS=YES
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained as follows:
DEVN=devn addr
DEVNCHAR=devnchar addr
VOLSER=volser addr
Specifies the address of an input field that identifies the device whose UCB address is
to be obtained.
DEVN specifies the address of a halfword that contains, in binary form, the device
number of the device whose UCB address is to be obtained.
DEVNCHAR specifies the address of a 4-character field that contains, in EBCDIC, the
device number of the device whose UCB address is to be obtained.
Note: A 3-digit device number can be represented as either ' ddd' or '0ddd' where ddd
is the device number.
VOLSER specifies the address of a 6-character field that contains, in EBCDIC, the
volume serial number of the device whose UCB address is to be obtained.
,UCBPTR=ucbptr addr
Specifies the address of a fullword field in which the address of the UCB common
segment associated with the requested device (DEVN, DEVNCHAR, or VOLSER) will be
returned.
,UCBCXPTR=ucbcxptr addr
Specifies the address of a fullword field in which the system returns the address of the
UCB common extension segment associated with the specified device (DEVN,
DEVNCHAR, or VOLSER). Use the IEFUCBOB mapping macro to map the UCB
common extension segment.
,UCBPXPTR=ucbpxptr addr
Specifies the address of a fullword field in which the system returns the address of the
UCB prefix extension segment associated with the specified device (DEVN,
DEVNCHAR, or VOLSER). Use the IOSDUPFX mapping macro to map the UCB prefix
extension segment.
,UCBPAREA=ucbparea addr
,UCBPAREA=NONE
Specifies the address of a 48-character storage area that will receive a copy of the UCB
prefix extension segment. The copy of the UCB prefix extension segment is mapped by
the IOSDUPI mapping macro.
,LOC=BELOW
,LOC=ANY
Specifies whether the search should be restricted to below 16 megabyte UCB
(LOC=BELOW) or should also include above 16 megabyte UCBs (LOC=ANY).
,PIN
,NOPIN
Specifies whether the UCB is to be pinned to make it ineligible for deletion through
dynamic I/O configuration changes. Pinning the UCB ensures that it cannot be deleted
while the look-up process is taking place. The PIN parameter specifies that the UCB
should be pinned, and NOPIN specifies that it should not. Programs that pin a UCB are
also responsible for unpinning it once the UCB is no longer subject to processing. Use
the UCBPIN macro with the UNPIN option to unpin the UCB.
,TEXT=text addr
Specifies the address of a 58-character input field containing text that documents the
reason for the PIN request. If the pin request remains outstanding during a request for a
configuration change that would delete this UCB, the text specified by the TEXT
parameter will be displayed in a message identifying the reason for a configuration
change failure.
,PTOKEN=ptoken addr
Specifies the address of an 8-character area that is to receive the pin token for the
UCB. The caller must use the pin token when unpinning the UCB through the UCBPIN
service.
,LASTING
Specifies that the UCB will not be unpinned automatically by the system at the time of
termination of the task or address space with which the pin is associated.
When you code LASTING, the system cannot dynamically delete the UCB until your
program issues UCBPIN with the UNPIN parameter.
,UNBOUND_ALIAS=NO
,UNBOUND_ALIAS=YES
Specifies whether the scan should include unbound alias UCBs.
,DEVCLASS=DASD
,DEVCLASS=DASDTAPE
,DEVCLASS=TAPE
Specifies the device class that is to be searched for the VOLSER look-up.
,DYNAMIC=NO
,DYNAMIC=YES
Specifies if static or dynamic UCBs are to be looked at:
,RANGE=3DIGIT
,RANGE=ALL
Specifies whether the look-up should be restricted to UCBs with 3-digit device numbers
(3DIGIT) or should also include UCBs with 4-digit device numbers (ALL).
,IOCTOKEN=ioctoken addr
,IOCTOKEN=NONE
Specifies the address of a 48-character area that contains the MVS I/O configuration
token that the caller supplies to UCBLOOK. Obtain this token by issuing the IOCINFO
macro, which is described in OS/390 MVS Programming: Assembler Services
Reference. If the I/O configuration token that is current when UCBLOOK is invoked does
not match the token whose address is supplied as input by ioctoken addr, the caller will
be notified through a return code.
If the input IOCTOKEN (specified by ioctoken addr) is set to binary zeros, UCBLOOK
will set IOCTOKEN to the current I/O configuration token.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that should be generated:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 2
,RETCODE=retcode addr
Specifies the fullword location where the system is to store the return code. The return
code is also in GPR 15.
,RSNCODE=rsncode addr
Specifies the fullword location where the system is to store the reason code. The reason
code is also in GPR 0.
ABEND Codes
None.
UCBLOOK—List Form
Use the list form of the UCBLOOK macro together with the execute form for applications that
require reentrant code. The list form of the macro defines an area of storage that the
execute form uses for storing the parameters.
Syntax
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
UCBLOOK
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of the UCBLOOK macro with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBLOOK macro.
The list addr parameter specifies 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.
UCBLOOK—Execute Form
Use the execute form of the UCBLOOK macro together with the list form 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 UCBLOOK macro is written as follows:
UCBLOOK
,PIN
,NOPIN Note: TEXT and PTOKEN are required with PIN and are not valid
with NOPIN.
,UNBOUND_ALIAS=NO Default: NO
,UNBOUND_ALIAS=YES
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 2
Parameters
The parameters are explained under the standard form of the UCBLOOK macro with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBLOOK macro.
The list addr parameter specifies the address of the storage area for the parameter list.
COMPLETE specifies that the system is to check for required parameters and supply
defaults for optional parameters that were not specified.
Description
Pinning a UCB ensures that the UCB cannot be deleted while a program is in the process of
looking at a UCB. Programs that pin a UCB are also responsible for unpinning it once the
UCB is no longer subject to processing.
Authorized programs that obtain UCB addresses, either through UCB services or other
means, can use the UCBPIN macro to pin and unpin UCBs. Pinning and unpinning should
be done any time a UCB is used, unless one of the following is true:
The caller is running in an environment where dynamic configuration changes cannot
occur.
The caller can otherwise guarantee that the UCB will not be deleted. (The device is
allocated.)
Movepin allows users to move pin information from one PAV UCB to another.
Note: The movepin function is intended for IOS use only.
Environment
The requirements for the caller are:
Programming Requirements
If the program is in AR mode, issue the SYSSTATE ASCENV=AR macro before UCBPIN.
SYSSTATE ASCENV=AR tells the system to generate code appropriate for AR mode.
Restrictions
None.
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, the general purpose registers (GPRs) contain:
Register Contents
0 Reason code if GPR 15 contains a return code of 08; otherwise, used as a
work register by the system
1 Used as a work register by the system
2-13 Unchanged
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 UCBPIN macro is written as follows:
UCBPIN
PIN
UNPIN Note: See the table following this diagram for valid parameter
combinations.
,LASTING
MOVEPIN
The following table shows how other parameters may be used with PIN and UNPIN.
Parameters
The parameters are explained as follows:
PIN
UNPIN
Specifies whether the UCB is to be pinned or unpinned.
,PTOKEN=ptoken addr
Specifies the address of an 8-character field used to contain the pin token. For PIN
requests, PTOKEN specifies an output field that receives the pin token for the UCB that
is to be pinned. For UNPIN requests, PTOKEN specifies an input field that contains the
pin token for the UCB that is to be unpinned; this token must match the one that was
returned on the corresponding PIN request. UCBPIN will reset PTOKEN to binary zeros
if the UNPIN function is successful.
,UCBPTR=ucbptr addr
Specifies the address of a pointer containing the address of the UCB common segment
for the UCB that is to be pinned.
,TEXT=text addr
Specifies the address of a 58-character input field containing text that documents the
reason for the PIN request. If the pin request remains outstanding during a request for a
configuration change that would delete this UCB, the text specified by the TEXT
parameter will be displayed in a message identifying the reason for a configuration
change failure.
,LASTING
Specifies that the UCB will not be unpinned automatically by the system at the time of
termination of the task or address space with which the pin is associated.
When you code LASTING, the system cannot dynamically delete the UCB until your
program issues UCBPIN with the UNPIN parameter.
,IOCTOKEN=ioctoken addr
Specifies the address of a 48-character area that contains the MVS I/O configuration
token that you supply to UCBPIN. You can obtain this token by issuing the IOCINFO
macro, which is described in OS/390 MVS Programming: Assembler Services
Reference. If the I/O configuration token that is current when UCBPIN is invoked does
not match the token specified as input by ioctoken addr, the caller will be notified
through a return code.
If the input IOCTOKEN (specified by ioctoken addr) is set to binary zeros, UCBPIN will
set IOCTOKEN to the current I/O configuration token.
MOVEPIN
Specifies whether to move pin-related information from one Parallel Access Volume
(PAV) to another. The FROM and TO UCBs are checked to insure that one is an active
PAV-base and the other is a PAV-alias bound to that base.
Note: The MOVEPIN function is intended for IOS use only.
TO=to
Specifies the address of the UCB common segment of the device that the pin
information is being moved to.
FROM=from
Specifies the address of the UCB common segment of the device that the pin
information is being moved from.
,RETCODE=retcode addr
Specifies the fullword location where the system is to store the return code. The return
code is also in GPR 15.
,RSNCODE=rsncode addr
Specifies the fullword location where the system is to store the reason code. The reason
code is also in GPR 0 if the return code is X'08'.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that the system is to generate:
UCBPIN—List Form
Use the list form of the UCBPIN macro together with the execute form for applications that
require reentrant code. The list form of the macro defines an area of storage that the
execute form uses for storing the parameters.
Syntax
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
UCBPIN
Parameters
The parameters are explained as follows:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBPIN macro.
The list addr parameter specifies 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.
UCBPIN—Execute Form
Use the execute form of the UCBPIN macro together with the list form 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 UCBPIN macro is written as follows:
UCBPIN
PIN
UNPIN Note: See the table following this diagram for valid parameter
combinations.
,LASTING
MOVEPIN
The following table shows how other parameters may be used with PIN and UNPIN.
Parameters
The parameters are explained under the standard form of the UCBPIN macro with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBPIN macro.
The list addr parameter specifies the address of the storage area for the parameter list.
COMPLETE specifies that the system is to check for required parameters and supply
defaults for optional parameters that were not specified.
Description
Use the UCBSCAN macro to scan unit control blocks (UCBs) and return a copy of a UCB or
a UCB address on each invocation.
Two types of scans are available with UCBSCAN: A scan of all UCBs, and a scan of all
UCBs within a particular device class. For each type of scan, the caller may optionally:
Restrict the scan to UCBs defined as static or installation-static.
Restrict the scan to UCBs with 3-digit device numbers.
Restrict the scan to addresses of below 16 megabyte UCBs
Request nonbase exposures of a multiple-exposure device, supported on systems prior
to MVS/ESA SP 5.2.
Request alias UCBs for a parallel access volume.
Specify the device number with which the scan should begin.
UCBSCAN presents the UCBs in ascending device number order. UCBSCAN provides two
options as follows:
COPY On each invocation, UCBSCAN returns a copy of requested UCB segments and
data in caller-supplied areas.
Address On each invocation, UCBSCAN returns the address of the UCB, the address of
requested UCB segments, and, optionally, a copy of the UCB prefix extension
segment. The caller can specify whether the scan includes above 16 megabyte
UCBs or only below 16 megabyte UCBs. The caller must pin and unpin the UCB
unless one of the following is true:
The caller is running in an environment where dynamic configuration changes
cannot occur
The caller can otherwise guarantee that the UCB will not be deleted.
See OS/390 MVS Programming: Authorized Assembler Services Guide for
information on pinning UCBs.
Environment
The requirements for the caller are:
Minimum authorization: For the COPY parameter: Problem state with any PSW key
For the ADDRESS parameter: Supervisor state or PKM allowing
key 0-7
For the LINKAGE=BRANCH parameter, all of the following:
Supervisor state with key 0
31-bit addressing mode
Primary ASC mode
Parameter list and any data areas it points to must be in fixed
storage or, if the caller is disabled, in disabled reference
(DREF) storage.
Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN.
AMODE: 24- or 31-bit.
ASC mode: Primary or access register (AR).
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: Must be in the primary address space or, for AR-mode callers,
must 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
If in AR mode, issue SYSSTATE ASCENV=AR before issuing UCBSCAN.
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
Performance Implications
None.
Parameters
The parameters are explained as follows:
COPY
Specifies that a copy of the UCB is to be obtained. See OS/390 HCD Planning for a list
of the MVS services that accept a UCB copy.
Note: When you issue UCBSCAN to obtain a UCB copy, the UCBID field in the copy is
set to x‘CC’.
,WORKAREA=workarea addr
Specifies the address of a 100-character work area used by the UCBSCAN service. The
caller must initialize this work area to binary zeros before starting a UCB scan. On
subsequent invocations of UCBSCAN within the same scan, the caller must leave the
contents of this work area unchanged.
,UCBAREA=ucbarea addr
Specifies the address of a 48-character storage area that will receive a copy of the UCB
common segment and the UCB device-dependent segment. See OS/390 HCD Planning
for a list of the MVS services that accept a UCB copy.
The caller does not need to initialize this area. Use the IEFUCBOB mapping macro to
map the area. The contents of certain fields in the copy are:
,CMXTAREA=cmxtarea addr
,CMXTAREA=NONE
Specifies the address of a 32-character storage area that will receive a copy of the UCB
common extension segment. See OS/390 HCD Planning for a list of the MVS services
that accept a UCB copy and require this segment as part of a UCB copy.
Use the UCBCMEXT DSECT in the IEFUCBOB mapping macro to map the area. If the
CMXTAREA area is below 16 MB, the UCBEXTP field in the UCBAREA area contains
the address of the CMXTAREA area, If the CMXTAREA area is above 16 MB, the caller
must explicitly supply the address of the CMXTAREA area because the UCBEXTP field
will contain 0.
The UCBIEXT field contains 0 because this field is not valid in the UCB copy.
The UCBCLEXT field contains the address of the DCEAREA if the UCB has a device
class extension and the caller specified the DCEAREA parameter. Otherwise, the field
contains 0.
,UCBPAREA=ucbparea addr
,UCBPAREA=NONE
Specifies the address of a 48-character storage area that will receive a copy of the UCB
prefix extension segment. The area can be mapped by the IOSDUPI mapping macro.
,DCEAREA=dcearea addr
,DCEAREA=NONE
Specifies the address of a storage area that will receive a copy of the UCB device class
extension segment. See OS/390 HCD Planning for a list of the MVS services that
accept a UCB copy and require this segment as part of a UCB copy.
,DCELEN=length addr
Specifies the address of a 2-byte field that contains the length of the area specified by
DCEAREA. The length specified must be 1 through 256 bytes. DCELEN is required
with DCEAREA.
,VOLSER=volser addr
,VOLSER=NONE
Specifies the address of a 6-character field that indicates, in EBCDIC, the volume serial
number of the device for which a UCB copy is to be obtained.
,DEVNCHAR=devnchar addr
Specifies the address of a 4-character field that is to receive the EBCDIC device number
associated with the UCB copy.
,DEVN=devn addr
,DEVN=0
Specifies (DEVN=devn addr) an input halfword that contains, in binary form, the device
number with which the scan is to begin. The default, DEVN=0, starts the scan with the
first UCB.
,DYNAMIC=NO
,DYNAMIC=YES
Specifies whether the scan should be restricted to static and installation-static UCBs
(DYNAMIC=NO) or should also include dynamic UCBs (DYNAMIC=YES).
,RANGE=3DIGIT
,RANGE=ALL
Specifies whether the scan should be restricted to UCBs with 3-digit device numbers
(3DIGIT) or should also include UCBs with 4-digit device numbers (ALL).
,NONBASE=NO
,NONBASE=YES
Specifies whether the scan should include nonbase exposures for a multiple-exposure
device, supported on systems prior to MVS/ESA SP 5.2. NO specifies only the base
exposure, and YES specifies all exposures.
Specifies whether the scan should include bound alias UCBs for a parallel access
volume. NO specifies that bound alias UCBs will not be included. Yes specifies that
bound alias UCBs will be included.
,UNBOUND_ALIAS=NO
,UNBOUND_ALIAS=YES
,UNBOUND_ALIAS=ONLY
Specifies whether the scan should include unbound alias UCBs.
,DEVCLASS=ALL
,DEVCLASS=CHAR
,DEVCLASS=COMM
,DEVCLASS=CTC
,DEVCLASS=DASD
,DEVCLASS=DISP
,DEVCLASS=TAPE
,DEVCLASS=UREC
Specifies the device class that is to be scanned:
,DEVCID=devcid addr
Specifies the address of an 8-bit input field that contains the hexadecimal device class
ID of the device class to be scanned.
If you specify DEVCID, only UCBs of the particular device class specified will be
presented, and the DEVCLASS parameter is ignored.
,IOCTOKEN=ioctoken addr
,IOCTOKEN=NONE
Specifies the address of a 48-character storage area that contains the MVS I/O
configuration token. The caller can obtain this token by issuing the IOCINFO macro,
which is described in OS/390 MVS Programming: Assembler Services Reference. If the
I/O configuration token that is current when UCBSCAN is invoked does not match the
token whose address is supplied as input by ioctoken addr, the caller will be notified
through a return code.
If the input IOCTOKEN (specified by ioctoken addr) is set to binary zeros, UCBSCAN
will set IOCTOKEN to the current I/O configuration token at the start of the scan.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that should be generated:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
IMPLIED_VERSION
MAX
A decimal value of 1
,RETCODE=retcode addr
Specifies the fullword location where the system is to store the return code. The return
code is also in GPR 15.
,RSNCODE=rsncode addr
Specifies the fullword location where the system is to store the reason code. The reason
code is also in GPR 0.
UCBSCAN COPY
Syntax
The standard form of the COPY function of the UCBSCAN macro is written as follows:
UCBSCAN
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,NONBASE=NO Default: NO
,NONBASE=YES
,UNBOUND_ALIAS=NO Default: NO
,UNOUND_ALIAS=YES
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1
Syntax
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the COPY function of the UCBSCAN macro is written as follows:
UCBSCAN
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1
Parameters
The parameters are explained under that standard form of the UCBSCAN macro with the
following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBSCAN macro.
The list addr parameter specifies 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.
Syntax
The execute form of the COPY function of the UCBSCAN macro is written as follows:
UCBSCAN
,DCEAREA= dcearea addr dcearea addr: RX-type address or register (2) - (12).
,DCEAREA=NONE Default: NONE
,DEVN=0 Default: 0
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,NONBASE=NO Default: NO
,NONBASE=YES
,UNBOUND_ALIAS=NO Default: NO
,UNBOUND_ALIAS=YES
,UNBOUND_ALIAS=ONLY
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1
Parameters
The parameters are explained under the standard form of the COPY function of the
UCBSCAN macro with the following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBSCAN macro.
The list addr parameter specifies the address of the storage area for the parameter list.
COMPLETE specifies that the system is to check for required parameters and supply
defaults for optional parameters that were not specified.
UCBSCAN ADDRESS
Syntax
The standard form of the ADDRESS function of the UCBSCAN macro is written as follows:
UCBSCAN
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,NONBASE=NO Default: NO
,NONBASE=YES
,UNBOUND_ALIAS=NO Default: NO
,UNBOUND_ALIAS=YES
,UNBOUND_ALIAS=ONLY
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1 - 2
Parameters
The parameters are explained as follows:
ADDRESS
Specifies that a UCB address is to be obtained.
,WORKAREA=workarea addr
Specifies the address of a 100-character work area that will be used by the UCBSCAN
service. The caller must initialize this work area to binary zeros before starting a UCB
scan. On subsequent invocations of UCBSCAN within the same scan, the caller must
leave the contents of this work area unchanged.
,UCBPTR=ucbptr addr
Specifies the address of a pointer in which the address of the UCB common segment
for the next UCB that meets the search criteria will be returned.
,UCBCXPTR=ucbcxptr addr
Specifies the address of a fullword field in which the system will return the address of
the UCB common extension. Use the IEFUCBOB mapping macro to map the UCB
common extension segment.
,UCBPXPTR=ucbpxptr addr
Specifies the address of a fullword field in which the system will return the address of
the UCB prefix extension. Use the IOSDUPFX mapping macro to map the UCB prefix
extension segment.
,LOC=BELOW
,LOC=ANY
Specifies whether the scan should be restricted to below 16 megabyte UCBs
(LOC=BELOW) or should also include above 16 megabyte UCBs (LOC=ANY).
,PIN
,NOPIN
Specifies whether the UCB is to be pinned to make it ineligible for deletion through the
dynamic UCB process. Pinning the UCB ensures that it will not be deleted while the
scan process is taking place. The PIN parameter specifies that the UCB should be
pinned, and NOPIN specifies that it should not. Programs that pin a UCB are also
responsible for unpinning it once the UCB is no longer subject to processing. Use the
UCBPIN macro with the UNPIN option to unpin the UCB.
,TEXT=text addr
Specifies the address of a 58-character input field containing text that documents the
reason for the PIN request. If the pin request remains outstanding during a request for a
configuration change that would delete this UCB, the text specified by the TEXT
parameter will be displayed in a message identifying the reason for a configuration
change failure.
,PTOKEN=ptoken addr
Specifies the address of an 8-character area that is to receive the pin token for the
UCB. The caller must use the pin token when unpinning the UCB.
,UCBPAREA=ucbparea addr
,UCBPAREA=NONE
Specifies the address of a 48-character storage area that will receive a copy of the UCB
prefix extension segment. The area can be mapped by the IOSDUPI mapping macro.
,DEVN=devn addr
,DEVN=0
Specifies (DEVN=devn addr) an input halfword that contains, in binary form, the device
number with which the scan is to begin. The default, DEVN=0, starts the scan with the
first UCB.
,DYNAMIC=NO
,DYNAMIC=YES
Specifies whether the scan should be restricted to static and installation-static UCBs
(DYNAMIC=NO) or should also include dynamic UCBs (DYNAMIC=YES).
,RANGE=3DIGIT
,RANGE=ALL
Specifies whether the scan should be restricted to UCBs with 3-digit device numbers
(3DIGIT) or should also include UCBs with 4-digit device numbers (ALL).
,NONBASE=NO
,NONBASE=YES
Specifies whether the scan should include nonbase exposures for a multiple-exposure
device, which was supported prior to MVS/ESA SP 5.2. NO specifies only the base
exposure, and YES specifies all exposures.
Specifies whether the scan should include bound alias UCBs for a parallel access
volume. NO specifies that bound alias UCBs will not be included. YES specifies that
bound alias UCBs will be included.
,UNBOUND_ALIAS=NO
,UNBOUND_ALIAS=YES
,UNBOUND_ALIAS=ONLY
Specifies whether the scan should include unbound alias UCBs.
,DEVCLASS=ALL
,DEVCLASS=CHAR
,DEVCLASS=COMM
,DEVCLASS=CTC
,DEVCLASS=DASD
,DEVCLASS=DISP
,DEVCLASS=TAPE
,DEVCLASS=UREC
Specifies the device class that is to be scanned:
,DEVCID=devcid addr
Specifies an 8-bit input field used to supply the hexadecimal device class ID of the
device class to be scanned. devcid addr specifies the address of the field.
If you specify DEVCID, only UCBs of the particular device class specified will be
presented, and the DEVCLASS parameter is ignored.
,IOCTOKEN=ioctoken addr
,IOCTOKEN=NONE
Specifies the address of a 48-character area that contains the MVS I/O configuration
token that you supply to UCBSCAN. You can obtain this token by issuing the IOCINFO
macro, which is described in OS/390 MVS Programming: Assembler Services
Reference. If the I/O configuration token that is current when UCBSCAN is invoked does
not match the token whose address is supplied as input by ioctoken addr, the caller will
be notified through a return code.
If the input IOCTOKEN (specified by ioctoken addr) is set to binary zeros, UCBSCAN
will set IOCTOKEN to the current I/O configuration token at the start of the scan.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Specifies the type of call that should be generated:
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
Specifies the version of the macro. PLISTVER determines which parameter list the
system generates. PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro forms used for a
request and with the same value on all of the macro forms. The values are:
list-form parameter list is always long enough to hold all the parameters you might
specify on the execute form; in this way, MAX ensures that the parameter list does
not overwrite nearby storage.
1, if you use only the following parameters:
2, if you use any of the following parameters and parameters from plistver 1.
UCBCXPTR UCBPXPTR
IMPLIED_VERSION
MAX
A decimal value of 1 or 2
,RETCODE=retcode addr
Specifies the fullword location where the system is to store the return code. The return
code is also in GPR 15.
,RSNCODE=rsncode addr
Specifies the fullword location where the system is to store the reason code. The reason
code is also in GPR 0.
Syntax
This macro is an alternative list form macro, and requires a different technique for using the
list form as compared to the conventional list form macros. See “Alternative List Form
Macros” on page 13 for further information.
The list form of the ADDRESS function of the UCBSCAN macro is written as follows:
UCBSCAN
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1 - 2
Parameters
The parameters are explained under the standard form of the ADDRESS function of the
UCBSCAN macro with the following exceptions:
MF=(L,list addr)
MF=(L,list addr,attr)
MF=(L,list addr,0D)
Specifies the list form of the UCBSCAN macro.
The list addr parameter specifies 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.
Syntax
The execute form of the ADDRESS function of the UCBSCAN macro is written as follows:
UCBSCAN
,DYNAMIC=NO Default: NO
,DYNAMIC=YES
,NONBASE=NO Default: NO
,NONBASE=YES
,UNBOUND_ALIAS=NO Default: NO
,UNBOUND_ALIAS=YES
,UNBOUND_ALIAS=ONLY
,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX Default: IMPLIED_VERSION
,PLISTVER=plistver plistver: 1 - 2
Parameters
The parameters are explained under the standard form of the ADDRESS function of the
UCBSCAN macro with the following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
Specifies the execute form of the UCBSCAN macro.
The list addr parameter specifies the address of the storage area for the parameter list.
COMPLETE specifies that the system is to check for required parameters and supply
defaults for optional parameters that were not specified.
Description
The VSMLIST macro provides information about the allocation of virtual storage. The
information is returned in a work area that you specify. The format of the work area is
described under “Virtual Storage Management” in OS/390 MVS Programming: Authorized
Assembler Services Guide.
For detailed information about virtual storage subpools, see “Virtual Storage Management” in
OS/390 MVS Programming: Authorized Assembler Services Guide.
Environment
The requirements for the caller are:
Minimum authorization: For LINKAGE=SYSTEM, problem state and PSW key 8-15. For
LINKAGE=BRANCH, supervisor state and PSW key 0.
Dispatchable unit mode: Task or SRB.
Cross memory mode: Any PASN, any HASN, any SASN.
AMODE: 24- or 31-bit. All addresses must be 31-bit addresses.
ASC mode: Primary.
Interrupt status: Enabled or disabled for I/O and external interrupts.
Locks: For LINKAGE=SYSTEM, the caller may not hold a lock higher
than the local lock.
For LINKAGE=BRANCH, see the LINKAGE parameter
description for locking requirements.
Control parameters: Must be in the primary address space. All input parameters, except
for the TCB, can reside above 16 megabytes if the caller is running
in 31-bit addressing mode. The TCB resides below 16 megabytes.
Programming Requirements
All addresses are associated with the current address space.
You must set bytes 0-3 of the work area to zero before the first invocation of the macro for a
given request.
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
None.
Syntax
The VSMLIST macro is written as follows:
VSMLIST
SP=SQA
SP=CSA
SP=LSQA
SP=PVT
SP=sp list addr sp list addr: RX-type address or register (0), (2) - (12)
,TCB=(, ALL) Note: The TCB parameter is required only for SRB routines, if
SP=PVT or SP=sp list addr and the list contains private area
subpools.
Parameters
The parameters are explained as follows:
SP=SQA
SP=CSA
SP=LSQA
SP=PVT
SP=sp list addr
Specifies the storage areas for which information is requested. The following subpools
are listed for the specified storage areas:
VSMLIST reports the translated subpool numbers, not the original subpool numbers. In
addition, VSMLIST does not report incorrect subpool numbers (subpool numbers greater
than 255) or undefined subpool numbers.
If SP=sp list addr is specified, the user must supply the address of a subpool list. The
first halfword of the list contains the number of entries in the list. Each of the following
halfwords in the list contains a subpool number. If a valid subpool number appears more
than once in the subpool list, it is reported only once.
,WKAREA=(addr,length)
Indicates the address and length of a user-supplied work area. The system uses this
work area to hold the parameter list, control information, and data that is to be returned
to the caller. The work area should begin on a word boundary and be a minimum of 4K
bytes in length.
You must set bytes 0-3 of this work area to zero before the first invocation of VSMLIST
for a specific request. See “Virtual Storage Management” in OS/390 MVS Programming:
Authorized Assembler Services Guide for a description of the work area.
,TCB=(tcb addr)
,TCB=(tcb addr,ALL)
,TCB=(,ALL)
Specifies the TCB associated with the virtual storage allocated to the private area
subpools. The TCB must be located in the currently addressable address space. If ALL
is specified, the storage associated with the TCB and all of its subtasks is reported.
Notes:
1. If ALL is specified and the TCB is high in the task structure (for example, the TCB
for RCT), more than one region could be listed. The regions in the private area are
the RCT region, the V=V region, and the V=R region (for V=R jobs).
2. The TCB resides in storage below 16 megabytes.
,SPACE=ALLOC
,SPACE=FREE
,SPACE=UNALLOC
Specifies whether allocated, allocated and free, or unallocated storage is to be reported.
ALLOC indicates that the virtual addresses and lengths of blocks of storage allocated to
the specific area are to be listed.
FREE indicates that in addition to the information supplied by ALLOC, the virtual
addresses and lengths of free space within the allocated blocks are to be listed.
UNALLOC indicates that the virtual addresses and lengths of unallocated blocks of
storage are to be listed. Both TCB and REAL are ignored when UNALLOC is specified.
Note: An allocated block of storage is a block that is a multiple of 4K in size and
contains some storage that has been allocated via a GETMAIN or STORAGE
macro. The free storage is the storage within an allocated block that has not
been allocated via a GETMAIN or STORAGE macro. An unallocated block of
storage is a block that is a multiple of 4K in size and contains no allocated
storage.
| ,LOC=24
| ,LOC=31
| Indicates whether information should be returned about virtual storage areas residing
| above and below 16 megabytes or only those residing below 16 megabytes. If LOC=31
| is specified, information is returned for all storage areas below 2 gigabytes. If LOC=24 is
| specified, information is returned only for storage areas below 16 megabytes.
| Note: Specifying LOC=BELOW is the same as specifying LOC=24. Specifying
| LOC=ANY is the same as specifying LOC=31. The old values are still supported,
| but IBM recommends using the newer values instead.
| ,REAL31
| ,REAL64
| Indicates that the high order bit of the address field of the allocated block descriptor
| should be set to show the value specified on the LOC parameter of the GETMAIN,
| STORAGE, or CPOOL macro invocation used to obtain that storage area. If the storage
| block was allocated using any LOC specification of GETMAIN or STORAGE except
| LOC=(,24), the indicator is turned on; if the storage block was allocated using the
| LOC=(,24) parameter of the GETMAIN or STORAGE macros, the indicator is turned off.
| When REAL31 is specified If the storage block is backed in real 31-bit or 64-bit
| storage, the high bit indicator is on (one). If the storage block is backed in
| real 24-bit storage, the high bit indicator is off (zero). The low bit indicator is
| always off.
| When REAL64 is specified If the storage block is backed in real 64-bit storage, the low
| bit indicator is on (one). If the storage block is backed in real 31-bit storage,
| the high bit indicator is on (one). If the storage block is backed in real 24-bit
| storage, both indicators are off.
| When neither is specified Both indicators remain off (zero).
| Note: The REAL parameter is deprecated, but still supported by VSMLIST. It has the
| same function as REAL31. IBM recommends using REAL31 instead.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Indicates whether the VSMLIST routine uses a PC instruction (LINKAGE=SYSTEM) or
branch entry (LINKAGE=BRANCH) for linkage and whether the VSMLIST routine
provides serialization and recovery.
If LINKAGE=SYSTEM is specified, the VSMLIST routine provides linkage using a PC
instruction and also provides recovery and serialization.
The caller's secondary ASID is preserved when a PC is issued.
Note: Serialization is not provided across calls to VSMLIST.
If LINKAGE=BRANCH is specified, the VSMLIST routine uses branch entry for linkage
and does not provide recovery or serialization. Before issuing VSMLIST, provide
serialization as follows:
,PVTSP=ALL
,PVTSP=OWNED
Indicates for each task, which subpool information will be returned.
ALL indicates that information is returned for subpools which are owned or shared by
the task.
OWNED indicates that information is returned only for the subpools which are owned by
the task.
ABEND Codes
The VSMLIST macro might issue abend code X'C78'. For detailed abend code information,
see OS/390 MVS System Codes.
Example 1
List the ranges of the allocated and free storage in the SQA. Specify the address of the VSM
work area in register 2 and the length of the work area in register 3.
VSMLIST SP=SQA,SPACE=FREE,WKAREA=((2),(3))
Example 2
List the ranges of the allocated storage in the CSA. Specify the address of the work area in
register 2 and the length of the work area in register 3. Provide branch entry linkage.
VSMLIST SP=CSA,SPACE=ALLOC,WKAREA=((2),(3)),LINKAGE=BRANCH
Example 3
List the ranges of unallocated storage in the private area. The variable X contains the
address of the work area, which has a length of 4096 bytes.
VSMLIST SP=PVT,SPACE=UNALLOC,WKAREA=(X,4296)
Example 4
List the ranges of allocated storage, below 16 megabytes, in each of the subpools specified
in the subpool list at location Y. The variable X contains the address of the work area, which
has a length of 4096 bytes.
VSMLIST SP=Y,SPACE=ALLOC,WKAREA=(X,4296),LOC=BELOW
Description
The VSMLOC macro verifies that a given storage area has been allocated using the
GETMAIN or STORAGE macros.
Environment
The requirements for the caller are:
Minimum authorization: For LINKAGE=SYSTEM, problem state and PSW key 8-15. For
LINKAGE=BRANCH, supervisor state and PSW key 0.
Dispatchable unit mode: Task or SRB.
Cross memory mode: Any PASN, any HASN, any SASN.
AMODE: 24- or 31-bit. All addresses passed to VSMLOC must be 31-bit
addresses.
ASC mode: Primary.
Interrupt status: For LINKAGE=SYSTEM, enabled or disabled for I/O and external
interrupts. For LINKAGE=BRANCH, interrupt status depends on
the area of storage for which information is requested. See the
LINKAGE=BRANCH parameter for complete information.
Locks: For LINKAGE=SYSTEM with LSQA, PVT, or CPOOLLCL
specified, you may hold only the local lock.
For LINKAGE=BRANCH, see the LINKAGE=BRANCH
parameter for locking requirements.
Control parameters: Must be in the primary address space
Programming Requirements
All addresses are associated with the current address space.
The VSMLOC service does not provide serialization or recovery for callers specifying
LINKAGE=BRANCH. Callers must provide serialization and recovery as described under
the LINKAGE parameter description.
The VSMLOC service provides serialization and recovery for callers specifying
LINKAGE=SYSTEM.
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 VSMLOC macro is written as follows:
VSMLOC
SQA
CSA
LSQA
PVT
CPOOLFIX
CPOOLPAG
CPOOLLCL
,AREA=(addr) addr: RX-type address or register (0) - (12). Use only with
CPOOLFIX, CPOOLPAG, and CPOOLLCL.
,TCB=addr
addr: RX-type address or register (0) - (12). Can only be specified
with PVT.
Parameters
The parameters are explained as follows:
SQA
CSA
LSQA
PVT
CPOOLFIX
CPOOLPAG
CPOOLLCL
Used to verify that storage has been allocated.
SQA, CSA, LSQA, and PVT are used to verify that storage for SQA, CSA, LSQA, or
PVT (private area storage) has been allocated in the current address space.
CPOOLFIX is used to verify that storage for a global fixed cell pool has been allocated.
Users who obtain their storage from subpool 226, 227, 228, 239, or 245 should specify
this keyword.
CPOOLPAG is used to verify that storage for a global pageable cell pool has been
allocated. Users who obtain storage from subpool 231, 241, 247, or 248 should specify
this keyword.
CPOOLLCL is used to verify that storage for a local cell pool has been allocated. Users
who obtain storage from subpool 0-127, 129-132, 203-205, 213-215, 223-225, 229, 230,
233-237, 240, 249, or 250-255 should specify this keyword.
,AREA=(addr,length)
Indicates the start of the virtual storage area (addr) and the length of the virtual storage
area (length) to be verified.
,AREA=(addr)
Indicates the start of the virtual storage area (addr) to be verified.
,TCB=addr
Indicates that VSMLOC is to place the address of the TCB associated with the verified
storage in the register or storage area specified by the TCB parameter. If the return
code from VSMLOC is not zero, the register or storage area specified by the TCB
parameter is set to zero. The TCB parameter can be specified only with PVT.
,LINKAGE=SYSTEM
,LINKAGE=BRANCH
Indicates the type of linkage that VSMLOC is to use.
If LINKAGE=SYSTEM is specified, the VSMLOC routine uses a basic PC instruction for
linkage.
The caller's secondary ASID is preserved when a basic PC is issued.
If LINKAGE=BRANCH is specified, the VSMLOC routine uses branch entry linkage.
Before issuing VSMLOC, provide serialization as follows:
For LSQA, CPOOLLCL, and PVT requests, obtain the LOCAL lock.
For CSA, SQA, and CPOOLFIX requests, issue the SETLOCK macro right before
and right after the VSMLOC request, as follows:
SETLOCK OBTAIN,TYPE=VSMFIX,MODE=UNCOND
VSMLOC request
SETLOCK RELEASE,TYPE=VSMFIX
If your program is covered by a functional recovery routine (FRR) and the FRR
receives control after SETLOCK OBTAIN has been issued and before SETLOCK
RELEASE has been issued, your FRR must either issue SETLOCK
RELEASE,TYPE=VSMFIX or must issue the SETLOCK and SETRP macros as
follows:
SETLOCK TEST,TYPE=VSMFIX,BRANCH=(NOTHELD,NOVSMFIX)
SETRP FRELOCK=VSMFIX
NOVSMFIX DS 2H
Notes:
1. Your program will be disabled for I/O and external interrupts from the time the
SETLOCK OBTAIN completes until the SETLOCK RELEASE completes. See
the descriptions of the SETLOCK and SETRP macros for additional usage
information.
2. Your program and your FRR must not issue any of the following macros before
issuing SETLOCK RELEASE,TYPE=VSMFIX:
– GETMAIN
– FREEMAIN
– STORAGE
For CPOOLPAG requests, issue the SETLOCK macro right before and right after
the VSMLOC request, as follows:
SETLOCK OBTAIN,TYPE=VSMPAG,MODE=UNCOND
VSMLOC request
SETLOCK RELEASE,TYPE=VSMPAG
If your program is covered by a functional recovery routine (FRR) and the FRR
receives control after SETLOCK OBTAIN has been issued and before SETLOCK
RELEASE has been issued, your FRR must either issue SETLOCK
RELEASE,TYPE=VSMPAG or must issue SETLOCK and SETRP macros as
follows:
SETLOCK TEST,TYPE=VSMPAG,BRANCH=(NOTHELD,NOVSMPAG)
SETRP FRELOCK=VSMPAG
NOVSMPAG DS 2H
Notes:
1. Your program will be disabled for I/O and external interrupts from the time the
SETLOCK OBTAIN completes until the SETLOCK RELEASE completes. See
the descriptions of the SETLOCK and SETRP macros for additional usage
information.
2. Your program and your FRR must not issue any of the following macros before
issuing SETLOCK RELEASE,TYPE=VSMPAG:
– GETMAIN
– FREEMAIN
– STORAGE
ABEND Codes
The VSMLOC macro might issue abend code X'C78'. For detailed abend code information,
see OS/390 MVS System Codes.
Example 1
Verify that the virtual storage, starting at the address given in register 2 and having a length
specified in register 3, has been allocated in the SQA.
VSMLOC SQA,AREA=((2),(3))
Example 2
Verify that the 8-bytes of virtual storage starting at X have been allocated in the CSA. Use a
PC instruction for linkage and let VSMLOC provide recovery and serialization.
VSMLOC CSA,AREA=(X,8),LINKAGE=SYSTEM
Example 3
Verify that the 8-bytes of virtual storage starting at the address specified in register 2 have
been allocated in the LSQA. Use branch entry for linkage.
VSMLOC LSQA,AREA=((2),8),LINKAGE=BRANCH
Example 4
Verify that the virtual storage, starting at X and having a length specified in register 3, has
been allocated in private area storage. Use branch entry for linkage.
VSMLOC PVT,AREA=(X,(3)),LINKAGE=BRANCH
Example 5
Verify that the 100 bytes of virtual storage starting at the address specified in register 1 have
been allocated in private area storage. The address of the TCB associated with the storage
verified is returned in register 4.
VSMLOC PVT,AREA=((1),122),TCB=(4),LINKAGE=BRANCH
Description
The VSMREGN macro provides the virtual starting address and sizes of the private area
user regions associated with a given TCB in the current address space. For more
information about the user region, see OS/390 MVS Initialization and Tuning 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
None.
Syntax
The VSMREGN macro is written as follows:
VSMREGN
,TCB=tcb addr tcb addr: RX-type address or register (0), (2) - (12).
Default: (except for SRB routines) TCB address in PSATOLD.
Parameters
The parameters are explained as follows:
WKAREA=addr
Indicates the virtual address of a 16-byte work area, which is used by VSMREGN to
return the requested information. The format of the work area is:
Bytes Meaning
0-3 Virtual address of the region below 16 megabytes
4-7 Length of the region below 16 megabytes
8-11 Virtual address of the region above 16 megabytes
12-15 Length of the region above 16 megabytes
,TCB=tcb addr
Indicates the virtual address of the TCB to be used to identify the region (the region
control task (RCT) region, the V=V region, or the V=R region). SRB routines and
routines whose currently addressable address space is not the home address space
must specify the TCB operand. They cannot use the default value.
ABEND Codes
None.
Example 1
Find the virtual address and length of the private area of the TCB whose address is in
PSATOLD. Return the information in the work area whose address is given in register 2.
VSMREGN WKAREA=(2)
Example 2
Find the virtual address and length of the private area of the TCB specified in register 3.
Return this information in the work area whose address is given in register 2.
VSMREGN WKAREA=(2),TCB=(3)
Example 3
Find the virtual address and length of the private area of the TCB whose address is X.
Return this information in the work area whose address is given in register 2.
VSMREGN WKAREA=(2),TCB=X
Example 4
Find the virtual address and length of the private area of the TCB whose address is given in
register 3. Return this information in the work area whose address is X.
VSMREGN WKAREA=X,TCB=(3)
Description
The WAIT macro is used to tell the system that performance of the active task cannot
continue until one or more specific events, each represented by a different event control
block (ECB), have occurred. Bit 0 and bit 1 of each ECB must be set to zero before it is
used.
See OS/390 MVS Programming: Authorized Assembler Services Guide for information on
how to use the WAIT macro to serialize resources.
Environment
The requirements for callers of WAIT are:
Minimum authorization: Supervisor state or problem state, with any PSW key
Dispatchable unit mode: Task
Cross memory mode: One of the following:
For LINKAGE=SVC: PASN=HASN=SASN
For LINKAGE=SYSTEM: PASN=HASN=SASN or
PASN¬=HASN¬=SASN
AMODE: 24- or 31-bit
ASC mode: Primary
Interrupt status: Enabled for I/O and external interruptions
Locks: For LINKAGE=SYSTEM: No locks held
For LINKAGE=SVC: No locks held, and no enabled unlocked
task (EUT) functional recovery routines (FRR) established
Control parameters: ECB and ECBLIST must be in the home address space.
Programming Requirements
None.
Restrictions
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-15 One of the following:
For LINKAGE=SYSTEM: Used as work registers by the system
For LINKAGE=SVC: Unchanged
When control returns to the caller, the access registers (AR) 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 WAIT macro is written as follows:
WAIT
event nmbr, event nmbr: Symbol, decimal digit, or register (0) or (2) - (12).
Default: 1
Value range: 0-255
ECB=ecb addr ecb addr: RX-type address, or register (1) or (2) - (12).
ECBLIST=ecb list addr ecb list addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained as follows:
event nmbr,
Specifies the number of events waiting to occur.
ECB=ecb addr
ECBLIST=ecb list addr
Specifies the address of an ECB on a fullword boundary or the address of a virtual
storage area containing one or more consecutive fullwords on a fullword boundary. Each
fullword contains the address of an ECB; the high order bit in the last fullword must be
set to one to indicate the end of the list.
The ECB parameter is valid only if the number of events is specified as one or is
omitted. The number of ECBs in the list specified by the ECBLIST form must be equal
to or greater than the specified number of events.
If you specify ECBLIST, ecb list addr and all ECBs on the list must be in the home
address space.
,LONG=NO
,LONG=YES
Specifies whether the task is entering a long wait (YES) or a regular wait (NO).
,LINKAGE=SVC
,LINKAGE=SYSTEM
Specifies whether the caller is in cross memory mode (LINKAGE=SYSTEM) or not
(LINKAGE=SVC).
When the caller is not in cross memory mode (the primary, secondary, and home
address spaces are the same), use LINKAGE=SVC. With this parameter, linkage is
through an SVC instruction.
When the caller is in cross memory mode (the primary, secondary, and home address
spaces are not the same), use LINKAGE=SYSTEM. With this parameter, linkage is
through a PC instruction. Note that the ECB must be in the home address space.
,EUT=NOSAVE
,EUT=SAVE
Specifies whether enabled unlocked task (EUT) FRRs, if present, should be preserved
around the WAIT processing. Specify this keyword only if you specify
LINKAGE=SYSTEM.
,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 RELATED parameter is available on macros that provide opposite services (for
example, ATTACH/DETACH, GETMAIN/FREEMAIN, and LOAD/DELETE), and on
macros that relate to previous occurrences of the same macros (for example, CHAP and
ESTAE).
The RELATED parameter may be used, for example, as follows:
WAIT1 WAIT 1,ECB=ECB,RELATED=(RESUME1,
'WAIT FOR EVENT')
.
.
.
RESUME1 POST ECB,2,RELATED=(WAIT1,
'RESUME WAITER')
Note: Each of these macros will fit on one line when coded, so there is no need for a
continuation indicator.
CAUTION:
A job step with all of its tasks in a WAIT condition is terminated upon expiration of the
time limits that apply to it.
Example
You have previously initiated one or more activities to be completed asynchronously to your
processing. As each activity was initiated, you set up an ECB in which bits 0 and 1 were set
to zero. You now wish to suspend your task via the WAIT macro until a specified number of
these activities have been completed.
Completion of each activity must be made known to the system via the POST macro. POST
causes an addressed ECB to be marked complete. If completion of the event satisfies the
requirements of an outstanding WAIT, the waiting task is marked ready and will be executed
when its priority allows.
ABEND Codes
The caller of WAIT might encounter one of the following abend codes:
101
201
301
401
See OS/390 MVS System Codes for explanations and responses for these codes.
Example 1
Wait for one event to occur (with a default count).
WAIT ECB=WAITECB
.
.
WAITECB DC F'2'
Example 2
Wait for two events to occur.
WAIT 2,ECBLIST=LISTECBS
.
.
LISTECBS DC A(ECB1)
DC A(ECB2)
DC X'82'
DC AL3(ECB3)
Example 3
Enter a long wait for a task.
WAIT 1,ECBLIST=LISTECBS,LONG=YES
.
.
.
LISTECBS DC A(ECB1)
DC A(ECB2)
DC X'82'
DC AL3(ECB3)
Description
Note: IBM recommends that you use the WTO macro with the MCSFLAG=HRDCPY
parameter instead of WTL, because WTO supplies more data than WTL.
The WTL macro causes a message to be written to the system log (SYSLOG) or the
operations log (OPERLOG) log stream depending on which one of these logs, or both, is
active. The message can include any character that can be used in a C-type (character) DC
statement, and is assembled as a variable-length record.
Note: When a message is recorded in SYSLOG, the exact format of the output of the WTL
macro varies depending on the job entry subsystem (JES2 or JES3) that is being
used, the output class that is assigned to the log at system initialization, and whether
DLOG is in effect for JES3. See the following for information on the format of logged
messages:
OS/390 MVS System Messages, Vol 1 (ABA-ASA)
OS/390 MVS System Messages, Vol 2 (ASB-ERB)
OS/390 MVS System Messages, Vol 3 (EWX-IEB)
OS/390 MVS System Messages, Vol 4 (IEC-IFD)
OS/390 MVS System Messages, Vol 5 (IGD-IZP)
OS/390 JES3 Commands also contains information about the format of logged messages.
The description of the WTL macro follows. The WTL macro is also described in OS/390 MVS
Programming: Assembler Services Reference (with the exception of the OPTION parameter).
Environment
The requirements for the caller are:
Minimum authorization: Problem state and any PSW key. For OPTION, APF-authorized
with PSW key 0-7, or supervisor state
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: Must be in the primary address space
Programming Requirements
None.
Restrictions
Message text cannot exceed 126 characters. If the message text exceeds 126 characters,
truncation occurs at the last embedded blank before the 126th character; when there are no
embedded blanks, truncation occurs after the 126th character.
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 WTL macro is written as follows:
WTL
Parameters
The parameters are explained as follows:
‘msg’
Specifies the message to be written to the system log and/or the operations log. The
message must be enclosed in apostrophes, which will not appear in the log. The
message can include any character that can be used in a C-type (character) DC
statement, and is assembled as a variable-length record. See “Timing and
Communication” in OS/390 MVS Programming: Assembler Services Guide for a list of
the printable EBCDIC characters passed to display devices or printers.
,OPTION=PREFIX
,OPTION=NOPREFIX
Specifies whether the WTL text contains a prefix identifying the system log record. If
PREFIX is specified, the text already contains a prefix. If NOPREFIX is specified or if
this parameter is omitted, a two-character prefix will be added by the system. The
OPTION keyword is ignored by any program running in the JES3 primary address
space.
ABEND Codes
None.
Figure 42 (Page 1 of 3). Return and Reason Codes for the WTL Macro
Return Code Reason Code Meaning and Action
00 00 Meaning: WTL processing completed successfully. The system
logged the message in SYSLOG, and if OPERLOG was
requested, the system logged the message in OPERLOG.
Action: None.
00 04 Meaning: WTL processing completed successfully. The message
was logged in the operations log (OPERLOG logstream). The
system log was not active.
Action: If you want the message logged in the system log, start
the system log and rerun the program.
00 08 Meaning: WTL processing completed, but the message was only
logged in the operations log because the WTL system log buffers
are full.
Figure 42 (Page 2 of 3). Return and Reason Codes for the WTL Macro
Return Code Reason Code Meaning and Action
04 08 Meaning: Environmental error. The system log and the operations
log are not active.
Action: Start the logs and rerun your program.
04 0C Meaning: Environmental error. The WTL limit has been reached.
Action: Do one of the following:
1. Retry the request when the shortage is relieved.
2. Issue a CONTROL M,LOGLIM command to change the
allocated number of WTL SYSLOG buffers.
3. Change the LOGLIM value on the INIT statement in the
CONSOLxx member of SYS1.PARMLIB. This new value will
take effect at the next IPL.
Note: If the problem is persistent, you might want to perform
step 2 first and step 3 at the next IPL.
04 10 Meaning: System error. An internal error occurred. The system
issues message IEE390I.
Action: Contact the IBM Support Center. Provide the return and
reason code.
04 14 Meaning: System error. The system encountered a (VSM) error.
The system issues message IEE390I.
Action: Contact the IBM Support Center. Provide the return and
reason code.
04 18 Meaning: Environmental error. The message was not logged in
either the system log or the operations log, because neither log is
active.
Figure 42 (Page 3 of 3). Return and Reason Codes for the WTL Macro
Return Code Reason Code Meaning and Action
04 24 Meaning: Environment error. The message was not logged in the
system log because the WTL limit has been reached, and was not
logged in the operation log because of storage problems.
Action: To log the message in the operations log, retry the
request. If the problem persists, contact the IBM Support Center,
providing the return and reason codes.
To log the message in the system log also, start the system log
and rerun the program.
Example 1
Write a message to the system log.
WTL 'THIS IS THE STANDARD FORMAT FOR THE WTL MACRO'
Example 2
Write a message to the system log specifying a prefix to identify the system log record.
WTL 'QL THIS FORMAT OF THE WTL USES THE OPTION KEYWORD',OPTION=PREFIX
Example 3
Build a parameter list for a message to be written to the system log.
LOGMSG WTL 'FUNCTION XXX COMPLETE',MF=L
Example 4
Write a message constructed in the list form of WTL.
WTL MF=(E,LOGMSG)
WTL—List Form
The list form of the WTL macro is used to construct a control program parameter list. The
message parameter must be provided in the list form of the macro. The OPTION keyword is
not permitted on the list form of the WTL macro.
Syntax
The list form of the WTL macro is written as follows:
WTL
,MF=L
Parameters
The parameters are explained under the standard form of the WTL macro with the following
exception:
,MF=L
Specifies the list form of the WTL macro.
WTL—Execute Form
The execute form of the WTL macro uses a remote control program parameter list. The
parameter list can be generated by the list form of WTL. You cannot modify the message in
the execute form.
Syntax
The execute form of the WTL macro is written as follows:
WTL
MF=(E,list addr) list addr: RX-type address, or register (1) or (2) - (12).
Parameters
The parameters are explained under the standard form of the WTL macro with the following
exception:
MF=(E,list addr)
Specifies the execute form of the WTL macro.
list addr is the name of a storage area to contain the parameters.
Description
Use the WTO macro to write a message to one or more operator consoles. See the section
on communication in OS/390 MVS Programming: Authorized Assembler Services Guide for
more information on using WTO. OS/390 MVS Programming: Assembler Services Reference
also contains information on WTO, with the exception of the AREAID, MSGTYP, CONNECT,
SYSNAME, JOBID, JOBNAME, LINKAGE, SYNCH, and WSPARM parameters.
Environment
If you code LINKAGE=SVC, the requirements for the caller are:
Minimum authorization: One of the following, depending on the parameters you code:
Problem state and any key.
If you code the AREAID, MSGTYP, CONNECT, SYSNAME,
JOBID, and JOBNAME parameters, one of the following:
– Supervisor state with 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: Must be in the primary address space.
Minimum authorization: One of the following, depending on the parameters you code:
Supervisor state and PSW key 0 - 7.
If you code the WSPARM parameter, supervisor state with
PSW key 0.
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: The caller may hold locks, but is not required to hold any.
Control parameters: Must be in the primary address space.
Programming Requirements
Be aware of the following when coding the WTO macro:
You must clear register 0 except under the following circumstances:
– You are using register 0 to pass a 1-byte console ID with MCSFLAG=REG0.
However, IBM recommends using the CONSID parameter rather than register 0.
– You are using register 0 to pass a message identifier to connect multiple-line
messages. However, IBM recommends using the CONNECT parameter rather than
register 0.
If the caller is disabled or issues WTO with the WSPARM parameter, the WTO and
LOADWAIT parameter lists must be in fixed storage.
When using any parameter with an address, the data being referenced must be
accessible by the caller issuing the WTO.
If the list and execute forms of the WTO macro are in separate modules, both modules
must be assembled or compiled with the same level of WTO.
When you're coding a reentrant program, make sure the WTO parameter list is
generated correctly. To ensure this, you must code the same parameters on both forms,
only when you code one or more of the following parameters:
– TEXT=(text addr)
– CONNECT
– CONSID
– CONSNAME
– SYSNAME
– CART
– KEY
– TOKEN
– JOBNAME
– JOBID
– LINKAGE
– WSPARM
On the list form, code only the parameter and the equal sign; do not code a parameter
value as well. For example:
WTO 'text',CONSID=,MF=L
If you specify parameter values on the list form, the system issues an MNOTE and
ignores the data.
For any WTO parameters that allow a register specification, the value must be
right-justified in the register.
If WSPARM is not equal to zero, the wait state is loaded whether or not the message
could be displayed or queued for hardcopy.
If you specify the TEXT keyword for a multi-line WTO on the list form, you must omit
text addr for each line, but include line type. If you specify text addr, the system ignores
the data and issues an MNOTE. On the execute form, omit line type for each line, but
include text addr.
Restrictions
If an SRB-mode caller issues WTO without the JOBID or JOBNAME parameter, the
WTO message will not have a job ID or jobname associated with it.
You should issue a synchronous message only in serious system emergencies.
There are two ways for authorized callers (supervisor state with PSW key 0-7) to issue
multiple-line messages:
1. You can issue a multiple-line WTO message of up to 255 lines with one WTO
macro. If you are coding more than one multiple-line message, and you want to
connect the messages, you must ensure that the left-most three bytes of register 0
are set correctly:
– For the first request (of up to 255 lines), these three bytes must be zero.
– For subsequent requests, register 0 can contain the message identifier that the
WTO service routine returns in register 1 after the first request. Note that you
must left-justify the 8-bit identifier when you load it into register 0.
– A WTO message with ROUTCDE=11 is sent to the JES2 system message
dataset (SYSMSG) unless LINKAGE=BRANCH is specified. In this case, the
message is not sent. If you want the WTO to go to SYSMSG, use
LINKAGE=SVC with ROUTCDE=11. Whether you issue LINKAGE=BRANCH
or LINKAGE=SVC with ROUTCDE=11, the message appears in the JES2
joblog.
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
Users who cannot wait because of a WTO buffer shortage should use the
MCSFLAG=BUSYEXIT parameter and then take appropriate action on the busy return.
SYNCH=YES causes the calling program to display the message, become disabled, and
receive the reply synchronously.
Syntax
The standard form of the WTO macro is written as follows:
WTO
,ROUTCDE=(routing code) routing code: Decimal digit from 1 to 128. The routing code is one
or more codes, separated by commas, or a hyphen to indicate a
range.
,DESC=(descriptor code) descriptor code: Decimal digit from 1 to 13. The descriptor code is
one or more codes, separated by commas.
,SYNCH=NO Default: NO
,SYNCH=YES
,WSPARM=0 Default: 0
,WSPARM=wait state addr wait state addr: RX-type address or register (2) - (12).
Parameters
The parameters are explained as follows:
‘msg’
(‘text’)
(‘text’,line type)
(‘text’,line type)
(‘text’,line type)
TEXT=(text addr)
TEXT=(text addr,line type)
TEXT=((text addr,line type),...(text addr,line type))
Specifies the message or multiple-line message to be written to one or more operator
consoles.
The parameter ‘msg’ is used to write a single-line message to the operator. In the
format, the message must be enclosed in apostrophes, which do not appear on the
console. It can include any character that can be used in a character (C-type) DC
instruction.
To have apostrophes appear in the message text, use two apostrophes to get one to
appear. For example, ''Message Off'' would appear on a display as 'Message Off'. When
a program issues a WTO macro, the system translates the text; only standard printable
EBCDIC characters are passed to MCS-managed display devices. The EBCDIC
characters that can be displayed are listed in OS/390 MVS Programming: Assembler
Services Guide. All other characters are replaced by blanks. Unless the console has
dual-case capability, lowercase characters are displayed or printed as uppercase
characters.
The message is assembled as a variable-length record. The parameters TEXT=(text
addr) and TEXT=(text addr,line type) represent a 4-byte address of a message to be
displayed that consists of a 2-byte message length followed by the message text. The
2-byte message length describes the length of the message text only. There are no
boundary requirements.
The parameters (‘text’) and (text addr,line type) are used to write a multiple-line
message to the operator. For a problem-state program, the message can be up to ten
lines long; the system truncates the message at the end of the tenth line. The ten-line
limit does not include the control line (message IEE932I), as explained under line type C
below. The message can be up to 255 lines maximum.
Notes:
The line type defines the type of information contained in the ‘text’ field of each line of
the message:
C Indicates that the ‘text’ parameter is the text to be contained in the control
line of the message. The control line normally contains a message title. C
may only be coded for the first line of a multiple-line message. If this
parameter is omitted and descriptor code 9 is coded, the system generates
a control line (message IEE932I) containing only a message identification
number. The control line remains static while you scroll through all the lines
of a multi-line message displayed on an MCS console (provided that the
message is displayed in an out-of-line display area). Control lines are
optional.
L Indicates that the ‘text’ parameter is a label line. Label lines contain
message heading information; they remain static while you scroll through all
the lines of a multi-line message displayed on an MCS console (provided
that the message is displayed in an out-of-line display area). Label lines are
optional. If coded, lines must either immediately follow the control line or
another label line, or be the first line of the multiple-line message if there is
no control line. Only two label lines may be coded per message. See
“Embedding Label Lines in a Multi-line Message” in OS/390 MVS
Programming: Authorized Assembler Services Guide for additional
information about how to include multiple label lines within a message.
D Indicates that the ‘text’ parameter contains the information to be conveyed
to the operator by the multiple-line message. The data lines are paged while
you scroll through all the lines of a multi-line message displayed on an MCS
console.
DE Indicates that the ‘text’ parameter contains the last line of information to be
passed to the operator. Specify DE on the last line of text of the WTO. If
there is no text on the last line, specify E.
E Indicates that the previous line of text was the last line of text to be passed
to the operator. The ‘text’ parameter, if any, coded with a line type of E is
ignored. Specify E on the last line of the WTO if that line has no text. If the
last line has text, specify DE.
,ROUTCDE=(routing code)
Specifies the routing code or codes to be assigned to the message.
The routing codes are:
Message Definition
Routing Code
1 Master console action
2 Master console information
3 Tape pool
Message Definition
Routing Code
4 Direct access pool
5 Tape library
6 Disk library
7 Unit record pool
8 Teleprocessing control
9 System security
10 System error/maintenance/system programmer information
11 Programmer information
12 Emulators
13-20 Reserved for customer use
21-28 Reserved for IBM- or customer-defined subsystem use
29-41 Reserved for IBM
42 General information about JES2 or JES3
43-64 Reserved for JES2 or JES3
65-96 Messages associated with particular processors
97-128 Messages associated with particular devices
If you omit the ROUTCDE, DESC, and CONSID or CONSNAME keywords, the system
uses the routing code specified on the ROUTCODE keyword on the DEFAULT
statement in the CONSOLxx member of SYS1.PARMLIB.
Note: Routing codes 1, 2, 3, 4, 7, 8, 10, and 42 cause hard copy of the message when
display consoles are used, or more than one console is active. All other routing
codes may go to hard copy as a PARMLIB option or as a result of a VARY
HARDCPY command.
,DESC=(descriptor code)
Specifies the message descriptor code or codes to be assigned to the message.
Descriptor codes 1 through 6, 11 and descriptor code 12 are mutually exclusive. Codes
7 through 10, and 13, can be assigned in combination with any other code.
The descriptor codes are:
Message Definition
Descriptor
Code
1 System failure
2 Immediate action required
3 Eventual action required
4 System status
5 Immediate command response
6 Job status
7 Retain action message for life-of-task
8 Out-of-line message
9 Operator request
10 Dynamic status displays
11 Critical eventual action requested
12 Important information messages
13 Message previously automated
Action messages many have an * sign or @ sign displayed before the first character of the
message. The * sign indicates that the WTO was issued by an authorized program. The @
sign indicates that the WTO was issued by an unauthorized program.
All WTO messages with descriptor codes 1, 2, or 11 are action messages that have an
asterisk (*) sign displayed before the first character of the message. This indicates a need
for operator action. These action messages will cause the audible alarm to sound on
operator consoles so-equipped. On operator consoles that support color, descriptor codes
determine the color in which a message should be displayed. Colors can indicate the type of
action you need to take depending on your installation setup. The colors used for different
descriptor codes are described in OS/390 MVS System Commands.
The system holds messages with descriptor codes 1, 2, 3, or 11 until you delete them. When
you no longer need messages with descriptor codes 1, 2, 3, or 11, you should delete those
messages using the DOM macro. If messages with descriptor codes 1, 2, 3, or 11 also have
descriptor code 7, the system deletes them automatically at task termination. the system
adds descriptor code 7 to all messages with descriptor code 1 or 2.
The message processing facility (MPF) can suppress messages. For MPF to suppress
messages, the hardcopy log must be active. The suppressed messages do not appear on
any console; they do appear on the hardcopy log.
,AREAID=id char
Specifies a display area of the console screen on which a multiple-line message is to be
written.
Valid area IDs are A through J and Z. A through J refer to out-of-line areas defined on
an MCS console by the CONTROL A command. The character Z designates the
message area (the screen's general message area, rather than a defined display area);
it is assumed if nothing is specified. The areas are explained in OS/390 MVS System
Commands.
Notes:
,MSGTYP=(msg type)
Specifies how the message is to be routed to consoles on which the MONITOR
command is active. If you specify anything other than MSGYTP=N, which is the default,
your message will be routed according to your specification on MSGTYP, and the
ROUTCDE parameter is ignored.
For SESS, JOBNAMES, or STATUS, the message is to be routed to the console that
issued the MONITOR SESS, MONITOR JOBNAMES, or MONITOR STATUS command,
respectively. When the message type is identified by the operating system, the message
is routed to those consoles that requested the information.
For Y, the message type describes what functions (MONITOR SESS, MONITOR
JOBNAMES, and MONITOR STATUS) are desired. N, or omission of the MSGTYP
parameter, indicates that the message is to be routed as specified in the ROUTCDE
parameter. Y creates an area in the WTO parameter list in which you can set message
type information if you are coding a WTO without any of the following parameters:
KEY
TOKEN
CONSID
CONSNAME
TEXT
REPLYISUR
CART
LINKAGE
SYNCH
,MCSFLAG=(flag name)
Specifies one or more flags whose meanings are shown below:
Notes:
1. Do not use REG0 or QREG0 if you use the CONSID or CONSNAME parameters.
2. MCSFLAG=HRDCPY and SYNCH=YES are mutually exclusive.
,CONNECT=connect field
Specifies a field containing the 4-byte message ID of the previous WTO to which this
WTO is to be connected. This message ID is obtained as an output parameter (returned
in register 1) from the previous WTO. If a register is used, it contains the address of the
message ID.
CONNECT is valid only for continuation of multiple-line messages. When you specify
this parameter in the list form, code it as CONNECT= with nothing after the equal sign.
This parameter is mutually exclusive with the CONSID, CONSNAME, and SYSNAME
parameters.
Note: If you specify LINKAGE=SVC, you can still use register 0, as mentioned at the
beginning of the WTO macro description, to connect WTO messages. If you
specify both register 0 and CONNECT, however, the system uses the
CONNECT parameter. IBM recommends that you use the CONNECT parameter.
,CONSID=console id
Specifies a 4-byte field containing the ID of the console to receive a message. Use this
ID in place of a console ID in register 0. If you specify a 4-byte console ID, or if you
specify a console ID for an extended MCS console, you must use CONSID instead of
register 0. If you specify a 1-byte console ID, you must right-justify it and pad to the left
with zeroes. Issue the DISPLAY CONSOLE command for a list of valid console IDs.
Notes:
1. If you code the CONSID parameter using a register, the register must contain the
console ID itself, rather than the address of the console ID.
2. When you code CONSID on the list form of WTO, code it as CONSID= with nothing
after the equal sign.
3. Do not use both CONSID and register 0 to pass a console ID, because the results
are unpredictable. Be sure to clear the low-order byte of register 0 if you add the
CONSID parameter to an existing invocation of WTO.
4. CONSID is mutually exclusive with the CONNECT, CONSNAME, and SYSNAME
parameters.
,CONSNAME=console name
Specifies an 8-byte field containing a 2- through 8-character name, left-justified and
padded with blanks, of the console to receive a message. When you specify this
parameter in the list form, code it as CONSNAME= with nothing after the equal sign.
Do not use CONSNAME to pass a console name, together with register 0 to pass a
console ID, because the results are unpredictable. Be sure to clear the low-order byte of
register 0 if you add the CONSNAME parameter to an existing invocation of WTO.
This parameter is mutually exclusive with the CONSID, CONNECT, and SYSNAME
parameters.
,SYSNAME=system name
Specifies an 8-byte input field containing a system name to be associated with this
message. The system name is that of the system from which the caller issues the WTO.
When you specify this parameter in the list form, code it as SYSNAME= with nothing
after the equal sign.
This parameter is mutually exclusive with the CONNECT parameter.
,CART=cmd/resp token
Specifies an 8-character input field containing a command and response token to be
associated with this message. The command and response token is used to associate
user information with a command and its command response. You can supply any
value as a command and response token. When you specify this parameter in the list
form, code it as CART= with nothing after the equal sign.
,KEY=key
Specifies an input field containing an 8-byte key to be associated with this message.
The key must be EBCDIC if used with the MVS DISPLAY R command for retrieval
purposes, but it must not be ‘*’. The key must be left-justified, and padded on the right
with blanks. If a register is used, it contains the address of the key. When you specify
this parameter in the list form, code it as KEY= with nothing after the equal sign.
,TOKEN=token
Specifies an input field containing a 4-byte token to be associated with this message.
This field is used to identify a group of messages that can be deleted by a DOM macro
that includes TOKEN. The token must be unique within an address space and can be
any value. When you specify this parameter in the list form, code it as TOKEN= with
nothing after the equal sign.
Note: When you code the TOKEN parameter using a register, the register must contain
the token itself, rather than the address of the token.
,JOBID=job id
Specifies an 8-byte input field containing an ID that identifies the issuer of the WTO
message. When you specify this parameter in the list form, code it as JOBID= with
nothing after the equal sign.
,JOBNAME=jobname
Specifies an 8-byte input field containing a name that identifies the issuer of the WTO
message. When you specify this parameter in the list form, code it as JOBNAME= with
nothing after the equal sign.
,LINKAGE=SVC
,LINKAGE=BRANCH
Specifies how control is to pass to the WTO service.
LINKAGE=SVC indicates that the linkage is by a supervisor call. If LINKAGE is not
specified, this is the default.
LINKAGE=BRANCH indicates that the linkage is by a branch-and-link. This parameter is
used by programs that run at times when an SVC cannot be issued, and by programs
that require the WTO request to be handled synchronously.
When you specify this parameter in the list form, code it as LINKAGE= with nothing after
the equal sign.
If you specify LINKAGE=BRANCH, you cannot put the CONNECT value in register 0.
You must use the CONNECT keyword.
,SYNCH=NO
,SYNCH=YES
Specifies whether the WTO request processes synchronously with the caller.
SYNCH=NO, the default, indicates that the request is not processed synchronously.
SYNCH=YES indicates that the request is to be processed synchronously. This
parameter is used in error and recovery environments, when normal message
processing cannot be used. The message is sent to a console, where it is held on the
screen for up to ten seconds, before control is returned to the caller. A copy of the
message is queued for transcription to the hardcopy log.
If you specify SYNCH=YES:
Your installation can determine which consoles can receive synchronous messages by
using the SYNCHDEST parameter in the CONSOLxx member of SYS1.PARMLIB. For
additional information on the SYNCHDEST parameter, see OS/390 MVS Initialization
and Tuning Reference.
,WSPARM=0
,WSPARM=wait state addr
Specifies whether a wait state is associated with this message.
A value of zero indicates that there is no wait state associated with this message. If you
do not specify WSPARM, this is the default.
A nonzero value indicates either the address of a LOADWAIT parameter list or a
register containing a pointer to the parameter list. The LOADWAIT macro generates the
LOADWAIT parameter list. When you specify this parameter in the list form, code it as
WSPARM= with nothing after the equal sign.
This parameter requires the SYNCH=YES and LINKAGE=BRANCH parameters.
ABEND Codes
WTO might abnormally terminate with abend code X'D23'. See OS/390 MVS System
Codes for an explanation and programmer response for this code.
Example 1
Issue a WTO with routing codes 1 and 10, descriptor code 2, using the BUSYEXIT option of
the MCSFLAG parameter. Send an immediate action message to the master console. If
there is a WTO buffer shortage, WTO will return rather than wait for an available buffer.
WTO 'USR221I CRITICAL RESOURCE SHORTAGE DETECTED',X
ROUTCDE=(1,12), X
DESC=(2),MCSFLAG=BUSYEXIT
Example 2
Issue an important information message to a console whose name is defined in field
MYCONS. This message is issued using the branch-entry option.
Example 3
Issue a multi-line message using the TEXT parameter. This is an important information
message which does not have a time stamp and is not sent to the hardcopy log.
WTO TEXT=((REMIND1,D),(REMIND2,D),(REMIND3,DE)),X
DESC=(12),MCSFLAG=(NOTIME,NOCPY)
.
.
.
REMIND1 DC AL2(L'RMD1TXT)
RMD1TXT DC C'USR223I REMINDER: THE SYSTEM IS NOT AVAILABLE FOR USEX
ON THIRD SHIFT'
REMIND2 DC AL2(L'RMD2TXT)
RMD2TXT DC C'FOR SPECIAL REQUESTS CONTACT SYSTEM SUPPORT'
REMIND3 DC AL2(L'RMD3TXT)
RMD3TXT DC C'CALL THE STATUS DESK FOR FURTHER INFORMATION'
WTO—List Form
Use the list form of the WTO 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 WTO macro is written as follows:
WTO
,ROUTCDE=(routing code) routing code: Decimal digit from 1 to 128. The routing code is one
or more codes, separated by commas, or a hyphen to indicate a
range.
,DESC=(descriptor code) descriptor code: Decimal digit from 1 to 13. The desc code is one
or more codes, separated by commas.
,CONNECT= Parameter value not required for list form. Code only ,CONNECT=.
If you code CONNECT on the execute form of WTO, you must
code the same parameter on the list form.
,CONSID= Parameter value not required for list form. Code only ,CONSID= (or
,CONSNAME=). If you code CONSID (or CONSNAME) on the
execute form of WTO, you must code the same parameter on the
list form.
,CONSNAME=
,SYSNAME= Parameter value not required for list form. Code only ,SYSNAME=.
If you code SYSNAME on the execute form of WTO, you must
code the same parameter on the list form.
,CART= Parameter value not required for list form. Code only ,CART=. If
you code CART on the list form of WTO, you must code CART on
the execute form.
,KEY= Parameter value not required for list form. Code only ,KEY=. If you
code KEY on the list form of WTO, you must code KEY on the
execute form.
,TOKEN= Parameter value not required for list form. Code only ,TOKEN=. If
you code TOKEN on the list form of WTO, you must code TOKEN
on the execute form.
,JOBID= Parameter value not required for list form. Code only ,JOBID=. If
you code JOBID on the list form of WTO, you must code JOBID on
the execute form.
,JOBNAME= Parameter value not required for list form. Code only ,JOBNAME=.
If you code JOBNAME on the list form of WTO, you must code
JOBNAME on the execute form.
,LINKAGE= Parameter value not required for list form. Code only ,LINKAGE=.
If you code LINKAGE on the list form of WTO, you must code
LINKAGE on the execute form.
,SYNCH=NO Default: NO
,SYNCH=YES
,WSPARM= Parameter value not required for list form. Code only ,WSPARM=.
If you code WSPARM on the list form of WTO, you must code
WSPARM on the execute form.
,MF=L
Parameters
The parameters are explained under the standard form of the WTO macro with the following
exception:
,MF=L
Specifies the list form of the WTO macro.
WTO—Execute Form
Use the execute form of the WTO 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.
The message cannot be modified on the execute form of the macro if you code inline text
(‘msg’ or (‘text’...)) on the list form.
Syntax
The execute form of the WTO macro is written as follows:
WTO
TEXT=(text addr)
TEXT=((text addr,),(text addr,),...(text addr,))
text addr: RX-type address or register (2) - (12).
Notes:
1. If you code TEXT=(text addr) on the execute form of WTO,
you must code TEXT= on the list form.
2. If you specify inline text on the list form (‘msg’ or (‘text’...)), do
not code the TEXT keyword on the execute form.
,CONNECT=connect field connect field: RX-type address or register (2) - (12). If you code
CONNECT on the execute form of WTO, you must code the same
parameter on the list form.
,SYSNAME=system name system name: RX-type address or register (2) - (12). If you code
SYSNAME on the execute form of WTO, you must code the same
parameter on the list form.
,CART=cmd/resp token cmd/resp token: RX-type address or register (2) - (12). If you code
CART on the execute form of WTO, you must code CART on the
list form.
,KEY=key key: RX-type address or register (2) - (12). If you code KEY on the
execute form of WTO, you must code KEY on the list form.
,TOKEN=token token: RX-type address or register (2) - (12). If you code TOKEN
on the execute form of WTO, you must code TOKEN on the list
form.
,JOBID=job id job id: RX-type address or register (2) - (12). If you code JOBID on
the execute form of WTO, you must code JOBID on the list form.
,LINKAGE=BRANCH If you code LINKAGE on the execute form of WTO, you must code
LINKAGE on the list form.
,SYNCH=NO Default: NO
,SYNCH=YES
,WSPARM=0 Default: 0
,WSPARM=wait state addr wait state addr: RX-type address or register (2) - (12).
If you code WSPARM on the execute form of WTO, you must code
WSPARM on the list form.
Parameters
The parameters are explained under the standard form of the WTO macro, with the following
exception:
Example
Write a message with a prebuilt parameter list pointed to by register 1.
WTO MF=(E,(1))
Description
The WTOR macro causes a message requiring a reply to be written to one or more operator
consoles and the hardcopy log. The macro also provides the information required by the
system to return the reply to the issuing program. See OS/390 MVS Programming:
Authorized Assembler Services Guide for more information on using the WTOR macro.
For information about how to select a macro for an MVS/SP version other than the current
version, see “Selecting the Macro Level” on page 7.
The description of the WTOR macro follows. The WTOR macro is also described in OS/390
MVS Programming: Assembler Services Reference, with the exception of the MSGTYP,
SYSNAME, JOBID, JOBNAME, LINKAGE, and SYNCH parameters.
Environment
If you code LINKAGE=SVC, the requirements for the caller are:
Minimum authorization: One of the following, depending on the parameters you code:
Problem state and PSW key 0-7.
If you code the MSGTYP, SYSNAME, JOBID, JOBNAME, and
SYNCH parameters, one of the following:
– Supervisor state with 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: Must be in the primary address space
Programming Requirements
Be aware of the following when coding the WTOR macro:
The caller must clear register 0 unless using register 0 to pass a 1-byte console ID with
MCSFLAG=REG0. However, IBM recommends using the CONSID parameter rather
than register 0.
The parameter list for WTOR must begin on a fullword boundary.
If the caller is disabled, the WTOR parameter list, reply area, and reply ECB must be in
fixed storage.
If the list and execute forms of the WTOR macro are in separate modules, both modules
must be assembled or compiled with the same level of WTOR.
When you're coding a reentrant program, make sure the WTOR parameter list is
generated correctly. To ensure this, you must code the same parameters on both forms,
only when you code one or more of the following parameters:
– RPLYISUR
– CONSID
– CONSNAME
– SYSNAME
– CART
– KEY
– TOKEN
– JOBNAME
– JOBID
– LINKAGE
On the list form, code only the parameter and the equal sign; do not code a parameter
value as well. If you specify parameter values on the list form, the system issues an
MNOTE and ignores the data.
For any WTOR keywords that allow a register specification, the value must be
right-justified in the register.
If you specify the TEXT keyword for a multi-line WTOR, you must code its parameters in
the following way:
– On the list form, omit text addr for each line, but include line type. If you specify text
addr, the system ignores the data and issues an MNOTE.
– On the execute form, omit line type for each line, but include text addr.
Restrictions
If the LINKAGE=BRANCH parameter is specified, the SYNCH=YES parameter is required.
You can issue a multi-line WTOR only if you specify LINKAGE=BRANCH, SYNCH=YES.
Issue a synchronous message only if your program is in a state in which it cannot issue an
ordinary WTOR (LINKAGE=SVC), and you must receive operator input before continuing.
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
SYNCH=YES causes the calling program to display the message, become disabled, and
receive the reply synchronously.
Syntax
The standard form of the WTOR macro is written as follows:
WTOR
,ROUTCDE=(routing code) routing code: Decimal digit from 1 to 128. The routing code is one
or more codes, separated by commas, or a hyphen to indicate a
range.
,DESC=(descriptor code) descriptor code: Decimal number 7 or 13. If you code both 7 and
13, separate them with commas.
,SYNCH=NO Default: NO
,SYNCH=YES
Parameters
The parameters are explained as follows:
system truncates the message at the end of the tenth line. The ten-line limit does not
include the control line (message IEE932I), as explained under line type C below. The
message can be up to 14 lines maximum.
Notes:
1. You can issue a multi-line WTOR only if you specify SYNCH=YES. See the SYNCH
parameter description for information about its use.
2. If you code the parameter (‘text’) without repetition, the message appears as a
single-line message.
3. Specify all lines of a multiple-line WTOR consistently with the message text or the
TEXT keyword. When coding the TEXT keyword for a multiple-line message, do not
exceed the 67-character limit for the macro parameter value.
The line type defines the type of information contained in the ‘text’ field of each line of
the message:
C Indicates that the ‘text’ parameter is the text to be contained in the control
line of the message. The control line normally contains a message title. C
may be coded only for the first line of a multiple-line message. The control
line remains static while you scroll through all the lines of a multi-line
message displayed on an MCS console (provided that the message is
displayed in an out-of-line display area). Control lines are optional.
L Indicates that the 'text' parameter is a label line. Label lines contain
message heading information; they remain static while you scroll through all
the lines of a multi-line message displayed on an MCS console (provided
that the message is displayed in an out-of-line display area). Label lines are
optional. If coded, lines must either immediately follow the control line or
another label line or be the first line of the multiple-line message if there is
no control line. Only two label lines may be coded per message. See
“Embedding Label Lines in a Multi-line Message” in OS/390 MVS
Programming: Authorized Assembler Services Guide for additional
information about how to include multiple label lines within a message.
D Indicates that the ‘text’ parameter contains the information to be conveyed
to the operator by the multiple-line message. The data lines are paged
during framing operations on a display console.
DE Indicates that the ‘text’ parameter contains the last line of information to be
passed to the operator. Specify DE on the last line of text of the WTO. If
there is no text on the last line, specify E.
E Indicates that the previous line of text was the last line of text to be passed
to the operator. The ‘text’ parameter, if any, coded with a line type of E is
ignored. Specify E on the last line of the WTOR if that line has no text. If
the last line has text, specify DE.
Note: All WTOR messages are action messages. An indicator appears before the first
character of an action message to indicate a need for operator action. Action
messages will cause the audible alarm to sound on operator consoles
so-equipped.
reply addr specifies the address in virtual storage of the area into which the system is to
place the reply. The reply is left-justified at this address.
reply length specifies the length, in bytes, of the reply message.
ecb addr specifies the address of the event control block (ECB) to be used by the
system to indicate the completion of the reply and the ID of the replying console. The
ECB address must point to a fullword boundary. After the system receives the reply, the
ECB appears as follows:
,ROUTCDE=(routing code)
Specifies the routing code or codes to be assigned to the message.
The routing codes are:
If you omit the ROUTCDE, and CONSID or CONSNAME keywords, the system uses the
routing code specified on the ROUTCODE keyword on the DEFAULT statement in the
CONSOLxx member of SYS1.PARMLIB. See OS/390 MVS Initialization and Tuning
Reference for information about CONSOLxx.
,DESC=(descriptor code)
Specifies the message descriptor code or codes to be assigned to the message. Valid
descriptor codes for the WTOR macro are:
All WTOR messages are action messages that have an asterisk (*) sign displayed
before the first character. This indicates a need for operator action.
The system adds descriptor code 7 to all WTOR messages. The system holds all
WTOR messages until one of the following events occurs:
The system deletes the WTOR message when the reply is received.
You delete the WTOR message using the DOM macro. You should delete any
unanswered WTOR messages that are no longer current.
The system deletes the WTOR message at task termination.
The message processing facility (MPF) can suppress messages. For MPF to suppress
messages, the hardcopy log must be active. The suppressed messages do not appear
on any console; they do appear on the hardcopy log.
,MSGTYP=(msg type)
Specifies how the message is to be routed to consoles on which the MONITOR
command is active. If you specify anything other than MSGTYP=N, which is the default,
your message is routed according to your specification on MSGTYP, and the ROUTCDE
parameter is ignored.
For SESS, JOBNAMES, or STATUS, the message is to be routed to the console that
issued the MONITOR SESS, MONITOR JOBNAMES, or MONITOR STATUS command,
respectively. When the message type is identified by the operating system, the message
is routed to only those consoles that requested the information.
For Y or N, the message type describes what functions (MONITOR SESS, MONITOR
JOBNAMES, and MONITOR STATUS) are desired. N, or omission of the MSGTYP
parameter, indicates that the message is to be routed as specified in the ROUTCDE
parameter. Y creates an area in the WTO parameter list in which you can set message
type information if you are coding a WTOR without any of the following parameters:
KEY
TOKEN
CONSID
CONSNAME
TEXT
RPLYISUR
CART
LINKAGE
SYNCH
,MCSFLAG=(flag name)
Specifies one or more flag names whose meanings are shown below:
,RPLYISUR=reply console
Specifies a 12-byte field where the system will place the 8-byte console name and the
4-byte console ID of the console through which the operator replies to this message.
When you specify this keyword in the list form, code it as RPLYISUR= with nothing after
the equal sign.
,CONSID=console id
Specifies a 4-byte field containing the ID of the console to receive a message. Issue the
DISPLAY CONSOLES command to display a list of valid console IDs. Use this ID in
place of a console ID in register 0. If you specify a 4-byte console ID, or if you specify a
console ID for an extended MCS console, you must use CONSID instead of register 0. If
you specify a 1-byte console ID, you must right-justify it and pad to the left with zeroes.
Notes:
1. If you code the CONSID parameter using a register, the register must contain the
console ID itself, rather than the address of the console ID.
2. When you code CONSID on the list form of WTOR, code it as CONSID= with
nothing after the equal sign.
3. Do not use both CONSID and register 0 to pass a console ID, because the results
are unpredictable. Be sure to clear the low-order byte of register 0 if you add the
CONSID parameter to an existing invocation of WTOR.
4. CONSID is mutually exclusive with the CONSNAME parameter.
,CONSNAME=console name
Specifies an 8-byte field containing a 2- through 8-character name, left-justified and
padded with blanks, of the console to receive a message. This parameter is mutually
exclusive with the CONSID parameter. When you specify this keyword in the list form,
code it as CONSNAME= with nothing after the equal sign. Do not use CONSNAME to
pass a console name, together with register 0 to pass a console ID, because the results
are unpredictable. Be sure to clear the low-order byte of register 0 if you add the
CONSNAME parameter to an existing invocation of WTOR.
,SYSNAME=system name
Specifies an 8-byte input field containing a system name to be associated with this
message. The system name is that of the system from which the caller issues the
WTOR message. When you specify this parameter in the list form, code it as
SYSNAME= with nothing after the equal sign.
,CART=cmd/resp token
Specifies an 8-byte field containing a command and response token to be associated
with this message. You can specify any value as a command and response token. The
command and response token is used to associate user information with a command
and its command response. When you specify this keyword in the list form, code it as
CART= with nothing after the equal sign.
,KEY=key
Specifies a field containing an 8-byte key to be associated with this message. The key
must be EBCDIC if used with the MVS DISPLAY R command for retrieval purposes, but
it must not be ‘*’. The key must be left-justified and padded on the right with blanks. If a
register is used, it contains the address of the key. When this keyword is specified in the
list form, it must be coded as KEY= with nothing after the equal sign.
,TOKEN=token
Specifies a field containing a 4-byte token to be associated with this message. This field
is used to identify a group of messages that can be deleted by a DOM macro that
includes TOKEN. The token must be unique within an address space, and can be any
value. When you specify this keyword on the list form, code it as TOKEN= with nothing
after the equal sign.
Note: When you code the TOKEN parameter using a register, the register must contain
the token itself, rather than the address of the token.
,JOBID=job id
Specifies an 8-byte input field containing an ID that specifies the issuer of the WTOR
message. When you specify this parameter in the list form, code it as JOBID= with
nothing after the equal sign.
,JOBNAME=jobname
Specifies an 8-byte input field containing a name that specifies the issuer of the WTOR
message. When you specify this parameter in the list form, code it as JOBNAME= with
nothing after the equal sign.
,LINKAGE=SVC
,LINKAGE=BRANCH
Specifies how control is to pass to the WTOR service.
LINKAGE=SVC indicates the linkage is by a supervisor call. If LINKAGE is not specified,
this is the default.
LINKAGE=BRANCH indicates the linkage is by a branch-and-link. You must use
SYNCH=YES with this parameter. This parameter is used by programs that require the
WTOR request to be handled synchronously.
When you specify this keyword in the list form, code it as LINKAGE= with nothing after
the equal sign.
,SYNCH=NO
,SYNCH=YES
Specifies whether the WTOR request processes synchronously with the caller.
SYNCH=NO, the default, indicates that the request is not processed synchronously.
SYNCH=YES indicates the request is to be processed synchronously. This parameter is
used in error and recovery environments, when normal message processing cannot be
used. The message is sent to the console, and the reply is obtained immediately, before
control is returned to the caller. Before return, the reply and reply length are moved to
the areas specified by the caller, and the ecb marked “complete.” Copies of the
message and reply are queued for transcription to the hardcopy log.
If you specify SYNCH=YES:
Your installation can determine which consoles can receive synchronous messages by
using the SYNCHDEST parameter in the CONSOLxx member of SYS1.PARMLIB. For
additional information on the SYNCHDEST parameter, see OS/390 MVS Initialization
and Tuning Reference.
ABEND Codes
WTOR might abnormally terminate with abend code X'D23'. See OS/390 MVS System
Codes for an explanation and programmer response for this code.
Example 1
Issue a WTOR to the master console.
L8 EQU 8
.
.
.
WTOR 'USR922A REPLY YES OR NO TO CONTINUE.',REPLY,L8,REPECB, X
ROUTCDE=(1),RPLYISUR=CONINFO
.
.
.
REPLY DS CL8
REPECB DS F
CONINFO DS CL12
Example 2
Issue a WTOR with the TEXT parameter. The message is to go to a specific console whose
name is in field TOCON.
R4 EQU 4
R5 EQU 5
LENG12 EQU 12
.
.
.
LA R4,CATMSG
LA R5,TAPEAREA
WTOR TEXT=((R4),REPAREA,LENG12,TAPEECB), X
CONSNAME=TOCON, X
RPLYISUR=(R5)
.
.
.
CATMSG DC AL2(L'REP64) 22211822
REP64 DC C'USR922A INDICATE NUMBER OF TAPE DRIVES REQUIRED.'
TOCON DC CL8'TAPECON '
REPAREA DS CL12
TAPEECB DS F
TAPEAREA DS CL12
Example 3
Issue a branch-entry WTOR.
C82 EQU 82
.
.
.
WTOR 'USR942I ENTER THE NAMES OF AFFECTED JOBS:',REPAR6,C82,JX
OBSECB,RPLYISUR-JOBCONS, X
ROUTCDE=(1),LINKAGE=BRANCH,SYNCH=YES
.
.
.
REPAR6 DS CL82
JOBSECB DS F
JOBCONS DS CL12
Example 4
Issue a WTOR using the TEXT parameter with the list and execute forms of the macro. The
console ID to which the message is to be queued is assumed to be in field MYCONID. On
the TEXT parameter for the execute form, commas mark the positions of reply addr and ecb
addr; for the list form, a comma marks the position of reply length.
R12 EQU 12
C52 EQU 52 LENGTH OF REPLY AREA
USING ,R12
.
.
.
WTOR MF=(E,M2,EXTENDED),TEXT=(MESSAGE,,C52,),CONSID=MYCONID, X
RPLYISUR=MYCONAR
.
.
.
M2 DS 2H
WTOR TEXT=(,RAREA,,MYECB),CONSID=,ROUTCDE=(2),RPLYISUR=,MF=L
MYCONID DS F
RAREA DS CL52
MYECB DS F
MYCONAR DS CL12
MESSAGE DC AL2(L'MTEXT)
MTEXT DC C'USR932A REQUEST IS AMBIGUOUS. RESPECIFY DEVICE.'
END
WTOR—List Form
Use the list form of the WTOR 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 WTOR macro is written as follows:
WTOR
Notes:
1. If you code ‘msg’... or (‘text’...), it must be the first parameter
you code.
2. If you do not code reply addr on the list form of WTOR, mark
its position with a comma, and code reply addr on the execute
form. The same is true for reply length and ecb addr.
,ROUTCDE=(routing code) routing code: Decimal digit from 1 to 128. The routing code is one
or more codes, separated by commas, or a hyphen to indicate a
range.
,DESC=(descriptor code) descriptor code: Decimal number 7 or 13. If you code both 7 and
13, separate them with commas.
,RPLYISUR= Parameter value not required for list form. Code only ,RPLYISUR=.
If you code RPLYISUR on the list form of WTOR, you must code
RPLYISUR on the execute form.
,CONSID= Parameter value not required for list form. Code only ,CONSID= (or
,CONSNAME=). If you code CONSID (or CONSNAME) on the list
form of WTOR, you must code CONSID (or CONSNAME) on the
execute form.
,CONSNAME=
,SYSNAME= Parameter value not required for list form. Code only ,SYSNAME=.
If you code SYSNAME on the list form of WTOR, you must code
SYSNAME on the execute form.
,CART= Parameter value not required for list form. Code only ,CART=. If
you code CART on the list form of WTOR, you must code CART
on the execute form.
,KEY= Parameter value not required for list form. Code only ,KEY=. If you
code KEY on the list form of WTOR, you must code KEY on the
execute form.
,TOKEN= Parameter value not required for list form. Code only ,TOKEN=. If
you code TOKEN on the list form of WTOR, you must code
TOKEN on the execute form.
,JOBID= Parameter value not required for list form. Code only ,JOBID=. If
you code JOBID on the list form of WTOR, you must code JOBID
on the execute form.
,JOBNAME= Parameter value not required for list form. Code only ,JOBNAME=.
If you code JOBNAME on the list form of WTOR, you must code
JOBNAME on the execute form.
,LINKAGE= Parameter value not required for list form. Code only ,LINKAGE=.
If you code LINKAGE on the list form of WTOR, you must code
LINKAGE on the execute form.
,SYNCH=NO Default: NO
,SYNCH=YES
,MF=L
Parameters
The parameters are explained under the standard form of the WTOR macro with the
following exception:
,MF=L
Specifies the list form of the WTOR macro.
WTOR—Execute Form
Use the execute form of the WTOR 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.
The message cannot be modified on the execute form of the macro if you code inline text
(‘msg’... or (‘text’...)) on the list form.
Syntax
The execute form of the WTOR macro is written as follows:
WTOR
,RPLYISUR=reply console reply console: RX-type address or register (2) - (12). If you code
RPLYISUR on the execute form of WTOR, you must code
RPLYISUR on the list form.
,SYNCH=NO Default: NO
,SYNCH=YES
Parameters
These parameters are explained under the standard form of the WTOR macro, with the
following exceptions:
,MF=(E,list addr)
,MF=(E,list addr,EXTENDED)
Specifies the execute form of the WTOR macro.
list addr specifies the area that the system uses to store the parameters.
If you specify reply addr, reply length, ecb addr, or RPLYISUR on the execute form of
WTOR, together with one or more of the following parameters, you must specify
EXTENDED for the system to generate the parameter list correctly:
KEY
TOKEN
CONSID
CONSNAME
TEXT
RPLYISUR
CART
LINKAGE
SYNCH
Example
Write a message with a prebuilt parameter list pointed to by register 1.
WTOR MF=(E,(1))
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:
AFP
CICS
DFSORT
ESA/390
IBM
IBMLink
MVS/ESA
MVS/SP
MVS/XA
OS/390
Print Services Facility (PSF)
RMF
SP
SP1
SP2
Other company, product and service names may be the trademarks or service marks of
others.
T
T6EXIT macro 185
TCBTOKEN macro 169
description 169
TCTL macro 175
TESTAUTH macro 177
time limit
establishing for system service 91
TIMEUSED macro 181
U
UCB (unit control block)
obtaining address 221
pinning 231
scanning 239
unpinning 231
UCBINFO macro 187
UCBLOOK macro 221
UCBPIN macro 231
UCBSCAN macro 239
user parameter
passing 3
V
vector time
obtaining accumulated 181
virtual storage
map 257
obtaining private area region size 271
verifying allocation 265
VSMLIST macro 257
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 4
(SETFRR-WTOR)
Publication No. GC28-1767-09
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-1767-09
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-1767-09 Along Line
IBM
GC28-1767-29