1 - 0 ... 0 ...

advertisement
1
0
0
0
0
0
1
-
NIH Extended WYLBUR
Internal Design
Specifications
October 1986
Computer Center
Division of Computer Research and Technology
National Institutes of Health
Table of Contents
Cataloged Procedures . . . . .
0Assembly Structure . . . . . .
0
Selecting Assembly Options
0COMMON Module Directory . . .
0COMMON Register Conventions .
0COMMON Control Block Directory
0MACRO Descriptions . . . . . .
0 Conventions . . . . . . . .
0 COMMON Macros . . . . . . .
0
APRIVSCN . . . . . . . . .
APRIVSEG . . . . . . . . .
0
AREA, AREAORG and AREAEND
0
BLDLLIST . . . . . . . . .
0
CBDELINK . . . . . . . . .
CBDLINKH . . . . . . . . .
CBDLINKT . . . . . . . . .
CBLINK . . . . . . . . . .
CBLINKH . . . . . . . . .
CBLINKT . . . . . . . . .
CBINIT . . . . . . . . . .
0
CDESRCH . . . . . . . . .
0
CAMODE . . . . . . . . . .
CBAL . . . . . . . . . . .
CBALR . . . . . . . . . .
CBASE . . . . . . . . . .
CCALL . . . . . . . . . .
CENTER . . . . . . . . . .
CEXIT . . . . . . . . . .
CPOP . . . . . . . . . . .
CPOPREG . . . . . . . . .
CPUSH . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
6
7
14
15
16
17
17
20
20
21
22
24
25
27
29
31
33
35
37
38
39
40
41
42
43
45
46
47
48
49
0
CPUSHREG
CSA . .
CSAVGEN
CSAVLINK
CSETUP .
CHKACCT
CHKBOX .
CHKINIT
CHKKW .
CHKTERM
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
50
51
52
53
54
55
56
57
58
59
CSPOST .
CVBTD .
CVBTX .
CVBT$ .
CVDATE .
CVDTB .
CVTIME .
CVTIM128
CVXTB .
DALLIST
DALMSG .
DCC . .
DEBLANK
DSC . .
EDIT . .
FASTPOST
FASTWAIT
FLAGSEG
FREESWAM
GBLSET .
IPRIVSCN
IPRIVSEG
MCCW . .
OPENP .
ORGHIGH
OSCALL .
OSENTER
OSEXIT .
OSSETUP
SCABBR .
SCAN . .
SCBACK .
SCDONE .
SCDQUOTE
SCERROR
SCEXTRA
SCINIT .
SCKW . .
SCLAST .
SCPOP .
SCPUSH .
SCRTN .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
60
61
62
63
64
65
66
67
68
69
72
74
75
77
78
80
81
82
83
84
85
86
87
88
89
90
92
94
96
98
99
102
103
104
105
107
108
109
112
113
114
115
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
-
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
iii
SCSEMI . . . . . . . . . . . . . . .
SCTELL . . . . . . . . . . . . . . .
SCTYPE . . . . . . . . . . . . . . .
SIM370 . . . . . . . . . . . . . . .
STRIP . . . . . . . . . . . . . . .
SYSBIT . . . . . . . . . . . . . . .
SYSCMP . . . . . . . . . . . . . . .
SYSKWT . . . . . . . . . . . . . . .
SYSLBL . . . . . . . . . . . . . . .
SYSLR . . . . . . . . . . . . . . .
SYSLST . . . . . . . . . . . . . . .
SYSLV . . . . . . . . . . . . . . .
SYSPRED . . . . . . . . . . . . . .
SYSQS . . . . . . . . . . . . . . .
SYSRNG . . . . . . . . . . . . . . .
SYSTANDB . . . . . . . . . . . . . .
TIME128 . . . . . . . . . . . . . .
TIOTSRCH . . . . . . . . . . . . . .
UAOP . . . . . . . . . . . . . . . .
VAREA . . . . . . . . . . . . . . .
VCLEAR . . . . . . . . . . . . . . .
VINIT . . . . . . . . . . . . . . .
VOUT . . . . . . . . . . . . . . . .
VSEG . . . . . . . . . . . . . . . .
VTELL . . . . . . . . . . . . . . .
VTEST . . . . . . . . . . . . . . .
Extended Fixed Binary Facility . . .
LOAD, STORE, ADD, SUB and CMP . .
Extended Length Facility . . . . . .
MCLC, MMVC, MNC, MOC and MXC . . .
MFC . . . . . . . . . . . . . . .
MTC . . . . . . . . . . . . . . .
MTR . . . . . . . . . . . . . . .
MTRT . . . . . . . . . . . . . . .
MZC . . . . . . . . . . . . . . .
370 Simulation Macros . . . . . . .
MCLCL, MMVCL, MNCL, MOCL and MXCL
MFCL . . . . . . . . . . . . . . .
MTCL . . . . . . . . . . . . . . .
MTRL . . . . . . . . . . . . . . .
MTRTL . . . . . . . . . . . . . .
MZCL . . . . . . . . . . . . . . .
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
116
117
118
119
120
122
123
124
125
126
128
129
130
131
133
134
136
137
138
139
140
141
143
145
147
148
149
149
150
150
151
152
153
154
155
156
156
158
159
160
161
162
Flag Setting and Testing Macros
DF . . . . . . . . . . . . . .
SF . . . . . . . . . . . . . .
TF . . . . . . . . . . . . . .
ZF . . . . . . . . . . . . . .
Multiprocessor Instructions . .
MPNI . . . . . . . . . . . . .
MPOI . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
163
163
164
165
166
167
167
168
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
MPXI . . . . . . . . . . . . . . . . . . . . . .
169
MPZI . . . . . . . . . . . . . . . . . . . . . .
170
0
ALP Readability Macros . . . . . . . . . . . . . .
171
0
Chart . . . . . . . . . . . . . . . . . . . . .
171
EXI and EXORG . . . . . . . . . . . . . . . . .
173
0
Extended Branch Mnemonics . . . . . . . . . . . .
175
0ED Routine Macros . . . . . . . . . . . . . . . . . .
176
0
EDABEND . . . . . . . . . . . . . . . . . . . . .
176
EDENTER . . . . . . . . . . . . . . . . . . . . .
177
EDEXIT . . . . . . . . . . . . . . . . . . . . . .
178
EDGAS . . . . . . . . . . . . . . . . . . . . . .
179
EDGCLS . . . . . . . . . . . . . . . . . . . . . .
180
EDGMLS . . . . . . . . . . . . . . . . . . . . . .
181
EDSCLS . . . . . . . . . . . . . . . . . . . . . .
182
EDSETUP . . . . . . . . . . . . . . . . . . . . .
183
1
1
Cataloged Procedures
A number of special cataloged procedures are available and
are summarized below.
0
"xxx" is "WYL" for WYLBUR
"MIL" for MILTEN
"MWC" for COMMON
0The following chart summarizes the compilation procedures.
-Procedure MODULE
Store
Pass
Asm Listing
Name
Parm
ALP Assemble Object Object on Fiche
+____
____
___ ________ ______ ______ ________
0xxxALC
X
X
X
X
0xxxALCF
X
X
X
X
X
0xxxALCL
X
X
0xxxALCLF
X
X
X
X
0xxxALP
X
0xxxALPC
X
X
X
X
X
0xxxALPCF
X
X
X
X
X
X
0xxxALPCL
X
X
X
0xxxAPCLF
X
X
X
X
X
0For xxxALPC and xxxALPCL, the assembly listing is normally
suppressed. Specify "ASMLIST=" on the EXEC card to get it
on paper.
0The stepname for the compilation procedures is COMP.
0Module names must be the same as the deck name (on the TITLE
card). WYLBUR module names start with W, MILTEN module
names with M. COMMON modules may have any name not starting
with M or W (but preferably C).
0The JCL for a compilation is
0
//xxxmmmm JOB (ZZXZ,...),'system: mmmm'
/*RERUN
/*CNTL MILWYL
//PROCLIB DD DSN=ZZXZxxx.PROCLIB.os,
//
UNIT=FILE,VOL=SER=NIHLB1,DISP=SHR
// EXEC procedure,MODULE=mmmm,OS=os,VERSION=vvv,GROUP=g,ID=iii
//SYSIN DD *
(program)
1
-
2
where "mmmm" is the module name
"system" is WYLBUR, MILTEN or COMMON
"vvv" is the version (default is STD)
"os" is MVS or XA (only for operating system dependent modules)
"g" is used to distinguish different groups of WYLBUR object
modules. (GROUP=P is used for the production, non-trace
object modules).
0
"iii" is an identifier used to distinguish different instances
of the same module in special situations (not normally specified)
0To use Assembler FX for MVS instead of Assembler H, specify
MVSX instead of MVS on the PROCLIB card.
-Legal version names are
0
STD
standard (MILTEN)
TSO
TSO
BAT
batch
TOY
small MILTEN version
0The default is STD.
0The following symbolic parameters are used to select special macro
libraries:
0zMACID=iii
ID for alternate WYLBUR, MILTEN or COMMON macro
library; "z" is W, M, or C, respectively.
0zOPTID=iii
ID for alternate WYLBUR, MILTEN or COMMON option
library for version specified (xxxOPTS.vvv);
"z" is W, M, or C, respectively.
0WOPTGID=iii
ID for alternate WYLBUR group option library.
0zOPTAID=iii
ID for alternate WYLBUR, MILTEN or COMMON option
library for all versions (xxxOPTS.ALL); "z" is
W, M, or C, respectively.
0zPMAC=libname
Name of private WYLBUR, MILTEN or COMMON macro
library (e.g., EDSMACS for the Edit Format Utility);
"z" is W, M, or C, respectively.
1
3
The xxxMLIB procedures are used to create macro libraries.
Use the following JCL:
0
//xxxjjjjj JOB (ZZXZ,...),'system: libdesc'
/*RERUN
/*CNTL MILWYL,EXCLUSIVE
//PROCLIB DD DSN=ZZXZxxx.PROCLIB.os,
//
UNIT=FILE,VOL=SER=NIHLB1,DISP=SHR
// EXEC xxxMLIB,LIBRARY=libname,OS=os,VERSION=vvv,GROUP=g,ID=iii
//SYSIN DD *
(IEBUPTE ADD cards and assembler source statements)
0where "xxxjjjjj" is a descriptive job name
0
"libdesc" is a descriptive name
0
"libname" is the name of the macro library
0
"vvv" is the version
0
"g" is used to distinguish different groups of WYLBUR object
modules. (GROUP=P is used for the production, non-trace
object modules).
0
"iii" is an identifier as for the assembly procedures (not
normally used)
0
0
0
0
0
"os" is MVS or XA (only for operating system dependent
libraries)
0xxxMLIBA sends the macro definitions through ALP before
creating the library. xxxMLIBF does the same and also puts
the IEBUPDTE listing onto fiche.
0The following macro libraries exist and are shown in order
of concatenation:
0xxx os
libname.vvvg
contents
+___ __
____________
________
0WYL yes WYLOPTS.vvv
WYLBUR assembly parameter options for a
particular version
WYL no
WYLOPTS.GRPg
WYLBUR assembly parameter options for a
group of object modules
WYL no
WYLOPTS.ALL
WYLBUR assembly parameter options
common to all versions
WYL no
WYLBUR
WYLBUR macros
MIL yes MILOPTS.vvv
MILTEN assembly parameter options
for a particular version
MIL no
MILOPTS.ALL
MILTEN assembly parameter options
common to all versions
MIL no
MILTEN
MILTEN macros
MWC yes MWCOPTS.vvv
COMMON assembly parameter options
for a particular version
MWC no
MWCOPTS.ALL
COMMON assembly parameter options
common to all versions
MWC no
COMMON
COMMON macros
1
4
MWC no
OS
useful OS macros
0There is also a private macro library for the Edit Format Utility
package:
0WYL no
EDSMACS.STD
macros used by the Edit Format
Utility package
0SYS1.MACLIB and NIH.MACLIB are last in the concatenation.
MVS DLIB macro libraries are included when MVS procedures
are used.
1
5
Composite object decks and load modules are maintained with
the following procedures (xxx is either WYL or MIL):
0Procedure
Function
+_________
________
0xxxLPROD
create production object deck and load
module. Also create backup copy of
previous object deck.
xxxLBACK
restore backup object deck to
production
xxxLSAVE
create alternate backup copy of
object deck
xxxLREST
restore from alternate backup
xxxLEXP
create experimental load module
0Symbolic parameters:
0Parameter
Meaning
+_________
_______
0OS=os
VERSION=vvv
operating system
version (as for assembly and macro library
procedures)
GROUP=g
which group of object and load modules
is to be used (WYLBUR only)
ID=iii
identifier to distinguish instances of
the same version in special situations
(not normally used)
mmmmID=iii
Specifies the ID for an alternate object
deck for module mmmm
OPTIONS='string'
linkage editor options (xxxLPROD and
xxxLEXP)
NAME=deck
PROD or BACK, specifies whether
production or backup deck is to be
copied by xxxLSAVE
BACK=NO
specifies that xxxLPROD is not to copy the
current production to backup.
0WYLLPROD and WYLLEXP have the following SYSIN data sets:
0DDname
Input
+______
_____
0UPDATE.SYSIN
SCCUPDTE control cards indicating modules to be
(or SYSIN)
replaced
0The procedure WYLLTSO is used to copy the production TSO
version into the command library.
0If a program is to be linked-edited into SYS1.VSYSTEMS (a linklist
data set) after compilation, the xxxLUTIL procedures will do that.
Simply place the following JCL statement after the program:
0
// EXEC xxxLUTIL,PROGRAM=xxxname
0where "xxxname" is the member name for the program.
1
6
Assembly Structure
The basic format for a WYLBUR, MILTEN or COMMON source
deck is
0
mmmm: TITLE 'description of module';
(macro definitions, if any)
SUBTITLE 'zSETUP',
COPY CPARMGBL;
COPY MPARMGBL; (MILTEN & WYLBUR only)
COPY WPARMGBL; (WYLBUR only)
mmmm: zSETUP
...;
(additional register definitions)
SUBTITLE 'description of code section';
(source program)
END;
0where "mmmm" is the module name (must be the same as on the
EXEC card); "z" is W for WYLBUR; M for MILTEN; C for
COMMON.
1
7
Selecting Assembly Options
-Assembly options for MILTEN, WYLBUR and common modules are selected by
storing members into various "option libraries" which are small macro
libraries that
options.
0Copy Module
+___________
0CPARMALL
0CPARMVER
0MPARMALL
0MPARMVER
0WPARMALL
0WPARMGRP
0WPARMVER
0WDEVALL
1
Copy Module
+___________
0WDEVGRP
0WDEVVER
0WCLASALL
0WCLASGRP
exist solely to hold copy modules that select assembly
Option Library
______________
MWCOPTS.ALL
MWCOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
MILOPTS.ALL
MILOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
WYLOPTS.ALL
WYLOPTS.GRPgroup
(varies according
to GROUP symbolic
parameter)
WYLOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
WYLOPTS.ALL
Purpose
_______
Contains SETx statements for
common assembly parameters that
are the same for all versions.
Contains SETx statements for
common assembly parameters that
are different for different
versions.
Contains SETx statements for
MILTEN assembly parameters that
are the same for all versions.
Contains SETx statements for
MILTEN assembly parameters that
are different for different
versions.
Contains SETx statements for
WYLBUR assembly parameters that
are the same for all versions
and groups.
Contains SETx statements for WYLBUR
assembly parameters that are
different for different groups.
Contains SETx statements for
WYLBUR assembly parameters that
are different for different
versions.
Contains DEVICE macro calls to
define DASD devices that are
supported by all WYLBUR versions
and groups.
8
Option Library
______________
WYLOPTS.GRPgroup
(varies according
to GROUP symbolic
parameter)
WYLOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
WYLOPTS.ALL
WYLOPTS.GRPgroup
(varies according
to GROUP symbolic
parameter)
Purpose
_______
Contains DEVICE macro calls to
define additional DASD devices
that are supported only by some
WYLBUR groups.
Contains DEVICE macro calls to
define additional DASD devices
that are supported only by some
WYLBUR versions.
Contains VOLCLASS macro calls to
define volume classes that are
available in all WYLBUR versions
and groups.
Contains VOLCLASS macro calls
to define additional volume
classes that are available only
in some WYLBUR groups.
0WCLASVER
0WVOLALL
0WVOLGRP
0WVOLVER
0WUNITALL
1
Copy Module
+___________
-WUNITGRP
0WUNITVER
1
-
WYLOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
WYLOPTS.ALL
WYLOPTS.GRPgroup
(varies according
to GROUP symbolic
parameter)
WYLOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
WYLOPTS.ALL
Contains VOLCLASS macro calls to
define additional volume classes
that are available only in some
WYLBUR versions.
Contains VOLUME macro calls to
define volumes that are available
from all WYLBUR versions and
groups.
Contains VOLUME macro calls to
define volumes that are available
only in certain WYLBUR groups.
Contains VOLUME macro calls to
define volumes that are available
only in certain versions of
WYLBUR.
Contains UNIT macro calls to
define unit names for all WYLBUR
versions and groups.
9
Option Library
______________
WYLOPTS.GRPgroup
(varies according
to GROUP symbolic
parameter)
WYLOPTS.version
(varies according
to VERSION and OS
symbolic parameters)
10
Purpose
_______
Contains UNIT macro calls to
define unit names that are
available only in certain
WYLBUR groups.
Contains UNIT macro calls to
define unit names that are
available only in certain
versions of WYLBUR.
Common Assembly Parameters -- used by both MILTEN and WYLBUR
0* denotes parameters that are normally changed by an installation
Other
Parameter
Type Default
Values
Definition
+ _________
____ _______
______
__________
0 &CPU
SETC '370BS'
'360', '370' Type of CPU; if 360 is
specified, the 370
instruction set is not
used; if 370BS is
specified,
370 Branch and Save
instructions are used
(required for XA
operating system)
&MP
SETC 'YES'
'NO'
Multiprocessor option
* &OS
SETC 'MVS'
'MVT','MFT'
Operating System
* &JES
SETC 'NIHJES2A' 'NIHHASP3'
Name of Job Entry
Subsystem interface used
* &LJOBNUM
SETA 4
1 to 8
Maximum length of job
number for batch jobs
* &MJOBNUM
SETA 9999
1 to 99999999 Maximum job number
&MSGCLAS
internal
SETC
'A'
&MREMOTE
&LJESCMD
SETA
SETA
999
132
&LJESMSG
message
SETA
106
&JESCHAR
SETC
&DBC
SETC
&DBCSP
SETA
* &SITE
SETC
*
*
*
*
*
SETC
SETC
SETC
SETC
SETC
&SITENAM(1)
&SITENAM(2)
&SITENAM(3)
&FORHELP(1)
&FORHELP(2)
* &LINIT
SETA
* &LACCT
SETC
* &LKW
SETA
1
-
A-Z, 0-9
reader
1 to 99999999 Maximum RJE remote number
1 to 255
Maximum length of a JES
command
1 to 255
Max length of notify
for JES
any character Job Entry Subsystem
command character
'NO'
'YES'
Is DBC (Debugging
Controller) in use?
2
1 to 127
Storage subpool to be
used by DBC.
'NIH'
Site of installation. If
this is NIH, code is
generated to support
special NIH functions.
'NIH/DCRT'
Full installation name, is
'/CCB'
displayed to user at logon
' WYLBUR'
(maximum of 8 elements).
'SEE THE'
Text added to message to
'PAL UNIT'
direct user to source for
help. Used by FORHELP
macro (maximum of 8
elements).
3
0 to 8
Length of user initials
(0 means not used)
4
0 to 8
Length of user account
number (0 means not used)
3
0 to 8
Length of user keyword
(0 means not used)
11
'$'
Type
____
SETA
Default
_______
4
Other
Values
______
0 to 8
* &LBOX
SETA
4
0 to 8
* &INITNAM
SETC
'INITIALS'
* &ACCTNAM
SETC
'ACCOUNT'
* &KWNAME
SETC
'KEYWORD'
* &TERMNAM
SETC
'TERMINAL'
Parameter
+ _________
0* &LTERM
Default MSGCLASS for
Definition
__________
Length of terminal
identifier (0 means not
used)
Length of box
identification
(0 means not used)
Name displayed to users
when prompting for
initials
Name displayed to users
when prompting for
account
Name displayed to users
when prompting for keyword
Name displayed to users
when prompting for
* &BOXNAME
SETC
'BOX'
* &RACF
* &RACFID
SETC
SETC
'NO'
'USERID'
&RACFSP
SETA
3
'YES'
1 - 8
characters
0 to 127
* &SVCGEN1
SETA
251
0 to 255
* &SVCGEN2
SETA
244
0 to 255
* &SVCJES
SETA
254
0 to 255
* &SVCKW
SETA
254
0 to 255
* &SVCACCT
SETA
242
0 to 255
&VAREA
SETA
36
&LSCAN
SETA
16
>= 16
&LNDP
SETC
'3'
0 to 8
1
+
0
terminal
Name displayed to users
when prompting for box
number
RACF support
Name of RACF user id
Storage subpool to be
used by RACF
General purpose Type 1 SVC
number used by WYLBUR and
MILTEN (MVT only)
General purpose Type 2 SVC
number used by WYLBUR and
MILTEN (MVT only)
SVC number used for the
HASP communication (MVS
only)
SVC number used for
communication with the
Keyword subsystem
SVC number used to
communicate with the
installation accounting
routines.
Length of work area used
by the VINIT, VSEG, etc.,
macros.
Length to which tokens are
padded with blanks in the
scanner.
Number of decimal places
in a WYLBUR line number.
12
Parameter
_________
&LNIP
Type
____
SETC
Default
_______
'5'
&LNMIN
SETA
0
&LNMAX
SETA
99999999
&LN1
SETA
1000
&LNMASK
SETA
X'7FFFFFF'
&LNBITS
SETA
27
Other
Values
______
0 to 8
Definition
__________
Number of integer
positions in a WYLBUR line
number. &LNIP+&LNDP must
be less than 9.
Minimum line number
allowed (always zero).
Maximum line number
allowed (computed from
&LNDP and &LNIP).
Line number 1 (computed
from &LNDP and &LNIP).
Line number mask (computed
from &LNDP and &LNIP).
Number of bits in the line
number (computed from
&LNDP and &LNIP).
&LNMAXZ
SETC
'00000000'
&SIM370
SETC
'SIM370'
&TIME128
SETA
128*24*3600*100
SETA
62
&WTOMC
SETA
1
&WTOMCI
SETA
2
&WTOTAPE
&WTODISK
&WTOTLIB
SETA
SETA
SETA
3
4
5
&WTODLIB
SETA
6
&WTOUREC
SETA
7
&WTOTPC
SETA
8
&WTOSSEC
SETA
9
&WTOERR
SETA
10
&WTOPROG
&WTOEMUL
SETA
SETA
11
12
&WTOURC1
&WTOURC2
&WTOURC3
&WTOFAIL
SETA
SETA
SETA
SETA
13
14
15
1
* &WTOMAX
1
+
0
9 to 254
1&LNMAXZ=max line number+1
(computed from &LNDP and
&LNIP).
Work area for 360
simulation instructions.
Set by SIM370, MSETUP, and
WSETUP macros.
128 days in 100ths of a
second.
Maximum length of text for
a WTO.
WTO ROUTECDE -- Master
Console
WTO ROUTECDE -- Master
Informational Console
WTO ROUTECDE -- Tape Pool
WTO ROUTECDE -- Disk Pool
WTO ROUTECDE -- Tape
Library
WTO ROUTECDE -- Disk
Library
WTO ROUTECDE -- Unit
Record Pool
WTO ROUTECDE -Teleprocessing Console
WTO ROUTECDE -- System
Security Console
WTO ROUTECDE -- Error
Logging Console
WTO ROUTECDE -- Programmer
WTO ROUTECDE -- Emulation
Console
WTO ROUTECDE -- User Code 1
WTO ROUTECDE -- User Code 2
WTO ROUTECDE -- User Code 3
WTO DESC -- System Failure
13
Parameter
_________
&WTOIACT
Type
____
SETA
Default
_______
2
&WTOEACT
&WTOSTAT
&WTOCMDR
SETA
SETA
SETA
3
4
5
&WTOJOB
&WTOAPPL
SETA
SETA
6
7
&WTOOUTL
SETA
8
&WTODISP
SETA
9
Other
Values
______
Definition
__________
WTO DESC -Action
WTO DESC -WTO DESC -WTO DESC -Response
WTO DESC -WTO DESC -Program
WTO DESC -Message
WTO DESC -Displays
Immediate
Eventual Action
System Status
Command
Job Status
Application
Out-of-line
Dynamic Status
&WTOCRIT
SETA
10
&TEMP
SETA
0
1
-
WTO DESC -- Critical
Eventual Action
Work variable
14
COMMON Module Directory
Module
+______
0ALP
POSTALP
ALPCG
ALPCH
ALPCX
CABB
Function
________
ALP preprocessor (PL/I)
ALP postprocessor (PL/I)
program to call ALP, Assembler G, and POSTALP
program to call ALP, Assembler H, and POSTALP
program to call ALP, Assembler FX, and POSTALP
abbreviation table used by program that
processes the Reference Handbooks
scanner
utility routines
produces histograms of counter values (used by
software monitors) (PL/I)
scratch-allocate-rlse-eof utility
data scrambling subroutines
general purpose SVC (MVT/MFT only)
15
CSCN
CUTR
HIST
SAER
SCRM
SVCG
1
-
COMMON Register Definitions
Reg
+___
0 0
1
2
3
4
5
6
7
8
9
10
11
12
Name
____
VR0
VR1
XRA
XRB
XRC
XRD
XRE
XRF
XRG
RTNR
BASER
WAR
GCBR
13
14
15
0 2
11
1
-
STKR
VRE
VRF
LOWR
HIGHR
Function
Disposition
________
___________
parameter passing
volatile
parameter passing
volatile
work reg
preserved
work reg
preserved
work reg
preserved
work reg
preserved
work reg
preserved
work reg
preserved
work reg
preserved
return address
volatile
base register
preserved
work area pointer
preserved
reserved for a
sacred
pointer to a
global control
block
preserved
stack pointer
sacred
parameter passing
volatile
parameter passing
volatile
Standard low register for CENTER
Standard high register for CENTER
16
COMMON Control Block Directory
-
Id
+__
0KWR
Name
____
Keyword Record
Description
___________
Parameter list for
keyword SVC
0MDC
Machine Dependent
EQUs for low-core
Cells
cells, etc.
0NAT
Nucleus Address Table
Table of useful addresses
in the MVT nucleus
0SCT
Scanner Control Table
Control info for scanner
-OS control blocks available via CSETUP: CDE, CVT, DCB, DEB,
DECB, IQE, LLE, PQE, RB, TCB, UCB.
0MVS control blocks available via CSETUP: ACB, ASCB, ASXB,
JESCT, LRC, PCCA, PSA, RPL, SDWA, SMCA, SSOB, S99 (SVC 99
definitions), TQE
0Other OS control blocks available: IECSDSL1 (DSCB),
IEFJFCBN (JFCB).
1
17
MACRO Descriptions
0
Conventions
0Macro operands are frequently described in the following
terms:
0
addrla
- denotes an expression which will be used in
a load address instruction
0
addrl
- denotes an address which will be used in a
load instruction
0
addrlh
- denotes an address which will be used in a
load halfword instruction.
0
valuela
- denotes a value that will be used in a load
address instruction.
0
cexpr8
- denote expressions which evaluate to a
cexpr12
constant to be held in the indicated
cexpr16
number of bits
cexpr24
cexpr32
0
relexpra
- denotes a relocatable expression that is
valid in an A-Type address constant
0
relexpri
- denotes a relocatable expression that is
valid as a storage address in an instruction
0
string
- denotes a quoted string
0
symbol
- any symbol that may be used in the label
field of an instruction.
0
vsymbol
- symbol that may be used in a V-Type address
constant
0
reg
- any register
0
preg
- any register except VR0
0Valuela, addrla, addrl, and addrlh indicate the default
method the macro will use for loading the parameter
registers (LA, LA, L and LH respectively). If the default
is not satisfactory, the user can specify alternate methods
for having the parameter registers loaded. An example:
0
CVBTD P1-addrla,P2-valuela,P3-addrl
1
-
18
This macro takes a binary number (specified in the third
operand), converts it to EBCDIC and stores the result in the
location pointed to by the first operand. The second
operand specifies a length for the destination field, zero
implying no fixed length.
0Normal expansion for the macro is as follows:
0
LA
VR0,P2
length
LA
VR1,P1
L
VRF,P3
WCALL CVBTD
0Alternate ways of expressing the operands of the form addrx
and valuela are:
0
(register) (contains the actual value to be used)
LH:operand
L:operand
LA:operand
LOADx:operand (x stands for H, LH, B, P, F, LF)
0For example, if XRJOB contained a job number and fullword
JSPTR contained a pointer to an area to hold the EBCDIC job
number, the macro could be coded
0
CVBTD L:JSPTR,3,(XRJOB)
0which would generate
0
LA
VR0,3
L
VR1,JSPTR
LR
VRF,XRJOB
WCALL CVBTD
0Several points bear special mention.
01. If you want to point to a literal, the notation L:=F'1'
will not work since the assembler interprets the equal
sign as an indication of a keyword parameter. Instead
code L::F'1' and the macro will do the right thing.
02. When coding register notation for the parameter passing
registers, e.g. CVBTD SLOT,,(VRF), be sure to code the
registers VR0, VR1, VRE, VRF verbatim so that the macro
can avoid generation of instructions like
0
LR VR0,0
03. A value or address of zero always causes generation of
an SR instruction to clear the parameter register,
regardless of what type of loading was requested.
04. When a macro returns a parameter in VRF, the condition
code will also be set using an LTR VRF,VRF.
1
19
5. Some macros that provide parameters of the form
KEYWORD=OPTION also allow a conditional test to be made.
The general form is KEYWORD=(OPTION,OP,OPND1,OPND2,CC)
where
0
"OP"
is an instruction opcode which sets a condition code
(e.g., TM, LTR, CLI)
"OPND1" is the first operand for the instruction
"OPND2" is the second operand for the instruction
"CC"
is the condition code for which KEYWORD=OPTION
0
0
0
0
1
-
is to be effective
An example:
TREAD QM=(NO,TM,OPTFL,OPTFQM,Z)
means that QM=NO is valid only if a TM OPTFL,OPTFQM
results in a Z (zero) condition code.
This is referred to as the conditional form of the
parameter.
20
COMMON, MILTEN and WYLBUR Macros
APRIVSCN - Scan for account privilege
0APRIVSCN scans for account privileges and sets corresponding
bits in a specified byte.
<symbol> APRIVSCN byte<,TYPE=NO>
byte
relexpri
0
Address of the byte in which the bits are to be set.
Bits are defined for KWRAFL.
TYPE=NO
0
Causes "NO" to be appended in front of each word to
be scanned for. Also causes bits to be turned off
instead of on in the byte.
1
21
APRIVSEG - TSEG or VSEG account privileges
0APRIVSEG is used to TSEG or VSEG proper words for each
account privilege (KWRAFL) bit set in a specified byte.
<symbol> APRIVSEG byte<,AFTER=string><,BEFORE=string>
<,VAREA=varea>
byte
relexpri
0
Address of the flag byte.
AFTER=string
string
0
A string of characters to be appended after each
word. May also be specified as location and length.
BEFORE=string
string
0
A string of characters to be appended before each
word. May also be specified as location and length.
VAREA=varea
addrla
0
Address of the VAREA if VSEG is to be used.
1
22
AREA, AREAORG and AREAEND - Define a structured storage area
0AREA and AREAEND are used to define an area of storage which
is structured into smaller named components. AREA begins
the definition, DSs and DCs follow, and AREAEND terminates
the definition.
0AREAORG is used to ORG back to the start of the area so that
fields may be overlaid.
maximum attained.
The length of the area will be the
<symbol> AREA alignment<,DSECT=NO>
0
0
0
-
symbol
symbol
The name of the total storage area. The length
attribute will be correctly set.
alignment
X,H,F,D,0X,0H,0F,0D
Specifies the boundary alignment for the area.
Default is X (byte alignment).
DSECT=NO
Indicates that the area is not to be a DSECT.
<symbol> AREAEND <alignment>
0
1
0
symbol
symbol
A symbol which is to be EQUed to the length of the
area.
23
alignment
X,H,F,D,0X,0H,0F,0D
Specifies the boundary alignment for the end of the
area. Default is what was specified in the AREA
macro.
<symbol> AREAORG <alignment>
0
0
symbol
symbol
A symbol which is to be EQUed to the current length
of the area.
alignment
X,H,F,D,0X,0H,0F,0D
Specifies boundary alignment for the end of this
overlay of the area. Default is what was specified
in the AREA macro.
0
NOTE:
Area definitions may be nested.
the inner levels.
DSECT=NO is implied at
0
1
-
EXAMPLE:
WA
WATEMP
WABYTE
WAHALF
WASIZE
AREA
DS
DS
DS
AREAEND
F
F
X
H
24
BLDLLIST - Construct BLDL list
0BLDLLIST assembles a list in the proper format for the
BLDL SVC.
<symbol> BLDLLIST label1,member1,...,labelN,memberN
<,LENGTH=value>
0
0
0
1
-
labelI
symbol
The label to be placed on the list entry for
memberI.
memberI
symbol
Name of the member to be searched for.
LENGTH=value
previously defined absolute
expression
The length of each entry in the list. Default
is 58.
25
CBDELINK - Remove control block from linked list
0CBDELINK is used to remove a control block from a linked
list of similar control blocks.
<symbol> CBDELINK prev-reg,del-reg,work-reg,HEAD=loc,
<TAIL=loc>,NEXT=dsect-loc
<,BACK=dsect-loc>
<,CB=dsect-name><,ZOT=YES>
prev-reg
preg
0
Register must contain a pointer to the control block
which immediately preceeds the one to be removed.
Should contain zero if removing from the beginning
of the list.
del-reg
preg
0
Register must contain a pointer to the control block
to be removed from the list.
work-reg
preg
0
A work register.
HEAD=loc
relexpri
0
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
0
Location of a word which contains a pointer to the
last element in the list. Contains zero when the
list is empty.
1
26
NEXT=dsect-loc
symbol
0
Name of the word defined in a DSECT for the control
block which points to the next control block in the
list. Contains zero for the last element in the
list.
BACK=dsect-loc
symbol
0
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
0
0
1
-
CB=dsect-id
symbol
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
ZOT=YES
Indicates that the NEXT and BACK fields in the
control block being removed should be set to zero.
27
CBDLINKH - Remove control block from head of linked list
0CBDLINKH is used to remove the first control block from a
linked list of similar control blocks.
<symbol> CBDLINKH del-reg,work-reg,HEAD=loc,
<,TAIL=loc>,NEXT=dsect-loc
<,BACK=dsect-loc><,CB=dsect-name>
<,ZOT=YES>
del-reg
preg
0
Register must contain a pointer to the control block
to be removed from the list.
work-reg
preg
0
A work register.
HEAD=loc
relexpri
0
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
0
Location of a word which contains a pointer to the
last element in the list. Contains zero when the
list is empty.
NEXT=dsect-loc
symbol
0
Name of the word defined in a DSECT for the control
block which points to the next control block in the
list. Contains zero for the last element in the
list.
1
28
BACK=dsect-loc
symbol
0
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
CB=dsect-id
symbol
0
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
ZOT=YES
0
Indicates that the NEXT and BACK fields in the
control block being removed should be set to zero.
1
29
-
CBDLINKT - Remove control block from tail of linked list
0CBDLINKT is used to remove the last control block in a
linked list of similar control blocks.
<symbol> CBDLINKT prev-reg,<del-reg>,work-reg,HEAD=loc
<,TAIL=loc>,NEXT=dsect-loc
<,BACK=dsect-loc><,CB=dsect-name>
<,ZOT=YES>
prev-reg
preg
0
Register must contain a pointer to the control block
which immediately preceeds the one to be removed.
Should contain zero if removing from the beginning
of the list.
del-reg
preg
0
Register must contain a pointer to the control block
to be removed from the list.
Required only if ZOT=YES is specified.
HEAD=loc
relexpri
0
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
0
Location of a word which contains a pointer to the
last element in the list. Contains zero when the
list is empty.
NEXT=dsect-loc
symbol
0
Name of the word defined in a DSECT for the control
block which points to the next control block in the
list. Contains zero for the last element in the
list.
1
30
BACK=dsect-loc
symbol
0
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
CB=dsect-id
symbol
0
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
ZOT=YES
0
Indicates that the NEXT and BACK fields in the
control block being removed should be set to zero.
1
31
CBLINK - Add control block to linked list
0CBLINK is used to add a control block anywhere in a linked
list of similar control blocks.
-
<symbol> CBLINK after-reg,new-reg,work-reg,HEAD=loc,
<TAIL=loc>,NEXT=dsect-loc,
<,BACK=dsect-loc><,CB=dsect-id>
0
0
0
0
0
1
0
0
0
1
-
after-reg
preg
Register containing a pointer to the control block
after which the new control block is to be added.
Should contain zero if the new control block is to
be first in the list.
new-reg
preg
Register must contain a pointer to the control block
to be added.
work-reg
preg
A work register.
HEAD=loc
relexpri
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
Location of a word which contains a pointer to the
last element in the list. Contains zero when the
list is empty.
32
NEXT=dsect-loc
symbol
Name of the word defined in a DSECT for the control
block which points to the next control block in the
list. Contains zero for the last element in the
list.
BACK=dsect-loc
symbol
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
CB=dsect-id
symbol
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
33
CBLINKH - Add a control block at the head of a linked list
0CBLINKH is used to add a control block at the start of a
linked list of similar control blocks.
<symbol> CBLINKH new-reg,work-reg,HEAD=loc,<TAIL=loc>,
NEXT=dsect-loc<,BACK=dsect-loc>
<,CB=dsect-id>
new-reg
preg
0
Register must contain a pointer to the control block
to be added.
work-reg
preg
0
0
0
0
1
0
0
1
-
A work register.
HEAD=loc
relexpri
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
Location of a word which contains a pointer to the
last element in the list. Contains zero when the
list is empty.
NEXT=dsect-loc
symbol
Name of the word defined in a DSECT for the control
block which points to the next control block which
in the list. Contains zero for the last element in
the list.
34
BACK=dsect-loc
symbol
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
CB=dsect-id
symbol
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
35
CBLINKT - Add control block at the tail of a linked list
0CBLINKT is used to add a control block at the end of a
linked list of similar control blocks.
<symbol> CBLINKT new-reg,work-reg,HEAD=loc,<TAIL=loc>,
NEXT=dsect-loc<,BACK=dsect-loc>
<,CB=dsect-id>
new-reg
preg
0
Register must contain a pointer to the control block
to be added.
work-reg
preg
0
A work register.
HEAD=loc
relexpri
0
Location of a word which contains a pointer to the
first element in the list. Contains zero when the
list is empty.
TAIL=loc
relexpri
0
Location of a word which contains a pointer to the
last element in the list Contains zero when the
list is empty.
NEXT=dsect-loc
symbol
0
Name of the word defined in a DSECT for the control
block which points to the next control block in the
list. Contains zero for the last element in the
list.
1
0
0
1
-
36
BACK=dsect-loc
symbol
If present, indicates a doubly-linked list (forward
and backward pointers). Name of the word defined in
a DSECT for the control block which points to the
preceeding control block in the list. Contains zero
for the first element in the list.
CB=dsect-id
symbol
The name of the DSECT for the control block. Omit
if the control block is defined with EQUs instead of
a DSECT.
37
CBINIT - Initialize control block
0CBINIT is used to initialize an area of storage with
constant data.
<symbol> CBINIT BEGIN,location<,length><,ALIGN=boundary>
(constant data)
<symbol> CBINIT END
location
relexpri (maximum length of 8
characters)
0
Address of the area to be initialized.
length
symbol
0
A symbol to be EQUed to the length of the constant
data.
ALIGN=boundary
X, H, F or D
0
Boundary alignment for the constant data. Default
is F.
NOTE:
0
The constant data is placed between the CBINIT BEGIN and
the CBINIT END.
1
38
CDESRCH - Search CDEs for module name corresponding to address
0CDESRCH takes an address and searches the CDE chains to find
in which module the address falls.
<symbol> CDESRCH address<,WORK=area>
address
addrl (passed in VRF)
0
Address for which the corresponding module name is
desired.
WORK=area
addrla
0
Address of a 12-byte work area.
-RETURNS:
0
VR1 = address of the module name (zero if none found)
0
VRF = offset from the load point of the module
0
VRE = load point of the module
0
0
1
-
VR0 = segment number for scatter loaded modules
An LTR VR1,VR1 is done
39
CAMODE - Set Addressing Mode
0CAMODE is used under MVS/XA to set 24 or 31 bit addressing mode.
-<symbol> CAMODE mode,<REG=workreg>
mode
24 or 31
0
The addressing mode to be set.
REG=workreg
preg
0
A register to be used as a work register. The default
is RTNR.
1
40
CBAL - Branch and Link
0CBAL branches and links to a subroutine. It generates a BAL
or BAS instruction depending on the value of &CPU.
-<symbol> CBAL reg,addr
reg
preg
0
Register in which the return address is saved.
addr
relexpri
0
Address of the subroutine.
1
41
CBALR - Branch and Link (Register)
0CBALR branches and links to a subroutine. It generates a BALR
or BASR instruction, depending on the value of &CPU.
-<symbol> CBALR reg1,reg2
reg1
preg
0
Register in which the return address is to be saved.
reg2
preg
0
Register containing the address of the subroutine.
1
42
CBASE - Load base register
0CBASE is used to load a base register with the current
instruction address. It generates a BALR or BASR instruction,
depending on the value of &CPU.
-<symbol> CBASE basereg
basereg
preg
0
Register to receive the instruction address.
-NOTE:
0
CBASE is normally followed by a USING. For example,
0
CBASE BASER
USING *,BASER
1
43
-
CCALL - Pass control to a subroutine
0The CCALL macro will pass control to a specified subroutine
using COMMON linkage convertions.
-<symbol> CCALL routine<,A><,RETURN=NO><,TEST=YES><,VRE=vre>
<,VRF=vrf><,VR0=vr0><,VR1=vr1>
routine
relexpra or vsymbol or (preg)
0
Address of subroutine to be called.
A
0
The address of the routine is specified as a
relexpra.
RETURN=NO
0
Ignored, provided for compatibility with WCALL.
TEST=YES
0
Causes the call to be bypassed if the routine
address is zero.
VRE=vre
addrla (passed in VRE)
0
Parameter to be passed in VRE.
VRF=vrf
addrla (passed in VRF)
0
Parameter to be passed in VRF.
VR0=vr0
addrla (passed in VR0)
0
Parameter to be passed in VR0.
1
44
VR1=vr1
addrla (passed in VR1)
0
Parameter to be passed in VR1.
1
45
CENTER - Generate entry linkage
0The CENTER macro will generate proper COMMON entry linkage
code.
<symbol> CENTER <reg1,reg2><,size><,ENTRY=NO><,BASE=NO>
<,WAR=NO>
reg1,reg2
regs
0
The registers to be saved, specified for an STM
instruction.
size
cexpr12
0
The size of the requested stack area.
ENTRY=NO
0
Requests that an entry point not be generated.
BASE=NO
0
Requests that the base register not be loaded.
WAR=NO
0
Requests that the work area register not be loaded.
1
46
CEXIT - Generate COMMON exit linkage
0The CEXIT macro generates COMMON exit linkage code
-
<symbol> CEXIT <reg1,reg2><,size><,WAR=NO><,LTR=reg>
<,BRANCH=NO>
0
0
0
0
0
1
-
reg1,reg2
registers
The registers to be restored, specified for a LM
instruction.
size
cexpr12
The size of the stack area to be released.
WAR=NO
The work area register was not loaded at entry.
LTR=reg
VR0,VR1,VRE or VRF
An LTR reg,reg should be generated to set the
condition code.
BRANCH=NO
Specifies that the branch to the return address is
not to be generated.
47
CPOP - Release COMMON stack space
0The CPOP macro will release COMMON stack space.
<symbol> CPOP register<,EXTRA=value>
or
<symbol> CPOP ,size<,EXTRA=value>
register
reg
0
The address of the beginning to the stack area to be
released.
size
cexpr12 or (reg)
0
Size in bytes of the stack area to be released.
EXTRA=value
cexpr12
0
Number of bytes to be released in addition to the
value specified in the size parameter.
1
48
CPOPREG - Restore registers from stack
0CPOPREG restores registers that were previously saved in the
stack by CPUSHREG.
<symbol> CPOPREG r1<,r2>
r1
reg
0
Specifies the starting register.
r2
reg
0
Specifies the ending register.
NOTE:
0
The registers may wrap, as in a LM instruction.
1
49
CPUSH - Acquire stack space
-
0The CPUSH macro will allocate the specified amount of stack
space to the user.
<symbol> CPUSH reg,size<,EXTRA=value>
reg
reg
0
The register to contain the address of the beginning
of the acquired stack area.
size
cexpr12 or (preg)
0
The size in bytes of the stack area requested.
EXTRA=value
cexpr12
0
The number of bytes of stack space requested in
addition to the amount specified in the size
parameter.
1
50
CPUSHREG - Save registers in stack
0CPUSHREG stores registers into the stack and bumps the stack
pointer accordingly.
<symbol> CPUSHREG r1,<r2>
r1
reg
0
Specifies the starting register.
r2
reg
0
Specifies the ending register.
NOTE:
0
The registers may wrap, as in a STM instruction.
1
51
CSA - Define save area space
0The CSA macro will define enough fullwords of storage to
save the specified registers.
<symbol> CSA reg1,reg2<,EQU=(sym1,reg1,...,symN,regN)
reg1,reg2
regs
0
Registers to be saved in STM form.
symI
symbol
0
Specifies a symbol to be EQUed to the word in which
register regI will be saved.
regI
reg
0
Specifies the register for symI.
NOTE:
0
The normal format for a work area DSECT is
0
name DSECT
CSA reg1,reg2
(definitions for work space)
size EQU *-name
1
52
CSAVGEN - Generate OS Save Area Linkage
0CSAVGEN is used to generate instructions to create standard OS save
area linkage from the stack to an OS save area.
0The location of the OS save area must previously have been specified
via CSAVLINK. CSAVGEN is used by CENTER, CCALL, CPUSH, CPOP, etc.,
but may also be used by itself.
<symbol> CSAVGEN
1
53
CSAVLINK - Request OS Save Area Linkage
CSAVLINK is used to request that standard OS save area linkage be
maintained in the stack. It causes additional code to be generated
by macros such as CENTER, CCALL, CPUSH, CPOP, etc.
<symbol> CSAVLINK <savepointer>
savepointer
addrl
0
The address of the OS save area to which linkage is to be
maintained. If omitted, generation of additional linkage
code is suppressed.
1
54
CSETUP - Define control blocks
-The CSETUP macro defines the control blocks specified by the
macro.
<symbol> CSETUP <REGS=NO><,CBS=option><,SCABBRS=NO>
<SETS=NO>,<SYMDEL=NO>,<,cntl-block=YES>
symbol
1-8 characters (required)
0
CSECT name for the module.
REGS=NO
0
Don't define the standard registers.
CBS=option
NO or ALL
0
NO specifies that no control block DSECTS are to be
generated, ALL specifies that all are.
SCABBRS=NO
0
Don't define scanner abbreviations.
SETS=NO
0
Don't set assembly parameter values.
SYMDEL=NO
0
Don't generate DBC (Debugging Controller) symbol deletes
around control block DSECTS.
cntl-block=YES
name of a COMMON control block
0
Define the DSECT for the specified control block.
1
55
CHKACCT - Check syntax of account number
-
0CHKACCT is used to check the syntax of an account number.
CHKACCT assumes that VRF, VR0 and VR1 are set as they are by
SCAN.
<symbol> CHKACCT
RETURNS:
0
VRE = 0 ok
4 bad syntax
0
An LTR VRE,VRE is done.
0VRF, VF0 and VR1 are preserved.
1
56
CHKBOX - Check box number syntax
0CHKBOX is used to check the syntax of a box number. CHKBOX
assumes VRF, VR0 and VR1 are set as they are by SCAN.
<symbol> CHKBOX
RETURNS:
0
VRE = 0 ok
4 bad syntax
0
An LTR VRE,VRE is done.
0VRF, VR0 and VR1 are preserved.
1
57
CHKINIT - Check initials syntax
0CHKINIT is used to check the syntax of a set of initials.
CHKINIT assumes that VRF, VR0 and VR1 are set as they are by
SCAN.
<symbol> CHKINIT
RETURNS:
0
VRE = 0 ok
4 bad syntax
0
An LTR VRE,VRE is done.
0VRF, VR0 and VR1 are preserved.
1
58
CHKKW - Check keyword syntax
0CHKKW is used to check the syntax of a keyword. CHKKW
assumes that VR1 points at the keyword and that VR0
contains the length.
<symbol> CHKKW
RETURNS:
0
VRE = 0 ok
4 bad syntax
0An LTR, VRE, VRE is done.
1
-
59
CHKTERM - Check terminal id syntax
0CHKTERM is used to check the syntax of a terminal id.
CHKTERM assumes that VRF, VR0 and VR1 are set as they
are by SCAN.
<symbol> CHKTERM
RETURNS:
0
VRE = 0 ok
4 bad syntax
0An LTR VRE, VRE is done.
0VRF, VR0 and VR1 are preserved.
-NOTE:
0
At NIH, if the terminal id is NONE, VRF and VR1
are set to point at asterisks and VR0 is set to
&LTERM.
1
60
CSPOST - Post with compare and swap
0CSPOST posts an ECB. Under MVS, it uses the compare and
swap instruction to avoid unnecessary calls to POST.
<symbol> CSPOST ecb<,code>
ecb
addrla (passed in VR1)
0
Address of the ECB to be posted.
code
valuela (passed in VR0)
0
The post code (default is 0).
1
61
CVBTD - Convert from binary to decimal
0The CVBTD macro will convert a binary value to EBCDIC.
Padding or truncation will take place in the high order
positions.
<symbol> CVBTD loc,len,value
loc
addrla (passed in VR1)
0
The address of the area to contain the EBCDIC
result, right justified, with leading blanks.
len
valuela (passed in VR0)
0
The length of the area to contain the EBCDIC result.
If this specification is zero, the macro will use as
many bytes as necessary, but the user should leave
at least 11 bytes to contain the maximum result.
value
addrl (passed in VRF)
0
The binary value to be converted.
0RETURNS:
0
0
0
0
1
-
VRF =
0 all went ok
4 field too small
VR1 = starting address of resulting string
VR0 = length of resulting string
An LTR VRF,VRF is done
62
CVBTX - Convert from binary to hex
0The CVBTX macro will convert each 4 bit halfbyte of the
operand field into its 8 bit printable hex character
representation.
<symbol> CVBTX loc,len,hex-loc
loc
addrla (passed in VR1)
0
The address of the resulting string.
len
valuela (passed in VR0)
0
The length of the resulting string. If this
parameter is an odd number, the first digit of the
data is ignored.
hex-loc
addrla (passed in VRF)
0
The address of the data to be converted.
RETURNS:
0
VR1 = starting address of result
0
VR0 = length of result
0
An LTR VRF,VRF is done
1
63
CVBT$ - Convert from binary to $
0The CVBT$ macro will convert a binary number to $XXX.XX form
with truncation occuring at the high order positions.
<symbol> CVBT$ loc,len,value
loc
addrla (passed in VR1)
0
The address of the resulting string.
len
valuela (passed in VR0)
0
The length of the resulting string. If this
specification is zero, the macro will use as many
positions as are needed. The issuer should leave 13
positions to handle the maximum result.
value
addrl (passed in VRF)
0
The binary value to be converted.
RETURNS:
0
VRF = 0 all went ok
4 field too small for result
0
VR1 = starting address of resulting string
0
VR0 = length of resulting string
0
An LTR VRF,VRF is done
1
64
CVDATE - Convert Date to MM/DD/YY form
0The CVDATE macro will return the date in MM/DD/YY form and
optionally return the day of the week.
<symbol> CVDATE loc,date<,WEEKDAY=YES>
loc
addrla (passed in VR1)
0
The address of the 8 or 18 byte area to contain the
date/day.
date
addrl (passed in VR0)
0
The date in OS format.
WEEKDAY=YES
conditional form allowed
0
Requests that the day of the week immediately follow
the date in specified area (one blank will separate
the date and day).
RETURNS:
0
VR1 = starting address of resulting string
0
VR0 = length of resulting string (8 or 18)
1
65
CVDTB - Convert from decimal to binary
0The CVDTB macro will convert an unsigned EBCDIC decimal
number to binary.
<symbol> CVDTB loc,len<,EXACT=NO>
loc
addrla (passed in VR1)
0
The address of the area containing the EBCDIC
decimal value.
len
valuela (passed in VR0)
0
The length of the area containing the EBCDIC decimal
value.
EXACT=NO
conditional form allowed
0
Requests that the EBCDIC decimal field be terminated
by a non numeric digit occuring prior to the
termination of the length specification.
RETURNS:
0
VRF = >=0 converted number
-4 an invalid decimal digit was
encountered, and EXACT=NO was not
specified.
-8 overflow
0
VR1 = address of first byte not converted (if
EXACT=NO)
0
VR0 = number of unconverted bytes (if EXACT=NO)
0
An LTR VRF,VRF is done
1
66
CVTIME - Convert time to HH:MM:SS form
0The CVTIME macro will convert a time to 24 hour HH:MM:SS
form or to 12 hour HH:MM:SS A.M. (or P.M.) form.
<symbol> CVTIME loc,time<,AMPM=YES>
loc
addrla (passed in VR1)
0
The address of the 8 or 13 byte field to contain the
converted time.
time
addrl (passed in VR0)
0
The time to be converted in 100th seconds.
AMPM=YES
conditional form allowed
0
Requests the 12 hour HH:MM:SS A.M. (or P.M.) form.
RETURNS:
0
VR1 = starting address of resulting string
0
VR0 = length of resulting string (8 or 13)
1
67
CVTIM128 - Convert time from nearest 128 day period
0The CVTIM128 macro will convert time in 100th of a second
from the last 128 day period to current time and date.
<symbol> CVTIM128 time128
time128
addrl (passed in VR0)
0
The time of day in 100th of a second from the
nearest 128 day period.
RETURNS:
0
VR0 = time of day in 100th of a second
0
VR1 = date in OS format
1
68
CVXTB - Convert from hex to binary
0The CVXTB macro will convert each hex byte of a string into
a 4 bit number.
<symbol> CVXTB loc,len,hex-loc
loc
addrla (passed in VR1)
0
The address of the string to be converted.
len
valuela (passed in VR0)
0
The length of the string to be converted. If this
parameter is an odd number, a zero will be assumed
before the first digit.
hex-loc
addrla (passed in VRF)
0
The address of the resulting string.
RETURNS:
0
VRF = 0 all went ok
4 an invalid hex digit was encountered
0
0
0
1
-
VR1 = address of resulting string
VR0 = resulting string
An LTR VRF,VRF is done
69
DALLIST - Set up dynamic allocation list
0DALLIST is used to construct a parameter list for MVS
dynamic allocation (SVC 99).
<symbol> DALLIST BEGIN,code<,FLAGS1=(<flags1a>,<flags1b>)>
<,FLAGS2=(<flags2a>,<flags2b>,<flags2c>,
<flags2d>)><,ERROR=sym><,INFO=sym>
<,MF=(fmt,loc)><,INIT=NO>
0<symbol> DALLIST TEXT,key,(<item>,<length>,<inst>)...<,MF=L>
0<symbol> DALLIST END<,SVC=NO>
code
cexpr8
0
A code specifying the type of operation to be
performed (allocation, unallocation, etc.).
flags1a
cexpr8
0
Flags for the first byte of the FLAGS1 field.
flags1b
cexpr8
0
Flags for the second byte of the FLAGS1 field.
flags2a
cexpr8
0
Flags for the first byte of the FLAGS2 field.
flags2b
cexpr8
0
Flags for the second byte of the FLAGS2 field.
flags2c
cexpr8
0
Flags for the third byte of the FLAGS2 field.
1
70
flags2d
cexpr8
0
Flags for the fourth byte of the FLAGS2 field.
ERROR=sym
symbol
0
A label for the error code field.
INFO=sym
symbol
0
A label for the information code field.
fmt
L, E or R
0
Format of the macro expansion. R form is used to
retrieve returned data from the parameter list.
loc
relexpri
0
Used with MF=E to specify the location of the
parameter list.
INIT=NO
0
Used with MF=E to specify that fields not explicitly
specified are not to be initialized.
key
cexpr16
0
A value specifying a type of text element.
item
standard form: element for DC
MF=L: element for DC
MF=E: relexpri
MF=R: relexpri
0
Used with standard form and MF=L to specify an item
1
0
0
0
0
1
-
to be assembled in a DC. Used with MF=E to specify
the location of data to be copied into the parameter
list. Used with MF=R to specify a location to
receive data from the parameter list.
71
length
cexpr8
Specifies the length of the text item.
inst
operation code
Used to specify the operation code used to store
into the field.
MF=L
Used in a text item with DALLIST BEGIN,MF=E to
specify that only the field is being defined, no
initialization is to be performed.
SVC=NO
Used with standard form and MF=E to specify that
SVC 99 is not to be issued.
72
DALMSG - Get messages explaining DYNALLOC errors
0DALMSG is used to obtain standard IBM messages explaining non-zero
return codes from DYNALLOC and DAIR. Uses IKJEFF18.
<symbol> DALMSG MF=(fmt,<loc>)<,DALLIST=loc2><,RC=rtncode>
<,MSG1=sym><,MSG2=sym><,MSG1LEN=sym>
<,MSG2LEN=sym><,FLAGS1=hex><,FLAGS2=hex>
fmt
L or E
0
Format of the macro expansion.
loc
addrla (passed in VR1)
0
Used with MF=E to specify the location of the parameter
list.
DALLIST=loc2
addrl
0
Used with MF=E to specify the location of the pointer
to the DYNALLOC or DAIR request blocks. Not used with
MF=L.
RC=rtncode
addrl
0
The return code that was returned in register 15 by SVC99
or DAIR. Not used with MF=L.
MSG1=sym
symbol
MSG2=sym
0
A label for the first and second message fields returned from
IKJEFF18. Normally used only with MF=L.
MSG1LEN=sym
symbol
MSG1LEN=sym
0
A label for the 2 byte length field of the first and
second messages.
1
73
FLAGS1=hex
2 hex digits
0
Flags for the FLAGS1 field of the IKJEFF18 control
block. Default is 40, meaning "do not do WTP or
PUTLINE".
FLAGS2=hex
2 hex digits
Flags for the FLAGS2 field of the IKJEFF18 control
block. Default is 33, meaning "DYNALLOC".
-The standard MF=L invocation is:
0MFL DALMSG MF=L,MSG1=sym,MSG2=sym,MSG1LEN=sym,MSG2LEN=sym,
FLAGS1=hex,FLAGS2=hex
0The standard MF=E form is
0<symbol> DALMSG DALLIST=locator,RC=,<,FLAGS1=hex><,FLAGS2=hex>
MF=(E,MFL)
-NOTE:
0
When DALLIST is used to create the dynamic allocation parameter
list, the DALLIST option of DALMSG should specify the label on
the DALLIST BEGIN,MF=L macro.
1
74
DCC - Define Constant Conditionally
-DCC is used to conditionally assemble a DC statement depending on the
value of a global set symbol.
<symbol> DCC dc-operand,LENGTH=value
dc-operand
any operand legal in a DC statement
0
The constant to be assembled.
LENGTH=value
integer
0
If the value is not 0, the DC operand is assembled.
Otherwise, the symbol is defined at the current
location counter address.
EXAMPLE:
0TERMID: DCC CL&&LTERM,'TTT',LENGTH=&&LTERM;
1
75
DEBLANK - Deblank a string
0The DEBLANK macro removes leading and/or trailing blanks
from a string.
<symbol> DEBLANK loc-reg,len-reg<,work-reg><,TYPE=symbol>
<,NULL=NO><,ZERO=NO><,LABEL=symbol><,FILL=char>
<,FILADDR=byte>
loc-reg
preg
0
Specifies the starting address of the string to be
deblanked.
len-reg
reg
0
Specifies the length of the string to be deblanked.
After the termination of the macro, this register
will contain the new length of the deblanked string.
work-reg
preg
0
Provides a work register to be used in the search.
More efficient code may be generated if this
register is provided.
0
0
0
0
1
-
TYPE=symbol
LEFT, RIGHT, or BOTH
Specifies elimination of leading (LEFT) or trailing
(RIGHT) blanks, or both (BOTH). Default is RIGHT.
NULL=NO
The NO condition specifies that the resulting string
will never be 0. More efficient code may be
generated if this option is specified.
ZERO=NO
The NO condition specifies that the value in the len
register will never be 0. More efficient code may
be generated if this option is specified.
76
LABEL=symbol
relexpri
The location to receive control if the resulting
string has a length of zero.
0
FILL=char
cexpr8
0
Used to specify a character other than blank to be
stripped.
0
FILADDR=byte
relexpri
0
Used to specify the location of the character
to be stripped. May not be used with FILL.
-RETURNS:
0
loc-reg = location of deblanked string
0
len-reg = length of deblanked string
1
77
DSC - Define Storage Conditionally
0DSC is used to conditionally assemble a DS statement depending on the
value of a global set symbol.
<symbol> DSC ds-operand,LENGTH=value
ds-operand
any operand legal in a DS statement
0
Specifies the storage to be defined.
LENGTH=value
integer
0
If the value is not 0, the DS operand is assembled.
Otherwise, the symbol is defined at the current
location counter address.
EXAMPLE:
0TERMID: DSC CL&&TERM,LENGTH=&&LTERM;
1
78
EDIT - Generate edit mask and ED/EDMK instruction
0EDIT is used to create both an appropriate mask string or
editing numeric data and the ED or EDMK instruction to
perform the requested operation.
<symbol> EDIT to-field,from-field<,to-length><,from-length>
<,CALC=NO><,DIGITS=n><,MARK=YES>
0
0
0
0
0
0
0
1
0
0
0
1
-
to-field
relexpri or (preg)
The address of the field to contain the edited
source digits. It must be an even number of bytes
in length.
from-field
relexpri or (preg)
The address of the field containing the source
digits to be EDITed to the to-field. It must
contain sufficient digits to satisfy the implicit
(or explicit) length of the to-field.
to-length
cexpr4
An explicit specification of the length of the
to-field. It must be specified if the to-field is
presented in base-displacement form. If specified
it will override the implicit length for the
to-field.
from-length
cexpr4
An explicit specification of the length of the
from-field. It must be specified if the from-field
is specified in base-displacement form. If
specified it overrides the implicit length for the
from-field.
CALC=NO
Indicates that the addresses specified are to be
used exactly as is for the from- and to-fields in
the generated ED or EDMK instruction. If not
specified the macro will calculate the offset in the
from-field to use in the ED or EDMK instruction.
79
DIGITS=n
cexpr4
Specifies the minimum number of significant digits
to be produced.
MARK=YES
Indicates that an EDMK instruction should be
generated. Register 1 will then point to the first
significant character in the edited field. If the
field does not produce a significatn digit, register
1 will point to the low order character of the
edited field.
80
FASTPOST - Perform low-overhead post
0FASTPOST is used to post an ECB as quickly as possible.
The method depends on the operating system.
<symbol> FASTPOST ecb,<code>,<REG=workreg>,<SUPMODE=YES>,
<SAVELOC=area>
ecb
addrla (passed in VR1)
0
The address of the ECB to be posted.
0
code
valuela (passed in VR0)
0
The post code to be used. The default is 0.
0
REG=workreg
preg
0
0
0
0
0
1
-
A register in which the contents of register
XRA may be saved. Specify REG=XRA if XRA
may be destroyed.
SUPMODE=YES
conditional form allowed
Specifies that the caller is in supervisor state
with non-zero key. Generally required to get
speedup. Under MVS, causes the branch entry to
POST to be used unless SAVELOC is used.
SAVELOC=area
relexpri
The address of the same 2-word area specified in
the FASTWAIT macro used to wait on the ECB.
SUPMODE=YES must also be specified. Under MVS,
causes RESUME to be used.
81
FASTWAIT - Low overhead WAIT macro
0FASTWAIT is the equivalent of an OS WAIT macro. When possible,
it generates more efficient code than does the OS macro
(e.g. using the branch entry).
<symbol> FASTWAIT <count>,<ECB=ecbaddr>,<ECBLIST=listaddr>,
<REG=workreg>,<SUPMODE=YES>,<SAVELOC=area>
count
addrla
0
Number of ECBs which must be posted in order for
WAIT to complete. Default is 1.
0
ECB=ecbaddr
addrla
0
Address of a single ECB.
0
ECBLIST=listaddr
addrla
0
Address of a list of ECBs.
0
REG=workreg
preg
0
saved. Specify REG=XRA if XRA may be destroyed.
Required.
0
SUPMODE=YES
conditional form allowed
0
Specifies that the calling program is in supervisor
state with non-zero key.
0
SAVELOC=area
relexpri
0
The address of the same 2-word area specified in
all FASTPOST instructions used to pose ECBs in
the list. Only FASTPOST may be used for posting.
SUPMODE=YES is required. Under MVS, causes
SUSPEND to be used.
1
82
FLAGSEG - TSEG or VSEG FLAG message
0FLAGSEG is used to TSEG or VSEG the message issued when
a set of initials is flagged. The message may be multiple
lines.
<symbol> FLAGSEG REG=workreg,ACCT=account,INIT=initials,
<LABEL=(routine,label)>,<VAREA=varea>
-
REG=workreg
preg
A work register used to keep track of which line of
the message is being issued. Should be set to zero
before FLAGSEG is issued for the first time.
0
ACCT=account
addrla
0
Address of the account number
0
INIT=initials
addrla
0
Address of the initials
0
LABEL=(routine,label) routine: MMSGINIT,WMSGINIT, or null
label: string
0
VAREA=varea
addrla
0
Address of the VAREA if VSEG is to be used instead
of TSEG
-RETURNS:
0
CC = Z Another line of the message has been TSEGed
or VSEGed.
NZ There are no more lines in the message. No
line was TSEGed or VSEGed.
0
FLAGSEG should be issued repeatedly until a non-zero
condition code is returned.
1
83
FREESWAM - Free SWA Manager Work Area
0The FREESWAM macro is used to free the MVS SWA Manager Work area
that is pointed to by the TCB. These work areas can cause severe
fragmentation of private area storage above the region
(subpools 229 and 230).
<symbol> FREESWAM
1
84
GBLSET - Specify values of global set symbols
0GBLSET is used to specify values for certain global set
symbols when CSETUP or OSSETUP is not used. This
information is required by a number of the other macros.
<symbol> GBLSET <(CPU,cpu-value)>,<(MP,mp-value)>,
<(OS,os-value)>
cpu-value
360, 370, or 370BS
0
Specifies whether the CPU is 360, 370 or 370 with
Branch and Save instructions. Controls whether 370
instructions will be generated.
mp-value
YES or NO
0
Specifies whether the CPU is a multiprocessor.
os-value
MFT,MVT,VS1,SVS,MVS,XA
0
Specifies the operating system.
1
85
IPRIVSCN - Scan for initials privileges
0IPRIVSCN scans for initials privileges and sets appropriate
0
(KWRIFL) bits in a specified byte.
<symbol> IPRIVSCN byte<,TYPE=NO>
0
0
1
-
byte
relexpri
Address of the flag byte.
TYPE=NO
Causes NO to be appended in front of each word to be
scanned for. Also causes bits to be turned off
instead of on in the byte.
86
IPRIVSEG - TSEG or VSEG initials privileges
0IPRIVSEG is used to TSEG or VSEG a word for each initials
privilege bit (KWRIFL) which is set in a specified byte.
<symbol> IPRIVSEG byte<,BEFORE=string><,AFTER=string>
<,VAREA=addr>
byte
relexpri
0
Address of the privilege byte.
BEFORE=string
string
0
A string of characters to be appended before each
word. May also be specified as location and length.
AFTER=string
string
0
A string of characters to be appended after each
word. May also be specified as location and length.
VAREA=addr
addrla
0
Address of the VAREA, if VSEG is to be used.
1
87
MCCW - Macro CCW
0MCCW permits a value to be placed in the unused byte of a
CCW.
<symbol> MCCW op,addr,flags,length<,CODE=code>
op
cexpr8
0
The CCW operation code.
addr
relexpra
0
The CCW data address.
flags
cexpr8
0
The CCW flags.
length
cexpr16
0
The CCW data length.
CODE=code
cexpr8
0
The value to be placed in byte 5 of the CCW.
1
88
OPENP - Check for successful open
0The OPENP macro will check DCBOFLGS to see if a DCB was
opened successfully.
<symbol> OPENP dcb-addr
0
0
dcb-addr
relexpri
The address of the DCB to be checked.
RETURNS:
CC = Z
O
DCB not open
DCB open
0
1
-
NOTE:
OPENP requires the DCB DSECT.
89
ORGHIGH - ORG to high address
0ORGHIGH is used to ORG to the highest of a specified list of
addresses.
<symbol> ORGHIGH address,...,BASE=addr
address
relexpr
0
One of a list of addresses. Highest is selected.
BASE=addr
relexpr
0
An address less than all the others.
1
90
OSCALL - Pass control to a subroutine using OS conventions
0The OSCALL macro will pass control to a specified
subroutine using OS calling conventions.
<symbol> OSCALL routine,<A>,<VR1=parm>,<VR0=parm>,<VRF=parm>,
<PARAM=(parm,...),<VL=1>>,
<TEST=YES>
routine
relexpra or vsymbol or (preg)
0
The address of the subroutine to be called.
A
0
The address specified in the routine parameter is a
relexpra.
VR1=parm
addrla
0
A parameter to be passed in register 1. May also be
specified as R1=parm.
0
VR0=parm
addrla
0
A parameter to be passed in register 0. May also be
specified as R0=parm.
0
VRF=parm
addrla
0
A parameter to be passed in register 15. May also
be specified as R15=parm or RCR=parm.
0
PARAM=(parm,...)
addrla
0
A list of parameters to be passed. A parameter
list is built in the stack and the address loaded
into VR1.
0
0
1
-
VL=1
Specifies that the X'80' bit should be turned on
in the high order byte of the last list entry.
91
TEST=YES
Specifies that the routine is
not to be called if its address
is zero.
0NOTE:
0
Register 15 is loaded with the entry point address
unless VRF=parm is specified.
1
92
OSENTER - Generate OS entry code
0The OSENTER macro will generate proper OS entry linkage
code.
<symbol> OSENTER <(reg1,reg2)...>,<,ENTRY=NO>
<,BASE=NO><,SAVE=area><,PACK=YES>
<,FORWARD=YES><,ID=identification>
reg1,reg2
regs
0
Registers to be saved in STM form. Any number of
parenthesized pairs may be specified. If reg2 is
the same as reg1, then reg2 and the parentheses may
be omitted.
ENTRY=NO
0
Requests that an ENTRY point not be generated.
BASE=NO
0
Requests that a base register not be established.
SAVE=area
relexpri
0
The address of the users register save area.
PACK=YES
0
Registers are to be stored packed at 12 bytes after
the start of the save area.
FORWARD=YES
0
Specifies that the forward linking of save areas is
to be performed. Normally only backward linking is
done.
1
93
ID=identification
symbol or string or *
0
Specifies an identifying character string to be
assembled 4 bytes after the entry point. * indicates
that the entry name (or the CSECT name if there is
no entry name) is to be used.
NOTES:
0
1. The base register is BASER (see OSSETUP).
0
2. If SAVE=area is not specified, then no new save area
will be established.
0
3. The generated code does not depend on register 15
1
-
being loaded with the entry point address unless
ID=identification is specified.
94
OSEXIT - Generate OS return code
0The OSEXIT macro will generate proper OS exit linkage code.
<symbol> OSEXIT <(reg1,reg2)...>,<,SAVE=area><,LTR=reg>
<,PACK=YES><,RC=value><,FLAG=YES>
<,BRANCH=NO>
reg1,reg2
registers
0
Registers to be restored in LM format. Any number
of parenthesized pairs may be specified. When reg2
is the same as reg1, reg2 and the parentheses may be
omitted.
SAVE=area
relexpri
0
The address of the program's register save area.
LTR=reg
reg
0
Requests that an LTR reg,reg be performed to set the
condition code upon return.
PACK=YES
0
Must be specified if PACK=YES was coded on the
corresponding OSENTER macro.
RC=value
valuela
0
Specifies a return code to be loaded into register
15.
FLAG=YES
0
Specifies that X'FF' is to be placed into the
high-order byte of word 4 of the save area after the
registers are restored.
1
95
BRANCH=NO
0
Specifies that the final branch to the return
address is not to be generated.
-NOTE:
0
If SAVE=area is not specified, then the registers are
restored from the area pointed to by register 13. Note
that SAVE=0(STR) is perfectly acceptable.
1
96
OSSETUP - Set up OS linkage environment
0The OSSETUP macro, used once at the start of the program
(after macro definitions, but before any code or EQUs),
defines register names and optionally defines DSECTS for
certain OS control blocks.
symbol OSSETUP <REGS=option><CBS=option>,<ctlblock=YES>...,
<R15=name><,R14=name><,R13=name><,BASER=name>
<,R1=name><,R0=name>
-
0
0
0
0
0
symbol
1-8 characters (required)
CSECT name for the module.
REGS=option
PLI or NO
PLI is used to request PL/I-compatible register
definitions, NO specifies that register
definitions should not be included.
CBS=option
NO or ALL
NO specifies that no control block DSECTS are to be
generated, ALL specifies that all are.
ctlblock=YES
name of a COMMON control block
Specifies that the DSECT for the named control
block is to be generated.
0
0
1
0
0
0
0
R15=name
symbol
Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 15. Default is RCR.
R14=name
symbol
Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 14. Default is RTNR.
97
R13=name
symbol
Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 13. Default is SAVER.
BASER=name
symbol
Register to be loaded by OSENTER as a base register.
Default is BASER.
R1=name
Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 1. Default is VR1.
R0=name
Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 0. Default is VR0.
NOTE:
Register definitions are as follows:
Default
PLI
Register
Absolute name
Symbolic name
Symbolic name
0
0
R0
VR0
VR0
1
R1
VR1
VR1
2
R2
XRA, LOWR
XRA,HIGHR
3
R3
XRB
XRB
4
R4
XRC
XRC
5
R5
XRD
XRD
6
R6
XRE
XRE
7
R7
XRF
XRF
8
R8
XRG
XRG
9
R9
XRH
XRH
10
R10
XRI
XRI
11
R11
XRJ
BASER,HIGHR
12
R12
BASER, HIGHR GCBR
13
R13
SAVER
SAVER
14
R14
RTNR
RTNR
15
R15
RCR
RCR
0
0
0
1
-
LOWR and HIGHR are for use with OSENTER and OSEXIT when
specifying registers to be saved and restored.
98
SCABBR - Define scanner abbreviations
0SCABBR is used to specify abbreviations for keywords to be
used in SCKW macros.
SCABBR keyword,synonym1,...,synonymN
keyword
1-14 characters or string
0
Specifies the keyword to be abbreviated.
synonym1,...,synonymN 1-14 characters or string
0
Specifies the abbreviations and/or synonyms for the
keyword.
NOTES:
0
1. SCABBR generates no code.
0
2. All SCABBR calls must be in the SCABBRS copy module
in ascending order by keyword.
1
99
SCAN - Scan the next token
0The SCAN macro scans the next token from the command string.
An optional table of SCKW macros can be used to specify
tests to be performed on the token or its following
parameter.
<symbol> SCAN <table-address><,BRANCH=NO><,LIMIT=length>
<,SCT=sct-address>
table-address
addrla (passed in VR1) or *
0
Points to a list of SCKW macros. Each macro
specifies a test to be applied to the token or the
parameter which follows it.
0
If * is specified, the SCAN macro must be followed
by the SCKW list. A SCANEND macro defines the place
where execution resumes.
BRANCH=NO
conditional form allowed
0
This operand is valid only if a table address
is specified. It instructs the scanner not to
branch to the address given in the SCKW macro if the
test is successful, but instead to return following
the SCAN macro with the address of the exit routine
in VRE.
LIMIT=length
valuela (passed in VR0)
0
Specifies a maximum length for the token when no
table is specified. The error exit is taken if the
length is exceeded.
SCT=sct-address
addrla (passed in VRF)
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
-
100
RETURNS:
1. If a table address is not given, control is returned
following the macro with:
0
VR0 containing the length of the scanned token
0
VR1 pointing to the token. An LTR is done on VR0
before the return is given. A length of zero
means that there were no more tokens.
0
VRF pointing to an area containing the token
padded with blanks to a length of &LSCAN.
2. If a table address is specified the token is
subjected to a series of tests, as specified by the
SCKW macros. If the tests called for in an SCKW
macro succeed, control is given to an address given
in the macro. Control is returned following the
SCAN macro only when the string being scanned is
exhausted.
0
Registers are set as follows when SCKW exit routines
are entered:
0
VR0 - length of token or parameter
VR1 - location of token or parameter
RTNR - a return address to continue the scan
with the next token.
VRF - setting varies for different SCKW macros.
VRE - setting varies for different SCKW macros.
NOTE:
0The scanner determines tokens by the following rules.
01. <letter>::= letterdigitdegreeplus-minus
.$@_ !<>%?#
0
<slash>::= / + - ^ * : ; & <vertical-bar>
0
<string-delimiter> ::= ' " ( )
0
<blank>::= blank = ,
0
<delimiter>::= <slash> <string-delimiter>
<all other characters>
1
101
2. The next token consists of the <letter>s from the
current scan point up to the next <delimiter>.
03. Quoted or parenthesized strings are terminated only by
the occurence of the appropriate quote or parenthesis.
04. Delimiters, except for the following, also form tokens
by themselves in the sense that they terminate the scan
for the previous token, and are treated as a token of
length 1 when the next scan is given. The exceptions
are:
0
<blank> - these 3 symbols are included in a token
only when they are part of a quoted or
parenthesized string.
0
;
- scan never crosses or returns a ";" except
when it is part of quoted or parenthesized
strings.
0
0
0
0
05.
06.
07.
1
-
(
- begins a parenthesized string
)
- must balance with preceding "("
' and " - begin and end quoted strings. Doubled
instances of either character within a
string framed with the same character are
passed as though they were <letter>s.
The symbols * - & receive special treatment because of
their occurence in DSNAMES. If SCTYPE=0 is in effect
they are handled as specified above. If SCTYPE=1 is in
effect they are treated as members of the class <letter>
and thus do not act as delimiters.
SCTYPE 2 is the same as SCTYPE 0, except that parentheses
are treated as individual delimiters.
SCTYPE 3 is used for scanning JCL.
102
SCBACK - Back up one SCAN
0SCBACK backs up the scanners pointer and length holder to
the values they held before the most recent SCAN or SCKW
exit.
<symbol> SCBACK <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
103
SCDONE - Test if tokens remain to be scanned
0SCDONE tests to see if any further tokens remains to be
scanned. If any exist, the SCERROR routine is entered.
<symbol> SCDONE <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
104
SCDQUOTE - Dequote a quoted string
0SCDQUOTE strips quotes from around a string and changes
internal doubled quotes to single quotes.
<symbol> SCDQUOTE loc,len
loc
addrla (passed in VR1)
0
Location of the string to be dequoted.
len
valuela (passed in VR0)
0
Length of the string to be dequoted.
RETURNS:
0
VR1 = location of the dequoted string
0
VR0 = length of the dequoted string
0
0
1
-
NOTES:
1.
2.
If the string is not quoted, no action is taken.
The string is overlayed by the dequoted string.
105
SCERROR - Specify error handling routine for SCAN
0Specifies an error routine to be entered if any of the
following occur:
0
CONDITION:
VRF CONTENTS: NAME:
0. unbalanced quotes
0
SCTCUBQ
0. unbalanced parentheses
4
SCTCUBP
0. an integer exceeds the
limit specified on the SCKW macro
8
SCTCIXM
(VRE contains the limit)
0. an ordinal exceeds the limit specified
on the SCKW macro (VRE contains the limit) 12
SCTCOXM
0. a line number exceeds the limit specified
on the SCKW macro (VRE contains the limit) 16
SCTCLNXM
0. a token which should have been a
positive integer or ordinal was zero
20
SCTCZNG
0. a token exceeds the maximum
length specified in the SCKW limit
24
SCTCLXM
(VRE contains the limit)
0. an expected parameter is missing
28
SCTCUE
0. A or V type address constant in SCKW
32
SCTCZBV
contains zero
0. SCDONE issued when tokens remain to be
36
SCTCSCD
scanned
0. hex number has invalid format
40
SCTCBXN
0. hex string has invalid format
44
SCTCBXS
0. required quotes were missing
48
SCTCNQ
0. required parentheses were missing
52
SCTCNP
0. integer has invalid format
56
SCTCBINT
0. ordinal has invalid format
60
SCTCBORD
0. line number has invalid format
64
SCTCBLN
0Symbols for the error codes are defined in the SCT DSECT.
1
106
VR1 will contain the address of the offending token and VR0
the length.
0<symbol> SCERROR <NEW=new-routine><,OLD=new-reg>
<NEWPARM=new-parm>,<OLDPARM=old-reg>,
<,SCT=sct-address>
new-routine
addrla
0
The address of the error handling routine to be
called.
new-reg
reg
0
A register which will be set to the address of the
prior error handling routine. This permits
reinstating the old value. Zero indicates there was
no routine in effect.
NEWPARM=new-parm
addrla
A parameter for the error handling routine.
OLDPARM=old-reg
reg
A register which will be set to the value of the prior
parameter for the error handling routine.
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
-NOTE:
0
Since there is no register available to pass the parameter to the
error handling routine, the routine must access the parameter with
the OLDPARM option of SCERROR.
1
107
SCEXTRA - Test if more tokens exist
0SCEXTRA is used to test if additional tokens remain to be
scanned.
<symbol> SCEXTRA
RETURNS:
0
CC = Z
no more tokens
NZ more tokens exist
1
108
SCINIT - Set SCAN pointers
0Directs the scanner to reset its pointer and length holder.
<symbol> SCINIT pointer,length<,SCT=sct-address>
pointer
addrla
0
String pointer.
length
addrla
0
Length of string.
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
109
SCKW - Specify a SCAN table entry
0<symbol> SCKW <keywords>,address<,option-list>
<,LIMIT=limit><,CODE=code>
keywords
string, or a parenthesized list of
strings (quotes are optional)
0
The keyword or keywords to match against the token.
Abbreviations will be checked also.
0
If the keyword field is present, then any options
specified (see below) must be verified or the
SCERROR routine will be entered. If the keyword is
0
0
0
0
0
1
-
0
0
0
0
0
0
0
0
0
omitted, then the option tests have a different
meaning: failing the test merely causes the scanner
to try the next SCKW. (Exception: Unwanted zero
values or exceeding the limit always cause
an entry to SCERROR.)
address
relexpra or *
Branch point to be taken if test succeeds (see
also option BRANCH on the SCAN macro). If * is
specified, the SCANEND address is used.
option-list
one or more of the following,
enclosed in parentheses and
separated by commas
P - a parameter should follow the keyword; verify
the format of the parameter with any required
tests and enter the routine with VR1 pointing
to the parameter and VR0 containing its
length. If the parameter fails the test, the
SCERROR routine is entered with the appropriate
code. This option only has meaning when the
keyword field is present.
I - the token (or parameter following the keyword
if "P" is specified) should be a non-negative
integer; if so place the binary value in VRF
and enter the routine; else the test fails.
(the value is tested against the specified
"limit" and the SCERROR routine entered if it
is too large.)
110
PI - same as "I" except a value of zero causes the
test to fail and the SCERROR routine to be
entered.
O - same as "I" except the test is for an ordinal.
PO - same as "PI" except the test is for a positive
ordinal.
LN - same as "I" except the test is for a line
number.
PLN - same as "PI" except the test is for a positive
line number.
QS - the token (or parameter if "P" is specified)
should be a quoted string; if so, strip
quotes, place as much as will fit into a
16-byte work area left justified with trailing
blanks, and enter the routine. (VRF points to
the work area.) else the test fails. If a
limit is given, it applies to the length of
the string.
OQS - optionally quoted string; same as "Q" except
the user may omit the quotes.
PS - similar to QS, except the test is for a
string enclosed in parentheses.
OPS - similar to OQS, except the test is for a
string enclosed in parentheses.
J - scan table transfer; scanner will take the next
SCKW from the specified address if the test
succeeds. If no test is specified the
transfer is unconditional. If no transfer
address is specified a return following the
previous transfer is performed. If this option
is used in conjunction with the keyword field
the scanner will scan off the next token
before effecting the transfer to the new SCKW
table.
SC - specify the type of adcon to generate (S, A or
AC
V); the default is S with a WYLBUR overlay, A
VC
otherwise. If the SCKW macro is within a
WYLBUR overlay then AC and VC generate a WADCON.
SCI - Specifies that an S constant pointing at a
word containing an address is to be generated.
111
0
0
1
-
B
0
0
0
0
- back up the scan pointers to the values they
held at the time the last SCKW exit routine
was entered (or when the SCAN was issued if no
SCKW exit has been entered for the current
SCAN).
C - use command abbreviations as well as normal abbreviations.
limit
constant which can be used in a DC
(length of 1, 2 or 4 must be
explicitly specified)
Sets a maximum value for integer, ordinal and line
number parameters and the length of a quoted string.
See SCERROR macro.
code
constant which can be used in a DC
(length of 1, 2 or 4 must be
explicitly specified)
Sets a value to be placed in VRE when the routine is
entered. See note 3.
0
NOTES:
1.
0
2.
0
3.
0
4.
0
5.
0
6.
1
-
SCKW
,addr
standard way to end a table
of SCKWs.
SCKW ,addr,B
handy way to back up and exit
if you didn't find what you
wanted.
SCKW X,XORY,CODE=AL1(1) illustrates use of CODE.
SCKW Y,XORY,CODE=AL1(2)
I, PI, QS and OQS allow hex integers and strings. Hex
strings will be converted to internal format before
the routine is called. Note that no space is
permitted after the #.
The scanner can modify the source string if QS,
OQS, PS or OPS is specified.
When P is specified without I, PI, O, PO, LN, or PLN
a limit on length may be specified.
112
SCLAST - Read saved SCAN pointers
0Returns location and length of last SCANned token or
parameter in registers VR1 and VR0 respectively. Can be
used in preparation of error messages.
<symbol> SCLAST <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
NOTE:
0
SCLAST is reset by a SCINIT or SCPOP.
1
113
SCPOP - Reset SCAN pointers from the stack
0Resets the SCAN pointers from the stack (where they were
stored by an earlier SCPUSH macro.
<symbol> SCPOP <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
114
SCPUSH - Push SCAN pointers into the stack
0Similar to SCTELL, but places the pointer and length into
the stack instead of returning them to the caller.
<symbol> SCPUSH <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1
115
SCRTN - Return to scanner
0SCRTN is used to return to the scanner from a processing
routine so that further scanning can be performed.
<symbol> SCRTN <table><,RTNR=NO><,SCT=sct-address>
table
addrla (passed in VR1)
0
Address of a new routine table. May be specified as
* in the range of a SCAN * to return to the routine
table which follows the SCAN *.
RTNR=NO
0
Specifies that the return address is not in RTNR.
SCT=sct-address
relexpri
0
Address of the SCT. The SCT must be available if
1
-
table or RTNR=NO is used.
116
Default is SCTSTART.
SCSEMI - Step over semicolon
SCSEMI advances the scanner over a semicolon.
<symbol> SCSEMI <SCT=sct-address>
0
SCT=sct-address
relexpri
Address of the scan control table (SCT).
specified if the SCT is not addressable.
Must be
NOTE:
If the scanner is not positioned at a semicolon, no
action is taken.
1
117
SCTELL - Read scan pointer
0SCTELL returns the location and length of the string
remaining to be scanned.
<symbol> SCTELL <SCT=sct-address>
SCT=sct-address
relexpri
0
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
RETURNS:
0
VR1 = location of first byte in string remaining to
be scanned
0
VR0 = >0 length of string remaining to be scanned
<=0 no string remains to be scanned (VR1 not
valid)
1
118
SCTYPE - Switch SCAN delimiters
0Tells the scanner which TRT table to use for subsequent
calls. Two tables have been defined.
<symbol> SCTYPE <NEW=new-tbl-id><,OLD=current-tbl-holder>
<,SCT=sct-address>
new-tbl-id
valuela
0
The following values are accepted:
0
0 - use the standard table as defined in the notes
to the SCAN macro.
0
1 - use a table which considers * & and - as
<letter>s. This should be used for scanning
dsnames (see SCAN macro).
0
2 - use a table which is the same as for 0 except
that parentheses are individual delimiters.
0
0
0
0
0
1
-
3 - use a table suitable for scanning JCL.
4 - use a table suitable for scanning command procedure
statements. Parentheses, comma and equal sign are
all individual delimiters.
current-tbl-holder
reg
The macro saves the current scan table type in the
indicated register before returning control. This
permits easy reinstatement of the previous table.
SCT=sct-address
relexpri
Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
119
SIM370 - Specify address of 370 simulation work area
0SIM370 is used to specify or change the address of the work
area for the 370 simulation instructions. The work area is
4 words initialized to zero.
<symbol> SIM370 <name>,<CLEAR=YES>
name
symbol
0
The name of the work area. Omit if 370 simulation
instructions are not allowed.
CLEAR=YES
0
Specifies that the area is to be cleared to zeros.
1
120
STRIP - Strip leading and/or trailing characters from string
The STRIP macro removes leading and/or trailing characters
from a string.
<symbol> STRIP loc-reg,len-reg<,work-reg><,TYPE=symbol>
<,NULL=NO><,ZERO=NO><,LABEL=symbol><,FILL=char>
<,FILADDR=byte>
loc-reg
preg
0
Specifies the starting address of the string to be
stripped.
len-reg
reg
0
Specifies the length of the string to be stripped.
After the termination of the macro, this register
will contain the new length of the stripped string.
work-reg
preg
0
Provides a work register to be used in the search.
More efficient code may be generated if this
register is provided.
TYPE=symbol
LEFT, RIGHT, or BOTH
0
Specifies elimination of leading (LEFT) or trailing
(RIGHT) characters, or both (BOTH). Default is RIGHT.
NULL=NO
0
The NO condition specifies that the resulting string
will never be 0. More efficient code may be
0
1
-
generated if this option is specified.
ZERO=NO
The NO condition specifies that the value in the len
register will never be 0. More efficient code may
be generated if this option is specified.
121
LABEL=symbol
relexpri
The location to receive control if the resulting
string has a length of zero.
0
FILL=char
cexpr8
0
Used to specify a character other than zero to be
stripped.
0
FILADDR=byte
relexpri
0
Used to specify the location of the character
to be stripped. May not be used with FILL.
-RETURNS:
0
loc-reg = location of stripped string
0
len-reg = length of stripped string
1
122
SYSBIT - Test for the presence of a 1 bit and set or reset it
0The SYSBIT macro will test a byte and set the condition code
to NZ if the specified bit is on and Z if it is not on. It
will optionally set the bit on or off.
<symbol> SYSBIT byte-addr,bit-specification<,SET=option>
<,RESET=option>
byte-addr
relexpri
0
Specifies the address of the byte to be tested or
set.
bit-specification
cexpr8
0
Specifies the bit to be set/reset and tested.
SET=option
YES or ONLY
0
The bit should be set on, if SET=YES, the condition
code should be set based on the status of the bit
before setting it on.
RESET=option
YES OR ONLY
0
Same as YES, but the bit is set off.
1
123
SYSCMP - Compare expressions
0The SYSCMP macro will generate an error statement if the
specified relation is not true.
<symbol> SYSCMP expression1,relation,expression2
<,MSG=text>
expression1
previously defined cexpr24
relation
LT,NLT,LE,NLE,EQ,NEQ,GE,NGE,GT,NGT
expression2
previously defined cexpr24
0
0
1
-
MSG=text
string
The quoted string will appear in an MNOTE
immediately preceding the generated statement
whether or not an error was created. If no MSG is
provided, then a system generated message will be
supplied.
124
SYSKWT - Check for valid macro keyword
0<symbol> SYSKWT name,value,legal-list<,COND=option><,NULL=NO>
name
name of parameter to be checked
0
Specifies the name of the keyword being checked
(used for error message).
value
the macro parameter to be checked
legal-list
list of legal values in
parentheses
COND=option
NO or parenthesized list of legal
values
0
The conditional form of the keyword is not allowed if
NO is specified or if a list is specified and value
is not in the list.
NULL=NO
0
The parameter may not be null.
1
125
SYSLBL - Generate a label
0The SYSLBL generates a DS 0H if there is a symbol in the
label field.
<symbol> SYSLBL <TYPE=alignment>
TYPE=alignment
X, H, F or D
0
Specifies the alignment. H is the default.
1
126
SYSLR - Load register with value
0The SYSLR macro provides a generalized mechanism for loading
a value into a register.
<symbol> SYSLR reg,value<,TYPE=xxx><,NULL=value><,OP=opcode>
<,SELECT=(values)><,ERR='msg'><,LTR=YES>
<,STRLEN=string-length>
reg
reg
0
Denotes the register to be loaded.
value
valuela or L:expr, LA:expr,
LH:expr, LOADx:expr (x may be B, H,
LH, P, F, LF) or string
0
Specifies the value to be loaded into the register.
Using L:, LA:, or LH: specifies the opcode to be
0
0
0
1
0
0
0
0
1
-
used in the loading. LOADx implies non-aligned
loading, where LOADLH implies clearing the high
order bytes rather than propagating the sign.
TYPE=xxx
any nonblank value, conditional
form allowed
Requests that the register be complemented.
NULL=value
anything valid for the value
parameter
Specifies a value to be used if the value operand is
null. The default is NULL=0.
OP=opcode
L, LA, LH, LOADx, LITY, LITA
Specifies the op code to be used for the load. The
default is LA. LITY, LITA mean to load from a
literal Y or A constant, respectively.
127
SELECT=(values)
list of options in parentheses
Specifies keywords that are valid for the TYPE=
parameter. If TYPE= is not one of these, the
complementing will not be performed.
ERR='msg'
string
Error message to be issued if the value is null.
LTR=YES
Specifies that an LTR is to be performed on the
register after it is loaded.
STRLEN=string-length
cexpr8
Specifies the length when string notation is used.
128
SYSLST - Load and store a value
0<symbol> SYSLST location<,NEW=value><,OLD=reg><,LOAD=opcode>
<,STORE=opcode><,OP=opcode><,REG=reg>
location
relexpri
0
Address to be inspected.
NEW=value
valuela
0
Specifies a new value to be placed into the
location.
OLD=reg
reg
0
Specifies a register to receive the old value.
LOAD=opcode
L, LH or LOADB
0
Specifies the instruction to be used to load from
the location. Default is L.
STORE=opcode
ST, STH or STC
0
Specifies the instruction to be used to store into
the location. Default is ST.
OP=opcode
LA, L, LH or LOADx
0
Specifies the opcode to be used to load a new value.
Default is LA.
REG=reg
reg
0
Specifies the work register to be used. The default is RTNR.
1
129
-
SYSLV - Load values into a register
0<symbol> SYSLV register,value1,option1,select1...
valueN,optionN,selectN
value1...valueN
integer between 1 and 4095
0
Specifies a value to be loaded into the register.
option1...optionN
anything, conditional form allowed
0
If non-null, specifies that the associated value is
to be loaded.
select1...selectN
list of options in parentheses
0
Specifies the keywords for which the associated
value is to be loaded. Limits the effect of
option1...optionN.
NOTES:
0
1. The register is set to zero if no values are loaded.
0
2. If more than one value is selected to be loaded, the
sum of all of them is loaded. The sum must be less
than or equal to 4095.
1
130
SYSPRED - Generate code to test predicate
0SYSPRED is used to generate code to branch based on the
truth or falsity of a predicate specification.
<symbol> SYSPRED label,<BRANCH=FALSE>,
IF=(opcode,operand,operand,cc,
<andor,opcode,operand,operand>...)
label
symbol
0
Label to branch to if the predicate is true.
0
BRANCH=FALSE
0
Specifies that the branch is to be taken if the
predicate is false rather than true.
0
opcode
0
A valid operation code
0
operand
0
An operand for the specified opcode.
0
cc
Z, NZ, M, NM, P, NP, O, NO,
E, NE, L, NL, H, NH
0
The condition code which means "true".
0
andor
AND or OR
0
Used to specify how multiple instructions are
to be combined.
1
131
SYSQS - Locate quoted string
0The SYSQS macro will load the beginning address and length
of a string into the specified registers.
<symbol> SYSQS loc-reg,len-reg,location,length
<,NULL=(loc,len)><,TYPEA=option>
<,TYPEL=option><,SELECTA=options>
<,SELECTL=options>
0
or
-<symbol> SYSQS loc-reg,len-reg,string,<length>
<,NULL=(loc,len)><,TYPEA=option>
<,TYPEL=option><,SELECTA=options>
<,SELECTL=options>
loc-reg
reg
0
Specifies the register to contain the starting
address of the string.
len-reg
reg
0
Specifies the register to contain the length of the
string.
location
addrla
0
Provides the address of the string.
string
string
0
Provides the literal string.
length
valuela or cexpr8 depending on use
of location or string
0
Provides the length of the string. If the location
option is used, this parameter must be supplied. If
the string option is used, it is optional.
1
132
TYPEA=option
anything not null, conditional
form allowed
0
Specifies that the address register is to be
complemented.
TYPEL=option
anything not null, conditional
form allowed
0
Specifies that the length register is to be
complemented.
NULL=(loc,len)
anything valid for location or
string and length
0
Supplies the location and length to be returned if
the loc,len parms are null.
SELECTA=options
list of options in parentheses
0
Specifies which options TYPEA is effective for.
SELECTL=options
list of options in parentheses
0
Specifies which options TYPEL is effective for.
1
133
SYSRNG - Test range of integer
0SYSRNG issues an MNOTE if the integer supplied exceeds
the specified bounds.
<symbol> SYSRNG name,integer,relation1,value1,...,
relationN,valueN
name
unquoted string
0
An identifying name to be used in the MNOTE.
0
0
0
1
-
integer
unsigned integer or SETA symbol
The integer to be tested.
relationI
LT,LE,EQ,GE,GT,NLT,NLE,NEQ,NGE,
NGT or MULT
A relation which must be satisfied (MULT means
multiple of).
valueI
integer or SETA symbol
Second operand of the relation.
134
SYSTANDB - Generate test and branch
0SYSTANDB is used to generate a test and branch sequence in
support of the conditional form of macro operands.
<symbol> SYSTANDB (option,testop,testopnd,testopnd,<testcc>),
instlen,instop,instopnd,instopnd,<BC=N>
option
0
Macro option, not used by SYSTANDB.
0
testop
valid opcode
0
Operation code for the test instruction.
0
testopnd
0
Operand for the test instruction
0
testcc
Z, NZ, M, NM, P, NP, O, NO, E, NE,
L, NL, H, NH
0
Condition code on which a branch around the generated
instruction is to be performed.
0
instlen
2, 4 or 6
0
Length of the instruction to be branched around.
0
instop
valid opcode
0
Instruction to be executed if test is true.
0
instopnd
0
Operands for instop.
0
BC=N
0
Specifies that the branch is to be performed
if the specified condition code is not set by
the test instruction.
1
135
NOTE:
0
Generated code is of the form
0
testop
testopnd,testopnd
Btestcc
*+4+instlen
instop
instopand,instopand
1
136
TIME128 - Return time since last 128 day period
0The TIME128 macro will return in VR0 the time in 100th of a
second from the beginning of the nearest 128 day period.
VR1 will contain the date is OS form.
<symbol> TIME128
0
0
1
-
RETURNS:
VR0 =
VR1 =
time in 100th of a second from beginning of
last 128 day period
date in OS format
137
TIOTSRCH - Locate TIOT entry
0The TIOTSRCH macro will locate a TIOT entry for a
specified DDNAME.
<symbol> TIOTSRCH reg1,reg2,ddname<,UCB=NO>
reg1
preg
0
Work register.
0
reg2
reg
0
Work register.
ddname
relexpri
0
The address of the 8 byte area containing the ddname
(left justified and padded with blanks).
UCB=NO
0
Requests that the address of the TIOT entry for the
ddname rather than the UCB address be returned.
RETURNS:
0
The address of the requested TIOT or UCB entry will be
returned in reg1. The condition code is set to NZ if
the DDname is found, Z otherwise.
1
138
UAOP - Generate instruction with unaligned operand
0UAOP is used to generate an RX instruction with an unaligned
operand. Avoids alignment error messages from the assembler.
<symbol> UAOP opcode,register,address
opcode
a valid RX operation code
0
The operation code for the instruction to be
generated.
register
reg
0
The register operand for the instruction.
address
relexpri
0
The address operand for the instruction. Indexing
may not be used.
1
139
VAREA - Define storage for a varea
0The VAREA macro will define enough storage space for a
varea.
<symbol> VAREA
NOTE:
Storage for a VAREA may also be reserved by allocating
&VAREA bytes on a fullword boundary.
1
140
VCLEAR - Clear a varea
0The VCLEAR macro will reset a varea so that the next VSEG
goes at the start of the buffer.
<symbol> VCLEAR varea
varea
relexpri or (preg)
0
The address of the varea to be cleared.
1
141
VINIT - Initialize a varea
0The VINIT macro will initialize a varea for processing by
other 'V' macros.
<symbol> VINIT varea,routine,loc,len
varea
relexpri or (preg)
0
The address of the varea to be initialized.
routine
addrla (loaded into VRF)
0
The address of the routine to receive control if the
buffer overflows or a VOUT macro is issued.
loc
addrla (loaded into VR0)
0
The location of the buffer into which VSEGs will be
done.
len
valuela (loaded into VR1)
0
The length of the buffer into which VSEGs will be
done.
NOTE:
0
The contents of the registers upon entry to the routine
are:
0
VRF = 0 VOUT
4 buffer overflow
0
VRE = varea address
0
VR1 = location of the buffer
1
142
VR0 = length of information to be put into
the buffer
0
RTNR = location to return to in order to complete
the operation
1
143
VOUT - Output the contents of the buffer
0The VOUT routine will pass control to the routine specified
0
in the VINIT macro and reinitialize the buffer.
<symbol> VOUT
or
<symbol> VOUT
varea<,loc,len><,DEBLANK=YES><,WGET=YES>
<,OFFSET=value>
varea,string<,string-len><,DEBLANK=YES>
0
0
0
0
0
0
0
1
0
1
-
varea
addrla (passed in VRE)
The address of the varea whose buffer is to be
output.
loc
addrla (passed in VR1)
Location of a string to be VSEGed.
len
valuela (passed in VR0)
Length of the string to be VSEGed.
string
string
Literal string to be VSEGed.
string-len
cexpr8
Length of literal string.
DEBLANK=YES
The string is to be deblanked before being VSEGed.
WGET=YES
conditional form allowed
loc is the address of a locator for the string.
144
OFFSET=value
valuela (passed in VRF)
Offset from the start of the string.
145
VSEG - Put a segment into the buffer
0The VSEG macro will but a segment into the end of the
current buffer of the specified varea.
<symbol> VSEG varea,loc,len<,DEBLANK=YES><,WGET=YES>
<,OFFSET=value>
or
<symbol> VSEG varea,string<,string-len><,DEBLANK=YES>
varea
addrla (passed in VRE)
0
The address of the varea to be used.
loc
addrla (passed in VR1)
0
The address of the string to be moved.
len
valuela (passed in VR0)
0
The length of the string to be moved.
string
string
0
A literal string to be moved into the buffer.
string-len
cexpr8
0
The length of the literal string.
DEBLANK=YES
0
The string is to be deblanked before being VSEGed.
WGET=YES
conditional form allowed
0
loc is the address of a locator for the string.
1
146
-
0
1
-
OFFSET=value
valuela (passed in VRF)
Offset from the start of the string.
147
VTELL - Find length and location in buffer
0The VTELL macro will return the starting address of the buffer
and the number of bytes which have been VSEGed into the
buffer.
<symbol> VTELL varea
varea
relexpri or (preg)
0
The address of the varea to be used.
RETURNS:
0
VR1 = the starting address of the buffer
0
VR0 = the number of bytes used in the buffer
1
148
VTEST - Test remaining length
0The VTEST macro will set the condition code depending on
whether or not enough bytes are left in the buffer to
accommodate the specified length.
<symbol> VTEST varea,len
varea
relexpri or (preg)
0
The address of the varea to be tested.
len
valuela
0
The length to be tested.
RETURNS:
0
condition code = L insufficient space
E exactly enough space
H more than enough space
0
RTNR = number of bytes remaining in the buffer less len
1
149
Extended Fixed Binary Facility
0The following macro provide extended fixed binary
operations.
LOAD, STORE, ADD, SUB, and CMP
<symbol> opcdx
reg,relexpri<,JUNK=OK>
opcd
LOAD, STORE, ADD, SUB, or CMP
x
B
One byte operation
H
Normal halfword operation
LH
Logical halfword operations
P
Three byte pointer operations
0
F
Normal fullword operations
LF
Logical fullword operations
JUNK=OK
used only with LOAD
Specifies that for LOADB, LOADLH, and LOADP, it is
not necessary to clear the high order bytes in the
register. Otherwise, the high order bytes are
padded with zeros (0) to create a fullword when
loading the register.
0
0
NOTE:
1.
2.
0
0
3.
1
-
Operands need not be aligned.
For LOAD the register to be loaded must not be part
of the operand location relexpri unless JUNK=OK is
specified. For example, the following is illegal:
LOADB VR1,0(VR1)
When code is being generated for a 370, the 370
instruction set will be used where possible.
150
Extended Length Facilities
0These macros generate inline code to provided extended
length facilities. These macros provide an optional
N=count operand to allow the writer to specify the exact
number of instructions to be generated. If N=count is not
present, and the length operand is an unsigned integer or a
SETA symbol, then as many instructions as are required for
the specified length will be generated. If N=count is not
present and the length operand is not an unsigned integer or
SETA symbol, then one instruction is generated.
MCLC, MMVC, MNC, MOC, and MXC
<symbol> opcd oper1,oper2,length<,N=count><,ZERO=NULL>
opcd
MCLC, MMVC, MNC, MOC, or MXC
oper1
relexpri or (preg)
0
The address of the 1st operand.
oper2
relexpri or (preg)
0
The address of the 2nd operand.
length
0
The number of bytes affected.
N=count
unsigned integer or SETA symbol
0
The number of instructions to be generated.
0
ZERO=NULL
0
Specifies that no instructions are to be generated if
len is zero. Normally a single instruction would be
generated.
1
151
MFC - Fill a field
0The MFC macro will fill a field with the specified charater.
-
<symbol> MFC
loc,len<,FILL=char><,FILADDR=addr><,N=count><,ZERO=NULL>
loc
0
0
0
0
0
0
0
1
-
relexpri or (preg)
The address of the field to be filled.
len
The length of the field to be filled.
FILL=char
cexpr8
The character to fill the field with. Default is
blank (C' ')
FILADDR=addr
relexpri
Address of the fill character to be used. Mutually
exclusive with FILL.
N=count
unsigned integer or SETA symbol
The number of instructions to be generated.
ZERO=NULL
Specifies that no instructions are to be generated
if len is zero.
152
MTC - Test a field
0MTC tests a field for all zero (or other specified value)
bytes.
<symbol> MTC loc,len<,FILL=char><,FILADDR=addr><,N=count><,ZERO=NULL>
loc
relexpri or (preg)
0
Address of field to be tested.
len
0
Length of field.
FILL=char
cexpr8
0
The character to be tested for. Default is 0.
FILADDR=addr
relexpri
0
Address of the character to be tested for. Mutually
exclusive with FILL.
N=count
unsigned integer or SETA symbol
0
Number of instructions to be generated.
0
ZERO=NULL
0
Specifies that no test is to be performed if len
is zero. The condition code will be set to zero in
that case.
NOTE:
0
If FILL is not specified, OC instructions are
generated to test the field for zeros. If FILL is
specified, CLC instructions are generated, even if
FILL=0 is specified.
1
153
MTR - Translate a field
0MTR translates a field using a specified translate table.
<symbol> MTR loc,table,len<,N=count><,ZERO=NULL>
loc
0
0
0
0
0
0
1
-
relexpri or (preg)
Location of field to be translated.
table
relexpri or (preg)
Location of translate table.
len
Length of field.
N=count
unsigned integer or SETA symbol
Number of TR instructions to be generated.
ZERO=NULL
Specifies that no instructions are to be generated if
len is zero.
154
MTRT - Translate and test a field
0MTRT performs a translate-and-test on a field.
<symbol> MTRT loc,table,len<,N=count><,ZERO=NULL>
loc
relexpri or (preg)
0
Location of field.
table
relexpri or (preg)
0
Location of translate-and-test table.
len
0
Length of field.
N=count
unsigned integer or SETA symbol
0
Number of instructions to be generated.
0
ZERO=NULL
0
Specifies that no translate and test is to be
performed if len is zero. The condition code is
set to zero in that case.
1
155
MZC - Clear a field
0The MZC macro will clear a field to all X'00's.
<symbol> MZC
loc,len<,N=count><,ZERO=NULL>
loc
relexpri or (preg)
0
The address of the field to be zeroed.
len
0
The length of the field to be zeroed.
N=count
unsigned integer or SETA symbol.
0
The number of instructions to be generated.
0
ZERO=NULL
0
Specifies that no instructions are to be generated
if len is zero.
1
156
370 Simulation Instructions
0The following group of macros will generate (if for 370) or
simulate the 370 long form instructions.
MCLCL, MMVCL, MNCL, MOCL, and MXCL
<symbol> opcd
reg1,loc1,len1,reg2,loc2<,len2><,FILL=char>
<,FILADDR=byte><,INLINE=YES><,N=count>
0
0
0
0
0
0
1
0
0
0
0
1
-
opcd
MCLCL, MMVCL, MNCL, MOCL, or MXCL
reg1
even reg of even-odd register pair
Work register.
loc1
addrla (passed in reg1)
The address of the 1st operand.
len1
valuela (passed in reg1+1)
The length of the first operand.
reg2
even reg of even-odd register pair
Work register.
loc2
addrla (passed in reg2)
The address of the second operand.
len2
valuela (passed in reg2+1)
The length of the 2nd operand. If omitted, len1 is
used and more efficient code may be generated.
157
FILL=char
cexpr8
The character to pad the shorter string with if len1
and len2 are not equal. The default is X'00',
except for MNCL which is X'FF'.
FILADDR=byte
relexpri
The address of the fill character. May not be used
if FILL is used.
INLINE=YES
Requests that the code be generated as an inline
sequence of instructions, rather than in a loop if
code is being generated for a 360 and len2 is
omitted. The operands must fulfill the requirements
for the Mxxx macros.
N=count
unsigned integer or SETA symbol.
The number of instructions to generate if
INLINE=YES.
158
MFCL - Clear field loop
0<symbol> MFCL
reg1,loc,len,reg2<,FILL=char><,FILADDR=byte>
<,INLINE=YES><,N=count>
0
0
0
0
reg1
even reg of even-odd register pair
Work register.
loc
addrla (passed in reg1)
The address of the field to be filled.
len
valuela (passed in reg1+1)
The length of the field to be filled.
reg2
even reg of even-odd register pair
Work register.
0
0
0
0
1
-
FILL=char
cexpr8
The character with which to fill the field. Default
is blank (C' ').
FILADDR=byte
relexpri
The address of the fill character. May not be used
if FILL is used.
INLINE=YES
Requests that the code be generated as an inline
sequence of instructions rather than as a loop if
code is being generated for a 360. The operands
must fulfill the requirements for the MFC macro.
N=count
unsigned integer or SETA symbol
The number of instructions to generate if
INLINE=YES.
159
MTCL - Test field loop
0<symbol> MTCL reg1,loc,len,reg2<,FILL=char><,FILADDR=byte>
<,INLINE=YES><,N=count>
reg1
even reg of even-odd pair
0
Work registers.
loc
addrla (passed in reg1)
0
Location of field to be tested.
len
valuela (passed in reg1+1)
0
Length of field.
reg2
even reg of even-odd pair
0
Work registers.
FILL=char
cexpr8
0
Character to be tested for. Default is zero.
FILADDR=byte
relexpri
0
Address of the character to be tested for. May not be
used if FILL is used.
INLINE=YES
0
Requests that the code be generated as an inline
sequence of instructions rather than as a loop if
code is being generated for a 360. The operands
must fulfill the requirements for the MFC macro.
N=count
0
Number of instructions to be generated for
INLINE=YES.
1
160
MTRL - Translate field loop
0<symbol> MTRL reg1,loc,table,reg2,len<,INLINE=YES<,N=count>>
reg1
preg
0
Work register.
loc
addrla (passed in reg1)
0
Location of field to be translated.
table
relexpri
0
Location of translate table.
0
0
0
0
1
-
reg2
preg
Work register.
len
valuela (passed in reg2)
Length of field.
INLINE=YES
Generate an inline sequence of TR instructions. The
operands must fulfill the requirements for the MTR
macro.
N=count
Number of instructions for INLINE=YES.
161
MTRTL - Translate and test loop
0<symbol> MTRTL reg1,loc,table,reg2,len<,INLINE=YES<,N=count>>
reg1
preg
0
Work register.
loc
addrla (passed in reg1)
0
Location of field to be translated.
table
relexpri
0
Location of translate table.
reg2
preg
0
Work register.
len
valuela (passed in reg2)
0
Length of field.
INLINE=YES
0
Generate an inline sequence of TR instructions. The
operands must fulfill the requirements for the TRT
macro.
N=count
0
Number of instructions for INLINE=YES.
1
162
MZCL - Zero field loop
0<symbol> MZCL reg1,loc,len,reg2<,INLINE=YES><,N=count>
reg1
even reg of even-odd register pair
0
Work register.
loc
addrla
0
The address of the field to be cleared to X'00's.
len
valuela
0
The length of the field to be cleared.
reg2
even reg of even-odd register pair
0
Work register.
INLINE=YES
0
Requests that the code be generated as an inline
sequence of instructions, rather than as a loop if
code is being generated for a 360. The operands
must fulfill the requirements for the MFC macro.
N=count
unsigned integer or SETA symbol
0
The number of instructions to generate if
INLINE=YES.
1
-
163
Flag Setting and Testing Macros
DF - Define flags
0DF is used to define one or more flag bits and optionally
assign initial values.
<symbol> DF flag-name,...<INIT=(flag-name,...)>
flag-name
symbol
0
The name of the flag to be defined. Any number of
flags may be specified. If more than 8 are
specified, more than 1 byte will be reserved.
INIT=(flag-name,...) list of symbols
0
Specifies flags which are to be initially 1 (on).
1
164
SF - Set flags
0SF is used to turn on one or more flags defined with DF.
<symbol> SF flag-name,...
flag-name
symbol
0
The name of a flag to be turned on (set to 1). Up
to 8 flags may be specified; all must reside in the
same byte.
1
165
TF - Test Flags
0TF is used to test one or more flags defined with DF.
<symbol> TF flag-name,...
flag-name
symbol
0
The name of a flag to be tested. Up to 8 flags may
be specified; all must reside in the same byte.
RETURNS:
0
CC = Z all tested flags off
O all tested flags on
M some on, some off
1
166
ZF - Zero flags
0ZF is used to turn off one or more flags defined with DF.
<symbol> ZF flag-name,...
flag-name
symbol
0
1
-
The name of a flag to be cleared. Up to 8 flags may
be specified; all must reside in the same byte.
167
Multiprocessor Instructions
MPNI - Multiprocessor and immediate
0MPNI performs a synchronized NI instruction.
-<symbol> MPNI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
addr
relexpri
0
Address of the byte to be modified.
mask
cexpr8
0
The mask to be used.
REGS=(r1,r2,r3)
preg,preg,preg
BASE=base-address
relexpri
0
The address of a fullword located no more than 4076
bytes before the byte. More efficient code is
generated if this option is specified.
1
168
MPOI - Multiprocessor or immediate
0MPOI performs a synchronized OI instruction.
-<symbol> MPOI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
addr
relexpri
0
Address of the byte to be modified.
mask
cexpr8
0
The mask to be used.
REGS=(f1,f2,f3)
preg,preg,preg
BASE=base-address
relexpri
0
The address of a fullword located no more than 4076
bytes before the byte. More efficient code is
generated if this option is specified.
1
169
MPXI - Multiprocessor or immediate
0MPXI performs a synchronized XI instruction.
-<symbol> MPXI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
addr
relexpri
0
Address of the byte to be modified.
mask
cexpr8
0
The mask to be used.
REGS=(r1,r2,r3)
preg,preg,preg
BASE=base-address
relexpri
0
The address of a fullword located no more than 4076
bytes before the byte. More efficient code is
generated if this option is specified.
1
170
-
MPZI - Multiprocessor or immediate
0MPZI performs a synchronized ZI instruction.
-<symbol> MPZI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
addr
relexpri
0
Address of the byte to be modified.
mask
cexpr8
0
The mask to be used.
REGS=(r1,r2,r3)
preg,preg,preg
BASE=base-address
relexpri
0
The address of a fullword located no more than 4076
bytes before the byte. More efficient code is
generated if this option is specified.
1
171
ALP Readability Macros
The following macros are provided in order to enhance the
readability of ALP programs.
0
r is a register (reg)
a is a storage address (relexpri)
c is a constant
-Macro
Name
Code Generated
0AI
r,c
Add Immediate
LA
r,c(,r)
0AI
VR0,c
Add Immediate
AL
VR0,=A(c)
-CI
r,c
Compare Immediate
C
r,=A(c)
0CIL r,c
Compare Immediate
CL
r,=A(c)
Logical
0DI
r,c
Divide Immediate
D
r,=A(c)
0LI
r,c
Load Immediate
LA
r,c
-LI
VR0,c
Load Immediate
L
VR0,=A(c)
0LQS r1,r2,'str' Load Quoted String
LA
r1,=C'str'
LA
r2,length
0LT
r,a
Load and Test
L
r,a
LTR r,r
0MI
r,c
Multiply Immediate
MH
r,=AL2(c)
0RM
r
Register Minus
LTR r,r
0RMP r
Register Minus or Plus
LTR r,r
0RMZ r
Register Minus or Zero
LTR r,r
0RNM r
Register Not Minus
LTR r,r
0RNMP r
Register Not Minus
LTR r,r
or Plus
0RNMZ r
Register Not Minus
LTR r,r
or Zero
0RNP r
Register Not Plus
LTR r,r
1
172
RNZ r
Register Not Zero
LTR r,r
0RNZP r
Register Not Zero
LTR r,r
or Plus
0RP
r
Register Plus
LTR r,r
0RZ
r
Register Zero
LTR r,r
0RZP r
Register Zero or Plus
LTR r,r
0SI
0SI
r,1
r,2
Subtract Immediate
Subtract Immediate
0SI
0Z
r,c
r,a
Subtract Immediate
Zero
0Z
0ZB
,a
r,a
Zero
Zero Byte
0ZB
0ZH
,a
r,a
Zero Byte
Zero Halfword
0ZH
0ZHB
0ZHBR
0ZI
0ZR
1
-
,a
a
r
a,c
r
Zero
Zero
Zero
Zero
Zero
Halfword
High Byte
High Byte Register
Immediate
Register
173
BCTR
BCTR
BCTR
SL
SR
ST
XC
SR
STC
MVI
SR
STH
XC
MVI
LA
NI
SR
r,0
r,0
r,0
r,=A(c)
r,r
r,a
a(4),a
r,r
r,a
a,0
r,r
r,a
a(2),a
a,0
r,0(,r)
a,255-(c)
r,r
EXI and EXORG - Execute immediate
0EXI permits the instruction to be executed by an EX
instruction to be coded at the same place in the source
program.
<symbol> EXI ex-reg,opcode,operand1,operand2,<DECR=YES>,
<INCR=YES>
ex-reg
reg
0
The register to be used as the first operand of the
EX instruction.
opcode
valid assembler opcode
0
Operation code of the instruction to be executed.
operand1
0
The first operand of the instruction to be executed.
operand2
0
The second operand of the instruction to be
executed.
DECR=YES
0
Specifies that the register is to be decremented
by one before the EX instruction.
0
INCR=YES
0
Specifies that the register is to be incremented
by one after the EX instruction. The condition
code is not affected.
1
174
NOTES:
0
1. The opcode to be executed may not be a macro unless
it is one of the following: MCLC, MMVC, MNC, MOC,
MTC, MTR, MTRT, MXC, MZC. When one of these is
used, N=1 and a length of zero are forced.
0
2. An EXORG must be included within addressable range
in order to assemble the instructions to be
0
1
-
3.
executed.
If an instruction occurs more than once, EXORG will
assemble only one copy.
175
Extended Branch Mnemonics
The following extended branch mnemonics are provided:
Extended
Corresponding
Mnemonic
Assembler Mnemonic
0
BLR
BCR
4
BER
BCR
8
BHR
BCR
2
BNLR
BCR
11
BNER
BCR
7
BNHR
BCR
13
0
BMR
BCR
4
BZR
BCR
8
BPR
BCR
2
BNMR
BCR
11
BNZR
BCR
7
BNPR
BCR
13
0
BOR
BCR
1
BNOR
BCR
14
0
BLE
BNH
BEH
BNL
BLH
BNE
BNLE
BH
BNEH
BL
BNLH
BE
0
BLER
BNHR
BEHR
BNLR
BLHR
BNER
BNLER
BHR
BNEHR
BLR
BNLHR
BER
0
BMZ
BNP
BZP
BNM
BMP
BNZ
BNMZ
BP
BNZP
BM
BNMP
BZ
0
BMZR
BNPR
BZPR
BNMR
BMPR
BNZR
BNMZR
BPR
BNZPR
BMR
BNMPR
BZR
1
176
ED Routine Macros
EDABEND - Prepare for ABEND
-
0The EDABEND macro sets up the environment necessary for the
ED routines to issue ABEND messages.
<symbol> EDABEND
-Note:
0
If the contents of register VRF is zero, then it
is assumed that the dynamic work area does not exist
and space for it is obtained.
1
177
EDENTER - Generate entry linkage
0The EDENTER macro will generate entry linkage code for the
ED routines.
<symbol> EDENTER <ENTRY=COMMON><,INITRTN=YES><,MESSAGE=YES>
ENTRY=COMMON
0
Specifies that the PL/I and the non-PL/I entry
points are the same (i.e., they have exactly the
same arguments).
INITRTN=YES
0
Specifies that space for the dynamic work area has
not yet been obtained.
0
MESSAGE=YES
0
Suppresses the storing of the name of the routine
called in the dynamic work area. Also suppresses
the resetting of the previous routines return code.
-NOTE:
0
Unless INITRTN=YES is specified, validity checks are made
to verify that the control word argument (ACW) points to the
dynamic work area. If any of the checks fail, register VRF is
set to zero and control is transferred to the statement with a
label of ABENDMSG.
1
178
EDEXIT - Generate exit linkage
0The EDEXIT macro will generate exit linkage code for the ED
routines.
<symbol> EDEXIT <TERMRTN=YES><,MESSAGE=YES>
TERMRTN=YES
0
Specifies that space for the dynamic work area has
been freed.
0
MESSAGE=YES
0
Suppresses the storing of the return code in the
dynamic work area.
-NOTES:
01. Unless MESSAGE=YES is coded, the value in register VRF is
stored in the return code argument (ARETURN).
02. Unless TERMRTN=YES is specified, a check is made for stack
overflow by looking for a unique character string at the
end of the dynamic work area. If this test fails, register
VRF is set to 4 and control is transferred to the statement
1
-
with a label of ABEND MSG.
179
EDGAS - Get address of string
The EDGAS macro may be used to get the address of a character
string passed to the ED routines.
-<symbol> EDGAS addr,aloc,WORK=work-reg
addr
preg
0
The address of the character string is returned
in this register.
0
aloc
addrl
0
Symbol corresponding to character string variable
in DSECT for argument list.
work-reg
reg
0
Work register.
1
180
EDGCLS - Get current length of string
The EDGCLS macro may be used to get the current length of a
character string passed to the ED routines.
-<symbol> EDGCLS curlen,aloc,<alength>,WORK=work-reg<,DEFLEN=default>
curlen
preg
0
The current length of the character string is
returned in this register.
0
aloc
addrl
0
Symbol corresponding to character string variable
in DSECT for argument list.
alength
addrl
0
Symbol corresponding to length variable in
DSECT for argument list.
0
work-reg
reg
0
Work register.
0
default
constant
0
The default length which will be used for
non-PL/I routines when the "alength"
parameter is omitted.
-NOTES:
0
1. The "alength" and "DEFLEN=" parameters are
mutually exclusive.
1
181
EDGMLS - Get maximum length of string
The EDGMLS macro may be used to get the maximum length of a
character string passed to the ED routines.
-<symbol> EDGMLS maxlen,aloc,alength,WORK=work-reg
maxlen
preg
0
The maximum length of the character string is
returned in this register.
0
aloc
addrl
0
Symbol corresponding to character string variable
in DSECT for argument list.
0
0
0
1
-
alength
addrl
Symbol corresponding to length variable in DSECT
for argument list.
work-reg
reg
Work register.
182
EDSCLS - Set current length of string
The EDSCLS macro may be used to set the current length of
a varying length PL/I character string variable passed to
the ED routines.
-<symbol> EDSCLS curlen,aloc,WORK1=work-reg1,WORK2=work-reg2
<,PLIV=YES>
curlen
reg
0
This register must contain the value to be
stored in the current length field.
aloc
addrl
0
Symbol corresponding to character string
variable in DSECT for argument list.
0
work-reg1
reg
0
Work register.
work-reg2
preg
0
Work register.
PLIV=YES
0
Specifies that program has already determined that
the string is a varying length PL/I character string
and addressability has been established for the
locator/descriptor. If PLIV=YES is specified, then
"WORK1=" may be omitted.
1
183
EDSETUP - Generate required DSECTS
0The EDSETUP macro generates DSECTS for control blocks which
are required for assembly of an ED routine.
symbol EDSETUP <CBS=option><ctl-block-name=ctl-block-opt>
<,REGS=regs-opt><,SCABBRS=YES><,SETS=NO>
<,PLILD=YES>
symbol
1-8 characters
0
CSECT name for the routine; this is required.
CBS=option
NO or ALL
0
Requests suppression of all control blocks (NO) or
inclusion of all control blocks (ALL).
ctl-block-name
1-4 characters
0
One of the WYLBUR control blocks, e.g. CV, CP, RTB,
RTCB, PCB, DFCB; or one of the OS control blocks
supported by the macro, e.g. UCB, CVT.
ctl-block-opt
YES, NO, CV or CP
0
YES - generate the DSECT.
NO - do not generate the DSECT.
CV - include the definition of the control block as
CP
0
1
-
a continuation of the CV DSECT (JCB and CP
only).
- include the definition of the control block in
the appropriate place in the CP (SCT and RTB
only).
REGS=NO
Suppresses generation of the standard register
definitions.
184
SCABBRS=YES
Specifies that a list of scanner abbreviations
is to be generated.
SETS=NO
0
Suppresses set statements affecting GLOBAL
variables.
PLILD=YES
0
Specifies that the DSECT for the PL/I string
locator/descriptor is to be generated.
-NOTES:
0
1. Before giving the EDSETUP macro, the user should
include copy statements for the following numbers
from SYSLIB: CPARMGBL, MPARMGBL and WPARMGBL.
0
2. The standard form for an ED routine is:
0
module TITLE 'module function'
(macro definitions)
COPY CPARMGBL
COPY MPARMGBL
COPY WPARMGBL
0
module EDSETUP ...
(additional register definitions, etc.)
EJECT
(code)
END
0
3. The default control block options are:
0
TXL=YES
0
Download