home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
ibmtsonih
/
tsnmacdoc.txt
< prev
next >
Wrap
Text File
|
1986-12-17
|
171KB
|
4,300 lines
1
-
-
-
-
-
0 NIH Extended WYLBUR
0 Internal Design
0 Specifications
- October 1986
-
-
-
-
- Computer Center
0 Division of Computer Research and Technology
0 National Institutes of Health
-
-
-
-
1 Table of Contents
-
Cataloged Procedures . . . . . . . . . . . . . . . . . 1
0Assembly Structure . . . . . . . . . . . . . . . . . . 6
0 Selecting Assembly Options . . . . . . . . . . . . 7
0COMMON Module Directory . . . . . . . . . . . . . . . 14
0COMMON Register Conventions . . . . . . . . . . . . . 15
0COMMON Control Block Directory . . . . . . . . . . . . 16
0MACRO Descriptions . . . . . . . . . . . . . . . . . . 17
0 Conventions . . . . . . . . . . . . . . . . . . . . 17
0 COMMON Macros . . . . . . . . . . . . . . . . . . . 20
0 APRIVSCN . . . . . . . . . . . . . . . . . . . . . 20
APRIVSEG . . . . . . . . . . . . . . . . . . . . . 21
0 AREA, AREAORG and AREAEND . . . . . . . . . . . . 22
0 BLDLLIST . . . . . . . . . . . . . . . . . . . . . 24
0 CBDELINK . . . . . . . . . . . . . . . . . . . . . 25
CBDLINKH . . . . . . . . . . . . . . . . . . . . . 27
CBDLINKT . . . . . . . . . . . . . . . . . . . . . 29
CBLINK . . . . . . . . . . . . . . . . . . . . . . 31
CBLINKH . . . . . . . . . . . . . . . . . . . . . 33
CBLINKT . . . . . . . . . . . . . . . . . . . . . 35
CBINIT . . . . . . . . . . . . . . . . . . . . . . 37
0 CDESRCH . . . . . . . . . . . . . . . . . . . . . 38
0 CAMODE . . . . . . . . . . . . . . . . . . . . . . 39
CBAL . . . . . . . . . . . . . . . . . . . . . . . 40
CBALR . . . . . . . . . . . . . . . . . . . . . . 41
CBASE . . . . . . . . . . . . . . . . . . . . . . 42
CCALL . . . . . . . . . . . . . . . . . . . . . . 43
CENTER . . . . . . . . . . . . . . . . . . . . . . 45
CEXIT . . . . . . . . . . . . . . . . . . . . . . 46
CPOP . . . . . . . . . . . . . . . . . . . . . . . 47
CPOPREG . . . . . . . . . . . . . . . . . . . . . 48
CPUSH . . . . . . . . . . . . . . . . . . . . . . 49
CPUSHREG . . . . . . . . . . . . . . . . . . . . . 50
CSA . . . . . . . . . . . . . . . . . . . . . . . 51
CSAVGEN . . . . . . . . . . . . . . . . . . . . . 52
CSAVLINK . . . . . . . . . . . . . . . . . . . . . 53
CSETUP . . . . . . . . . . . . . . . . . . . . . . 54
0 CHKACCT . . . . . . . . . . . . . . . . . . . . . 55
CHKBOX . . . . . . . . . . . . . . . . . . . . . . 56
CHKINIT . . . . . . . . . . . . . . . . . . . . . 57
CHKKW . . . . . . . . . . . . . . . . . . . . . . 58
CHKTERM . . . . . . . . . . . . . . . . . . . . . 59
1 ii
-
CSPOST . . . . . . . . . . . . . . . . . . . . . . 60
0 CVBTD . . . . . . . . . . . . . . . . . . . . . . 61
CVBTX . . . . . . . . . . . . . . . . . . . . . . 62
CVBT$ . . . . . . . . . . . . . . . . . . . . . . 63
CVDATE . . . . . . . . . . . . . . . . . . . . . . 64
CVDTB . . . . . . . . . . . . . . . . . . . . . . 65
CVTIME . . . . . . . . . . . . . . . . . . . . . . 66
CVTIM128 . . . . . . . . . . . . . . . . . . . . . 67
CVXTB . . . . . . . . . . . . . . . . . . . . . . 68
0 DALLIST . . . . . . . . . . . . . . . . . . . . . 69
DALMSG . . . . . . . . . . . . . . . . . . . . . . 72
0 DCC . . . . . . . . . . . . . . . . . . . . . . . 74
DEBLANK . . . . . . . . . . . . . . . . . . . . . 75
DSC . . . . . . . . . . . . . . . . . . . . . . . 77
0 EDIT . . . . . . . . . . . . . . . . . . . . . . . 78
0 FASTPOST . . . . . . . . . . . . . . . . . . . . . 80
FASTWAIT . . . . . . . . . . . . . . . . . . . . . 81
0 FLAGSEG . . . . . . . . . . . . . . . . . . . . . 82
0 FREESWAM . . . . . . . . . . . . . . . . . . . . . 83
0 GBLSET . . . . . . . . . . . . . . . . . . . . . . 84
0 IPRIVSCN . . . . . . . . . . . . . . . . . . . . . 85
IPRIVSEG . . . . . . . . . . . . . . . . . . . . . 86
0 MCCW . . . . . . . . . . . . . . . . . . . . . . . 87
0 OPENP . . . . . . . . . . . . . . . . . . . . . . 88
0 ORGHIGH . . . . . . . . . . . . . . . . . . . . . 89
0 OSCALL . . . . . . . . . . . . . . . . . . . . . . 90
OSENTER . . . . . . . . . . . . . . . . . . . . . 92
OSEXIT . . . . . . . . . . . . . . . . . . . . . . 94
OSSETUP . . . . . . . . . . . . . . . . . . . . . 96
0 SCABBR . . . . . . . . . . . . . . . . . . . . . . 98
SCAN . . . . . . . . . . . . . . . . . . . . . . . 99
SCBACK . . . . . . . . . . . . . . . . . . . . . . 102
SCDONE . . . . . . . . . . . . . . . . . . . . . . 103
SCDQUOTE . . . . . . . . . . . . . . . . . . . . . 104
SCERROR . . . . . . . . . . . . . . . . . . . . . 105
SCEXTRA . . . . . . . . . . . . . . . . . . . . . 107
SCINIT . . . . . . . . . . . . . . . . . . . . . . 108
SCKW . . . . . . . . . . . . . . . . . . . . . . . 109
SCLAST . . . . . . . . . . . . . . . . . . . . . . 112
SCPOP . . . . . . . . . . . . . . . . . . . . . . 113
SCPUSH . . . . . . . . . . . . . . . . . . . . . . 114
SCRTN . . . . . . . . . . . . . . . . . . . . . . 115
1 iii
-
SCSEMI . . . . . . . . . . . . . . . . . . . . . . 116
SCTELL . . . . . . . . . . . . . . . . . . . . . . 117
SCTYPE . . . . . . . . . . . . . . . . . . . . . . 118
0 SIM370 . . . . . . . . . . . . . . . . . . . . . . 119
0 STRIP . . . . . . . . . . . . . . . . . . . . . . 120
0 SYSBIT . . . . . . . . . . . . . . . . . . . . . . 122
SYSCMP . . . . . . . . . . . . . . . . . . . . . . 123
SYSKWT . . . . . . . . . . . . . . . . . . . . . . 124
SYSLBL . . . . . . . . . . . . . . . . . . . . . . 125
SYSLR . . . . . . . . . . . . . . . . . . . . . . 126
SYSLST . . . . . . . . . . . . . . . . . . . . . . 128
SYSLV . . . . . . . . . . . . . . . . . . . . . . 129
SYSPRED . . . . . . . . . . . . . . . . . . . . . 130
SYSQS . . . . . . . . . . . . . . . . . . . . . . 131
SYSRNG . . . . . . . . . . . . . . . . . . . . . . 133
SYSTANDB . . . . . . . . . . . . . . . . . . . . . 134
0 TIME128 . . . . . . . . . . . . . . . . . . . . . 136
0 TIOTSRCH . . . . . . . . . . . . . . . . . . . . . 137
0 UAOP . . . . . . . . . . . . . . . . . . . . . . . 138
0 VAREA . . . . . . . . . . . . . . . . . . . . . . 139
VCLEAR . . . . . . . . . . . . . . . . . . . . . . 140
VINIT . . . . . . . . . . . . . . . . . . . . . . 141
VOUT . . . . . . . . . . . . . . . . . . . . . . . 143
VSEG . . . . . . . . . . . . . . . . . . . . . . . 145
VTELL . . . . . . . . . . . . . . . . . . . . . . 147
VTEST . . . . . . . . . . . . . . . . . . . . . . 148
0 Extended Fixed Binary Facility . . . . . . . . . . 149
0 LOAD, STORE, ADD, SUB and CMP . . . . . . . . . 149
0 Extended Length Facility . . . . . . . . . . . . . 150
0 MCLC, MMVC, MNC, MOC and MXC . . . . . . . . . . 150
MFC . . . . . . . . . . . . . . . . . . . . . . 151
MTC . . . . . . . . . . . . . . . . . . . . . . 152
MTR . . . . . . . . . . . . . . . . . . . . . . 153
MTRT . . . . . . . . . . . . . . . . . . . . . . 154
MZC . . . . . . . . . . . . . . . . . . . . . . 155
0 370 Simulation Macros . . . . . . . . . . . . . . 156
0 MCLCL, MMVCL, MNCL, MOCL and MXCL . . . . . . . 156
MFCL . . . . . . . . . . . . . . . . . . . . . . 158
MTCL . . . . . . . . . . . . . . . . . . . . . . 159
MTRL . . . . . . . . . . . . . . . . . . . . . . 160
MTRTL . . . . . . . . . . . . . . . . . . . . . 161
MZCL . . . . . . . . . . . . . . . . . . . . . . 162
1 iv
-
Flag Setting and Testing Macros . . . . . . . . . 163
0 DF . . . . . . . . . . . . . . . . . . . . . . . 163
SF . . . . . . . . . . . . . . . . . . . . . . . 164
TF . . . . . . . . . . . . . . . . . . . . . . . 165
ZF . . . . . . . . . . . . . . . . . . . . . . . 166
0 Multiprocessor Instructions . . . . . . . . . . . 167
0 MPNI . . . . . . . . . . . . . . . . . . . . . . 167
MPOI . . . . . . . . . . . . . . . . . . . . . . 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
0 "system" is WYLBUR, MILTEN or COMMON
0 "vvv" is the version (default is STD)
0 "os" is MVS or XA (only for operating system dependent modules)
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 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 "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 operating system
VERSION=vvv 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 exist solely to hold copy modules that select assembly
options.
0Copy Module Option Library Purpose
+___________ ______________ _______
0CPARMALL MWCOPTS.ALL Contains SETx statements for
common assembly parameters that
are the same for all versions.
0CPARMVER MWCOPTS.version Contains SETx statements for
(varies according common assembly parameters that
to VERSION and OS are different for different
symbolic parameters) versions.
0MPARMALL MILOPTS.ALL Contains SETx statements for
MILTEN assembly parameters that
are the same for all versions.
0MPARMVER MILOPTS.version Contains SETx statements for
(varies according MILTEN assembly parameters that
to VERSION and OS are different for different
symbolic parameters) versions.
0WPARMALL WYLOPTS.ALL Contains SETx statements for
WYLBUR assembly parameters that
are the same for all versions
and groups.
0WPARMGRP WYLOPTS.GRPgroup Contains SETx statements for WYLBUR
(varies according assembly parameters that are
to GROUP symbolic different for different groups.
parameter)
0WPARMVER WYLOPTS.version Contains SETx statements for
(varies according WYLBUR assembly parameters that
to VERSION and OS are different for different
symbolic parameters) versions.
0WDEVALL WYLOPTS.ALL Contains DEVICE macro calls to
define DASD devices that are
supported by all WYLBUR versions
and groups.
1 8
-
Copy Module Option Library Purpose
+___________ ______________ _______
0WDEVGRP WYLOPTS.GRPgroup Contains DEVICE macro calls to
(varies according define additional DASD devices
to GROUP symbolic that are supported only by some
parameter) WYLBUR groups.
0WDEVVER WYLOPTS.version Contains DEVICE macro calls to
(varies according define additional DASD devices
to VERSION and OS that are supported only by some
symbolic parameters) WYLBUR versions.
0WCLASALL WYLOPTS.ALL Contains VOLCLASS macro calls to
define volume classes that are
available in all WYLBUR versions
and groups.
0WCLASGRP WYLOPTS.GRPgroup Contains VOLCLASS macro calls
(varies according to define additional volume
to GROUP symbolic classes that are available only
parameter) in some WYLBUR groups.
0WCLASVER WYLOPTS.version Contains VOLCLASS macro calls to
(varies according define additional volume classes
to VERSION and OS that are available only in some
symbolic parameters) WYLBUR versions.
0WVOLALL WYLOPTS.ALL Contains VOLUME macro calls to
define volumes that are available
from all WYLBUR versions and
groups.
0WVOLGRP WYLOPTS.GRPgroup Contains VOLUME macro calls to
(varies according define volumes that are available
to GROUP symbolic only in certain WYLBUR groups.
parameter)
0WVOLVER WYLOPTS.version Contains VOLUME macro calls to
(varies according define volumes that are available
to VERSION and OS only in certain versions of
symbolic parameters) WYLBUR.
0WUNITALL WYLOPTS.ALL Contains UNIT macro calls to
define unit names for all WYLBUR
versions and groups.
1 9
-
Copy Module Option Library Purpose
+___________ ______________ _______
-WUNITGRP WYLOPTS.GRPgroup Contains UNIT macro calls to
(varies according define unit names that are
to GROUP symbolic available only in certain
parameter) WYLBUR groups.
0WUNITVER WYLOPTS.version Contains UNIT macro calls to
(varies according define unit names that are
to VERSION and OS available only in certain
symbolic parameters) versions of WYLBUR.
1 10
-
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 SETC 'A' A-Z, 0-9 Default MSGCLASS for internal
reader
&MREMOTE SETA 999 1 to 99999999 Maximum RJE remote number
&LJESCMD SETA 132 1 to 255 Maximum length of a JES
command
&LJESMSG SETA 106 1 to 255 Max length of notify message
for JES
&JESCHAR SETC '$' any character Job Entry Subsystem
command character
&DBC SETC 'NO' 'YES' Is DBC (Debugging
Controller) in use?
&DBCSP SETA 2 1 to 127 Storage subpool to be
used by DBC.
* &SITE SETC 'NIH' Site of installation. If
this is NIH, code is
generated to support
special NIH functions.
* &SITENAM(1) SETC 'NIH/DCRT' Full installation name, is
* &SITENAM(2) SETC '/CCB' displayed to user at logon
* &SITENAM(3) SETC ' WYLBUR' (maximum of 8 elements).
* &FORHELP(1) SETC 'SEE THE' Text added to message to
* &FORHELP(2) SETC 'PAL UNIT' direct user to source for
help. Used by FORHELP
macro (maximum of 8
elements).
* &LINIT SETA 3 0 to 8 Length of user initials
(0 means not used)
* &LACCT SETC 4 0 to 8 Length of user account
number (0 means not used)
* &LKW SETA 3 0 to 8 Length of user keyword
(0 means not used)
1 11
-
Other
Parameter Type Default Values Definition
+ _________ ____ _______ ______ __________
0* <ERM SETA 4 0 to 8 Length of terminal
identifier (0 means not
used)
* &LBOX SETA 4 0 to 8 Length of box
identification
(0 means not used)
* &INITNAM SETC 'INITIALS' Name displayed to users
when prompting for
initials
* &ACCTNAM SETC 'ACCOUNT' Name displayed to users
when prompting for
account
* &KWNAME SETC 'KEYWORD' Name displayed to users
when prompting for keyword
* &TERMNAM SETC 'TERMINAL' Name displayed to users
when prompting for
terminal
* &BOXNAME SETC 'BOX' Name displayed to users
when prompting for box
number
* &RACF SETC 'NO' 'YES' RACF support
* &RACFID SETC 'USERID' 1 - 8 Name of RACF user id
characters
&RACFSP SETA 3 0 to 127 Storage subpool to be
used by RACF
* &SVCGEN1 SETA 251 0 to 255 General purpose Type 1 SVC
number used by WYLBUR and
MILTEN (MVT only)
* &SVCGEN2 SETA 244 0 to 255 General purpose Type 2 SVC
number used by WYLBUR and
MILTEN (MVT only)
* &SVCJES SETA 254 0 to 255 SVC number used for the
HASP communication (MVS
only)
* &SVCKW SETA 254 0 to 255 SVC number used for
communication with the
Keyword subsystem
* &SVCACCT SETA 242 0 to 255 SVC number used to
communicate with the
installation accounting
routines.
&VAREA SETA 36 Length of work area used
by the VINIT, VSEG, etc.,
macros.
&LSCAN SETA 16 >= 16 Length to which tokens are
padded with blanks in the
scanner.
&LNDP SETC '3' 0 to 8 Number of decimal places
in a WYLBUR line number.
1 12
-
Other
Parameter Type Default Values Definition
+ _________ ____ _______ ______ __________
0 &LNIP SETC '5' 0 to 8 Number of integer
positions in a WYLBUR line
number. &LNIP+&LNDP must
be less than 9.
&LNMIN SETA 0 Minimum line number
allowed (always zero).
&LNMAX SETA 99999999 Maximum line number
allowed (computed from
&LNDP and &LNIP).
&LN1 SETA 1000 Line number 1 (computed
from &LNDP and &LNIP).
&LNMASK SETA X'7FFFFFF' Line number mask (computed
from &LNDP and &LNIP).
&LNBITS SETA 27 Number of bits in the line
number (computed from
&LNDP and &LNIP).
&LNMAXZ SETC '00000000' 1&LNMAXZ=max line number+1
(computed from &LNDP and
&LNIP).
&SIM370 SETC 'SIM370' Work area for 360
simulation instructions.
Set by SIM370, MSETUP, and
WSETUP macros.
&TIME128 SETA 128*24*3600*100 128 days in 100ths of a
second.
* &WTOMAX SETA 62 9 to 254 Maximum length of text for
a WTO.
&WTOMC SETA 1 WTO ROUTECDE -- Master
Console
&WTOMCI SETA 2 WTO ROUTECDE -- Master
Informational Console
&WTOTAPE SETA 3 WTO ROUTECDE -- Tape Pool
&WTODISK SETA 4 WTO ROUTECDE -- Disk Pool
&WTOTLIB SETA 5 WTO ROUTECDE -- Tape
Library
&WTODLIB SETA 6 WTO ROUTECDE -- Disk
Library
&WTOUREC SETA 7 WTO ROUTECDE -- Unit
Record Pool
&WTOTPC SETA 8 WTO ROUTECDE --
Teleprocessing Console
&WTOSSEC SETA 9 WTO ROUTECDE -- System
Security Console
&WTOERR SETA 10 WTO ROUTECDE -- Error
Logging Console
&WTOPROG SETA 11 WTO ROUTECDE -- Programmer
&WTOEMUL SETA 12 WTO ROUTECDE -- Emulation
Console
&WTOURC1 SETA 13 WTO ROUTECDE -- User Code 1
&WTOURC2 SETA 14 WTO ROUTECDE -- User Code 2
&WTOURC3 SETA 15 WTO ROUTECDE -- User Code 3
&WTOFAIL SETA 1 WTO DESC -- System Failure
1 13
-
Other
Parameter Type Default Values Definition
+ _________ ____ _______ ______ __________
0 &WTOIACT SETA 2 WTO DESC -- Immediate
Action
&WTOEACT SETA 3 WTO DESC -- Eventual Action
&WTOSTAT SETA 4 WTO DESC -- System Status
&WTOCMDR SETA 5 WTO DESC -- Command
Response
&WTOJOB SETA 6 WTO DESC -- Job Status
&WTOAPPL SETA 7 WTO DESC -- Application
Program
&WTOOUTL SETA 8 WTO DESC -- Out-of-line
Message
&WTODISP SETA 9 WTO DESC -- Dynamic Status
Displays
&WTOCRIT SETA 10 WTO DESC -- Critical
Eventual Action
&TEMP SETA 0 Work variable
1 14
-
COMMON Module Directory
-
Module Function
+______ ________
0ALP ALP preprocessor (PL/I)
POSTALP ALP postprocessor (PL/I)
ALPCG program to call ALP, Assembler G, and POSTALP
ALPCH program to call ALP, Assembler H, and POSTALP
ALPCX program to call ALP, Assembler FX, and POSTALP
CABB abbreviation table used by program that
processes the Reference Handbooks
CSCN scanner
CUTR utility routines
HIST produces histograms of counter values (used by
software monitors) (PL/I)
SAER scratch-allocate-rlse-eof utility
SCRM data scrambling subroutines
SVCG general purpose SVC (MVT/MFT only)
1 15
-
COMMON Register Definitions
-
Reg Name Function Disposition
+___ ____ ________ ___________
0 0 VR0 parameter passing volatile
1 VR1 parameter passing volatile
2 XRA work reg preserved
3 XRB work reg preserved
4 XRC work reg preserved
5 XRD work reg preserved
6 XRE work reg preserved
7 XRF work reg preserved
8 XRG work reg preserved
9 RTNR return address volatile
10 BASER base register preserved
11 WAR work area pointer preserved
12 GCBR reserved for a sacred
pointer to a
global control
block preserved
13 STKR stack pointer sacred
14 VRE parameter passing volatile
15 VRF parameter passing volatile
0 2 LOWR Standard low register for CENTER
11 HIGHR Standard high register for CENTER
1 16
-
COMMON Control Block Directory
-
Id Name Description
+__ ____ ___________
0KWR Keyword Record 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
is to be effective
0 An example:
0 TREAD QM=(NO,TM,OPTFL,OPTFQM,Z)
0 means that QM=NO is valid only if a TM OPTFL,OPTFQM
results in a Z (zero) condition code.
0 This is referred to as the conditional form of the
parameter.
1 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. The length of the area will be the
maximum attained.
-
<symbol> AREA alignment<,DSECT=NO>
-
symbol symbol
0 The name of the total storage area. The length
attribute will be correctly set.
- alignment X,H,F,D,0X,0H,0F,0D
0 Specifies the boundary alignment for the area.
Default is X (byte alignment).
- DSECT=NO
0 Indicates that the area is not to be a DSECT.
-
<symbol> AREAEND <alignment>
-
symbol symbol
0 A symbol which is to be EQUed to the length of the
area.
1 23
-
alignment X,H,F,D,0X,0H,0F,0D
0 Specifies the boundary alignment for the end of the
area. Default is what was specified in the AREA
macro.
-
<symbol> AREAORG <alignment>
-
symbol symbol
0 A symbol which is to be EQUed to the current length
of the area.
- alignment X,H,F,D,0X,0H,0F,0D
0 Specifies boundary alignment for the end of this
overlay of the area. Default is what was specified
in the AREA macro.
-
NOTE:
0 Area definitions may be nested. DSECT=NO is implied at
the inner levels.
-
EXAMPLE:
0 WA AREA F
WATEMP DS F
WABYTE DS X
WAHALF DS H
WASIZE AREAEND
1 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>
-
labelI symbol
0 The label to be placed on the list entry for
memberI.
- memberI symbol
0 Name of the member to be searched for.
- LENGTH=value previously defined absolute
expression
0 The length of each entry in the list. Default
is 58.
1 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.
- 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 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>
-
after-reg preg
0 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
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.
1 32
-
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.
- 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.
1 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 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 which
in the list. Contains zero for the last element in
the list.
1 34
-
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.
1 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 36
-
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.
1 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 VR0 = segment number for scatter loaded modules
0 An LTR VR1,VR1 is done
1 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>
-
reg1,reg2 registers
0 The registers to be restored, specified for a LM
instruction.
- size cexpr12
0 The size of the stack area to be released.
- WAR=NO
0 The work area register was not loaded at entry.
- LTR=reg VR0,VR1,VRE or VRF
0 An LTR reg,reg should be generated to set the
condition code.
- BRANCH=NO
0 Specifies that the branch to the return address is
not to be generated.
1 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
<ERM.
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 VRF = 0 all went ok
4 field too small
0 VR1 = starting address of resulting string
0 VR0 = length of resulting string
0 An LTR VRF,VRF is done
1 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 VR1 = address of resulting string
0 VR0 = resulting string
0 An LTR VRF,VRF is done
1 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
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.
1 71
-
length cexpr8
0 Specifies the length of the text item.
- inst operation code
0 Used to specify the operation code used to store
into the field.
- MF=L
0 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
0 Used with standard form and MF=E to specify that
SVC 99 is not to be issued.
1 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
0 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&<ERM,'TTT',LENGTH=&<ERM;
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.
- TYPE=symbol LEFT, RIGHT, or BOTH
0 Specifies elimination of leading (LEFT) or trailing
(RIGHT) blanks, 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
generated if this option is specified.
- ZERO=NO
0 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.
1 76
-
LABEL=symbol relexpri
0 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=&<ERM;
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>
-
to-field relexpri or (preg)
0 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)
0 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
0 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
0 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.
0 CALC=NO
0 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.
1 79
-
DIGITS=n cexpr4
0 Specifies the minimum number of significant digits
to be produced.
0 MARK=YES
0 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.
1 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 A register in which the contents of register
XRA may be saved. Specify REG=XRA if XRA
may be destroyed.
0 SUPMODE=YES conditional form allowed
0 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.
0 SAVELOC=area relexpri
0 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.
1 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
0 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
(KWRIFL) bits in a specified byte.
-
<symbol> IPRIVSCN byte<,TYPE=NO>
-
byte relexpri
0 Address of the flag byte.
- 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 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
-
dcb-addr relexpri
0 The address of the DCB to be checked.
-
RETURNS:
0 CC = Z DCB not open
O DCB open
-
NOTE:
0 OPENP requires the DCB DSECT.
1 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 VL=1
0 Specifies that the X'80' bit should be turned on
in the high order byte of the last list entry.
1 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
being loaded with the entry point address unless
ID=identification is specified.
1 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>
-
symbol 1-8 characters (required)
0 CSECT name for the module.
- REGS=option PLI or NO
0 PLI is used to request PL/I-compatible register
definitions, NO specifies that register
definitions should not be included.
- CBS=option NO or ALL
0 NO specifies that no control block DSECTS are to be
generated, ALL specifies that all are.
0 ctlblock=YES name of a COMMON control block
0 Specifies that the DSECT for the named control
block is to be generated.
-
R15=name symbol
0 Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 15. Default is RCR.
- R14=name symbol
0 Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 14. Default is RTNR.
1 97
-
R13=name symbol
0 Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 13. Default is SAVER.
- BASER=name symbol
0 Register to be loaded by OSENTER as a base register.
Default is BASER.
- R1=name
0 Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 1. Default is VR1.
- R0=name
0 Name to be used by OSENTER, OSEXIT and OSCALL to
refer to register 0. Default is VR0.
-
NOTE:
0 Register definitions are as follows:
0 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 LOWR and HIGHR are for use with OSENTER and OSEXIT when
specifying registers to be saved and restored.
1 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:
0 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 ( - begins a parenthesized string
0 ) - must balance with preceding "("
0 ' 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.
05. 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.
06. SCTYPE 2 is the same as SCTYPE 0, except that parentheses
are treated as individual delimiters.
07. SCTYPE 3 is used for scanning JCL.
1 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
-
NOTES:
0 1. If the string is not quoted, no action is taken.
0 2. The string is overlayed by the dequoted string.
1 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
0 A parameter for the error handling routine.
- OLDPARM=old-reg reg
0 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
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 *
0 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
0 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.
0 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.)
1 110
-
PI - same as "I" except a value of zero causes the
test to fail and the SCERROR routine to be
entered.
0 O - same as "I" except the test is for an ordinal.
0 PO - same as "PI" except the test is for a positive
ordinal.
0 LN - same as "I" except the test is for a line
number.
0 PLN - same as "PI" except the test is for a positive
line number.
0 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.
0 OQS - optionally quoted string; same as "Q" except
the user may omit the quotes.
0 PS - similar to QS, except the test is for a
string enclosed in parentheses.
0 OPS - similar to OQS, except the test is for a
string enclosed in parentheses.
0 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.
0 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.
0 SCI - Specifies that an S constant pointing at a
word containing an address is to be generated.
1 111
-
B - 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).
0 C - use command abbreviations as well as normal abbreviations.
0 limit constant which can be used in a DC
(length of 1, 2 or 4 must be
explicitly specified)
0 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)
0 Sets a value to be placed in VRE when the routine is
entered. See note 3.
-
NOTES:
0 1. SCKW ,addr standard way to end a table
of SCKWs.
0 2. SCKW ,addr,B handy way to back up and exit
if you didn't find what you
wanted.
0 3. SCKW X,XORY,CODE=AL1(1) illustrates use of CODE.
SCKW Y,XORY,CODE=AL1(2)
0 4. 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 #.
0 5. The scanner can modify the source string if QS,
OQS, PS or OPS is specified.
0 6. When P is specified without I, PI, O, PO, LN, or PLN
a limit on length may be specified.
1 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
table or RTNR=NO is used. Default is SCTSTART.
1 116
-
SCSEMI - Step over semicolon
-
SCSEMI advances the scanner over a semicolon.
-
<symbol> SCSEMI <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 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 3 - use a table suitable for scanning JCL.
0 4 - use a table suitable for scanning command procedure
statements. Parentheses, comma and equal sign are
all individual delimiters.
- current-tbl-holder reg
0 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
0 Address of the scan control table (SCT). Must be
specified if the SCT is not addressable.
1 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
generated if this option is specified.
- ZERO=NO
0 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.
1 121
-
LABEL=symbol relexpri
0 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
- MSG=text string
0 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.
1 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
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
0 Requests that the register be complemented.
- NULL=value anything valid for the value
parameter
0 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
0 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.
1 127
-
SELECT=(values) list of options in parentheses
0 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
0 Error message to be issued if the value is null.
- LTR=YES
0 Specifies that an LTR is to be performed on the
register after it is loaded.
- STRLEN=string-length cexpr8
0 Specifies the length when string notation is used.
1 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.
- integer unsigned integer or SETA symbol
0 The integer to be tested.
- relationI LT,LE,EQ,GE,GT,NLT,NLE,NEQ,NGE,
NGT or MULT
0 A relation which must be satisfied (MULT means
multiple of).
- valueI integer or SETA symbol
0 Second operand of the relation.
1 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
-
RETURNS:
0 VR0 = time in 100th of a second from beginning of
last 128 day period
0 VR1 = date in OS format
1 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:
0 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
in the VINIT macro and reinitialize the buffer.
-
<symbol> VOUT varea<,loc,len><,DEBLANK=YES><,WGET=YES>
<,OFFSET=value>
or
<symbol> VOUT varea,string<,string-len><,DEBLANK=YES>
-
varea addrla (passed in VRE)
0 The address of the varea whose buffer is to be
output.
- loc addrla (passed in VR1)
0 Location of a string to be VSEGed.
- len valuela (passed in VR0)
0 Length of the string to be VSEGed.
- string string
0 Literal string to be VSEGed.
- string-len cexpr8
0 Length of 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 144
-
OFFSET=value valuela (passed in VRF)
0 Offset from the start of the string.
1 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
-
OFFSET=value valuela (passed in VRF)
0 Offset from the start of the string.
1 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
F Normal fullword operations
LF Logical fullword operations
- JUNK=OK used only with LOAD
0 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.
-
NOTE:
0 1. Operands need not be aligned.
0 2. 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:
0 LOADB VR1,0(VR1)
0 3. When code is being generated for a 370, the 370
instruction set will be used where possible.
1 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 relexpri or (preg)
0 The address of the field to be filled.
- len
0 The length of the field to be filled.
- FILL=char cexpr8
0 The character to fill the field with. Default is
blank (C' ')
- FILADDR=addr relexpri
0 Address of the fill character to be used. Mutually
exclusive with FILL.
- 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 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 relexpri or (preg)
0 Location of field to be translated.
- table relexpri or (preg)
0 Location of translate table.
- len
0 Length of field.
- N=count unsigned integer or SETA symbol
0 Number of TR instructions to be generated.
0 ZERO=NULL
0 Specifies that no instructions are to be generated if
len is zero.
1 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>
-
opcd MCLCL, MMVCL, MNCL, MOCL, or MXCL
- reg1 even reg of even-odd register pair
0 Work register.
- loc1 addrla (passed in reg1)
0 The address of the 1st operand.
- len1 valuela (passed in reg1+1)
0 The length of the first operand.
- reg2 even reg of even-odd register pair
0 Work register.
- loc2 addrla (passed in reg2)
0 The address of the second operand.
- len2 valuela (passed in reg2+1)
0 The length of the 2nd operand. If omitted, len1 is
used and more efficient code may be generated.
1 157
-
FILL=char cexpr8
0 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
0 The address of the fill character. 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 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.
0 The number of instructions to generate if
INLINE=YES.
1 158
-
MFCL - Clear field loop
-
0<symbol> MFCL reg1,loc,len,reg2<,FILL=char><,FILADDR=byte>
<,INLINE=YES><,N=count>
-
reg1 even reg of even-odd register pair
0 Work register.
- loc addrla (passed in reg1)
0 The address of the field to be filled.
- len valuela (passed in reg1+1)
0 The length of the field to be filled.
- reg2 even reg of even-odd register pair
0 Work register.
- FILL=char cexpr8
0 The character with which to fill the field. Default
is blank (C' ').
- FILADDR=byte relexpri
0 The address of the fill character. 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 unsigned integer or SETA symbol
0 The number of instructions to generate if
INLINE=YES.
1 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.
- 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 MTR
macro.
- N=count
0 Number of instructions for INLINE=YES.
1 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 The name of a flag to be cleared. Up to 8 flags may
be specified; all must reside in the same byte.
1 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 r,1 Subtract Immediate BCTR r,0
0SI r,2 Subtract Immediate BCTR r,0
BCTR r,0
0SI r,c Subtract Immediate SL r,=A(c)
0Z r,a Zero SR r,r
ST r,a
0Z ,a Zero XC a(4),a
0ZB r,a Zero Byte SR r,r
STC r,a
0ZB ,a Zero Byte MVI a,0
0ZH r,a Zero Halfword SR r,r
STH r,a
0ZH ,a Zero Halfword XC a(2),a
0ZHB a Zero High Byte MVI a,0
0ZHBR r Zero High Byte Register LA r,0(,r)
0ZI a,c Zero Immediate NI a,255-(c)
0ZR r Zero Register SR r,r
1 173
-
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
executed.
0 3. If an instruction occurs more than once, EXORG will
assemble only one copy.
1 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
with a label of ABEND MSG.
1 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.
- alength addrl
0 Symbol corresponding to length variable in DSECT
for argument list.
0 work-reg reg
0 Work register.
1 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
a continuation of the CV DSECT (JCB and CP
only).
CP - include the definition of the control block in
the appropriate place in the CP (SCT and RTB
only).
- REGS=NO
0 Suppresses generation of the standard register
definitions.
1 184
-
SCABBRS=YES
0 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