* $Id: v311.sil,v 1.141 2014/12/30 05:05:00 phil Exp $ * * $Log: v311.sil,v $ * Revision 1.141 2014/12/30 05:05:00 phil * [PLB125] use PCOMP in GC * died when dynamic region straddled 2G line on OpenBSD * * Revision 1.140 2014/12/05 18:59:40 phil * fix commenting * * Revision 1.139 2014/12/05 18:58:11 phil * v311.sil: Fix compilation without BLOCKS: commented out unused R_R_N * (nested .IFs don't work) * * Revision 1.138 2014/10/13 23:32:28 phil * Makefile: cleanup for modules directories * add "with" as configure output * remove configure dependancy * (runs constantly when newer than with) * Makefile2.m4: explictly pass -N to test/run.sh * v311.sil,procs: remove unused blocks code/functions * * Revision 1.137 2014/01/18 23:37:31 phil * [PLB124] fix "FUNCTION" TRACE() * * Revision 1.136 2013/10/28 02:52:30 phil * [PLB123] Add &COMPNO (ala SITBOL/SNOBOL4B) * * Revision 1.135 2013/10/26 19:17:38 phil * [PLB122] Fix paste-o for single letter 'R' trace * * Revision 1.134 2013/10/23 02:49:46 phil * Merge from BR_1_5_PLUS_BLOCKS * * Revision 1.133.2.5 2013/10/18 02:30:58 phil * v311.sil: [PLB121] Clean up PRINT/EJECT carriage control * Implement ASCII Carriage Control if CC(unit) < 0 * * Revision 1.133.2.4 2013/10/16 00:33:37 phil * [PLB120] change DI_8 to DI_DSC for 64-bit systems! * * Revision 1.133.2.3 2013/10/15 20:23:52 phil * [PLB119] fix BCHAR() -- was writing into const string * clean up warning FORMATs, report file & line * * Revision 1.133.2.2 2013/10/12 02:03:55 phil * v311.sil: [PLB118] replace MOVBLK with MOVBLK2 in BLAND * * Revision 1.133.2.1 2013/10/11 23:09:06 phil * [BLOCKS] add BLOCKS code thanks to Mike Alexander * [PLB117] add -[NO]BLOCKS to disable/enable blocks operator changes * * Revision 1.133 2013/09/23 21:38:32 phil * [PLB116] use SMAXINT * * Revision 1.132 2013/09/13 01:14:07 phil * [PLB115] single letter trace types (ala SPITBOL) * * Revision 1.131 2013/09/13 00:35:38 phil * [PLB114] pulled LASTFILE/LINE & USRINT checks to top of INIT * * Revision 1.130 2013/09/01 03:37:25 phil * v311.sil: [PLB113] fix keyword trace output I broke in 2005 (edit PLB90) * add chk_break() call -- fires &STNO KEYWORD trace * * Revision 1.129 2013/08/31 03:02:30 phil * [PLB112] save/restore &LAST{FILE,LINE} calling trace handlers * restore saved &LINE in ABORT handler * * Revision 1.128 2013/08/27 04:59:02 phil * [PLB111] check for null value in LABEL() * * Revision 1.127 2013/08/23 23:08:13 phil * [PLB110] fix continue from END after an error * fix duplicate END2 label * * Revision 1.126 2013/08/22 19:52:30 phil * [PLB109] Implement "User Interrupt" (SIGINT) handling * Set &LAST{NO,FILE,LINE} in XITHND * Allow new errors to overwrite old return information * * Revision 1.125 2013/08/08 01:07:41 phil * [PLB108] Add &MAXINT * * Revision 1.124 2013/08/04 17:21:03 phil * [PLB107] Display avg ns. per statement * Add &STEXEC -- total statements executed * &GCTIME -- total time in GC * * Revision 1.123 2013/08/02 04:09:07 phil * [PLB106] add &PI * * Revision 1.122 2013/08/01 02:58:32 phil * [PLB105] add &DIGITS * * Revision 1.121 2012/02/26 00:32:07 phil * [PLB104] safety check KSt/sec division; use REAL constants * flush SPDLDR; increase PMSTACK to 8000, ISTACK to 4000 * * Revision 1.120 2012/02/23 23:27:11 phil * [PLB103] Report K Statements/sec * * Revision 1.119 2012/02/14 19:04:16 phil * [PLB102] Add -HIDE for sdb * * Revision 1.118 2012/02/03 05:40:56 phil * [PLB101] only modify function entry if LOAD succeeds * * Revision 1.117 2011/12/29 23:00:30 phil * [PLB100] SETEXIT returns old value * * Revision 1.116 2011/01/24 04:33:49 phil * [PLB99] fix FUNCTION for referenced, but undefined functions * * Revision 1.115 2011/01/22 02:39:38 phil * [PLB98] SETEXIT cleanup; prohibit re-entry, implement trap at END * * Revision 1.114 2011/01/21 06:04:31 phil * [PLB97] implement SETEXIT/CONTINUE/SCONTINUE/ABORT * * Revision 1.113 2009/08/29 18:57:42 phil * [PLB96] need to FULLY clear WPTR in LNKFNC or * COLLECT() crashes if called immediately after an * "external" function. Add collect2 test. * reported by Laurence Battin * * Revision 1.112 2005/11/22 21:13:55 phil * [PLB95] Add SPCSP for explicit output of spaces * * Revision 1.111 2005/11/10 16:51:53 phil * [PLB94] decrement >RACE if positive * * Revision 1.110 2005/10/30 05:31:00 phil * [PLB93] Use TEMPCL for GC time tracking * * Revision 1.109 2005/10/28 04:40:48 phil * [PLB92] Implement GC trace (>RACE) and GC stats * * Revision 1.108 2005/10/24 06:51:19 phil * [PLB91] Fix backtracking for *opr * * Revision 1.107 2005/10/21 22:08:21 phil * [PLB90] prepend &FILE and &LINE to trace output! * * Revision 1.106 2005/10/21 18:09:03 phil * [PLB89] Perform case folding on alternate function entry label * * Revision 1.105 2004/09/08 05:27:17 phil * undo two PCOMPS at SPCNV2; detected by HP-UX compiler * * Revision 1.104 2004/08/12 16:07:53 phil * [PLB88] Use PCOMP[C] SIL operators for pointer comparison * Locations thanks to Mark Emmer (from SNOBOL4+) * * Revision 1.103 2004/01/12 07:05:08 phil * track passed arg count using WPTR * * Revision 1.102 2004/01/12 06:42:36 phil * remove unused label LNKF8 * * Revision 1.101 2004/01/12 06:32:39 phil * [PLB87] Fix argument processing for LOADed functions: * if there are more actuals than formals, pass extras * without conversion (was looking past end of formal list)! * * Revision 1.100 2003/04/24 04:07:41 phil * [PLB86] upcase library function names (use casting macros) * rename ENFILE to ENDFIL to avoid Unix errno.h collision * * Revision 1.99 2002/06/05 16:10:50 phil * [PLB85] Allocate interpreter stack at startup (-S option) * * Revision 1.98 2002/03/01 19:03:59 phil * [PLB84] remove an empty RCALL label list * * Revision 1.97 2002/02/22 19:29:46 phil * [PLB83] 3-way return for XINCLD * * Revision 1.96 2002/02/18 18:53:17 phil * [PLB82] compile cleanly with gcc -Wunused * removed unused code; add new top-of-procedure labels where needed * add XECODE operator to tag end of source code * * Revision 1.95 2002/01/26 15:44:43 phil * [PLB81] set &MAXLNGTH to SIZLIM * increase FNLIST free space to 40 functions * (to allow for growing number of PML functions) * * Revision 1.94 2002/01/22 17:17:37 phil * [PLB80] Add experimental FUNCTION() predicate * * Revision 1.93 2002/01/22 16:52:23 phil * [PLB79] make LABEL() honor case folding * * Revision 1.92 2002/01/22 01:48:06 phil * updated Table of Contents * * Revision 1.91 2002/01/21 17:19:14 phil * [PLB78] add new functions (ideas from Steve Duff's Macro SPITBOL) * LABEL(V) - predicate returns true if V is a defined label * VDIFFER(X,Y) - returns X if X and Y DIFFER(), else fails * * Revision 1.90 2002/01/18 23:49:16 phil * [PLB77] fix compiler syntax error pointer display * fix internal error trying to compile " ()(" * * Revision 1.89 2002/01/18 05:06:27 phil * [PLB76] Fix lexical comparison optimizations * add new lexical functions to index * * Revision 1.88 2002/01/17 18:57:40 phil * [PLB75] Increase hash table size to 8K * define OBSFT (shift factor) for table size * * Revision 1.87 2002/01/06 16:57:27 phil * [PLB74] rename "CON" to "CONCAT" * subr/CON was being interpreted as CONSOLE * in Cygwin isnobol4.c build * * Revision 1.86 2001/12/27 17:42:30 phil * [PLB73] rearrange some code to avoid functionization * eliminate procs (and loops): TRAC{1,4,6}, STOPT1, RECOM{N,F,Q,T} * * Revision 1.85 2001/12/26 23:15:51 phil * [PLB72] Use %G for us/stmt * * Revision 1.84 2001/12/18 22:15:00 phil * fix edit tags on CASECL * tweaked comment on previous edit * * Revision 1.83 2001/12/18 21:27:42 phil * [PLB71] Keep runtimes in REALs, effects TIME(), trace messages, * statistics. Report average in microseconds/statement. * * Revision 1.82 2001/12/18 02:05:51 phil * [PLB70] use COMPCL to determine if compiler done at FTLEN2 * ETMCL can be zero, on a fast machine (1MHz Athlon) and an O/S * with poor runtime resolution (Linux). Result was all execution * time was charged to compiler, and execution time reported as zero! * * Revision 1.81 1998/12/29 06:14:48 phil * [PLB69] move CASECL to alphabeticly correct location * * Revision 1.80 1997/11/08 03:03:12 phil * [PLB68] remove keyword tracing for ERRTEXT * doesn't work (output as integer) * neither SNOBOL4+ nor SPITBOL do it * * Revision 1.79 1997/11/06 05:59:02 phil * [PLB67] replace PROC with XPROC on merged scanner functions * * Revision 1.78 1997/10/31 05:13:16 phil * [PLB66] catch bad data at PATBRA * * Revision 1.77 1997/10/29 06:36:09 phil * XRTNL3 typo * * Revision 1.76 1997/10/29 06:21:53 phil * [PLB65] merged matching functions into SCIN1 * * Revision 1.75 1997/10/24 20:21:04 phil * [PLB64] from SNOBOL4+ * Allow reals in INTVAL * * Revision 1.74 1997/09/09 20:14:14 phil * [PLB63] call io_pad() to fix up for -LIST RIGHT * * Revision 1.73 1997/09/08 05:22:19 phil * [PLB62] set LNBFSP length from TEXTSP after input * so listings don't end up showing old, long lines * this kills "LIST RIGHT", but it was of pretty dubious * value with a compiler "card size" of 1024 * * Revision 1.72 1997/09/08 03:40:11 phil * [PLB61] flushed INBFSP, SEQSIZ * init TEXTSP before STREAD in compiler * perform STREAD using TEXTSP to get returned line length * * Revision 1.71 1997/09/03 04:44:07 phil * [PLB60] Add "Output error" * Check IOKEY after user OUTPUT * Check return from ENDFILE * * Revision 1.70 1997/08/06 05:51:27 phil * [PLB59] from SNOBOL4+ * seperate syntax tables for BREAK(X) and SPAN * simple index lookup for ANY/NOTANY * * Revision 1.69 1997/07/25 21:53:52 phil * [PLB58] Incremented COMDCT, added comment * no need to explicitly clear INCSTK! * * Revision 1.68 1997/07/03 02:08:29 phil * [PLB57] Upped CARDSZ back to 1024 * * Revision 1.67 1997/05/22 05:03:21 phil * [PLB56] Removed duplicate COPYSP; Expressions now legal in ARRAY macro * * Revision 1.66 1997/04/03 02:55:36 phil * [PLB55] Add Catspaw SPITBOL style optional arg to DATE() * * Revision 1.65 1997/02/13 06:53:54 phil * [PLB54] add vm_gc_advise calls * * Revision 1.64 1996/10/25 21:34:22 phil * [PLB53] Add io_flushall calls * * Revision 1.63 1996/10/20 04:06:15 phil * [PLB52] add SPITBOL SET() function (from SNOBOL4+ SEEK/TELL) * * Revision 1.62 1996/10/17 02:31:18 phil * [PLB51] Implement format/options for INPUT() * Pass format/options to OUTPUT() * Use XCALLC; XOPEN[IO] deprecated * fixed INPUT(V,U,O,N) and OUTPUT(V,U,O,N) comments * * Revision 1.61 1996/10/13 22:04:16 phil * [PLB50] fixes from SNOBOL4+ to avoid "Internal Errors" on bad CODE() args * * Revision 1.60 1996/10/13 05:53:04 phil * [PLB49] use YCL for error pointer * add COMPCL; don't show syntax errors after compilation done * set &ERRTEXT with compilation error messages! * * Revision 1.59 1996/10/12 04:09:35 phil * [PLB48] Don't crash trying to print CODE() syntax errors * * Revision 1.58 1996/10/08 06:21:28 phil * [PLB47] display signal number (SIGNCL) in SYSCUT * * Revision 1.57 1996/10/05 06:28:51 phil * [PLB46] moved INCSTK to ICLBLK (sir.sno GC crashed compiler) * increased FNLIST free space to 20 functions * more comment tweaking * * Revision 1.56 1996/10/04 04:17:13 phil * [PLB45] increased STSIZE from 1000 to 1500 * use plain constant for space at end of FNLIST * * Revision 1.55 1996/09/30 23:41:41 phil * [PLB44] use getpmproto() to get autoload prototypes * * Revision 1.54 1996/09/30 17:07:21 phil * don't zap FILENM at XLATND, so if there are no executable statements * (just an END), we have a file name to display for "Last statement"! * * Revision 1.53 1996/09/30 05:53:19 phil * [PLB43] renamed EXP to EXPOP * * Revision 1.52 1996/09/28 05:20:56 phil * fix typos from last checkin * * Revision 1.51 1996/09/25 07:46:20 phil * [PLB42] added auto-load; uses pm_prototypes from pml.c * * Revision 1.50 1996/09/24 06:45:22 phil * [PLB41] removed PDLBLK (pm stack); now allocated in init.c * dropped SPDLDZ back to 5000 * * Revision 1.49 1996/09/23 04:59:32 phil * [PLB40] handle tabs in error pointer code * include file & line in compiler error messages * use MOVA for &LAST(FILE|LINE), moved FILCHK * * Revision 1.48 1996/09/22 05:52:28 phil * [PLB39] add &PARM, fixed yesterdays pre-checkin typos * * Revision 1.47 1996/09/21 07:05:58 phil * [PLB38] more comment cleanup, fixed comment typos * don't increment &STCOUNT if &STLIMIT < 0 * keep seperate stmt count for stats output * add errors for bad INCLUDE, INCLUDE open error, missing END * add &LINE &FILE and -LINE for real source line in errors * add S4+ CTLADV proc, use for INCLUDE and LINE processing * put all control card tests in a row * add &LASTLINE &LASTFILE &ERRTEXT keywords * changed formats; added file/line to errors * * Revision 1.46 1996/09/19 01:02:25 phil * [PLB37] add REVERSE(), SUBSTR(), LEQ(), LGE(), LLE(), LLT(), LNE() * from SNOBOL4+ & Minnesota SNOBOL4 * * Revision 1.45 1996/09/13 03:45:23 phil * [PLB36] Add TERMINAL I/O variable; flushed PUNCH * * Revision 1.44 1996/09/12 00:46:52 phil * fix sort; edit [PLB31] added one MULTC too many * * Revision 1.43 1996/09/09 02:47:33 phil * [PLB35] only case fold strings in FIELD (fix from SNOBOL4+) * upped SPLDSZ to 10k for snocone.sno * * Revision 1.42 1996/09/07 05:25:55 phil * [PLB34] FREEZE()/THAW(), new table access code from SNOBOL4+ * added -EXECUTE/-NOEXECUTE control cards * ran untabify (skipped RCS History) * moved all [edit] ids to column 64+ * moved SORT to Arrays, Tables etc section * * Revision 1.41 1996/09/05 04:32:22 phil * [PLB33] control card/switch/system variable changes; * &STLIMIT < 0 means no limit, default to -1 * always case fold control card keywords * disable stats by default * default listing off (was being hit by init.c) * removed EXPCL; default SPITCL to on * fixed SPITBOL ? operator at top level * * Revision 1.40 1996/09/04 03:00:06 phil * [PLB32] Add SPITBOL operators (under -PLUSOPS) from SNOBOL4+ * * Revision 1.39 1996/09/01 05:12:56 phil * [PLB31] Add SPITBOL features with code from SNOBOL4+ and Minnesota SNOBOL4; * CHAR(), RPAD()/LPAD(), BREAKX(), SORT()/RSORT() * * Revision 1.38 1996/08/25 01:55:14 phil * [PLB30] pull CASECL check up out of VPXPTR; saves call if not folding * * Revision 1.37 1996/08/20 04:12:59 phil * [PLB29] added real VARVUP, VPXPTR (Thanks to Mark Emmer) * * Revision 1.36 1996/08/08 03:38:01 phil * [PLB28] changes from 7/28/95!! * VARVUP (copy of VARVAL for now), and calls to it * * Revision 1.35 1995/07/28 18:40:34 phil * [PLB27] change GNVARC to GENVUP (what it's called in SNOBOL4+ sources) * * Revision 1.34 1995/01/06 18:25:37 phil * [PLB26] 11/3/94 fixed case sensitivity for local variables * * Revision 1.33 1994/07/07 15:15:57 budd * [PLB25] Added FAILG label so FAIL can be inlined * Another 9% improvement in compile and execution times! * * Revision 1.32 94/06/24 14:53:11 budd * [PLB24] Added RTNL3G label so RTNUL3 can be inlined * * Revision 1.31 94/06/21 02:43:12 budd * [PLB23] fixed problem reported by Phillip Thomas * moved XLATNX label so that "card" processing restarts after * and EOS (semi). This allows ';*' to be used as an EOL comment * Also allows control cards after EOS! * Negative side effect is that listings show the STNO of the *LAST* * statement on the line, rather than the first, as before!! * * Revision 1.30 94/06/17 16:06:19 budd * [PLB22] drop CARDSZ down to 132 to make listings managable! * * Revision 1.29 94/06/15 23:33:12 budd * [PLB21] Upped compiler and default input record (line) * buffer length from 80 to 1024. * * Revision 1.28 94/06/13 02:25:18 budd * [PLB20] Implement -COPY/-INCLUDE * * Revision 1.27 94/06/03 12:50:49 budd * [PLB19] always honor length from STREAD * otherwise input ends up padded * * Revision 1.26 94/05/29 15:00:35 budd * [PLB18] Added &LCASE &UCASE * Fixed a bug in -CASE processing * Changed ms/stmt output format * * Revision 1.25 94/05/26 01:14:52 budd * [PLB17] More CASE dependancies * * Revision 1.24 94/05/25 23:28:35 budd * [PLB16] changed &TRIM default back to 0 * * Revision 1.23 94/05/25 02:30:10 budd * [PLB15] Implemented SPITBOL &CASE/-CASE * Moved Un*x version messages to version.c * * Revision 1.22 94/05/02 19:03:26 budd * [PLB14] use %15d formats (were %15i) * discovered by Jerry Leichter in port to VMS! * * Revision 1.21 94/02/19 00:21:31 budd * updated date, for *REAL* BETA1! * * Revision 1.20 94/01/25 12:29:29 budd * BETA1 release * * Revision 1.19 94/01/17 01:54:42 budd * [PLB13] set RETCOD (exit code) for compilation/runtime errors * including when execution aborted by -NOERRORS * * Revision 1.18 94/01/09 00:16:03 budd * default listing side now LEFT * tweaked SOURCF, UNIXF2 * * Revision 1.17 94/01/08 23:37:41 budd * [PLB12] output UNIXF UNIXF2 at startup * output error name string to stderr * implemented -b (BANRCL), -s (STATCL) * * Revision 1.16 94/01/07 17:54:04 budd * [PLB11] caseifed STRINGS, fixed TIMEPS format * * Revision 1.15 94/01/07 16:23:28 budd * [PLB10] converted FORMAT strings to printf-style, mixed-case * * Revision 1.14 93/12/09 14:37:00 budd * ALPHA1 release * * Revision 1.13 93/12/04 23:51:26 budd * [PLB9] Implemented -ERRORS/-NOERRORS control cards (default -NOERRORS) * * Revision 1.12 93/12/04 00:13:25 budd * [PLB8] send errors to stderr (via ERRBLK) as well as listing * * Revision 1.11 93/11/23 11:05:43 budd * [PLB7] upped SPDLSZ to 5000 to run atn.sno * * Revision 1.10 93/11/19 16:32:38 budd * [PLB6] default &TRIM to 1 * * Revision 1.9 93/11/10 20:52:49 phil * [PLB5] send all termination msgs, stats to stderr (PUNCH) * * Revision 1.8 93/11/10 20:11:08 phil * [PLB4] added (optional) 4th filename arg to * INPUT() and OUTPUT() using XOPENI and XOPENO ops. * Added XECOMP op to tell I/O sys when compile done. * * Revision 1.7 93/11/10 11:12:55 phil * dropped initial FNLIST user functions back to 10 * * Revision 1.6 93/11/10 01:38:50 phil * [PLB3] send title, attribution and compilation results * to stderr (PUNCH) * * Revision 1.5 93/11/10 01:28:29 phil * [PLB2] made space for up to 50 user function at end of FNLIST * * Revision 1.4 93/11/02 13:35:01 phil * [PLB1] dropped sequence field size (SEQSIZ) to zero! * * Revision 1.3 93/11/02 13:26:11 phil * Fixed garbled characters near END2 and AERROR * * Revision 1.2 93/11/02 13:25:46 phil * Added RCS Id and Log keywords * * TITLE 'Table of Contents' * * * E32 (DECEMBER 18, 1969) V3.7 * UPDATED TO VERSION 3.10, NOV. 1, 1972 V3.10 * * UPDATED TO VERSION 3.11, MAY 19, 1975. V3.11 * RESEQUENCED DECEMBER 20, 1980. V3.11 * Corrected April 10, 1985 (lines 3393 and 5033). * 1. Linkage and Equivalences * Linkage * Machine Dependent Parameters * Constants * Equivalences * Data Type Codes * 2. Program Initialization * 3. Compilation and Interpreter Invocation * 4. Support Procedures * AUGATL * CODSKP * DTREP * FINDEX * 5. Storage Allocation and Regeneration Procedures * BLOCK * GENVAR * GNVARI * CONVAR * GNVARS * GC * GCM * SPLIT * 6. Compilation Procedures * BINOP * CMPILE * ELEMNT * EXPR * FORWRD * NEWCRD * TREPUB * UNOP * 7. Interpreter Executive and Control Procedures * BASE * GOTG * GOTL * GOTO * INIT * INTERP * INVOKE * 8. Argument Evaluation Procedures * ARGVAL * EXPVAL * EXPEVL * EVAL * INTVAL * PATVAL * VARVAL * VARVUP * VPXPTR * XYARGS * 9. Arithmetic Operations, Predicates and Functions * ADD * DIV * EXPOP * MPY * SUB * EQ * GE * GT * LE * LT * NE * REMDR * INTGER * MNS * PLS * 10. Pattern-Valued Functions and Operations * ANY * BREAKX * BREAK * NOTANY * SPAN * LEN * POS * RPOS * RTAB * TAB * ARBNO * ATOP (Cursor Position) * NAM (Value Assignment) * DOL * OR * 11. Pattern Matching Procedures * SCAN * SJSR (Scan and Replace) * SCNR (Basic Scanner) * BRKC * BRKX * NNYC * SPNC * ANYC * BRKXF * LNTH * POSI * RPSI * RTB * TB * ARBN (ARBNO) * FARB (ARB Backup) * ATP (Cursor Position) * BAL * CHR * STAR (Unevaluated Expression) * DSAR * FNCE * NME (Value Assignment) * ENME * DNME * ENMI (Immediate Value Assignment) * SUCE (SUCCEED) * 12. Defined Functions * DEFINE * DEFFNC (Invoke Defined Function) * 13. External Functions * LOAD * UNLOAD * LNKFNC (Link to External Function) * 14. Arrays, Tables, and Defined Data Objects * ARRAY * ASSOC (TABLE) * DATDEF (DATA) * PROTO * FREEZE * THAW * ITEM (Array and Table References) * DEFDAT (Create Data Object) * FIELD * RSORT * SSORT * 15. Input and Output * READ (INPUT) * PRINT (OUTPUT) * BKSPCE * ENDFIL * REWIND * SET * DETACH * PUTIN * PUTOUT * 16. Tracing Procedures and Functions * TRACE * STOPTR * FENTR (Call Tracing) * FENTR2 * KEYTR * TRPHND (Trace Handler) * VALTR * FNEXT2 * 17. Other Operations * ASGN (=) * CONCAT (Concatenation) * IND (Indirect Reference) * KEYWRD * LIT * NAME * NMD (Value Assignment) * STR (Unevaluated Expression) * 18. Other Predicates * DIFFER * FUNCTN * IDENT * LABEL * LEQ * LGE * LGT * LLE * LLT * LNE * NEG * QUES (?) * CHAR * LPAD * RPAD * 19. Other Functions * APPLY * ARG * LOCAL * FIELDS * CLEAR * CMA * COLECT * COPY * CNVRT * DATE * DT * DMP * DUMP * DUPL * OPSYN * RPLACE * REVERS * SIZE * TIME * TRIM * VDIFFR * 20. Common Code * 21. Termination * END * FTLEND * SYSCUT * 22. Error Handling * 23. Data * Pair Lists * Data Type Pairs * Switches * Constants * Pointers to Patterns * Function Descriptors * Miscellaneous Data * Program Pointers * Pointers to Specifiers * Permanent Pair List Pointers * Specifiers for Compilation * Strings and Specifiers * Character Buffers * Pointers to Pair Lists * Scratch Descriptors * System Descriptors * Compiler Descriptors * Data Pointers * Specifiers * Allocator Data * Machine Dependent Data * Function Table * Function Pair List * Function Initialization Data * Pointers to Initialization Data * System Arrays * String Storage Bin List * Pattern-Matching History List * System Stack * Primitive Patterns * Code Skeleton for TRACE * Fatal Error Message Pointers * Fatal Error Messages * Compiler Error Messages * Formats * TITLE 'Linkage and Equivalences' COPY MLINK Linkage segment COPY PARMS Machine-dependent parameters * * Constants * ATTRIB EQU 2*DESCR Offset of label in string structure LNKFLD EQU 3*DESCR Offset of link in string structure BCDFLD EQU 4*DESCR Offset of string in string structure FATHER EQU DESCR Offset of father in code node LSON EQU 2*DESCR Offset of left son in code node RSIB EQU 3*DESCR Offset of right sibling in code node CODE EQU 4*DESCR Offset of code in code node ESASIZ EQU 50 Limit on number of syntactic errors FBLKSZ EQU 10*DESCR Size of function descriptor block ARRLEN EQU 20 Limit on length of array print image CARDSZ EQU 1024 Width of compiler input [PLB21][PLB57] STNOSZ EQU 8 Length of statement number field DSTSZ EQU 2*STNOSZ Space for left and right numbering CNODSZ EQU 4*DESCR Size of code node DATSIZ EQU 1000 Limit on number of defined data type EXTSIZ EQU 10 Default allocation for tables NAMLSZ EQU 20 Growth quantum for name list NODESZ EQU 3*DESCR Size of pattern node OBSFT EQU 13 Power of two for bin headers [PLB75] OBSIZ EQU 1<