home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibmtsonih / tsnmacdoc.txt < prev    next >
Text File  |  2020-01-01  |  171KB  |  4,300 lines

  1. 1
  2. -
  3. -
  4. -
  5. -
  6. -
  7. 0                       NIH Extended WYLBUR
  8. 0                         Internal Design
  9. 0                         Specifications
  10. -                           October 1986
  11. -
  12. -
  13. -
  14. -
  15. -                         Computer Center
  16. 0          Division of Computer Research and Technology
  17. 0                  National Institutes of Health
  18. -
  19. -
  20. -
  21. -
  22. 1                     Table of Contents
  23. -
  24.  Cataloged Procedures . . . . . . . . . . . . . . . . .     1
  25. 0Assembly Structure . . . . . . . . . . . . . . . . . .     6
  26. 0   Selecting Assembly Options  . . . . . . . . . . . .     7
  27. 0COMMON Module Directory  . . . . . . . . . . . . . . .    14
  28. 0COMMON Register Conventions  . . . . . . . . . . . . .    15
  29. 0COMMON Control Block Directory . . . . . . . . . . . .    16
  30. 0MACRO Descriptions . . . . . . . . . . . . . . . . . .    17
  31. 0  Conventions  . . . . . . . . . . . . . . . . . . . .    17
  32. 0  COMMON Macros  . . . . . . . . . . . . . . . . . . .    20
  33. 0    APRIVSCN . . . . . . . . . . . . . . . . . . . . .    20
  34.      APRIVSEG . . . . . . . . . . . . . . . . . . . . .    21
  35. 0    AREA, AREAORG and AREAEND  . . . . . . . . . . . .    22
  36. 0    BLDLLIST . . . . . . . . . . . . . . . . . . . . .    24
  37. 0    CBDELINK . . . . . . . . . . . . . . . . . . . . .    25
  38.      CBDLINKH . . . . . . . . . . . . . . . . . . . . .    27
  39.      CBDLINKT . . . . . . . . . . . . . . . . . . . . .    29
  40.      CBLINK . . . . . . . . . . . . . . . . . . . . . .    31
  41.      CBLINKH  . . . . . . . . . . . . . . . . . . . . .    33
  42.      CBLINKT  . . . . . . . . . . . . . . . . . . . . .    35
  43.      CBINIT . . . . . . . . . . . . . . . . . . . . . .    37
  44. 0    CDESRCH  . . . . . . . . . . . . . . . . . . . . .    38
  45. 0    CAMODE . . . . . . . . . . . . . . . . . . . . . .    39
  46.      CBAL . . . . . . . . . . . . . . . . . . . . . . .    40
  47.      CBALR  . . . . . . . . . . . . . . . . . . . . . .    41
  48.      CBASE  . . . . . . . . . . . . . . . . . . . . . .    42
  49.      CCALL  . . . . . . . . . . . . . . . . . . . . . .    43
  50.      CENTER . . . . . . . . . . . . . . . . . . . . . .    45
  51.      CEXIT  . . . . . . . . . . . . . . . . . . . . . .    46
  52.      CPOP . . . . . . . . . . . . . . . . . . . . . . .    47
  53.      CPOPREG  . . . . . . . . . . . . . . . . . . . . .    48
  54.      CPUSH  . . . . . . . . . . . . . . . . . . . . . .    49
  55.      CPUSHREG . . . . . . . . . . . . . . . . . . . . .    50
  56.      CSA  . . . . . . . . . . . . . . . . . . . . . . .    51
  57.      CSAVGEN  . . . . . . . . . . . . . . . . . . . . .    52
  58.      CSAVLINK . . . . . . . . . . . . . . . . . . . . .    53
  59.      CSETUP . . . . . . . . . . . . . . . . . . . . . .    54
  60. 0    CHKACCT  . . . . . . . . . . . . . . . . . . . . .    55
  61.      CHKBOX . . . . . . . . . . . . . . . . . . . . . .    56
  62.      CHKINIT  . . . . . . . . . . . . . . . . . . . . .    57
  63.      CHKKW  . . . . . . . . . . . . . . . . . . . . . .    58
  64.      CHKTERM  . . . . . . . . . . . . . . . . . . . . .    59
  65. 1                             ii
  66. -
  67.      CSPOST . . . . . . . . . . . . . . . . . . . . . .    60
  68. 0    CVBTD  . . . . . . . . . . . . . . . . . . . . . .    61
  69.      CVBTX  . . . . . . . . . . . . . . . . . . . . . .    62
  70.      CVBT$  . . . . . . . . . . . . . . . . . . . . . .    63
  71.      CVDATE . . . . . . . . . . . . . . . . . . . . . .    64
  72.      CVDTB  . . . . . . . . . . . . . . . . . . . . . .    65
  73.      CVTIME . . . . . . . . . . . . . . . . . . . . . .    66
  74.      CVTIM128 . . . . . . . . . . . . . . . . . . . . .    67
  75.      CVXTB  . . . . . . . . . . . . . . . . . . . . . .    68
  76. 0    DALLIST  . . . . . . . . . . . . . . . . . . . . .    69
  77.      DALMSG . . . . . . . . . . . . . . . . . . . . . .    72
  78. 0    DCC  . . . . . . . . . . . . . . . . . . . . . . .    74
  79.      DEBLANK  . . . . . . . . . . . . . . . . . . . . .    75
  80.      DSC  . . . . . . . . . . . . . . . . . . . . . . .    77
  81. 0    EDIT . . . . . . . . . . . . . . . . . . . . . . .    78
  82. 0    FASTPOST . . . . . . . . . . . . . . . . . . . . .    80
  83.      FASTWAIT . . . . . . . . . . . . . . . . . . . . .    81
  84. 0    FLAGSEG  . . . . . . . . . . . . . . . . . . . . .    82
  85. 0    FREESWAM . . . . . . . . . . . . . . . . . . . . .    83
  86. 0    GBLSET . . . . . . . . . . . . . . . . . . . . . .    84
  87. 0    IPRIVSCN . . . . . . . . . . . . . . . . . . . . .    85
  88.      IPRIVSEG . . . . . . . . . . . . . . . . . . . . .    86
  89. 0    MCCW . . . . . . . . . . . . . . . . . . . . . . .    87
  90. 0    OPENP  . . . . . . . . . . . . . . . . . . . . . .    88
  91. 0    ORGHIGH  . . . . . . . . . . . . . . . . . . . . .    89
  92. 0    OSCALL . . . . . . . . . . . . . . . . . . . . . .    90
  93.      OSENTER  . . . . . . . . . . . . . . . . . . . . .    92
  94.      OSEXIT . . . . . . . . . . . . . . . . . . . . . .    94
  95.      OSSETUP  . . . . . . . . . . . . . . . . . . . . .    96
  96. 0    SCABBR . . . . . . . . . . . . . . . . . . . . . .    98
  97.      SCAN . . . . . . . . . . . . . . . . . . . . . . .    99
  98.      SCBACK . . . . . . . . . . . . . . . . . . . . . .   102
  99.      SCDONE . . . . . . . . . . . . . . . . . . . . . .   103
  100.      SCDQUOTE . . . . . . . . . . . . . . . . . . . . .   104
  101.      SCERROR  . . . . . . . . . . . . . . . . . . . . .   105
  102.      SCEXTRA  . . . . . . . . . . . . . . . . . . . . .   107
  103.      SCINIT . . . . . . . . . . . . . . . . . . . . . .   108
  104.      SCKW . . . . . . . . . . . . . . . . . . . . . . .   109
  105.      SCLAST . . . . . . . . . . . . . . . . . . . . . .   112
  106.      SCPOP  . . . . . . . . . . . . . . . . . . . . . .   113
  107.      SCPUSH . . . . . . . . . . . . . . . . . . . . . .   114
  108.      SCRTN  . . . . . . . . . . . . . . . . . . . . . .   115
  109. 1                            iii
  110. -
  111.      SCSEMI . . . . . . . . . . . . . . . . . . . . . .   116
  112.      SCTELL . . . . . . . . . . . . . . . . . . . . . .   117
  113.      SCTYPE . . . . . . . . . . . . . . . . . . . . . .   118
  114. 0    SIM370 . . . . . . . . . . . . . . . . . . . . . .   119
  115. 0    STRIP  . . . . . . . . . . . . . . . . . . . . . .   120
  116. 0    SYSBIT . . . . . . . . . . . . . . . . . . . . . .   122
  117.      SYSCMP . . . . . . . . . . . . . . . . . . . . . .   123
  118.      SYSKWT . . . . . . . . . . . . . . . . . . . . . .   124
  119.      SYSLBL . . . . . . . . . . . . . . . . . . . . . .   125
  120.      SYSLR  . . . . . . . . . . . . . . . . . . . . . .   126
  121.      SYSLST . . . . . . . . . . . . . . . . . . . . . .   128
  122.      SYSLV  . . . . . . . . . . . . . . . . . . . . . .   129
  123.      SYSPRED  . . . . . . . . . . . . . . . . . . . . .   130
  124.      SYSQS  . . . . . . . . . . . . . . . . . . . . . .   131
  125.      SYSRNG . . . . . . . . . . . . . . . . . . . . . .   133
  126.      SYSTANDB . . . . . . . . . . . . . . . . . . . . .   134
  127. 0    TIME128  . . . . . . . . . . . . . . . . . . . . .   136
  128. 0    TIOTSRCH . . . . . . . . . . . . . . . . . . . . .   137
  129. 0    UAOP . . . . . . . . . . . . . . . . . . . . . . .   138
  130. 0    VAREA  . . . . . . . . . . . . . . . . . . . . . .   139
  131.      VCLEAR . . . . . . . . . . . . . . . . . . . . . .   140
  132.      VINIT  . . . . . . . . . . . . . . . . . . . . . .   141
  133.      VOUT . . . . . . . . . . . . . . . . . . . . . . .   143
  134.      VSEG . . . . . . . . . . . . . . . . . . . . . . .   145
  135.      VTELL  . . . . . . . . . . . . . . . . . . . . . .   147
  136.      VTEST  . . . . . . . . . . . . . . . . . . . . . .   148
  137. 0    Extended Fixed Binary Facility . . . . . . . . . .   149
  138. 0      LOAD, STORE, ADD, SUB and CMP  . . . . . . . . .   149
  139. 0    Extended Length Facility . . . . . . . . . . . . .   150
  140. 0      MCLC, MMVC, MNC, MOC and MXC . . . . . . . . . .   150
  141.        MFC  . . . . . . . . . . . . . . . . . . . . . .   151
  142.        MTC  . . . . . . . . . . . . . . . . . . . . . .   152
  143.        MTR  . . . . . . . . . . . . . . . . . . . . . .   153
  144.        MTRT . . . . . . . . . . . . . . . . . . . . . .   154
  145.        MZC  . . . . . . . . . . . . . . . . . . . . . .   155
  146. 0    370 Simulation Macros  . . . . . . . . . . . . . .   156
  147. 0      MCLCL, MMVCL, MNCL, MOCL and MXCL  . . . . . . .   156
  148.        MFCL . . . . . . . . . . . . . . . . . . . . . .   158
  149.        MTCL . . . . . . . . . . . . . . . . . . . . . .   159
  150.        MTRL . . . . . . . . . . . . . . . . . . . . . .   160
  151.        MTRTL  . . . . . . . . . . . . . . . . . . . . .   161
  152.        MZCL . . . . . . . . . . . . . . . . . . . . . .   162
  153. 1                             iv
  154. -
  155.      Flag Setting and Testing Macros  . . . . . . . . .   163
  156. 0      DF . . . . . . . . . . . . . . . . . . . . . . .   163
  157.        SF . . . . . . . . . . . . . . . . . . . . . . .   164
  158.        TF . . . . . . . . . . . . . . . . . . . . . . .   165
  159.        ZF . . . . . . . . . . . . . . . . . . . . . . .   166
  160. 0    Multiprocessor Instructions  . . . . . . . . . . .   167
  161. 0      MPNI . . . . . . . . . . . . . . . . . . . . . .   167
  162.        MPOI . . . . . . . . . . . . . . . . . . . . . .   168
  163.        MPXI . . . . . . . . . . . . . . . . . . . . . .   169
  164.        MPZI . . . . . . . . . . . . . . . . . . . . . .   170
  165. 0    ALP Readability Macros . . . . . . . . . . . . . .   171
  166. 0      Chart  . . . . . . . . . . . . . . . . . . . . .   171
  167.        EXI and EXORG  . . . . . . . . . . . . . . . . .   173
  168. 0    Extended Branch Mnemonics  . . . . . . . . . . . .   175
  169. 0ED Routine Macros  . . . . . . . . . . . . . . . . . .   176
  170. 0    EDABEND  . . . . . . . . . . . . . . . . . . . . .   176
  171.      EDENTER  . . . . . . . . . . . . . . . . . . . . .   177
  172.      EDEXIT . . . . . . . . . . . . . . . . . . . . . .   178
  173.      EDGAS  . . . . . . . . . . . . . . . . . . . . . .   179
  174.      EDGCLS . . . . . . . . . . . . . . . . . . . . . .   180
  175.      EDGMLS . . . . . . . . . . . . . . . . . . . . . .   181
  176.      EDSCLS . . . . . . . . . . . . . . . . . . . . . .   182
  177.      EDSETUP  . . . . . . . . . . . . . . . . . . . . .   183
  178. 1                             1
  179. -
  180.                      Cataloged Procedures
  181. -
  182.  A number of special cataloged procedures are available and
  183.  are summarized below.
  184. 0    "xxx" is "WYL"  for WYLBUR
  185.               "MIL"  for MILTEN
  186.               "MWC"  for COMMON
  187. 0The following chart summarizes the compilation procedures.
  188. -Procedure  MODULE                   Store   Pass    Asm Listing
  189.  Name       Parm      ALP  Assemble  Object  Object  on Fiche
  190. +____       ____      ___  ________  ______  ______  ________
  191. 0xxxALC       X               X        X       X
  192. 0xxxALCF      X               X        X       X         X
  193. 0xxxALCL                      X                X
  194. 0xxxALCLF     X               X                X         X
  195. 0xxxALP                X
  196. 0xxxALPC      X        X      X        X       X
  197. 0xxxALPCF     X        X      X        X       X         X
  198. 0xxxALPCL              X      X                X
  199. 0xxxAPCLF     X        X      X                X         X
  200. 0For xxxALPC and xxxALPCL, the assembly listing is normally
  201.  suppressed.  Specify "ASMLIST=" on the EXEC card to get it
  202.  on paper.
  203. 0The stepname for the compilation procedures is COMP.
  204. 0Module names must be the same as the deck name (on the TITLE
  205.  card).  WYLBUR module names start with W, MILTEN module
  206.  names with M.  COMMON modules may have any name not starting
  207.  with M or W (but preferably C).
  208. 0The JCL for a compilation is
  209. 0    //xxxmmmm JOB  (ZZXZ,...),'system: mmmm'
  210.      /*RERUN
  211.      /*CNTL  MILWYL
  212.      //PROCLIB  DD  DSN=ZZXZxxx.PROCLIB.os,
  213.      //             UNIT=FILE,VOL=SER=NIHLB1,DISP=SHR
  214.      //  EXEC  procedure,MODULE=mmmm,OS=os,VERSION=vvv,GROUP=g,ID=iii
  215.      //SYSIN  DD  *
  216.      (program)
  217. 1                             2
  218. -
  219.  where "mmmm" is the module name
  220. 0      "system" is WYLBUR, MILTEN or COMMON
  221. 0      "vvv" is the version (default is STD)
  222. 0      "os" is MVS or XA (only for operating system dependent modules)
  223. 0      "g" is used to distinguish different groups of WYLBUR object
  224.        modules.  (GROUP=P is used for the production, non-trace
  225.        object modules).
  226. 0      "iii" is an identifier used to distinguish different instances
  227.        of the same module in special situations (not normally specified)
  228. 0To use Assembler FX for MVS instead of Assembler H, specify
  229.  MVSX instead of MVS on the PROCLIB card.
  230. -Legal version names are
  231. 0    STD    standard (MILTEN)
  232.      TSO    TSO
  233.      BAT    batch
  234.      TOY    small MILTEN version
  235. 0The default is STD.
  236. 0The following symbolic parameters are used to select special macro
  237.  libraries:
  238. 0zMACID=iii       ID for alternate WYLBUR, MILTEN or COMMON macro
  239.                   library; "z" is W, M, or C, respectively.
  240. 0zOPTID=iii       ID for alternate WYLBUR, MILTEN or COMMON option
  241.                   library for version specified (xxxOPTS.vvv);
  242.                   "z" is W, M, or C, respectively.
  243. 0WOPTGID=iii      ID for alternate WYLBUR group option library.
  244. 0zOPTAID=iii      ID for alternate WYLBUR, MILTEN or COMMON option
  245.                   library for all versions (xxxOPTS.ALL); "z" is
  246.                   W, M, or C, respectively.
  247. 0zPMAC=libname    Name of private WYLBUR, MILTEN or COMMON macro
  248.                   library (e.g., EDSMACS for the Edit Format Utility);
  249.                   "z" is W, M, or C, respectively.
  250. 1                             3
  251. -
  252.  The xxxMLIB procedures are used to create macro libraries.
  253.  Use the following JCL:
  254. 0    //xxxjjjjj  JOB  (ZZXZ,...),'system: libdesc'
  255.      /*RERUN
  256.      /*CNTL  MILWYL,EXCLUSIVE
  257.      //PROCLIB  DD  DSN=ZZXZxxx.PROCLIB.os,
  258.      //             UNIT=FILE,VOL=SER=NIHLB1,DISP=SHR
  259.      //  EXEC  xxxMLIB,LIBRARY=libname,OS=os,VERSION=vvv,GROUP=g,ID=iii
  260.      //SYSIN  DD *
  261.      (IEBUPTE ADD cards and assembler source statements)
  262. 0where "xxxjjjjj" is a descriptive job name
  263. 0      "libdesc" is a descriptive name
  264. 0      "libname" is the name of the macro library
  265. 0      "vvv" is the version
  266. 0      "g" is used to distinguish different groups of WYLBUR object
  267.        modules.  (GROUP=P is used for the production, non-trace
  268.        object modules).
  269. 0      "iii" is an identifier as for the assembly procedures (not
  270.        normally used)
  271. 0      "os" is MVS or XA (only for operating system dependent
  272.        libraries)
  273. 0xxxMLIBA sends the macro definitions through ALP before
  274.  creating the library.  xxxMLIBF does the same and also puts
  275.  the IEBUPDTE listing onto fiche.
  276. 0The following macro libraries exist and are shown in order
  277.  of concatenation:
  278. 0xxx  os   libname.vvvg      contents
  279. +___  __   ____________      ________
  280. 0WYL  yes  WYLOPTS.vvv       WYLBUR assembly parameter options for a
  281.                              particular version
  282.  WYL  no   WYLOPTS.GRPg      WYLBUR assembly parameter options for a
  283.                              group of object modules
  284.  WYL  no   WYLOPTS.ALL       WYLBUR assembly parameter options
  285.                              common to all versions
  286.  WYL  no   WYLBUR            WYLBUR macros
  287.  MIL  yes  MILOPTS.vvv       MILTEN assembly parameter options
  288.                              for a particular version
  289.  MIL  no   MILOPTS.ALL       MILTEN assembly parameter options
  290.                              common to all versions
  291.  MIL  no   MILTEN            MILTEN macros
  292.  MWC  yes  MWCOPTS.vvv       COMMON assembly parameter options
  293.                              for a particular version
  294.  MWC  no   MWCOPTS.ALL       COMMON assembly parameter options
  295.                              common to all versions
  296.  MWC  no   COMMON            COMMON macros
  297. 1                             4
  298. -
  299.  MWC  no   OS                useful OS macros
  300. 0There is also a private macro library for the Edit Format Utility
  301.  package:
  302. 0WYL  no   EDSMACS.STD       macros used by the Edit Format
  303.                              Utility package
  304. 0SYS1.MACLIB and NIH.MACLIB are last in the concatenation.
  305.  MVS DLIB macro libraries are included when MVS procedures
  306.  are used.
  307. 1                             5
  308. -
  309.  Composite object decks and load modules are maintained with
  310.  the following procedures (xxx is either WYL or MIL):
  311. 0Procedure           Function
  312. +_________           ________
  313. 0xxxLPROD            create production object deck and load
  314.                      module.  Also create backup copy of
  315.                      previous object deck.
  316.  xxxLBACK            restore backup object deck to
  317.                      production
  318.  xxxLSAVE            create alternate backup copy of
  319.                      object deck
  320.  xxxLREST            restore from alternate backup
  321.  xxxLEXP             create experimental load module
  322. 0Symbolic parameters:
  323. 0Parameter           Meaning
  324. +_________           _______
  325. 0OS=os               operating system
  326.  VERSION=vvv         version (as for assembly and macro library
  327.                      procedures)
  328.  GROUP=g             which group of object and load modules
  329.                      is to be used (WYLBUR only)
  330.  ID=iii              identifier to distinguish instances of
  331.                      the same version in special situations
  332.                      (not normally used)
  333.  mmmmID=iii          Specifies the ID for an alternate object
  334.                      deck for module mmmm
  335.  OPTIONS='string'    linkage editor options (xxxLPROD and
  336.                      xxxLEXP)
  337.  NAME=deck           PROD or BACK, specifies whether
  338.                      production or backup deck is to be
  339.                      copied by xxxLSAVE
  340.  BACK=NO             specifies that xxxLPROD is not to copy the
  341.                      current production to backup.
  342. 0WYLLPROD and WYLLEXP have the following SYSIN data sets:
  343. 0DDname              Input
  344. +______              _____
  345. 0UPDATE.SYSIN        SCCUPDTE control cards indicating modules to be
  346.  (or SYSIN)          replaced
  347. 0The procedure WYLLTSO is used to copy the production TSO
  348.  version into the command library.
  349. 0If a program is to be linked-edited into SYS1.VSYSTEMS (a linklist
  350.  data set) after compilation, the xxxLUTIL procedures will do that.
  351.  Simply place the following JCL statement after the program:
  352. 0    //  EXEC  xxxLUTIL,PROGRAM=xxxname
  353. 0where "xxxname" is the member name for the program.
  354. 1                             6
  355. -
  356.                       Assembly Structure
  357. -
  358.  The basic format for a WYLBUR, MILTEN or COMMON source
  359.  deck is
  360. 0    mmmm: TITLE 'description of module';
  361.      (macro definitions, if any)
  362.      SUBTITLE 'zSETUP',
  363.      COPY CPARMGBL;
  364.      COPY MPARMGBL; (MILTEN & WYLBUR only)
  365.      COPY WPARMGBL; (WYLBUR only)
  366.      mmmm:  zSETUP   ...;
  367.      (additional register definitions)
  368.      SUBTITLE 'description of code section';
  369.      (source program)
  370.      END;
  371. 0where "mmmm" is the module name (must be the same as on the
  372.  EXEC card);  "z" is W for WYLBUR; M for MILTEN; C for
  373.  COMMON.
  374. 1                             7
  375. -
  376.  Selecting Assembly Options
  377. -Assembly options for MILTEN, WYLBUR and common modules are selected by
  378.  storing members into various "option libraries" which are small macro
  379.  libraries that exist solely to hold copy modules that select assembly
  380.  options.
  381. 0Copy Module    Option Library        Purpose
  382. +___________    ______________        _______
  383. 0CPARMALL       MWCOPTS.ALL           Contains SETx statements for
  384.                                       common assembly parameters that
  385.                                       are the same for all versions.
  386. 0CPARMVER       MWCOPTS.version       Contains SETx statements for
  387.                 (varies according     common assembly parameters that
  388.                 to VERSION and OS     are different for different
  389.                 symbolic parameters)  versions.
  390. 0MPARMALL       MILOPTS.ALL           Contains SETx statements for
  391.                                       MILTEN assembly parameters that
  392.                                       are the same for all versions.
  393. 0MPARMVER       MILOPTS.version       Contains SETx statements for
  394.                 (varies according     MILTEN assembly parameters that
  395.                 to VERSION and OS     are different for different
  396.                 symbolic parameters)  versions.
  397. 0WPARMALL       WYLOPTS.ALL           Contains SETx statements for
  398.                                       WYLBUR assembly parameters that
  399.                                       are the same for all versions
  400.                                       and groups.
  401. 0WPARMGRP       WYLOPTS.GRPgroup      Contains SETx statements for WYLBUR
  402.                 (varies according     assembly parameters that are
  403.                 to GROUP symbolic     different for different groups.
  404.                 parameter)
  405. 0WPARMVER       WYLOPTS.version       Contains SETx statements for
  406.                 (varies according     WYLBUR assembly parameters that
  407.                 to VERSION and OS     are different for different
  408.                 symbolic parameters)  versions.
  409. 0WDEVALL        WYLOPTS.ALL           Contains DEVICE macro calls to
  410.                                       define DASD devices that are
  411.                                       supported by all WYLBUR versions
  412.                                       and groups.
  413. 1                             8
  414. -
  415.  Copy Module    Option Library        Purpose
  416. +___________    ______________        _______
  417. 0WDEVGRP        WYLOPTS.GRPgroup      Contains DEVICE macro calls to
  418.                 (varies according     define additional DASD devices
  419.                 to GROUP symbolic     that are supported only by some
  420.                 parameter)            WYLBUR groups.
  421. 0WDEVVER        WYLOPTS.version       Contains DEVICE macro calls to
  422.                 (varies according     define additional DASD devices
  423.                 to VERSION and OS     that are supported only by some
  424.                 symbolic parameters)  WYLBUR versions.
  425. 0WCLASALL       WYLOPTS.ALL           Contains VOLCLASS macro calls to
  426.                                       define volume classes that are
  427.                                       available in all WYLBUR versions
  428.                                       and groups.
  429. 0WCLASGRP       WYLOPTS.GRPgroup      Contains VOLCLASS macro calls
  430.                 (varies according     to define additional volume
  431.                 to GROUP symbolic     classes that are available only
  432.                 parameter)            in some WYLBUR groups.
  433. 0WCLASVER       WYLOPTS.version       Contains VOLCLASS macro calls to
  434.                 (varies according     define additional volume classes
  435.                 to VERSION and OS     that are available only in some
  436.                 symbolic parameters)  WYLBUR versions.
  437. 0WVOLALL        WYLOPTS.ALL           Contains VOLUME macro calls to
  438.                                       define volumes that are available
  439.                                       from all WYLBUR versions and
  440.                                       groups.
  441. 0WVOLGRP        WYLOPTS.GRPgroup      Contains VOLUME macro calls to
  442.                 (varies according     define volumes that are available
  443.                 to GROUP symbolic     only in certain WYLBUR groups.
  444.                 parameter)
  445. 0WVOLVER        WYLOPTS.version       Contains VOLUME macro calls to
  446.                 (varies according     define volumes that are available
  447.                 to VERSION and OS     only in certain versions of
  448.                 symbolic parameters)  WYLBUR.
  449. 0WUNITALL       WYLOPTS.ALL           Contains UNIT macro calls to
  450.                                       define unit names for all WYLBUR
  451.                                       versions and groups.
  452. 1                             9
  453. -
  454.  Copy Module    Option Library        Purpose
  455. +___________    ______________        _______
  456. -WUNITGRP       WYLOPTS.GRPgroup      Contains UNIT macro calls to
  457.                 (varies according     define unit names that are
  458.                 to GROUP symbolic     available only in certain
  459.                 parameter)            WYLBUR groups.
  460. 0WUNITVER       WYLOPTS.version       Contains UNIT macro calls to
  461.                 (varies according     define unit names that are
  462.                 to VERSION and OS     available only in certain
  463.                 symbolic parameters)  versions of WYLBUR.
  464. 1                            10
  465. -
  466.   Common Assembly Parameters -- used by both MILTEN and WYLBUR
  467. 0* denotes parameters that are normally changed by an installation
  468. -                               Other
  469.    Parameter   Type  Default    Values        Definition
  470. +  _________   ____  _______    ______        __________
  471. 0  &CPU        SETC  '370BS'    '360', '370'  Type of CPU; if 360 is
  472.                                               specified, the 370
  473.                                               instruction set is not
  474.                                               used; if 370BS is specified,
  475.                                               370 Branch and Save
  476.                                               instructions are used
  477.                                               (required for XA
  478.                                               operating system)
  479.    &MP         SETC  'YES'      'NO'          Multiprocessor option
  480.  * &OS         SETC  'MVS'      'MVT','MFT'   Operating System
  481.  * &JES        SETC  'NIHJES2A' 'NIHHASP3'    Name of Job Entry
  482.                                               Subsystem interface used
  483.  * &LJOBNUM    SETA  4          1 to 8        Maximum length of job
  484.                                               number for batch jobs
  485.  * &MJOBNUM    SETA  9999       1 to 99999999 Maximum job number
  486.    &MSGCLAS    SETC  'A'        A-Z, 0-9      Default MSGCLASS for internal
  487.                                               reader
  488.    &MREMOTE    SETA  999        1 to 99999999 Maximum RJE remote number
  489.    &LJESCMD    SETA  132        1 to 255      Maximum length of a JES
  490.                                               command
  491.    &LJESMSG    SETA  106        1 to 255      Max length of notify message
  492.                                               for JES
  493.    &JESCHAR    SETC  '$'        any character Job Entry Subsystem
  494.                                               command character
  495.    &DBC        SETC  'NO'       'YES'         Is DBC (Debugging
  496.                                               Controller) in use?
  497.    &DBCSP      SETA  2          1 to 127      Storage subpool to be
  498.                                               used by DBC.
  499.  * &SITE       SETC  'NIH'                    Site of installation.  If
  500.                                               this is NIH, code is
  501.                                               generated to support
  502.                                               special NIH functions.
  503.  * &SITENAM(1) SETC  'NIH/DCRT'               Full installation name, is
  504.  * &SITENAM(2) SETC  '/CCB'                   displayed to user at logon
  505.  * &SITENAM(3) SETC  '  WYLBUR'               (maximum of 8 elements).
  506.  * &FORHELP(1) SETC  'SEE THE'                Text added to message to
  507.  * &FORHELP(2) SETC  'PAL UNIT'               direct user to source for
  508.                                               help.  Used by FORHELP
  509.                                               macro (maximum of 8
  510.                                               elements).
  511.  * &LINIT      SETA  3          0 to 8        Length of user initials
  512.                                               (0 means not used)
  513.  * &LACCT      SETC  4          0 to 8        Length of user account
  514.                                               number (0 means not used)
  515.  * &LKW        SETA  3          0 to 8        Length of user keyword
  516.                                               (0 means not used)
  517. 1                            11
  518. -
  519.                                 Other
  520.    Parameter   Type  Default    Values        Definition
  521. +  _________   ____  _______    ______        __________
  522. 0* <ERM      SETA  4          0 to 8        Length of terminal
  523.                                               identifier (0 means not
  524.                                               used)
  525.  * &LBOX       SETA  4          0 to 8        Length of box
  526.                                               identification
  527.                                               (0 means not used)
  528.  * &INITNAM    SETC  'INITIALS'               Name displayed to users
  529.                                               when prompting for
  530.                                               initials
  531.  * &ACCTNAM    SETC  'ACCOUNT'                Name displayed to users
  532.                                               when prompting for
  533.                                               account
  534.  * &KWNAME     SETC  'KEYWORD'                Name displayed to users
  535.                                               when prompting for keyword
  536.  * &TERMNAM    SETC  'TERMINAL'               Name displayed to users
  537.                                               when prompting for
  538.                                               terminal
  539.  * &BOXNAME    SETC  'BOX'                    Name displayed to users
  540.                                               when prompting for box
  541.                                               number
  542.  * &RACF       SETC  'NO'       'YES'         RACF support
  543.  * &RACFID     SETC  'USERID'   1 - 8         Name of RACF user id
  544.                                 characters
  545.    &RACFSP     SETA  3          0 to 127      Storage subpool to be
  546.                                               used by RACF
  547.  * &SVCGEN1    SETA  251        0 to 255      General purpose Type 1 SVC
  548.                                               number used by WYLBUR and
  549.                                               MILTEN (MVT only)
  550.  * &SVCGEN2    SETA  244        0 to 255      General purpose Type 2 SVC
  551.                                               number used by WYLBUR and
  552.                                               MILTEN (MVT only)
  553.  * &SVCJES     SETA  254        0 to 255      SVC number used for the
  554.                                               HASP communication (MVS
  555.                                               only)
  556.  * &SVCKW      SETA  254        0 to 255      SVC number used for
  557.                                               communication with the
  558.                                               Keyword subsystem
  559.  * &SVCACCT    SETA  242        0 to 255      SVC number used to
  560.                                               communicate with the
  561.                                               installation accounting
  562.                                               routines.
  563.    &VAREA      SETA  36                       Length of work area used
  564.                                               by the VINIT, VSEG, etc.,
  565.                                               macros.
  566.    &LSCAN      SETA  16         >= 16         Length to which tokens are
  567.                                               padded with blanks in the
  568.                                               scanner.
  569.    &LNDP       SETC  '3'        0 to 8        Number of decimal places
  570.                                               in a WYLBUR line number.
  571. 1                            12
  572. -
  573.                                 Other
  574.    Parameter   Type  Default    Values        Definition
  575. +  _________   ____  _______    ______        __________
  576. 0  &LNIP       SETC  '5'        0 to 8        Number of integer
  577.                                               positions in a WYLBUR line
  578.                                               number.  &LNIP+&LNDP must
  579.                                               be less than 9.
  580.    &LNMIN      SETA  0                        Minimum line number
  581.                                               allowed (always zero).
  582.    &LNMAX      SETA  99999999                 Maximum line number
  583.                                               allowed (computed from
  584.                                               &LNDP and &LNIP).
  585.    &LN1        SETA  1000                     Line number 1 (computed
  586.                                               from &LNDP and &LNIP).
  587.    &LNMASK     SETA  X'7FFFFFF'               Line number mask (computed
  588.                                               from &LNDP and &LNIP).
  589.    &LNBITS     SETA  27                       Number of bits in the line
  590.                                               number (computed from
  591.                                               &LNDP and &LNIP).
  592.    &LNMAXZ     SETC  '00000000'               1&LNMAXZ=max line number+1
  593.                                               (computed from &LNDP and
  594.                                               &LNIP).
  595.    &SIM370     SETC  'SIM370'                 Work area for 360
  596.                                               simulation instructions.
  597.                                               Set by SIM370, MSETUP, and
  598.                                               WSETUP macros.
  599.    &TIME128    SETA  128*24*3600*100          128 days in 100ths of a
  600.                                               second.
  601.  * &WTOMAX     SETA  62         9 to 254      Maximum length of text for
  602.                                               a WTO.
  603.    &WTOMC      SETA  1                        WTO ROUTECDE -- Master
  604.                                               Console
  605.    &WTOMCI     SETA  2                        WTO ROUTECDE -- Master
  606.                                               Informational Console
  607.    &WTOTAPE    SETA  3                        WTO ROUTECDE -- Tape Pool
  608.    &WTODISK    SETA  4                        WTO ROUTECDE -- Disk Pool
  609.    &WTOTLIB    SETA  5                        WTO ROUTECDE -- Tape
  610.                                               Library
  611.    &WTODLIB    SETA  6                        WTO ROUTECDE -- Disk
  612.                                               Library
  613.    &WTOUREC    SETA  7                        WTO ROUTECDE -- Unit
  614.                                               Record Pool
  615.    &WTOTPC     SETA  8                        WTO ROUTECDE --
  616.                                               Teleprocessing Console
  617.    &WTOSSEC    SETA  9                        WTO ROUTECDE -- System
  618.                                               Security Console
  619.    &WTOERR     SETA  10                       WTO ROUTECDE -- Error
  620.                                               Logging Console
  621.    &WTOPROG    SETA  11                       WTO ROUTECDE -- Programmer
  622.    &WTOEMUL    SETA  12                       WTO ROUTECDE -- Emulation
  623.                                               Console
  624.    &WTOURC1    SETA  13                       WTO ROUTECDE -- User Code 1
  625.    &WTOURC2    SETA  14                       WTO ROUTECDE -- User Code 2
  626.    &WTOURC3    SETA  15                       WTO ROUTECDE -- User Code 3
  627.    &WTOFAIL    SETA  1                        WTO DESC -- System Failure
  628. 1                            13
  629. -
  630.                                 Other
  631.    Parameter   Type  Default    Values        Definition
  632. +  _________   ____  _______    ______        __________
  633. 0  &WTOIACT    SETA  2                        WTO DESC -- Immediate
  634.                                               Action
  635.    &WTOEACT    SETA  3                        WTO DESC -- Eventual Action
  636.    &WTOSTAT    SETA  4                        WTO DESC -- System Status
  637.    &WTOCMDR    SETA  5                        WTO DESC -- Command
  638.                                               Response
  639.    &WTOJOB     SETA  6                        WTO DESC -- Job Status
  640.    &WTOAPPL    SETA  7                        WTO DESC -- Application
  641.                                               Program
  642.    &WTOOUTL    SETA  8                        WTO DESC -- Out-of-line
  643.                                               Message
  644.    &WTODISP    SETA  9                        WTO DESC -- Dynamic Status
  645.                                               Displays
  646.    &WTOCRIT    SETA  10                       WTO DESC -- Critical
  647.                                               Eventual Action
  648.    &TEMP       SETA  0                        Work variable
  649. 1                            14
  650. -
  651.                    COMMON Module Directory
  652. -
  653.  Module                  Function
  654. +______                  ________
  655. 0ALP                     ALP preprocessor (PL/I)
  656.  POSTALP                 ALP postprocessor (PL/I)
  657.  ALPCG                   program to call ALP, Assembler G, and POSTALP
  658.  ALPCH                   program to call ALP, Assembler H, and POSTALP
  659.  ALPCX                   program to call ALP, Assembler FX, and POSTALP
  660.  CABB                    abbreviation table used by program that
  661.                          processes the Reference Handbooks
  662.  CSCN                    scanner
  663.  CUTR                    utility routines
  664.  HIST                    produces histograms of counter values (used by
  665.                          software monitors) (PL/I)
  666.  SAER                    scratch-allocate-rlse-eof utility
  667.  SCRM                    data scrambling subroutines
  668.  SVCG                    general purpose SVC (MVT/MFT only)
  669. 1                            15
  670. -
  671.                  COMMON Register Definitions
  672. -
  673.  Reg     Name        Function             Disposition
  674. +___     ____        ________             ___________
  675. 0 0      VR0         parameter passing    volatile
  676.   1      VR1         parameter passing    volatile
  677.   2      XRA         work reg             preserved
  678.   3      XRB         work reg             preserved
  679.   4      XRC         work reg             preserved
  680.   5      XRD         work reg             preserved
  681.   6      XRE         work reg             preserved
  682.   7      XRF         work reg             preserved
  683.   8      XRG         work reg             preserved
  684.   9      RTNR        return address       volatile
  685.  10      BASER       base register        preserved
  686.  11      WAR         work area pointer    preserved
  687.  12      GCBR        reserved for a       sacred
  688.                      pointer to a
  689.                      global control
  690.                      block                preserved
  691.  13      STKR        stack pointer        sacred
  692.  14      VRE         parameter passing    volatile
  693.  15      VRF         parameter passing    volatile
  694. 0 2      LOWR        Standard low register for CENTER
  695.  11      HIGHR       Standard high register for CENTER
  696. 1                            16
  697. -
  698.                 COMMON Control Block Directory
  699. -
  700.  Id         Name                     Description
  701. +__         ____                     ___________
  702. 0KWR        Keyword Record           Parameter list for
  703.                                      keyword SVC
  704. 0MDC        Machine Dependent        EQUs for low-core
  705.             Cells                    cells, etc.
  706. 0NAT        Nucleus Address Table    Table of useful addresses
  707.                                      in the MVT nucleus
  708. 0SCT        Scanner Control Table    Control info for scanner
  709. -OS control blocks available via CSETUP:  CDE, CVT, DCB, DEB,
  710.  DECB, IQE, LLE, PQE, RB, TCB, UCB.
  711. 0MVS control blocks available via CSETUP:  ACB, ASCB, ASXB,
  712.  JESCT, LRC, PCCA, PSA, RPL, SDWA, SMCA, SSOB, S99 (SVC 99
  713.  definitions), TQE
  714. 0Other OS control blocks available:  IECSDSL1 (DSCB),
  715.  IEFJFCBN (JFCB).
  716. 1                            17
  717. -
  718.                       MACRO Descriptions
  719. -
  720. 0                        Conventions
  721. -
  722. 0Macro operands are frequently described in the following
  723.  terms:
  724. 0   addrla     - denotes an expression which will be used in
  725.                  a load address instruction
  726. 0   addrl      - denotes an address which will be used in a
  727.                  load instruction
  728. 0   addrlh     - denotes an address which will be used in a
  729.                  load halfword instruction.
  730. 0   valuela    - denotes a value that will be used in a load
  731.                  address instruction.
  732. 0   cexpr8     - denote expressions which evaluate to a
  733.     cexpr12      constant to be held in the indicated
  734.     cexpr16      number of bits
  735.     cexpr24
  736.     cexpr32
  737. 0   relexpra   - denotes a relocatable expression that is
  738.                  valid in an A-Type address constant
  739. 0   relexpri   - denotes a relocatable expression that is
  740.                  valid as a storage address in an instruction
  741. 0   string     - denotes a quoted string
  742. 0   symbol     - any symbol that may be used in the label
  743.                  field of an instruction.
  744. 0   vsymbol    - symbol that may be used in a V-Type address
  745.                  constant
  746. 0   reg        - any register
  747. 0   preg       - any register except VR0
  748. 0Valuela, addrla, addrl, and addrlh indicate the default
  749.  method the macro will use for loading the parameter
  750.  registers (LA, LA, L and LH respectively).  If the default
  751.  is not satisfactory, the user can specify alternate methods
  752.  for having the parameter registers loaded.  An example:
  753. 0   CVBTD  P1-addrla,P2-valuela,P3-addrl
  754. 1                            18
  755. -
  756.  This macro takes a binary number (specified in the third
  757.  operand), converts it to EBCDIC and stores the result in the
  758.  location pointed to by the first operand.  The second
  759.  operand specifies a length for the destination field, zero
  760.  implying no fixed length.
  761. 0Normal expansion for the macro is as follows:
  762. 0   LA    VR0,P2                length
  763.     LA    VR1,P1
  764.     L     VRF,P3
  765.     WCALL CVBTD
  766. 0Alternate ways of expressing the operands of the form addrx
  767.  and valuela are:
  768. 0   (register) (contains the actual value to be used)
  769.     LH:operand
  770.     L:operand
  771.     LA:operand
  772.     LOADx:operand (x stands for H, LH, B, P, F, LF)
  773. 0For example, if XRJOB contained a job number and fullword
  774.  JSPTR contained a pointer to an area to hold the EBCDIC job
  775.  number, the macro could be coded
  776. 0   CVBTD  L:JSPTR,3,(XRJOB)
  777. 0which would generate
  778. 0   LA     VR0,3
  779.     L      VR1,JSPTR
  780.     LR     VRF,XRJOB
  781.     WCALL  CVBTD
  782. 0Several points bear special mention.
  783. 01.  If you want to point to a literal, the notation L:=F'1'
  784.      will not work since the assembler interprets the equal
  785.      sign as an indication of a keyword parameter.  Instead
  786.      code L::F'1' and the macro will do the right thing.
  787. 02.  When coding register notation for the parameter passing
  788.      registers, e.g. CVBTD SLOT,,(VRF), be sure to code the
  789.      registers VR0, VR1, VRE, VRF verbatim so that the macro
  790.      can avoid generation of instructions like
  791. 0      LR  VR0,0
  792. 03.  A value or address of zero always causes generation of
  793.      an SR instruction to clear the parameter register,
  794.      regardless of what type of loading was requested.
  795. 04.  When a macro returns a parameter in VRF, the condition
  796.      code will also be set using an LTR VRF,VRF.
  797. 1                            19
  798. -
  799.  5.  Some macros that provide parameters of the form
  800.      KEYWORD=OPTION also allow a conditional test to be made.
  801.      The general form is KEYWORD=(OPTION,OP,OPND1,OPND2,CC)
  802.      where
  803. 0      "OP"    is an instruction opcode which sets a condition code
  804.                (e.g.,  TM, LTR, CLI)
  805.        "OPND1" is the first operand for the instruction
  806.        "OPND2" is the second operand for the instruction
  807.        "CC"    is the condition code for which KEYWORD=OPTION
  808.                is to be effective
  809. 0    An example:
  810. 0        TREAD  QM=(NO,TM,OPTFL,OPTFQM,Z)
  811. 0    means that QM=NO is valid only if a TM OPTFL,OPTFQM
  812.      results in a Z (zero) condition code.
  813. 0    This is referred to as the conditional form of the
  814.      parameter.
  815. 1                            20
  816. -
  817.                COMMON, MILTEN and WYLBUR Macros
  818. -
  819.              APRIVSCN - Scan for account privilege
  820. -
  821. 0APRIVSCN scans for account privileges and sets corresponding
  822.  bits in a specified byte.
  823. -
  824.  <symbol> APRIVSCN byte<,TYPE=NO>
  825. -
  826.      byte                 relexpri
  827. 0        Address of the byte in which the bits are to be set.
  828.          Bits are defined for KWRAFL.
  829. -    TYPE=NO
  830. 0        Causes "NO" to be appended in front of each word to
  831.          be scanned for.  Also causes bits to be turned off
  832.          instead of on in the byte.
  833. 1                            21
  834. -
  835.              APRIVSEG - TSEG or VSEG account privileges
  836. -
  837. 0APRIVSEG is used to TSEG or VSEG proper words for each
  838.  account privilege (KWRAFL) bit set in a specified byte.
  839. -
  840.  <symbol> APRIVSEG byte<,AFTER=string><,BEFORE=string>
  841.                    <,VAREA=varea>
  842. -
  843.      byte                 relexpri
  844. 0        Address of the flag byte.
  845. -    AFTER=string         string
  846. 0        A string of characters to be appended after each
  847.          word.  May also be specified as location and length.
  848. -    BEFORE=string        string
  849. 0        A string of characters to be appended before each
  850.          word.  May also be specified as location and length.
  851. -    VAREA=varea          addrla
  852. 0        Address of the VAREA if VSEG is to be used.
  853. 1                            22
  854. -
  855.  AREA, AREAORG and AREAEND - Define a structured storage area
  856. -
  857. 0AREA and AREAEND are used to define an area of storage which
  858.  is structured into smaller named components.  AREA begins
  859.  the definition, DSs and DCs follow, and AREAEND terminates
  860.  the definition.
  861. 0AREAORG is used to ORG back to the start of the area so that
  862.  fields may be overlaid.  The length of the area will be the
  863.  maximum attained.
  864. -
  865.  <symbol> AREA alignment<,DSECT=NO>
  866. -
  867.      symbol               symbol
  868. 0        The name of the total storage area.  The length
  869.          attribute will be correctly set.
  870. -    alignment            X,H,F,D,0X,0H,0F,0D
  871. 0        Specifies the boundary alignment for the area.
  872.          Default is X (byte alignment).
  873. -    DSECT=NO
  874. 0        Indicates that the area is not to be a DSECT.
  875. -
  876.  <symbol> AREAEND <alignment>
  877. -
  878.      symbol               symbol
  879. 0        A symbol which is to be EQUed to the length of the
  880.          area.
  881. 1                            23
  882. -
  883.      alignment            X,H,F,D,0X,0H,0F,0D
  884. 0        Specifies the boundary alignment for the end of the
  885.          area.  Default is what was specified in the AREA
  886.          macro.
  887. -
  888.  <symbol> AREAORG <alignment>
  889. -
  890.      symbol               symbol
  891. 0        A symbol which is to be EQUed to the current length
  892.          of the area.
  893. -    alignment            X,H,F,D,0X,0H,0F,0D
  894. 0        Specifies boundary alignment for the end of this
  895.          overlay of the area.  Default is what was specified
  896.          in the AREA macro.
  897. -
  898.  NOTE:
  899. 0    Area definitions may be nested.  DSECT=NO is implied at
  900.      the inner levels.
  901. -
  902.  EXAMPLE:
  903. 0    WA      AREA     F
  904.      WATEMP  DS       F
  905.      WABYTE  DS       X
  906.      WAHALF  DS       H
  907.      WASIZE  AREAEND
  908. 1                            24
  909. -
  910.            BLDLLIST - Construct BLDL list
  911. -
  912. 0BLDLLIST assembles a list in the proper format for the
  913.  BLDL SVC.
  914. -
  915.  <symbol> BLDLLIST label1,member1,...,labelN,memberN
  916.                    <,LENGTH=value>
  917. -
  918.      labelI               symbol
  919. 0        The label to be placed on the list entry for
  920.          memberI.
  921. -    memberI              symbol
  922. 0        Name of the member to be searched for.
  923. -    LENGTH=value         previously defined absolute
  924.                           expression
  925. 0        The length of each entry in the list.  Default
  926.          is 58.
  927. 1                            25
  928. -
  929.        CBDELINK - Remove control block from linked list
  930. -
  931. 0CBDELINK is used to remove a control block from a linked
  932.  list of similar control blocks.
  933. -
  934.  <symbol> CBDELINK prev-reg,del-reg,work-reg,HEAD=loc,
  935.                    <TAIL=loc>,NEXT=dsect-loc
  936.                    <,BACK=dsect-loc>
  937.                    <,CB=dsect-name><,ZOT=YES>
  938. -
  939.      prev-reg             preg
  940. 0        Register must contain a pointer to the control block
  941.          which immediately preceeds the one to be removed.
  942.          Should contain zero if removing from the beginning
  943.          of the list.
  944. -    del-reg              preg
  945. 0        Register must contain a pointer to the control block
  946.          to be removed from the list.
  947. -    work-reg             preg
  948. 0        A work register.
  949. -    HEAD=loc             relexpri
  950. 0        Location of a word which contains a pointer to the
  951.          first element in the list.  Contains zero when the
  952.          list is empty.
  953. -    TAIL=loc             relexpri
  954. 0        Location of a word which contains a pointer to the
  955.          last element in the list.  Contains zero when the
  956.          list is empty.
  957. 1                            26
  958. -
  959.      NEXT=dsect-loc       symbol
  960. 0        Name of the word defined in a DSECT for the control
  961.          block which points to the next control block in the
  962.          list.  Contains zero for the last element in the
  963.          list.
  964. -    BACK=dsect-loc       symbol
  965. 0        If present, indicates a doubly-linked list (forward
  966.          and backward pointers).  Name of the word defined in
  967.          a DSECT for the control block which points to the
  968.          preceeding control block in the list.  Contains zero
  969.          for the first element in the list.
  970. -    CB=dsect-id          symbol
  971. 0        The name of the DSECT for the control block.  Omit
  972.          if the control block is defined with EQUs instead of
  973.          a DSECT.
  974. -    ZOT=YES
  975. 0        Indicates that the NEXT and BACK fields in the
  976.          control block being removed should be set to zero.
  977. 1                            27
  978. -
  979.    CBDLINKH - Remove control block from head of linked list
  980. -
  981. 0CBDLINKH is used to remove the first control block from a
  982.  linked list of similar control blocks.
  983. -
  984.  <symbol> CBDLINKH del-reg,work-reg,HEAD=loc,
  985.                    <,TAIL=loc>,NEXT=dsect-loc
  986.                    <,BACK=dsect-loc><,CB=dsect-name>
  987.                    <,ZOT=YES>
  988. -
  989.      del-reg              preg
  990. 0        Register must contain a pointer to the control block
  991.          to be removed from the list.
  992. -    work-reg             preg
  993. 0        A work register.
  994. -    HEAD=loc             relexpri
  995. 0        Location of a word which contains a pointer to the
  996.          first element in the list.  Contains zero when the
  997.          list is empty.
  998. -    TAIL=loc             relexpri
  999. 0        Location of a word which contains a pointer to the
  1000.          last element in the list.  Contains zero when the
  1001.          list is empty.
  1002. -    NEXT=dsect-loc       symbol
  1003. 0        Name of the word defined in a DSECT for the control
  1004.          block which points to the next control block in the
  1005.          list.  Contains zero for the last element in the
  1006.          list.
  1007. 1                            28
  1008. -
  1009.      BACK=dsect-loc       symbol
  1010. 0        If present, indicates a doubly-linked list (forward
  1011.          and backward pointers).  Name of the word defined in
  1012.          a DSECT for the control block which points to the
  1013.          preceeding control block in the list.  Contains zero
  1014.          for the first element in the list.
  1015. -    CB=dsect-id          symbol
  1016. 0        The name of the DSECT for the control block.  Omit
  1017.          if the control block is defined with EQUs instead of
  1018.          a DSECT.
  1019. -    ZOT=YES
  1020. 0        Indicates that the NEXT and BACK fields in the
  1021.          control block being removed should be set to zero.
  1022. 1                            29
  1023. -
  1024.    CBDLINKT - Remove control block from tail of linked list
  1025. -
  1026. 0CBDLINKT is used to remove the last control block in a
  1027.  linked list of similar control blocks.
  1028. -
  1029.  <symbol> CBDLINKT prev-reg,<del-reg>,work-reg,HEAD=loc
  1030.                    <,TAIL=loc>,NEXT=dsect-loc
  1031.                    <,BACK=dsect-loc><,CB=dsect-name>
  1032.                    <,ZOT=YES>
  1033. -
  1034.      prev-reg             preg
  1035. 0        Register must contain a pointer to the control block
  1036.          which immediately preceeds the one to be removed.
  1037.          Should contain zero if removing from the beginning
  1038.          of the list.
  1039. -    del-reg              preg
  1040. 0        Register must contain a pointer to the control block
  1041.          to be removed from the list.
  1042.          Required only if ZOT=YES is specified.
  1043. -    HEAD=loc             relexpri
  1044. 0        Location of a word which contains a pointer to the
  1045.          first element in the list.  Contains zero when the
  1046.          list is empty.
  1047. -    TAIL=loc             relexpri
  1048. 0        Location of a word which contains a pointer to the
  1049.          last element in the list.  Contains zero when the
  1050.          list is empty.
  1051. -    NEXT=dsect-loc       symbol
  1052. 0        Name of the word defined in a DSECT for the control
  1053.          block which points to the next control block in the
  1054.          list.  Contains zero for the last element in the
  1055.          list.
  1056. 1                            30
  1057. -
  1058.      BACK=dsect-loc       symbol
  1059. 0        If present, indicates a doubly-linked list (forward
  1060.          and backward pointers).  Name of the word defined in
  1061.          a DSECT for the control block which points to the
  1062.          preceeding control block in the list.  Contains zero
  1063.          for the first element in the list.
  1064. -    CB=dsect-id          symbol
  1065. 0        The name of the DSECT for the control block.  Omit
  1066.          if the control block is defined with EQUs instead of
  1067.          a DSECT.
  1068. -    ZOT=YES
  1069. 0        Indicates that the NEXT and BACK fields in the
  1070.          control block being removed should be set to zero.
  1071. 1                            31
  1072. -
  1073.           CBLINK - Add control block to linked list
  1074. -
  1075. 0CBLINK is used to add a control block anywhere in a linked
  1076.  list of similar control blocks.
  1077. -
  1078.  <symbol> CBLINK after-reg,new-reg,work-reg,HEAD=loc,
  1079.                  <TAIL=loc>,NEXT=dsect-loc,
  1080.                  <,BACK=dsect-loc><,CB=dsect-id>
  1081. -
  1082.      after-reg            preg
  1083. 0        Register containing a pointer to the control block
  1084.          after which the new control block is to be added.
  1085.          Should contain zero if the new control block is to
  1086.          be first in the list.
  1087. -    new-reg              preg
  1088. 0        Register must contain a pointer to the control block
  1089.          to be added.
  1090. -    work-reg             preg
  1091. 0        A work register.
  1092. -    HEAD=loc             relexpri
  1093. 0        Location of a word which contains a pointer to the
  1094.          first element in the list.  Contains zero when the
  1095.          list is empty.
  1096. -    TAIL=loc             relexpri
  1097. 0        Location of a word which contains a pointer to the
  1098.          last element in the list.  Contains zero when the
  1099.          list is empty.
  1100. 1                            32
  1101. -
  1102.      NEXT=dsect-loc       symbol
  1103. 0        Name of the word defined in a DSECT for the control
  1104.          block which points to the next control block in the
  1105.          list.  Contains zero for the last element in the
  1106.          list.
  1107. -    BACK=dsect-loc       symbol
  1108. 0        If present, indicates a doubly-linked list (forward
  1109.          and backward pointers).  Name of the word defined in
  1110.          a DSECT for the control block which points to the
  1111.          preceeding control block in the list.  Contains zero
  1112.          for the first element in the list.
  1113. -    CB=dsect-id          symbol
  1114. 0        The name of the DSECT for the control block.  Omit
  1115.          if the control block is defined with EQUs instead of
  1116.          a DSECT.
  1117. 1                            33
  1118. -
  1119.  CBLINKH - Add a control block at the head of a linked list
  1120. -
  1121. 0CBLINKH is used to add a control block at the start of a
  1122.  linked list of similar control blocks.
  1123. -
  1124.  <symbol> CBLINKH new-reg,work-reg,HEAD=loc,<TAIL=loc>,
  1125.                   NEXT=dsect-loc<,BACK=dsect-loc>
  1126.                   <,CB=dsect-id>
  1127. -
  1128.      new-reg              preg
  1129. 0        Register must contain a pointer to the control block
  1130.          to be added.
  1131. -    work-reg             preg
  1132. 0        A work register.
  1133. -    HEAD=loc             relexpri
  1134. 0        Location of a word which contains a pointer to the
  1135.          first element in the list.  Contains zero when the
  1136.          list is empty.
  1137. -    TAIL=loc             relexpri
  1138. 0        Location of a word which contains a pointer to the
  1139.          last element in the list.  Contains zero when the
  1140.          list is empty.
  1141. -    NEXT=dsect-loc       symbol
  1142. 0        Name of the word defined in a DSECT for the control
  1143.          block which points to the next control block which
  1144.          in the list.  Contains zero for the last element in
  1145.          the list.
  1146. 1                            34
  1147. -
  1148.      BACK=dsect-loc       symbol
  1149. 0        If present, indicates a doubly-linked list (forward
  1150.          and backward pointers).  Name of the word defined in
  1151.          a DSECT for the control block which points to the
  1152.          preceeding control block in the list.  Contains zero
  1153.          for the first element in the list.
  1154. -    CB=dsect-id          symbol
  1155. 0        The name of the DSECT for the control block.  Omit
  1156.          if the control block is defined with EQUs instead of
  1157.          a DSECT.
  1158. 1                            35
  1159. -
  1160.  CBLINKT - Add control block at the tail of a linked list
  1161. -
  1162. 0CBLINKT is used to add a control block at the end of a
  1163.  linked list of similar control blocks.
  1164. -
  1165.  <symbol> CBLINKT new-reg,work-reg,HEAD=loc,<TAIL=loc>,
  1166.                   NEXT=dsect-loc<,BACK=dsect-loc>
  1167.                   <,CB=dsect-id>
  1168. -
  1169.      new-reg              preg
  1170. 0        Register must contain a pointer to the control block
  1171.          to be added.
  1172. -    work-reg             preg
  1173. 0        A work register.
  1174. -    HEAD=loc             relexpri
  1175. 0        Location of a word which contains a pointer to the
  1176.          first element in the list.  Contains zero when the
  1177.          list is empty.
  1178. -    TAIL=loc             relexpri
  1179. 0        Location of a word which contains a pointer to the
  1180.          last element in the list  Contains zero when the
  1181.          list is empty.
  1182. -    NEXT=dsect-loc       symbol
  1183. 0        Name of the word defined in a DSECT for the control
  1184.          block which points to the next control block in the
  1185.          list.  Contains zero for the last element in the
  1186.          list.
  1187. 1                            36
  1188. -
  1189.      BACK=dsect-loc       symbol
  1190. 0        If present, indicates a doubly-linked list (forward
  1191.          and backward pointers).  Name of the word defined in
  1192.          a DSECT for the control block which points to the
  1193.          preceeding control block in the list.  Contains zero
  1194.          for the first element in the list.
  1195. -    CB=dsect-id          symbol
  1196. 0        The name of the DSECT for the control block.  Omit
  1197.          if the control block is defined with EQUs instead of
  1198.          a DSECT.
  1199. 1                            37
  1200. -
  1201.               CBINIT - Initialize control block
  1202. -
  1203. 0CBINIT is used to initialize an area of storage with
  1204.  constant data.
  1205. -
  1206.  <symbol> CBINIT BEGIN,location<,length><,ALIGN=boundary>
  1207.  (constant data)
  1208.  <symbol> CBINIT END
  1209. -
  1210.      location             relexpri (maximum length of 8
  1211.                           characters)
  1212. 0        Address of the area to be initialized.
  1213. -    length               symbol
  1214. 0        A symbol to be EQUed to the length of the constant
  1215.          data.
  1216. -    ALIGN=boundary       X, H, F or D
  1217. 0        Boundary alignment for the constant data.  Default
  1218.          is F.
  1219. -
  1220.  NOTE:
  1221. 0    The constant data is placed between the CBINIT BEGIN and
  1222.      the CBINIT END.
  1223. 1                            38
  1224. -
  1225.  CDESRCH - Search CDEs for module name corresponding to address
  1226. -
  1227. 0CDESRCH takes an address and searches the CDE chains to find
  1228.  in which module the address falls.
  1229. -
  1230.  <symbol> CDESRCH address<,WORK=area>
  1231. -    address              addrl (passed in VRF)
  1232. 0        Address for which the corresponding module name is
  1233.          desired.
  1234. -    WORK=area            addrla
  1235. 0        Address of a 12-byte work area.
  1236. -RETURNS:
  1237. 0    VR1 =  address of the module name (zero if none found)
  1238. 0    VRF =  offset from the load point of the module
  1239. 0    VRE =  load point of the module
  1240. 0    VR0 =  segment number for scatter loaded modules
  1241. 0    An LTR VR1,VR1 is done
  1242. 1                            39
  1243. -
  1244.                    CAMODE - Set Addressing Mode
  1245. -
  1246. 0CAMODE is used under MVS/XA to set 24 or 31 bit addressing mode.
  1247. -<symbol> CAMODE mode,<REG=workreg>
  1248. -
  1249.      mode                 24 or 31
  1250. 0        The addressing mode to be set.
  1251. -    REG=workreg          preg
  1252. 0        A register to be used as a work register.  The default
  1253.          is RTNR.
  1254. 1                            40
  1255. -
  1256.                       CBAL - Branch and Link
  1257. -
  1258. 0CBAL branches and links to a subroutine.  It generates a BAL
  1259.  or BAS instruction depending on the value of &CPU.
  1260. -<symbol> CBAL reg,addr
  1261. -
  1262.      reg                  preg
  1263. 0        Register in which the return address is saved.
  1264. -    addr                  relexpri
  1265. 0        Address of the subroutine.
  1266. 1                            41
  1267. -
  1268.                 CBALR - Branch and Link (Register)
  1269. -
  1270. 0CBALR branches and links to a subroutine.  It generates a BALR
  1271.  or BASR instruction, depending on the value of &CPU.
  1272. -<symbol> CBALR reg1,reg2
  1273. -    reg1                 preg
  1274. 0        Register in which the return address is to be saved.
  1275. -    reg2                 preg
  1276. 0        Register containing the address of the subroutine.
  1277. 1                            42
  1278. -
  1279.                     CBASE - Load base register
  1280. -
  1281. 0CBASE is used to load a base register with the current
  1282.  instruction address.  It generates a BALR or BASR instruction,
  1283.  depending on the value of &CPU.
  1284. -<symbol> CBASE basereg
  1285. -
  1286.      basereg              preg
  1287. 0        Register to receive the instruction address.
  1288. -NOTE:
  1289. 0    CBASE is normally followed by a USING.  For example,
  1290. 0            CBASE  BASER
  1291.              USING  *,BASER
  1292. 1                            43
  1293. -
  1294.          CCALL - Pass control to a subroutine
  1295. -
  1296. 0The CCALL macro will pass control to a specified subroutine
  1297.  using COMMON linkage convertions.
  1298. -<symbol> CCALL routine<,A><,RETURN=NO><,TEST=YES><,VRE=vre>
  1299.                  <,VRF=vrf><,VR0=vr0><,VR1=vr1>
  1300. -
  1301.      routine              relexpra or vsymbol or (preg)
  1302. 0        Address of subroutine to be called.
  1303. -    A
  1304. 0        The address of the routine is specified as a
  1305.          relexpra.
  1306. -    RETURN=NO
  1307. 0        Ignored, provided for compatibility with WCALL.
  1308. -    TEST=YES
  1309. 0        Causes the call to be bypassed if the routine
  1310.          address is zero.
  1311. -    VRE=vre              addrla (passed in VRE)
  1312. 0        Parameter to be passed in VRE.
  1313. -    VRF=vrf              addrla (passed in VRF)
  1314. 0        Parameter to be passed in VRF.
  1315. -    VR0=vr0              addrla (passed in VR0)
  1316. 0        Parameter to be passed in VR0.
  1317. 1                            44
  1318. -
  1319.      VR1=vr1              addrla (passed in VR1)
  1320. 0        Parameter to be passed in VR1.
  1321. 1                            45
  1322. -
  1323.             CENTER - Generate entry linkage
  1324. -
  1325. 0The CENTER macro will generate proper COMMON entry linkage
  1326.  code.
  1327. -
  1328.  <symbol> CENTER <reg1,reg2><,size><,ENTRY=NO><,BASE=NO>
  1329.                  <,WAR=NO>
  1330. -
  1331.      reg1,reg2            regs
  1332. 0        The registers to be saved, specified for an STM
  1333.          instruction.
  1334. -    size                 cexpr12
  1335. 0        The size of the requested stack area.
  1336. -    ENTRY=NO
  1337. 0        Requests that an entry point not be generated.
  1338. -    BASE=NO
  1339. 0        Requests that the base register not be loaded.
  1340. -    WAR=NO
  1341. 0        Requests that the work area register not be loaded.
  1342. 1                            46
  1343. -
  1344.              CEXIT - Generate COMMON exit linkage
  1345. -
  1346. 0The CEXIT macro generates COMMON exit linkage code
  1347. -
  1348.  <symbol> CEXIT <reg1,reg2><,size><,WAR=NO><,LTR=reg>
  1349.                 <,BRANCH=NO>
  1350. -
  1351.      reg1,reg2            registers
  1352. 0        The registers to be restored, specified for a LM
  1353.          instruction.
  1354. -    size                 cexpr12
  1355. 0        The size of the stack area to be released.
  1356. -    WAR=NO
  1357. 0        The work area register was not loaded at entry.
  1358. -    LTR=reg              VR0,VR1,VRE or VRF
  1359. 0        An LTR reg,reg should be generated to set the
  1360.          condition code.
  1361. -    BRANCH=NO
  1362. 0        Specifies that the branch to the return address is
  1363.          not to be generated.
  1364. 1                            47
  1365. -
  1366.                CPOP - Release COMMON stack space
  1367. -
  1368. 0The CPOP macro will release COMMON stack space.
  1369. -
  1370.  <symbol> CPOP  register<,EXTRA=value>
  1371.            or
  1372.  <symbol> CPOP  ,size<,EXTRA=value>
  1373. -
  1374.      register             reg
  1375. 0        The address of the beginning to the stack area to be
  1376.          released.
  1377. -    size                 cexpr12 or (reg)
  1378. 0        Size in bytes of the stack area to be released.
  1379. -    EXTRA=value          cexpr12
  1380. 0        Number of bytes to be released in addition to the
  1381.          value specified in the size parameter.
  1382. 1                            48
  1383. -
  1384.              CPOPREG - Restore registers from stack
  1385. -
  1386. 0CPOPREG restores registers that were previously saved in the
  1387.  stack by CPUSHREG.
  1388. -
  1389.  <symbol> CPOPREG r1<,r2>
  1390. -
  1391.      r1                   reg
  1392. 0        Specifies the starting register.
  1393. -    r2                   reg
  1394. 0        Specifies the ending register.
  1395. -
  1396.  NOTE:
  1397. 0    The registers may wrap, as in a LM instruction.
  1398. 1                            49
  1399. -
  1400.                  CPUSH - Acquire stack space
  1401. -
  1402. 0The CPUSH macro will allocate the specified amount of stack
  1403.  space to the user.
  1404. -
  1405.  <symbol> CPUSH reg,size<,EXTRA=value>
  1406. -
  1407.      reg                  reg
  1408. 0        The register to contain the address of the beginning
  1409.          of the acquired stack area.
  1410. -    size                 cexpr12 or (preg)
  1411. 0        The size in bytes of the stack area requested.
  1412. -    EXTRA=value          cexpr12
  1413. 0        The number of bytes of stack space requested in
  1414.          addition to the amount specified in the size
  1415.          parameter.
  1416. 1                            50
  1417. -
  1418.               CPUSHREG - Save registers in stack
  1419. -
  1420. 0CPUSHREG stores registers into the stack and bumps the stack
  1421.  pointer accordingly.
  1422. -
  1423.  <symbol> CPUSHREG r1,<r2>
  1424. -
  1425.      r1                   reg
  1426. 0        Specifies the starting register.
  1427. -    r2                   reg
  1428. 0        Specifies the ending register.
  1429. -
  1430.  NOTE:
  1431. 0    The registers may wrap, as in a STM instruction.
  1432. 1                            51
  1433. -
  1434.                  CSA - Define save area space
  1435. -
  1436. 0The CSA macro will define enough fullwords of storage to
  1437.  save the specified registers.
  1438. -
  1439.  <symbol> CSA reg1,reg2<,EQU=(sym1,reg1,...,symN,regN)
  1440. -
  1441.      reg1,reg2            regs
  1442. 0        Registers to be saved in STM form.
  1443. -    symI                 symbol
  1444. 0        Specifies a symbol to be EQUed to the word in which
  1445.          register regI will be saved.
  1446. -    regI                 reg
  1447. 0        Specifies the register for symI.
  1448. -
  1449.  NOTE:
  1450. 0    The normal format for a work area DSECT is
  1451. 0        name DSECT
  1452.               CSA  reg1,reg2
  1453.               (definitions for work space)
  1454.          size EQU  *-name
  1455. 1                            52
  1456. -
  1457.                  CSAVGEN - Generate OS Save Area Linkage
  1458. -
  1459. 0CSAVGEN is used to generate instructions to create standard OS save
  1460.  area linkage from the stack to an OS save area.
  1461. 0The location of the OS save area must previously have been specified
  1462.  via CSAVLINK.  CSAVGEN is used by CENTER, CCALL, CPUSH, CPOP, etc.,
  1463.  but may also be used by itself.
  1464. -
  1465.  <symbol> CSAVGEN
  1466. 1                            53
  1467. -
  1468.                  CSAVLINK - Request OS Save Area Linkage
  1469. -
  1470.  CSAVLINK is used to request that standard OS save area linkage be
  1471.  maintained in the stack.  It causes additional code to be generated
  1472.  by macros such as CENTER, CCALL, CPUSH, CPOP, etc.
  1473. -
  1474.  <symbol> CSAVLINK <savepointer>
  1475. -
  1476.      savepointer          addrl
  1477. 0        The address of the OS save area to which linkage is to be
  1478.          maintained.  If omitted, generation of additional linkage
  1479.          code is suppressed.
  1480. 1                            54
  1481. -
  1482.                CSETUP - Define control blocks
  1483. -
  1484. -The CSETUP macro defines the control blocks specified by the
  1485.  macro.
  1486. -
  1487.  <symbol> CSETUP <REGS=NO><,CBS=option><,SCABBRS=NO>
  1488.                  <SETS=NO>,<SYMDEL=NO>,<,cntl-block=YES>
  1489. -
  1490.      symbol               1-8 characters (required)
  1491. 0        CSECT name for the module.
  1492. -    REGS=NO
  1493. 0        Don't define the standard registers.
  1494. -    CBS=option            NO or ALL
  1495. 0        NO specifies that no control block DSECTS are to be
  1496.          generated, ALL specifies that all are.
  1497. -    SCABBRS=NO
  1498. 0        Don't define scanner abbreviations.
  1499. -    SETS=NO
  1500. 0        Don't set assembly parameter values.
  1501. -    SYMDEL=NO
  1502. 0        Don't generate DBC (Debugging Controller) symbol deletes
  1503.          around control block DSECTS.
  1504. -    cntl-block=YES       name of a COMMON control block
  1505. 0        Define the DSECT for the specified control block.
  1506. 1                            55
  1507. -
  1508.             CHKACCT - Check syntax of account number
  1509. -
  1510. 0CHKACCT is used to check the syntax of an account number.
  1511.  CHKACCT assumes that VRF, VR0 and VR1 are set as they are by
  1512.  SCAN.
  1513. -
  1514.  <symbol> CHKACCT
  1515. -
  1516.  RETURNS:
  1517. 0    VRE =  0  ok
  1518.             4  bad syntax
  1519. 0    An LTR VRE,VRE is done.
  1520. 0VRF, VF0 and VR1 are preserved.
  1521. 1                            56
  1522. -
  1523.                CHKBOX - Check box number syntax
  1524. -
  1525. 0CHKBOX is used to check the syntax of a box number.  CHKBOX
  1526.  assumes VRF, VR0 and VR1 are set as they are by SCAN.
  1527. -
  1528.  <symbol> CHKBOX
  1529. -
  1530.  RETURNS:
  1531. 0    VRE =  0  ok
  1532.             4  bad syntax
  1533. 0    An LTR VRE,VRE is done.
  1534. 0VRF, VR0 and VR1 are preserved.
  1535. 1                            57
  1536. -
  1537.                  CHKINIT - Check initials syntax
  1538. -
  1539. 0CHKINIT is used to check the syntax of a set of initials.
  1540.  CHKINIT assumes that VRF, VR0 and VR1 are set as they are by
  1541.  SCAN.
  1542. -
  1543.  <symbol> CHKINIT
  1544. -
  1545.  RETURNS:
  1546. 0    VRE =  0  ok
  1547.             4  bad syntax
  1548. 0    An LTR VRE,VRE is done.
  1549. 0VRF, VR0 and VR1 are preserved.
  1550. 1                            58
  1551. -
  1552.                    CHKKW - Check keyword syntax
  1553. -
  1554. 0CHKKW is used to check the syntax of a keyword.  CHKKW
  1555.  assumes that VR1 points at the keyword and that VR0
  1556.  contains the length.
  1557. -
  1558.  <symbol> CHKKW
  1559. -
  1560.  RETURNS:
  1561. 0    VRE =  0  ok
  1562.             4  bad syntax
  1563. 0An LTR, VRE, VRE is done.
  1564. 1                            59
  1565. -
  1566.                 CHKTERM - Check terminal id syntax
  1567. -
  1568. 0CHKTERM is used to check the syntax of a terminal id.
  1569.  CHKTERM assumes that VRF, VR0 and VR1 are set as they
  1570.  are by SCAN.
  1571. -
  1572.  <symbol> CHKTERM
  1573. -
  1574.  RETURNS:
  1575. 0    VRE =  0  ok
  1576.             4  bad syntax
  1577. 0An LTR VRE, VRE is done.
  1578. 0VRF, VR0 and VR1 are preserved.
  1579. -NOTE:
  1580. 0    At NIH, if the terminal id is NONE, VRF and VR1
  1581.      are set to point at asterisks and VR0 is set to
  1582.      <ERM.
  1583. 1                            60
  1584. -
  1585.              CSPOST - Post with compare and swap
  1586. -
  1587. 0CSPOST posts an ECB.  Under MVS, it uses the compare and
  1588.  swap instruction to avoid unnecessary calls to POST.
  1589. -
  1590.  <symbol> CSPOST ecb<,code>
  1591. -
  1592.      ecb                  addrla (passed in VR1)
  1593. 0        Address of the ECB to be posted.
  1594. -    code                 valuela (passed in VR0)
  1595. 0        The post code (default is 0).
  1596. 1                            61
  1597. -
  1598.             CVBTD - Convert from binary to decimal
  1599. -
  1600. 0The CVBTD macro will convert a binary value to EBCDIC.
  1601.  Padding or truncation will take place in the high order
  1602.  positions.
  1603. -
  1604.  <symbol> CVBTD loc,len,value
  1605. -
  1606.      loc                  addrla (passed in VR1)
  1607. 0        The address of the area to contain the EBCDIC
  1608.          result, right justified, with leading blanks.
  1609. -    len                  valuela (passed in VR0)
  1610. 0        The length of the area to contain the EBCDIC result.
  1611.          If this specification is zero, the macro will use as
  1612.          many bytes as necessary, but the user should leave
  1613.          at least 11 bytes to contain the maximum result.
  1614. -    value                addrl (passed in VRF)
  1615. 0        The binary value to be converted.
  1616. -
  1617. 0RETURNS:
  1618. 0    VRF =  0  all went ok
  1619.             4  field too small
  1620. 0    VR1 =  starting address of resulting string
  1621. 0    VR0 =  length of resulting string
  1622. 0    An LTR VRF,VRF is done
  1623. 1                            62
  1624. -
  1625.               CVBTX - Convert from binary to hex
  1626. -
  1627. 0The CVBTX macro will convert each 4 bit halfbyte of the
  1628.  operand field into its 8 bit printable hex character
  1629.  representation.
  1630. -
  1631.  <symbol> CVBTX  loc,len,hex-loc
  1632. -
  1633.      loc                  addrla (passed in VR1)
  1634. 0        The address of the resulting string.
  1635. -    len                  valuela (passed in VR0)
  1636. 0        The length of the resulting string.  If this
  1637.          parameter is an odd number, the first digit of the
  1638.          data is ignored.
  1639. -    hex-loc              addrla (passed in VRF)
  1640. 0        The address of the data to be converted.
  1641. -
  1642.  RETURNS:
  1643. 0    VR1 =  starting address of result
  1644. 0    VR0 =  length of result
  1645. 0    An LTR VRF,VRF is done
  1646. 1                            63
  1647. -
  1648.                CVBT$ - Convert from binary to $
  1649. -
  1650. 0The CVBT$ macro will convert a binary number to $XXX.XX form
  1651.  with truncation occuring at the high order positions.
  1652. -
  1653.  <symbol> CVBT$ loc,len,value
  1654. -
  1655.      loc                  addrla (passed in VR1)
  1656. 0        The address of the resulting string.
  1657. -    len                  valuela (passed in VR0)
  1658. 0        The length of the resulting string.  If this
  1659.          specification is zero, the macro will use as many
  1660.          positions as are needed.  The issuer should leave 13
  1661.          positions to handle the maximum result.
  1662. -    value                addrl (passed in VRF)
  1663. 0        The binary value to be converted.
  1664. -
  1665.  RETURNS:
  1666. 0    VRF =  0  all went ok
  1667.             4  field too small for result
  1668. 0    VR1 =  starting address of resulting string
  1669. 0    VR0 =  length of resulting string
  1670. 0    An LTR VRF,VRF is done
  1671. 1                            64
  1672. -
  1673.             CVDATE - Convert Date to MM/DD/YY form
  1674. -
  1675. 0The CVDATE macro will return the date in MM/DD/YY form and
  1676.  optionally return the day of the week.
  1677. -
  1678.  <symbol> CVDATE loc,date<,WEEKDAY=YES>
  1679. -
  1680.      loc                  addrla (passed in VR1)
  1681. 0        The address of the 8 or 18 byte area to contain the
  1682.          date/day.
  1683. -    date                 addrl (passed in VR0)
  1684. 0        The date in OS format.
  1685. -    WEEKDAY=YES          conditional form allowed
  1686. 0        Requests that the day of the week immediately follow
  1687.          the date in specified area (one blank will separate
  1688.          the date and day).
  1689. -
  1690.  RETURNS:
  1691. 0    VR1 =  starting address of resulting string
  1692. 0    VR0 =  length of resulting string (8 or 18)
  1693. 1                            65
  1694. -
  1695.             CVDTB - Convert from decimal to binary
  1696. -
  1697. 0The CVDTB macro will convert an unsigned EBCDIC decimal
  1698.  number to binary.
  1699. -
  1700.  <symbol> CVDTB loc,len<,EXACT=NO>
  1701. -
  1702.      loc                  addrla (passed in VR1)
  1703. 0        The address of the area containing the EBCDIC
  1704.          decimal value.
  1705. -    len                  valuela (passed in VR0)
  1706. 0        The length of the area containing the EBCDIC decimal
  1707.          value.
  1708. -    EXACT=NO             conditional form allowed
  1709. 0        Requests that the EBCDIC decimal field be terminated
  1710.          by a non numeric digit occuring prior to the
  1711.          termination of the length specification.
  1712. -
  1713.  RETURNS:
  1714. 0    VRF =  >=0  converted number
  1715.              -4  an invalid decimal digit was
  1716.                  encountered, and EXACT=NO was not
  1717.                  specified.
  1718.              -8  overflow
  1719. 0    VR1 =  address of first byte not converted (if
  1720.             EXACT=NO)
  1721. 0    VR0 =  number of unconverted bytes (if EXACT=NO)
  1722. 0    An LTR VRF,VRF is done
  1723. 1                            66
  1724. -
  1725.             CVTIME - Convert time to HH:MM:SS form
  1726. -
  1727. 0The CVTIME macro will convert a time to 24 hour HH:MM:SS
  1728.  form or to 12 hour HH:MM:SS A.M. (or P.M.) form.
  1729. -
  1730.  <symbol> CVTIME loc,time<,AMPM=YES>
  1731. -
  1732.      loc                  addrla (passed in VR1)
  1733. 0        The address of the 8 or 13 byte field to contain the
  1734.          converted time.
  1735. -    time                 addrl (passed in VR0)
  1736. 0        The time to be converted in 100th seconds.
  1737. -    AMPM=YES             conditional form allowed
  1738. 0        Requests the 12 hour HH:MM:SS A.M. (or P.M.) form.
  1739. -
  1740.  RETURNS:
  1741. 0    VR1 =  starting address of resulting string
  1742. 0    VR0 =  length of resulting string (8 or 13)
  1743. 1                            67
  1744. -
  1745.      CVTIM128 - Convert time from nearest 128 day period
  1746. -
  1747. 0The CVTIM128 macro will convert time in 100th of a second
  1748.  from the last 128 day period to current time and date.
  1749. -
  1750.  <symbol> CVTIM128 time128
  1751. -
  1752.      time128              addrl (passed in VR0)
  1753. 0        The time of day in 100th of a second from the
  1754.          nearest 128 day period.
  1755. -
  1756.  RETURNS:
  1757. 0    VR0 =  time of day in 100th of a second
  1758. 0    VR1 =  date in OS format
  1759. 1                            68
  1760. -
  1761.               CVXTB - Convert from hex to binary
  1762. -
  1763. 0The CVXTB macro will convert each hex byte of a string into
  1764.  a 4 bit number.
  1765. -
  1766.  <symbol> CVXTB loc,len,hex-loc
  1767. -
  1768.      loc                  addrla (passed in VR1)
  1769. 0        The address of the string to be converted.
  1770. -    len                  valuela (passed in VR0)
  1771. 0        The length of the string to be converted.  If this
  1772.          parameter is an odd number, a zero will be assumed
  1773.          before the first digit.
  1774. -    hex-loc              addrla (passed in VRF)
  1775. 0        The address of the resulting string.
  1776. -
  1777.  RETURNS:
  1778. 0    VRF =  0  all went ok
  1779.             4  an invalid hex digit was encountered
  1780. 0    VR1 =  address of resulting string
  1781. 0    VR0 =  resulting string
  1782. 0    An LTR VRF,VRF is done
  1783. 1                            69
  1784. -
  1785.                 DALLIST - Set up dynamic allocation list
  1786. -
  1787. 0DALLIST is used to construct a parameter list for MVS
  1788.  dynamic allocation (SVC 99).
  1789. -
  1790.  <symbol> DALLIST BEGIN,code<,FLAGS1=(<flags1a>,<flags1b>)>
  1791.                   <,FLAGS2=(<flags2a>,<flags2b>,<flags2c>,
  1792.                    <flags2d>)><,ERROR=sym><,INFO=sym>
  1793.                   <,MF=(fmt,loc)><,INIT=NO>
  1794. 0<symbol> DALLIST TEXT,key,(<item>,<length>,<inst>)...<,MF=L>
  1795. 0<symbol> DALLIST END<,SVC=NO>
  1796. -
  1797.      code                 cexpr8
  1798. 0        A code specifying the type of operation to be
  1799.          performed (allocation, unallocation, etc.).
  1800. -    flags1a              cexpr8
  1801. 0        Flags for the first byte of the FLAGS1 field.
  1802. -    flags1b              cexpr8
  1803. 0        Flags for the second byte of the FLAGS1 field.
  1804. -    flags2a              cexpr8
  1805. 0        Flags for the first byte of the FLAGS2 field.
  1806. -    flags2b              cexpr8
  1807. 0        Flags for the second byte of the FLAGS2 field.
  1808. -    flags2c              cexpr8
  1809. 0        Flags for the third byte of the FLAGS2 field.
  1810. 1                            70
  1811. -
  1812.      flags2d              cexpr8
  1813. 0        Flags for the fourth byte of the FLAGS2 field.
  1814. -    ERROR=sym            symbol
  1815. 0        A label for the error code field.
  1816. -    INFO=sym             symbol
  1817. 0        A label for the information code field.
  1818. -    fmt                  L, E or R
  1819. 0        Format of the macro expansion.  R form is used to
  1820.          retrieve returned data from the parameter list.
  1821. -    loc                  relexpri
  1822. 0        Used with MF=E to specify the location of the
  1823.          parameter list.
  1824. -    INIT=NO
  1825. 0        Used with MF=E to specify that fields not explicitly
  1826.          specified are not to be initialized.
  1827. -    key                  cexpr16
  1828. 0        A value specifying a type of text element.
  1829. -    item                 standard form:  element for DC
  1830.                           MF=L:  element for DC
  1831.                           MF=E:  relexpri
  1832.                           MF=R:  relexpri
  1833. 0        Used with standard form and MF=L to specify an item
  1834.          to be assembled in a DC.  Used with MF=E to specify
  1835.          the location of data to be copied into the parameter
  1836.          list.  Used with MF=R to specify a location to
  1837.          receive data from the parameter list.
  1838. 1                            71
  1839. -
  1840.      length               cexpr8
  1841. 0        Specifies the length of the text item.
  1842. -    inst                 operation code
  1843. 0        Used to specify the operation code used to store
  1844.          into the field.
  1845. -    MF=L
  1846. 0        Used in a text item with DALLIST BEGIN,MF=E to
  1847.          specify that only the field is being defined, no
  1848.          initialization is to be performed.
  1849. -    SVC=NO
  1850. 0        Used with standard form and MF=E to specify that
  1851.          SVC 99 is not to be issued.
  1852. 1                            72
  1853. -
  1854.      DALMSG - Get messages explaining DYNALLOC errors
  1855. -
  1856. 0DALMSG is used to obtain standard IBM messages explaining non-zero
  1857.  return codes from DYNALLOC and DAIR.  Uses IKJEFF18.
  1858. -
  1859.  <symbol> DALMSG MF=(fmt,<loc>)<,DALLIST=loc2><,RC=rtncode>
  1860.                  <,MSG1=sym><,MSG2=sym><,MSG1LEN=sym>
  1861.                  <,MSG2LEN=sym><,FLAGS1=hex><,FLAGS2=hex>
  1862. -
  1863.      fmt                  L or E
  1864. 0        Format of the macro expansion.
  1865. -    loc                  addrla (passed in VR1)
  1866. 0        Used with MF=E to specify the location of the parameter
  1867.          list.
  1868. -    DALLIST=loc2         addrl
  1869. 0        Used with MF=E to specify the location of the pointer
  1870.          to the DYNALLOC or DAIR request blocks.  Not used with
  1871.          MF=L.
  1872. -    RC=rtncode           addrl
  1873. 0        The return code that was returned in register 15 by SVC99
  1874.          or DAIR.  Not used with MF=L.
  1875. -    MSG1=sym             symbol
  1876.      MSG2=sym
  1877. 0        A label for the first and second message fields returned from
  1878.          IKJEFF18.  Normally used only with MF=L.
  1879. -    MSG1LEN=sym          symbol
  1880.      MSG1LEN=sym
  1881. 0        A label for the 2 byte length field of the first and
  1882.          second messages.
  1883. 1                            73
  1884. -
  1885.      FLAGS1=hex           2 hex digits
  1886. 0        Flags for the FLAGS1 field of the IKJEFF18 control
  1887.          block.  Default is 40, meaning "do not do WTP or
  1888.          PUTLINE".
  1889. -    FLAGS2=hex           2 hex digits
  1890. 0        Flags for the FLAGS2 field of the IKJEFF18 control
  1891.          block.  Default is 33, meaning "DYNALLOC".
  1892. -The standard MF=L invocation is:
  1893. 0MFL DALMSG MF=L,MSG1=sym,MSG2=sym,MSG1LEN=sym,MSG2LEN=sym,
  1894.             FLAGS1=hex,FLAGS2=hex
  1895. 0The standard MF=E form is
  1896. 0<symbol> DALMSG DALLIST=locator,RC=,<,FLAGS1=hex><,FLAGS2=hex>
  1897.                  MF=(E,MFL)
  1898. -NOTE:
  1899. 0    When DALLIST is used to create the dynamic allocation parameter
  1900.      list, the DALLIST option of DALMSG should specify the label on
  1901.      the DALLIST BEGIN,MF=L macro.
  1902. 1                            74
  1903. -
  1904.                   DCC - Define Constant Conditionally
  1905. -
  1906. -DCC is used to conditionally assemble a DC statement depending on the
  1907.  value of a global set symbol.
  1908. -
  1909.  <symbol> DCC dc-operand,LENGTH=value
  1910. -
  1911.      dc-operand           any operand legal in a DC statement
  1912. 0        The constant to be assembled.
  1913. -    LENGTH=value         integer
  1914. 0        If the value is not 0, the DC operand is assembled.
  1915.          Otherwise, the symbol is defined at the current
  1916.          location counter address.
  1917. -
  1918.  EXAMPLE:
  1919. 0TERMID:  DCC  CL&<ERM,'TTT',LENGTH=&<ERM;
  1920. 1                            75
  1921. -
  1922.                   DEBLANK - Deblank a string
  1923. -
  1924. 0The DEBLANK macro removes leading and/or trailing blanks
  1925.  from a string.
  1926. -
  1927.  <symbol> DEBLANK loc-reg,len-reg<,work-reg><,TYPE=symbol>
  1928.                 <,NULL=NO><,ZERO=NO><,LABEL=symbol><,FILL=char>
  1929.                 <,FILADDR=byte>
  1930. -
  1931.      loc-reg              preg
  1932. 0        Specifies the starting address of the string to be
  1933.          deblanked.
  1934. -    len-reg              reg
  1935. 0        Specifies the length of the string to be deblanked.
  1936.          After the termination of the macro, this register
  1937.          will contain the new length of the deblanked string.
  1938. -    work-reg             preg
  1939. 0        Provides a work register to be used in the search.
  1940.          More efficient code may be generated if this
  1941.          register is provided.
  1942. -    TYPE=symbol          LEFT, RIGHT, or BOTH
  1943. 0        Specifies elimination of leading (LEFT) or trailing
  1944.          (RIGHT) blanks, or both (BOTH).  Default is RIGHT.
  1945. -    NULL=NO
  1946. 0        The NO condition specifies that the resulting string
  1947.          will never be 0.  More efficient code may be
  1948.          generated if this option is specified.
  1949. -    ZERO=NO
  1950. 0        The NO condition specifies that the value in the len
  1951.          register will never be 0.  More efficient code may
  1952.          be generated if this option is specified.
  1953. 1                            76
  1954. -
  1955.      LABEL=symbol         relexpri
  1956. 0        The location to receive control if the resulting
  1957.          string has a length of zero.
  1958. 0    FILL=char            cexpr8
  1959. 0        Used to specify a character other than blank to be
  1960.          stripped.
  1961. 0    FILADDR=byte         relexpri
  1962. 0        Used to specify the location of the character
  1963.          to be stripped.  May not be used with FILL.
  1964. -RETURNS:
  1965. 0    loc-reg =  location of deblanked string
  1966. 0    len-reg =  length of deblanked string
  1967. 1                            77
  1968. -
  1969.                    DSC - Define Storage Conditionally
  1970. -
  1971. 0DSC is used to conditionally assemble a DS statement depending on the
  1972.  value of a global set symbol.
  1973. -
  1974.  <symbol> DSC ds-operand,LENGTH=value
  1975. -
  1976.      ds-operand           any operand legal in a DS statement
  1977. 0        Specifies the storage to be defined.
  1978. -    LENGTH=value         integer
  1979. 0        If the value is not 0, the DS operand is assembled.
  1980.          Otherwise, the symbol is defined at the current
  1981.          location counter address.
  1982. -
  1983.  EXAMPLE:
  1984. 0TERMID:  DSC  CL&&TERM,LENGTH=&<ERM;
  1985. 1                            78
  1986. -
  1987.          EDIT - Generate edit mask and ED/EDMK instruction
  1988. -
  1989. 0EDIT is used to create both an appropriate mask string or
  1990.  editing numeric data and the ED or EDMK instruction to
  1991.  perform the requested operation.
  1992. -
  1993.  <symbol> EDIT to-field,from-field<,to-length><,from-length>
  1994.                <,CALC=NO><,DIGITS=n><,MARK=YES>
  1995. -
  1996.      to-field             relexpri or (preg)
  1997. 0        The address of the field to contain the edited
  1998.          source digits.  It must be an even number of bytes
  1999.          in length.
  2000. -    from-field           relexpri or (preg)
  2001. 0        The address of the field containing the source
  2002.          digits to be EDITed to the to-field.  It must
  2003.          contain sufficient digits to satisfy the implicit
  2004.          (or explicit) length of the to-field.
  2005. -    to-length            cexpr4
  2006. 0        An explicit specification of the length of the
  2007.          to-field.  It must be specified if the to-field is
  2008.          presented in base-displacement form.  If specified
  2009.          it will override the implicit length for the
  2010.          to-field.
  2011. -    from-length          cexpr4
  2012. 0        An explicit specification of the length of the
  2013.          from-field.  It must be specified if the from-field
  2014.          is specified in base-displacement form.  If
  2015.          specified it overrides the implicit length for the
  2016.          from-field.
  2017. 0    CALC=NO
  2018. 0        Indicates that the addresses specified are to be
  2019.          used exactly as is for the from- and to-fields in
  2020.          the generated ED or EDMK instruction.  If not
  2021.          specified the macro will calculate the offset in the
  2022.          from-field to use in the ED or EDMK instruction.
  2023. 1                            79
  2024. -
  2025.      DIGITS=n             cexpr4
  2026. 0        Specifies the minimum number of significant digits
  2027.          to be produced.
  2028. 0    MARK=YES
  2029. 0        Indicates that an EDMK instruction should be
  2030.          generated.  Register 1 will then point to the first
  2031.          significant character in the edited field.  If the
  2032.          field does not produce a significatn digit, register
  2033.          1 will point to the low order character of the
  2034.          edited field.
  2035. 1                            80
  2036. -
  2037.                   FASTPOST - Perform low-overhead post
  2038. -
  2039. 0FASTPOST is used to post an ECB as quickly as possible.
  2040.  The method depends on the operating system.
  2041. -
  2042.  <symbol> FASTPOST ecb,<code>,<REG=workreg>,<SUPMODE=YES>,
  2043.                    <SAVELOC=area>
  2044. -
  2045.      ecb                  addrla  (passed in VR1)
  2046. 0        The address of the ECB to be posted.
  2047. 0    code                 valuela (passed in VR0)
  2048. 0        The post code to be used.  The default is 0.
  2049. 0    REG=workreg          preg
  2050. 0        A register in which the contents of register
  2051.          XRA may be saved.  Specify REG=XRA if XRA
  2052.          may be destroyed.
  2053. 0    SUPMODE=YES          conditional form allowed
  2054. 0        Specifies that the caller is in supervisor state
  2055.          with non-zero key.  Generally required to get
  2056.          speedup.  Under MVS, causes the branch entry to
  2057.          POST to be used unless SAVELOC is used.
  2058. 0    SAVELOC=area         relexpri
  2059. 0        The address of the same 2-word area specified in
  2060.          the FASTWAIT macro used to wait on the ECB.
  2061.          SUPMODE=YES must also be specified.  Under MVS,
  2062.          causes RESUME to be used.
  2063. 1                            81
  2064. -
  2065.                   FASTWAIT - Low overhead WAIT macro
  2066. -
  2067. 0FASTWAIT is the equivalent of an OS WAIT macro.  When possible,
  2068.  it generates more efficient code than does the OS macro
  2069.  (e.g. using the branch entry).
  2070. -
  2071.  <symbol> FASTWAIT <count>,<ECB=ecbaddr>,<ECBLIST=listaddr>,
  2072.                    <REG=workreg>,<SUPMODE=YES>,<SAVELOC=area>
  2073. -
  2074.      count                addrla
  2075. 0        Number of ECBs which must be posted in order for
  2076.          WAIT to complete.  Default is 1.
  2077. 0    ECB=ecbaddr          addrla
  2078. 0        Address of a single ECB.
  2079. 0    ECBLIST=listaddr     addrla
  2080. 0        Address of a list of ECBs.
  2081. 0    REG=workreg          preg
  2082. 0        saved.  Specify REG=XRA if XRA may be destroyed.
  2083.          Required.
  2084. 0    SUPMODE=YES          conditional form allowed
  2085. 0        Specifies that the calling program is in supervisor
  2086.          state with non-zero key.
  2087. 0    SAVELOC=area         relexpri
  2088. 0        The address of the same 2-word area specified in
  2089.          all FASTPOST instructions used to pose ECBs in
  2090.          the list.  Only FASTPOST may be used for posting.
  2091.          SUPMODE=YES is required.  Under MVS, causes
  2092.          SUSPEND to be used.
  2093. 1                            82
  2094. -
  2095.                   FLAGSEG - TSEG or VSEG FLAG message
  2096. -
  2097. 0FLAGSEG is used to TSEG or VSEG the message issued when
  2098.  a set of initials is flagged.  The message may be multiple
  2099.  lines.
  2100. -
  2101.  <symbol> FLAGSEG REG=workreg,ACCT=account,INIT=initials,
  2102.                   <LABEL=(routine,label)>,<VAREA=varea>
  2103. -
  2104.      REG=workreg          preg
  2105. 0        A work register used to keep track of which line of
  2106.          the message is being issued.  Should be set to zero
  2107.          before FLAGSEG is issued for the first time.
  2108. 0    ACCT=account         addrla
  2109. 0        Address of the account number
  2110. 0    INIT=initials        addrla
  2111. 0        Address of the initials
  2112. 0    LABEL=(routine,label)  routine:  MMSGINIT,WMSGINIT, or null
  2113.                             label: string
  2114. 0    VAREA=varea          addrla
  2115. 0        Address of the VAREA if VSEG is to be used instead
  2116.          of TSEG
  2117. -RETURNS:
  2118. 0    CC =  Z  Another line of the message has been TSEGed
  2119.               or VSEGed.
  2120.           NZ  There are no more lines in the message.  No
  2121.               line was TSEGed or VSEGed.
  2122. 0    FLAGSEG should be issued repeatedly until a non-zero
  2123.      condition code is returned.
  2124. 1                            83
  2125. -
  2126.               FREESWAM - Free SWA Manager Work Area
  2127. -
  2128. 0The FREESWAM macro is used to free the MVS SWA Manager Work area
  2129.  that is pointed to by the TCB.  These work areas can cause severe
  2130.  fragmentation of private area storage above the region
  2131.  (subpools 229 and 230).
  2132. -
  2133.  <symbol> FREESWAM
  2134. 1                            84
  2135. -
  2136.          GBLSET - Specify values of global set symbols
  2137. -
  2138. 0GBLSET is used to specify values for certain global set
  2139.  symbols when CSETUP or OSSETUP is not used.  This
  2140.  information is required by a number of the other macros.
  2141. -
  2142.  <symbol> GBLSET <(CPU,cpu-value)>,<(MP,mp-value)>,
  2143.                  <(OS,os-value)>
  2144. -
  2145.      cpu-value            360, 370, or 370BS
  2146. 0        Specifies whether the CPU is 360, 370 or 370 with
  2147.          Branch and Save instructions.  Controls whether 370
  2148.          instructions will be generated.
  2149. -    mp-value             YES or NO
  2150. 0        Specifies whether the CPU is a multiprocessor.
  2151. -    os-value             MFT,MVT,VS1,SVS,MVS,XA
  2152. 0        Specifies the operating system.
  2153. 1                            85
  2154. -
  2155.           IPRIVSCN - Scan for initials privileges
  2156. -
  2157. 0IPRIVSCN scans for initials privileges and sets appropriate
  2158.  (KWRIFL) bits in a specified byte.
  2159. -
  2160.  <symbol> IPRIVSCN byte<,TYPE=NO>
  2161. -
  2162.      byte                 relexpri
  2163. 0        Address of the flag byte.
  2164. -    TYPE=NO
  2165. 0        Causes NO to be appended in front of each word to be
  2166.          scanned for.  Also causes bits to be turned off
  2167.          instead of on in the byte.
  2168. 1                            86
  2169. -
  2170.             IPRIVSEG - TSEG or VSEG initials privileges
  2171. -
  2172. 0IPRIVSEG is used to TSEG or VSEG a word for each initials
  2173.  privilege bit (KWRIFL) which is set in a specified byte.
  2174. -
  2175.  <symbol> IPRIVSEG byte<,BEFORE=string><,AFTER=string>
  2176.                    <,VAREA=addr>
  2177. -
  2178.      byte                 relexpri
  2179. 0        Address of the privilege byte.
  2180. -    BEFORE=string        string
  2181. 0        A string of characters to be appended before each
  2182.          word.  May also be specified as location and length.
  2183. -    AFTER=string         string
  2184. 0        A string of characters to be appended after each
  2185.          word.  May also be specified as location and length.
  2186. -    VAREA=addr           addrla
  2187. 0        Address of the VAREA, if VSEG is to be used.
  2188. 1                            87
  2189. -
  2190.                        MCCW - Macro CCW
  2191. -
  2192. 0MCCW permits a value to be placed in the unused byte of a
  2193.  CCW.
  2194. -
  2195.  <symbol> MCCW op,addr,flags,length<,CODE=code>
  2196. -
  2197.      op                   cexpr8
  2198. 0        The CCW operation code.
  2199. -    addr                 relexpra
  2200. 0        The CCW data address.
  2201. -    flags                cexpr8
  2202. 0        The CCW flags.
  2203. -    length               cexpr16
  2204. 0        The CCW data length.
  2205. -    CODE=code            cexpr8
  2206. 0        The value to be placed in byte 5 of the CCW.
  2207. 1                            88
  2208. -
  2209.               OPENP - Check for successful open
  2210. -
  2211. 0The OPENP macro will check DCBOFLGS to see if a DCB was
  2212.  opened successfully.
  2213. -
  2214.  <symbol> OPENP dcb-addr
  2215. -
  2216.      dcb-addr             relexpri
  2217. 0        The address of the DCB to be checked.
  2218. -
  2219.  RETURNS:
  2220. 0    CC = Z   DCB not open
  2221.           O   DCB open
  2222. -
  2223.  NOTE:
  2224. 0    OPENP requires the DCB DSECT.
  2225. 1                            89
  2226. -
  2227.                      ORGHIGH - ORG to high address
  2228. -
  2229. 0ORGHIGH is used to ORG to the highest of a specified list of
  2230.  addresses.
  2231. -
  2232.  <symbol> ORGHIGH address,...,BASE=addr
  2233. -
  2234.      address              relexpr
  2235. 0        One of a list of addresses.  Highest is selected.
  2236. -    BASE=addr            relexpr
  2237. 0        An address less than all the others.
  2238. 1                            90
  2239. -
  2240.  OSCALL - Pass control to a subroutine using OS conventions
  2241. -
  2242. 0The OSCALL macro will pass control to a specified
  2243.  subroutine using OS calling conventions.
  2244. -
  2245.  <symbol> OSCALL routine,<A>,<VR1=parm>,<VR0=parm>,<VRF=parm>,
  2246.                         <PARAM=(parm,...),<VL=1>>,
  2247.                         <TEST=YES>
  2248. -
  2249.       routine              relexpra or vsymbol or (preg)
  2250. 0        The address of the subroutine to be called.
  2251. -     A
  2252. 0        The address specified in the routine parameter is a
  2253.          relexpra.
  2254. -     VR1=parm            addrla
  2255. 0        A parameter to be passed in register 1.  May also be
  2256.          specified as R1=parm.
  2257. 0     VR0=parm            addrla
  2258. 0        A parameter to be passed in register 0.  May also be
  2259.          specified as R0=parm.
  2260. 0     VRF=parm             addrla
  2261. 0        A parameter to be passed in register 15.  May also
  2262.          be specified as R15=parm or RCR=parm.
  2263. 0     PARAM=(parm,...)     addrla
  2264. 0         A list of parameters to be passed.  A parameter
  2265.           list is built in the stack and the address loaded
  2266.           into VR1.
  2267. 0     VL=1
  2268. 0         Specifies that the X'80' bit should be turned on
  2269.           in the high order byte of the last list entry.
  2270. 1                            91
  2271. -
  2272.       TEST=YES             Specifies that the routine is
  2273.                            not to be called if its address
  2274.                            is zero.
  2275. 0NOTE:
  2276. 0    Register 15 is loaded with the entry point address
  2277.      unless VRF=parm is specified.
  2278. 1                            92
  2279. -
  2280.                OSENTER - Generate OS entry code
  2281. -
  2282. 0The OSENTER macro will generate proper OS entry linkage
  2283.  code.
  2284. -
  2285.  <symbol> OSENTER <(reg1,reg2)...>,<,ENTRY=NO>
  2286.                   <,BASE=NO><,SAVE=area><,PACK=YES>
  2287.                   <,FORWARD=YES><,ID=identification>
  2288. -
  2289.      reg1,reg2            regs
  2290. 0        Registers to be saved in STM form.  Any number of
  2291.          parenthesized pairs may be specified.  If reg2 is
  2292.          the same as reg1, then reg2 and the parentheses may
  2293.          be omitted.
  2294. -    ENTRY=NO
  2295. 0        Requests that an ENTRY point not be generated.
  2296. -    BASE=NO
  2297. 0        Requests that a base register not be established.
  2298. -    SAVE=area            relexpri
  2299. 0        The address of the users register save area.
  2300. -    PACK=YES
  2301. 0        Registers are to be stored packed at 12 bytes after
  2302.          the start of the save area.
  2303. -    FORWARD=YES
  2304. 0        Specifies that the forward linking of save areas is
  2305.          to be performed.  Normally only backward linking is
  2306.          done.
  2307. 1                            93
  2308. -
  2309.      ID=identification    symbol or string or *
  2310. 0        Specifies an identifying character string to be
  2311.          assembled 4 bytes after the entry point.  * indicates
  2312.          that the entry name (or the CSECT name if there is
  2313.          no entry name) is to be used.
  2314. -
  2315.  NOTES:
  2316. 0    1.  The base register is BASER (see OSSETUP).
  2317. 0    2.  If SAVE=area is not specified, then no new save area
  2318.          will be established.
  2319. 0    3.  The generated code does not depend on register 15
  2320.          being loaded with the entry point address unless
  2321.          ID=identification is specified.
  2322. 1                            94
  2323. -
  2324.                OSEXIT - Generate OS return code
  2325. -
  2326. 0The OSEXIT macro will generate proper OS exit linkage code.
  2327. -
  2328.  <symbol> OSEXIT <(reg1,reg2)...>,<,SAVE=area><,LTR=reg>
  2329.                  <,PACK=YES><,RC=value><,FLAG=YES>
  2330.                  <,BRANCH=NO>
  2331. -
  2332.      reg1,reg2            registers
  2333. 0        Registers to be restored in LM format.  Any number
  2334.          of parenthesized pairs may be specified.  When reg2
  2335.          is the same as reg1, reg2 and the parentheses may be
  2336.          omitted.
  2337. -    SAVE=area            relexpri
  2338. 0        The address of the program's register save area.
  2339. -    LTR=reg              reg
  2340. 0        Requests that an LTR reg,reg be performed to set the
  2341.          condition code upon return.
  2342. -    PACK=YES
  2343. 0        Must be specified if PACK=YES was coded on the
  2344.          corresponding OSENTER macro.
  2345. -    RC=value             valuela
  2346. 0        Specifies a return code to be loaded into register
  2347.          15.
  2348. -    FLAG=YES
  2349. 0        Specifies that X'FF' is to be placed into the
  2350.          high-order byte of word 4 of the save area after the
  2351.          registers are restored.
  2352. 1                            95
  2353. -
  2354.      BRANCH=NO
  2355. 0        Specifies that the final branch to the return
  2356.          address is not to be generated.
  2357. -NOTE:
  2358. 0    If SAVE=area is not specified, then the registers are
  2359.      restored from the area pointed to by register 13.  Note
  2360.      that SAVE=0(STR) is perfectly acceptable.
  2361. 1                            96
  2362. -
  2363.                 OSSETUP - Set up OS linkage environment
  2364. -
  2365. 0The OSSETUP macro, used once at the start of the program
  2366.  (after macro definitions, but before any code or EQUs),
  2367.  defines register names and optionally defines DSECTS for
  2368.  certain OS control blocks.
  2369. -
  2370.  symbol OSSETUP <REGS=option><CBS=option>,<ctlblock=YES>...,
  2371.                 <R15=name><,R14=name><,R13=name><,BASER=name>
  2372.                 <,R1=name><,R0=name>
  2373. -
  2374.     symbol              1-8 characters (required)
  2375. 0       CSECT name for the module.
  2376. -   REGS=option         PLI or NO
  2377. 0       PLI is used to request PL/I-compatible register
  2378.         definitions, NO specifies that register
  2379.         definitions should not be included.
  2380. -   CBS=option             NO or ALL
  2381. 0       NO specifies that no control block DSECTS are to be
  2382.         generated, ALL specifies that all are.
  2383. 0   ctlblock=YES           name of a COMMON control block
  2384. 0       Specifies that the DSECT for the named control
  2385.         block is to be generated.
  2386. -
  2387.     R15=name             symbol
  2388. 0       Name to be used by OSENTER, OSEXIT and OSCALL to
  2389.         refer to register 15.  Default is RCR.
  2390. -   R14=name             symbol
  2391. 0       Name to be used by OSENTER, OSEXIT and OSCALL to
  2392.         refer to register 14.  Default is RTNR.
  2393. 1                            97
  2394. -
  2395.     R13=name             symbol
  2396. 0       Name to be used by OSENTER, OSEXIT and OSCALL to
  2397.         refer to register 13.  Default is SAVER.
  2398. -   BASER=name             symbol
  2399. 0       Register to be loaded by OSENTER as a base register.
  2400.         Default is BASER.
  2401. -   R1=name
  2402. 0       Name to be used by OSENTER, OSEXIT and OSCALL to
  2403.         refer to register 1.  Default is VR1.
  2404. -   R0=name
  2405. 0       Name to be used by OSENTER, OSEXIT and OSCALL to
  2406.         refer to register 0.  Default is VR0.
  2407. -
  2408.  NOTE:
  2409. 0    Register definitions are as follows:
  2410. 0                           Default         PLI
  2411.  Register   Absolute name   Symbolic name   Symbolic name
  2412. 0   0          R0               VR0           VR0
  2413.     1          R1               VR1           VR1
  2414.     2          R2               XRA, LOWR     XRA,HIGHR
  2415.     3          R3               XRB           XRB
  2416.     4          R4               XRC           XRC
  2417.     5          R5               XRD           XRD
  2418.     6          R6               XRE           XRE
  2419.     7          R7               XRF           XRF
  2420.     8          R8               XRG           XRG
  2421.     9          R9               XRH           XRH
  2422.    10          R10              XRI           XRI
  2423.    11          R11              XRJ           BASER,HIGHR
  2424.    12          R12              BASER, HIGHR  GCBR
  2425.    13          R13              SAVER         SAVER
  2426.    14          R14              RTNR          RTNR
  2427.    15          R15              RCR           RCR
  2428. 0    LOWR and HIGHR are for use with OSENTER and OSEXIT when
  2429.      specifying registers to be saved and restored.
  2430. 1                            98
  2431. -
  2432.        SCABBR - Define scanner abbreviations
  2433. -
  2434. 0SCABBR is used to specify abbreviations for keywords to be
  2435.  used in SCKW macros.
  2436. -
  2437.  SCABBR keyword,synonym1,...,synonymN
  2438. -
  2439.      keyword              1-14 characters or string
  2440. 0        Specifies the keyword to be abbreviated.
  2441. -   synonym1,...,synonymN 1-14 characters or string
  2442. 0        Specifies the abbreviations and/or synonyms for the
  2443.          keyword.
  2444. -
  2445.  NOTES:
  2446. 0    1.  SCABBR generates no code.
  2447. 0    2.  All SCABBR calls must be in the SCABBRS copy module
  2448.          in ascending order by keyword.
  2449. 1                            99
  2450. -
  2451.                   SCAN - Scan the next token
  2452. -
  2453. 0The SCAN macro scans the next token from the command string.
  2454.  An optional table of SCKW macros can be used to specify
  2455.  tests to be performed on the token or its following
  2456.  parameter.
  2457. -
  2458.  <symbol> SCAN <table-address><,BRANCH=NO><,LIMIT=length>
  2459.                <,SCT=sct-address>
  2460. -
  2461.      table-address        addrla (passed in VR1) or *
  2462. 0        Points to a list of SCKW macros.  Each macro
  2463.          specifies a test to be applied to the token or the
  2464.          parameter which follows it.
  2465. 0        If * is specified, the SCAN macro must be followed
  2466.          by the SCKW list.  A SCANEND macro defines the place
  2467.          where execution resumes.
  2468. -    BRANCH=NO            conditional form allowed
  2469. 0        This operand is valid only if a table address
  2470.          is specified.  It instructs the scanner not to
  2471.          branch to the address given in the SCKW macro if the
  2472.          test is successful, but instead to return following
  2473.          the SCAN macro with the address of the exit routine
  2474.          in VRE.
  2475. -    LIMIT=length        valuela (passed in VR0)
  2476. 0        Specifies a maximum length for the token when no
  2477.          table is specified.  The error exit is taken if the
  2478.          length is exceeded.
  2479. -    SCT=sct-address      addrla (passed in VRF)
  2480. 0        Address of the scan control table (SCT).  Must be
  2481.          specified if the SCT is not addressable.
  2482. 1                            100
  2483. -
  2484.  RETURNS:
  2485. 0    1.  If a table address is not given, control is returned
  2486.          following the macro with:
  2487. 0           VR0 containing the length of the scanned token
  2488. 0           VR1 pointing to the token.  An LTR is done on VR0
  2489.                 before the return is given.  A length of zero
  2490.                 means that there were no more tokens.
  2491. 0           VRF pointing to an area containing the token
  2492.                 padded with blanks to a length of &LSCAN.
  2493. -
  2494.      2.  If a table address is specified the token is
  2495.          subjected to a series of tests, as specified by the
  2496.          SCKW macros.  If the tests called for in an SCKW
  2497.          macro succeed, control is given to an address given
  2498.          in the macro.  Control is returned following the
  2499.          SCAN macro only when the string being scanned is
  2500.          exhausted.
  2501. 0        Registers are set as follows when SCKW exit routines
  2502.          are entered:
  2503. 0           VR0  - length of token or parameter
  2504.             VR1  - location of token or parameter
  2505.             RTNR - a return address to continue the scan
  2506.                    with the next token.
  2507.             VRF  - setting varies for different SCKW macros.
  2508.             VRE  - setting varies for different SCKW macros.
  2509. -
  2510.  NOTE:
  2511. 0The scanner determines tokens by the following rules.
  2512. 01.  <letter>::= letterdigitdegreeplus-minus
  2513.                   .$@_!<>%?#
  2514. 0    <slash>::= /  +  -  ^  *  :  ;  &  <vertical-bar>
  2515. 0    <string-delimiter> ::= '  "  (  )
  2516. 0    <blank>::=  blank  =  ,
  2517. 0    <delimiter>::= <slash>  <string-delimiter>
  2518.                     <all other characters>
  2519. 1                            101
  2520. -
  2521.  2.  The next token consists of the <letter>s from the
  2522.      current scan point up to the next <delimiter>.
  2523. 03.  Quoted or parenthesized strings are terminated only by
  2524.      the occurence of the appropriate quote or parenthesis.
  2525. 04.  Delimiters, except for the following, also form tokens
  2526.      by themselves in the sense that they terminate the scan
  2527.      for the previous token, and are treated as a token of
  2528.      length 1 when the next scan is given.  The exceptions
  2529.      are:
  2530. 0       <blank> - these 3 symbols are included in a token
  2531.                   only when they are part of a quoted or
  2532.                   parenthesized string.
  2533. 0         ;     - scan never crosses or returns a ";" except
  2534.                   when it is part of quoted or parenthesized
  2535.                   strings.
  2536. 0         (     - begins a parenthesized string
  2537. 0         )     - must balance with preceding "("
  2538. 0       ' and " - begin and end quoted strings.  Doubled
  2539.                   instances of either character within a
  2540.                   string framed with the same character are
  2541.                   passed as though they were <letter>s.
  2542. 05.  The symbols * - & receive special treatment because of
  2543.      their occurence in DSNAMES.  If SCTYPE=0 is in effect
  2544.      they are handled as specified above.  If SCTYPE=1 is in
  2545.      effect they are treated as members of the class <letter>
  2546.      and thus do not act as delimiters.
  2547. 06.  SCTYPE 2 is the same as SCTYPE 0, except that parentheses
  2548.      are treated as individual delimiters.
  2549. 07.  SCTYPE 3 is used for scanning JCL.
  2550. 1                            102
  2551. -
  2552.                   SCBACK - Back up one SCAN
  2553. -
  2554. 0SCBACK backs up the scanners pointer and length holder to
  2555.  the values they held before the most recent SCAN or SCKW
  2556.  exit.
  2557. -
  2558.  <symbol> SCBACK <SCT=sct-address>
  2559. -    SCT=sct-address      relexpri
  2560. 0        Address of the scan control table (SCT).  Must be
  2561.          specified if the SCT is not addressable.
  2562. 1                            103
  2563. -
  2564.               SCDONE - Test if tokens remain to be scanned
  2565. -
  2566. 0SCDONE tests to see if any further tokens remains to be
  2567.  scanned.  If any exist, the SCERROR routine is entered.
  2568. -
  2569.  <symbol> SCDONE <SCT=sct-address>
  2570. -    SCT=sct-address      relexpri
  2571. 0        Address of the scan control table (SCT).  Must be
  2572.          specified if the SCT is not addressable.
  2573. 1                            104
  2574. -
  2575.               SCDQUOTE - Dequote a quoted string
  2576. -
  2577. 0SCDQUOTE strips quotes from around a string and changes
  2578.  internal doubled quotes to single quotes.
  2579. -
  2580.  <symbol> SCDQUOTE loc,len
  2581. -
  2582.      loc                  addrla (passed in VR1)
  2583. 0        Location of the string to be dequoted.
  2584. -    len                  valuela (passed in VR0)
  2585. 0        Length of the string to be dequoted.
  2586. -
  2587.  RETURNS:
  2588. 0    VR1 =  location of the dequoted string
  2589. 0    VR0 =  length of the dequoted string
  2590. -
  2591.  NOTES:
  2592. 0    1.  If the string is not quoted, no action is taken.
  2593. 0    2.  The string is overlayed by the dequoted string.
  2594. 1                            105
  2595. -
  2596.       SCERROR - Specify error handling routine for SCAN
  2597. -
  2598. 0Specifies an error routine to be entered if any of the
  2599.  following occur:
  2600. 0   CONDITION:                             VRF CONTENTS:  NAME:
  2601. 0. unbalanced quotes                            0         SCTCUBQ
  2602. 0. unbalanced parentheses                       4         SCTCUBP
  2603. 0. an integer exceeds the
  2604.    limit specified on the SCKW macro            8         SCTCIXM
  2605.    (VRE contains the limit)
  2606. 0. an ordinal exceeds the limit specified
  2607.    on the SCKW macro (VRE contains the limit)  12         SCTCOXM
  2608. 0. a line number exceeds the limit specified
  2609.    on the SCKW macro (VRE contains the limit)  16         SCTCLNXM
  2610. 0. a token which should have been a
  2611.    positive integer or ordinal was zero        20         SCTCZNG
  2612. 0. a token exceeds the maximum
  2613.    length specified in the SCKW limit          24         SCTCLXM
  2614.    (VRE contains the limit)
  2615. 0. an expected parameter is missing            28         SCTCUE
  2616. 0. A or V type address constant in SCKW        32         SCTCZBV
  2617.    contains zero
  2618. 0. SCDONE issued when tokens remain to be      36         SCTCSCD
  2619.    scanned
  2620. 0. hex number has invalid format               40         SCTCBXN
  2621. 0. hex string has invalid format               44         SCTCBXS
  2622. 0. required quotes were missing                48         SCTCNQ
  2623. 0. required parentheses were missing           52         SCTCNP
  2624. 0. integer has invalid format                  56         SCTCBINT
  2625. 0. ordinal has invalid format                  60         SCTCBORD
  2626. 0. line number has invalid format              64         SCTCBLN
  2627. 0Symbols for the error codes are defined in the SCT DSECT.
  2628. 1                            106
  2629. -
  2630.  VR1 will contain the address of the offending token and VR0
  2631.  the length.
  2632. -
  2633. 0<symbol> SCERROR <NEW=new-routine><,OLD=new-reg>
  2634.                   <NEWPARM=new-parm>,<OLDPARM=old-reg>,
  2635.                   <,SCT=sct-address>
  2636. -
  2637.      new-routine          addrla
  2638. 0        The address of the error handling routine to be
  2639.          called.
  2640. -    new-reg              reg
  2641. 0        A register which will be set to the address of the
  2642.          prior error handling routine.  This permits
  2643.          reinstating the old value.  Zero indicates there was
  2644.          no routine in effect.
  2645. -    NEWPARM=new-parm     addrla
  2646. 0        A parameter for the error handling routine.
  2647. -    OLDPARM=old-reg      reg
  2648. 0        A register which will be set to the value of the prior
  2649.          parameter for the error handling routine.
  2650. -    SCT=sct-address      relexpri
  2651. 0        Address of the scan control table (SCT).  Must be
  2652.          specified if the SCT is not addressable.
  2653. -NOTE:
  2654. 0    Since there is no register available to pass the parameter to the
  2655.      error handling routine, the routine must access the parameter with
  2656.      the OLDPARM option of SCERROR.
  2657. 1                            107
  2658. -
  2659.                   SCEXTRA - Test if more tokens exist
  2660. -
  2661. 0SCEXTRA is used to test if additional tokens remain to be
  2662.  scanned.
  2663. -
  2664.  <symbol> SCEXTRA
  2665. -
  2666.  RETURNS:
  2667. 0    CC = Z   no more tokens
  2668.           NZ  more tokens exist
  2669. 1                            108
  2670. -
  2671.                   SCINIT - Set SCAN pointers
  2672. -
  2673. 0Directs the scanner to reset its pointer and length holder.
  2674. -
  2675.  <symbol> SCINIT pointer,length<,SCT=sct-address>
  2676. -
  2677.      pointer              addrla
  2678. 0        String pointer.
  2679. -    length               addrla
  2680. 0        Length of string.
  2681. -    SCT=sct-address      relexpri
  2682. 0        Address of the scan control table (SCT).  Must be
  2683.          specified if the SCT is not addressable.
  2684. 1                            109
  2685. -
  2686.               SCKW - Specify a SCAN table entry
  2687. -
  2688. 0<symbol> SCKW  <keywords>,address<,option-list>
  2689.                 <,LIMIT=limit><,CODE=code>
  2690. -
  2691.      keywords             string, or a parenthesized list of
  2692.                           strings (quotes are optional)
  2693. 0        The keyword or keywords to match against the token.
  2694.          Abbreviations will be checked also.
  2695. 0        If the keyword field is present, then any options
  2696.          specified (see below) must be verified or the
  2697.          SCERROR routine will be entered. If the keyword is
  2698.          omitted, then the option tests have a different
  2699.          meaning:  failing the test merely causes the scanner
  2700.          to try the next SCKW.  (Exception:  Unwanted zero
  2701.          values or exceeding the limit always cause
  2702.          an entry to SCERROR.)
  2703. -    address              relexpra or *
  2704. 0        Branch point to be taken if test succeeds (see
  2705.          also option BRANCH on the SCAN macro).  If * is
  2706.          specified, the SCANEND address is used.
  2707. -    option-list          one or more of the following,
  2708.                           enclosed in parentheses and
  2709.                           separated by commas
  2710. 0        P  - a parameter should follow the keyword; verify
  2711.               the format of the parameter with any required
  2712.               tests and enter the routine with VR1 pointing
  2713.               to the parameter and VR0 containing its
  2714.               length.  If the parameter fails the test, the
  2715.               SCERROR routine is entered with the appropriate
  2716.               code.  This option only has meaning when the
  2717.               keyword field is present.
  2718. 0        I  - the token (or parameter following the keyword
  2719.               if "P" is specified) should be a non-negative
  2720.               integer; if so place the binary value in VRF
  2721.               and enter the routine; else the test fails.
  2722.               (the value is tested against the specified
  2723.               "limit" and the SCERROR routine entered if it
  2724.               is too large.)
  2725. 1                            110
  2726. -
  2727.          PI - same as "I" except a value of zero causes the
  2728.               test to fail and the SCERROR routine to be
  2729.               entered.
  2730. 0        O  - same as "I" except the test is for an ordinal.
  2731. 0        PO - same as "PI" except the test is for a positive
  2732.               ordinal.
  2733. 0        LN - same as "I" except the test is for a line
  2734.               number.
  2735. 0       PLN - same as "PI" except the test is for a positive
  2736.               line number.
  2737. 0        QS - the token (or parameter if "P" is specified)
  2738.               should be a quoted string; if so, strip
  2739.               quotes, place as much as will fit into a
  2740.               16-byte work area left justified with trailing
  2741.               blanks, and enter the routine. (VRF points to
  2742.               the work area.) else the test fails.  If a
  2743.               limit is given, it applies to the length of
  2744.               the string.
  2745. 0       OQS - optionally quoted string; same as "Q" except
  2746.               the user may omit the quotes.
  2747. 0        PS - similar to QS, except the test is for a
  2748.               string enclosed in parentheses.
  2749. 0       OPS - similar to OQS, except the test is for a
  2750.               string enclosed in parentheses.
  2751. 0        J  - scan table transfer; scanner will take the next
  2752.               SCKW from the specified address if the test
  2753.               succeeds.  If no test is specified the
  2754.               transfer is unconditional.  If no transfer
  2755.               address is specified a return following the
  2756.               previous transfer is performed.  If this option
  2757.               is used in conjunction with the keyword field
  2758.               the scanner will scan off the next token
  2759.               before effecting the transfer to the new SCKW
  2760.               table.
  2761. 0        SC - specify the type of adcon to generate (S, A or
  2762.          AC   V); the default is S with a WYLBUR overlay, A
  2763.          VC   otherwise.  If the SCKW macro is within a
  2764.               WYLBUR overlay then AC and VC generate a WADCON.
  2765. 0       SCI - Specifies that an S constant pointing at a
  2766.               word containing an address is to be generated.
  2767. 1                            111
  2768. -
  2769.          B  - back up the scan pointers to the values they
  2770.               held at the time the last SCKW exit routine
  2771.               was entered (or when the SCAN was issued if no
  2772.               SCKW exit has been entered for the current
  2773.               SCAN).
  2774. 0        C  - use command abbreviations as well as normal abbreviations.
  2775. 0    limit                constant which can be used in a DC
  2776.                           (length of 1, 2 or 4 must be
  2777.                           explicitly specified)
  2778. 0        Sets a maximum value for integer, ordinal and line
  2779.          number parameters and the length of a quoted string.
  2780.          See SCERROR macro.
  2781. -    code                 constant which can be used in a DC
  2782.                           (length of 1, 2 or 4 must be
  2783.                           explicitly specified)
  2784. 0        Sets a value to be placed in VRE when the routine is
  2785.          entered.  See note 3.
  2786. -
  2787.  NOTES:
  2788. 0    1.  SCKW  ,addr         standard way to end a table
  2789.                              of SCKWs.
  2790. 0    2.  SCKW  ,addr,B       handy way to back up and exit
  2791.                              if you didn't find what you
  2792.                              wanted.
  2793. 0    3.  SCKW X,XORY,CODE=AL1(1)  illustrates use of CODE.
  2794.          SCKW Y,XORY,CODE=AL1(2)
  2795. 0    4.  I, PI, QS and OQS allow hex integers and strings.  Hex
  2796.          strings will be converted to internal format before
  2797.          the routine is called.  Note that no space is
  2798.          permitted after the #.
  2799. 0    5.  The scanner can modify the source string if QS,
  2800.          OQS, PS or OPS is specified.
  2801. 0    6.  When P is specified without I, PI, O, PO, LN, or PLN
  2802.          a limit on length may be specified.
  2803. 1                            112
  2804. -
  2805.               SCLAST - Read saved SCAN pointers
  2806. -
  2807. 0Returns location and length of last SCANned token or
  2808.  parameter in registers VR1 and VR0 respectively.  Can be
  2809.  used in preparation of error messages.
  2810. -
  2811.  <symbol> SCLAST <SCT=sct-address>
  2812. -
  2813.      SCT=sct-address      relexpri
  2814. 0        Address of the scan control table (SCT).  Must be
  2815.          specified if the SCT is not addressable.
  2816. -
  2817.  NOTE:
  2818. 0    SCLAST is reset by a SCINIT or SCPOP.
  2819. 1                            113
  2820. -
  2821.           SCPOP - Reset SCAN pointers from the stack
  2822. -
  2823. 0Resets the SCAN pointers from the stack (where they were
  2824.  stored by an earlier SCPUSH macro.
  2825. -
  2826.  <symbol> SCPOP <SCT=sct-address>
  2827. -
  2828.      SCT=sct-address      relexpri
  2829. 0        Address of the scan control table (SCT).  Must be
  2830.          specified if the SCT is not addressable.
  2831. 1                            114
  2832. -
  2833.           SCPUSH - Push SCAN pointers into the stack
  2834. -
  2835. 0Similar to SCTELL, but places the pointer and length into
  2836.  the stack instead of returning them to the caller.
  2837. -
  2838.  <symbol> SCPUSH <SCT=sct-address>
  2839. -
  2840.      SCT=sct-address      relexpri
  2841. 0        Address of the scan control table (SCT).  Must be
  2842.          specified if the SCT is not addressable.
  2843. 1                            115
  2844. -
  2845.                     SCRTN - Return to scanner
  2846. -
  2847. 0SCRTN is used to return to the scanner from a processing
  2848.  routine so that further scanning can be performed.
  2849. -
  2850.  <symbol> SCRTN <table><,RTNR=NO><,SCT=sct-address>
  2851. -
  2852.      table                addrla (passed in VR1)
  2853. 0        Address of a new routine table.  May be specified as
  2854.          * in the range of a SCAN * to return to the routine
  2855.          table which follows the SCAN *.
  2856. -    RTNR=NO
  2857. 0        Specifies that the return address is not in RTNR.
  2858. -    SCT=sct-address      relexpri
  2859. 0        Address of the SCT.  The SCT must be available if
  2860.          table or RTNR=NO is used.  Default is SCTSTART.
  2861. 1                            116
  2862. -
  2863.                  SCSEMI - Step over semicolon
  2864. -
  2865.  SCSEMI advances the scanner over a semicolon.
  2866. -
  2867.  <symbol> SCSEMI <SCT=sct-address>
  2868. -
  2869.      SCT=sct-address      relexpri
  2870. 0        Address of the scan control table (SCT).  Must be
  2871.          specified if the SCT is not addressable.
  2872. -
  2873.  NOTE:
  2874. 0    If the scanner is not positioned at a semicolon, no
  2875.      action is taken.
  2876. 1                            117
  2877. -
  2878.                   SCTELL - Read scan pointer
  2879. -
  2880. 0SCTELL returns the location and length of the string
  2881.  remaining to be scanned.
  2882. -
  2883.  <symbol> SCTELL <SCT=sct-address>
  2884. -
  2885.      SCT=sct-address      relexpri
  2886. 0        Address of the scan control table (SCT).  Must be
  2887.          specified if the SCT is not addressable.
  2888. -
  2889.  RETURNS:
  2890. 0    VR1 =  location of first byte in string remaining to
  2891.             be scanned
  2892. 0    VR0 =  >0  length of string remaining to be scanned
  2893.            <=0  no string remains to be scanned (VR1 not
  2894.                 valid)
  2895. 1                            118
  2896. -
  2897.                SCTYPE - Switch SCAN delimiters
  2898. -
  2899. 0Tells the scanner which TRT table to use for subsequent
  2900.  calls. Two tables have been defined.
  2901. -
  2902.  <symbol>  SCTYPE  <NEW=new-tbl-id><,OLD=current-tbl-holder>
  2903.                    <,SCT=sct-address>
  2904. -
  2905.      new-tbl-id           valuela
  2906. 0        The following values are accepted:
  2907. 0        0 - use the standard table as defined in the notes
  2908.              to the SCAN macro.
  2909. 0        1 - use a table which considers * & and - as
  2910.              <letter>s.  This should be used for scanning
  2911.              dsnames (see SCAN macro).
  2912. 0        2 - use a table which is the same as for 0 except
  2913.              that parentheses are individual delimiters.
  2914. 0        3 - use a table suitable for scanning JCL.
  2915. 0        4 - use a table suitable for scanning command procedure
  2916.              statements.  Parentheses, comma and equal sign are
  2917.              all individual delimiters.
  2918. -    current-tbl-holder   reg
  2919. 0        The macro saves the current scan table type in the
  2920.          indicated register before returning control.  This
  2921.          permits easy reinstatement of the previous table.
  2922. -    SCT=sct-address      relexpri
  2923. 0        Address of the scan control table (SCT).  Must be
  2924.          specified if the SCT is not addressable.
  2925. 1                            119
  2926. -
  2927.      SIM370 - Specify address of 370 simulation work area
  2928. -
  2929. 0SIM370 is used to specify or change the address of the work
  2930.  area for the 370 simulation instructions.  The work area is
  2931.  4 words initialized to zero.
  2932. -
  2933.  <symbol> SIM370 <name>,<CLEAR=YES>
  2934. -
  2935.      name                 symbol
  2936. 0        The name of the work area.  Omit if 370 simulation
  2937.          instructions are not allowed.
  2938. -    CLEAR=YES
  2939. 0        Specifies that the area is to be cleared to zeros.
  2940. 1                            120
  2941. -
  2942.  STRIP - Strip leading and/or trailing characters from string
  2943. -
  2944.  The STRIP macro removes leading and/or trailing characters
  2945.  from a string.
  2946. -
  2947.  <symbol> STRIP loc-reg,len-reg<,work-reg><,TYPE=symbol>
  2948.                 <,NULL=NO><,ZERO=NO><,LABEL=symbol><,FILL=char>
  2949.                 <,FILADDR=byte>
  2950. -
  2951.      loc-reg              preg
  2952. 0        Specifies the starting address of the string to be
  2953.          stripped.
  2954. -    len-reg              reg
  2955. 0        Specifies the length of the string to be stripped.
  2956.          After the termination of the macro, this register
  2957.          will contain the new length of the stripped string.
  2958. -    work-reg             preg
  2959. 0        Provides a work register to be used in the search.
  2960.          More efficient code may be generated if this
  2961.          register is provided.
  2962. -    TYPE=symbol          LEFT, RIGHT, or BOTH
  2963. 0        Specifies elimination of leading (LEFT) or trailing
  2964.          (RIGHT) characters, or both (BOTH).  Default is RIGHT.
  2965. -    NULL=NO
  2966. 0        The NO condition specifies that the resulting string
  2967.          will never be 0.  More efficient code may be
  2968.          generated if this option is specified.
  2969. -    ZERO=NO
  2970. 0        The NO condition specifies that the value in the len
  2971.          register will never be 0.  More efficient code may
  2972.          be generated if this option is specified.
  2973. 1                            121
  2974. -
  2975.      LABEL=symbol         relexpri
  2976. 0        The location to receive control if the resulting
  2977.          string has a length of zero.
  2978. 0    FILL=char            cexpr8
  2979. 0        Used to specify a character other than zero to be
  2980.          stripped.
  2981. 0    FILADDR=byte         relexpri
  2982. 0        Used to specify the location of the character
  2983.          to be stripped.  May not be used with FILL.
  2984. -RETURNS:
  2985. 0    loc-reg =  location of stripped string
  2986. 0    len-reg =  length of stripped string
  2987. 1                            122
  2988. -
  2989.  SYSBIT - Test for the presence of a 1 bit and set or reset it
  2990. -
  2991. 0The SYSBIT macro will test a byte and set the condition code
  2992.  to NZ if the specified bit is on and Z if it is not on. It
  2993.  will optionally set the bit on or off.
  2994. -
  2995.  <symbol> SYSBIT byte-addr,bit-specification<,SET=option>
  2996.                   <,RESET=option>
  2997. -
  2998.      byte-addr            relexpri
  2999. 0        Specifies the address of the byte to be tested or
  3000.          set.
  3001. -    bit-specification    cexpr8
  3002. 0        Specifies the bit to be set/reset and tested.
  3003. -    SET=option           YES or ONLY
  3004. 0        The bit should be set on, if SET=YES, the condition
  3005.          code should be set based on the status of the bit
  3006.          before setting it on.
  3007. -    RESET=option         YES OR ONLY
  3008. 0        Same as YES, but the bit is set off.
  3009. 1                            123
  3010. -
  3011.                  SYSCMP - Compare expressions
  3012. -
  3013. 0The SYSCMP macro will generate an error statement if the
  3014.  specified relation is not true.
  3015. -
  3016.  <symbol> SYSCMP expression1,relation,expression2
  3017.                   <,MSG=text>
  3018. -
  3019.      expression1          previously defined cexpr24
  3020. -    relation             LT,NLT,LE,NLE,EQ,NEQ,GE,NGE,GT,NGT
  3021. -    expression2          previously defined cexpr24
  3022. -    MSG=text             string
  3023. 0        The quoted string will appear in an MNOTE
  3024.          immediately preceding the generated statement
  3025.          whether or not an error was created.  If no MSG is
  3026.          provided, then a system generated message will be
  3027.          supplied.
  3028. 1                            124
  3029. -
  3030.            SYSKWT - Check for valid macro keyword
  3031. -
  3032. 0<symbol> SYSKWT name,value,legal-list<,COND=option><,NULL=NO>
  3033. -
  3034.      name                 name of parameter to be checked
  3035. 0        Specifies the name of the keyword being checked
  3036.          (used for error message).
  3037. -    value                the macro parameter to be checked
  3038. -    legal-list           list of legal values in
  3039.                           parentheses
  3040. -    COND=option          NO or parenthesized list of legal
  3041.                           values
  3042. 0        The conditional form of the keyword is not allowed if
  3043.          NO is specified or if a list is specified and value
  3044.          is not in the list.
  3045. -    NULL=NO
  3046. 0        The parameter may not be null.
  3047. 1                            125
  3048. -
  3049.                   SYSLBL - Generate a label
  3050. -
  3051. 0The SYSLBL generates a DS 0H if there is a symbol in the
  3052.  label field.
  3053. -
  3054.  <symbol> SYSLBL <TYPE=alignment>
  3055. -
  3056.      TYPE=alignment        X, H, F or D
  3057. 0        Specifies the alignment.  H is the default.
  3058. 1                            126
  3059. -
  3060.                SYSLR - Load register with value
  3061. -
  3062. 0The SYSLR macro provides a generalized mechanism for loading
  3063.  a value into a register.
  3064. -
  3065.  <symbol> SYSLR reg,value<,TYPE=xxx><,NULL=value><,OP=opcode>
  3066.                  <,SELECT=(values)><,ERR='msg'><,LTR=YES>
  3067.                  <,STRLEN=string-length>
  3068. -
  3069.      reg                  reg
  3070. 0        Denotes the register to be loaded.
  3071. -    value                valuela or L:expr, LA:expr,
  3072.                           LH:expr, LOADx:expr (x may be B, H,
  3073.                           LH, P, F, LF) or string
  3074. 0        Specifies the value to be loaded into the register.
  3075.          Using L:, LA:, or LH: specifies the opcode to be
  3076.          used in the loading.  LOADx implies non-aligned
  3077.          loading, where LOADLH implies clearing the high
  3078.          order bytes rather than propagating the sign.
  3079. -    TYPE=xxx             any nonblank value, conditional
  3080.                           form allowed
  3081. 0        Requests that the register be complemented.
  3082. -    NULL=value           anything valid for the value
  3083.                           parameter
  3084. 0        Specifies a value to be used if the value operand is
  3085.          null.  The default is NULL=0.
  3086. -    OP=opcode            L, LA, LH, LOADx, LITY, LITA
  3087. 0        Specifies the op code to be used for the load.  The
  3088.          default is LA.  LITY, LITA mean to load from a
  3089.          literal Y or A constant, respectively.
  3090. 1                            127
  3091. -
  3092.      SELECT=(values)      list of options in parentheses
  3093. 0        Specifies keywords that are valid for the TYPE=
  3094.          parameter.  If TYPE= is not one of these, the
  3095.          complementing will not be performed.
  3096. -    ERR='msg'            string
  3097. 0        Error message to be issued if the value is null.
  3098. -    LTR=YES
  3099. 0        Specifies that an LTR is to be performed on the
  3100.          register after it is loaded.
  3101. -    STRLEN=string-length     cexpr8
  3102. 0        Specifies the length when string notation is used.
  3103. 1                            128
  3104. -
  3105.                SYSLST - Load and store a value
  3106. -
  3107. 0<symbol> SYSLST location<,NEW=value><,OLD=reg><,LOAD=opcode>
  3108.                   <,STORE=opcode><,OP=opcode><,REG=reg>
  3109. -
  3110.      location             relexpri
  3111. 0        Address to be inspected.
  3112. -    NEW=value            valuela
  3113. 0        Specifies a new value to be placed into the
  3114.          location.
  3115. -    OLD=reg              reg
  3116. 0        Specifies a register to receive the old value.
  3117. -    LOAD=opcode          L, LH or LOADB
  3118. 0        Specifies the instruction to be used to load from
  3119.          the location.  Default is L.
  3120. -    STORE=opcode         ST, STH or STC
  3121. 0        Specifies the instruction to be used to store into
  3122.          the location.  Default is ST.
  3123. -    OP=opcode            LA, L, LH or LOADx
  3124. 0        Specifies the opcode to be used to load a new value.
  3125.          Default is LA.
  3126. -    REG=reg              reg
  3127. 0        Specifies the work register to be used.  The default is RTNR.
  3128. 1                            129
  3129. -
  3130.            SYSLV - Load values into a register
  3131. -
  3132. 0<symbol> SYSLV register,value1,option1,select1...
  3133.                 valueN,optionN,selectN
  3134. -
  3135.      value1...valueN      integer between 1 and 4095
  3136. 0        Specifies a value to be loaded into the register.
  3137. -    option1...optionN    anything, conditional form allowed
  3138. 0        If non-null, specifies that the associated value is
  3139.          to be loaded.
  3140. -    select1...selectN    list of options in parentheses
  3141. 0        Specifies the keywords for which the associated
  3142.          value is to be loaded.  Limits the effect of
  3143.          option1...optionN.
  3144. -
  3145.  NOTES:
  3146. 0    1.  The register is set to zero if no values are loaded.
  3147. 0    2.  If more than one value is selected to be loaded, the
  3148.          sum of all of them is loaded.  The sum must be less
  3149.          than or equal to 4095.
  3150. 1                            130
  3151. -
  3152.              SYSPRED - Generate code to test predicate
  3153. -
  3154. 0SYSPRED is used to generate code to branch based on the
  3155.  truth or falsity of a predicate specification.
  3156. -
  3157.  <symbol> SYSPRED label,<BRANCH=FALSE>,
  3158.                   IF=(opcode,operand,operand,cc,
  3159.                   <andor,opcode,operand,operand>...)
  3160. -
  3161.      label                 symbol
  3162. 0        Label to branch to if the predicate is true.
  3163. 0    BRANCH=FALSE
  3164. 0        Specifies that the branch is to be taken if the
  3165.          predicate is false rather than true.
  3166. 0    opcode
  3167. 0        A valid operation code
  3168. 0    operand
  3169. 0        An operand for the specified opcode.
  3170. 0    cc                    Z, NZ, M, NM, P, NP, O, NO,
  3171.                            E, NE, L, NL, H, NH
  3172. 0        The condition code which means "true".
  3173. 0    andor                 AND or OR
  3174. 0        Used to specify how multiple instructions are
  3175.          to be combined.
  3176. 1                            131
  3177. -
  3178.                  SYSQS - Locate quoted string
  3179. -
  3180. 0The SYSQS macro will load the beginning address and length
  3181.  of a string into the specified registers.
  3182. -
  3183.  <symbol> SYSQS loc-reg,len-reg,location,length
  3184.                 <,NULL=(loc,len)><,TYPEA=option>
  3185.                 <,TYPEL=option><,SELECTA=options>
  3186.                 <,SELECTL=options>
  3187. 0                         or
  3188. -<symbol> SYSQS loc-reg,len-reg,string,<length>
  3189.                 <,NULL=(loc,len)><,TYPEA=option>
  3190.                 <,TYPEL=option><,SELECTA=options>
  3191.                 <,SELECTL=options>
  3192. -
  3193.      loc-reg              reg
  3194. 0        Specifies the register to contain the starting
  3195.          address of the string.
  3196. -    len-reg              reg
  3197. 0        Specifies the register to contain the length of the
  3198.          string.
  3199. -    location             addrla
  3200. 0        Provides the address of the string.
  3201. -    string               string
  3202. 0        Provides the literal string.
  3203. -    length               valuela or cexpr8 depending on use
  3204.                           of location or string
  3205. 0        Provides the length of the string.  If the location
  3206.          option is used, this parameter must be supplied.  If
  3207.          the string option is used, it is optional.
  3208. 1                            132
  3209. -
  3210.      TYPEA=option         anything not null, conditional
  3211.                           form allowed
  3212. 0        Specifies that the address register is to be
  3213.          complemented.
  3214. -    TYPEL=option         anything not null, conditional
  3215.                           form allowed
  3216. 0        Specifies that the length register is to be
  3217.          complemented.
  3218. -    NULL=(loc,len)       anything valid for location or
  3219.                           string and length
  3220. 0        Supplies the location and length to be returned if
  3221.          the loc,len parms are null.
  3222. -    SELECTA=options      list of options in parentheses
  3223. 0        Specifies which options TYPEA is effective for.
  3224. -    SELECTL=options      list of options in parentheses
  3225. 0        Specifies which options TYPEL is effective for.
  3226. 1                            133
  3227. -
  3228.                   SYSRNG - Test range of integer
  3229. -
  3230. 0SYSRNG issues an MNOTE if the integer supplied exceeds
  3231.  the specified bounds.
  3232. -
  3233.  <symbol> SYSRNG name,integer,relation1,value1,...,
  3234.                  relationN,valueN
  3235. -
  3236.      name                 unquoted string
  3237. 0        An identifying name to be used in the MNOTE.
  3238. -    integer              unsigned integer or SETA symbol
  3239. 0        The integer to be tested.
  3240. -    relationI            LT,LE,EQ,GE,GT,NLT,NLE,NEQ,NGE,
  3241.                           NGT or MULT
  3242. 0        A relation which must be satisfied (MULT means
  3243.          multiple of).
  3244. -    valueI               integer or SETA symbol
  3245. 0        Second operand of the relation.
  3246. 1                            134
  3247. -
  3248.              SYSTANDB - Generate test and branch
  3249. -
  3250. 0SYSTANDB is used to generate a test and branch sequence in
  3251.  support of the conditional form of macro operands.
  3252. -
  3253.  <symbol> SYSTANDB (option,testop,testopnd,testopnd,<testcc>),
  3254.                    instlen,instop,instopnd,instopnd,<BC=N>
  3255. -
  3256.      option
  3257. 0        Macro option, not used by SYSTANDB.
  3258. 0    testop                valid opcode
  3259. 0        Operation code for the test instruction.
  3260. 0    testopnd
  3261. 0        Operand for the test instruction
  3262. 0    testcc                Z, NZ, M, NM, P, NP, O, NO, E, NE,
  3263.                            L, NL, H, NH
  3264. 0        Condition code on which a branch around the generated
  3265.          instruction is to be performed.
  3266. 0     instlen              2, 4 or 6
  3267. 0        Length of the instruction to be branched around.
  3268. 0     instop               valid opcode
  3269. 0        Instruction to be executed if test is true.
  3270. 0     instopnd
  3271. 0        Operands for instop.
  3272. 0     BC=N
  3273. 0        Specifies that the branch is to be performed
  3274.          if the specified condition code is not set by
  3275.          the test instruction.
  3276. 1                            135
  3277. -
  3278.  NOTE:
  3279. 0    Generated code is of the form
  3280. 0        testop      testopnd,testopnd
  3281.          Btestcc     *+4+instlen
  3282.          instop      instopand,instopand
  3283. 1                            136
  3284. -
  3285.        TIME128 - Return time since last 128 day period
  3286. -
  3287. 0The TIME128 macro will return in VR0 the time in 100th of a
  3288.  second from the beginning of the nearest 128 day period.
  3289.  VR1 will contain the date is OS form.
  3290. -
  3291.  <symbol> TIME128
  3292. -
  3293.  RETURNS:
  3294. 0    VR0 =  time in 100th of a second from beginning of
  3295.             last 128 day period
  3296. 0    VR1 =  date in OS format
  3297. 1                            137
  3298. -
  3299.                  TIOTSRCH - Locate TIOT entry
  3300. -
  3301. 0The TIOTSRCH macro will locate a TIOT entry for a
  3302.  specified DDNAME.
  3303. -
  3304.  <symbol> TIOTSRCH reg1,reg2,ddname<,UCB=NO>
  3305. -
  3306.      reg1                 preg
  3307. 0        Work register.
  3308. 0    reg2                 reg
  3309. 0        Work register.
  3310. -    ddname               relexpri
  3311. 0        The address of the 8 byte area containing the ddname
  3312.          (left justified and padded with blanks).
  3313. -    UCB=NO
  3314. 0        Requests that the address of the TIOT entry for the
  3315.          ddname rather than the UCB address be returned.
  3316. -
  3317.  RETURNS:
  3318. 0    The address of the requested TIOT or UCB entry will be
  3319.      returned in reg1.  The condition code is set to NZ if
  3320.      the DDname is found, Z otherwise.
  3321. 1                            138
  3322. -
  3323.       UAOP - Generate instruction with unaligned operand
  3324. -
  3325. 0UAOP is used to generate an RX instruction with an unaligned
  3326.  operand.  Avoids alignment error messages from the assembler.
  3327. -
  3328.  <symbol> UAOP opcode,register,address
  3329. -
  3330.      opcode               a valid RX operation code
  3331. 0        The operation code for the instruction to be
  3332.          generated.
  3333. -    register             reg
  3334. 0        The register operand for the instruction.
  3335. -    address              relexpri
  3336. 0        The address operand for the instruction.  Indexing
  3337.          may not be used.
  3338. 1                            139
  3339. -
  3340.           VAREA - Define storage for a varea
  3341. -
  3342. 0The VAREA macro will define enough storage space for a
  3343.  varea.
  3344. -
  3345.  <symbol> VAREA
  3346. -
  3347.  NOTE:
  3348. 0    Storage for a VAREA may also be reserved by allocating
  3349.      &VAREA bytes on a fullword boundary.
  3350. 1                            140
  3351. -
  3352.                     VCLEAR - Clear a varea
  3353. -
  3354. 0The VCLEAR macro will reset a varea so that the next VSEG
  3355.  goes at the start of the buffer.
  3356. -
  3357.  <symbol> VCLEAR  varea
  3358. -
  3359.      varea                relexpri or (preg)
  3360. 0        The address of the varea to be cleared.
  3361. 1                            141
  3362. -
  3363.                   VINIT - Initialize a varea
  3364. -
  3365. 0The VINIT macro will initialize a varea for processing by
  3366.  other 'V' macros.
  3367. -
  3368.  <symbol> VINIT varea,routine,loc,len
  3369. -
  3370.      varea                relexpri or (preg)
  3371. 0        The address of the varea to be initialized.
  3372. -    routine              addrla (loaded into VRF)
  3373. 0        The address of the routine to receive control if the
  3374.          buffer overflows or a VOUT macro is issued.
  3375. -    loc                  addrla (loaded into VR0)
  3376. 0        The location of the buffer into which VSEGs will be
  3377.          done.
  3378. -    len                  valuela (loaded into VR1)
  3379. 0        The length of the buffer into which VSEGs will be
  3380.          done.
  3381. -
  3382.  NOTE:
  3383. 0    The contents of the registers upon entry to the routine
  3384.      are:
  3385. 0        VRF =  0  VOUT
  3386.                 4  buffer overflow
  3387. 0        VRE =  varea address
  3388. 0        VR1 =  location of the buffer
  3389. 1                            142
  3390. -
  3391.          VR0 =  length of information to be put into
  3392.                 the buffer
  3393. 0       RTNR =  location to return to in order to complete
  3394.                 the operation
  3395. 1                            143
  3396. -
  3397.           VOUT - Output the contents of the buffer
  3398. -
  3399. 0The VOUT routine will pass control to the routine specified
  3400.  in the VINIT macro and reinitialize the buffer.
  3401. -
  3402.  <symbol> VOUT  varea<,loc,len><,DEBLANK=YES><,WGET=YES>
  3403.                 <,OFFSET=value>
  3404.            or
  3405.  <symbol> VOUT  varea,string<,string-len><,DEBLANK=YES>
  3406. -
  3407.      varea                addrla (passed in VRE)
  3408. 0        The address of the varea whose buffer is to be
  3409.          output.
  3410. -    loc                  addrla (passed in VR1)
  3411. 0        Location of a string to be VSEGed.
  3412. -    len                  valuela (passed in VR0)
  3413. 0        Length of the string to be VSEGed.
  3414. -    string               string
  3415. 0        Literal string to be VSEGed.
  3416. -    string-len           cexpr8
  3417. 0        Length of literal string.
  3418. -    DEBLANK=YES
  3419. 0        The string is to be deblanked before being VSEGed.
  3420. -    WGET=YES             conditional form allowed
  3421. 0        loc is the address of a locator for the string.
  3422. 1                            144
  3423. -
  3424.      OFFSET=value         valuela (passed in VRF)
  3425. 0        Offset from the start of the string.
  3426. 1                            145
  3427. -
  3428.           VSEG - Put a segment into the buffer
  3429. -
  3430. 0The VSEG macro will but a segment into the end of the
  3431.  current buffer of the specified varea.
  3432. -
  3433.  <symbol> VSEG  varea,loc,len<,DEBLANK=YES><,WGET=YES>
  3434.                 <,OFFSET=value>
  3435.            or
  3436.  <symbol> VSEG  varea,string<,string-len><,DEBLANK=YES>
  3437. -
  3438.      varea                addrla (passed in VRE)
  3439. 0        The address of the varea to be used.
  3440. -    loc                  addrla (passed in VR1)
  3441. 0        The address of the string to be moved.
  3442. -    len                  valuela (passed in VR0)
  3443. 0        The length of the string to be moved.
  3444. -    string               string
  3445. 0        A literal string to be moved into the buffer.
  3446. -    string-len           cexpr8
  3447. 0        The length of the literal string.
  3448. -    DEBLANK=YES
  3449. 0        The string is to be deblanked before being VSEGed.
  3450. -    WGET=YES             conditional form allowed
  3451. 0        loc is the address of a locator for the string.
  3452. 1                            146
  3453. -
  3454.      OFFSET=value         valuela (passed in VRF)
  3455. 0        Offset from the start of the string.
  3456. 1                            147
  3457. -
  3458.      VTELL - Find length and location in buffer
  3459. -
  3460. 0The VTELL macro will return the starting address of the buffer
  3461.  and the number of bytes which have been VSEGed into the
  3462.  buffer.
  3463. -
  3464.  <symbol> VTELL  varea
  3465. -
  3466.      varea                relexpri or (preg)
  3467. 0        The address of the varea to be used.
  3468. -
  3469.  RETURNS:
  3470. 0    VR1 =  the starting address of the buffer
  3471. 0    VR0 =  the number of bytes used in the buffer
  3472. 1                            148
  3473. -
  3474.           VTEST - Test remaining length
  3475. -
  3476. 0The VTEST macro will set the condition code depending on
  3477.  whether or not enough bytes are left in the buffer to
  3478.  accommodate the specified length.
  3479. -
  3480.  <symbol> VTEST  varea,len
  3481. -
  3482.      varea                relexpri or (preg)
  3483. 0        The address of the varea to be tested.
  3484. -    len                  valuela
  3485. 0        The length to be tested.
  3486. -
  3487.  RETURNS:
  3488. 0    condition code  =  L  insufficient space
  3489.                         E  exactly enough space
  3490.                         H  more than enough space
  3491. 0    RTNR = number of bytes remaining in the buffer less len
  3492. 1                            149
  3493. -
  3494.                 Extended Fixed Binary Facility
  3495. -
  3496. 0The following macro provide extended fixed binary
  3497.  operations.
  3498. -
  3499.                 LOAD, STORE, ADD, SUB, and CMP
  3500. -
  3501.  <symbol> opcdx   reg,relexpri<,JUNK=OK>
  3502. -
  3503.      opcd                 LOAD, STORE, ADD, SUB, or CMP
  3504. -    x                    B    One byte operation
  3505.                           H    Normal halfword operation
  3506.                           LH   Logical halfword operations
  3507.                           P    Three byte pointer operations
  3508.                           F    Normal fullword operations
  3509.                           LF   Logical fullword operations
  3510. -    JUNK=OK              used only with LOAD
  3511. 0        Specifies that for LOADB, LOADLH, and LOADP, it is
  3512.          not necessary to clear the high order bytes in the
  3513.          register.  Otherwise, the high order bytes are
  3514.          padded with zeros (0) to create a fullword when
  3515.          loading the register.
  3516. -
  3517.  NOTE:
  3518. 0    1.  Operands need not be aligned.
  3519. 0    2.  For LOAD the register to be loaded must not be part
  3520.          of the operand location relexpri unless JUNK=OK is
  3521.          specified.  For example, the following is illegal:
  3522. 0        LOADB  VR1,0(VR1)
  3523. 0    3.  When code is being generated for a 370, the 370
  3524.          instruction set will be used where possible.
  3525. 1                            150
  3526. -
  3527.                   Extended Length Facilities
  3528. -
  3529. 0These macros generate inline code to provided extended
  3530.  length facilities.  These macros provide an optional
  3531.  N=count  operand to allow the writer to specify the exact
  3532.  number of instructions to be generated.  If  N=count  is not
  3533.  present, and the length operand is an unsigned integer or a
  3534.  SETA symbol, then as many instructions as are required for
  3535.  the specified length will be generated.  If  N=count  is not
  3536.  present and the length operand is not an unsigned integer or
  3537.  SETA symbol, then one instruction is generated.
  3538. -
  3539.                 MCLC, MMVC, MNC, MOC, and MXC
  3540. -
  3541.  <symbol> opcd  oper1,oper2,length<,N=count><,ZERO=NULL>
  3542. -
  3543.      opcd                 MCLC, MMVC, MNC, MOC, or MXC
  3544. -    oper1                relexpri or (preg)
  3545. 0        The address of the 1st operand.
  3546. -    oper2                relexpri or (preg)
  3547. 0        The address of the 2nd operand.
  3548. -    length
  3549. 0        The number of bytes affected.
  3550. -    N=count              unsigned integer or SETA symbol
  3551. 0        The number of instructions to be generated.
  3552. 0    ZERO=NULL
  3553. 0        Specifies that no instructions are to be generated if
  3554.          len is zero.  Normally a single instruction would be
  3555.          generated.
  3556. 1                            151
  3557. -
  3558.                       MFC - Fill a field
  3559. -
  3560. 0The MFC macro will fill a field with the specified charater.
  3561. -
  3562.  <symbol> MFC   loc,len<,FILL=char><,FILADDR=addr><,N=count><,ZERO=NULL>
  3563. -
  3564.      loc                 relexpri or (preg)
  3565. 0        The address of the field to be filled.
  3566. -    len
  3567. 0        The length of the field to be filled.
  3568. -    FILL=char            cexpr8
  3569. 0        The character to fill the field with.  Default is
  3570.          blank (C' ')
  3571. -    FILADDR=addr         relexpri
  3572. 0        Address of the fill character to be used.  Mutually
  3573.          exclusive with FILL.
  3574. -    N=count              unsigned integer or SETA symbol
  3575. 0        The number of instructions to be generated.
  3576. 0    ZERO=NULL
  3577. 0        Specifies that no instructions are to be generated
  3578.          if len is zero.
  3579. 1                            152
  3580. -
  3581.                 MTC - Test a field
  3582. -
  3583. 0MTC tests a field for all zero (or other specified value)
  3584.  bytes.
  3585. -
  3586.  <symbol> MTC loc,len<,FILL=char><,FILADDR=addr><,N=count><,ZERO=NULL>
  3587. -
  3588.      loc                  relexpri or (preg)
  3589. 0        Address of field to be tested.
  3590. -    len
  3591. 0        Length of field.
  3592. -    FILL=char            cexpr8
  3593. 0        The character to be tested for.  Default is 0.
  3594. -    FILADDR=addr         relexpri
  3595. 0        Address of the character to be tested for.  Mutually
  3596.          exclusive with FILL.
  3597. -    N=count              unsigned integer or SETA symbol
  3598. 0        Number of instructions to be generated.
  3599. 0    ZERO=NULL
  3600. 0        Specifies that no test is to be performed if len
  3601.          is zero.  The condition code will be set to zero in
  3602.          that case.
  3603. -
  3604.  NOTE:
  3605. 0    If FILL is not specified, OC instructions are
  3606.      generated to test the field for zeros.  If FILL is
  3607.      specified, CLC instructions are generated, even if
  3608.      FILL=0 is specified.
  3609. 1                            153
  3610. -
  3611.               MTR - Translate a field
  3612. -
  3613. 0MTR translates a field using a specified translate table.
  3614. -
  3615.  <symbol> MTR loc,table,len<,N=count><,ZERO=NULL>
  3616. -
  3617.      loc                  relexpri or (preg)
  3618. 0        Location of field to be translated.
  3619. -    table                relexpri or (preg)
  3620. 0        Location of translate table.
  3621. -    len
  3622. 0        Length of field.
  3623. -    N=count              unsigned integer or SETA symbol
  3624. 0        Number of TR instructions to be generated.
  3625. 0    ZERO=NULL
  3626. 0        Specifies that no instructions are to be generated if
  3627.          len is zero.
  3628. 1                            154
  3629. -
  3630.               MTRT - Translate and test a field
  3631. -
  3632. 0MTRT performs a translate-and-test on a field.
  3633. -
  3634.  <symbol> MTRT loc,table,len<,N=count><,ZERO=NULL>
  3635. -
  3636.      loc                  relexpri or (preg)
  3637. 0        Location of field.
  3638. -    table                relexpri or (preg)
  3639. 0        Location of translate-and-test table.
  3640. -    len
  3641. 0        Length of field.
  3642. -    N=count              unsigned integer or SETA symbol
  3643. 0        Number of instructions to be generated.
  3644. 0    ZERO=NULL
  3645. 0        Specifies that no translate and test is to be
  3646.          performed if len is zero.  The condition code is
  3647.          set to zero in that case.
  3648. 1                            155
  3649. -
  3650.                      MZC - Clear a field
  3651. -
  3652. 0The MZC macro will clear a field to all X'00's.
  3653. -
  3654.  <symbol> MZC   loc,len<,N=count><,ZERO=NULL>
  3655. -
  3656.      loc                 relexpri or (preg)
  3657. 0        The address of the field to be zeroed.
  3658. -    len
  3659. 0        The length of the field to be zeroed.
  3660. -    N=count              unsigned integer or SETA symbol.
  3661. 0        The number of instructions to be generated.
  3662. 0    ZERO=NULL
  3663. 0        Specifies that no instructions are to be generated
  3664.          if len is zero.
  3665. 1                            156
  3666. -
  3667.                  370 Simulation Instructions
  3668. -
  3669. 0The following group of macros will generate (if for 370) or
  3670.  simulate the 370 long form instructions.
  3671. -
  3672.               MCLCL, MMVCL, MNCL, MOCL, and MXCL
  3673. -
  3674.  <symbol> opcd  reg1,loc1,len1,reg2,loc2<,len2><,FILL=char>
  3675.                 <,FILADDR=byte><,INLINE=YES><,N=count>
  3676. -
  3677.      opcd                 MCLCL, MMVCL, MNCL, MOCL, or MXCL
  3678. -    reg1                 even reg of even-odd register pair
  3679. 0        Work register.
  3680. -    loc1                 addrla (passed in reg1)
  3681. 0        The address of the 1st operand.
  3682. -    len1                 valuela (passed in reg1+1)
  3683. 0        The length of the first operand.
  3684. -    reg2                 even reg of even-odd register pair
  3685. 0        Work register.
  3686. -    loc2                 addrla (passed in reg2)
  3687. 0        The address of the second operand.
  3688. -    len2                 valuela (passed in reg2+1)
  3689. 0        The length of the 2nd operand.  If omitted, len1 is
  3690.          used and more efficient code may be generated.
  3691. 1                            157
  3692. -
  3693.      FILL=char            cexpr8
  3694. 0        The character to pad the shorter string with if len1
  3695.          and len2 are not equal.  The default is X'00',
  3696.          except for MNCL which is X'FF'.
  3697. -    FILADDR=byte         relexpri
  3698. 0        The address of the fill character.  May not be used
  3699.          if FILL is used.
  3700. -    INLINE=YES
  3701. 0        Requests that the code be generated as an inline
  3702.          sequence of instructions, rather than in a loop if
  3703.          code is being generated for a 360 and len2 is
  3704.          omitted.  The operands must fulfill the requirements
  3705.          for the Mxxx macros.
  3706. -    N=count              unsigned integer or SETA symbol.
  3707. 0        The number of instructions to generate if
  3708.          INLINE=YES.
  3709. 1                            158
  3710. -
  3711.                  MFCL - Clear field loop
  3712. -
  3713. 0<symbol> MFCL  reg1,loc,len,reg2<,FILL=char><,FILADDR=byte>
  3714.                 <,INLINE=YES><,N=count>
  3715. -
  3716.      reg1                 even reg of even-odd register pair
  3717. 0        Work register.
  3718. -    loc                  addrla (passed in reg1)
  3719. 0        The address of the field to be filled.
  3720. -    len                  valuela (passed in reg1+1)
  3721. 0        The length of the field to be filled.
  3722. -    reg2                 even reg of even-odd register pair
  3723. 0        Work register.
  3724. -    FILL=char            cexpr8
  3725. 0        The character with which to fill the field.  Default
  3726.          is blank (C' ').
  3727. -    FILADDR=byte         relexpri
  3728. 0        The address of the fill character.  May not be used
  3729.          if FILL is used.
  3730. -    INLINE=YES
  3731. 0        Requests that the code be generated as an inline
  3732.          sequence of instructions rather than as a loop if
  3733.          code is being generated for a 360.  The operands
  3734.          must fulfill the requirements for the MFC macro.
  3735. -    N=count              unsigned integer or SETA symbol
  3736. 0        The number of instructions to generate if
  3737.          INLINE=YES.
  3738. 1                            159
  3739. -
  3740.               MTCL - Test field loop
  3741. -
  3742. 0<symbol> MTCL reg1,loc,len,reg2<,FILL=char><,FILADDR=byte>
  3743.                <,INLINE=YES><,N=count>
  3744. -
  3745.      reg1                 even reg of even-odd pair
  3746. 0        Work registers.
  3747. -    loc                  addrla (passed in reg1)
  3748. 0        Location of field to be tested.
  3749. -    len                  valuela (passed in reg1+1)
  3750. 0        Length of field.
  3751. -    reg2                 even reg of even-odd pair
  3752. 0        Work registers.
  3753. -    FILL=char            cexpr8
  3754. 0        Character to be tested for.  Default is zero.
  3755. -    FILADDR=byte         relexpri
  3756. 0        Address of the character to be tested for.  May not be
  3757.          used if FILL is used.
  3758. -    INLINE=YES
  3759. 0        Requests that the code be generated as an inline
  3760.          sequence of instructions rather than as a loop if
  3761.          code is being generated for a 360.  The operands
  3762.          must fulfill the requirements for the MFC macro.
  3763. -    N=count
  3764. 0        Number of instructions to be generated for
  3765.          INLINE=YES.
  3766. 1                            160
  3767. -
  3768.                 MTRL - Translate field loop
  3769. -
  3770. 0<symbol> MTRL reg1,loc,table,reg2,len<,INLINE=YES<,N=count>>
  3771. -
  3772.      reg1                 preg
  3773. 0        Work register.
  3774. -    loc                  addrla (passed in reg1)
  3775. 0        Location of field to be translated.
  3776. -    table                relexpri
  3777. 0        Location of translate table.
  3778. -    reg2                 preg
  3779. 0        Work register.
  3780. -    len                  valuela (passed in reg2)
  3781. 0        Length of field.
  3782. -    INLINE=YES
  3783. 0        Generate an inline sequence of TR instructions.  The
  3784.          operands must fulfill the requirements for the MTR
  3785.          macro.
  3786. -    N=count
  3787. 0        Number of instructions for INLINE=YES.
  3788. 1                            161
  3789. -
  3790.                 MTRTL - Translate and test loop
  3791. -
  3792. 0<symbol> MTRTL reg1,loc,table,reg2,len<,INLINE=YES<,N=count>>
  3793. -
  3794.      reg1                 preg
  3795. 0        Work register.
  3796. -    loc                  addrla (passed in reg1)
  3797. 0        Location of field to be translated.
  3798. -    table                relexpri
  3799. 0        Location of translate table.
  3800. -    reg2                 preg
  3801. 0        Work register.
  3802. -    len                  valuela (passed in reg2)
  3803. 0        Length of field.
  3804. -    INLINE=YES
  3805. 0        Generate an inline sequence of TR instructions.  The
  3806.          operands must fulfill the requirements for the TRT
  3807.          macro.
  3808. -    N=count
  3809. 0        Number of instructions for INLINE=YES.
  3810. 1                            162
  3811. -
  3812.                   MZCL - Zero field loop
  3813. -
  3814. 0<symbol> MZCL  reg1,loc,len,reg2<,INLINE=YES><,N=count>
  3815. -
  3816.      reg1                 even reg of even-odd register pair
  3817. 0        Work register.
  3818. -    loc                  addrla
  3819. 0        The address of the field to be cleared to X'00's.
  3820. -    len                  valuela
  3821. 0        The length of the field to be cleared.
  3822. -    reg2                 even reg of even-odd register pair
  3823. 0        Work register.
  3824. -    INLINE=YES
  3825. 0        Requests that the code be generated as an inline
  3826.          sequence of instructions, rather than as a loop if
  3827.          code is being generated for a 360.  The operands
  3828.          must fulfill the requirements for the MFC macro.
  3829. -    N=count              unsigned integer or SETA symbol
  3830. 0        The number of instructions to generate if
  3831.          INLINE=YES.
  3832. 1                            163
  3833. -
  3834.                Flag Setting and Testing Macros
  3835. -
  3836.                       DF - Define flags
  3837. -
  3838. 0DF is used to define one or more flag bits and optionally
  3839.  assign initial values.
  3840. -
  3841.  <symbol> DF flag-name,...<INIT=(flag-name,...)>
  3842. -
  3843.      flag-name            symbol
  3844. 0        The name of the flag to be defined.  Any number of
  3845.          flags may be specified.  If more than 8 are
  3846.          specified, more than 1 byte will be reserved.
  3847. -    INIT=(flag-name,...) list of symbols
  3848. 0        Specifies flags which are to be initially 1 (on).
  3849. 1                            164
  3850. -
  3851.                         SF - Set flags
  3852. -
  3853. 0SF is used to turn on one or more flags defined with DF.
  3854. -
  3855.  <symbol> SF flag-name,...
  3856. -
  3857.      flag-name            symbol
  3858. 0        The name of a flag to be turned on (set to 1).  Up
  3859.          to 8 flags may be specified; all must reside in the
  3860.          same byte.
  3861. 1                            165
  3862. -
  3863.                        TF - Test Flags
  3864. -
  3865. 0TF is used to test one or more flags defined with DF.
  3866. -
  3867.  <symbol> TF flag-name,...
  3868. -
  3869.      flag-name            symbol
  3870. 0        The name of a flag to be tested.  Up to 8 flags may
  3871.          be specified; all must reside in the same byte.
  3872. -
  3873.  RETURNS:
  3874. 0    CC =  Z  all tested flags off
  3875.            O  all tested flags on
  3876.            M  some on, some off
  3877. 1                            166
  3878. -
  3879.                        ZF - Zero flags
  3880. -
  3881. 0ZF is used to turn off one or more flags defined with DF.
  3882. -
  3883.  <symbol> ZF flag-name,...
  3884. -
  3885.      flag-name            symbol
  3886. 0        The name of a flag to be cleared.  Up to 8 flags may
  3887.          be specified; all must reside in the same byte.
  3888. 1                            167
  3889. -
  3890.                  Multiprocessor Instructions
  3891. -
  3892.                 MPNI - Multiprocessor and immediate
  3893. -
  3894. 0MPNI performs a synchronized NI instruction.
  3895. -<symbol> MPNI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
  3896. -
  3897.      addr                 relexpri
  3898. 0        Address of the byte to be modified.
  3899. -    mask                 cexpr8
  3900. 0        The mask to be used.
  3901. -    REGS=(r1,r2,r3)      preg,preg,preg
  3902. -    BASE=base-address    relexpri
  3903. 0        The address of a fullword located no more than 4076
  3904.          bytes before the byte.  More efficient code is
  3905.          generated if this option is specified.
  3906. 1                            168
  3907. -
  3908.               MPOI - Multiprocessor or immediate
  3909. -
  3910. 0MPOI performs a synchronized OI instruction.
  3911. -<symbol> MPOI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
  3912. -
  3913.      addr                 relexpri
  3914. 0        Address of the byte to be modified.
  3915. -    mask                 cexpr8
  3916. 0        The mask to be used.
  3917. -    REGS=(f1,f2,f3)      preg,preg,preg
  3918. -    BASE=base-address    relexpri
  3919. 0        The address of a fullword located no more than 4076
  3920.          bytes before the byte.  More efficient code is
  3921.          generated if this option is specified.
  3922. 1                            169
  3923. -
  3924.               MPXI - Multiprocessor or immediate
  3925. -
  3926. 0MPXI performs a synchronized XI instruction.
  3927. -<symbol> MPXI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
  3928. -
  3929.      addr                 relexpri
  3930. 0        Address of the byte to be modified.
  3931. -    mask                 cexpr8
  3932. 0        The mask to be used.
  3933. -    REGS=(r1,r2,r3)      preg,preg,preg
  3934. -    BASE=base-address    relexpri
  3935. 0        The address of a fullword located no more than 4076
  3936.          bytes before the byte.  More efficient code is
  3937.          generated if this option is specified.
  3938. 1                            170
  3939. -
  3940.               MPZI - Multiprocessor or immediate
  3941. -
  3942. 0MPZI performs a synchronized ZI instruction.
  3943. -<symbol> MPZI addr,mask,REGS=(r1,r2,r3)<,BASE=base-address>
  3944. -
  3945.      addr                 relexpri
  3946. 0        Address of the byte to be modified.
  3947. -    mask                 cexpr8
  3948. 0        The mask to be used.
  3949. -    REGS=(r1,r2,r3)      preg,preg,preg
  3950. -    BASE=base-address    relexpri
  3951. 0        The address of a fullword located no more than 4076
  3952.          bytes before the byte.  More efficient code is
  3953.          generated if this option is specified.
  3954. 1                            171
  3955. -
  3956.                    ALP Readability Macros
  3957. -
  3958.  The following macros are provided in order to enhance the
  3959.  readability of ALP programs.
  3960. 0    r  is a register (reg)
  3961.      a  is a storage address (relexpri)
  3962.      c  is a constant
  3963. -Macro             Name                     Code Generated
  3964. 0AI   r,c          Add Immediate            LA   r,c(,r)
  3965. 0AI   VR0,c        Add Immediate            AL   VR0,=A(c)
  3966. -CI   r,c          Compare Immediate        C    r,=A(c)
  3967. 0CIL  r,c          Compare Immediate        CL   r,=A(c)
  3968.                    Logical
  3969. 0DI   r,c          Divide Immediate         D    r,=A(c)
  3970. 0LI   r,c          Load Immediate           LA   r,c
  3971. -LI   VR0,c        Load Immediate           L    VR0,=A(c)
  3972. 0LQS  r1,r2,'str'  Load Quoted String       LA   r1,=C'str'
  3973.                                             LA   r2,length
  3974. 0LT   r,a          Load and Test            L    r,a
  3975.                                             LTR  r,r
  3976. 0MI   r,c          Multiply Immediate       MH   r,=AL2(c)
  3977. 0RM   r            Register Minus           LTR  r,r
  3978. 0RMP  r            Register Minus or Plus   LTR  r,r
  3979. 0RMZ  r            Register Minus or Zero   LTR  r,r
  3980. 0RNM  r            Register Not Minus       LTR  r,r
  3981. 0RNMP r            Register Not Minus       LTR  r,r
  3982.                    or Plus
  3983. 0RNMZ r            Register Not Minus       LTR  r,r
  3984.                    or Zero
  3985. 0RNP  r            Register Not Plus        LTR  r,r
  3986. 1                            172
  3987. -
  3988.  RNZ  r            Register Not Zero        LTR  r,r
  3989. 0RNZP r            Register Not Zero        LTR  r,r
  3990.                    or Plus
  3991. 0RP   r            Register Plus            LTR  r,r
  3992. 0RZ   r            Register Zero            LTR  r,r
  3993. 0RZP  r            Register Zero or Plus    LTR  r,r
  3994. 0SI   r,1          Subtract Immediate       BCTR r,0
  3995. 0SI   r,2          Subtract Immediate       BCTR r,0
  3996.                                             BCTR r,0
  3997. 0SI   r,c          Subtract Immediate       SL   r,=A(c)
  3998. 0Z    r,a          Zero                     SR   r,r
  3999.                                             ST   r,a
  4000. 0Z    ,a           Zero                     XC   a(4),a
  4001. 0ZB   r,a          Zero Byte                SR   r,r
  4002.                                             STC  r,a
  4003. 0ZB   ,a           Zero Byte                MVI  a,0
  4004. 0ZH   r,a          Zero Halfword            SR   r,r
  4005.                                             STH  r,a
  4006. 0ZH   ,a           Zero Halfword            XC   a(2),a
  4007. 0ZHB  a            Zero High Byte           MVI  a,0
  4008. 0ZHBR r            Zero High Byte Register  LA   r,0(,r)
  4009. 0ZI   a,c          Zero Immediate           NI   a,255-(c)
  4010. 0ZR   r            Zero Register            SR   r,r
  4011. 1                            173
  4012. -
  4013.                    EXI and EXORG - Execute immediate
  4014. -
  4015. 0EXI permits the instruction to be executed by an EX
  4016.  instruction to be coded at the same place in the source
  4017.  program.
  4018. -
  4019.  <symbol> EXI ex-reg,opcode,operand1,operand2,<DECR=YES>,
  4020.               <INCR=YES>
  4021. -
  4022.      ex-reg               reg
  4023. 0        The register to be used as the first operand of the
  4024.          EX instruction.
  4025. -    opcode               valid assembler opcode
  4026. 0        Operation code of the instruction to be executed.
  4027. -    operand1
  4028. 0        The first operand of the instruction to be executed.
  4029. -    operand2
  4030. 0        The second operand of the instruction to be
  4031.          executed.
  4032. -    DECR=YES
  4033. 0        Specifies that the register is to be decremented
  4034.          by one before the EX instruction.
  4035. 0    INCR=YES
  4036. 0        Specifies that the register is to be incremented
  4037.          by one after the EX instruction.  The condition
  4038.          code is not affected.
  4039. 1                            174
  4040. -
  4041.  NOTES:
  4042. 0    1.  The opcode to be executed may not be a macro unless
  4043.          it is one of the following:  MCLC, MMVC, MNC, MOC,
  4044.          MTC, MTR, MTRT, MXC, MZC.  When one of these is
  4045.          used, N=1 and a length of zero are forced.
  4046. 0    2.  An EXORG must be included within addressable range
  4047.          in order to assemble the instructions to be
  4048.          executed.
  4049. 0    3.  If an instruction occurs more than once, EXORG will
  4050.          assemble only one copy.
  4051. 1                            175
  4052. -
  4053.                   Extended Branch Mnemonics
  4054. -
  4055.  The following extended branch mnemonics are provided:
  4056. -    Extended                 Corresponding
  4057.      Mnemonic               Assembler Mnemonic
  4058. 0    BLR                         BCR   4
  4059.      BER                         BCR   8
  4060.      BHR                         BCR   2
  4061.      BNLR                        BCR   11
  4062.      BNER                        BCR   7
  4063.      BNHR                        BCR   13
  4064. 0    BMR                         BCR   4
  4065.      BZR                         BCR   8
  4066.      BPR                         BCR   2
  4067.      BNMR                        BCR   11
  4068.      BNZR                        BCR   7
  4069.      BNPR                        BCR   13
  4070. 0    BOR                         BCR   1
  4071.      BNOR                        BCR   14
  4072. 0    BLE                         BNH
  4073.      BEH                         BNL
  4074.      BLH                         BNE
  4075.      BNLE                        BH
  4076.      BNEH                        BL
  4077.      BNLH                        BE
  4078. 0    BLER                        BNHR
  4079.      BEHR                        BNLR
  4080.      BLHR                        BNER
  4081.      BNLER                       BHR
  4082.      BNEHR                       BLR
  4083.      BNLHR                       BER
  4084. 0    BMZ                         BNP
  4085.      BZP                         BNM
  4086.      BMP                         BNZ
  4087.      BNMZ                        BP
  4088.      BNZP                        BM
  4089.      BNMP                        BZ
  4090. 0    BMZR                        BNPR
  4091.      BZPR                        BNMR
  4092.      BMPR                        BNZR
  4093.      BNMZR                       BPR
  4094.      BNZPR                       BMR
  4095.      BNMPR                       BZR
  4096. 1                            176
  4097. -
  4098.                          ED Routine Macros
  4099. -
  4100.                     EDABEND - Prepare for ABEND
  4101. -
  4102. 0The EDABEND macro sets up the environment necessary for the
  4103.  ED routines to issue ABEND messages.
  4104. -
  4105.  <symbol>  EDABEND
  4106. -Note:
  4107. 0     If the contents of register VRF is zero, then it
  4108.  is assumed that the dynamic work area does not exist
  4109.  and space for it is obtained.
  4110. 1                            177
  4111. -
  4112.                  EDENTER - Generate entry linkage
  4113. -
  4114. 0The EDENTER macro will generate entry linkage code for the
  4115.  ED routines.
  4116. -
  4117.  <symbol>  EDENTER  <ENTRY=COMMON><,INITRTN=YES><,MESSAGE=YES>
  4118. -    ENTRY=COMMON
  4119. 0        Specifies that the PL/I and the non-PL/I entry
  4120.          points are the same (i.e., they have exactly the
  4121.          same arguments).
  4122. -    INITRTN=YES
  4123. 0        Specifies that space for the dynamic work area has
  4124.          not yet been obtained.
  4125. 0    MESSAGE=YES
  4126. 0        Suppresses the storing of the name of the routine
  4127.          called in the dynamic work area.  Also suppresses
  4128.          the resetting of the previous routines return code.
  4129. -NOTE:
  4130. 0     Unless INITRTN=YES is specified, validity checks are made
  4131.  to verify that the control word argument (ACW) points to the
  4132.  dynamic work area.  If any of the checks fail, register VRF is
  4133.  set to zero and control is transferred to the statement with a
  4134.  label of ABENDMSG.
  4135. 1                            178
  4136. -
  4137.                   EDEXIT - Generate exit linkage
  4138. -
  4139. 0The EDEXIT macro will generate exit linkage code for the ED
  4140.  routines.
  4141. -
  4142.  <symbol>  EDEXIT  <TERMRTN=YES><,MESSAGE=YES>
  4143. -    TERMRTN=YES
  4144. 0        Specifies that space for the dynamic work area has
  4145.          been freed.
  4146. 0    MESSAGE=YES
  4147. 0        Suppresses the storing of the return code in the
  4148.          dynamic work area.
  4149. -NOTES:
  4150. 01.  Unless MESSAGE=YES is coded, the value in register VRF is
  4151.      stored in the return code argument (ARETURN).
  4152. 02.  Unless TERMRTN=YES is specified, a check is made for stack
  4153.      overflow by looking for a unique character string at the
  4154.      end of the dynamic work area.  If this test fails, register
  4155.      VRF is set to 4 and control is transferred to the statement
  4156.      with a label of ABEND MSG.
  4157. 1                            179
  4158. -
  4159.               EDGAS - Get address of string
  4160. -
  4161.  The EDGAS macro may be used to get the address of a character
  4162.  string passed to the ED routines.
  4163. -<symbol>  EDGAS  addr,aloc,WORK=work-reg
  4164. -    addr                                preg
  4165. 0        The address of the character string is returned
  4166.          in this register.
  4167. 0    aloc                                addrl
  4168. 0        Symbol corresponding to character string variable
  4169.          in DSECT for argument list.
  4170. -    work-reg                            reg
  4171. 0        Work register.
  4172. 1                            180
  4173. -
  4174.                EDGCLS - Get current length of string
  4175. -
  4176.  The EDGCLS macro may be used to get the current length of a
  4177.  character string passed to the ED routines.
  4178. -<symbol>  EDGCLS  curlen,aloc,<alength>,WORK=work-reg<,DEFLEN=default>
  4179. -    curlen                              preg
  4180. 0        The current length of the character string is
  4181.          returned in this register.
  4182. 0    aloc                                addrl
  4183. 0        Symbol corresponding to character string variable
  4184.          in DSECT for argument list.
  4185. -    alength                             addrl
  4186. 0        Symbol corresponding to length variable in
  4187.          DSECT for argument list.
  4188. 0    work-reg                            reg
  4189. 0        Work register.
  4190. 0    default                             constant
  4191. 0        The default length which will be used for
  4192.          non-PL/I routines when the "alength"
  4193.          parameter is omitted.
  4194. -NOTES:
  4195. 0    1.  The "alength" and "DEFLEN=" parameters are
  4196.          mutually exclusive.
  4197. 1                            181
  4198. -
  4199.                EDGMLS - Get maximum length of string
  4200. -
  4201.  The EDGMLS macro may be used to get the maximum length of a
  4202.  character string passed to the ED routines.
  4203. -<symbol>  EDGMLS  maxlen,aloc,alength,WORK=work-reg
  4204. -    maxlen                              preg
  4205. 0        The maximum length of the character string is
  4206.          returned in this register.
  4207. 0    aloc                                addrl
  4208. 0        Symbol corresponding to character string variable
  4209.          in DSECT for argument list.
  4210. -    alength                             addrl
  4211. 0        Symbol corresponding to length variable in DSECT
  4212.          for argument list.
  4213. 0    work-reg                            reg
  4214. 0        Work register.
  4215. 1                            182
  4216. -
  4217.                EDSCLS - Set current length of string
  4218. -
  4219.  The EDSCLS macro may be used to set the current length of
  4220.  a varying length PL/I character string variable passed to
  4221.  the ED routines.
  4222. -<symbol>  EDSCLS  curlen,aloc,WORK1=work-reg1,WORK2=work-reg2
  4223.                  <,PLIV=YES>
  4224. -
  4225.      curlen                              reg
  4226. 0        This register must contain the value to be
  4227.          stored in the current length field.
  4228. -    aloc                                addrl
  4229. 0        Symbol corresponding to character string
  4230.          variable in DSECT for argument list.
  4231. 0    work-reg1                           reg
  4232. 0        Work register.
  4233. -    work-reg2                           preg
  4234. 0        Work register.
  4235. -    PLIV=YES
  4236. 0        Specifies that program has already determined that
  4237.          the string is a varying length PL/I character string
  4238.          and addressability has been established for the
  4239.          locator/descriptor.  If PLIV=YES is specified, then
  4240.          "WORK1=" may be omitted.
  4241. 1                            183
  4242. -
  4243.               EDSETUP - Generate required DSECTS
  4244. -
  4245. 0The EDSETUP macro generates DSECTS for control blocks which
  4246.  are required for assembly of an ED routine.
  4247. -
  4248.  symbol  EDSETUP  <CBS=option><ctl-block-name=ctl-block-opt>
  4249.                  <,REGS=regs-opt><,SCABBRS=YES><,SETS=NO>
  4250.                  <,PLILD=YES>
  4251. -    symbol               1-8 characters
  4252. 0        CSECT name for the routine; this is required.
  4253. -    CBS=option            NO or ALL
  4254. 0        Requests suppression of all control blocks (NO) or
  4255.          inclusion of all control blocks (ALL).
  4256. -    ctl-block-name       1-4 characters
  4257. 0        One of the WYLBUR control blocks, e.g. CV, CP, RTB,
  4258.          RTCB, PCB, DFCB; or one of the OS control blocks
  4259.          supported by the macro, e.g. UCB, CVT.
  4260. -    ctl-block-opt        YES, NO, CV or CP
  4261. 0        YES - generate the DSECT.
  4262.          NO  - do not generate the DSECT.
  4263.          CV  - include the definition of the control block as
  4264.                a continuation of the CV DSECT (JCB and CP
  4265.                only).
  4266.          CP  - include the definition of the control block in
  4267.                the appropriate place in the CP (SCT and RTB
  4268.                only).
  4269. -    REGS=NO
  4270. 0        Suppresses generation of the standard register
  4271.          definitions.
  4272. 1                            184
  4273. -
  4274.      SCABBRS=YES
  4275. 0        Specifies that a list of scanner abbreviations
  4276.          is to be generated.
  4277. -    SETS=NO
  4278. 0        Suppresses set statements affecting GLOBAL
  4279.          variables.
  4280. -    PLILD=YES
  4281. 0        Specifies that the DSECT for the PL/I string
  4282.          locator/descriptor is to be generated.
  4283. -NOTES:
  4284. 0    1.  Before giving the EDSETUP macro, the user should
  4285.          include copy statements for the following numbers
  4286.          from SYSLIB:  CPARMGBL, MPARMGBL and WPARMGBL.
  4287. 0    2.  The standard form for an ED routine is:
  4288. 0        module  TITLE 'module function'
  4289.                  (macro definitions)
  4290.                  COPY  CPARMGBL
  4291.                  COPY  MPARMGBL
  4292.                  COPY  WPARMGBL
  4293. 0        module  EDSETUP ...
  4294.                  (additional register definitions, etc.)
  4295.                  EJECT
  4296.                  (code)
  4297.                  END
  4298. 0    3.  The default control block options are:
  4299. 0        TXL=YES
  4300.