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