Annotation of researchv10no/cmd/spitbol/4.3/diff.out, revision 1.1

1.1     ! root        1: 1,4c1,6
        !             2: <        TTL  S P I T B O L - REVISION HISTORY
        !             3: <        EJC
        !             4: < *      R E V I S I O N   H I S T O R Y
        !             5: < *      -------------------------------
        !             6: ---
        !             7: > *      CHANGES [SGD]
        !             8: > *      -------------
        !             9: > *      1. COMMENTED OUT DEFAULT .DEF, .UNDEF AS THESE MACHINE-
        !            10: > *         DEPENDENT.  I SUGGEST AGAIN THAT THESE DO NOT BELONG
        !            11: > *         IN MINIMAL SOURCE, UNLESS SOMETHING OF THE FORM .*DEF
        !            12: > *         IS TO BE INCORPORTATED INTO MINIMAL LANGUAGE DEFN.
        !            13: 5a8,11
        !            14: > *      2. NOTED THAT DESCRIPTION OF BEV, BOD MISSING FROM
        !            15: > *         SBL42.CMT MINIMAL DESCRIPTION, AND DISCUSSION OF
        !            16: > *         "ODD"/"EVEN" AND REQUIREMENTS PERTAINING THERETO
        !            17: > *         SEEMS INSUFFICIENT.
        !            18: 7,8c13,21
        !            19: < *      VERSION 3.5B (FEB 81... - SGD PATCHES)
        !            20: < *      -----------------------------------
        !            21: ---
        !            22: > *      3. PERMIT CODE KEYWORD TO CONTAIN ANY INTEGER VALUE.
        !            23: > *         THIS CONSISTS OF REMOVING THE ENFORCED RESTRICTION
        !            24: > *         IN ASIGN (SEE ASG24), SINCE CODE CONTAINS NO RELOC.
        !            25: > *         USE OF KEYWORD VALUE (AS IT SHOULDNT).  SBL DOC.
        !            26: > *         MUST BE UPDATED.  ADDRESS OF CODE VALUE NOW PASSED TO
        !            27: > *         OSINT (KVCOD), INSTEAD OF VALUE ITSELF.  HENCE OSINT
        !            28: > *         DOCUMENTATION MUST LIKEWISE BE REVISED.  CHANGES
        !            29: > *         MADE IN KEYWORD DEFINITION TABLES, PROCEDURES ACESS
        !            30: > *         AND ASIGN SINCE CODE NOW SPECIAL KEYWORD.
        !            31: 10,42c23,24
        !            32: < *      SGD03 - ADDITION OF .CNCI AND SYSCI (INT->STRING
        !            33: < *              SYSTEM ROUTINE OPTION)
        !            34: < *      SGD04 - (06-MAY-1981) MODIFIED INILN TO 132
        !            35: < *      SGD05 - (13-MAY-1981) INSERTED MISSING WTB AFTER SYSMM
        !            36: < *              CALLS
        !            37: < *      SGD06 - (25-MAY-1981) MERGED IN PROFILER PATCHES
        !            38: < *              (NOT MARKED)
        !            39: < *      SGD07 - (25-MAY-1981) MUCHO PATCHES TO PROFILER (MARKED,
        !            40: < *              BUT BEST JUST TO EXTRACT ENMASSE)
        !            41: < *      SGD08 - (25-MAY-1981) USE STRING LENGTH IN HASHS
        !            42: < *      SGD09 - (25-MAY-1981) FIXED SERIOUS PARSER PROBLEM
        !            43: < *              RELATING TO (X Y) ON LINE BEING VIEWED AS PATTERN
        !            44: < *              MATCH.  FIXED BY ADDITION OF NEW CMTYP VALUE
        !            45: < *              C$CNP (CONCATENATION - NOT PATTERN MATCH)
        !            46: < *      SGD10 - (01-AUG-1981) FIXED EXIT(N) RESPECIFICATION CODE
        !            47: < *              TO PROPERLY OBSERVE HEADER SEMANTICS ON RETURN.
        !            48: < *      SGD11 - (07-AUG-1981) BYPASS PRTPG CALL AT INITIALIZATION
        !            49: < *              FOLLOWING COMPILATION IF NO OUTPUT GENERATED.
        !            50: < *              THIS PREVENTS OUTPUT FILES CONSISTING OF THE
        !            51: < *              HEADERS AND A FEW BLANK LINES WHEN THERE IS NO
        !            52: < *              SOURCE LISTING AND NO COMPILATION STATS.
        !            53: < *              ALSO FIX TIMSX INITIALIZATION IN SAME CODE.
        !            54: < *      SGD12 - (17-AUG-1981) B$EFC CODE DID NOT CHECK FOR
        !            55: < *              UNCONVERTED RESULT RETURNING NULL STRING.  FIXED.
        !            56: < *      SGDBF - (   NOV-1981) ADDED BUFFER TYPE AND SYMBOL CNBF
        !            57: < *      SGD13 - (03-MAR-1982) LOAD PFVBL FIELD IN RETRN FOR
        !            58: < *              RETURN TRACING. THIS WAS CAUSING BUG ON RETURN
        !            59: < *              TRACES THAT TRIED TO ACCESS THE VARIABLE NAME
        !            60: < *      SGD14 - ADDED CHAR FUNCTION.  CHAR(N) RETURNS NTH
        !            61: < *              CHARACTER OF HOST MACHINE CHARACTER SET.
        !            62: < *              NOT CONDITIONALIZED OR MARKED.
        !            63: < *      SGD15 - FIXED PROBLEM RELATING TO COMPILATION OF GOTO
        !            64: < *              FIELDS CONTAINING SMALL INTEGERS (IN CONST SEC).
        !            65: ---
        !            66: > *         EROSI RETURNS NOW CONTAIN NEW CODE KEYWORD VALUE IN
        !            67: > *         IA. OSINT DOCUMENTATION MUST BE REVISED.
        !            68: 44,48c26,29
        !            69: < *      REG01 - (XX-AUG-82)
        !            70: < *              ADDED CFP$U TO EASE TRANSLATION ON SMALLER
        !            71: < *              SYSTEMS                  - CONDITIONAL .CUCF
        !            72: < *              ADDED LOWER CASE SUPPORT - CONDITIONAL .CULC
        !            73: < *              ADDED SET I/O FUNCTION   - CONDITIONAL .CUST
        !            74: ---
        !            75: > *         INTERESTINGLY, THIS SHOULD PERMIT THE SPITBOL PROGRAM
        !            76: > *         TO INTERROGATE THE CODE KEYWORD AT THE START OF
        !            77: > *         EXECUTION TO DETERMINE IF COMPILATION ERRORS
        !            78: > *         OCCURRED.
        !            79: 50,51c31,46
        !            80: < *      REG02 - (XX-SEP-82)
        !            81: < *              CHANGED INILN AND AND INILS TO 258
        !            82: ---
        !            83: > *      4. ADD -COPY "FILETAG" CONTROL CARD.  -COPY PERMITTED IN
        !            84: > *         CODE STRINGS.  NESTING IS PERMITTED TO ANY LEVEL,
        !            85: > *         THOUGH OSINT IS FREE TO RESTRICT THE MAXIMUM LEVEL.
        !            86: > *         NOTE REQUIREMENT FOR FILETAG SPECIFIED AS
        !            87: > *         STRING CONSTANT SINCE FILETAGS MAY CONTAIN SEMICOLONS.
        !            88: > *         I HAVE TRIED TO MAKE THIS ENHANCEMENT WITH MINIMUM
        !            89: > *         (MINIMAL?) AMOUNT OF NEW CODE, SO THE FEATURE IS
        !            90: > *         NOT CONDITIONALIZED.  THE SOLUTION
        !            91: > *         REQUIRED THE ADDITION OF A NEW BLOCK TYPE (COBLK) TO
        !            92: > *         BUILD THE INPUT CONTEXT SAVE STACK AS A CHAIN OF
        !            93: > *         COBLKS.  A RECUSIVE SOLUTION ON CMPIL/READR/NEXTS
        !            94: > *         WOULD HAVE REQUIRED EXTENSIVE MODIFICATIONS AND
        !            95: > *         SUBSTANTIAL NEW CODE.  NOTE THAT FORMS SUCH AS
        !            96: > *         CODE('-COPY "FILE.SBL"') ARE ACCEPTABLE, WHICH IS
        !            97: > *         VIEWED AS SIGNIFICANT ENHANCEMENT IN ADDITION TO
        !            98: > *         COMPILE-TIME INCLUDE.
        !            99: 53,59c48,50
        !           100: < *      REG03 - (XX-OCT-82)
        !           101: < *              CONDITIONALIZED THE PAGE EJECT AFTER CALL TO SYSBX
        !           102: < *              AND ADDED ANOTHER BEFORE CALL TO SYSBX, SO THAT,
        !           103: < *              IF DESIRED BY THE IMPLEMENTOR, STANDARD OUTPUT
        !           104: < *              WILL REFLECT ASSIGNMENTS MADE BY EXECUTING PROGRAM
        !           105: < *              ONLY. CONDITIONAL .CUEJ CONTROLS - IF DEFINED
        !           106: < *              EJECT IS BEFORE CALL TO SYSBX.
        !           107: ---
        !           108: > *         TO SUPPORT THIS FEATURE, TWO NEW OSINT ROUTINES ARE
        !           109: > *         DEFINED, SYSSC (START COPY) AND SYSEC (END COPY) WITH
        !           110: > *         LOGICS DESCRIBED IN THE .CMT FILE.
        !           111: 61,63c52,57
        !           112: < *      REG04 - (XX-NOV-82)
        !           113: < *              FIXED DIFFICULTIES WITH LISTINGS DURING EXECUTION
        !           114: < *              WHEN NO LISTING GENERATED DURING COMPILATION.
        !           115: ---
        !           116: > *         BECAUSE OF ANNOYANCE FACTOR, SOURCE LISTING OF
        !           117: > *         CODE() INFO VIA -LIST, INCLUDING -COPY INPUT, IS
        !           118: > *         NO LONGER POSSIBLE.  IF THIS IS PERMITTED, THEN
        !           119: > *         ONE FINDS -COPY INPUT BEING PRINTED ON STD.
        !           120: > *         OUTPUT CHANNEL (DEPENDING ON STATE OF -LIST),
        !           121: > *         UNLESS EXPLICIT -NOLIST IS GIVEN.
        !           122: 65,67c59,63
        !           123: < *              -LIST TO CODE() CAUSED BOMB. FIX IS TO RESET
        !           124: < *              R$TTL AND R$STL TO NULLS NOT 0 AFTER COMPILATION.
        !           125: < *              (LISTR AND LISTT EXPECT NULLS)
        !           126: ---
        !           127: > *      5. THE DOCUMENTATION FOR SYSIO IS INCONSISTENT.  IT
        !           128: > *         SHOWS 0,1,2,3 BEING POSSIBLE INPUTS DEPENDING ON
        !           129: > *         INPUT/OUTPUT, STD/NONSTD.  HOWEVER, IT ALSO APPEARS
        !           130: > *         (AND IS STATED) THAT SYSIO IS NOT CALLED FOR STD
        !           131: > *         INPUT/OUTPUT.
        !           132: 69,224c65,67
        !           133: < *              WHEN LISTING AND STATISTICS ROUTED TO DIFFERENT
        !           134: < *              FILE THAN EXECUTION OUTPUT, ERROR MESSAGE IS SENT
        !           135: < *              TO EXECUTION OUTPUT (AND GETS SEPARATED FROM
        !           136: < *              ... IN STATEMENT ... MSG). LABO1 CALLS SYSAX AND
        !           137: < *              STOPR DOES NOT CALL SYSAX IF ENTERED FROM LABO1.
        !           138: < *
        !           139: < *      REG05 - (XX-NOV-82)
        !           140: < *              PREVENT CLEAR() FROM CLOBBERING PROTECTED VARIABLES
        !           141: < *              AT LABEL SCLR5.
        !           142: < *
        !           143: < *      REG06 - (XX-NOV-82)
        !           144: < *              FIXED GTEXP FROM ACCEPTING TRAILING SEMICOLON OR
        !           145: < *              COLON. NOT LEGAL WAY TO END AN EXPRESSION.
        !           146: < *
        !           147: < *      VERSION 3.5A (OCT 79 - SGD PATCHES)
        !           148: < *      -----------------------------------
        !           149: < *
        !           150: < *      SGD01 - PATCH IN ASIGN TO FIX MULTIPLE TRAP BLOCK PROBLEM
        !           151: < *              (ASG10+2)
        !           152: < *      SGD02 - PATCH IN GTARR TO FIX NULL CONVERT (GTAR9+0)
        !           153: < *
        !           154: <        TTL  S P I T B O L  -- BASIC INFORMATION
        !           155: <        EJC
        !           156: < *
        !           157: < *      GENERAL STRUCTURE
        !           158: < *      -----------------
        !           159: < *
        !           160: < *      THIS PROGRAM IS A TRANSLATOR FOR A VERSION OF THE SNOBOL4
        !           161: < *      PROGRAMMING LANGUAGE. LANGUAGE DETAILS ARE CONTAINED IN
        !           162: < *      THE MANUAL MACRO SPITBOL BY DEWAR AND MCCANN, TECHNICAL
        !           163: < *      REPORT 90, UNIVERSITY OF LEEDS 1976.  THE LANGUAGE
        !           164: < *      IS IDENTICAL TO THAT IMPLEMENTED BY THE BTL TRANSLATOR
        !           165: < *      (R. E. GRISWOLD ET AL.) WITH THE FOLLOWING EXCEPTIONS.
        !           166: < *
        !           167: < *      1)   REDEFINITION OF STANDARD SYSTEM FUNCTIONS AND
        !           168: < *           OPERATORS IS NOT PERMITTED.
        !           169: < *
        !           170: < *      2)   THE VALUE FUNCTION IS NOT PROVIDED.
        !           171: < *
        !           172: < *      3)   ACCESS TRACING IS PROVIDED IN ADDITION TO THE
        !           173: < *           OTHER STANDARD TRACE MODES.
        !           174: < *
        !           175: < *      4)   THE KEYWORD STFCOUNT IS NOT PROVIDED.
        !           176: < *
        !           177: < *      5)   THE KEYWORD FULLSCAN IS NOT PROVIDED AND ALL PATTERN
        !           178: < *           MATCHING TAKES PLACE IN FULLSCAN MODE (I.E. WITH NO
        !           179: < *           HEURISTICS APPLIED).
        !           180: < *
        !           181: < *      6)   A SERIES OF EXPRESSIONS SEPARATED BY COMMAS MAY
        !           182: < *           BE GROUPED WITHIN PARENTHESES TO PROVIDE A SELECTION
        !           183: < *           CAPABILITY. THE SEMANTICS ARE THAT THE SELECTION
        !           184: < *           ASSUMES THE VALUE OF THE FIRST EXPRESSION WITHIN IT
        !           185: < *           WHICH SUCCEEDS AS THEY ARE EVALUATED FROM THE LEFT.
        !           186: < *           IF NO EXPRESSION SUCCEEDS THE ENTIRE STATEMENT FAILS
        !           187: < *
        !           188: < *      7)   AN EXPLICIT PATTERN MATCHING OPERATOR IS PROVIDED.
        !           189: < *           THIS IS THE BINARY QUERY (SEE GIMPEL SIGPLAN OCT 74)
        !           190: < *
        !           191: < *      8)   THE ASSIGNMENT OPERATOR IS INTRODUCED AS IN THE
        !           192: < *           GIMPEL REFERENCE.
        !           193: < *
        !           194: < *      9)   THE EXIT FUNCTION IS PROVIDED FOR GENERATING LOAD
        !           195: < *           MODULES - CF. GIMPELS SITBOL.
        !           196: < *
        !           197: < *
        !           198: < *      THE METHOD USED IN THIS PROGRAM IS TO TRANSLATE THE
        !           199: < *      SOURCE CODE INTO AN INTERNAL PSEUDO-CODE (SEE FOLLOWING
        !           200: < *      SECTION). AN INTERPRETOR IS THEN USED TO EXECUTE THIS
        !           201: < *      GENERATED PSEUDO-CODE. THE NATURE OF THE SNOBOL4 LANGUAGE
        !           202: < *      IS SUCH THAT THE LATTER TASK IS MUCH MORE COMPLEX THAN
        !           203: < *      THE ACTUAL TRANSLATION PHASE. ACCORDINGLY, NEARLY ALL THE
        !           204: < *      CODE IN THE PROGRAM SECTION IS CONCERNED WITH THE ACTUAL
        !           205: < *      EXECUTION OF THE SNOBOL4 PROGRAM.
        !           206: <        EJC
        !           207: < *
        !           208: < *      INTERPRETIVE CODE FORMAT
        !           209: < *      ------------------------
        !           210: < *
        !           211: < *      THE INTERPRETIVE PSEUDO-CODE CONSISTS OF A SERIES OF
        !           212: < *      ADDRESS POINTERS. THE EXACT FORMAT OF THE CODE IS
        !           213: < *      DESCRIBED IN CONNECTION WITH THE CDBLK FORMAT. THE
        !           214: < *      PURPOSE OF THIS SECTION IS TO GIVE GENERAL INSIGHT INTO
        !           215: < *      THE INTERPRETIVE APPROACH INVOLVED.
        !           216: < *
        !           217: < *      THE BASIC FORM OF THE CODE IS RELATED TO REVERSE POLISH.
        !           218: < *      IN OTHER WORDS, THE OPERANDS PRECEDE THE OPERATORS WHICH
        !           219: < *      ARE ZERO ADDRESS OPERATORS. THERE ARE SOME EXCEPTIONS TO
        !           220: < *      THESE RULES, NOTABLY THE UNARY NOT OPERATOR AND THE
        !           221: < *      SELECTION CONSTRUCTION WHICH CLEARLY REQUIRE ADVANCE
        !           222: < *      KNOWLEDGE OF THE OPERATOR INVOLVED.
        !           223: < *
        !           224: < *      THE OPERANDS ARE MOVED TO THE TOP OF THE MAIN STACK AND
        !           225: < *      THE OPERATORS ARE APPLIED TO THE TOP STACK ENTRIES. LIKE
        !           226: < *      OTHER VERSIONS OF SPITBOL, THIS PROCESSOR DEPENDS ON
        !           227: < *      KNOWING WHETHER OPERANDS ARE REQUIRED BY NAME OR BY VALUE
        !           228: < *      AND MOVES THE APPROPRIATE OBJECT TO THE STACK. THUS NO
        !           229: < *      NAME/VALUE CHECKS ARE INCLUDED IN THE OPERATOR CIRCUITS.
        !           230: < *
        !           231: < *      THE ACTUAL POINTERS IN THE CODE POINT TO A BLOCK WHOSE
        !           232: < *      FIRST WORD IS THE ADDRESS OF THE INTERPRETOR ROUTINE
        !           233: < *      TO BE EXECUTED FOR THE CODE WORD.
        !           234: < *
        !           235: < *      IN THE CASE OF OPERATORS, THE POINTER IS TO A WORD WHICH
        !           236: < *      CONTAINS THE ADDRESS OF THE OPERATOR TO BE EXECUTED. IN
        !           237: < *      THE CASE OF OPERANDS SUCH AS CONSTANTS, THE POINTER IS TO
        !           238: < *      THE OPERAND ITSELF. ACCORDINGLY, ALL OPERANDS CONTAIN
        !           239: < *      A FIELD WHICH POINTS TO THE ROUTINE TO LOAD THE VALUE OF
        !           240: < *      THE OPERAND ONTO THE STACK. IN THE CASE OF A VARIABLE,
        !           241: < *      THERE ARE THREE SUCH POINTERS. ONE TO LOAD THE VALUE,
        !           242: < *      ONE TO STORE THE VALUE AND A THIRD TO JUMP TO THE LABEL.
        !           243: < *
        !           244: < *      THE HANDLING OF FAILURE RETURNS DESERVES SPECIAL COMMENT.
        !           245: < *      THE LOCATION FLPTR CONTAINS THE POINTER TO THE LOCATION
        !           246: < *      ON THE MAIN STACK WHICH CONTAINS THE FAILURE RETURN
        !           247: < *      WHICH IS IN THE FORM OF A BYTE OFFSET IN THE CURRENT
        !           248: < *      CODE BLOCK (CDBLK OR EXBLK). WHEN A FAILURE OCCURS, THE
        !           249: < *      STACK IS POPPED AS INDICATED BY THE SETTING OF FLPTR AND
        !           250: < *      CONTROL IS PASSED TO THE APPROPRIATE LOCATION IN THE
        !           251: < *      CURRENT CODE BLOCK WITH THE STACK POINTER POINTING TO THE
        !           252: < *      FAILURE OFFSET ON THE STACK AND FLPTR UNCHANGED.
        !           253: <        EJC
        !           254: < *
        !           255: < *      INTERNAL DATA REPRESENTATIONS
        !           256: < *      -----------------------------
        !           257: < *
        !           258: < *      REPRESENTATION OF VALUES
        !           259: < *
        !           260: < *      A VALUE IS REPRESENTED BY A POINTER TO A BLOCK WHICH
        !           261: < *      DESCRIBES THE TYPE AND PARTICULARS OF THE DATA VALUE.
        !           262: < *      IN GENERAL, A VARIABLE IS A LOCATION CONTAINING SUCH A
        !           263: < *      POINTER (ALTHOUGH IN THE CASE OF TRACE ASSOCIATIONS THIS
        !           264: < *      IS MODIFIED, SEE DESCRIPTION OF TRBLK).
        !           265: < *
        !           266: < *      THE FOLLOWING IS A LIST OF POSSIBLE DATATYPES SHOWING THE
        !           267: < *      TYPE OF BLOCK USED TO HOLD THE VALUE. THE DETAILS OF
        !           268: < *      EACH BLOCK FORMAT ARE GIVEN LATER.
        !           269: < *
        !           270: < *      DATATYPE              BLOCK TYPE
        !           271: < *      --------              ----------
        !           272: < *
        !           273: < *
        !           274: < *      ARRAY                 ARBLK OR VCBLK
        !           275: < *
        !           276: < *      CODE                  CDBLK
        !           277: < *
        !           278: < *      EXPRESSION            EXBLK OR SEBLK
        !           279: < *
        !           280: < *      INTEGER               ICBLK
        !           281: < *
        !           282: < *      NAME                  NMBLK
        !           283: < *
        !           284: < *      PATTERN               P0BLK OR P1BLK OR P2BLK
        !           285: < *
        !           286: < *      REAL                  RCBLK
        !           287: < *
        !           288: < *      STRING                SCBLK
        !           289: ---
        !           290: > *      6. SINCE -PRINT,-NOPRINT REMOVED IN V4, I HAVE
        !           291: > *         REINSTATED THE CIRCUIT IN NEXTS TO AVOID LISTING
        !           292: > *         CONTROL CARDS (-COPY FORCES LIST IN CNCRD THOUGH).
        !           293: 226c69,70
        !           294: < *      TABLE                 TBBLK
        !           295: ---
        !           296: > *      7. WA NOW CONTAINS THE INITIAL VALUE OF &CODE ON ENTRY
        !           297: > *         TO SPITBOL.
        !           298: 228,229c72,77
        !           299: < *      PROGRAM DATATYPE      PDBLK
        !           300: <        EJC
        !           301: ---
        !           302: > *      8. ADDED DDC (DEFINE DISPLAY CONSTANT).  IS IDENTICAL
        !           303: > *         TO DTC EXCEPT THAT ON SYSTEMS SUPPORTING LOWER CASE,
        !           304: > *         THE DISPLAY TEXT CAN BE TRANSLATED WITH A
        !           305: > *         CASE MIX.  FOR EXAMPLE, CAPITALIZE ONLY THE FIRST
        !           306: > *         LETTER, OR THE FIRST LETTER OF EVERY WORD, OR NO
        !           307: > *         UPPER CASE (FOR EUNICHS), ETC.
        !           308: 231,232c79,81
        !           309: < *      REPRESENTATION OF VARIABLES
        !           310: < *      ---------------------------
        !           311: ---
        !           312: > *      9. FIX MINOR OVERSIGHT IN FAILING TO CLEAR R$PMB AT
        !           313: > *         END OF PATTERN MATCH, THUS LEAVING PTR TO BCBLK
        !           314: > *         THAT CANNOT BE COLLECTED.
        !           315: 234,238c83,92
        !           316: < *      DURING THE COURSE OF EVALUATING EXPRESSIONS, IT IS
        !           317: < *      NECESSARY TO GENERATE NAMES OF VARIABLES (FOR EXAMPLE
        !           318: < *      ON THE LEFT SIDE OF A BINARY EQUALS OPERATOR). THESE ARE
        !           319: < *      NOT TO BE CONFUSED WITH OBJECTS OF DATATYPE NAME WHICH
        !           320: < *      ARE IN FACT VALUES.
        !           321: ---
        !           322: > *     10. AFTER CONSULTATION WITH DAVE SHIELDS, IT WAS AGREED
        !           323: > *         TO REINSTATE ARG,FIELD,ITEM AND LOCAL FUNCTIONS.
        !           324: > *         COMMENTS WERE RECEIVED THAT REMOVING THEM BREAKS
        !           325: > *         EXISTING CODE IN DIFFICULT-TO-FIX WAYS, INCLUDING
        !           326: > *         A NUMBER OF THE UTILITY ROUTINES IN GIMPELS BOOK.
        !           327: > *         IN ANY EVENT, THESE ARE SNOBOL4 COMPATIBILITY
        !           328: > *         FUNCTIONS THAT TAKE LITTLE CODE SPACE.  AS A
        !           329: > *         RESULT OF THIS, AND -COPY, ERROR NUMBERS HAVE
        !           330: > *         BEEN PUSHED BACK OVER THE 255 THRESHOLD, WHICH
        !           331: > *         SEEMS UNAVOIDABLE UNLESS MAJOR SURGERY IS DONE.
        !           332: 240,250c94,95
        !           333: < *      FROM A LOGICAL POINT OF VIEW, SUCH NAMES COULD BE SIMPLY
        !           334: < *      REPRESENTED BY A POINTER TO THE APPROPRIATE VALUE CELL.
        !           335: < *      HOWEVER IN THE CASE OF ARRAYS AND PROGRAM DEFINED
        !           336: < *      DATATYPES, THIS WOULD VIOLATE THE RULE THAT THERE MUST BE
        !           337: < *      NO POINTERS INTO THE MIDDLE OF A BLOCK IN DYNAMIC STORE.
        !           338: < *      ACCORDINGLY, A NAME IS ALWAYS REPRESENTED BY A BASE AND
        !           339: < *      OFFSET. THE BASE POINTS TO THE START OF THE BLOCK
        !           340: < *      CONTAINING THE VARIABLE VALUE AND THE OFFSET IS THE
        !           341: < *      OFFSET WITHIN THIS BLOCK IN BYTES. THUS THE ADDRESS
        !           342: < *      OF THE ACTUAL VARIABLE IS DETERMINED BY ADDING THE BASE
        !           343: < *      AND OFFSET VALUES.
        !           344: ---
        !           345: > *     11. VERSION ID CHANGED TO V4.3 DUE TO SUBSTANTIAL
        !           346: > *         CHANGES.
        !           347: 252,253c97,98
        !           348: < *      THE FOLLOWING ARE THE INSTANCES OF VARIABLES REPRESENTED
        !           349: < *      IN THIS MANNER.
        !           350: ---
        !           351: > *     12. PERMIT DOLLAR SIGN IN VARIABLE NAMES.  MINOR
        !           352: > *         CHANGE TO OPERATOR TABLE AND SCANE.
        !           353: 255,256c100,103
        !           354: < *      1)   NATURAL VARIABLE BASE IS PTR TO VRBLK
        !           355: < *                            OFFSET IS *VRVAL
        !           356: ---
        !           357: > *     13. PERMIT BUFFER TYPE FOR LOAD SPECIFICATION.  AS
        !           358: > *         A SIDE-EFFECT, THE CODE FOR BUFFER CONVERSION HAS
        !           359: > *         BEEN CENTRALIZED IN GTBUF.  ALSO FIXED PADDING
        !           360: > *         BUG IN INSBF RELATED TO ZERO PADDING.
        !           361: 258,259c105,108
        !           362: < *      2)   TABLE ELEMENT    BASE IS PTR TO TEBLK
        !           363: < *                            OFFSET IS *TEVAL
        !           364: ---
        !           365: > *     14. DOCUMENT THAT SYSIL MUST NEVER REQUEST ZERO BYTES.
        !           366: > *         DOING SO CAUSES ACESS TO POTENTIALLY CREATE
        !           367: > *         INVALID MEMORY CAUSING LATER GARBAGE COLLECTOR
        !           368: > *         PROBLEMS OR MISADJUSTMENTS OF DNAMP, ETC.
        !           369: 261,262c110,112
        !           370: < *      3)   ARRAY ELEMENT    BASE IS PTR TO ARBLK
        !           371: < *                            OFFSET IS OFFSET TO ELEMENT
        !           372: ---
        !           373: > *     15. VDIFFER FUNCTION ADDED.  VDIFFER(X,Y) RETURNS X
        !           374: > *         IF DIFFERENT FROM Y.  IN MOST CASES IT IS EXPECTED
        !           375: > *         THAT Y WOULD BE NULL.
        !           376: 264,281c114
        !           377: < *      4)   VECTOR ELEMENT   BASE IS PTR TO VCBLK
        !           378: < *                            OFFSET IS OFFSET TO ELEMENT
        !           379: < *
        !           380: < *      5)   PROG DEF DTP     BASE IS PTR TO PDBLK
        !           381: < *                            OFFSET IS OFFSET TO FIELD VALUE
        !           382: < *
        !           383: < *      IN ADDITION THERE ARE TWO CASES OF OBJECTS WHICH ARE
        !           384: < *      LIKE VARIABLES BUT CANNOT BE HANDLED IN THIS MANNER.
        !           385: < *      THESE ARE CALLED PSEUDO-VARIABLES AND ARE REPRESENTED
        !           386: < *      WITH A SPECIAL BASE POINTER AS FOLLOWS=
        !           387: < *
        !           388: < *      EXPRESSION VARIABLE   PTR TO EVBLK (SEE EVBLK)
        !           389: < *
        !           390: < *      KEYWORD VARIABLE      PTR TO KVBLK (SEE KVBLK)
        !           391: < *
        !           392: < *      PSEUDO-VARIABLES ARE HANDLED AS SPECIAL CASES BY THE
        !           393: < *      ACCESS PROCEDURE (ACESS) AND THE ASSIGNMENT PROCEDURE
        !           394: < *      (ASIGN). SEE THESE TWO PROCEDURES FOR DETAILS.
        !           395: ---
        !           396: >        SEC                   FORMAL START OF PROCEDURES SECTION
        !           397: 284,411d116
        !           398: < *      ORGANIZATION OF DATA AREA
        !           399: < *      -------------------------
        !           400: < *
        !           401: < *
        !           402: < *      THE DATA AREA IS DIVIDED INTO TWO REGIONS.
        !           403: < *
        !           404: < *      STATIC AREA
        !           405: < *
        !           406: < *      THE STATIC AREA BUILDS UP FROM THE BOTTOM AND CONTAINS
        !           407: < *      DATA AREAS WHICH ARE ALLOCATED DYNAMICALLY BUT ARE NEVER
        !           408: < *      DELETED OR MOVED AROUND. THE MACRO-PROGRAM ITSELF
        !           409: < *      USES THE STATIC AREA FOR THE FOLLOWING.
        !           410: < *
        !           411: < *      1)   ALL VARIABLE BLOCKS (VRBLK).
        !           412: < *
        !           413: < *      2)   THE HASH TABLE FOR VARIABLE BLOCKS.
        !           414: < *
        !           415: < *      3)   MISCELLANEOUS BUFFERS AND WORK AREAS (SEE PROGRAM
        !           416: < *           INITIALIZATION SECTION).
        !           417: < *
        !           418: < *      IN ADDITION, THE SYSTEM PROCEDURES MAY USE THIS AREA FOR
        !           419: < *      INPUT/OUTPUT BUFFERS, EXTERNAL FUNCTIONS ETC. SPACE IN
        !           420: < *      THE STATIC REGION IS ALLOCATED BY CALLING PROCEDURE ALOST
        !           421: < *
        !           422: < *      THE FOLLOWING GLOBAL VARIABLES DEFINE THE CURRENT
        !           423: < *      LOCATION AND SIZE OF THE STATIC AREA.
        !           424: < *
        !           425: < *      STATB                 ADDRESS OF START OF STATIC AREA
        !           426: < *      STATE                 ADDRESS+1 OF LAST WORD IN AREA.
        !           427: < *
        !           428: < *      THE MINIMUM SIZE OF STATIC IS GIVEN APPROXIMATELY BY
        !           429: < *           12 + *E$HNB + *E$STS + SPACE FOR ALPHABET STRING
        !           430: < *           AND STANDARD PRINT BUFFER.
        !           431: <        EJC
        !           432: < *
        !           433: < *      DYNAMIC AREA
        !           434: < *
        !           435: < *      THE DYNAMIC AREA IS BUILT UPWARDS IN MEMORY AFTER THE
        !           436: < *      STATIC REGION. DATA IN THIS AREA MUST ALL BE IN STANDARD
        !           437: < *      BLOCK FORMATS SO THAT IT CAN BE PROCESSED BY THE GARBAGE
        !           438: < *      COLLECTOR (PROCEDURE GBCOL). GBCOL COMPACTS BLOCKS DOWN
        !           439: < *      IN THIS REGION AS REQUIRED BY SPACE EXHAUSTION AND CAN
        !           440: < *      ALSO MOVE ALL BLOCKS UP TO ALLOW FOR EXPANSION OF THE
        !           441: < *      STATIC REGION.
        !           442: < *      WITH THE EXCEPTION OF TABLES AND ARRAYS, NO SPITBOL
        !           443: < *      OBJECT ONCE BUILT IN DYNAMIC MEMORY IS EVER SUBSEQUENTLY
        !           444: < *      MODIFIED. OBSERVING THIS RULE NECESSITATES A COPYING
        !           445: < *      ACTION DURING STRING AND PATTERN CONCATENATION.
        !           446: < *
        !           447: < *      GARBAGE COLLECTION IS FUNDAMENTAL TO THE ALLOCATION OF
        !           448: < *      SPACE FOR VALUES. SPITBOL USES A VERY EFFICIENT GARBAGE
        !           449: < *      COLLECTOR WHICH INSISTS THAT POINTERS INTO DYNAMIC STORE
        !           450: < *      SHOULD BE IDENTIFIABLE WITHOUT USE OF BIT TABLES,
        !           451: < *      MARKER BITS ETC. TO SATISFY THIS REQUIREMENT, DYNAMIC
        !           452: < *      MEMORY MUST NOT START AT TOO LOW AN ADDRESS AND LENGTHS
        !           453: < *      OF ARRAYS, TABLES, STRINGS, CODE AND EXPRESSION BLOCKS
        !           454: < *      MAY NOT EXCEED THE NUMERICAL VALUE OF THE LOWEST DYNAMIC
        !           455: < *      ADDRESS. TO AVOID EITHER PENALIZING USERS WITH MODEST
        !           456: < *      REQUIREMENTS OR RESTRICTING THOSE WITH GREATER NEEDS ON
        !           457: < *      HOST SYSTEMS WHERE DYNAMIC MEMORY IS ALLOCATED IN LOW
        !           458: < *      ADDRESSES, THE MINIMUM DYNAMIC ADDRESS MAY BE SPECIFIED
        !           459: < *      SUFFICIENTLY HIGH TO PERMIT ARBITRARILY LARGE SPITBOL
        !           460: < *      OBJECTS TO BE CREATED ( WITH THE POSSIBILITY IN EXTREME
        !           461: < *      CASES OF WASTING LARGE AMOUNTS OF MEMORY BELOW THE
        !           462: < *      START ADDRESS). THIS MINIMUM VALUE IS MADE AVAILABLE
        !           463: < *      IN VARIABLE MXLEN BY A SYSTEM ROUTINE, SYSMX.
        !           464: < *      ALTERNATIVELY SYSMX MAY INDICATE THAT A
        !           465: < *      DEFAULT MAY BE USED IN WHICH DYNAMIC IS PLACED
        !           466: < *      AT THE LOWEST POSSIBLE ADDRESS FOLLOWING STATIC.
        !           467: < *
        !           468: < *      THE FOLLOWING GLOBAL WORK CELLS DEFINE THE LOCATION AND
        !           469: < *      LENGTH OF THE DYNAMIC AREA.
        !           470: < *
        !           471: < *      DNAMB                 START OF DYNAMIC AREA
        !           472: < *      DNAMP                 NEXT AVAILABLE LOCATION
        !           473: < *      DNAME                 LAST AVAILABLE LOCATION + 1
        !           474: < *
        !           475: < *      DNAMB IS ALWAYS HIGHER THAN STATE SINCE THE ALOST
        !           476: < *      PROCEDURE MAINTAINS SOME EXPANSION SPACE ABOVE STATE.
        !           477: < *      *** DNAMB MUST NEVER BE PERMITTED TO HAVE A VALUE LESS
        !           478: < *      THAN THAT IN MXLEN ***
        !           479: < *
        !           480: < *      SPACE IN THE DYNAMIC REGION IS ALLOCATED BY THE ALLOC
        !           481: < *      PROCEDURE. THE DYNAMIC REGION MAY BE USED BY SYSTEM
        !           482: < *      PROCEDURES PROVIDED THAT ALL THE RULES ARE OBEYED.
        !           483: <        EJC
        !           484: < *
        !           485: < *      REGISTER USAGE
        !           486: < *      --------------
        !           487: < *
        !           488: < *      (CP)                  CODE POINTER REGISTER. USED TO
        !           489: < *                            HOLD A POINTER TO THE CURRENT
        !           490: < *                            LOCATION IN THE INTERPRETIVE PSEUDO
        !           491: < *                            CODE (I.E. PTR INTO A CDBLK).
        !           492: < *
        !           493: < *      (XL,XR)               GENERAL INDEX REGISTERS. USUALLY
        !           494: < *                            USED TO HOLD POINTERS TO BLOCKS IN
        !           495: < *                            DYNAMIC STORAGE. AN IMPORTANT
        !           496: < *                            RESTRICTION IS THAT THE VALUE IN
        !           497: < *                            XL MUST BE COLLECTABLE FOR
        !           498: < *                            A GARBAGE COLLECT CALL. A VALUE
        !           499: < *                            IS COLLECTABLE IF IT EITHER POINTS
        !           500: < *                            OUTSIDE THE DYNAMIC AREA, OR IF IT
        !           501: < *                            POINTS TO THE START OF A BLOCK IN
        !           502: < *                            THE DYNAMIC AREA.
        !           503: < *
        !           504: < *      (XS)                  STACK POINTER. USED TO POINT TO
        !           505: < *                            THE STACK FRONT. THE STACK MAY
        !           506: < *                            BUILD UP OR DOWN AND IS USED
        !           507: < *                            TO STACK SUBROUTINE RETURN POINTS
        !           508: < *                            AND OTHER RECURSIVELY SAVED DATA.
        !           509: < *
        !           510: < *      (XT)                  AN ALTERNATIVE NAME FOR XL DURING
        !           511: < *                            ITS USE IN ACCESSING STACKED ITEMS.
        !           512: < *
        !           513: < *      (WA,WB,WC)            GENERAL WORK REGISTERS. CANNOT BE
        !           514: < *                            USED FOR INDEXING, BUT MAY HOLD
        !           515: < *                            VARIOUS TYPES OF DATA.
        !           516: < *
        !           517: < *      (IA)                  USED FOR ALL SIGNED INTEGER
        !           518: < *                            ARITHMETIC, BOTH THAT USED BY THE
        !           519: < *                            TRANSLATOR AND THAT ARISING FROM
        !           520: < *                            USE OF SNOBOL4 ARITHMETIC OPERATORS
        !           521: < *
        !           522: < *      (RA)                  REAL ACCUMULATOR. USED FOR ALL
        !           523: < *                            FLOATING POINT ARITHMETIC.
        !           524: <        EJC
        !           525: < *
        !           526: 416,422c121,134
        !           527: < *      ASSEMBLY SYMBOLS ARE REFERRED TO. TO INCORPORATE THE
        !           528: < *      FEATURES REFERRED TO, THE MINIMAL SOURCE SHOULD BE
        !           529: < *      PREFACED BY SUITABLE CONDITIONAL ASSEMBLY SYMBOL
        !           530: < *      DEFINITIONS.
        !           531: < *      IN ALL CASES IT IS PERMISSIBLE TO DEFAULT THE DEFINITIONS
        !           532: < *      IN WHICH CASE THE ADDITIONAL FEATURES WILL BE OMITTED
        !           533: < *      FROM THE TARGET CODE.
        !           534: ---
        !           535: > *      ASSEMBLY SYMBOLS ARE REFERRED TO.
        !           536: > *      A PARTICULAR SET OF DEFAULT SETTINGS IS GIVEN IN THIS
        !           537: > *      SOURCE BY USE OF .DEF AND .UNDEF PSEUDO OPS.
        !           538: > *      A DIFFERENT SELECTION MAY BE MADE BY VARYING THE
        !           539: > *      DEFINITIONS. AS AN ALTERNATIVE, THIS SECTION MAY BE
        !           540: > *      COMMENTED OUT AND THE MINIMAL TRANSLATOR PRELOADED WITH
        !           541: > *      THE SELECTED DEFINITIONS, THUS ALLOWING A MORE DYNAMIC
        !           542: > *      CHOICE TO BE MADE.
        !           543: > *      SOME OF THE CONDITIONAL FEATURES CHOOSE AMONGST A VARIETY
        !           544: > *      OF OPTIONS. OTHERS ARE DEFINED PRINCIPALLY TO ALLOW
        !           545: > *      OMISSION OF A FEATURE WHICH IS NOT WANTED IN ORDER TO
        !           546: > *      SAVE MEMORY OR BECAUSE IT CANNOT BE SUPPORTED.
        !           547: > *      NOTE THAT IF .CPLC OPTION IS CHOSEN, TRANSLATION OF DTC,
        !           548: > *      ERR, ERB ARGUMENTS SHOULD BE TO LOWER CASE.
        !           549: 424,505c136,158
        !           550: < *      .CASL                 DEFINE TO INCLUDE 26 SHIFTED LETTRS
        !           551: < *      .CAHT                 DEFINE TO INCLUDE HORIZONTAL TAB
        !           552: < *      .CAVT                 DEFINE TO INCLUDE VERTICAL TAB
        !           553: < *      .CIOD                 IF DEFINED, DEFAULT DELIMITER IS
        !           554: < *                            NOT USED IN PROCESSING 3RD ARG OF
        !           555: < *                            INPUT() AND OUTPUT()
        !           556: < *      .CNBT                 DEFINE TO OMIT BATCH INITIALISATION
        !           557: < *      .CNCI                 DEFINE TO ENABLE SYSCI ROUTINE
        !           558: < *      .CNEX                 DEFINE TO OMIT EXIT() CODE.
        !           559: < *      .CNLD                 DEFINE TO OMIT LOAD() CODE.
        !           560: < *      .CNPF                 DEFINE TO OMIT PROFILE STUFF
        !           561: < *      .CNRA                 DEFINE TO OMIT ALL REAL ARITHMETIC
        !           562: < *      .CNSR                 DEFINE TO OMIT SORT, RSORT
        !           563: < *      .CSAX                 DEFINE IF SYSAX IS TO BE CALLED
        !           564: < *      .CSN6                 DEFINE TO PAD STMT NOS TO 6 CHARS
        !           565: < *      .CSN8                 DEFINE TO PAD STMT NOS TO 8 CHARS
        !           566: < *      .CUCF                 DEFINE TO INCLUDE CFP$U
        !           567: < *      .CULC                 DEFINE TO INCLUDE &CASE (LC NAMES)
        !           568: < *      .CUST                 DEFINE TO INCLUDE SET() CODE
        !           569: < .DEF   .CASL
        !           570: < .DEF   .CAHT
        !           571: < .DEF   .CIOD
        !           572: < .DEF   .CSAX
        !           573: < .DEF   .CSN8
        !           574: < .DEF   .CUCF
        !           575: < .DEF   .CUEJ
        !           576: < .DEF   .CULC
        !           577: < .DEF   .CUST
        !           578: <        TTL  S P I T B O L -- PROCEDURES SECTION
        !           579: < *
        !           580: < *      THIS SECTION STARTS WITH DESCRIPTIONS OF THE OPERATING
        !           581: < *      SYSTEM DEPENDENT PROCEDURES WHICH ARE USED BY THE SPITBOL
        !           582: < *      TRANSLATOR. ALL SUCH PROCEDURES HAVE FIVE LETTER NAMES
        !           583: < *      BEGINNING WITH SYS. THEY ARE LISTED IN ALPHABETICAL
        !           584: < *      ORDER.
        !           585: < *      ALL PROCEDURES HAVE A  SPECIFICATION CONSISTING OF A
        !           586: < *      MODEL CALL, PRECEDED BY A POSSIBLY EMPTY LIST OF REGISTER
        !           587: < *      CONTENTS GIVING PARAMETERS AVAILABLE TO THE PROCEDURE AND
        !           588: < *      FOLLOWED BY A POSSIBLY EMPTY LIST OF REGISTER CONTENTS
        !           589: < *      REQUIRED ON RETURN FROM THE CALL OR WHICH MAY HAVE HAD
        !           590: < *      THEIR CONTENTS DESTROYED. ONLY THOSE REGISTERS EXPLICITLY
        !           591: < *      MENTIONED IN THE LIST AFTER THE CALL MAY HAVE THEIR
        !           592: < *      VALUES CHANGED.
        !           593: < *      THE SEGMENT OF CODE PROVIDING THE EXTERNAL PROCEDURES IS
        !           594: < *      CONVENIENTLY REFERRED TO AS OSINT (OPERATING SYSTEM
        !           595: < *      INTERFACE). THE SYSXX PROCEDURES IT CONTAINS PROVIDE
        !           596: < *      FACILITIES NOT USUALLY AVAILABLE AS PRIMITIVES IN
        !           597: < *      ASSEMBLY LANGUAGES. FOR PARTICULAR TARGET MACHINES,
        !           598: < *      IMPLEMENTORS MAY CHOOSE FOR SOME MINIMAL OPCODES WHICH
        !           599: < *      DO NOT HAVE REASONABLY DIRECT TRANSLATIONS, TO USE CALLS
        !           600: < *      OF ADDITIONAL PROCEDURES WHICH THEY PROVIDE IN OSINT.
        !           601: < *      E.G. MWB OR TRC MIGHT BE TRANSLATED AS JSR SYSMB,
        !           602: < *      JSR SYSTC IN SOME IMPLEMENTATIONS.
        !           603: < *
        !           604: < *      IN THE DESCRIPTIONS, REFERENCE IS MADE TO --BLK
        !           605: < *      FORMATS (-- = A PAIR OF LETTERS). SEE THE SPITBOL
        !           606: < *      DEFINITIONS SECTION FOR DETAILED DESCRIPTIONS OF ALL
        !           607: < *      SUCH BLOCK FORMATS EXCEPT FCBLK FOR WHICH SYSFC SHOULD
        !           608: < *      BE CONSULTED.
        !           609: < *
        !           610: < *      SECTION 0 CONTAINS INP,INR SPECIFICATIONS OF INTERNAL
        !           611: < *      PROCEDURES,ROUTINES. THIS GIVES A SINGLE PASS TRANSLATOR
        !           612: < *      INFORMATION MAKING IT EASY TO GENERATE ALTERNATIVE CALLS
        !           613: < *      IN THE TRANSLATION OF JSR-S FOR PROCEDURES OF DIFFERENT
        !           614: < *      TYPES IF THIS PROVES NECESSARY.
        !           615: < *
        !           616: <        SEC                   START OF PROCEDURES SECTION
        !           617: < .IF    .CSAX
        !           618: <        EJC
        !           619: < *
        !           620: < *      SYSAX -- AFTER EXECUTION
        !           621: < *
        !           622: < SYSAX  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           623: < *
        !           624: < *      IF THE CONDITIONAL ASSEMBLY SYMBOL .CSAX IS DEFINED,
        !           625: < *      THIS ROUTINE IS CALLED IMMEDIATELY AFTER EXECUTION AND
        !           626: < *      BEFORE PRINTING OF EXECUTION STATISTICS OR DUMP OUTPUT.
        !           627: < *      PURPOSE OF CALL IS FOR IMPLEMENTOR TO DETERMINE AND
        !           628: < *      IF THE CALL IS NOT REQUIRED IT WILL BE OMITTED IF .CSAX
        !           629: < *      IS UNDEFINED. IN THIS CASE SYSAX NEED NOT BE CODED.
        !           630: < *
        !           631: < *      JSR  SYSAX            CALL AFTER EXECUTION
        !           632: ---
        !           633: > *.DEF   .CAHT                 DEFINE TO INCLUDE HORIZONTAL TAB
        !           634: > *.DEF   .CASL                 DEFINE TO INCLUDE 26 SHIFTED LETTRS
        !           635: > *.DEF   .CAVT                 DEFINE TO INCLUDE VERTICAL TAB
        !           636: > *.UNDEF .CEPP                 DEFINE FOR ODD PARITY ENTRY POINTS
        !           637: > *.UNDEF .CNBF                 DEFINE TO OMIT BUFFER EXTENSION
        !           638: > *.UNDEF .CNBT                 DEFINE TO OMIT BATCH INITIALISATION
        !           639: > *.UNDEF .CNEX                 DEFINE TO OMIT EXIT() CODE
        !           640: > *.UNDEF .CNFN                 DEFINE TO OMIT FENCE() CODE
        !           641: > *.UNDEF .CNLD                 DEFINE TO OMIT LOAD() CODE
        !           642: > *.UNDEF .CNPF                 DEFINE TO OMIT PROFILE CODE
        !           643: > *.UNDEF .CNRA                 DEFINE TO OMIT ALL REAL ARITHMETIC
        !           644: > *.UNDEF .CNSR                 DEFINE TO OMIT SORT, RSORT CODE
        !           645: > *.DEF   .CPLC                 DEFINE IF HOST PREFERS LOWER CASE
        !           646: > *.UNDEF .CRPP                 DEFINE FOR ODD PARITY RETURN POINTS
        !           647: > *.UNDEF .CS16                 DEFINE TO INITIALIZE STLIM TO 32767
        !           648: > *.UNDEF .CSAX                 DEFINE IF SYSAX IS TO BE CALLED
        !           649: > *.UNDEF .CSCI                 DEFINE TO ENABLE SYSCI ROUTINE
        !           650: > *.UNDEF .CSCV                 DEFINE FOR CLU, CUL CASE CONVERSION
        !           651: > *.DEF   .CSIG                 DEFINE TO IGNORE CASE OF LETTERS
        !           652: > *.UNDEF .CSN6                 DEFINE TO PAD STMT NOS TO 6 CHARS
        !           653: > *.DEF   .CSN8                 DEFINE TO PAD STMT NOS TO 8 CHARS
        !           654: > *.UNDEF .CTMD                 DEFINE IF SYSTM UNIT IS DECISECOND
        !           655: > .IF    .CASL
        !           656: 506a160,161
        !           657: > .UNDEF .CSIG                 .CSIG USELESS WITHOUT LC LETTERS
        !           658: > .UNDEF .CPLC                 .CPLC ERRONEOUS WITHOUT LC LETTERS
        !           659: 510c165
        !           660: < *      SYSBX -- BEFORE EXECUTION
        !           661: ---
        !           662: > *      ACTUAL PROCESSABLE EXP PROCEDURE DEFINITIONS
        !           663: 512,547c167,169
        !           664: < SYSBX  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           665: < *
        !           666: < *      CALLED AFTER INITIAL SPITBOL COMPILATION AND BEFORE
        !           667: < *      COMMENCING EXECUTION IN CASE OSINT NEEDS
        !           668: < *      TO ASSIGN FILES OR PERFORM OTHER NECESSARY SERVICES.
        !           669: < *      OSINT MAY ALSO CHOOSE TO SEND A MESSAGE TO ONLINE
        !           670: < *      TERMINAL (IF ANY) INDICATING THAT EXECUTION IS STARTING.
        !           671: < *
        !           672: < *      JSR  SYSBX            CALL BEFORE EXECUTION STARTS
        !           673: <        EJC
        !           674: < .IF    .CNCI
        !           675: < *
        !           676: < *      SYSCI -- CONVERT INTEGER
        !           677: < *
        !           678: < SYSCI  EXP
        !           679: < *
        !           680: < *      SYSCI IS AN OPTIONAL OSINT ROUTINE THAT CAUSES SPITBOL TO
        !           681: < *      CALL SYSCI TO CONVERT INTEGER VALUES TO STRINGS, RATHER
        !           682: < *      THAN USING SPITBOL'S OWN INTERNAL CONVERSION CODE.  THIS
        !           683: < *      CODE MAY BE LESS EFFICIENT ON MACHINES WITH HARDWARE
        !           684: < *      CONVERSION INSTRUCTIONS AND IN SUCH CASES, IT MAY BE AN
        !           685: < *      ADVANTAGE TO INCLUDE SYSCI.  THE SYMBOL .CNCI MUST BE
        !           686: < *      DEFINED IF THIS ROUTINE IS TO BE USED.
        !           687: < *
        !           688: < *      THE RULES FOR CONVERTING INTEGERS TO STRINGS ARE THAT
        !           689: < *      POSITIVE VALUES ARE REPRESENTED WITHOUT ANY SIGN, AND
        !           690: < *      THERE ARE NEVER ANY LEADING BLANKS OR ZEROS, EXCEPT IN
        !           691: < *      THE CASE OF ZERO ITSELF WHICH IS REPRESENTED AS A SINGLE
        !           692: < *      ZERO DIGIT.  NEGATIVE NUMBERS ARE REPRESENTED WITH A
        !           693: < *      PRECEEDING MINUS SIGN.  THERE ARE NEVER ANY TRAILING
        !           694: < *      BLANKS, AND CONVERSION CANNOT FAIL.
        !           695: < *
        !           696: < *      (IA)                  VALUE TO BE CONVERTED
        !           697: < *      JSR  SYSCI            CALL TO CONVERT INTEGER VALUE
        !           698: < *      (XL)                  POINTER TO PSEUDO-SCBLK WITH STRING
        !           699: <        EJC
        !           700: ---
        !           701: > .IF    .CSAX
        !           702: > SYSAX  EXP  E,0
        !           703: > .ELSE
        !           704: 549,1250c171,203
        !           705: < *
        !           706: < *      SYSDC -- DATE CHECK
        !           707: < *
        !           708: < SYSDC  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           709: < *
        !           710: < *      SYSDC IS CALLED TO CHECK THAT THE EXPIRY DATE FOR A TRIAL
        !           711: < *      VERSION OF SPITBOL IS UNEXPIRED.
        !           712: < *
        !           713: < *      JSR  SYSDC            CALL TO CHECK DATE
        !           714: < *      RETURN ONLY IF DATE IS OK
        !           715: <        EJC
        !           716: < *
        !           717: < *      SYSDM  -- DUMP CORE
        !           718: < *
        !           719: < SYSDM  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           720: < *
        !           721: < *      SYSDM IS CALLED BY A SPITBOL PROGRAM CALL OF DUMP(N) WITH
        !           722: < *      N GE 3.  ITS PURPOSE IS TO PROVIDE A CORE DUMP.
        !           723: < *      N COULD HOLD AN ENCODING OF THE START ADRS FOR DUMP AND
        !           724: < *      AMOUNT TO BE DUMPED E.G.  N = 256*A + S , S = START ADRS
        !           725: < *      IN KILOWORDS,  A = KILOWORDS TO DUMP
        !           726: < *
        !           727: < *      (XR)                  PARAMETER N OF CALL DUMP(N)
        !           728: < *      JSR  SYSDM            CALL TO ENTER ROUTINE
        !           729: <        EJC
        !           730: < *
        !           731: < *      SYSDT -- GET CURRENT DATE
        !           732: < *
        !           733: < SYSDT  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           734: < *
        !           735: < *      SYSDT IS USED TO OBTAIN THE CURRENT DATE. THE DATE IS
        !           736: < *      RETURNED AS A CHARACTER STRING IN ANY FORMAT APPROPRIATE
        !           737: < *      TO THE OPERATING SYSTEM IN USE. IT MAY ALSO CONTAIN THE
        !           738: < *      CURRENT TIME OF DAY. SYSDT IS USED TO IMPLEMENT THE
        !           739: < *      SNOBOL4 FUNCTION DATE.
        !           740: < *
        !           741: < *      JSR  SYSDT            CALL TO GET DATE
        !           742: < *      (XL)                  POINTER TO BLOCK CONTAINING DATE
        !           743: < *
        !           744: < *      THE FORMAT OF THE BLOCK IS LIKE AN SCBLK EXCEPT THAT
        !           745: < *      THE FIRST WORD NEED NOT BE SET. THE RESULT IS COPIED
        !           746: < *      INTO SPITBOL DYNAMIC MEMORY ON RETURN.
        !           747: <        EJC
        !           748: < *
        !           749: < *      SYSEF -- EJECT FILE
        !           750: < *
        !           751: < SYSEF  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           752: < *
        !           753: < *      SYSEF IS USED TO WRITE A PAGE EJECT TO A NAMED FILE. IT
        !           754: < *      MAY ONLY BE USED FOR FILES WHERE THIS CONCEPT MAKES
        !           755: < *      SENSE. NOTE THAT SYSEF IS NOT NORMALLY USED FOR THE
        !           756: < *      STANDARD OUTPUT FILE (SEE SYSEP).
        !           757: < *
        !           758: < *      (WA)                  PTR TO FCBLK OR ZERO
        !           759: < *      (XR)                  EJECT ARGUMENT (SCBLK PTR)
        !           760: < *      JSR  SYSEF            CALL TO EJECT FILE
        !           761: < *      PPM  LOC              RETURN HERE IF FILE DOES NOT EXIST
        !           762: < *      PPM  LOC              RETURN HERE IF INAPPROPRIATE FILE
        !           763: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !           764: <        EJC
        !           765: < *
        !           766: < *      SYSEJ -- END OF JOB
        !           767: < *
        !           768: < SYSEJ  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           769: < *
        !           770: < *      SYSEJ IS CALLED ONCE AT THE END OF EXECUTION TO
        !           771: < *      TERMINATE THE RUN. THE SIGNIFICANCE OF THE ABEND AND
        !           772: < *      CODE VALUES IS SYSTEM DEPENDENT. IN GENERAL, THE CODE
        !           773: < *      VALUE SHOULD BE MADE AVAILABLE FOR TESTING, AND THE
        !           774: < *      ABEND VALUE SHOULD CAUSE SOME POST-MORTEM ACTION SUCH AS
        !           775: < *      A DUMP. NOTE THAT SYSEJ DOES NOT RETURN TO ITS CALLER.
        !           776: < *      SEE SYSXI FOR DETAILS OF FCBLK CHAIN
        !           777: < *
        !           778: < *      (WA)                  VALUE OF ABEND KEYWORD
        !           779: < *      (WB)                  VALUE OF CODE KEYWORD
        !           780: < *      (XL)                  O OR PTR TO HEAD OF FCBLK CHAIN
        !           781: < *      JSR  SYSEJ            CALL TO END JOB
        !           782: < *
        !           783: < *      THE FOLLOWING SPECIAL VALUES ARE USED AS CODES IN (WB)
        !           784: < *      999  EXECUTION SUPPRESSED
        !           785: < *      998  STANDARD OUTPUT FILE FULL OR UNAVAILABLE IN A SYSXI
        !           786: < *           LOAD MODULE. IN THESE CASES (WA) CONTAINS THE NUMBER
        !           787: < *           OF THE STATEMENT CAUSING PREMATURE TERMINATION.
        !           788: <        EJC
        !           789: < *
        !           790: < *      SYSEM -- GET ERROR MESSAGE TEXT
        !           791: < *
        !           792: < SYSEM  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           793: < *
        !           794: < *      SYSEM IS USED TO OBTAIN THE TEXT OF ERR, ERB CALLS IN THE
        !           795: < *      SOURCE PROGRAM GIVEN THE ERROR CODE NUMBER. IT IS ALLOWED
        !           796: < *      TO RETURN A NULL STRING IF THIS FACILITY IS UNAVAILABLE.
        !           797: < *
        !           798: < *      (WA)                  ERROR CODE NUMBER
        !           799: < *      JSR  SYSEM            CALL TO GET TEXT
        !           800: < *      (XR)                  TEXT OF MESSAGE
        !           801: < *
        !           802: < *      THE RETURNED VALUE IS A POINTER TO A BLOCK IN SCBLK
        !           803: < *      FORMAT EXCEPT THAT THE FIRST WORD NEED NOT BE SET. THE
        !           804: < *      STRING IS COPIED INTO DYNAMIC MEMORY ON RETURN.
        !           805: < *      IF THE NULL STRING IS RETURNED EITHER BECAUSE SYSEM DOES
        !           806: < *      NOT PROVIDE ERROR MESSAGE TEXTS OR BECAUSE WA IS OUT OF
        !           807: < *      RANGE, SPITBOL WILL PRINT THE STRING STORED IN ERRTEXT
        !           808: < *      KEYWORD.
        !           809: <        EJC
        !           810: < *
        !           811: < *      SYSEN -- ENDFILE
        !           812: < *
        !           813: < SYSEN  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           814: < *
        !           815: < *      SYSEN IS USED TO IMPLEMENT THE SNOBOL4 FUNCTION ENDFILE.
        !           816: < *      THE MEANING IS SYSTEM DEPENDENT. IN GENERAL, ENDFILE
        !           817: < *      IMPLIES THAT NO FURTHER I/O OPERATIONS WILL BE PERFORMED,
        !           818: < *      BUT DOES NOT GUARANTEE THIS TO BE THE CASE. THE FILE
        !           819: < *      SHOULD BE CLOSED AFTER THE CALL, A SUBSEQUENT READ
        !           820: < *      OR WRITE MAY REOPEN THE FILE AT THE START OR IT MAY BE
        !           821: < *      NECESSARY TO REOPEN THE FILE VIA SYSIO.
        !           822: < *
        !           823: < *      (WA)                  PTR TO FCBLK OR ZERO
        !           824: < *      (XR)                  ENDFILE ARGUMENT (SCBLK PTR)
        !           825: < *      JSR  SYSEN            CALL TO ENDFILE
        !           826: < *      PPM  LOC              RETURN HERE IF FILE DOES NOT EXIST
        !           827: < *      PPM  LOC              RETURN HERE IF ENDFILE NOT ALLOWED
        !           828: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !           829: < *      (WA,WB)               DESTROYED
        !           830: < *
        !           831: < *      THE SECOND ERROR RETURN IS USED FOR FILES FOR WHICH
        !           832: < *      ENDFILE IS NOT PERMITTED. FOR EXAMPLE, IT MAY BE EXPECTED
        !           833: < *      THAT THE STANDARD INPUT AND OUTPUT FILES ARE IN THIS
        !           834: < *      CATEGORY.
        !           835: <        EJC
        !           836: < *
        !           837: < *      SYSEP -- EJECT PRINTER PAGE
        !           838: < *
        !           839: < SYSEP  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           840: < *
        !           841: < *      SYSEP IS CALLED TO PERFORM A PAGE EJECT ON THE STANDARD
        !           842: < *      PRINTER OUTPUT FILE (CORRESPONDING TO SYSPR OUTPUT).
        !           843: < *
        !           844: < *      JSR  SYSEP            CALL TO EJECT PRINTER OUTPUT
        !           845: <        EJC
        !           846: < *
        !           847: < *      SYSEX -- CALL EXTERNAL FUNCTION
        !           848: < *
        !           849: < SYSEX  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           850: < *
        !           851: < *      SYSEX IS CALLED TO PASS CONTROL TO AN EXTERNAL FUNCTION
        !           852: < *      PREVIOUSLY LOADED WITH A CALL TO SYSLD.
        !           853: < *
        !           854: < *      (XS)                  POINTER TO ARGUMENTS ON STACK
        !           855: < *      (XL)                  POINTER TO CONTROL BLOCK (EFBLK)
        !           856: < *      (WA)                  NUMBER OF ARGUMENTS ON STACK
        !           857: < *      JSR  SYSEX            CALL TO PASS CONTROL TO FUNCTION
        !           858: < *      PPM  LOC              RETURN HERE IF FUNCTION CALL FAILS
        !           859: < *      (XS)                  POPPED PAST ARGUMENTS
        !           860: < *      (XR)                  RESULT RETURNED
        !           861: < *
        !           862: < *      THE ARGUMENTS ARE STORED ON THE STACK WITH
        !           863: < *      THE LAST ARGUMENT AT 0(XS). ON RETURN, XS
        !           864: < *      IS POPPED PAST THE ARGUMENTS.
        !           865: < *
        !           866: < *      THE FORM OF THE ARGUMENTS AS PASSED IS THAT USED IN THE
        !           867: < *      SPITBOL TRANSLATOR (SEE DEFINITIONS AND DATA STRUCTURES
        !           868: < *      SECTION). THE CONTROL BLOCK FORMAT IS ALSO DESCRIBED
        !           869: < *      (UNDER EFBLK) IN THIS SECTION.
        !           870: < *
        !           871: < *      THERE ARE TWO WAYS OF RETURNING A RESULT.
        !           872: < *
        !           873: < *      1)   RETURN A POINTER TO A BLOCK IN DYNAMIC STORAGE. THIS
        !           874: < *           BLOCK MUST BE IN EXACTLY CORRECT FORMAT, INCLUDING
        !           875: < *           THE FIRST WORD. ONLY FUNCTIONS WRITTEN WITH INTIMATE
        !           876: < *           KNOWLEDGE OF THE SYSTEM WILL RETURN IN THIS WAY.
        !           877: < *
        !           878: < *      2)   STRING, INTEGER AND REAL RESULTS MAY BE RETURNED BY
        !           879: < *           POINTING TO A PSEUDO-BLOCK OUTSIDE DYNAMIC MEMORY.
        !           880: < *           THIS BLOCK IS IN ICBLK, RCBLK OR SCBLK FORMAT EXCEPT
        !           881: < *           THAT THE FIRST WORD WILL BE OVERWRITTEN
        !           882: < *           BY A TYPE WORD ON RETURN AND SO NEED NOT
        !           883: < *           BE CORRECTLY SET. SUCH A RESULT IS
        !           884: < *           COPIED INTO MAIN STORAGE BEFORE PROCEEDING.
        !           885: < *           UNCONVERTED RESULTS MAY SIMILARLY BE RETURNED IN A
        !           886: < *           PSEUDO-BLOCK WHICH IS IN CORRECT FORMAT INCLUDING
        !           887: < *           TYPE WORD RECOGNISABLE BY GARBAGE COLLECTOR SINCE
        !           888: < *           BLOCK IS COPIED INTO DYNAMIC MEMORY.
        !           889: <        EJC
        !           890: < *
        !           891: < *      SYSFC -- FILE CONTROL BLOCK ROUTINE
        !           892: < *
        !           893: < SYSFC  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           894: < *
        !           895: < *      SEE ALSO SYSIO
        !           896: < *      INPUT AND OUTPUT HAVE 3 ARGUMENTS REFERRED TO AS SHOWN
        !           897: < *           INPUT(VARIABLE NAME,FILE ARG1,FILE ARG2)
        !           898: < *           OUTPUT(VARIABLE NAME,FILE ARG1,FILE ARG2)
        !           899: < *      FILE ARG1 MAY BE AN INTEGER OR STRING USED TO IDENTIFY
        !           900: < *      AN I/O CHANNEL. IT IS CONVERTED TO A STRING FOR CHECKING.
        !           901: < *      THE EXACT SIGNIFICANCE OF FILE ARG2
        !           902: < *      IS NOT RIGOROUSLY PRESCRIBED BUT TO IMPROVE PORTABILITY,
        !           903: < *      THE SCHEME DESCRIBED IN THE SPITBOL USER MANUAL
        !           904: < *      SHOULD BE ADOPTED WHEN POSSIBLE. THE PREFERRED FORM IS
        !           905: < *      A STRING $F$,R$R$,C$C$,I$I$,...,Z$Z$  WHERE
        !           906: < *      $F$ IS AN OPTIONAL FILE NAME WHICH IS PLACED FIRST.
        !           907: < *       REMAINING ITEMS MAY BE OMITTED OR INCLUDED IN ANY ORDER.
        !           908: < *      $R$ IS MAXIMUM RECORD LENGTH
        !           909: < *      $C$ IS A CARRIAGE CONTROL CHARACTER OR CHARACTER STRING
        !           910: < *      $I$ IS SOME FORM OF CHANNEL IDENTIFICATION USED IN THE
        !           911: < *         ABSENCE OF $F$ TO ASSOCIATE THE VARIABLE
        !           912: < *         WITH A FILE ALLOCATED DYNAMICALLY BY JCL COMMANDS AT
        !           913: < *         SPITBOL LOAD TIME.
        !           914: < *      ,...,Z$Z$ ARE ADDITIONAL FIELDS.
        !           915: < *      IF , (COMMA) CANNOT BE USED AS A DELIMITER, .CIOD
        !           916: < *      SHOULD BE DEFINED TO INTRODUCE BY CONDITIONAL ASSEMBLY
        !           917: < *      ANOTHER DELIMITER (SEE
        !           918: < *        IODEL  EQU  *
        !           919: < *      EARLY IN DEFINITIONS SECTION).
        !           920: < *      SYSFC IS CALLED WHEN A VARIABLE IS INPUT OR OUTPUT
        !           921: < *      ASSOCIATED TO CHECK FILE ARG1 AND FILE ARG2 AND
        !           922: < *      TO  REPORT WHETHER AN FCBLK (FILE CONTROL
        !           923: < *      BLOCK) IS NECESSARY AND IF SO WHAT SIZE IT SHOULD BE.
        !           924: < *      THIS MAKES IT POSSIBLE FOR SPITBOL RATHER THAN OSINT TO
        !           925: < *      ALLOCATE SUCH A BLOCK IN DYNAMIC MEMORY IF REQUIRED
        !           926: < *      OR ALTERNATIVELY IN STATIC MEMORY.
        !           927: < *      THE SIGNIFICANCE OF AN FCBLK , IF ONE IS REQUESTED, IS
        !           928: < *      ENTIRELY UP TO THE SYSTEM INTERFACE. THE ONLY RESTRICTION
        !           929: < *      IS THAT IF THE FCBLK SHOULD APPEAR TO LIE IN DYNAMIC
        !           930: < *      MEMORY , POINTERS TO IT SHOULD BE PROPER POINTERS TO
        !           931: < *      THE START OF A RECOGNISABLE AND GARBAGE COLLECTABLE
        !           932: < *      BLOCK (THIS CONDITION WILL BE MET IF SYSFC REQUESTS
        !           933: < *      SPITBOL TO PROVIDE AN FCBLK).
        !           934: < *      AN OPTION IS PROVIDED FOR OSINT TO RETURN A POINTER IN
        !           935: < *      XL TO AN FCBLK WHICH IT PRIVATELY ALLOCATED. THIS PTR
        !           936: < *      WILL BE MADE AVAILABLE WHEN I/O OCCURS LATER.
        !           937: < *      PRIVATE FCBLKS MAY HAVE ARBITRARY CONTENTS AND SPITBOL
        !           938: < *      STORES NOTHING IN THEM.
        !           939: <        EJC
        !           940: < *      THE REQUESTED SIZE FOR AN FCBLK IN DYNAMIC MEMORY
        !           941: < *      SHOULD ALLOW A 2 WORD OVERHEAD FOR BLOCK TYPE AND
        !           942: < *      LENGTH FIELDS. INFORMATION SUBSEQUENTLY STORED IN THE
        !           943: < *      REMAINING WORDS MAY BE ARBITRARY IF AN XNBLK (EXTERNAL
        !           944: < *      NON-RELOCATABLE BLOCK) IS REQUESTED. IF THE REQUEST IS
        !           945: < *      FOR AN XRBLK (EXTERNAL RELOCATABLE BLOCK) THE
        !           946: < *      CONTENTS OF WORDS SHOULD BE COLLECTABLE (I.E. ANY
        !           947: < *      APPARENT POINTERS INTO DYNAMIC SHOULD BE GENUINE BLOCK
        !           948: < *      POINTERS). THESE RESTRICTIONS DO NOT APPLY IF AN FCBLK
        !           949: < *      IS ALLOCATED OUTSIDE DYNAMIC OR IS NOT ALLOCATED AT ALL.
        !           950: < *      IF AN FCBLK IS REQUESTED, ITS FIELDS WILL BE INITIALISED
        !           951: < *      TO ZERO BEFORE ENTRY TO SYSIO WITH THE EXCEPTION OF
        !           952: < *      WORDS 0 AND 1 IN WHICH THE BLOCK TYPE AND LENGTH
        !           953: < *      FIELDS ARE PLACED FOR FCBLKS IN DYNAMIC MEMORY ONLY.
        !           954: < *      FOR THE POSSIBLE USE OF SYSEJ AND SYSXI, IF FCBLKS
        !           955: < *      ARE USED, A CHAIN IS BUILT SO THAT THEY MAY ALL BE
        !           956: < *      FOUND - SEE SYSXI FOR DETAILS.
        !           957: < *      IF BOTH FILE ARG1 AND FILE ARG2 ARE NULL, CALLS OF SYSFC
        !           958: < *      AND SYSIO ARE OMITTED.
        !           959: < *      IF FILE ARG1 IS NULL (STANDARD INPUT/OUTPUT FILE), SYSFC
        !           960: < *      IS CALLED TO CHECK NON-NULL FILE ARG2 BUT ANY REQUEST
        !           961: < *      FOR AN FCBLK WILL BE IGNORED, SINCE SPITBOL HANDLES THE
        !           962: < *      STANDARD FILES SPECIALLY AND CANNOT READILY KEEP FCBLK
        !           963: < *      POINTERS FOR THEM.
        !           964: < *      FILEARG1 IS TYPE CHECKED BY SPITBOL SO FURTHER CHECKING
        !           965: < *      MAY BE UNNECCESSARY IN MANY IMPLEMENTATIONS.
        !           966: < *      FILE ARG2 IS PASSED SO THAT SYSFC MAY ANALYSE AND
        !           967: < *      CHECK IT. HOWEVER TO ASSIST IN THIS, SPITBOL ALSO PASSES
        !           968: < *      ON THE STACK THE COMPONENTS OF THIS ARGUMENT WITH
        !           969: < *      FILE NAME, $F$ (OTHERWISE NULL) EXTRACTED AND STACKED
        !           970: < *      FIRST.
        !           971: < *      THE OTHER FIELDS, IF ANY, ARE EXTRACTED AS SUBSTRINGS,
        !           972: < *      POINTERS TO THEM ARE STACKED AND A COUNT OF ALL ITEMS
        !           973: < *      STACKED IS PLACED IN WC. IF AN FCBLK WAS EARLIER
        !           974: < *      ALLOCATED AND POINTED TO VIA FILE ARG1, SYSFC IS ALSO
        !           975: < *      PASSED A POINTER TO THIS FCBLK.
        !           976: < *
        !           977: < *      (XL)                  FILE ARG1 SCBLK PTR (2ND ARG)
        !           978: < *      (XR)                  FILEARG2 (3RD ARG) OR NULL
        !           979: < *      -(XS)...-(XS)         SCBLKS FOR $F$,$R$,$C$,...
        !           980: < *      (WC)                  NO. OF STACKED SCBLKS ABOVE
        !           981: < *      (WA)                  EXISTING FILE ARG1 FCBLK PTR OR 0
        !           982: < *      (WB)                  0/3 FOR INPUT/OUTPUT ASSOCN
        !           983: < *      JSR  SYSFC            CALL TO CHECK NEED FOR FCBLK
        !           984: < *      PPM  LOC              INVALID FILE ARGUMENT
        !           985: < *      (XS)                  POPPED (WC) TIMES
        !           986: < *      (WA NON ZERO)         BYTE SIZE OF REQUESTED FCBLK
        !           987: < *      (WA=0,XL NON ZERO)    PRIVATE FCBLK PTR IN XL
        !           988: < *      (WA=XL=0)             NO FCBLK WANTED, NO PRIVATE FCBLK
        !           989: < *      (WC)                  0/1/2 REQUEST ALLOC OF XRBLK/XNBLK
        !           990: < *                            /STATIC BLOCK FOR USE AS FCBLK
        !           991: < *      (WB)                  DESTROYED
        !           992: <        EJC
        !           993: < *
        !           994: < *      SYSHS -- GIVE ACCESS TO HOST COMPUTER FEATURES
        !           995: < *
        !           996: < SYSHS  EXP                   DEFINE EXTERNAL ENTRY POINT
        !           997: < *
        !           998: < *      PROVIDES MEANS FOR IMPLEMENTING SPECIAL FEATURES
        !           999: < *      ON DIFFERENT HOST COMPUTERS. THE ONLY DEFINED ENTRY IS
        !          1000: < *      THAT WHERE ALL ARGUMENTS ARE NULL IN WHICH CASE SYSHS
        !          1001: < *      RETURNS AN SCBLK CONTAINING NAME OF COMPUTER,
        !          1002: < *      NAME OF OPERATING SYSTEM AND NAME OF SITE SEPARATED BY
        !          1003: < *      COLONS. THE SCBLK NEED NOT HAVE A CORRECT FIRST FIELD
        !          1004: < *      AS THIS IS SUPPLIED ON COPYING STRING TO DYNAMIC MEMORY.
        !          1005: < *      SPITBOL DOES NO ARGUMENT CHECKING BUT DOES PROVIDE A
        !          1006: < *      SINGLE ERROR RETURN FOR ARGUMENTS CHECKED AS ERRONEOUS
        !          1007: < *      BY OSINT. IT ALSO PROVIDES A SINGLE EXECUTION ERROR
        !          1008: < *      RETURN. IF THESE ARE INADEQUATE, USE MAY BE MADE OF THE
        !          1009: < *      MINIMAL ERROR SECTION DIRECT AS DESCRIBED IN MINIMAL
        !          1010: < *      DOCUMENTATION, SECTION 10.
        !          1011: < *      SEVERAL NON-ERROR RETURNS ARE PROVIDED. THE FIRST
        !          1012: < *      CORRESPONDS TO THE DEFINED ENTRY OR, FOR IMPLEMENTATION
        !          1013: < *      DEFINED ENTRIES, ANY STRING MAY BE RETURNED. THE OTHERS
        !          1014: < *      PERMIT RESPECTIVELY,  RETURN A NULL RESULT, RETURN WITH A
        !          1015: < *      RESULT TO BE STACKED WHICH IS POINTED AT BY XR, AND A
        !          1016: < *      RETURN CAUSING SPITBOL STATEMENT FAILURE. IF A RETURNED
        !          1017: < *      RESULT IS IN DYNAMIC MEMORY IT MUST OBEY GARBAGE
        !          1018: < *      COLLECTOR RULES. THE ONLY RESULTS COPIED ON RETURN
        !          1019: < *      ARE STRINGS RETURNED VIA PPM LOC3 RETURN.
        !          1020: < *
        !          1021: < *      (WA)                  ARGUMENT 1
        !          1022: < *      (XL)                  ARGUMENT 2
        !          1023: < *      (XR)                  ARGUMENT 3
        !          1024: < *      JSR  SYSHS            CALL TO GET HOST INFORMATION
        !          1025: < *      PPM  LOC1             ERRONEOUS ARG
        !          1026: < *      PPM  LOC2             EXECUTION ERROR
        !          1027: < *      PPM  LOC3             SCBLK PTR IN XL OR 0 IF UNAVAILABLE
        !          1028: < *      PPM  LOC4             RETURN A NULL RESULT
        !          1029: < *      PPM  LOC5             RETURN RESULT IN XR
        !          1030: < *      PPM  LOC6             CAUSE STATEMENT FAILURE
        !          1031: <        EJC
        !          1032: < *
        !          1033: < *      SYSID -- RETURN SYSTEM IDENTIFICATION
        !          1034: < *
        !          1035: < SYSID  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1036: < *
        !          1037: < *      THIS ROUTINE SHOULD RETURN STRINGS TO HEAD THE STANDARD
        !          1038: < *      PRINTER OUTPUT. THE FIRST STRING WILL BE APPENDED TO
        !          1039: < *      A HEADING LINE OF THE FORM
        !          1040: < *           MACRO SPITBOL VERSION V.V
        !          1041: < *      SUPPLIED BY SPITBOL ITSELF. V.V ARE DIGITS GIVING THE
        !          1042: < *      MAJOR VERSION NUMBER AND GENERALLY AT LEAST A MINOR
        !          1043: < *      VERSION NUMBER RELATING TO OSINT SHOULD BE SUPPLIED TO
        !          1044: < *      GIVE SAY
        !          1045: < *           MACRO SPITBOL VERSION V.V(M.M)
        !          1046: < *      THE SECOND STRING SHOULD IDENTIFY AT LEAST THE MACHINE
        !          1047: < *      AND OPERATING SYSTEM.  PREFERABLY IT SHOULD INCLUDE
        !          1048: < *      THE DATE AND TIME OF THE RUN.
        !          1049: < *      OPTIONALLY THE STRINGS MAY INCLUDE SITE NAME OF THE
        !          1050: < *      THE IMPLEMENTOR AND/OR MACHINE ON WHICH RUN TAKES PLACE,
        !          1051: < *      UNIQUE SITE OR COPY NUMBER AND OTHER INFORMATION AS
        !          1052: < *      APPROPRIATE WITHOUT MAKING IT SO LONG AS TO BE A
        !          1053: < *      NUISANCE TO USERS.
        !          1054: < *      THE FIRST WORDS OF THE SCBLKS POINTED AT NEED NOT BE
        !          1055: < *      CORRECTLY SET.
        !          1056: < *
        !          1057: < *      JSR  SYSID            CALL FOR SYSTEM IDENTIFICATION
        !          1058: < *      (XR)                  SCBLK PTR FOR ADDITION TO HEADER
        !          1059: < *      (XL)                  PTR TO SECOND HEADER SCBLK
        !          1060: <        EJC
        !          1061: < *
        !          1062: < *      SYSIL -- GET INPUT RECORD LENGTH
        !          1063: < *
        !          1064: < SYSIL  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1065: < *
        !          1066: < *      SYSIL IS USED TO GET THE LENGTH OF THE NEXT INPUT RECORD
        !          1067: < *      FROM A FILE PREVIOUSLY INPUT ASSOCIATED WITH A SYSIO
        !          1068: < *      CALL. THE LENGTH RETURNED IS USED TO ESTABLISH A BUFFER
        !          1069: < *      FOR A SUBSEQUENT SYSIN CALL.
        !          1070: < *
        !          1071: < *      (WA)                  PTR TO FCBLK OR ZERO
        !          1072: < *      JSR  SYSIL            CALL TO GET RECORD LENGTH
        !          1073: < *      (WA)                  LENGTH OR ZERO IF FILE CLOSED
        !          1074: < *
        !          1075: < *      NO HARM IS DONE IF THE VALUE RETURNED IS TOO LONG SINCE
        !          1076: < *      UNUSED SPACE WILL BE RECLAIMED AFTER THE SYSIN CALL.
        !          1077: < *
        !          1078: < *      NOTE THAT IT IS THE SYSIL CALL (NOT THE SYSIO CALL) WHICH
        !          1079: < *      CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST
        !          1080: < *      RECORD INPUT FROM THE FILE.
        !          1081: <        EJC
        !          1082: < *
        !          1083: < *      SYSIN -- READ INPUT RECORD
        !          1084: < *
        !          1085: < SYSIN  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1086: < *
        !          1087: < *      SYSIN IS USED TO READ A RECORD FROM THE FILE WHICH WAS
        !          1088: < *      REFERENCED IN A PRIOR CALL TO SYSIL (I.E. THESE CALLS
        !          1089: < *      ALWAYS OCCUR IN PAIRS). THE BUFFER PROVIDED IS AN
        !          1090: < *      SCBLK FOR A STRING OF LENGTH SET FROM THE SYSIL CALL.
        !          1091: < *      IF THE ACTUAL LENGTH READ IS LESS THAN THIS, THE LENGTH
        !          1092: < *      FIELD OF THE SCBLK MUST BE MODIFIED BEFORE RETURNING
        !          1093: < *      UNLESS BUFFER IS RIGHT PADDED WITH ZEROES.
        !          1094: < *      IT IS ALSO PERMISSIBLE TO TAKE ANY OF THE ALTERNATIVE
        !          1095: < *      RETURNS AFTER SCBLK LENGTH HAS BEEN MODIFIED.
        !          1096: < *
        !          1097: < *      (WA)                  PTR TO FCBLK OR ZERO
        !          1098: < *      (XR)                  POINTER TO BUFFER (SCBLK PTR)
        !          1099: < *      JSR  SYSIN            CALL TO READ RECORD
        !          1100: < *      PPM  LOC              ENDFILE OR NO I/P FILE AFTER SYSXI
        !          1101: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !          1102: < *      PPM  LOC              RETURN HERE IF RECORD FORMAT ERROR
        !          1103: < *      (WA,WB,WC)            DESTROYED
        !          1104: <        EJC
        !          1105: < *
        !          1106: < *      SYSIO -- INPUT/OUTPUT FILE ASSOCIATION
        !          1107: < *
        !          1108: < SYSIO  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1109: < *
        !          1110: < *      SEE ALSO SYSFC.
        !          1111: < *      SYSIO IS CALLED IN RESPONSE TO A SNOBOL4 INPUT OR OUTPUT
        !          1112: < *      FUNCTION CALL EXCEPT WHEN FILE ARG1 AND FILE ARG2
        !          1113: < *      ARE BOTH NULL.
        !          1114: < *      ITS CALL ALWAYS FOLLOWS IMMEDIATELY AFTER A CALL
        !          1115: < *      OF SYSFC. IF SYSFC REQUESTED ALLOCATION
        !          1116: < *      OF AN FCBLK, ITS ADDRESS WILL BE IN WA.
        !          1117: < *      FOR INPUT FILES, NON-ZERO VALUES OF $R$ SHOULD BE
        !          1118: < *      COPIED TO WC FOR USE IN ALLOCATING INPUT BUFFERS. IF $R$
        !          1119: < *      IS DEFAULTED OR NOT IMPLEMENTED, WC SHOULD BE ZEROISED.
        !          1120: < *      ONCE A FILE HAS BEEN OPENED, SUBSEQUENT INPUT(),OUTPUT()
        !          1121: < *      CALLS IN WHICH THE SECOND ARGUMENT IS IDENTICAL WITH THAT
        !          1122: < *      IN A PREVIOUS CALL, MERELY ASSOCIATE THE ADDITIONAL
        !          1123: < *      VARIABLE NAME (FIRST ARGUMENT) TO THE FILE AND DO NOT
        !          1124: < *      RESULT IN RE-OPENING THE FILE.
        !          1125: < *      IN SUBSEQUENT ASSOCIATED ACCESSES TO THE FILE A POINTER
        !          1126: < *      TO ANY FCBLK ALLOCATED WILL BE MADE AVAILABLE.
        !          1127: < *
        !          1128: < *      (XL)                  FILE ARG1 SCBLK PTR (2ND ARG)
        !          1129: < *      (XR)                  FILE ARG2 SCBLK PTR (3RD ARG)
        !          1130: < *      (WA)                  FCBLK PTR (0 IF NONE)
        !          1131: < *      (WB)                  0 FOR INPUT, 3 FOR OUTPUT
        !          1132: < *      JSR  SYSIO            CALL TO ASSOCIATE FILE
        !          1133: < *      PPM  LOC              RETURN HERE IF FILE DOES NOT EXIST
        !          1134: < *      PPM  LOC              RETURN IF INPUT/OUTPUT NOT ALLOWED
        !          1135: < *      (XL)                  FCBLK POINTER (0 IF NONE)
        !          1136: < *      (WC)                  0 (FOR DEFAULT) OR MAX RECORD LNGTH
        !          1137: < *      (WA,WB)               DESTROYED
        !          1138: < *
        !          1139: < *      THE SECOND ERROR RETURN IS USED IF THE FILE NAMED EXISTS
        !          1140: < *      BUT INPUT/OUTPUT FROM THE FILE IS NOT ALLOWED. FOR
        !          1141: < *      EXAMPLE, THE STANDARD OUTPUT FILE MAY BE IN THIS CATEGORY
        !          1142: < *      AS REGARDS INPUT ASSOCIATION.
        !          1143: <        EJC
        !          1144: < *
        !          1145: < *      SYSLD -- LOAD EXTERNAL FUNCTION
        !          1146: < *
        !          1147: < SYSLD  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1148: < *
        !          1149: < *      SYSLD IS CALLED IN RESPONSE TO THE USE OF THE SNOBOL4
        !          1150: < *      LOAD FUNCTION. THE NAMED FUNCTION IS LOADED (WHATEVER
        !          1151: < *      THIS MEANS), AND A POINTER IS RETURNED. THE POINTER WILL
        !          1152: < *      BE USED ON SUBSEQUENT CALLS TO THE FUNCTION (SEE SYSEX).
        !          1153: < *
        !          1154: < *      (XR)                  POINTER TO FUNCTION NAME (SCBLK)
        !          1155: < *      (XL)                  POINTER TO LIBRARY NAME (SCBLK)
        !          1156: < *      JSR  SYSLD            CALL TO LOAD FUNCTION
        !          1157: < *      PPM  LOC              RETURN HERE IF FUNC DOES NOT EXIST
        !          1158: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !          1159: < *      (XR)                  POINTER TO LOADED CODE
        !          1160: < *
        !          1161: < *      THE SIGNIFICANCE OF THE POINTER RETURNED IS UP TO THE
        !          1162: < *      SYSTEM INTERFACE ROUTINE. THE ONLY RESTRICTION IS THAT
        !          1163: < *      IF THE POINTER IS WITHIN DYNAMIC STORAGE, IT MUST BE
        !          1164: < *      A PROPER BLOCK POINTER.
        !          1165: <        EJC
        !          1166: < *
        !          1167: < *      SYSMM -- GET MORE MEMORY
        !          1168: < *
        !          1169: < SYSMM  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1170: < *
        !          1171: < *      SYSMM IS CALLED IN AN ATTEMPT TO ALLOCATE MORE DYNAMIC
        !          1172: < *      MEMORY. THIS MEMORY MUST BE ALLOCATED CONTIGUOUSLY WITH
        !          1173: < *      THE CURRENT DYNAMIC DATA AREA.
        !          1174: < *
        !          1175: < *      THE AMOUNT ALLOCATED IS UP TO THE SYSTEM TO DECIDE. ANY
        !          1176: < *      VALUE IS ACCEPTABLE INCLUDING ZERO IF ALLOCATION IS
        !          1177: < *      IMPOSSIBLE.
        !          1178: < *
        !          1179: < *      JSR  SYSMM            CALL TO GET MORE MEMORY
        !          1180: < *      (XR)                  NUMBER OF ADDITIONAL WORDS OBTAINED
        !          1181: <        EJC
        !          1182: < *
        !          1183: < *      SYSMX -- SUPPLY MXLEN
        !          1184: < *
        !          1185: < SYSMX  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1186: < *
        !          1187: < *      BECAUSE OF THE METHOD OF GARBAGE COLLECTION, NO SPITBOL
        !          1188: < *      OBJECT IS ALLOWED TO OCCUPY MORE BYTES OF MEMORY THAN
        !          1189: < *      THE INTEGER GIVING THE LOWEST ADDRESS OF DYNAMIC
        !          1190: < *      (GARBAGE COLLECTABLE) MEMORY. MXLEN IS THE NAME USED TO
        !          1191: < *      REFER TO THIS MAXIMUM LENGTH OF AN OBJECT AND FOR MOST
        !          1192: < *      USERS OF MOST IMPLEMENTATIONS, PROVIDED DYNAMIC MEMORY
        !          1193: < *      STARTS AT AN ADDRESS OF AT LEAST A FEW THOUSAND WORDS,
        !          1194: < *      THERE IS NO PROBLEM.
        !          1195: < *      IF THE DEFAULT STARTING ADDRESS IS LESS THAN SAY 10000 OR
        !          1196: < *      20000, THEN A LOAD TIME OPTION SHOULD BE PROVIDED WHERE A
        !          1197: < *      USER CAN REQUEST THAT HE BE ABLE TO CREATE LARGER
        !          1198: < *      OBJECTS. THIS ROUTINE INFORMS SPITBOL OF THIS REQUEST IF
        !          1199: < *      ANY. THE VALUE RETURNED IS EITHER AN INTEGER
        !          1200: < *      REPRESENTING THE DESIRED VALUE OF MXLEN (AND HENCE THE
        !          1201: < *      MINIMUM DYNAMIC STORE ADDRESS WHICH MAY RESULT IN
        !          1202: < *      NON-USE OF SOME STORE) OR ZERO IF A DEFAULT IS ACCEPTABLE
        !          1203: < *      IN WHICH MXLEN IS SET TO THE LOWEST ADDRESS ALLOCATED
        !          1204: < *      TO DYNAMIC STORE BEFORE COMPILATION STARTS.
        !          1205: < *      IF A NON-ZERO VALUE IS RETURNED, THIS IS USED FOR KEYWORD
        !          1206: < *      MAXLNGTH. OTHERWISE THE INITIAL LOW ADDRESS OF DYNAMIC
        !          1207: < *      MEMORY IS USED FOR THIS KEYWORD.
        !          1208: < *
        !          1209: < *      JSR  SYSMX            CALL TO GET MXLEN
        !          1210: < *      (WA)                  EITHER MXLEN OR 0 FOR DEFAULT
        !          1211: <        EJC
        !          1212: < *
        !          1213: < *      SYSOU -- OUTPUT RECORD
        !          1214: < *
        !          1215: < SYSOU  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1216: < *
        !          1217: < *      SYSOU IS USED TO WRITE A RECORD TO A FILE PREVIOUSLY
        !          1218: < *      ASSOCIATED WITH A SYSIO CALL.
        !          1219: < *
        !          1220: < *      (WA)                  PTR TO FCBLK OR ZERO
        !          1221: < *      (XR)                  RECORD TO BE WRITTEN (SCBLK)
        !          1222: < *      JSR  SYSOU            CALL TO OUTPUT RECORD
        !          1223: < *      PPM  LOC              FILE FULL OR NO FILE AFTER SYSXI
        !          1224: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !          1225: < *      (WA,WB,WC)            DESTROYED
        !          1226: < *
        !          1227: < *      NOTE THAT IT IS THE SYSOU CALL (NOT THE SYSIO CALL) WHICH
        !          1228: < *      CAUSES THE FILE TO BE OPENED AS REQUIRED FOR THE FIRST
        !          1229: < *      RECORD OUTPUT TO THE FILE.
        !          1230: <        EJC
        !          1231: < *
        !          1232: < *      SYSPI -- PRINT ON INTERACTIVE CHANNEL
        !          1233: < *
        !          1234: < SYSPI  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1235: < *
        !          1236: < *      IF SPITBOL IS RUN FROM AN ONLINE TERMINAL, OSINT CAN
        !          1237: < *      REQUEST THAT MESSAGES SUCH AS COPIES OF COMPILATION
        !          1238: < *      ERRORS BE SENT TO THE TERMINAL (SEE SYSPP). IF RELEVANT
        !          1239: < *      REPLY WAS MADE BY SYSPP THEN SYSPI IS CALLED TO SEND SUCH
        !          1240: < *      MESSAGES TO THE INTERACTIVE CHANNEL.
        !          1241: < *      SYSPI IS ALSO USED FOR SENDING OUTPUT TO THE TERMINAL
        !          1242: < *      THROUGH THE SPECIAL VARIABLE NAME, TERMINAL.
        !          1243: < *
        !          1244: < *      (XR)                  PTR TO LINE BUFFER (SCBLK)
        !          1245: < *      (WA)                  LINE LENGTH
        !          1246: < *      JSR  SYSPI            CALL TO PRINT LINE
        !          1247: < *      PPM  LOC              FAILURE RETURN
        !          1248: < *      (WA,WB)               DESTROYED
        !          1249: <        EJC
        !          1250: < *
        !          1251: < *      SYSPP -- OBTAIN PRINT PARAMETERS
        !          1252: < *
        !          1253: < SYSPP  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1254: < *
        !          1255: < *      SYSPP IS CALLED ONCE DURING COMPILATION TO OBTAIN
        !          1256: < *      PARAMETERS REQUIRED FOR CORRECT PRINTED OUTPUT FORMAT
        !          1257: < *      AND TO SELECT OTHER OPTIONS. IT MAY ALSO BE CALLED AGAIN
        !          1258: < *      AFTER SYSXI WHEN A LOAD MODULE IS RESUMED. IN THIS
        !          1259: < *      CASE THE VALUE RETURNED IN WA MAY BE LESS THAN OR EQUAL
        !          1260: < *      TO THAT RETURNED IN INITIAL CALL BUT MAY NOT BE
        !          1261: < *      GREATER.
        !          1262: < *      THE INFORMATION RETURNED IS -
        !          1263: < *      1.   LINE LENGTH IN CHARS FOR STANDARD PRINT FILE
        !          1264: < *      2.   NO OF LINES/PAGE. 0 IS PREFERABLE FOR A NON-PAGED
        !          1265: < *           DEVICE (E.G. ONLINE TERMINAL) IN WHICH CASE LISTING
        !          1266: < *           PAGE THROWS ARE SUPPRESSED AND PAGE HEADERS
        !          1267: < *           RESULTING FROM -TITLE,-STITL LINES ARE KEPT SHORT.
        !          1268: < *      3.   AN INITIAL -NOLIST OPTION TO SUPPRESS LISTING UNLESS
        !          1269: < *           THE PROGRAM CONTAINS AN EXPLICIT -LIST.
        !          1270: < *      4.   OPTIONS TO SUPPRESS LISTING OF COMPILATION AND/OR
        !          1271: < *           EXECUTION STATS (USEFUL FOR ESTABLISHED PROGRAMS) -
        !          1272: < *           COMBINED WITH 3. GIVES POSSIBILITY OF LISTING
        !          1273: < *           FILE NEVER BEING OPENED.
        !          1274: < *      5.   OPTION TO HAVE COPIES OF ERRORS SENT TO AN
        !          1275: < *           INTERACTIVE CHANNEL IN ADDITION TO STANDARD PRINTER.
        !          1276: < *      6.   OPTION TO KEEP PAGE HEADERS SHORT (E.G. IF LISTING
        !          1277: < *           TO AN ONLINE TERMINAL).
        !          1278: < *      7.   AN OPTION TO CHOOSE EXTENDED OR COMPACT LISTING
        !          1279: < *           FORMAT. IN THE FORMER A PAGE EJECT AND IN THE LATTER
        !          1280: < *           A FEW LINE FEEDS PRECEDE THE PRINTING OF EACH
        !          1281: < *           OF-- LISTING, COMPILATION STATISTICS, EXECUTION
        !          1282: < *           OUTPUT AND EXECUTION STATISTICS.
        !          1283: < *      8.   AN OPTION TO SUPPRESS EXECUTION AS THOUGH A
        !          1284: < *           -NOEXECUTE CARD WERE SUPPLIED.
        !          1285: < *      9.   AN OPTION TO REQUEST THAT NAME /TERMINAL/  BE PRE-
        !          1286: < *           ASSOCIATED TO AN ONLINE TERMINAL VIA SYSPI AND SYSRI
        !          1287: < *      10.  AN INTERMEDIATE (STANDARD) LISTING OPTION REQUIRING
        !          1288: < *           THAT PAGE EJECTS OCCUR IN SOURCE LISTINGS. REDUNDANT
        !          1289: < *           IF EXTENDED OPTION CHOSEN BUT PARTIALLY EXTENDS
        !          1290: < *           COMPACT OPTION.
        !          1291: < *      11.  OPTION TO SUPPRESS SYSID IDENTIFICATION.
        !          1292: < *
        !          1293: < *      JSR  SYSPP            CALL TO GET PRINT PARAMETERS
        !          1294: < *      (WA)                  PRINT LINE LENGTH IN CHARS
        !          1295: < *      (WB)                  NUMBER OF LINES/PAGE
        !          1296: < *      (WC)                  BITS VALUE ...JIHGFEDCBA WHERE
        !          1297: < *                            A = 1 TO SEND ERROR COPY TO INT.CH.
        !          1298: < *                            B = 1 MEANS STD PRINTER IS INT. CH.
        !          1299: < *                            C = 1 FOR -NOLIST OPTION
        !          1300: < *                            D = 1 TO SUPPRESS COMPILN. STATS
        !          1301: < *                            E = 1 TO SUPPRESS EXECN. STATS
        !          1302: < *                            F = 1/0 FOR EXTNDED/COMPACT LISTING
        !          1303: < *                            G = 1 FOR -NOEXECUTE
        !          1304: < *                            H = 1 PRE-ASSOCIATE /TERMINAL/
        !          1305: < *                            I = 1 FOR STANDARD LISTING OPTION.
        !          1306: < *                            J = 1 SUPPRESSES LISTING HEADER
        !          1307: <        EJC
        !          1308: < *
        !          1309: < *      SYSPR -- PRINT LINE ON STANDARD OUTPUT FILE
        !          1310: < *
        !          1311: < SYSPR  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1312: < *
        !          1313: < *      SYSPR IS USED TO PRINT A SINGLE LINE ON THE STANDARD
        !          1314: < *      OUTPUT FILE.
        !          1315: < *
        !          1316: < *      (XR)                  POINTER TO LINE BUFFER (SCBLK)
        !          1317: < *      (WA)                  LINE LENGTH
        !          1318: < *      JSR  SYSPR            CALL TO PRINT LINE
        !          1319: < *      PPM  LOC              TOO MUCH O/P OR NO FILE AFTER SYSXI
        !          1320: < *      (WA,WB)               DESTROYED
        !          1321: < *
        !          1322: < *      THE BUFFER POINTED TO IS THE LENGTH OBTAINED FROM THE
        !          1323: < *      SYSPP CALL AND IS FILLED OUT WITH TRAILING BLANKS. THE
        !          1324: < *      VALUE IN WA IS THE ACTUAL LINE LENGTH WHICH MAY BE LESS
        !          1325: < *      THAN THE MAXIMUM LINE LENGTH POSSIBLE. THERE IS NO SPACE
        !          1326: < *      CONTROL ASSOCIATED WITH THE LINE, ALL LINES ARE PRINTED
        !          1327: < *      SINGLE SPACED. NOTE THAT NULL LINES (WA=0) ARE POSSIBLE
        !          1328: < *      IN WHICH CASE A BLANK LINE IS TO BE PRINTED.
        !          1329: < *
        !          1330: < *      THE ERROR EXIT IS USED FOR SYSTEMS WHICH LIMIT THE AMOUNT
        !          1331: < *      OF PRINTED OUTPUT. IF POSSIBLE, PRINTING SHOULD BE
        !          1332: < *      PERMITTED AFTER THIS CONDITION HAS BEEN SIGNALLED ONCE TO
        !          1333: < *      ALLOW FOR DUMP AND OTHER DIAGNOSTIC INFORMATION.
        !          1334: < *      ASSUMING THIS TO BE POSSIBLE, SPITBOL MAY MAKE MORE SYSPR
        !          1335: < *      CALLS. IF THE ERROR RETURN OCCURS ANOTHER TIME, EXECUTION
        !          1336: < *      IS TERMINATED BY A CALL OF SYSEJ WITH ENDING CODE 998.
        !          1337: <        EJC
        !          1338: < *
        !          1339: < *      SYSRD -- READ RECORD FROM STANDARD INPUT FILE
        !          1340: < *
        !          1341: < SYSRD  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1342: < *
        !          1343: < *      SYSRD IS USED TO READ A RECORD FROM THE STANDARD INPUT
        !          1344: < *      FILE. THE BUFFER PROVIDED IS AN SCBLK FOR A STRING THE
        !          1345: < *      LENGTH OF WHICH IN CHARACTERS IS GIVEN IN WC, THIS
        !          1346: < *      CORRESPONDING TO THE MAXIMUM LENGTH OF STRING WHICH
        !          1347: < *      SPITBOL IS PREPARED TO RECEIVE. AT COMPILE TIME IT
        !          1348: < *      CORRESPONDS TO XXX IN THE MOST RECENT -INXXX CARD
        !          1349: < *      (DEFAULT 72) AND AT EXECUTION TIME TO THE MOST RECENT
        !          1350: < *      ,R$R$ (RECORD LENGTH) IN THE THIRD ARG OF AN INPUT()
        !          1351: < *      STATEMENT FOR THE STANDARD INPUT FILE (DEFAULT 80).
        !          1352: < *      IF FEWER THAN (WC) CHARACTERS ARE READ, THE LENGTH
        !          1353: < *      FIELD OF THE SCBLK MUST BE ADJUSTED BEFORE RETURNING
        !          1354: < *      UNLESS THE BUFFER IS RIGHT PADDED WITH ZEROES.
        !          1355: < *      IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE RETURN
        !          1356: < *      AFTER SUCH AN ADJUSTMENT HAS BEEN MADE.
        !          1357: < *      SPITBOL MAY CONTINUE TO MAKE CALLS AFTER AN ENDFILE
        !          1358: < *      RETURN SO THIS ROUTINE SHOULD BE PREPARED TO MAKE
        !          1359: < *      REPEATED ENDFILE RETURNS.
        !          1360: < *
        !          1361: < *      (XR)                  POINTER TO BUFFER (SCBLK PTR)
        !          1362: < *      (WC)                  LENGTH OF BUFFER IN CHARACTERS
        !          1363: < *      JSR  SYSRD            CALL TO READ LINE
        !          1364: < *      PPM  LOC              ENDFILE OR NO I/P FILE AFTER SYSXI
        !          1365: < *      (WA,WB,WC)            DESTROYED
        !          1366: <        EJC
        !          1367: < *
        !          1368: < *      SYSRI -- READ RECORD FROM INTERACTIVE CHANNEL
        !          1369: < *
        !          1370: < SYSRI  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1371: < *
        !          1372: < *      READS A RECORD FROM ONLINE TERMINAL FOR SPITBOL VARIABLE,
        !          1373: < *      TERMINAL. IF ONLINE TERMINAL IS UNAVAILABLE THEN CODE THE
        !          1374: < *      ENDFILE RETURN ONLY.
        !          1375: < *      THE BUFFER PROVIDED IS OF LENGTH 120 CHARACTERS. SYSRI
        !          1376: < *      SHOULD REPLACE THE COUNT IN THE SECOND WORD OF THE SCBLK
        !          1377: < *      BY THE ACTUAL CHARACTER COUNT UNLESS BUFFER IS RIGHT
        !          1378: < *      PADDED WITH ZEROES.
        !          1379: < *      IT IS ALSO PERMISSIBLE TO TAKE THE ALTERNATIVE
        !          1380: < *      RETURN AFTER ADJUSTING THE COUNT.
        !          1381: < *      THE END OF FILE RETURN MAY BE USED IF THIS MAKES
        !          1382: < *      SENSE ON THE TARGET MACHINE (E.G. IF THERE IS AN
        !          1383: < *      EOF CHARACTER.)
        !          1384: < *
        !          1385: < *      (XR)                  PTR TO 120 CHAR BUFFER (SCBLK PTR)
        !          1386: < *      JSR  SYSRI            CALL TO READ LINE FROM TERMINAL
        !          1387: < *      PPM  LOC              END OF FILE RETURN
        !          1388: < *      (WA,WB,WC)            MAY BE DESTROYED
        !          1389: <        EJC
        !          1390: < *
        !          1391: < *      SYSRW -- REWIND FILE
        !          1392: < *
        !          1393: < SYSRW  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1394: < *
        !          1395: < *      SYSRW IS USED TO REWIND A FILE I.E. REPOSITION THE FILE
        !          1396: < *      AT THE START BEFORE THE FIRST RECORD. THE FILE SHOULD BE
        !          1397: < *      CLOSED AND THE NEXT READ OR WRITE CALL WILL OPEN THE
        !          1398: < *      FILE AT THE START.
        !          1399: < *
        !          1400: < *      (WA)                  PTR TO FCBLK OR ZERO
        !          1401: < *      (XR)                  REWIND ARG (SCBLK PTR)
        !          1402: < *      JSR  SYSRW            CALL TO REWIND FILE
        !          1403: < *      PPM  LOC              RETURN HERE IF FILE DOES NOT EXIST
        !          1404: < *      PPM  LOC              RETURN HERE IF REWIND NOT ALLOWED
        !          1405: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !          1406: <        EJC
        !          1407: ---
        !          1408: > SYSBX  EXP  E,0
        !          1409: > .IF    .CSCI
        !          1410: > SYSCI  EXP  E,0
        !          1411: > .FI
        !          1412: > SYSDT  EXP  E,0
        !          1413: > SYSEC  EXP  E,2
        !          1414: > SYSEF  EXP  E,2
        !          1415: > SYSEJ  EXP  E,0
        !          1416: > SYSEM  EXP  E,0
        !          1417: > SYSEN  EXP  E,2
        !          1418: > SYSEP  EXP  E,2
        !          1419: > .IF    .CNLD
        !          1420: > .ELSE
        !          1421: > SYSEX  EXP  E,1
        !          1422: > .FI
        !          1423: > SYSHS  EXP  E,2
        !          1424: > SYSID  EXP  E,0
        !          1425: > SYSIL  EXP  E,0
        !          1426: > SYSIN  EXP  E,2
        !          1427: > SYSIO  EXP  E,2
        !          1428: > .IF    .CNLD
        !          1429: > .ELSE
        !          1430: > SYSLD  EXP  E,2
        !          1431: > .FI
        !          1432: > SYSMM  EXP  E,0
        !          1433: > SYSMX  EXP  E,0
        !          1434: > SYSOU  EXP  E,2
        !          1435: > SYSPI  EXP  E,2
        !          1436: > SYSPP  EXP  E,0
        !          1437: > SYSPR  EXP  E,2
        !          1438: > SYSRD  EXP  E,2
        !          1439: > SYSRI  EXP  E,2
        !          1440: > SYSSC  EXP  E,2
        !          1441: 1252,1272c205
        !          1442: < *
        !          1443: < *      SYSST -- SET FILE POINTER
        !          1444: < *
        !          1445: < SYSST  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1446: < *
        !          1447: < *      SYSST IS CALLED TO CHANGE THE POSITION OF A FILE
        !          1448: < *      POINTER. THIS IS ACCOMPLISHED IN A SYSTEM DEPENDENT
        !          1449: < *      MANNER, AND THUS THE 2ND AND 3RD ARGUMENTS ARE PASSED
        !          1450: < *      UNCONVERTED.
        !          1451: < *
        !          1452: < *      (WA)                  FCBLK POINTER
        !          1453: < *      (WB)                  2ND ARGUMENT
        !          1454: < *      (WC)                  3RD ARGUMENT
        !          1455: < *      JSR  SYSST            CALL TO SET FILE POINTER
        !          1456: < *      PPM  LOC              RETURN HERE IF INVALID 2ND ARG
        !          1457: < *      PPM  LOC              RETURN HERE IF INVALID 3RD ARG
        !          1458: < *      PPM  LOC              RETURN HERE IF FILE DOES NOT EXIST
        !          1459: < *      PPM  LOC              RETURN HERE IF SET NOT ALLOWED
        !          1460: < *      PPM  LOC              RETURN HERE IF I/O ERROR
        !          1461: < *
        !          1462: <        EJC
        !          1463: ---
        !          1464: > SYSST  EXP  E,2
        !          1465: 1274,1316c207,212
        !          1466: < *
        !          1467: < *      SYSTM -- GET EXECUTION TIME SO FAR
        !          1468: < *
        !          1469: < SYSTM  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1470: < *
        !          1471: < *      SYSTM IS USED TO OBTAIN THE AMOUNT OF EXECUTION TIME
        !          1472: < *      USED SO FAR SINCE SPITBOL WAS GIVEN CONTROL. THE UNITS
        !          1473: < *      ARE DESCRIBED AS MILLISECONDS IN THE SPITBOL OUTPUT, BUT
        !          1474: < *      THE EXACT MEANING IS SYSTEM DEPENDENT. WHERE APPROPRIATE,
        !          1475: < *      THIS VALUE SHOULD RELATE TO PROCESSOR RATHER THAN CLOCK
        !          1476: < *      TIMING VALUES.
        !          1477: < *
        !          1478: < *      JSR  SYSTM            CALL TO GET TIMER VALUE
        !          1479: < *      (IA)                  TIME SO FAR IN MILLISECONDS
        !          1480: <        EJC
        !          1481: < *
        !          1482: < *      SYSTT -- TRACE TOGGLE
        !          1483: < *
        !          1484: < SYSTT  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1485: < *
        !          1486: < *      CALLED BY SPITBOL FUNCTION TRACE() WITH NO ARGS TO
        !          1487: < *      TOGGLE THE SYSTEM TRACE SWITCH.  THIS PERMITS TRACING OF
        !          1488: < *      LABELS IN SPITBOL CODE TO BE TURNED ON OR OFF.
        !          1489: < *
        !          1490: < *      JSR  SYSTT            CALL TO TOGGLE TRACE SWITCH
        !          1491: <        EJC
        !          1492: < *
        !          1493: < *      SYSUL -- UNLOAD EXTERNAL FUNCTION
        !          1494: < *
        !          1495: < SYSUL  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1496: < *
        !          1497: < *      SYSUL IS USED TO UNLOAD A FUNCTION PREVIOUSLY
        !          1498: < *      LOADED WITH A CALL TO SYSLD.
        !          1499: < *
        !          1500: < *      (XR)                  PTR TO CONTROL BLOCK (EFBLK)
        !          1501: < *      JSR  SYSUL            CALL TO UNLOAD FUNCTION
        !          1502: < *
        !          1503: < *      THE FUNCTION CANNOT BE CALLED FOLLOWING A SYSUL CALL
        !          1504: < *      UNTIL ANOTHER SYSLD CALL IS MADE FOR THE SAME FUNCTION.
        !          1505: < *
        !          1506: < *      THE EFBLK CONTAINS THE FUNCTION CODE POINTER AND ALSO A
        !          1507: < *      POINTER TO THE VRBLK CONTAINING THE FUNCTION NAME (SEE
        !          1508: < *      DEFINITIONS AND DATA STRUCTURES SECTION).
        !          1509: ---
        !          1510: > SYSTM  EXP  E,0
        !          1511: > SYSTT  EXP  E,0
        !          1512: > .IF    .CNLD
        !          1513: > .ELSE
        !          1514: > SYSUL  EXP  E,0
        !          1515: > .FI
        !          1516: 1319,1405c215
        !          1517: <        EJC
        !          1518: < *
        !          1519: < *      SYSXI -- EXIT TO PRODUCE LOAD MODULE
        !          1520: < *
        !          1521: < SYSXI  EXP                   DEFINE EXTERNAL ENTRY POINT
        !          1522: < *
        !          1523: < *      WHEN SYSXI IS CALLED, XL CONTAINS EITHER A STRING POINTER
        !          1524: < *      OR ZERO. IN THE FORMER CASE, THE STRING GIVES THE
        !          1525: < *      CHARACTER NAME OF A PROGRAM. THE INTENTION IS THAT
        !          1526: < *      SPITBOL EXECUTION SHOULD BE TERMINATED FORTHWITH AND
        !          1527: < *      THE NAMED PROGRAM LOADED AND EXECUTED. THIS TYPE OF CHAIN
        !          1528: < *      EXECUTION IS VERY SYSTEM DEPENDENT AND IMPLEMENTORS MAY
        !          1529: < *      CHOOSE TO OMIT IT OR FIND IT IMPOSSIBLE TO PROVIDE.
        !          1530: < *      IF (XL) IS ZERO,IA CONTAINS ONE OF THE FOLLOWING INTEGERS
        !          1531: < *
        !          1532: < *      -1, -2, -3
        !          1533: < *           CREATE IF POSSIBLE A LOAD MODULE CONTAINING ONLY THE
        !          1534: < *           IMPURE AREA OF MEMORY WHICH NEEDS TO BE LOADED WITH
        !          1535: < *           A COMPATIBLE PURE SEGMENT FOR SUBSEQUENT EXECUTIONS.
        !          1536: < *           VERSION NUMBERS TO CHECK COMPATIBILITY SHOULD BE
        !          1537: < *           KEPT IN BOTH SEGMENTS AND CHECKED ON LOADING.
        !          1538: < *           TO ASSIST WITH THIS CHECK, (XR) ON ENTRY IS A
        !          1539: < *           POINTER TO AN SCBLK CONTAINING THE SPITBOL MAJOR
        !          1540: < *           VERSION NUMBER V.V (SEE SYSID).
        !          1541: < *
        !          1542: < *      0    IF POSSIBLE, RETURN CONTROL TO JOB CONTROL
        !          1543: < *           COMMAND LEVEL. THE EFFECT IF AVAILABLE WILL BE
        !          1544: < *           SYSTEM DEPENDENT.
        !          1545: < *
        !          1546: < *      +1, +2, +3
        !          1547: < *           CREATE IF POSSIBLE A LOAD MODULE FROM ALL OF
        !          1548: < *           MEMORY. IT SHOULD BE POSSIBLE TO LOAD AND EXECUTE
        !          1549: < *           THIS MODULE DIRECTLY.
        !          1550: < *
        !          1551: < *      IN THE CASE OF SAVED LOAD MODULES, THE STATUS OF OPEN
        !          1552: < *      FILES IS NOT PRESERVED AND IMPLEMENTORS MAY CHOOSE TO
        !          1553: < *      OFFER MEANS OF ATTACHING FILES BEFORE EXECUTION OF LOAD
        !          1554: < *      MODULES STARTS OR LEAVE IT TO THE USER TO INCLUDE
        !          1555: < *      SUITABLE INPUT(), OUTPUT() CALLS IN HIS PROGRAM.
        !          1556: < *      SYSXI SHOULD MAKE A NOTE THAT NO I/O CHANNELS,
        !          1557: < *      INCLUDING STANDARD FILES, HAVE FILES ATTACHED SO THAT
        !          1558: < *      CALLS OF SYSIN, SYSOU, SYSPR, SYSRD SHOULD FAIL UNLESS
        !          1559: < *      NEW ASSOCIATIONS ARE MADE FOR THE LOAD MODULE.
        !          1560: < *      AT LEAST IN THE CASE OF THE STANDARD OUTPUT FILE, IT IS
        !          1561: < *      RECOMMENDED THAT EITHER THE USER BE REQUIRED TO ATTACH
        !          1562: < *      A FILE OR THAT A DEFAULT FILE IS ATTACHED, SINCE THE
        !          1563: < *      PROBLEM OF ERROR MESSAGES GENERATED BY THE LOAD MODULE
        !          1564: < *      IS OTHERWISE SEVERE. AS A LAST RESORT, IF SPITBOL
        !          1565: < *      ATTEMPTS TO WRITE TO THE STANDARD OUTPUT FILE AND GETS A
        !          1566: < *      REPLY INDICATING THAT SUCH OUPUT IS UNACCEPTABLE IT STOPS
        !          1567: < *      BY USING AN ENTRY TO SYSEJ WITH ENDING CODE 998.
        !          1568: < *      AS DESCRIBED BELOW, PASSING OF SOME ARGUMENTS MAKES IT
        !          1569: < *      CLEAR THAT LOAD MODULE WILL USE A STANDARD OUTPUT FILE.
        !          1570: < *
        !          1571: < *      IF USE IS MADE OF FCBLKS FOR I/O ASSOCIATION, SPITBOL
        !          1572: < *      BUILDS A CHAIN SO THAT THOSE IN USE MAY BE FOUND IN SYSXI
        !          1573: < *      AND SYSEJ. THE NODES ARE 4 WORDS LONG. THIRD WORD
        !          1574: < *      CONTAINS LINK TO NEXT NODE OR 0, FOURTH WORD CONTAINS
        !          1575: < *      FCBLK POINTER.
        !          1576: <        EJC
        !          1577: < *
        !          1578: < *      SYSXI (CONTINUED)
        !          1579: < *
        !          1580: < *      (XL)                  ZERO OR SCBLK PTR
        !          1581: < *      (XR)                  PTR TO V.V SCBLK
        !          1582: < *      (IA)                  SIGNED INTEGER ARGUMENT
        !          1583: < *      (WB)                  0 OR PTR TO HEAD OF FCBLK CHAIN
        !          1584: < *      JSR  SYSXI            CALL TO EXIT
        !          1585: < *      PPM  LOC              REQUESTED ACTION NOT POSSIBLE
        !          1586: < *      PPM  LOC              ACTION CAUSED IRRECOVERABLE ERROR
        !          1587: < *      (REGISTERS)           SHOULD BE PRESERVED OVER CALL
        !          1588: < *
        !          1589: < *      LOADING AND RUNNING THE LOAD MODULE OR RETURNING FROM
        !          1590: < *      JCL COMMAND LEVEL CAUSES EXECUTION TO RESUME AT THE POINT
        !          1591: < *      AFTER THE ERROR RETURNS WHICH FOLLOW THE CALL OF SYSXI.
        !          1592: < *      THE VALUE PASSED AS EXIT ARGUMENT IS USED TO INDICATE
        !          1593: < *      OPTIONS REQUIRED ON RESUMPTION OF LOAD MODULE.
        !          1594: < *      +1 OR -1 REQUIRE THAT ON RESUMPTION, SYSID AND SYSPP BE
        !          1595: < *      CALLED AND A HEADING PRINTED ON THE STANDARD OUTPUT FILE.
        !          1596: < *      +2 OR -2 INDICATE THAT SYSPP WILL BE CALLED BUT NOT SYSID
        !          1597: < *      AND NO HEADING WILL BE PUT ON STANDARD OUTPUT FILE.
        !          1598: < *      ABOVE OPTIONS HAVE THE OBVIOUS IMPLICATION THAT A
        !          1599: < *      STANDARD O/P FILE MUST BE PROVIDED FOR THE LOAD MODULE.
        !          1600: < *      +3 OR -3 INDICATE CALLS OF NEITHER SYSID NOR SYSPP
        !          1601: < *      AND NO HEADING WILL BE PLACED ON STANDARD OUTPUT FILE.
        !          1602: < *      NO RETURN FROM SYSXI IS POSSIBLE IF ANOTHER PROGRAM
        !          1603: < *      IS LOADED AND ENTERED.
        !          1604: ---
        !          1605: > SYSXI  EXP  E,2
        !          1606: 1407a218
        !          1607: > *      NAME GLOBAL LABELS, INTERNAL PROCEDURES AND ROUTINES.
        !          1608: 1409,1410c220,228
        !          1609: < *      INTRODUCE THE INTERNAL PROCEDURES.
        !          1610: < *
        !          1611: ---
        !          1612: > CMPCE  GLB
        !          1613: > CMPEL  GLB
        !          1614: > CMPLE  GLB
        !          1615: > CMPSE  GLB
        !          1616: > EVLXF  GLB
        !          1617: > EVLXN  GLB
        !          1618: > EVLXV  GLB
        !          1619: > LCNXE  GLB
        !          1620: > TRXQR  GLB
        !          1621: 1420d237
        !          1622: < APNDB  INP  E,2
        !          1623: 1428a246
        !          1624: > CBLCK  INP  N,1
        !          1625: 1437c255
        !          1626: < COPYB  INP  N,1
        !          1627: ---
        !          1628: > COPND  INP  E,0
        !          1629: 1439d256
        !          1630: < DTACH  INP  E,0
        !          1631: 1444c261
        !          1632: < EVALI  INP  R,4
        !          1633: ---
        !          1634: > EVALI  INP  R,3
        !          1635: 1446c263
        !          1636: < EVALS  INP  R,3
        !          1637: ---
        !          1638: > EVALS  INP  R,2
        !          1639: 1453,1455d269
        !          1640: < .IF    .CULC
        !          1641: < FLSTG  INP  R,0
        !          1642: < .FI
        !          1643: 1458a273,276
        !          1644: > .IF    .CNBF
        !          1645: > .ELSE
        !          1646: > GTBUF  INP  E,1
        !          1647: > .FI
        !          1648: 1481,1483c299,300
        !          1649: < IOFCB  INP  N,2
        !          1650: < IOPPF  INP  N,0
        !          1651: < IOPUT  INP  N,6
        !          1652: ---
        !          1653: > IOFTG  INP  N,1
        !          1654: > IOPUT  INP  N,4
        !          1655: 1500a318
        !          1656: > PRTCF  INP  E,0
        !          1657: 1502,1503c320,321
        !          1658: < PRTIC  INP  E,0
        !          1659: < PRTIS  INP  E,0
        !          1660: ---
        !          1661: > PRTFB  INP  E,0
        !          1662: > PRTFH  INP  R,0
        !          1663: 1506,1507d323
        !          1664: < PRTMX  INP  E,0
        !          1665: < PRTNL  INP  R,0
        !          1666: 1511a328
        !          1667: > PRTSF  INP  E,0
        !          1668: 1515c332
        !          1669: < PRTTR  INP  E,0
        !          1670: ---
        !          1671: > PRTVF  INP  E,0
        !          1672: 1517a335,336
        !          1673: > PTTFH  INP  E,0
        !          1674: > PTTST  INP  E,0
        !          1675: 1522a342,345
        !          1676: > .IF    .CASL
        !          1677: > SBSCC  INP  E,0
        !          1678: > SBSTG  INP  E,0
        !          1679: > .FI
        !          1680: 1529c352
        !          1681: < SORTA  INP  N,0
        !          1682: ---
        !          1683: > SORTA  INP  N,1
        !          1684: 1532c355
        !          1685: < SORTH  INP  E,0
        !          1686: ---
        !          1687: > SORTH  INP  N,0
        !          1688: 1535c358
        !          1689: < TRACE  INP  N,2
        !          1690: ---
        !          1691: > TRACE  INP  N,3
        !          1692: 1536a360
        !          1693: > TRCHN  INP  E,1
        !          1694: 1541,1543d364
        !          1695: < *
        !          1696: < *      INTRODUCE THE INTERNAL ROUTINES
        !          1697: < *
        !          1698: 1545a367,368
        !          1699: > EROSI  INR
        !          1700: > ERROR  INR
        !          1701: 1560a384
        !          1702: > INITL  INR
        !          1703: 1562a387
        !          1704: > STAKV  INR
        !          1705: 1567,1568d391
        !          1706: < SYSAB  INR
        !          1707: < SYSTU  INR
        !          1708: 1569a393,395
        !          1709: > *      THIS SECTION CONTAINS ALL SYMBOL DEFINITIONS AND ALSO
        !          1710: > *      PICTURES OF ALL DATA STRUCTURES USED IN THE SYSTEM.
        !          1711: > *
        !          1712: 1577a404,407
        !          1713: > *      NOTE THAT EVEN IF CONDITIONAL ASSEMBLY IS USED TO OMIT
        !          1714: > *      SOME FEATURE (E.G. REAL ARITHMETIC) A FULL SET OF CFP$-
        !          1715: > *      VALUES MUST BE SUPPLIED. USE DUMMY VALUES IF GENUINE
        !          1716: > *      ONES ARE NOT NEEDED.
        !          1717: 1581c411
        !          1718: < CFP$B  EQU  *                BYTES/WORD ADDRESSING FACTOR
        !          1719: ---
        !          1720: > CFP$B  EQU  *                BAUS/WORD ADDRESSING FACTOR
        !          1721: 1585c415
        !          1722: < CFP$F  EQU  *                OFFSET IN BYTES TO CHARS IN
        !          1723: ---
        !          1724: > CFP$F  EQU  *                OFFSET IN BAUS TO CHARS IN
        !          1725: 1594,1601d423
        !          1726: < *      THE FOLLOWING DEFINITIONS REQUIRE THE SUPPLY OF EITHER
        !          1727: < *      A SINGLE PARAMETER IF REAL ARITHMETIC IS OMITTED OR
        !          1728: < *      THREE PARAMETERS IF REAL ARITHMETIC IS INCLUDED.
        !          1729: < *
        !          1730: < .IF    .CNRA
        !          1731: < NSTMX  EQU  *                NO. OF DECIMAL DIGITS IN CFP$M
        !          1732: < .ELSE
        !          1733: < *
        !          1734: 1606,1613d427
        !          1735: < CFP$X  EQU  *                MAX DIGITS IN REAL EXPONENT
        !          1736: < *
        !          1737: < MXDGS  EQU  CFP$S+CFP$X      MAX DIGITS IN REAL NUMBER
        !          1738: < *
        !          1739: < NSTMX  EQU  MXDGS+5          MAX SPACE FOR REAL (FOR +0.E+)
        !          1740: < .FI
        !          1741: < .IF    .CUCF
        !          1742: < *
        !          1743: 1620c434,439
        !          1744: < .FI
        !          1745: ---
        !          1746: > *
        !          1747: > CFP$X  EQU  *                MAX DIGITS IN REAL EXPONENT
        !          1748: > *
        !          1749: > MXDGS  EQU  CFP$S+CFP$X      MAX DIGITS IN REAL NUMBER
        !          1750: > *
        !          1751: > NSTMX  EQU  MXDGS+5          MAX SPACE FOR REAL (FOR +0.E+)
        !          1752: 1759a579
        !          1753: > *      THEY ARE ALL UNDER CONDITIONAL ASSEMBLY.
        !          1754: 1798a619,620
        !          1755: > .IF    .CASL
        !          1756: > DFA$A  EQU  CH$$A-CH$LA      DIFF BETWEEN LC AND UC LETTERS
        !          1757: 1800,1807d621
        !          1758: < *      IF A DELIMITER OTHER THAN CH$CM MUST BE USED IN
        !          1759: < *      THE THIRD ARGUMENT OF INPUT(),OUTPUT() THEN .CIOD SHOULD
        !          1760: < *      BE DEFINED AND A PARAMETER SUPPLIED FOR IODEL.
        !          1761: < *
        !          1762: < .IF    .CIOD
        !          1763: < IODEL  EQU  *
        !          1764: < .ELSE
        !          1765: < IODEL  EQU  CH$CM
        !          1766: 1927c741,742
        !          1767: < BL$CT  EQU  BL$CM+1          CTBLK
        !          1768: ---
        !          1769: > BL$CO  EQU  BL$CM+1          COBLK
        !          1770: > BL$CT  EQU  BL$CO+1          CTBLK
        !          1771: 2030,2033d844
        !          1772: < .IF    .CNBF
        !          1773: < .ELSE
        !          1774: < *      BCBLK                 BUFFER CONTROL BLOCK
        !          1775: < .FI
        !          1776: 2079c890
        !          1777: < ARLEN  EQU  IDVAL+1          LENGTH OF ARBLK IN BYTES
        !          1778: ---
        !          1779: > ARLEN  EQU  IDVAL+1          LENGTH OF ARBLK IN BAUS
        !          1780: 2096c907
        !          1781: < *      THE LENGTH OF AN ARBLK IN BYTES MAY NOT EXCEED MXLEN.
        !          1782: ---
        !          1783: > *      THE LENGTH OF AN ARBLK IN BAUS MAY NOT EXCEED MXLEN.
        !          1784: 2103c914
        !          1785: < *
        !          1786: ---
        !          1787: >        EJC
        !          1788: 2197,2198c1008,1009
        !          1789: < CCLEN  EQU  CCTYP+1          LENGTH OF CCBLK IN BYTES
        !          1790: < CCUSE  EQU  CCLEN+1          OFFSET PAST LAST USED WORD (BYTES)
        !          1791: ---
        !          1792: > CCLEN  EQU  CCTYP+1          LENGTH OF CCBLK IN BAUS
        !          1793: > CCUSE  EQU  CCLEN+1          OFFSET PAST LAST USED WORD (BAUS)
        !          1794: 2227c1038
        !          1795: < CDLEN  EQU  OFFS2            LENGTH OF CDBLK IN BYTES
        !          1796: ---
        !          1797: > CDLEN  EQU  OFFS2            LENGTH OF CDBLK IN BAUS
        !          1798: 2564c1375
        !          1799: < CMLEN  EQU  CMIDN+1          LENGTH OF CMBLK IN BYTES
        !          1800: ---
        !          1801: > CMLEN  EQU  CMIDN+1          LENGTH OF CMBLK IN BAUS
        !          1802: 2626a1438,1477
        !          1803: > *      COPY FILE BLOCK (COBLK)
        !          1804: > *
        !          1805: > *      A CHAIN STACK OF COPY BLOCKS IS BUILT FOR EVERY NESTED
        !          1806: > *      -COPY CONTROL CARD.  THE CONTROL BLOCK IS USED TO PRESERVE
        !          1807: > *      THE INPUT CONTEXT OF THE FILE CONTAINING THE -COPY.
        !          1808: > *      AS -COPYS ARE ENDED, THESE BLOCKS ARE POPPED OFF THE CHAIN
        !          1809: > *      AND THE STATE RESTORED.  SEE ROUTINES CNCRD, COPND.
        !          1810: > *
        !          1811: > *           +------------------------------------+
        !          1812: > *           I                COTYP               I
        !          1813: > *           +------------------------------------+
        !          1814: > *           I                CONXT               I
        !          1815: > *           +------------------------------------+
        !          1816: > *           I                COIOT               I
        !          1817: > *           +------------------------------------+
        !          1818: > *           I                COTTI               I
        !          1819: > *           +------------------------------------+
        !          1820: > *           I                COCIM               I
        !          1821: > *           +------------------------------------+
        !          1822: > *           I                COSPT               I
        !          1823: > *           +------------------------------------+
        !          1824: > *           I                COSLS               I
        !          1825: > *           +------------------------------------+
        !          1826: > *           I                COSIN               I
        !          1827: > *           +------------------------------------+
        !          1828: > *           I                COSTL               I
        !          1829: > *           +------------------------------------+
        !          1830: > *
        !          1831: > COTYP  EQU  0                POINTER TO DUMMY ROUTINE B$COP
        !          1832: > CONXT  EQU  COTYP+1          POINT TO NEXT (OUTER -COPY) COBLK
        !          1833: > COIOT  EQU  CONXT+1          RECORD IOTAG FOR OSINT
        !          1834: > COTTI  EQU  COIOT+1          RECORD TTINS FLAG
        !          1835: > COCIM  EQU  COTTI+1          RECORD R$CIM COMPILER IMAGE
        !          1836: > COSPT  EQU  COCIM+1          RECORD SCNPT SCAN POINTER
        !          1837: > COSLS  EQU  COSPT+1          RECORD CSWLS LISTING FLAG
        !          1838: > COSIN  EQU  COSLS+1          RECORD CSWIN -INXXX VALUE
        !          1839: > COSTL  EQU  COSIN+1          RECORD R$STL -STITL STRING PTR
        !          1840: > COSI$  EQU  COSTL+1          SIZE OF COBLK
        !          1841: >        EJC
        !          1842: > *
        !          1843: 2688c1539
        !          1844: < DFLEN  EQU  FARGS+1          LENGTH OF DFBLK IN BYTES
        !          1845: ---
        !          1846: > DFLEN  EQU  FARGS+1          LENGTH OF DFBLK IN BAUS
        !          1847: 2798a1650,1651
        !          1848: > .IF    .CNLD
        !          1849: > .ELSE
        !          1850: 2826c1679
        !          1851: < EFLEN  EQU  FARGS+1          LENGTH OF EFBLK IN BYTES
        !          1852: ---
        !          1853: > EFLEN  EQU  FARGS+1          LENGTH OF EFBLK IN BAUS
        !          1854: 2845a1699,1700
        !          1855: > *           4                TYPE IS BUFFER
        !          1856: > .FI
        !          1857: 2901c1756
        !          1858: < EXLEN  EQU  EXSTM+1          LENGTH OF EXBLK IN BYTES
        !          1859: ---
        !          1860: > EXLEN  EQU  EXSTM+1          LENGTH OF EXBLK IN BAUS
        !          1861: 2941c1796
        !          1862: < FFOFS  EQU  FFNXT+1          OFFSET (BYTES) TO FIELD IN PDBLK
        !          1863: ---
        !          1864: > FFOFS  EQU  FFNXT+1          OFFSET (BAUS) TO FIELD IN PDBLK
        !          1865: 3022c1877
        !          1866: < *      IS FOUND NMOFS BYTES PAST THE ADDRESS IN NMBAS.
        !          1867: ---
        !          1868: > *      IS FOUND NMOFS BAUS PAST THE ADDRESS IN NMBAS.
        !          1869: 3135c1990
        !          1870: < *      CONTAINS THE LENGTH OF THE PDBLK IN BYTES (FIELD DFPDL).
        !          1871: ---
        !          1872: > *      CONTAINS THE LENGTH OF THE PDBLK IN BAUS (FIELD DFPDL).
        !          1873: 3169c2024
        !          1874: < PFLEN  EQU  FARGS+1          LENGTH OF PFBLK IN BYTES
        !          1875: ---
        !          1876: > PFLEN  EQU  FARGS+1          LENGTH OF PFBLK IN BAUS
        !          1877: 3176c2031
        !          1878: < PFAGB  EQU  PFARG-1          OFFSET BEHIND PFARG FOR ARG, LOCAL
        !          1879: ---
        !          1880: > PFAGB  EQU  PFARG-1          OFFSET BEHIND PFARG FOR ARG,LOCAL
        !          1881: 3237c2092
        !          1882: < *      IS GIVEN IN BYTES BY CFP$F AND THAT THIS VALUE IS
        !          1883: ---
        !          1884: > *      IS GIVEN IN BAUS BY CFP$F AND THAT THIS VALUE IS
        !          1885: 3278c2133
        !          1886: < *           I                SVCHS               I
        !          1887: ---
        !          1888: > *           /                SVCHS               /
        !          1889: 3323c2178,2181
        !          1890: < SVFPK  EQU  SVFNP+SVKVC      PREEVAL FCN + CONST KEYWD + VAL
        !          1891: ---
        !          1892: > .IF    .CNFN
        !          1893: > .ELSE
        !          1894: > SVFPK  EQU  SVFNP+SVKVC      PREEVAL FUNC + CONST KEYWD+VAL
        !          1895: > .FI
        !          1896: 3333c2191
        !          1897: < *      THE ITEM AND APPLY FUNCTIONS FALL OUTSIDE THIS CATEGORY.
        !          1898: ---
        !          1899: > *      THE APPLY FUNCTION FALLS OUTSIDE THIS CATEGORY.
        !          1900: 3373c2231
        !          1901: < *           PREDEFINED FUNCTIONS USING THIS ARE APPLY AND ITEM.
        !          1902: ---
        !          1903: > *           PREDEFINED FUNCTION USING THIS IS APPLY.
        !          1904: 3401,3409c2259,2260
        !          1905: < K$ABE  EQU  0                ABEND
        !          1906: < K$ANC  EQU  K$ABE+CFP$B      ANCHOR
        !          1907: < .IF    .CULC
        !          1908: < K$CAS  EQU  K$ANC+CFP$B      CASE
        !          1909: < K$COD  EQU  K$CAS+CFP$B      CODE
        !          1910: < .ELSE
        !          1911: < K$COD  EQU  K$ANC+CFP$B      CODE
        !          1912: < .FI
        !          1913: < K$DMP  EQU  K$COD+CFP$B      DUMP
        !          1914: ---
        !          1915: > K$ANC  EQU  0                ANCHOR
        !          1916: > K$DMP  EQU  K$ANC+CFP$B      DUMP
        !          1917: 3447c2298,2299
        !          1918: < K$STC  EQU  K$RTN+1          STCOUNT
        !          1919: ---
        !          1920: > K$COD  EQU  K$RTN+1          CODE
        !          1921: > K$STC  EQU  K$COD+1          STCOUNT
        !          1922: 3454a2307
        !          1923: > K$$CD  EQU  K$COD-K$ALP      CODE
        !          1924: 3478d2330
        !          1925: < *           +------------------------------------+
        !          1926: 3487c2339
        !          1927: < TBLEN  EQU  OFFS2            LENGTH OF TBBLK IN BYTES
        !          1928: ---
        !          1929: > TBLEN  EQU  OFFS2            LENGTH OF TBBLK IN BAUS
        !          1930: 3546c2398
        !          1931: < *           I       TRTAG OR TRTER OR TRTRF      I
        !          1932: ---
        !          1933: > *           I            TRTAG OR TRTER          I
        !          1934: 3548c2400
        !          1935: < *           I            TRFNC OR TRFPT          I
        !          1936: ---
        !          1937: > *           I            TRFNC OR TRTRI          I
        !          1938: 3557c2409
        !          1939: < TRTAG  EQU  TRVAL+1          TRACE TAG
        !          1940: ---
        !          1941: > TRTAG  EQU  TRVAL+1          TRACE TAG OR IOTAG
        !          1942: 3559d2410
        !          1943: < TRTRF  EQU  TRTAG            PTR TO TRBLK HOLDING FCBLK PTR
        !          1944: 3561c2412
        !          1945: < TRFPT  EQU  TRFNC            FCBLK PTR FOR SYSIO
        !          1946: ---
        !          1947: > TRTRI  EQU  TRFNC            PTR TO TRACE BLOCK HOLDING IOTAG
        !          1948: 3567,3568c2418,2419
        !          1949: < TRTOU  EQU  TRTVL+1          TRACE TYPE FOR OUTPUT ASSOCIATION
        !          1950: < TRTFC  EQU  TRTOU+1          TRACE TYPE FOR FCBLK IDENTIFICATION
        !          1951: ---
        !          1952: > TRTIO  EQU  TRTVL+1          TRACE TYPE FOR IOTAG TRACE BLOCK
        !          1953: > TRTOU  EQU  TRTIO+1          TRACE TYPE FOR OUTPUT ASSOCIATION
        !          1954: 3584,3586c2435
        !          1955: < *           TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS
        !          1956: < *           TO AN FCBLK USED FOR I/O ASSOCIATION.
        !          1957: < *           TRFPT IS THE FCBLK PTR RETURNED BY SYSIO.
        !          1958: ---
        !          1959: > *           TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO.
        !          1960: 3625,3627c2474
        !          1961: < *           TRTRF POINTS TO THE TRAP BLOCK WHICH IN TURN POINTS
        !          1962: < *           TO AN FCBLK USED FOR I/O ASSOCIATION.
        !          1963: < *           TRFPT IS THE FCBLK PTR RETURNED BY SYSIO.
        !          1964: ---
        !          1965: > *           TRTRI IS A PTR TO IOTAG TRBLK FROM SYSIO OR ZERO.
        !          1966: 3681c2528
        !          1967: < *      INPUT/OUTPUT FILE ARG1 TRAP BLOCK
        !          1968: ---
        !          1969: > *      INPUT/OUTPUT FILETAG TRAP BLOCK (TRTIO)
        !          1970: 3683c2530
        !          1971: < *           THE VALUE FIELD OF THE VARIABLE POINTS TO A TRBLK
        !          1972: ---
        !          1973: > *           THE VALUE FIELD OF THE FILETAG VBL POINTS TO A TRBLK
        !          1974: 3687,3689c2534
        !          1975: < *           TO HOLD A POINTER TO THE FCBLK WHICH AN
        !          1976: < *           IMPLEMENTATION MAY REQUEST TO HOLD INFORMATION
        !          1977: < *           ABOUT A FILE.
        !          1978: ---
        !          1979: > *           TO HOLD THE IOTAG RETURNED BY A SYSIO CALL
        !          1980: 3691,3694c2536,2538
        !          1981: < *           TRTYP IS SET TO TRTFC
        !          1982: < *           TRNEXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL
        !          1983: < *           TRFNM IS 0
        !          1984: < *           TRFPT IS THE FCBLK POINTER.
        !          1985: ---
        !          1986: > *           TRTYP IS SET TO TRTIO
        !          1987: > *           TRNXT POINTS TO NEXT TRBLK OR TRVAL IS VARIABLE VAL
        !          1988: > *           TRTAG HOLDS THE IOTAG.
        !          1989: 3701a2546
        !          1990: > *      FILETAG ASSOCIATION (IF PRESENT)
        !          1991: 3729c2574
        !          1992: < VCLEN  EQU  OFFS2            LENGTH OF VCBLK IN BYTES
        !          1993: ---
        !          1994: > VCLEN  EQU  OFFS2            LENGTH OF VCBLK IN BAUS
        !          1995: 3832c2677
        !          1996: < *      VRCHS IS THE NAME (LJRZ) IF VRLEN IS NON-ZERO.
        !          1997: ---
        !          1998: > *      VRCHS IS THE NAME IF VRLEN IS NON-ZERO.
        !          1999: 3843,3844d2687
        !          2000: < *      THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK.
        !          2001: < *      SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS.
        !          2002: 3857c2700
        !          2003: < XNLEN  EQU  XNTYP+1          LENGTH OF XNBLK IN BYTES
        !          2004: ---
        !          2005: > XNLEN  EQU  XNTYP+1          LENGTH OF XNBLK IN BAUS
        !          2006: 3873,3874d2715
        !          2007: < *      THIS TYPE OF BLOCK MAY BE USED AS A FILE CONTROL BLOCK.
        !          2008: < *      SEE SYSFC,SYSIN,SYSOU,S$INP,S$OUP FOR DETAILS.
        !          2009: 3887c2728
        !          2010: < XRLEN  EQU  XRTYP+1          LENGTH OF XRBLK IN BYTES
        !          2011: ---
        !          2012: > XRLEN  EQU  XRTYP+1          LENGTH OF XRBLK IN BAUS
        !          2013: 3911,3912c2752
        !          2014: < INILN  EQU  132              DEFAULT IMAGE LENGTH FOR COMPILER
        !          2015: < INILS  EQU  80               IMAGE LENGTH IF -SEQU IN EFFECT
        !          2016: ---
        !          2017: > INILN  EQU  160              DEFAULT IMAGE LENGTH FOR COMPILER
        !          2018: 3914,3916d2753
        !          2019: < IONMB  EQU  2                NAME BASE USED FOR IOCHN IN SYSIO
        !          2020: < IONMO  EQU  4                NAME OFFSET USED FOR IOCHN IN SYSIO
        !          2021: < *
        !          2022: 3931d2767
        !          2023: < NINI8  EQU  998
        !          2024: 3934d2769
        !          2025: <        EJC
        !          2026: 3945c2780
        !          2027: < RILEN  EQU  120              BUFFER LENGTH FOR SYSRI
        !          2028: ---
        !          2029: > RILEN  EQU  160              BUFFER LENGTH FOR SYSRI
        !          2030: 4051,4053c2886,2888
        !          2031: < .IF    .CULC
        !          2032: < CC$CA  EQU  0                -CASE
        !          2033: < CC$DO  EQU  CC$CA+1          -DOUBLE
        !          2034: ---
        !          2035: > .IF    .CASL
        !          2036: > CC$CI  EQU  0                -CASEIG
        !          2037: > CC$CO  EQU  CC$CI+1          -COPY
        !          2038: 4055c2890
        !          2039: < CC$DO  EQU  0                -DOUBLE
        !          2040: ---
        !          2041: > CC$CO  EQU  0                -COPY
        !          2042: 4057,4061c2892,2893
        !          2043: < CC$DU  EQU  CC$DO+1          -DUMP
        !          2044: < CC$EJ  EQU  CC$DU+1          -EJECT
        !          2045: < CC$ER  EQU  CC$EJ+1          -ERRORS
        !          2046: < CC$EX  EQU  CC$ER+1          -EXECUTE
        !          2047: < CC$FA  EQU  CC$EX+1          -FAIL
        !          2048: ---
        !          2049: > CC$EJ  EQU  CC$CO+1          -EJECT
        !          2050: > CC$FA  EQU  CC$EJ+1          -FAIL
        !          2051: 4063,4065c2895,2900
        !          2052: < CC$NR  EQU  CC$LI+1          -NOERRORS
        !          2053: < CC$NX  EQU  CC$NR+1          -NOEXECUTE
        !          2054: < CC$NF  EQU  CC$NX+1          -NOFAIL
        !          2055: ---
        !          2056: > .IF    .CASL
        !          2057: > CC$NC  EQU  CC$LI+1          -NOCASEIG
        !          2058: > CC$NF  EQU  CC$NC+1          -NOFAIL
        !          2059: > .ELSE
        !          2060: > CC$NF  EQU  CC$LI+1          -NOFAIL
        !          2061: > .FI
        !          2062: 4067,4073c2902
        !          2063: < CC$NO  EQU  CC$NL+1          -NOOPT
        !          2064: < CC$NP  EQU  CC$NO+1          -NOPRINT
        !          2065: < CC$OP  EQU  CC$NP+1          -OPTIMISE
        !          2066: < CC$PR  EQU  CC$OP+1          -PRINT
        !          2067: < CC$SI  EQU  CC$PR+1          -SINGLE
        !          2068: < CC$SP  EQU  CC$SI+1          -SPACE
        !          2069: < CC$ST  EQU  CC$SP+1          -STITL
        !          2070: ---
        !          2071: > CC$ST  EQU  CC$NL+1          -STITL
        !          2072: 4076c2905
        !          2073: < CC$NC  EQU  CC$TR+1          NUMBER OF CONTROL CARDS
        !          2074: ---
        !          2075: > CC$CT  EQU  CC$TR+1          NUMBER OF CONTROL CARDS
        !          2076: 4079d2907
        !          2077: <        EJC
        !          2078: 4108d2935
        !          2079: < *
        !          2080: 4157c2984
        !          2081: < .IF    .CULC
        !          2082: ---
        !          2083: > .IF    .CASL
        !          2084: 4159c2986
        !          2085: <        DTC  /DOUB/
        !          2086: ---
        !          2087: >        DTC  /COPY/
        !          2088: 4161c2988
        !          2089: < CCNMS  DTC  /DOUB/
        !          2090: ---
        !          2091: > CCNMS  DTC  /COPY/
        !          2092: 4163d2989
        !          2093: <        DTC  /DUMP/
        !          2094: 4165,4166d2990
        !          2095: <        DTC  /ERRO/
        !          2096: <        DTC  /EXEC/
        !          2097: 4169,4170c2993,2995
        !          2098: <        DTC  /NOER/
        !          2099: <        DTC  /NOEX/
        !          2100: ---
        !          2101: > .IF    .CASL
        !          2102: >        DTC  /NOCA/
        !          2103: > .FI
        !          2104: 4173,4178d2997
        !          2105: <        DTC  /NOOP/
        !          2106: <        DTC  /NOPR/
        !          2107: <        DTC  /OPTI/
        !          2108: <        DTC  /PRIN/
        !          2109: <        DTC  /SING/
        !          2110: <        DTC  /SPAC/
        !          2111: 4185c3004
        !          2112: < DMHDK  DAC  B$SCL            DUMP OF KEYWORD VALUES
        !          2113: ---
        !          2114: > DMHDK  DAC  B$SCL
        !          2115: 4187c3006
        !          2116: <        DTC  /DUMP OF KEYWORD VALUES/
        !          2117: ---
        !          2118: >        DDC  /DUMP OF KEYWORD VALUES/
        !          2119: 4189c3008
        !          2120: < DMHDV  DAC  B$SCL            DUMP OF NATURAL VARIABLES
        !          2121: ---
        !          2122: > DMHDV  DAC  B$SCL
        !          2123: 4191,4192c3010
        !          2124: <        DTC  /DUMP OF NATURAL VARIABLES/
        !          2125: <        EJC
        !          2126: ---
        !          2127: >        DDC  /DUMP OF NATURAL VARIABLES/
        !          2128: 4198c3016
        !          2129: <        DTC  /STORE USED/
        !          2130: ---
        !          2131: >        DDC  /STORE USED/
        !          2132: 4202c3020
        !          2133: <        DTC  /STORE LEFT/
        !          2134: ---
        !          2135: >        DDC  /STORE LEFT/
        !          2136: 4206c3024
        !          2137: <        DTC  /COMP ERRORS/
        !          2138: ---
        !          2139: >        DDC  /COMP ERRORS/
        !          2140: 4210c3028,3032
        !          2141: <        DTC  /COMP TIME-MSEC/
        !          2142: ---
        !          2143: > .IF    .CTMD
        !          2144: >        DDC  /COMP TIME-DSEC/
        !          2145: > .ELSE
        !          2146: >        DDC  /COMP TIME-MSEC/
        !          2147: > .FI
        !          2148: 4212c3034
        !          2149: < ENCM5  DAC  B$SCL            EXECUTION SUPPRESSED
        !          2150: ---
        !          2151: > ENCM5  DAC  B$SCL
        !          2152: 4214c3036,3037
        !          2153: <        DTC  /EXECUTION SUPPRESSED/
        !          2154: ---
        !          2155: >        DDC  /EXECUTION SUPPRESSED/
        !          2156: >        EJC
        !          2157: 4216c3039
        !          2158: < *      STRING CONSTANT FOR ABNORMAL END
        !          2159: ---
        !          2160: > *      FOR TERMINATION IN COMPILATION
        !          2161: 4218,4221c3041,3043
        !          2162: < ENDAB  DAC  B$SCL
        !          2163: <        DAC  12
        !          2164: <        DTC  /ABNORMAL END/
        !          2165: <        EJC
        !          2166: ---
        !          2167: > ENDIC  DAC  B$SCL
        !          2168: >        DAC  14
        !          2169: >        DDC  /IN COMPILATION/
        !          2170: 4227c3049
        !          2171: <        DTC  /MEMORY OVERFLOW/
        !          2172: ---
        !          2173: >        DDC  /MEMORY OVERFLOW/
        !          2174: 4233c3055
        !          2175: <        DTC  /NORMAL END/
        !          2176: ---
        !          2177: >        DDC  /NORMAL END/
        !          2178: 4237c3059
        !          2179: < ENDSO  DAC  B$SCL            STACK OVERFLOW IN GARBAGE COLLECTOR
        !          2180: ---
        !          2181: > ENDSO  DAC  B$SCL
        !          2182: 4239,4245c3061
        !          2183: <        DTC  /STACK OVERFLOW IN GARBAGE COLLECTION/
        !          2184: < *
        !          2185: < *      STRING CONSTANT FOR TIME UP
        !          2186: < *
        !          2187: < ENDTU  DAC  B$SCL
        !          2188: <        DAC  15
        !          2189: <        DTC  /ERROR - TIME UP/
        !          2190: ---
        !          2191: >        DDC  /STACK OVERFLOW IN GARBAGE COLLECTION/
        !          2192: 4250c3066
        !          2193: < ERMMS  DAC  B$SCL            ERROR
        !          2194: ---
        !          2195: > ERMMS  DAC  B$SCL
        !          2196: 4252c3068
        !          2197: <        DTC  /ERROR/
        !          2198: ---
        !          2199: >        DDC  /ERROR/
        !          2200: 4254c3070
        !          2201: < ERMNS  DAC  B$SCL            STRING / -- /
        !          2202: ---
        !          2203: > ERMNS  DAC  B$SCL
        !          2204: 4257a3074,3076
        !          2205: > *
        !          2206: > ERRTF  DAC  251              FATAL ERROR CODE - SEE LABEL ERRAF
        !          2207: > *
        !          2208: 4260c3079
        !          2209: < LSTMS  DAC  B$SCL            PAGE
        !          2210: ---
        !          2211: > LSTMS  DAC  B$SCL
        !          2212: 4262c3081
        !          2213: <        DTC  /PAGE /
        !          2214: ---
        !          2215: >        DDC  /PAGE /
        !          2216: 4268c3087
        !          2217: <        DTC  /MACRO SPITBOL VERSION 3.5/
        !          2218: ---
        !          2219: >        DDC  /MACRO SPITBOL VERSION 4.3/
        !          2220: 4272c3091
        !          2221: <        DTC  /3.5/
        !          2222: ---
        !          2223: >        DTC  /4.3/
        !          2224: 4301a3121,3123
        !          2225: > NDEXC  DAC  P$EXC            EXPRESSION
        !          2226: > .IF    .CNFN
        !          2227: > .ELSE
        !          2228: 4304c3126
        !          2229: < NDEXC  DAC  P$EXC            EXPRESSION
        !          2230: ---
        !          2231: > .FI
        !          2232: 4351,4353c3173,3175
        !          2233: < *      OPDVS IS USED WHEN SCANNING BELOW THE TOP LEVEL TO
        !          2234: < *      INSURE THAT THE CONCATENATION WILL NOT BE LATER
        !          2235: < *      MISTAKEN FOR PATTERN MATCHING
        !          2236: ---
        !          2237: > *      OPDVP IS USED WHEN SCANNING BELOW TOP LEVEL TO ENSURE
        !          2238: > *      THE CONCATENATION WILL NOT LATER BE MISTAKEN FOR
        !          2239: > *      PATTERN MATCHING
        !          2240: 4355c3177
        !          2241: < OPDVP  DAC  O$CNC            CONCATENATION - NOT PATTERN MATCH
        !          2242: ---
        !          2243: > OPDVP  DAC  O$CNC            PROVEN CONCATENATION
        !          2244: 4459,4467d3280
        !          2245: <        DAC  O$IMA            IMMEDIATE ASSIGNMENT
        !          2246: <        DAC  C$BVN
        !          2247: <        DAC  LLDLD
        !          2248: <        DAC  RRDLD
        !          2249: < *
        !          2250: <        DAC  O$INV            INDIRECTION
        !          2251: <        DAC  C$IND
        !          2252: <        DAC  LLUNO
        !          2253: < *
        !          2254: 4497a3311,3319
        !          2255: >        DAC  O$IMA            IMMEDIATE ASSIGNMENT
        !          2256: >        DAC  C$BVN
        !          2257: >        DAC  LLDLD
        !          2258: >        DAC  RRDLD
        !          2259: > *
        !          2260: >        DAC  O$INV            INDIRECTION
        !          2261: >        DAC  C$IND
        !          2262: >        DAC  LLUNO
        !          2263: > *
        !          2264: 4580c3402
        !          2265: <        DTC  /PROGRAM PROFILE/
        !          2266: ---
        !          2267: >        DDC  /PROGRAM PROFILE/
        !          2268: 4583c3405
        !          2269: <        DTC  /STMT    NUMBER OF     -- EXECUTION TIME --/
        !          2270: ---
        !          2271: >        DDC  /STMT    NUMBER OF     -- EXECUTION TIME --/
        !          2272: 4586c3408
        !          2273: <        DTC  /NUMBER  EXECUTIONS  TOTAL(MSEC) PER EXCN(MCSEC)/
        !          2274: ---
        !          2275: >        DDC  /NUMBER  EXECUTIONS  TOTAL(MSEC) PER EXCN(MCSEC)/
        !          2276: 4588d3409
        !          2277: < *
        !          2278: 4616a3438,3439
        !          2279: > .IF    .CNBF
        !          2280: > .ELSE
        !          2281: 4618c3441
        !          2282: < SCBUF  DAC  B$SCL            BUFFER
        !          2283: ---
        !          2284: > SCBUF  DAC  B$SCL
        !          2285: 4620a3444
        !          2286: > .FI
        !          2287: 4717a3542,3544
        !          2288: > .IF    .CS16
        !          2289: > STLIM  DIC  +32767           DEFAULT STATEMENT LIMIT
        !          2290: > .ELSE
        !          2291: 4718a3546
        !          2292: > .FI
        !          2293: 4749c3577
        !          2294: < STPM1  DAC  B$SCL            IN STATEMENT
        !          2295: ---
        !          2296: > STPM1  DAC  B$SCL
        !          2297: 4751c3579
        !          2298: <        DTC  /IN STATEMENT/
        !          2299: ---
        !          2300: >        DDC  /IN STATEMENT/
        !          2301: 4755c3583
        !          2302: <        DTC  /STMTS EXECUTED/
        !          2303: ---
        !          2304: >        DDC  /STMTS EXECUTED/
        !          2305: 4759c3587,3591
        !          2306: <        DTC  /RUN TIME-MSEC/
        !          2307: ---
        !          2308: > .IF    .CTMD
        !          2309: >        DDC  /RUN TIME-DSEC/
        !          2310: > .ELSE
        !          2311: >        DDC  /RUN TIME-MSEC/
        !          2312: > .FI
        !          2313: 4763c3595
        !          2314: <        DTC  $MCSEC / STMT$
        !          2315: ---
        !          2316: >        DDC  $MCSEC / STMT$
        !          2317: 4767c3599
        !          2318: <        DTC  /REGENERATIONS/
        !          2319: ---
        !          2320: >        DDC  /REGENERATIONS/
        !          2321: 4769,4772d3600
        !          2322: < *      CHARS FOR /TU/ ENDING CODE
        !          2323: < *
        !          2324: < STRTU  DTC  /TU/
        !          2325: < *
        !          2326: 4800c3628
        !          2327: < TMASB  DAC  B$SCL            ASTERISKS FOR TRACE STATEMENT NO
        !          2328: ---
        !          2329: > TMASB  DAC  B$SCL
        !          2330: 4803d3630
        !          2331: < 
        !          2332: 4805c3632
        !          2333: < TMBEB  DAC  B$SCL            BLANK-EQUAL-BLANK
        !          2334: ---
        !          2335: > TMBEB  DAC  B$SCL
        !          2336: 4891a3719,3724
        !          2337: > V$CTI  DBC  SVFNP            CTI
        !          2338: >        DAC  3
        !          2339: >        DTC  /CTI/
        !          2340: >        DAC  S$CTI
        !          2341: >        DAC  1
        !          2342: > *
        !          2343: 4896a3730,3735
        !          2344: > V$ITC  DBC  SVFNN            ITC
        !          2345: >        DAC  3
        !          2346: >        DTC  /ITC/
        !          2347: >        DAC  S$ITC
        !          2348: >        DAC  1
        !          2349: > *
        !          2350: 4967d3805
        !          2351: < .IF    .CULC
        !          2352: 4969,4980d3806
        !          2353: < V$CAS  DBC  SVKNM            CASE
        !          2354: <        DAC  4
        !          2355: <        DTC  /CASE/
        !          2356: <        DAC  K$CAS
        !          2357: < .FI
        !          2358: < *
        !          2359: < V$CHR  DBC  SVFNP            CHAR
        !          2360: <        DAC  4
        !          2361: <        DTC  /CHAR/
        !          2362: <        DAC  S$CHR
        !          2363: <        DAC  1
        !          2364: < *
        !          2365: 5077a3904
        !          2366: >        EJC
        !          2367: 5078a3906,3908
        !          2368: > *      STANDARD VARIABLE BLOCKS (CONTINUED)
        !          2369: > *
        !          2370: > *
        !          2371: 5133,5137d3962
        !          2372: < V$ABE  DBC  SVKNM            ABEND
        !          2373: <        DAC  5
        !          2374: <        DTC  /ABEND/
        !          2375: <        DAC  K$ABE
        !          2376: < *
        !          2377: 5183a4009,4011
        !          2378: > .IF    .CNFN
        !          2379: > V$FEN  DBC  SVKVC            FENCE
        !          2380: > .ELSE
        !          2381: 5184a4013
        !          2382: > .FI
        !          2383: 5187a4017,4018
        !          2384: > .IF    .CNFN
        !          2385: > .ELSE
        !          2386: 5189a4021
        !          2387: > .FI
        !          2388: 5217d4048
        !          2389: < *
        !          2390: 5257a4089,4092
        !          2391: >        EJC
        !          2392: > *
        !          2393: > *      STANDARD VARIABLE BLOCKS (CONTINUED)
        !          2394: > *
        !          2395: 5260,5261c4095
        !          2396: < *
        !          2397: < V$APN  DBC  SVFNN
        !          2398: ---
        !          2399: > V$APN  DBC  SVFNN            APPEND
        !          2400: 5273d4106
        !          2401: < *
        !          2402: 5286c4119
        !          2403: <        DAC  S$DEF
        !          2404: ---
        !          2405: >        DAC  S$DFN
        !          2406: 5294d4126
        !          2407: <        EJC
        !          2408: 5296,5297d4127
        !          2409: < *      STANDARD VARIABLE BLOCKS (CONTINUED)
        !          2410: < *
        !          2411: 5308c4138
        !          2412: < *
        !          2413: ---
        !          2414: >        EJC
        !          2415: 5310a4141
        !          2416: > *
        !          2417: 5316d4146
        !          2418: < *
        !          2419: 5317a4148
        !          2420: > *
        !          2421: 5341,5346d4171
        !          2422: < V$REW  DBC  SVFNN            REWIND
        !          2423: <        DAC  6
        !          2424: <        DTC  /REWIND/
        !          2425: <        DAC  S$REW
        !          2426: <        DAC  1
        !          2427: < *
        !          2428: 5377c4202
        !          2429: <        DAC  S$CNV
        !          2430: ---
        !          2431: >        DAC  S$CVT
        !          2432: 5384c4209
        !          2433: <        DAC  1
        !          2434: ---
        !          2435: >        DAC  2
        !          2436: 5414d4238
        !          2437: < *
        !          2438: 5423a4248
        !          2439: > *
        !          2440: 5462a4288,4293
        !          2441: > V$VDF  DBC  SVFPR            VDIFFER
        !          2442: >        DAC  7
        !          2443: >        DTC  /VDIFFER/
        !          2444: >        DAC  S$VDF
        !          2445: >        DAC  2
        !          2446: > *
        !          2447: 5466a4298
        !          2448: >        EJC
        !          2449: 5467a4300,4301
        !          2450: > *      STANDARD VARIABLE BLOCKS (CONTINUED)
        !          2451: > *
        !          2452: 5472d4305
        !          2453: <        EJC
        !          2454: 5474,5475d4306
        !          2455: < *      STANDARD VARIABLE BLOCKS (CONTINUED)
        !          2456: < *
        !          2457: 5516,5518d4346
        !          2458: < .IF    .CULC
        !          2459: <        DAC  V$CAS            CCASE
        !          2460: < .FI
        !          2461: 5548,5553c4376,4377
        !          2462: < .IF    .CULC
        !          2463: <        DAC  V$CAS            START OF 4 CHAR VARIABLES
        !          2464: < .ELSE
        !          2465: <        DAC  V$CHR            START OF 4 CHAR VARIABLES
        !          2466: < .FI
        !          2467: <        DAC  V$ABE            START OF 5 CHAR VARIABLES
        !          2468: ---
        !          2469: >        DAC  V$COD            START OF 4 CHAR VARIABLES
        !          2470: >        DAC  V$ABO            START OF 5 CHAR VARIABLES
        !          2471: 5598c4422
        !          2472: < *      LABEL TO MARK START OF WORK AREA
        !          2473: ---
        !          2474: > *      LABEL TO MARK START OF WORK AREA WHICH IS CLEARED
        !          2475: 5663,5665c4487,4489
        !          2476: < CSWDB  DAC  0                0/1 FOR -SINGLE/-DOUBLE
        !          2477: < CSWER  DAC  0                0/1 FOR -ERRORS/-NOERRORS
        !          2478: < CSWEX  DAC  0                0/1 FOR -EXECUTE/-NOEXECUTE
        !          2479: ---
        !          2480: > .IF    .CASL
        !          2481: > CSWCI  DAC  0                0/1 FOR -NOCASEIG/CASEIG
        !          2482: > .FI
        !          2483: 5669,5670c4493
        !          2484: < CSWNO  DAC  0                0/1 FOR -OPTIMISE/-NOOPT
        !          2485: < CSWPR  DAC  0                0/1 FOR -NOPRINT/-PRINT
        !          2486: ---
        !          2487: >        EJC
        !          2488: 5676d4498
        !          2489: <        EJC
        !          2490: 5711,5715d4532
        !          2491: < *      WORK AREA FOR DTACH
        !          2492: < *
        !          2493: < DTCNB  DAC  0                NAME BASE
        !          2494: < DTCNM  DAC  0                NAME PTR
        !          2495: < *
        !          2496: 5726,5727c4543
        !          2497: < ERICH  DAC  0                COPY ERROR REPORTS TO INT.CHAN IF 1
        !          2498: < ERLST  DAC  0                FOR LISTR WHEN ERRORS GO TO INT.CH.
        !          2499: ---
        !          2500: > EROSN  DAC  0                FLAG FOR SPECIAL EROSI RETURN
        !          2501: 5741a4558
        !          2502: > *
        !          2503: 5798a4616
        !          2504: > GTNSV  DIC  +0               SAVE IA
        !          2505: 5821a4640
        !          2506: >        EJC
        !          2507: 5827c4646
        !          2508: < *      FLAG FOR HEADER PRINTING
        !          2509: ---
        !          2510: > *      FLAGS FOR HEADER PRINTING
        !          2511: 5828a4648
        !          2512: > HEADN  DAC  0                NON-ZERO IF HDRS NOT TO BE PRINTED
        !          2513: 5838a4659
        !          2514: > INICD  DIC  +0               CODE KWD VAL (NEEDED FOR BATCH)
        !          2515: 5846c4667,4669
        !          2516: < INSAB  DAC  0                ENTRY WA + ENTRY WB
        !          2517: ---
        !          2518: > INSAB  DAC  0                ENTRY WA PLUS ENTRY WB
        !          2519: > INSBB  DAC  0                BFBLK POINTER
        !          2520: > INSBC  DAC  0                BCBLK POINTER
        !          2521: 5849d4671
        !          2522: < INSSC  DAC  0                SAVE ENTRY WC
        !          2523: 5854c4676,4680
        !          2524: < IOPTT  DAC  0                TYPE OF ASSOCIATION
        !          2525: ---
        !          2526: > IOPNF  DAC  0                NAME OFFSET
        !          2527: > IOPVR  DAC  0                FILETAG VRBLK
        !          2528: > IOPWA  DAC  0                KEEP WA
        !          2529: > IOPWB  DAC  0                KEEP WB
        !          2530: > IOPWC  DAC  0                KEEP WC
        !          2531: 5861d4686
        !          2532: < KVABE  DAC  0                ABEND
        !          2533: 5863,5866d4687
        !          2534: < .IF    .CULC
        !          2535: < KVCAS  DAC  0                CASE
        !          2536: < .FI
        !          2537: < KVCOD  DAC  0                CODE
        !          2538: 5887a4709,4713
        !          2539: > KVCOD  DIC  0                CODE
        !          2540: > .IF    .CS16
        !          2541: > KVSTL  DIC  +32767           STLIMIT
        !          2542: > KVSTC  DIC  +32767           STCOUNT (COUNTS DOWN FROM STLIMIT)
        !          2543: > .ELSE
        !          2544: 5889a4716
        !          2545: > .FI
        !          2546: 5897a4725
        !          2547: >        EJC
        !          2548: 5920c4748
        !          2549: < PFDMP  DAC  0                SET NON-0 IF &PROFILE SET NON-0
        !          2550: ---
        !          2551: > PFDMP  DAC  0                SET NON-0 IF PROFILE SET NON-0
        !          2552: 5927c4755
        !          2553: < PFSTE  DIC  +0               GETS INT REP OF TABLE ENTRY SIZE
        !          2554: ---
        !          2555: > PFSTE  DIC  +0               TABLE ENTRY SIZE IN BAUS
        !          2556: 5929d4756
        !          2557: < *
        !          2558: 5938,5943d4764
        !          2559: < *      FLAGS USED FOR STANDARD FILE LISTING OPTIONS
        !          2560: < *
        !          2561: < PRICH  DAC  0                PRINTER ON INTERACTIVE CHANNEL
        !          2562: < PRSTD  DAC  0                TESTED BY PRTPG
        !          2563: < PRSTO  DAC  0                STANDARD LISTING OPTION FLAG
        !          2564: < *
        !          2565: 5957a4779,4780
        !          2566: > PRAVL  DAC  0                SET IF PRINT FILE AVAILABLE
        !          2567: > PRBLK  DAC  0                ADDRESS OF BUFFER BLANKING STRING
        !          2568: 5958a4782,4783
        !          2569: > PRCHS  DAC  0                ADDRESS OF CHARS IN PRINT BUFFER
        !          2570: > PRCMV  DAC  0                NO. OF BAUS TO MOVE IN BFR CLEARING
        !          2571: 5961d4785
        !          2572: < PRLNW  DAC  0                LENGTH OF PRINT BUFFER IN WORDS
        !          2573: 5962a4787,4789
        !          2574: > PRPUT  DAC  0                SET IF CHARS TO BE PUT IN BFR
        !          2575: > PRSTD  DAC  0                TESTED BY PRTPG
        !          2576: > PRSTO  DAC  0                STANDARD LISTING OPTION FLAG
        !          2577: 5965c4792
        !          2578: < *      WORK AREAS FOR PRTST PROCEDURE
        !          2579: ---
        !          2580: > *      WORK AREAS FOR PRTST, PTTST PROCEDURES
        !          2581: 5969c4796,4797
        !          2582: < PRSVC  DAC  0                SAVE CHAR COUNTER
        !          2583: ---
        !          2584: > PRTVA  DAC  0                SAVE WA
        !          2585: > PRTVB  DAC  0                SAVE WB
        !          2586: 5971,5975d4798
        !          2587: < *      WORK AREA FOR PRTNL
        !          2588: < *
        !          2589: < PRTSA  DAC  0                SAVE WA
        !          2590: < PRTSB  DAC  0                SAVE WB
        !          2591: < *
        !          2592: 5985a4809,4812
        !          2593: > *      FLAG TO TELL ERROR THAT WE ARE READING SOURCE LINE
        !          2594: > *
        !          2595: > RDRER  DAC  0                READ-SOURCE-LINE IN PROGRESS FLAG
        !          2596: > *
        !          2597: 6009a4837
        !          2598: > R$COP  DAC  0                PTR TO -COPY CHAIN STACK
        !          2599: 6014d4841
        !          2600: < R$FCB  DAC  0                FCBLK CHAIN HEAD
        !          2601: 6017,6022c4844,4847
        !          2602: < R$IO1  DAC  0                FILE ARG1 FOR IOPUT
        !          2603: < R$IO2  DAC  0                FILE ARG2 FOR IOPUT
        !          2604: < R$IOF  DAC  0                FCBLK PTR OR 0
        !          2605: < R$ION  DAC  0                NAME BASE PTR
        !          2606: < R$IOP  DAC  0                PREDECESSOR BLOCK PTR FOR IOPUT
        !          2607: < R$IOT  DAC  0                TRBLK PTR FOR IOPUT
        !          2608: ---
        !          2609: > R$IO1  DAC  0                FIRST ARGUMENT
        !          2610: > R$IOL  DAC  0                SECOND ARGUMENT (FILETAG) SCBLK PTR
        !          2611: > R$IOR  DAC  0                FILEPROPS SCBLK PTR
        !          2612: > R$IOT  DAC  0                TRTIO TRACE BLK PTR
        !          2613: 6077a4903,4910
        !          2614: > *
        !          2615: > *      WORK AREA FOR DETACH PROCEDURE
        !          2616: > *
        !          2617: > SDETF  DAC  0                TRACE BLOCK FLAG
        !          2618: > *
        !          2619: > *      WORK AREA FOR ENDFILE PROCEDURE
        !          2620: > *
        !          2621: > SENFR  DAC  0                SAVE XR
        !          2622: 6102c4935
        !          2623: < *      GLOBAL VALUE FOR INDICATING STAGE (SEE ERROR SECTION)
        !          2624: ---
        !          2625: > *      VALUES FOR INDICATING COMPILATION/EXECUTION STAGE
        !          2626: 6104a4938
        !          2627: > STAGX  DAC  0                NON-ZERO IF EXECUTING
        !          2628: 6119a4954
        !          2629: > STPXR  DAC  0                SAVE XR
        !          2630: 6133d4967
        !          2631: < TIMUP  DAC  0                SET WHEN TIME UP OCCURS
        !          2632: 6134a4969,4981
        !          2633: > *      TERMINAL BUFFER ADDRESSES, FLAGS ETC
        !          2634: > *
        !          2635: > TTBLK  DAC  0                BLANKING STRING ADRS
        !          2636: > TTBUF  DAC  0                BUFFER ADRS
        !          2637: > TTCHS  DAC  0                START OF BUFFER CHARACTERS
        !          2638: > TTCMV  DAC  0                COUNT OF BLANKING CHARS TO MOVE
        !          2639: > TTERL  DAC  0                ERROR FLAG
        !          2640: > TTINS  DAC  0                NON-ZERO IF STD INPUT FROM TERML
        !          2641: > TTLEN  DAC  0                LENGTH OF TERMINAL BUFFER
        !          2642: > TTLST  DAC  0                COPY STD O/P TO TERML IF SET
        !          2643: > TTOFS  DAC  0                OFFSET TO POSITION IN TERML BFR
        !          2644: > TTOUS  DAC  0                SET IF STD OUTPUT TO TERMINAL
        !          2645: > *
        !          2646: 6136a4984,4985
        !          2647: > XSCBL  DAC  0                COUNT OF TRAILING BLANKS
        !          2648: > XSCNB  DAC  0                NON-ZERO IF NON-BLANKS SEEN
        !          2649: 6155a5005
        !          2650: > *      (WA)                  INITIAL &CODE VALUE
        !          2651: 6158c5008,5010
        !          2652: <        JSR  SYSTM            INITIALISE TIMER
        !          2653: ---
        !          2654: > *
        !          2655: > INITL  RTN                   INITIALISATION CODE
        !          2656: >        MOV  WA,INICD         SAVE INITIAL CODE KYWD VALUE
        !          2657: 6160d5011
        !          2658: <        STI  TIMSX            STORE TIME
        !          2659: 6196c5047
        !          2660: <        MOV  WA,CSWIN         -IN72
        !          2661: ---
        !          2662: >        MOV  WA,CSWIN         STORE FOR LATER USE
        !          2663: 6206d5056
        !          2664: <        STI  TIMSX            STORE TIME IN CORRECT PLACE
        !          2665: 6211a5062,5068
        !          2666: > .IF    .CSIG
        !          2667: >        MNZ  CSWCI            -CASEIG
        !          2668: > .FI
        !          2669: >        JSR  SYSTM            INITIALISE TIMER
        !          2670: >        STI  TIMSX            STORE TIME
        !          2671: >        LDI  INICD            LOAD INITIAL CODE KWD VALUE
        !          2672: >        STI  KVCOD            STORE
        !          2673: 6247a5105,5106
        !          2674: >        ADD  TTLEN,WA         ADD TERMINAL BUFFER LENGTH
        !          2675: >        ADD  WA,WA            ALLOW FOR EQUALLY BIG BLANK STRINGS
        !          2676: 6250c5109
        !          2677: <        CTB  WA,8             CONVERT TO BYTES, ALLOWING A MARGIN
        !          2678: ---
        !          2679: >        CTB  WA,8             CONVERT TO BAUS, ALLOWING A MARGIN
        !          2680: 6258c5117
        !          2681: <        BGT  XR,WA,INI06      SKIP IF STATIC HI EXCEEDS MXLEN
        !          2682: ---
        !          2683: >        BGT  XR,WA,INI05      SKIP IF STATIC HI EXCEEDS MXLEN
        !          2684: 6265c5124
        !          2685: < INI06  MOV  XR,DNAMB         DYNAMIC BASE ADRS
        !          2686: ---
        !          2687: > INI05  MOV  XR,DNAMB         DYNAMIC BASE ADRS
        !          2688: 6267c5126
        !          2689: <        BNZ  WA,INI07         SKIP IF NON-ZERO MXLEN
        !          2690: ---
        !          2691: >        BNZ  WA,INI06         SKIP IF NON-ZERO MXLEN
        !          2692: 6271d5129
        !          2693: <        EJC
        !          2694: 6276,6277c5134,5135
        !          2695: < INI07  MOV  XL,DNAME         STORE DYNAMIC END ADDRESS
        !          2696: <        BLT  DNAMB,XL,INI09   SKIP IF HIGH ENOUGH
        !          2697: ---
        !          2698: > INI06  MOV  XL,DNAME         STORE DYNAMIC END ADDRESS
        !          2699: >        BLT  DNAMB,XL,INI08   SKIP IF HIGH ENOUGH
        !          2700: 6279c5137
        !          2701: <        WTB  XR               GET AS BAUS (SGD05)
        !          2702: ---
        !          2703: >        WTB  XR               CONVERT TO BAUS
        !          2704: 6281c5139
        !          2705: <        BNZ  XR,INI07         TRY AGAIN
        !          2706: ---
        !          2707: >        BNZ  XR,INI06         TRY AGAIN
        !          2708: 6283c5141
        !          2709: <        MOV  ENDML,WA         MESSAGE LENGTH
        !          2710: ---
        !          2711: >        MOV  ENDML,WC         MESSAGE LENGTH
        !          2712: 6285c5143,5148
        !          2713: <        PPM                   SHOULD NOT FAIL
        !          2714: ---
        !          2715: >        PPM  INI07
        !          2716: >        PPM  INI07
        !          2717: > *
        !          2718: > *      EMERGENCY SHUTDOWN
        !          2719: > *
        !          2720: > INI07  MOV  =KVCOD,WA        CODE KEYWORD
        !          2721: 6286a5150
        !          2722: >        EJC
        !          2723: 6290c5154
        !          2724: < INI09  MOV  PRLEN,WC         NO. OF CHARS IN PRINT BFR
        !          2725: ---
        !          2726: > INI08  MOV  PRLEN,WA         NO. OF CHARS IN PRINT BFR
        !          2727: 6294,6297c5158,5169
        !          2728: <        MOV  WC,(XR)+         AND STRING LENGTH
        !          2729: <        CTW  WC,0             GET NUMBER OF WORDS IN BUFFER
        !          2730: <        MOV  WC,PRLNW         STORE FOR BUFFER CLEAR
        !          2731: <        LCT  WC,WC            WORDS TO CLEAR
        !          2732: ---
        !          2733: >        MOV  WA,(XR)+         AND STRING LENGTH
        !          2734: >        MOV  XR,PRCHS         KEEP ADRS OF BUFFER PROPER
        !          2735: >        MOV  XR,XL            COPY IT
        !          2736: >        CTB  WA,0             WORDS NEEDED EXPRESSED IN BAUS
        !          2737: >        MOV  WA,PRCMV         KEEP FOR CLEARING BUFFER
        !          2738: >        MOV  XR,PRBLK         CONSTRUCT ADRS OF BLANKING STRING
        !          2739: >        ADD  WA,PRBLK         ADD OFFSET TO BLANKING STRING
        !          2740: >        ADD  WA,WA            CLEAR BOTH BFR AND BLANKING STRING
        !          2741: >        MOV  NULLW,(XR)+      CLEAR FIRST WORD
        !          2742: >        BZE  WA,INI09         SKIP IF NO PRINT BUFFER
        !          2743: >        DCA  WA               ADJUST FOR FIRST WORD
        !          2744: >        MVW                   PERFORM BLANKING
        !          2745: 6299c5171
        !          2746: < *      LOOP TO CLEAR BUFFER
        !          2747: ---
        !          2748: > *      SET UP TERMINAL BUFFER
        !          2749: 6301,6302c5173,5187
        !          2750: < INI10  MOV  NULLW,(XR)+      STORE BLANK
        !          2751: <        BCT  WC,INI10         LOOP
        !          2752: ---
        !          2753: > INI09  MOV  TTLEN,WA         LENGTH OF TERMINAL BUFFER
        !          2754: >        MOV  XR,TTBUF         ADRS OF TERMINAL STRING BUFFER
        !          2755: >        MOV  =B$SCL,(XR)+     STRING TYPE CODE
        !          2756: >        MOV  WA,(XR)+         STRING LENGTH
        !          2757: >        MOV  XR,TTCHS         KEEP ADRS OF BUFFER PROPER
        !          2758: >        MOV  XR,XL            COPY IT
        !          2759: >        CTB  WA,0             WORDS NEEDED EXPRESSED IN BAUS
        !          2760: >        MOV  WA,TTCMV         KEEP FOR CLEARING BUFFER
        !          2761: >        MOV  XR,TTBLK         CONSTRUCT ADRS OF BLANKING STRING
        !          2762: >        ADD  WA,TTBLK         ADD OFFSET TO BLANKING STRING
        !          2763: >        ADD  WA,WA            CLEAR BOTH BFR AND BLANKING STRING
        !          2764: >        MOV  NULLW,(XR)+      CLEAR FIRST WORD
        !          2765: >        BZE  WA,INI10         SKIP IF NO PRINT BUFFER
        !          2766: >        DCA  WA               ADJUST FOR FIRST WORD
        !          2767: >        MVW                   PERFORM BLANKING
        !          2768: 6306c5191
        !          2769: <        MOV  =E$HNB,WA        GET NUMBER OF HASH HEADERS
        !          2770: ---
        !          2771: > INI10  MOV  =E$HNB,WA        GET NUMBER OF HASH HEADERS
        !          2772: 6321c5206
        !          2773: <        CTB  WA,SCSI$         NO OF BYTES NEEDED
        !          2774: ---
        !          2775: >        CTB  WA,SCSI$         NO OF BAUS NEEDED
        !          2776: 6333c5218
        !          2777: <        CTB  WB,SCSI$         NO. OF BYTES NEEDED
        !          2778: ---
        !          2779: >        CTB  WB,SCSI$         NO. OF BAUS NEEDED
        !          2780: 6347c5232
        !          2781: < *      INITIALIZE VARIABLE BLOCKS FOR INPUT AND OUTPUT
        !          2782: ---
        !          2783: > *      INITIALIZE VARIABLE BLOCKS FOR INPUT OUTPUT TERMINAL
        !          2784: 6355,6357c5240,5246
        !          2785: <        MOV  INITR,WC         TERMINAL FLAG
        !          2786: <        BZE  WC,INI13         SKIP IF NO TERMINAL
        !          2787: <        JSR  PRPAR            ASSOCIATE TERMINAL
        !          2788: ---
        !          2789: >        BZE  TTLEN,INI13      SKIP IF NO TERMINAL I/O
        !          2790: >        MOV  =V$TER,XL        POINT TO STRING /TERMINAL/
        !          2791: >        MOV  =TRTOU,WB        TRTYP FOR OUTPUT
        !          2792: >        JSR  INOUT            PERFORM ASSOCIATION
        !          2793: >        MOV  =V$TER,XL
        !          2794: >        MOV  =TRTIN,WB        TRTYP FOR INPUT
        !          2795: >        JSR  INOUT            PERFORM ASSOCIATION
        !          2796: 6360d5248
        !          2797: < *      CHECK FOR EXPIRY DATE
        !          2798: 6362,6363c5250
        !          2799: < INI13  JSR  SYSDC            CALL DATE CHECK
        !          2800: <        MOV  XS,FLPTR         IN CASE STACK OVERFLOWS IN COMPILER
        !          2801: ---
        !          2802: > *      PREPARE FOR COMPILATION
        !          2803: 6364a5252,5253
        !          2804: > INI13  MOV  XS,FLPTR         IN CASE STACK OVERFLOWS IN COMPILER
        !          2805: > *
        !          2806: 6369,6370c5258,5259
        !          2807: <        MOV  =NULLS,R$TTL     FORGET TITLE      (REG04)
        !          2808: <        MOV  =NULLS,R$STL     FORGET SUB-TITLE  (REG04)
        !          2809: ---
        !          2810: >        MOV  =NULLS,R$TTL     FORGET TITLE
        !          2811: >        MOV  =NULLS,R$STL     FORGET SUB-TITLE
        !          2812: 6375c5264
        !          2813: <        BNZ  CPSTS,INIX0      SKIP IF NO LISTING OF COMP STATS
        !          2814: ---
        !          2815: >        BNZ  CPSTS,INIX1      SKIP IF NO LISTING OF COMP STATS
        !          2816: 6404,6407d5292
        !          2817: < .IF    .CUEJ
        !          2818: <        BZE  HEADP,INIX0      NO EJECT IF NOTHING PRINTED (SDG11)
        !          2819: <        JSR  PRTPG            EJECT PRINTER
        !          2820: < .FI
        !          2821: 6412d5296
        !          2822: < *      SET DEFAULT INPUT RECORD LENGTH
        !          2823: 6414,6415c5298
        !          2824: < INIX0  BGT  CSWIN,=INILN,INIX1 SKIP IF NOT DEFAULT -IN72 USED
        !          2825: <        MOV  =INILS,CSWIN     ELSE USE DEFAULT RECORD LENGTH
        !          2826: ---
        !          2827: > *      CHECK FOR NOEXECUTE
        !          2828: 6417,6422c5300
        !          2829: < *      RESET TIMER
        !          2830: < *
        !          2831: < INIX1  JSR  SYSTM            GET TIME AGAIN
        !          2832: <        STI  TIMSX            STORE FOR END RUN PROCESSING
        !          2833: <        ADD  CSWEX,NOXEQ      ADD -NOEXECUTE FLAG
        !          2834: <        BNZ  NOXEQ,INIX2      JUMP IF EXECUTION SUPPRESSED
        !          2835: ---
        !          2836: > INIX1  BNZ  NOXEQ,INIX3      JUMP IF EXECUTION SUPPRESSED
        !          2837: 6424,6429c5302,5303
        !          2838: <        JSR  SYSBX            CALL BEFORE STARTING EXECUTION
        !          2839: < .IF    .CUEJ
        !          2840: < .ELSE
        !          2841: <        BZE  HEADP,INIY0      NO EJECT IF NOTHING PRINTED (SGD11)
        !          2842: <        JSR  PRTPG            EJECT PRINTER
        !          2843: < .FI
        !          2844: ---
        !          2845: >        BZE  HEADP,INIX2      SKIP IF NO PRTPG CALLS IN COMPILN
        !          2846: >        JSR  PRTPG            EJECT STANDARD PRINTER FILE
        !          2847: 6431c5305
        !          2848: < *      MERGE WHEN LISTING FILE SET FOR EXECUTION
        !          2849: ---
        !          2850: > *      INFORM OSINT OF STAGE
        !          2851: 6433c5307
        !          2852: < INIY0  MNZ  HEADP            MARK HEADERS OUT REGARDLESS
        !          2853: ---
        !          2854: > INIX2  JSR  SYSBX            CALL BEFORE STARTING EXECUTION
        !          2855: 6437a5312,5313
        !          2856: >        JSR  SYSTM            GET TIME
        !          2857: >        STI  TIMSX            STORE FOR END RUN PROCESSING
        !          2858: 6440,6442c5316,5317
        !          2859: <        MOV  CMPSN,PFNTE      COPY STMTS COMPILED COUNT IN CASE
        !          2860: <        JSR  SYSTM            TIME YET AGAIN
        !          2861: <        STI  PFSTM
        !          2862: ---
        !          2863: >        STI  PFSTM            STORE TIME FOR PROFILER
        !          2864: >        MOV  CMPSN,PFNTE      COPY STATEMENTS COMPILED COUNT
        !          2865: 6448c5323
        !          2866: < INIX2  JSR  PRTNL            PRINT A BLANK LINE
        !          2867: ---
        !          2868: > INIX3  JSR  PRTFH            PRINT A BLANK LINE
        !          2869: 6450,6453c5325,5327
        !          2870: <        JSR  PRTST            PRINT STRING
        !          2871: <        JSR  PRTNL            OUTPUT LINE
        !          2872: <        ZER  WA               SET ABEND VALUE TO ZERO
        !          2873: <        MOV  =NINI9,WB        SET SPECIAL CODE VALUE
        !          2874: ---
        !          2875: >        MOV  TTERL,TTLST      TO FORCE MSG TO TERMINAL
        !          2876: >        JSR  PRTSF            PRINT NOEXECUTE MESSAGE
        !          2877: >        MOV  =KVCOD,WA        ENDING CODE
        !          2878: 6500c5374
        !          2879: <        ERB  261,ADDITION CAUSED REAL OVERFLOW
        !          2880: ---
        !          2881: >        ERB  004,ADDITION CAUSED REAL OVERFLOW
        !          2882: 6509c5383
        !          2883: <        ERR  004,AFFIRMATION OPERAND IS NOT NUMERIC
        !          2884: ---
        !          2885: >        ERR  005,AFFIRMATION OPERAND IS NOT NUMERIC
        !          2886: 6518c5392
        !          2887: <        ERR  005,ALTERNATION RIGHT OPERAND IS NOT PATTERN
        !          2888: ---
        !          2889: >        ERR  006,ALTERNATION RIGHT OPERAND IS NOT PATTERN
        !          2890: 6527c5401
        !          2891: <        ERR  006,ALTERNATION LEFT OPERAND IS NOT PATTERN
        !          2892: ---
        !          2893: >        ERR  007,ALTERNATION LEFT OPERAND IS NOT PATTERN
        !          2894: 6551d5424
        !          2895: <        EJC
        !          2896: 6559d5431
        !          2897: <        EJC
        !          2898: 6583c5455
        !          2899: <        WTB  WA               CONVERT TO BYTES
        !          2900: ---
        !          2901: >        WTB  WA               CONVERT TO BAUS
        !          2902: 6622c5494
        !          2903: <        WTB  WA               CONVERT TO BYTES
        !          2904: ---
        !          2905: >        WTB  WA               CONVERT TO BAUS
        !          2906: 6636c5508
        !          2907: < *      ASSIGNMENT
        !          2908: ---
        !          2909: > *      ASSIGNMENT (O$RPL MERGES)
        !          2910: 6639,6642c5511
        !          2911: < *
        !          2912: < *      O$RPL (PATTERN REPLACEMENT) MERGES HERE
        !          2913: < *
        !          2914: < OASS0  MOV  (XS)+,WB         LOAD VALUE TO BE ASSIGNED
        !          2915: ---
        !          2916: >        MOV  (XS)+,WB         LOAD VALUE TO BE ASSIGNED
        !          2917: 6649d5517
        !          2918: <        EJC
        !          2919: 6654,6655c5522
        !          2920: <        ERB  007,COMPILATION ERROR ENCOUNTERED DURING EXECUTION
        !          2921: <        EJC
        !          2922: ---
        !          2923: >        ERB  008,COMPILATION ERROR ENCOUNTERED DURING EXECUTION
        !          2924: 6729c5596
        !          2925: <        ERR  008,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN
        !          2926: ---
        !          2927: >        ERR  009,CONCATENATION LEFT OPND IS NOT STRING OR PATTERN
        !          2928: 6733c5600
        !          2929: <        ERR  009,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN
        !          2930: ---
        !          2931: >        ERR  010,CONCATENATION RIGHT OPD IS NOT STRING OR PATTERN
        !          2932: 6754c5621
        !          2933: <        ERR  010,COMPLEMENTATION OPERAND IS NOT NUMERIC
        !          2934: ---
        !          2935: >        ERR  011,COMPLEMENTATION OPERAND IS NOT NUMERIC
        !          2936: 6762c5629
        !          2937: <        ERB  011,COMPLEMENTATION CAUSED INTEGER OVERFLOW
        !          2938: ---
        !          2939: >        ERB  012,COMPLEMENTATION CAUSED INTEGER OVERFLOW
        !          2940: 6778,6779c5645,5646
        !          2941: <        ERR  012,DIVISION LEFT OPERAND IS NOT NUMERIC
        !          2942: <        ERR  013,DIVISION RIGHT OPERAND IS NOT NUMERIC
        !          2943: ---
        !          2944: >        ERR  013,DIVISION LEFT OPERAND IS NOT NUMERIC
        !          2945: >        ERR  014,DIVISION RIGHT OPERAND IS NOT NUMERIC
        !          2946: 6789c5656
        !          2947: <        ERB  014,DIVISION CAUSED INTEGER OVERFLOW
        !          2948: ---
        !          2949: >        ERB  015,DIVISION CAUSED INTEGER OVERFLOW
        !          2950: 6797c5664
        !          2951: <        ERB  262,DIVISION CAUSED REAL OVERFLOW
        !          2952: ---
        !          2953: >        ERB  016,DIVISION CAUSED REAL OVERFLOW
        !          2954: 6806c5673
        !          2955: <        ERR  015,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC
        !          2956: ---
        !          2957: >        ERR  017,EXPONENTIATION RIGHT OPERAND IS NOT NUMERIC
        !          2958: 6814c5681
        !          2959: <        ERR  016,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC
        !          2960: ---
        !          2961: >        ERR  018,EXPONENTIATION LEFT OPERAND IS NOT NUMERIC
        !          2962: 6840c5707
        !          2963: < OEXP2  ERB  017,EXPONENTIATION CAUSED INTEGER OVERFLOW
        !          2964: ---
        !          2965: > OEXP2  ERB  019,EXPONENTIATION CAUSED INTEGER OVERFLOW
        !          2966: 6858c5725
        !          2967: < OEXP4  ERB  018,EXPONENTIATION RESULT IS UNDEFINED
        !          2968: ---
        !          2969: > OEXP4  ERB  020,EXPONENTIATION RESULT IS UNDEFINED
        !          2970: 6871c5738
        !          2971: < OEXP6  ERB  266,EXPONENTIATION CAUSED REAL OVERFLOW
        !          2972: ---
        !          2973: > OEXP6  ERB  021,EXPONENTIATION CAUSED REAL OVERFLOW
        !          2974: 6875c5742
        !          2975: < OEXP7  ERB  267,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER
        !          2976: ---
        !          2977: > OEXP7  ERB  022,EXPONENTIATION RIGHT OPERAND IS REAL NOT INTEGER
        !          2978: 6880c5747
        !          2979: < OEXP8  ERB  019,EXPONENTIATION RIGHT OPERAND IS NEGATIVE
        !          2980: ---
        !          2981: > OEXP8  ERB  023,EXPONENTIATION RIGHT OPERAND IS NEGATIVE
        !          2982: 6890,6891c5757
        !          2983: <        BRN  EVLX6            JUMP TO FAILURE LOC IN EVALX
        !          2984: <        EJC
        !          2985: ---
        !          2986: >        JMG  EVLXF            JUMP TO FAILURE LOC IN EVALX
        !          2987: 6896,6897c5762
        !          2988: <        ERB  020,GOTO EVALUATION FAILURE
        !          2989: <        EJC
        !          2990: ---
        !          2991: >        ERB  024,GOTO EVALUATION FAILURE
        !          2992: 6907d5771
        !          2993: <        EJC
        !          2994: 6914c5778,5779
        !          2995: <        BZE  2(XS),EVLX3      OK IF EXPR. WAS WANTED BY VALUE
        !          2996: ---
        !          2997: >        BNZ  2(XS),OFNE1      FAIL UNLESS EXPRN WANTED BY VALUE
        !          2998: >        JMG  EVLXV            JOIN EXPRESSION BY VALUE CODE
        !          2999: 6918,6919c5783
        !          3000: < OFNE1  ERB  021,FUNCTION CALLED BY NAME RETURNED A VALUE
        !          3001: <        EJC
        !          3002: ---
        !          3003: > OFNE1  ERB  025,FUNCTION CALLED BY NAME RETURNED A VALUE
        !          3004: 6933,6934c5797
        !          3005: <        ERB  022,UNDEFINED FUNCTION CALLED
        !          3006: <        EJC
        !          3007: ---
        !          3008: >        ERB  026,UNDEFINED FUNCTION CALLED
        !          3009: 6946,6947c5809
        !          3010: < OGOC1  ERB  023,GOTO OPERAND IS NOT A NATURAL VARIABLE
        !          3011: <        EJC
        !          3012: ---
        !          3013: > OGOC1  ERB  027,GOTO OPERAND IS NOT A NATURAL VARIABLE
        !          3014: 6954,6957c5816,5818
        !          3015: <        BEQ  WA,=B$CDS,BCDS0  JUMP IF CODE BLOCK TO CODE ROUTINE
        !          3016: <        BEQ  WA,=B$CDC,BCDC0  JUMP IF CODE BLOCK TO CODE ROUTINE
        !          3017: <        ERB  024,GOTO OPERAND IN DIRECT GOTO IS NOT CODE
        !          3018: <        EJC
        !          3019: ---
        !          3020: >        BEQ  WA,=B$CDC,OGOD1  JUMP IF CODE BLOCK
        !          3021: >        BEQ  WA,=B$CDS,OGOD2  JUMP IF CODE BLOCK
        !          3022: >        ERB  028,GOTO OPERAND IN DIRECT GOTO IS NOT CODE
        !          3023: 6958a5820,5831
        !          3024: > *      CASE OF COMPLEX FAILURE CODE
        !          3025: > *
        !          3026: > OGOD1  MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3027: >        MOV  CDFAL(XR),(XS)   SET NEW FAILURE OFFSET
        !          3028: >        BRN  STMGO            JUMP TO EXECUTE CODE
        !          3029: > *
        !          3030: > *      CASE OF SIMPLE FAILURE CODE
        !          3031: > *
        !          3032: > OGOD2  MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3033: >        MOV  *CDFAL,(XS)      SET NEW FAILURE OFFSET
        !          3034: >        BRN  STMGO            JUMP TO EXECUTE CODE
        !          3035: > *
        !          3036: 6985c5858
        !          3037: <        ERR  025,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN
        !          3038: ---
        !          3039: >        ERR  029,IMMEDIATE ASSIGNMENT LEFT OPERAND IS NOT PATTERN
        !          3040: 6992d5864
        !          3041: <        EJC
        !          3042: 6999d5870
        !          3043: <        EJC
        !          3044: 7006d5876
        !          3045: <        EJC
        !          3046: 7020d5889
        !          3047: <        EJC
        !          3048: 7030d5898
        !          3049: <        EJC
        !          3050: 7044d5911
        !          3051: <        EJC
        !          3052: 7060d5926
        !          3053: <        EJC
        !          3054: 7066,7067c5932,5933
        !          3055: <        ERR  026,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC
        !          3056: <        ERR  027,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC
        !          3057: ---
        !          3058: >        ERR  030,MULTIPLICATION LEFT OPERAND IS NOT NUMERIC
        !          3059: >        ERR  031,MULTIPLICATION RIGHT OPERAND IS NOT NUMERIC
        !          3060: 7077c5943
        !          3061: <        ERB  028,MULTIPLICATION CAUSED INTEGER OVERFLOW
        !          3062: ---
        !          3063: >        ERB  032,MULTIPLICATION CAUSED INTEGER OVERFLOW
        !          3064: 7085c5951
        !          3065: <        ERB  263,MULTIPLICATION CAUSED REAL OVERFLOW
        !          3066: ---
        !          3067: >        ERB  033,MULTIPLICATION CAUSED REAL OVERFLOW
        !          3068: 7087d5952
        !          3069: <        EJC
        !          3070: 7123d5987
        !          3071: <        EJC
        !          3072: 7128,7129c5992
        !          3073: <        ERB  029,UNDEFINED OPERATOR REFERENCED
        !          3074: <        EJC
        !          3075: ---
        !          3076: >        ERB  034,UNDEFINED OPERATOR REFERENCED
        !          3077: 7145c6008
        !          3078: <        ERR  030,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN
        !          3079: ---
        !          3080: >        ERR  035,PATTERN ASSIGNMENT LEFT OPERAND IS NOT PATTERN
        !          3081: 7159d6021
        !          3082: <        EJC
        !          3083: 7170d6031
        !          3084: <        EJC
        !          3085: 7177d6037
        !          3086: <        EJC
        !          3087: 7184d6043
        !          3088: <        EJC
        !          3089: 7189,7190c6048,6050
        !          3090: <        BRN  LEND0            JUMP TO END CIRCUIT
        !          3091: <        EJC
        !          3092: ---
        !          3093: >        MOV  =ENDMS,XR        ENDING MESSAGE
        !          3094: >        ZER  WA               NO ERROR CODE
        !          3095: >        BRN  STOPR            STOP THE RUN
        !          3096: 7198c6058
        !          3097: <        BRN  EVLX4            RETURN TO EVALX PROCEDURE
        !          3098: ---
        !          3099: >        JMG  EVLXN            RETURN TO EVALX PROCEDURE
        !          3100: 7210c6070
        !          3101: < *                            SUBJECT POINTER
        !          3102: ---
        !          3103: > *                            SUBJECT STRING POINTER
        !          3104: 7215c6075
        !          3105: <        ERR  031,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING
        !          3106: ---
        !          3107: >        ERR  036,PATTERN REPLACEMENT RIGHT OPERAND IS NOT STRING
        !          3108: 7222c6082
        !          3109: <        BEQ  (XL),=B$BCT,ORPL4 BRANCH IF BUFFER ASSIGNMENT
        !          3110: ---
        !          3111: >        BEQ  (XL),=B$BCT,ORPL5 BRANCH IF BUFFER ASSIGNMENT
        !          3112: 7257c6117
        !          3113: <        BZE  WA,OASS0         JUMP TO ASSIGN IF PART 3 IS NULL
        !          3114: ---
        !          3115: >        BZE  WA,ORPL4         JUMP TO ASSIGN IF PART 3 IS NULL
        !          3116: 7260c6120
        !          3117: <        BRN  OASS0            JUMP TO PERFORM ASSIGNMENT
        !          3118: ---
        !          3119: >        BRN  ORPL4            JUMP TO PERFORM ASSIGNMENT
        !          3120: 7266c6126,6130
        !          3121: <        BRN  OASS0            JUMP TO ASSIGN NULL VALUE
        !          3122: ---
        !          3123: > *
        !          3124: > *      MERGE WITH ASSIGNMENT ROUTINE
        !          3125: > *
        !          3126: > ORPL4  MOV  =O$ASS,XL        CONTINUATION ROUTINE
        !          3127: >        BRI  XL               ENTER ROUTINE
        !          3128: 7272c6136
        !          3129: < ORPL4  MOV  XR,XL            COPY SCBLK REPLACEMENT PTR
        !          3130: ---
        !          3131: > ORPL5  MOV  XR,XL            COPY SCBLK REPLACEMENT PTR
        !          3132: 7292c6156
        !          3133: <        BRN  EVLX3            RETURN TO EVALX PROCEDURE
        !          3134: ---
        !          3135: >        BRN  EVLXV            RETURN TO EVALX PROCEDURE
        !          3136: 7337,7338c6201,6202
        !          3137: <        ERR  032,SUBTRACTION LEFT OPERAND IS NOT NUMERIC
        !          3138: <        ERR  033,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC
        !          3139: ---
        !          3140: >        ERR  037,SUBTRACTION LEFT OPERAND IS NOT NUMERIC
        !          3141: >        ERR  038,SUBTRACTION RIGHT OPERAND IS NOT NUMERIC
        !          3142: 7348c6212
        !          3143: <        ERB  034,SUBTRACTION CAUSED INTEGER OVERFLOW
        !          3144: ---
        !          3145: >        ERB  039,SUBTRACTION CAUSED INTEGER OVERFLOW
        !          3146: 7356c6220
        !          3147: <        ERB  264,SUBTRACTION CAUSED REAL OVERFLOW
        !          3148: ---
        !          3149: >        ERB  040,SUBTRACTION CAUSED REAL OVERFLOW
        !          3150: 7358d6221
        !          3151: <        EJC
        !          3152: 7363,7364c6226
        !          3153: <        BRN  TRXQ1            JUMP INTO TRXEQ PROCEDURE
        !          3154: <        EJC
        !          3155: ---
        !          3156: >        JMG  TRXQR            JUMP INTO TRXEQ PROCEDURE
        !          3157: 7375c6237
        !          3158: <        ERB  035,UNEXPECTED FAILURE IN -NOFAIL MODE
        !          3159: ---
        !          3160: >        ERB  041,UNEXPECTED FAILURE IN -NOFAIL MODE
        !          3161: 7387d6248
        !          3162: <        EJC
        !          3163: 7391a6253,6255
        !          3164: >        MOV  KVERT,WA         LOAD ERROR CODE
        !          3165: >        ZER  XR               INDICATE NO ENDING MESSAGE
        !          3166: >        BNZ  WA,STOPR         STOP RUN
        !          3167: 7393d6256
        !          3168: < *      MERGE HERE IF EXECUTION TERMINATES IN ERROR
        !          3169: 7395,7404c6258
        !          3170: < LABO1  MOV  KVERT,WA         LOAD ERROR CODE
        !          3171: <        BZE  WA,LABO2         JUMP IF NO ERROR HAS OCCURED
        !          3172: < .IF    .CSAX
        !          3173: <        JSR  SYSAX            CALL AFTER EXECUTION PROC (REG04)
        !          3174: < .ELSE
        !          3175: < .FI
        !          3176: <        JSR  PRTPG            ELSE EJECT PRINTER
        !          3177: <        JSR  ERMSG            PRINT ERROR MESSAGE
        !          3178: <        ZER  XR               INDICATE NO MESSAGE TO PRINT
        !          3179: <        BRN  STOPR            JUMP TO ROUTINE TO STOP RUN
        !          3180: ---
        !          3181: > *      FAIL IF NO ERROR HAD OCCURED
        !          3182: 7406c6260
        !          3183: < *      HERE IF NO ERROR HAD OCCURED
        !          3184: ---
        !          3185: >        ERB  042,GOTO ABORT WITH NO PRECEDING ERROR
        !          3186: 7408,7410d6261
        !          3187: < LABO2  ERB  036,GOTO ABORT WITH NO PRECEDING ERROR
        !          3188: <        EJC
        !          3189: < *
        !          3190: 7417,7418c6268,6269
        !          3191: < LCNT1  MOV  R$CNT,XR         LOAD CONTINUATION CODE BLOCK PTR
        !          3192: <        BZE  XR,LCNT2         JUMP IF NO PREVIOUS ERROR
        !          3193: ---
        !          3194: > LCNXE  MOV  R$CNT,XR         LOAD CONTINUATION CODE BLOCK PTR
        !          3195: >        BZE  XR,LCNT1         JUMP IF NO PREVIOUS ERROR
        !          3196: 7428c6279
        !          3197: < LCNT2  ERB  037,GOTO CONTINUE WITH NO PRECEDING ERROR
        !          3198: ---
        !          3199: > LCNT1  ERB  043,GOTO CONTINUE WITH NO PRECEDING ERROR
        !          3200: 7434,7437c6285,6286
        !          3201: < *
        !          3202: < *      MERGE HERE FROM END CODE CIRCUIT
        !          3203: < *
        !          3204: < LEND0  MOV  =ENDMS,XR        POINT TO MESSAGE /NORMAL TERM../
        !          3205: ---
        !          3206: >        MOV  =ENDMS,XR        POINT TO MESSAGE /NORMAL TERM../
        !          3207: >        ZER  WA               NO ERROR CODE
        !          3208: 7439d6287
        !          3209: <        EJC
        !          3210: 7446d6293
        !          3211: <        EJC
        !          3212: 7453d6299
        !          3213: <        EJC
        !          3214: 7460d6305
        !          3215: <        EJC
        !          3216: 7465c6310
        !          3217: <        ERB  038,GOTO UNDEFINED LABEL
        !          3218: ---
        !          3219: >        ERB  044,GOTO UNDEFINED LABEL
        !          3220: 7523d6367
        !          3221: <        EJC
        !          3222: 7536d6379
        !          3223: <        EJC
        !          3224: 7547d6389
        !          3225: <        EJC
        !          3226: 7565d6406
        !          3227: <        EJC
        !          3228: 7582d6422
        !          3229: <        EJC
        !          3230: 7594c6434
        !          3231: < BCDC0  MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3232: ---
        !          3233: >        MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3234: 7597d6436
        !          3235: <        EJC
        !          3236: 7599,7600d6437
        !          3237: < *      CDBLK (CONTINUED)
        !          3238: < *
        !          3239: 7606c6443
        !          3240: < BCDS0  MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3241: ---
        !          3242: >        MOV  FLPTR,XS         POP GARBAGE OFF STACK
        !          3243: 7609d6445
        !          3244: <        EJC
        !          3245: 7616d6451
        !          3246: <        EJC
        !          3247: 7617a6453,6458
        !          3248: > *      COBLK
        !          3249: > *
        !          3250: > *      THE ROUTINE FOR A COBLK IS NEVER EXECUTED
        !          3251: > *
        !          3252: > B$COP  ENT  BL$CO            ENTRY POINT (COBLK)
        !          3253: > *
        !          3254: 7646a6488,6489
        !          3255: > .IF    .CNLD
        !          3256: > .ELSE
        !          3257: 7657,7658d6499
        !          3258: < .IF    .CNLD
        !          3259: < .ELSE
        !          3260: 7671,7676c6512
        !          3261: < .IF    .CNRA
        !          3262: <        BSW  XR,3             SWITCH ON TYPE
        !          3263: < .ELSE
        !          3264: <        BSW  XR,4             SWITCH ON TYPE
        !          3265: < .FI
        !          3266: <        IFF  0,BEFC7          NO CONVERSION NEEDED
        !          3267: ---
        !          3268: >        BSW  XR,5,BEFC7       SWITCH ON EFTAR TYPE
        !          3269: 7682a6519,6522
        !          3270: > .IF    .CNBF
        !          3271: > .ELSE
        !          3272: >        IFF  4,BEFCA          BUFFER
        !          3273: > .FI
        !          3274: 7689c6529
        !          3275: <        ERR  039,EXTERNAL FUNCTION ARGUMENT IS NOT STRING
        !          3276: ---
        !          3277: >        ERR  045,EXTERNAL FUNCTION ARGUMENT IS NOT STRING
        !          3278: 7700c6540
        !          3279: <        ERR  040,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER
        !          3280: ---
        !          3281: >        ERR  046,EXTERNAL FUNCTION ARGUMENT IS NOT INTEGER
        !          3282: 7710,7711c6550
        !          3283: <        ERR  265,EXTERNAL FUNCTION ARGUMENT IS NOT REAL
        !          3284: < .FI
        !          3285: ---
        !          3286: >        ERR  047,EXTERNAL FUNCTION ARGUMENT IS NOT REAL
        !          3287: 7714a6554,6570
        !          3288: > .FI
        !          3289: > .IF    .CNBF
        !          3290: > .ELSE
        !          3291: >        BRN  BEFC5            MERGE
        !          3292: > *
        !          3293: > *      HERE TO CONVERT BUFFER
        !          3294: > *
        !          3295: > BEFCA  MOV  (XT),XR          LOAD ARGUMENT
        !          3296: >        MOV  WC,BEFOF         SAVE OFFSET
        !          3297: >        MOV  XL,-(XS)         SAVE EFBLK PTR
        !          3298: >        JSR  GTBUF            GET A BUFFER
        !          3299: >        ERR  259,EXTERNAL FUNCTION ARGUMENT IS NOT BUFFER
        !          3300: >        MOV  (XS)+,XL         RESTORE EFBLK PTR
        !          3301: > *
        !          3302: > *      INTEGER AND REAL CASE MERGES HERE
        !          3303: > *
        !          3304: > .FI
        !          3305: 7739c6595
        !          3306: <        MOV  EFRSL(XL),WB     GET RESULT TYPE ID
        !          3307: ---
        !          3308: >        MOV  EFRSL(XL),WB     GET RESULT TYPE
        !          3309: 7764a6621
        !          3310: >        BEQ  WB,=NUM03,BEF10  YES JUMP
        !          3311: 7765a6623,6627
        !          3312: > .IF    .CNBF
        !          3313: > .ELSE
        !          3314: >        MOV  =B$BCT,WA        BUFFER
        !          3315: >        BEQ  WB,=NUM04,BEF10  YES JUMP
        !          3316: > .FI
        !          3317: 7780d6641
        !          3318: <        EJC
        !          3319: 7811,7812c6672
        !          3320: < BFFC2  ERB  041,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE
        !          3321: <        EJC
        !          3322: ---
        !          3323: > BFFC2  ERB  048,FIELD FUNCTION ARGUMENT IS WRONG DATATYPE
        !          3324: 7814,7815d6673
        !          3325: < *      FFBLK (CONTINUED)
        !          3326: < *
        !          3327: 7851d6708
        !          3328: <        EJC
        !          3329: 7858d6714
        !          3330: <        EJC
        !          3331: 7871d6726
        !          3332: <        EJC
        !          3333: 7924c6779
        !          3334: <        WTB  WA               CONVERT NO. OF ARGS TO BYTES OFFSET
        !          3335: ---
        !          3336: >        WTB  WA               CONVERT NO. OF ARGS TO BAUS OFFSET
        !          3337: 7989c6844
        !          3338: < *      HERE IF &PROFILE = 1
        !          3339: ---
        !          3340: > *      HERE IF PROFILE = 1
        !          3341: 7998c6853
        !          3342: < *       HERE IF &PROFILE = 2
        !          3343: ---
        !          3344: > *      HERE IF PROFILE = 2
        !          3345: 8007a6863
        !          3346: >        EJC
        !          3347: 8008a6865,6866
        !          3348: > *      PFBLK (CONTINUED)
        !          3349: > *
        !          3350: 8078c6936
        !          3351: <        WTB  WB               CONVERT TO BYTE OFFSET
        !          3352: ---
        !          3353: >        WTB  WB               CONVERT TO BAU OFFSET
        !          3354: 8095,8096c6953
        !          3355: <        JSR  PRTCH            PRINT TO TERMINATE OUTPUT
        !          3356: <        JSR  PRTNL            TERMINATE PRINT LINE
        !          3357: ---
        !          3358: >        JSR  PRTCF            PRINT TO TERMINATE OUTPUT
        !          3359: 8122d6978
        !          3360: <        EJC
        !          3361: 8133d6988
        !          3362: <        EJC
        !          3363: 8140d6994
        !          3364: <        EJC
        !          3365: 8147d7000
        !          3366: <        EJC
        !          3367: 8176d7028
        !          3368: <        EJC
        !          3369: 8178,8179d7029
        !          3370: < *      VRBLK (CONTINUED)
        !          3371: < *
        !          3372: 8185,8186c7035
        !          3373: <        ERB  042,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE
        !          3374: <        EJC
        !          3375: ---
        !          3376: >        ERB  049,ATTEMPT TO CHANGE VALUE OF PROTECTED VARIABLE
        !          3377: 8188,8189d7036
        !          3378: < *      VRBLK (CONTINUED)
        !          3379: < *
        !          3380: 8199d7045
        !          3381: <        EJC
        !          3382: 8201,8202d7046
        !          3383: < *      VRBLK (CONTINUED)
        !          3384: < *
        !          3385: 8223d7066
        !          3386: <        EJC
        !          3387: 8225,8226d7067
        !          3388: < *      VRBLK (CONTINUED)
        !          3389: < *
        !          3390: 8252,8253c7093
        !          3391: <        JSR  PRTCH            PRINT IT
        !          3392: <        JSR  PRTNL            TERMINATE LINE
        !          3393: ---
        !          3394: >        JSR  PRTCF            PRINT IT
        !          3395: 8286d7125
        !          3396: <        EJC
        !          3397: 8593a7433,7434
        !          3398: > .IF    .CNFN
        !          3399: > .ELSE
        !          3400: 8596,8597d7436
        !          3401: < *      COMPOUNT PATTERN STRUCTURES (CONTINUED)
        !          3402: < *
        !          3403: 8627c7466,7467
        !          3404: < *      STACK BACK PAST THE INNTER STACK BASE CREATED BY P$FNA
        !          3405: ---
        !          3406: > *      STACK BACK PAST THE INNER STACK BASE CREATED BY P$FNA
        !          3407: > .FI
        !          3408: 8734d7573
        !          3409: <        EJC
        !          3410: 8743d7581
        !          3411: <        EJC
        !          3412: 8767d7604
        !          3413: <        EJC
        !          3414: 8784d7620
        !          3415: <        EJC
        !          3416: 8809d7644
        !          3417: <        EJC
        !          3418: 8811a7647
        !          3419: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3420: 8817,8820c7653
        !          3421: < *
        !          3422: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3423: < *
        !          3424: < PANY1  BEQ  WB,PMSSL,FAILP   FAIL IF NO CHARACTERS LEFT
        !          3425: ---
        !          3426: >        BEQ  WB,PMSSL,FAILP   FAIL IF NO CHARACTERS LEFT
        !          3427: 8825c7658
        !          3428: <        WTB  WA               CHANGE TO BYTE OFFSET
        !          3429: ---
        !          3430: >        WTB  WA               CHANGE TO BAU OFFSET
        !          3431: 8832d7664
        !          3432: <        EJC
        !          3433: 8838a7671
        !          3434: >        MOV  =P$ANY,WA        PCODE FOR NEW NODE
        !          3435: 8840c7673
        !          3436: <        ERR  043,ANY EVALUATED ARGUMENT IS NOT STRING
        !          3437: ---
        !          3438: >        ERR  050,ANY EVALUATED ARGUMENT IS NOT STRING
        !          3439: 8842c7675
        !          3440: <        PPM  PANY1            MERGE MULTI-CHAR CASE IF OK
        !          3441: ---
        !          3442: >        BRI  XL               MERGE MULTI-CHAR CASE IF OK
        !          3443: 8859d7691
        !          3444: <        EJC
        !          3445: 8922a7755
        !          3446: >        MOV  =P$BRK,WA        PCODE FOR NEW NODE
        !          3447: 8924c7757
        !          3448: <        ERR  044,BREAK EVALUATED ARGUMENT IS NOT STRING
        !          3449: ---
        !          3450: >        ERR  051,BREAK EVALUATED ARGUMENT IS NOT STRING
        !          3451: 8926,8927c7759
        !          3452: <        PPM  PBRK1            MERGE WITH MULTI-CHAR CASE IF OK
        !          3453: <        EJC
        !          3454: ---
        !          3455: >        BRI  XL               MERGE WITH MULTI-CHAR CASE IF OK
        !          3456: 8950a7783
        !          3457: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3458: 8956,8959c7789
        !          3459: < *
        !          3460: < *      EXPRESSION ARGUMENT MERGES HERE
        !          3461: < *
        !          3462: < PBRK1  MOV  PMSSL,WC         LOAD SUBJECT STRING LENGTH
        !          3463: ---
        !          3464: >        MOV  PMSSL,WC         LOAD SUBJECT STRING LENGTH
        !          3465: 8971c7801
        !          3466: <        WTB  WA               CONVERT TO BYTE OFFSET
        !          3467: ---
        !          3468: >        WTB  WA               CONVERT TO BAU OFFSET
        !          3469: 8993d7822
        !          3470: <        EJC
        !          3471: 9004a7834
        !          3472: >        MOV  =P$BRK,WA        PCODE FOR NEW NODE
        !          3473: 9006c7836
        !          3474: <        ERR  045,BREAKX EVALUATED ARGUMENT IS NOT STRING
        !          3475: ---
        !          3476: >        ERR  052,BREAKX EVALUATED ARGUMENT IS NOT STRING
        !          3477: 9008,9009c7838
        !          3478: <        PPM  PBRK1            MERGE WITH BREAK IF ALL OK
        !          3479: <        EJC
        !          3480: ---
        !          3481: >        BRI  XL               MERGE WITH BREAK IF ALL OK
        !          3482: 9060c7889
        !          3483: <        ERR  046,EXPRESSION DOES NOT EVALUATE TO PATTERN
        !          3484: ---
        !          3485: >        ERR  053,EXPRESSION DOES NOT EVALUATE TO PATTERN
        !          3486: 9068c7897,7908
        !          3487: <        BRN  PSTR1            ELSE MERGE WITH STRING CIRCUIT
        !          3488: ---
        !          3489: >        MOV  XR,PSAVE         SAVE NODE PTR
        !          3490: >        MOV  R$PMS,XR         LOAD SUBJECT STRING PTR
        !          3491: >        PLC  XR,WB            POINT TO CURRENT CHAR
        !          3492: >        ADD  SCLEN(XL),WB     COMPUTE NEW CURSOR POSITION
        !          3493: >        BGT  WB,PMSSL,FAILP   FAIL IF PAST END OF STRING
        !          3494: >        MOV  WB,PSAVC         SAVE UPDATED CURSOR
        !          3495: >        MOV  SCLEN(XL),WA     NUMBER OF CHARS TO COMPARE
        !          3496: >        PLC  XL               POINT TO TEST STRING CHARS
        !          3497: >        CMC  FAILP,FAILP      COMPARE, FAIL IF UNEQUAL
        !          3498: >        MOV  PSAVE,XR         IF ALL MATCHED, RESTORE NODE PTR
        !          3499: >        MOV  PSAVC,WB         RESTORE UPDATED CURSOR
        !          3500: >        BRN  SUCCP            AND SUCCEED
        !          3501: 9093d7932
        !          3502: <        EJC
        !          3503: 9102d7940
        !          3504: < *
        !          3505: 9114c7952,7953
        !          3506: <        EJC
        !          3507: ---
        !          3508: > .IF    .CNFN
        !          3509: > .ELSE
        !          3510: 9128d7966
        !          3511: <        EJC
        !          3512: 9137d7974
        !          3513: <        EJC
        !          3514: 9155d7991
        !          3515: <        EJC
        !          3516: 9163a8000
        !          3517: > .FI
        !          3518: 9180d8016
        !          3519: <        EJC
        !          3520: 9232d8067
        !          3521: <        EJC
        !          3522: 9251,9254c8086
        !          3523: < *
        !          3524: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3525: < *
        !          3526: < PLEN1  ADD  PARM1(XR),WB     PUSH CURSOR INDICATED AMOUNT
        !          3527: ---
        !          3528: >        ADD  PARM1(XR),WB     PUSH CURSOR INDICATED AMOUNT
        !          3529: 9257d8088
        !          3530: <        EJC
        !          3531: 9265,9266c8096,8097
        !          3532: <        ERR  047,LEN EVALUATED ARGUMENT IS NOT INTEGER
        !          3533: <        ERR  048,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3534: ---
        !          3535: >        ERR  054,LEN EVALUATED ARGUMENT IS NOT INTEGER
        !          3536: >        ERR  055,LEN EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3537: 9268c8099,8101
        !          3538: <        PPM  PLEN1            MERGE WITH NORMAL CIRCUIT IF OK
        !          3539: ---
        !          3540: >        ADD  PARM1(XR),WB     PUSH CURSOR INDICATED AMOUNT
        !          3541: >        BLE  WB,PMSSL,SUCCP   SUCCEED IF NOT OFF END
        !          3542: >        BRN  FAILP            ELSE FAIL
        !          3543: 9275a8109
        !          3544: >        MOV  =P$NAY,WA        PCODE FOR NEW NODE
        !          3545: 9277c8111
        !          3546: <        ERR  049,NOTANY EVALUATED ARGUMENT IS NOT STRING
        !          3547: ---
        !          3548: >        ERR  056,NOTANY EVALUATED ARGUMENT IS NOT STRING
        !          3549: 9279c8113
        !          3550: <        PPM  PNAY1            MERGE WITH MULTI-CHAR CASE IF OK
        !          3551: ---
        !          3552: >        BRI  XL               MERGE WITH MULTI-CHAR CASE IF OK
        !          3553: 9296a8131
        !          3554: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3555: 9302,9305c8137
        !          3556: < *
        !          3557: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3558: < *
        !          3559: < PNAY1  BEQ  WB,PMSSL,FAILP   FAIL IF NO CHARACTERS LEFT
        !          3560: ---
        !          3561: >        BEQ  WB,PMSSL,FAILP   FAIL IF NO CHARACTERS LEFT
        !          3562: 9309c8141
        !          3563: <        WTB  WA               CONVERT TO BYTE OFFSET
        !          3564: ---
        !          3565: >        WTB  WA               CONVERT TO BAU OFFSET
        !          3566: 9405a8238
        !          3567: >        ZER  R$PMB            CLEAR POSSIBLE BCBLK PTR FOR GBCOL
        !          3568: 9418a8252
        !          3569: >        MOV  XL,-(XS)         STACK SUBJECT STRING POINTER
        !          3570: 9422c8256
        !          3571: < .FI
        !          3572: ---
        !          3573: >        ZER  R$PMB            CLEAR BCBLK PTR FOR GBCOL
        !          3574: 9426a8261
        !          3575: > .FI
        !          3576: 9435,9438c8270
        !          3577: < *
        !          3578: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3579: < *
        !          3580: < PPOS1  BEQ  WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION
        !          3581: ---
        !          3582: >        BEQ  WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION
        !          3583: 9440d8271
        !          3584: <        EJC
        !          3585: 9448,9449c8279,8280
        !          3586: <        ERR  050,POS EVALUATED ARGUMENT IS NOT INTEGER
        !          3587: <        ERR  051,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3588: ---
        !          3589: >        ERR  057,POS EVALUATED ARGUMENT IS NOT INTEGER
        !          3590: >        ERR  058,POS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3591: 9451c8282,8283
        !          3592: <        PPM  PPOS1            MERGE WITH NORMAL CASE IF OK
        !          3593: ---
        !          3594: >        BEQ  WB,PARM1(XR),SUCCP SUCCEED IF AT RIGHT LOCATION
        !          3595: >        BRN  FAILP            ELSE FAIL
        !          3596: 9465d8296
        !          3597: <        EJC
        !          3598: 9476d8306
        !          3599: <        EJC
        !          3600: 9493d8322
        !          3601: <        EJC
        !          3602: 9513d8341
        !          3603: <        EJC
        !          3604: 9521,9522c8349,8350
        !          3605: <        ERR  052,RPOS EVALUATED ARGUMENT IS NOT INTEGER
        !          3606: <        ERR  053,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3607: ---
        !          3608: >        ERR  059,RPOS EVALUATED ARGUMENT IS NOT INTEGER
        !          3609: >        ERR  060,RPOS EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3610: 9524,9525c8352,8353
        !          3611: <        PPM  PRPS1            MERGE WITH NORMAL CASE IF OK
        !          3612: <        EJC
        !          3613: ---
        !          3614: >        MOV  =P$RPS,XL        CONTINUATION ROUTINE
        !          3615: >        BRI  XL               ENTER ROUTINE
        !          3616: 9527a8356
        !          3617: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3618: 9532,9535c8361
        !          3619: < *
        !          3620: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3621: < *
        !          3622: < PRPS1  MOV  PMSSL,WC         GET LENGTH OF STRING
        !          3623: ---
        !          3624: >        MOV  PMSSL,WC         GET LENGTH OF STRING
        !          3625: 9541a8368
        !          3626: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3627: 9546,9549c8373
        !          3628: < *
        !          3629: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3630: < *
        !          3631: < PRTB1  MOV  WB,WC            SAVE INITIAL CURSOR
        !          3632: ---
        !          3633: >        MOV  WB,WC            SAVE INITIAL CURSOR
        !          3634: 9555d8378
        !          3635: <        EJC
        !          3636: 9563,9564c8386,8387
        !          3637: <        ERR  054,RTAB EVALUATED ARGUMENT IS NOT INTEGER
        !          3638: <        ERR  055,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3639: ---
        !          3640: >        ERR  061,RTAB EVALUATED ARGUMENT IS NOT INTEGER
        !          3641: >        ERR  062,RTAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3642: 9566c8389,8390
        !          3643: <        PPM  PRTB1            MERGE WITH NORMAL CASE IF SUCCESS
        !          3644: ---
        !          3645: >        MOV  =P$RTB,XL        CONTINUATION ROUTINE
        !          3646: >        BRI  XL               ENTER ROUTINE
        !          3647: 9573a8398
        !          3648: >        MOV  =P$SPN,WA        PCODE FOR NEW NODE
        !          3649: 9575c8400
        !          3650: <        ERR  056,SPAN EVALUATED ARGUMENT IS NOT STRING
        !          3651: ---
        !          3652: >        ERR  063,SPAN EVALUATED ARGUMENT IS NOT STRING
        !          3653: 9577,9578c8402
        !          3654: <        PPM  PSPN1            MERGE WITH MULTI-CHAR CASE IF OK
        !          3655: <        EJC
        !          3656: ---
        !          3657: >        BRI  XL               MERGE WITH MULTI-CHAR CASE IF OK
        !          3658: 9580a8405
        !          3659: > *      EXPRESSION ARGUMENT CASE MERGES
        !          3660: 9586,9589c8411
        !          3661: < *
        !          3662: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3663: < *
        !          3664: < PSPN1  MOV  PMSSL,WC         COPY SUBJECT STRING LENGTH
        !          3665: ---
        !          3666: >        MOV  PMSSL,WC         COPY SUBJECT STRING LENGTH
        !          3667: 9601c8423
        !          3668: <        WTB  WA               CONVERT TO BYTE OFFSET
        !          3669: ---
        !          3670: >        WTB  WA               CONVERT TO BAU OFFSET
        !          3671: 9641d8462
        !          3672: <        EJC
        !          3673: 9643c8464
        !          3674: < *      MULTI-CHARACTER STRING
        !          3675: ---
        !          3676: > *      MULTI-CHARACTER STRING (MERGE FROM P$EXA)
        !          3677: 9652,9655c8473
        !          3678: < *
        !          3679: < *      MERGE HERE AFTER EVALUATING EXPRESSION WITH STRING VALUE
        !          3680: < *
        !          3681: < PSTR1  MOV  XR,PSAVE         SAVE NODE POINTER
        !          3682: ---
        !          3683: >        MOV  XR,PSAVE         SAVE NODE POINTER
        !          3684: 9682a8501
        !          3685: > *      EXPRESSION CASE MERGES
        !          3686: 9687,9690c8506
        !          3687: < *
        !          3688: < *      EXPRESSION ARGUMENT CASE MERGES HERE
        !          3689: < *
        !          3690: < PTAB1  BGT  WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY
        !          3691: ---
        !          3692: >        BGT  WB,PARM1(XR),FAILP FAIL IF TOO FAR ALREADY
        !          3693: 9694d8509
        !          3694: <        EJC
        !          3695: 9702,9703c8517,8518
        !          3696: <        ERR  057,TAB EVALUATED ARGUMENT IS NOT INTEGER
        !          3697: <        ERR  058,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3698: ---
        !          3699: >        ERR  064,TAB EVALUATED ARGUMENT IS NOT INTEGER
        !          3700: >        ERR  065,TAB EVALUATED ARGUMENT IS NEGATIVE OR TOO LARGE
        !          3701: 9705,9706c8520,8521
        !          3702: <        PPM  PTAB1            MERGE WITH NORMAL CASE IF OK
        !          3703: <        EJC
        !          3704: ---
        !          3705: >        MOV  =P$TAB,XL        CONTINUATION ROUTINE
        !          3706: >        BRI  XL               ENTER ROUTINE
        !          3707: 9721d8535
        !          3708: <        EJC
        !          3709: 9764c8578
        !          3710: <        ERR  059,ANY ARGUMENT IS NOT STRING OR EXPRESSION
        !          3711: ---
        !          3712: >        ERR  066,ANY ARGUMENT IS NOT STRING OR EXPRESSION
        !          3713: 9766d8579
        !          3714: <        EJC
        !          3715: 9768a8582
        !          3716: >        EJC
        !          3717: 9776c8590
        !          3718: <        ERB  275,APPEND FIRST ARGUMENT IS NOT BUFFER
        !          3719: ---
        !          3720: >        ERB  067,APPEND FIRST ARGUMENT IS NOT BUFFER
        !          3721: 9780,9781c8594,8597
        !          3722: < SAPN1  JSR  APNDB            DO THE APPEND
        !          3723: <        ERR  276,APPEND SECOND ARGUMENT IS NOT STRING
        !          3724: ---
        !          3725: > SAPN1  MOV  BCLEN(XR),WA     OFFSET TO BUFFER END
        !          3726: >        ZER  WB               NO CHARS TO BE REPLACED
        !          3727: >        JSR  INSBF            DO THE APPEND
        !          3728: >        ERR  068,APPEND SECOND ARGUMENT IS NOT STRING
        !          3729: 9784d8599
        !          3730: <        EJC
        !          3731: 9785a8601
        !          3732: >        EJC
        !          3733: 9796c8612
        !          3734: <        WTB  WB               CONVERT TO BYTES
        !          3735: ---
        !          3736: >        WTB  WB               CONVERT TO BAUS
        !          3737: 9819c8635
        !          3738: < SAPP3  ERB  060,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME
        !          3739: ---
        !          3740: > SAPP3  ERB  069,APPLY FIRST ARG IS NOT NATURAL VARIABLE NAME
        !          3741: 9841c8657
        !          3742: <        ERR  061,ARBNO ARGUMENT IS NOT PATTERN
        !          3743: ---
        !          3744: >        ERR  070,ARBNO ARGUMENT IS NOT PATTERN
        !          3745: 9857c8673
        !          3746: <        ERR  062,ARG SECOND ARGUMENT IS NOT INTEGER
        !          3747: ---
        !          3748: >        ERR  253,ARG SECOND ARGUMENT IS NOT INTEGER
        !          3749: 9874c8690
        !          3750: < SARG1  ERB  063,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME
        !          3751: ---
        !          3752: > SARG1  ERB  252,ARG FIRST ARGUMENT IS NOT PROGRAM FUNCTION NAME
        !          3753: 9892c8708
        !          3754: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          3755: ---
        !          3756: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          3757: 9914c8730
        !          3758: <        ERR  064,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING
        !          3759: ---
        !          3760: >        ERR  071,ARRAY FIRST ARGUMENT IS NOT INTEGER OR STRING
        !          3761: 9938c8754
        !          3762: <        ERR  065,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER
        !          3763: ---
        !          3764: >        ERR  072,ARRAY FIRST ARGUMENT LOWER BOUND IS NOT INTEGER
        !          3765: 9950,9951c8766,8772
        !          3766: < SAR04  JSR  GTINT            CONVERT HIGH BOUND TO INTEGER
        !          3767: <        ERR  066,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER
        !          3768: ---
        !          3769: > SAR04  BNZ  WA,SAR4A         SKIP IF DELIMITER 1 OR 2
        !          3770: >        BNZ  XSCNB,SAR10      JUMP IF ILLEGALLY PLACED BLANK
        !          3771: > *
        !          3772: > *      CHECK FOR INTEGER BOUND
        !          3773: > *
        !          3774: > SAR4A  JSR  GTINT            CONVERT HIGH BOUND TO INTEGER
        !          3775: >        ERR  073,ARRAY FIRST ARGUMENT UPPER BOUND IS NOT INTEGER
        !          3776: 9989c8810
        !          3777: <        WTB  WB               ELSE CONVERT TO LENGTH IN BYTES
        !          3778: ---
        !          3779: >        WTB  WB               ELSE CONVERT TO LENGTH IN BAUS
        !          3780: 10007c8828
        !          3781: <        MOV  WA,WC            SAVE LENGTH IN BYTES
        !          3782: ---
        !          3783: >        MOV  WA,WC            SAVE LENGTH IN BAUS
        !          3784: 10024c8845
        !          3785: <        MOV  WC,ARLEN(XR)     STORE LENGTH IN BYTES
        !          3786: ---
        !          3787: >        MOV  WC,ARLEN(XR)     STORE LENGTH IN BAUS
        !          3788: 10044c8865
        !          3789: < SAR10  ERB  067,ARRAY DIMENSION IS ZERO,NEGATIVE OR OUT OF RANGE
        !          3790: ---
        !          3791: > SAR10  ERB  074,BAD DIMENSION, ZERO, NEGATIVE OR OUT OF RANGE
        !          3792: 10048c8869
        !          3793: < SAR11  ERB  068,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED
        !          3794: ---
        !          3795: > SAR11  ERB  075,ARRAY SIZE EXCEEDS MAXIMUM PERMITTED
        !          3796: 10050,10051d8870
        !          3797: < .IF    .CNBF
        !          3798: < .ELSE
        !          3799: 10053,10078d8871
        !          3800: < *      BUFFER
        !          3801: < *
        !          3802: < S$BUF  ENT                   ENTRY POINT
        !          3803: <        MOV  (XS)+,XL         GET INITIAL VALUE
        !          3804: <        MOV  (XS)+,XR         GET REQUESTED ALLOCATION
        !          3805: <        JSR  GTINT            CONVERT TO INTEGER
        !          3806: <        ERR  269,BUFFER FIRST ARGUMENT IS NOT INTEGER
        !          3807: <        LDI  ICVAL(XR)        GET VALUE
        !          3808: <        ILE  SBF01            BRANCH IF NEGATIVE OR ZERO
        !          3809: <        MFI  WA,SBF02         MOVE WITH OVERFLOW CHECK
        !          3810: <        JSR  ALOBF            ALLOCATE THE BUFFER
        !          3811: <        JSR  APNDB            COPY IT IN
        !          3812: <        ERR  270,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER
        !          3813: <        ERR  271,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION
        !          3814: <        BRN  EXSID            EXIT SETTING IDVAL
        !          3815: < *
        !          3816: < *      HERE FOR INVALID ALLOCATION SIZE
        !          3817: < *
        !          3818: < SBF01  ERB  272,BUFFER FIRST ARGUMENT IS NOT POSITIVE
        !          3819: < *
        !          3820: < *      HERE FOR ALLOCATION SIZE INTEGER OVERFLOW
        !          3821: < *
        !          3822: < SBF02  ERB  273,BUFFER SIZE IS TOO BIG
        !          3823: <        EJC
        !          3824: < .FI
        !          3825: < *
        !          3826: 10086c8879
        !          3827: <        ERR  069,BREAK ARGUMENT IS NOT STRING OR EXPRESSION
        !          3828: ---
        !          3829: >        ERR  076,BREAK ARGUMENT IS NOT STRING OR EXPRESSION
        !          3830: 10100c8893
        !          3831: <        ERR  070,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION
        !          3832: ---
        !          3833: >        ERR  077,BREAKX ARGUMENT IS NOT STRING OR EXPRESSION
        !          3834: 10113a8907,8908
        !          3835: > .IF    .CNBF
        !          3836: > .ELSE
        !          3837: 10116c8911
        !          3838: < *      CHAR
        !          3839: ---
        !          3840: > *      BUFFER
        !          3841: 10118,10130c8913,8923
        !          3842: < S$CHR  ENT                   ENTRY POINT
        !          3843: <        JSR  GTSMI            CONVERT ARG TO INTEGER
        !          3844: <        ERR  281,CHAR ARGUMENT NOT INTEGER
        !          3845: <        PPM  SCHR1            TOO BIG ERROR EXIT
        !          3846: <        BGE  WC,=CFP$A,SCHR1  SEE IF OUT OF RANGE OF HOST SET
        !          3847: <        MOV  =NUM01,WA        IF NOT SET SCBLK ALLOCATION
        !          3848: <        MOV  WC,WB            SAVE CHAR CODE
        !          3849: <        JSR  ALOCS            ALLOCATE 1 BAU SCBLK
        !          3850: <        MOV  XR,XL            COPY SCBLK POINTER
        !          3851: <        PSC  XL               GET SET TO STUFF CHAR
        !          3852: <        SCH  WB,(XL)+         STUFF IT
        !          3853: <        ZER  XL               CLEAR SLOP IN XL
        !          3854: <        BRN  EXIXR            EXIT WITH SCBLK POINTER
        !          3855: ---
        !          3856: > S$BUF  ENT                   ENTRY POINT
        !          3857: >        MOV  (XS)+,XL         GET INITIAL STRING
        !          3858: >        JSR  GTSMI            CONVERT MEMORY REQUEST TO INTEGER
        !          3859: >        ERR  078,BUFFER FIRST ARGUMENT IS NOT INTEGER
        !          3860: >        PPM  SBF01            FAIL IF OUT OF RANGE
        !          3861: >        MOV  WC,WA            MOVE LENGTH TO CORRECT REGISTER
        !          3862: >        JSR  ALOBF            ALLOCATE THE BUFFER
        !          3863: >        JSR  INSBF            COPY INITIAL ARG IN
        !          3864: >        ERR  079,BUFFER SECOND ARGUMENT IS NOT STRING OR BUFFER
        !          3865: >        ERR  080,BUFFER INITIAL VALUE TOO BIG FOR ALLOCATION
        !          3866: >        BRN  EXSID            EXIT SETTING IDVAL
        !          3867: 10132c8925
        !          3868: < *      HERE IF CHAR ARGUMENT IS OUT OF RANGE
        !          3869: ---
        !          3870: > *      HERE FOR INVALID ALLOCATION SIZE
        !          3871: 10134c8927,8928
        !          3872: < SCHR1  ERB  282,CHAR ARGUMENT NOT IN RANGE
        !          3873: ---
        !          3874: > SBF01  ERB  081,BUFFER FIRST ARGUMENT IS OUT OF RANGE
        !          3875: > .FI
        !          3876: 10141c8935
        !          3877: <        ERR  071,CLEAR ARGUMENT IS NOT STRING
        !          3878: ---
        !          3879: >        ERR  082,CLEAR ARGUMENT IS NOT STRING
        !          3880: 10145c8939
        !          3881: < *      THE LIST ARE FALGGED BY SETTING VRGET OF VRBLK TO ZERO.
        !          3882: ---
        !          3883: > *      THE LIST ARE FLAGGED BY SETTING VRGET OF VRBLK TO ZERO.
        !          3884: 10151c8945
        !          3885: <        ERR  072,CLEAR ARGUMENT HAS NULL VARIABLE NAME
        !          3886: ---
        !          3887: >        PPM  SCLR7            ERRONEOUS NAME
        !          3888: 10153a8948
        !          3889: >        BNZ  XSCNB,SCLR7      BADLY PLACED BLANK
        !          3890: 10181c8976
        !          3891: < *      PRROTECTED VARIABLES (ARB, ETC) ARE EXEMPT
        !          3892: ---
        !          3893: > *      PROTECTED VARIABLES (ARB ETC) ARE EXEMPT
        !          3894: 10183,10184c8978,8979
        !          3895: < SCLR5  BEQ  VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE (REG05)
        !          3896: <        MOV  XR,XL            COPY VRBLK POINTER (REG05)
        !          3897: ---
        !          3898: > SCLR5  BEQ  VRSTO(XR),=B$VRE,SCLR4 CHECK FOR PROTECTED VARIABLE
        !          3899: >        MOV  XR,XL            COPY VRBLK POINTER
        !          3900: 10196a8992,8995
        !          3901: > *
        !          3902: > *      ERROR POINT
        !          3903: > *
        !          3904: > SCLR7  ERB  083,NULL VARIABLE NAME OR ILLEGAL BLANK IN CLEAR ARG
        !          3905: 10213c9012
        !          3906: <        ERR  073,COLLECT ARGUMENT IS NOT INTEGER
        !          3907: ---
        !          3908: >        ERR  084,COLLECT ARGUMENT IS NOT INTEGER
        !          3909: 10220c9019
        !          3910: <        BTW  WA               CONVERT BYTES TO WORDS
        !          3911: ---
        !          3912: >        BTW  WA               CONVERT BAUS TO WORDS
        !          3913: 10231c9030
        !          3914: < S$CNV  ENT                   ENTRY POINT
        !          3915: ---
        !          3916: > S$CVT  ENT                   ENTRY POINT
        !          3917: 10233,10235c9032,9036
        !          3918: <        ERR  074,CONVERT SECOND ARGUMENT IS NOT STRING
        !          3919: < .IF    .CULC
        !          3920: <        JSR  FLSTG            FOLD LOWER CASE TO UPPER CASE
        !          3921: ---
        !          3922: >        ERR  085,CONVERT SECOND ARGUMENT IS NOT STRING
        !          3923: > .IF    .CASL
        !          3924: >        MOV  XR,XL            COPY STRING PTR TO XL
        !          3925: >        ZER  WB               ZERO OFFSET
        !          3926: >        JSR  SBSTG            CONVERT CASE OF ARG IF NECESSARY
        !          3927: 10253c9054
        !          3928: <        MOV  WA,WC            SAVE LENGTH OF ARGUMENT STRING
        !          3929: ---
        !          3930: >        MOV  SCLEN(XR),WC     SAVE LENGTH OF ARGUMENT STRING
        !          3931: 10287c9088
        !          3932: <        IFF  CNVRT,SCV08      REAL
        !          3933: ---
        !          3934: >        IFF  9,SCV08          REAL
        !          3935: 10371c9172
        !          3936: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          3937: ---
        !          3938: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          3939: 10441,10442c9242
        !          3940: < SCV28  MOV  XR,-(XS)         STACK STRING FOR PROCEDURE
        !          3941: <        JSR  GTSTG            CONVERT TO STRING
        !          3942: ---
        !          3943: > SCV28  JSR  GTBUF            CONVERT TO BUFFER
        !          3944: 10444,10448d9243
        !          3945: <        MOV  XR,XL            SAVE STRING POINTER
        !          3946: <        JSR  ALOBF            ALLOCATE BUFFER OF SAME SIZE
        !          3947: <        JSR  APNDB            COPY IN THE STRING
        !          3948: <        PPM                   ALREADY STRING - CANT FAIL TO CNV
        !          3949: <        PPM                   MUST BE ENOUGH ROOM
        !          3950: 10450d9244
        !          3951: <        EJC
        !          3952: 10451a9246
        !          3953: >        EJC
        !          3954: 10456c9251
        !          3955: <        JSR  COPYB            COPY THE BLOCK
        !          3956: ---
        !          3957: >        JSR  CBLCK            COPY THE BLOCK
        !          3958: 10458a9254,9270
        !          3959: > *
        !          3960: > *      CTI
        !          3961: > *
        !          3962: > S$CTI  ENT
        !          3963: >        LDI  INTV0            ZERO IN CASE NULL STRING
        !          3964: >        JSR  GTSTG            GET ARG AS A STRING
        !          3965: >        ERR  086,CTI ARGUMENT IS NOT A STRING
        !          3966: >        BZE  WA,SCT01         SKIP IF NULL
        !          3967: >        PLC  XR               PREPARE TO READ THE CHARACTER
        !          3968: >        LCH  WB,(XR)          GET THE CHARACTER
        !          3969: >        MTI  WB               CONVERT TO INTEGER
        !          3970: >        ZER  XR               CLEAR GARBAGE
        !          3971: > *
        !          3972: > *      MAKE ICBLK AND RETURN
        !          3973: > *
        !          3974: > SCT01  JSR  ICBLD            BUILD ICBLK
        !          3975: >        BRN  EXIXR            RETURN INTEGER RESULT
        !          3976: 10465,10466c9277,9278
        !          3977: <        ERR  075,DATA ARGUMENT IS NOT STRING
        !          3978: <        ERR  076,DATA ARGUMENT IS NULL
        !          3979: ---
        !          3980: >        ERR  087,DATA ARGUMENT IS NOT STRING
        !          3981: >        ERR  088,DATA ARGUMENT IS NULL
        !          3982: 10474c9286
        !          3983: <        ERB  077,DATA ARGUMENT IS MISSING A LEFT PAREN
        !          3984: ---
        !          3985: >        ERB  089,DATA ARGUMENT IS MISSING A LEFT PAREN
        !          3986: 10478,10482d9289
        !          3987: < .IF    .CULC
        !          3988: < SDAT1  MOV  SCLEN(XR),WA     GET LENGTH
        !          3989: <        JSR  FLSTG            FOLD LOWER CASE TO UPPER CASE
        !          3990: <        MOV  XR,XL            SAVE NAME PTR
        !          3991: < .ELSE
        !          3992: 10484d9290
        !          3993: < .FI
        !          3994: 10493c9299
        !          3995: <        ERR  078,DATA ARGUMENT HAS NULL DATATYPE NAME
        !          3996: ---
        !          3997: >        ERR  090,DATA ARGUMENT HAS NULL DATATYPE NAME
        !          3998: 10504c9310
        !          3999: <        ERB  079,DATA ARGUMENT IS MISSING A RIGHT PAREN
        !          4000: ---
        !          4001: >        ERB  091,BAD BLANK OR MISSING RIGHT PAREN IN DATA ARG
        !          4002: 10509c9315
        !          4003: <        ERR  080,DATA ARGUMENT HAS NULL FIELD NAME
        !          4004: ---
        !          4005: >        ERR  092,DATA ARGUMENT HAS NULL FIELD NAME
        !          4006: 10521c9327
        !          4007: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          4008: ---
        !          4009: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          4010: 10608c9414
        !          4011: < S$DEF  ENT                   ENTRY POINT
        !          4012: ---
        !          4013: > S$DFN  ENT                   ENTRY POINT
        !          4014: 10619,10620c9425,9426
        !          4015: <        ERR  081,DEFINE FIRST ARGUMENT IS NOT STRING
        !          4016: <        ERR  082,DEFINE FIRST ARGUMENT IS NULL
        !          4017: ---
        !          4018: >        ERR  093,DEFINE FIRST ARGUMENT IS NOT STRING
        !          4019: >        ERR  094,DEFINE FIRST ARGUMENT IS NULL
        !          4020: 10625c9431
        !          4021: <        ERB  083,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN
        !          4022: ---
        !          4023: >        ERB  095,DEFINE FIRST ARGUMENT IS MISSING A LEFT PAREN
        !          4024: 10630c9436
        !          4025: <        ERR  084,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME
        !          4026: ---
        !          4027: >        ERR  096,DEFINE FIRST ARGUMENT HAS NULL FUNCTION NAME
        !          4028: 10642,10643c9448,9454
        !          4029: <        BNZ  WA,SDF04         SKIP IF DELIMITER FOUND
        !          4030: <        ERB  085,NULL ARG NAME OR MISSING ) IN DEFINE FIRST ARG.
        !          4031: ---
        !          4032: >        BZE  WA,SDF14         FAIL IF RUNOUT
        !          4033: >        JSR  GTNVR            GET VRBLK POINTER
        !          4034: >        PPM  SDF04            IGNORE NULL NAME
        !          4035: >        MOV  XR,-(XS)         STACK ARGUMENT VRBLK POINTER
        !          4036: >        ICV  WB               INCREMENT COUNTER
        !          4037: >        BEQ  WA,=NUM02,SDF03  LOOP BACK IF STOPPED BY A COMMA
        !          4038: >        BRN  SDF05            JUMP FOR RIGHT PAREN
        !          4039: 10648c9459
        !          4040: < *      HERE AFTER SCANNING AN ARGUMENT NAME
        !          4041: ---
        !          4042: > *      NULL ARG FOUND. CONTINUE IF STOPPED BY COMMA
        !          4043: 10650,10651c9461
        !          4044: < SDF04  BNE  XR,=NULLS,SDF05  SKIP IF NON-NULL
        !          4045: <        BZE  WB,SDF06         IGNORE NULL IF CASE OF NO ARGUMENTS
        !          4046: ---
        !          4047: > SDF04  BEQ  WA,=NUM02,SDF03  LOOP IF COMMA
        !          4048: 10653,10660d9462
        !          4049: < *      HERE AFTER DEALING WITH THE CASE OF NO ARGUMENTS
        !          4050: < *
        !          4051: < SDF05  JSR  GTNVR            GET VRBLK POINTER
        !          4052: <        PPM  SDF03            LOOP BACK TO IGNORE NULL NAME
        !          4053: <        MOV  XR,-(XS)         STACK ARGUMENT VRBLK POINTER
        !          4054: <        ICV  WB               INCREMENT COUNTER
        !          4055: <        BEQ  WA,=NUM02,SDF03  LOOP BACK IF STOPPED BY A COMMA
        !          4056: < *
        !          4057: 10663c9465
        !          4058: < SDF06  MOV  WB,DEFNA         SAVE NUMBER OF ARGUMENTS
        !          4059: ---
        !          4060: > SDF05  MOV  WB,DEFNA         SAVE NUMBER OF ARGUMENTS
        !          4061: 10668c9470
        !          4062: < SDF07  MOV  =CH$CM,WC        SET DELIMITER ONE = COMMA
        !          4063: ---
        !          4064: > SDF06  MOV  =CH$CM,WC        SET DELIMITER ONE = COMMA
        !          4065: 10671,10672c9473,9474
        !          4066: <        BNE  XR,=NULLS,SDF08  SKIP IF NON-NULL
        !          4067: <        BZE  WB,SDF09         IGNORE NULL IF CASE OF NO LOCALS
        !          4068: ---
        !          4069: >        BNZ  WA,SDF07         SKIP IF COMMA FOUND
        !          4070: >        BNZ  XSCNB,SDF14      FAIL IF BAD BLANK, OK IF LAST LOC
        !          4071: 10676,10677c9478,9479
        !          4072: < SDF08  JSR  GTNVR            GET VRBLK POINTER
        !          4073: <        PPM  SDF07            LOOP BACK TO IGNORE NULL NAME
        !          4074: ---
        !          4075: > SDF07  JSR  GTNVR            GET VRBLK POINTER
        !          4076: >        PPM  SDF08            IGNORE NULL NAME
        !          4077: 10680c9482,9487
        !          4078: <        BNZ  WA,SDF07         LOOP BACK IF STOPPED BY A COMMA
        !          4079: ---
        !          4080: >        BNZ  WA,SDF06         LOOP BACK IF STOPPED BY A COMMA
        !          4081: >        BRN  SDF09            JUMP FOR END OF STRING
        !          4082: > *
        !          4083: > *      NULL LOCAL
        !          4084: > *
        !          4085: > SDF08  BNZ  WA,SDF06         LOOP IF COMMA AFTER NULL LOCAL
        !          4086: 10691c9498
        !          4087: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          4088: ---
        !          4089: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          4090: 10734c9541,9545
        !          4091: < SDF13  ERB  086,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL
        !          4092: ---
        !          4093: > SDF13  ERB  097,DEFINE FUNCTION ENTRY POINT IS NOT DEFINED LABEL
        !          4094: > *
        !          4095: > *      ERRONEOUS ARG OR LOCAL
        !          4096: > *
        !          4097: > SDF14  ERB  098,BAD BLANK OR MISSING RIGHT PAREN IN DEFINE ARG
        !          4098: 10742,10744c9553,9573
        !          4099: <        ERR  087,DETACH ARGUMENT IS NOT APPROPRIATE NAME
        !          4100: <        JSR  DTACH            DETACH I/O ASSOCIATION FROM NAME
        !          4101: <        BRN  EXNUL            RETURN NULL RESULT
        !          4102: ---
        !          4103: >        ERR  099,DETACH ARGUMENT IS NOT APPROPRIATE NAME
        !          4104: >        MOV  WA,-(XS)         KEEP OFFSET
        !          4105: >        ZER  SDETF            CLEAR FAIL FLAG
        !          4106: >        MOV  =TRTIN,WB        TRACE TYPE
        !          4107: >        ZER  XR               REMOVE TRBLK
        !          4108: >        JSR  TRCHN            REMOVE ANY INPUT ASSOCIATION
        !          4109: >        PPM  SDET1            SKIP IF NO INPUT TRBLK
        !          4110: >        MNZ  SDETF            NOTE TRBLK REMOVED
        !          4111: > *
        !          4112: > *      REPEAT FOR OUTPUT TRBLK
        !          4113: > *
        !          4114: > SDET1  MOV  (XS)+,WA         RECOVER OFFSET
        !          4115: >        MOV  =TRTOU,WB        TRTYP
        !          4116: >        JSR  TRCHN            REMOVE ANY OUTPUT ASSOCIATION
        !          4117: >        PPM  SDET2            SKIP IF NO TRBLK
        !          4118: >        BRN  EXNUL            SUCCEED
        !          4119: > *
        !          4120: > *      CHECK AT LEAST ONE TRBLK REMOVED
        !          4121: > *
        !          4122: > SDET2  BNZ  SDETF,EXNUL      SUCCEED IF SO
        !          4123: >        BRN  EXFAL            ELSE FAIL
        !          4124: 10761,10762c9590,9591
        !          4125: <        ERR  088,DUMP ARGUMENT IS NOT INTEGER
        !          4126: <        ERR  089,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4127: ---
        !          4128: >        ERR  100,DUMP ARGUMENT IS NOT INTEGER
        !          4129: >        ERR  101,DUMP ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4130: 10771c9600
        !          4131: <        ERR  090,DUPL SECOND ARGUMENT IS NOT INTEGER
        !          4132: ---
        !          4133: >        ERR  102,DUPL SECOND ARGUMENT IS NOT INTEGER
        !          4134: 10816c9645
        !          4135: <        ERR  091,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN
        !          4136: ---
        !          4137: >        ERR  103,DUPL FIRST ARGUMENT IS NOT STRING OR PATTERN
        !          4138: 10848,10850c9677,9685
        !          4139: <        JSR  IOFCB            CALL FCBLK ROUTINE
        !          4140: <        ERR  092,EJECT ARGUMENT IS NOT A SUITABLE NAME
        !          4141: <        PPM  SEJC1            NULL ARGUMENT
        !          4142: ---
        !          4143: >        MOV  (XS)+,WB         GET ARGUMENT
        !          4144: >        MOV  WB,-(XS)         RESTACK IT
        !          4145: >        JSR  GTSTG            CONVERT TO STRING
        !          4146: >        PPM  SEJC2            FAIL IF CANT
        !          4147: >        BZE  WA,SEJC1         SKIP IF NULL STRING
        !          4148: >        MOV  WB,-(XS)         RESTACK ORIGINAL ARG
        !          4149: >        JSR  IOFTG            CALL FILETAG ROUTINE
        !          4150: >        PPM  SEJC2            FAIL
        !          4151: >        BZE  WA,EXFAL         FAIL IF NOT ASSOCIATED
        !          4152: 10852,10854c9687,9688
        !          4153: <        ERR  093,EJECT FILE DOES NOT EXIST
        !          4154: <        ERR  094,EJECT FILE DOES NOT PERMIT PAGE EJECT
        !          4155: <        ERR  095,EJECT CAUSED NON-RECOVERABLE OUTPUT ERROR
        !          4156: ---
        !          4157: >        PPM  EXFAL            FAIL RETURN
        !          4158: >        PPM  EROSI            ERROR RETURN
        !          4159: 10859a9694,9695
        !          4160: >        PPM  EXFAL            FAIL RETURN
        !          4161: >        PPM  EROSI            ERROR RETURN
        !          4162: 10860a9697,9700
        !          4163: > *
        !          4164: > *      ERROR POINT
        !          4165: > *
        !          4166: > SEJC2  ERB  104,EJECT ARGUMENT IS NOT A SUITABLE FILETAG
        !          4167: 10866,10873c9706,9709
        !          4168: <        JSR  IOFCB            CALL FCBLK ROUTINE
        !          4169: <        ERR  096,ENDFILE ARGUMENT IS NOT A SUITABLE NAME
        !          4170: <        ERR  097,ENDFILE ARGUMENT IS NULL
        !          4171: <        JSR  SYSEN            CALL ENDFILE ROUTINE
        !          4172: <        ERR  098,ENDFILE FILE DOES NOT EXIST
        !          4173: <        ERR  099,ENDFILE FILE DOES NOT PERMIT ENDFILE
        !          4174: <        ERR  100,ENDFILE CAUSED NON-RECOVERABLE OUTPUT ERROR
        !          4175: <        MOV  XL,WB            REMEMBER VRBLK PTR FROM IOFCB CALL
        !          4176: ---
        !          4177: >        JSR  GTSTG            CONVERT SECOND ARG TO STRING
        !          4178: >        ERR  105,ENDFILE SECOND ARGUMENT IS NOT A STRING
        !          4179: >        BNZ  WA,SENF1         SKIP IF NON NULL SECOND ARG
        !          4180: >        ZER  XR               0 IF NULL
        !          4181: 10875c9711
        !          4182: < *      LOOP TO FIND TRTRF BLOCK
        !          4183: ---
        !          4184: > *      NOW PROCESS FILETAG
        !          4185: 10877,10909c9713,9728
        !          4186: < SENF1  MOV  XL,XR            COPY POINTER
        !          4187: <        MOV  TRVAL(XR),XR     CHAIN ALONG
        !          4188: <        BNE  (XR),=B$TRT,EXNUL SKIP OUT IF CHAIN END
        !          4189: <        BNE  TRTYP(XR),=TRTFC,SENF1 LOOP IF NOT FOUND
        !          4190: <        MOV  TRVAL(XR),TRVAL(XL) REMOVE TRTRF
        !          4191: <        MOV  TRTRF(XR),ENFCH  POINT TO HEAD OF IOCHN
        !          4192: <        MOV  TRFPT(XR),WC     POINT TO FCBLK
        !          4193: <        MOV  WB,XR            FILEARG1 VRBLK FROM IOFCB
        !          4194: <        JSR  SETVR            RESET IT
        !          4195: <        MOV  =R$FCB,XL        PTR TO HEAD OF FCBLK CHAIN
        !          4196: <        SUB  *NUM02,XL        ADJUST READY TO ENTER LOOP
        !          4197: < *
        !          4198: < *      FIND FCBLK
        !          4199: < *
        !          4200: < SENF2  MOV  XL,XR            COPY PTR
        !          4201: <        MOV  2(XL),XL         GET NEXT LINK
        !          4202: <        BZE  XL,SENF4         STOP IF CHAIN END
        !          4203: <        BEQ  3(XL),WC,SENF3   JUMP IF FCBLK FOUND
        !          4204: <        BRN  SENF2            LOOP
        !          4205: < *
        !          4206: < *      REMOVE FCBLK
        !          4207: < *
        !          4208: < SENF3  MOV  2(XL),2(XR)      DELETE FCBLK FROM CHAIN
        !          4209: < *
        !          4210: < *      LOOP WHICH DETACHES ALL VBLS ON IOCHN CHAIN
        !          4211: < *
        !          4212: < SENF4  MOV  ENFCH,XL         GET CHAIN HEAD
        !          4213: <        BZE  XL,EXNUL         FINISHED IF CHAIN END
        !          4214: <        MOV  TRTRF(XL),ENFCH  CHAIN ALONG
        !          4215: <        MOV  IONMO(XL),WA     NAME OFFSET
        !          4216: <        MOV  IONMB(XL),XL     NAME BASE
        !          4217: <        JSR  DTACH            DETACH NAME
        !          4218: <        BRN  SENF4            LOOP TILL DONE
        !          4219: ---
        !          4220: > SENF1  MOV  XR,SENFR         KEEP SECOND ARG
        !          4221: >        JSR  IOFTG            CALL FILETAG PROC (WB = VRBLK PTR)
        !          4222: >        ERR  106,ENDFILE FIRST ARGUMENT IS NOT A SUITABLE FILETAG
        !          4223: >        BZE  WA,EXFAL         FAIL IF NO IOTAG
        !          4224: >        MOV  SENFR,XR         RECOVER SECOND ARG
        !          4225: >        JSR  SYSEN            CALL ENDFILE ROUTINE
        !          4226: >        PPM  EXFAL            FAIL RETURN
        !          4227: >        PPM  EROSI            ERROR RETURN
        !          4228: >        BNZ  WA,EXNUL         RETURN NULL IF NO FILE CLOSURE
        !          4229: >        MOV  WB,XL            POINT TO FILETAG VRBLK
        !          4230: >        MOV  *VRVAL,WA        OFFSET TO VALUE FIELD
        !          4231: >        ZER  XR               FOR TRBLK REMOVAL
        !          4232: >        MOV  =TRTIO,WB        TRTYP
        !          4233: >        JSR  TRCHN            REMOVE TRBLK
        !          4234: >        PPM  EXFAL            (CANT FAIL HERE)
        !          4235: >        BRN  EXNUL            RETURN NULL
        !          4236: 10916,10917c9735,9736
        !          4237: <        ERR  101,EQ FIRST ARGUMENT IS NOT NUMERIC
        !          4238: <        ERR  102,EQ SECOND ARGUMENT IS NOT NUMERIC
        !          4239: ---
        !          4240: >        ERR  107,EQ FIRST ARGUMENT IS NOT NUMERIC
        !          4241: >        ERR  108,EQ SECOND ARGUMENT IS NOT NUMERIC
        !          4242: 10928c9747
        !          4243: <        ERR  103,EVAL ARGUMENT IS NOT EXPRESSION
        !          4244: ---
        !          4245: >        ERR  109,EVAL ARGUMENT IS NOT EXPRESSION
        !          4246: 10963c9782
        !          4247: <        ERR  104,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING
        !          4248: ---
        !          4249: >        ERR  110,EXIT ARGUMENT IS NOT SUITABLE INTEGER OR STRING
        !          4250: 10969d9787
        !          4251: <        MOV  R$FCB,WB         GET FCBLK CHAIN HEADER
        !          4252: 10973a9792
        !          4253: >        MOV  =KVCOD,WA        VALUE OF CODE KEYWORD
        !          4254: 10975,10976c9794,9795
        !          4255: <        ERR  105,EXIT ACTION NOT AVAILABLE IN THIS IMPLEMENTATION
        !          4256: <        ERR  106,EXIT ACTION CAUSED IRRECOVERABLE ERROR
        !          4257: ---
        !          4258: >        PPM  EXFAL            FAIL RETURN
        !          4259: >        PPM  EROSI            ERROR RETURN
        !          4260: 10978c9797
        !          4261: <        ZER  GBCNT            RESUMING EXECUTION SO RESET
        !          4262: ---
        !          4263: >        ZER  GBCNT            RESUMING EXECUTION SO.
        !          4264: 10984c9803
        !          4265: < SEXT2  MFI  WC               GET VALUE IN WORK REG
        !          4266: ---
        !          4267: > SEXT2  MFI  WC               GET VALUE IN WORK REGISTER
        !          4268: 10989c9808
        !          4269: <        MOV  (XS)+,WC         RESTORE VALUE
        !          4270: ---
        !          4271: >        MOV  (XS)+,WA         RESTORE VALUE
        !          4272: 10991c9810
        !          4273: < *      DEAL WITH HEADER OPTION (FIDDLED BY PRPAR)
        !          4274: ---
        !          4275: > *      DEAL WITH HEADER OPTIONS (FIDDLED BY PRPAR)
        !          4276: 10999c9818
        !          4277: < SEXT4  JSR  SYSTM            GET EXECUTION TIME START (SGD11)
        !          4278: ---
        !          4279: > SEXT4  JSR  SYSTM            GET RECOMMENCEMENT TIME
        !          4280: 11004a9824,9825
        !          4281: > .IF    .CNFN
        !          4282: > .ELSE
        !          4283: 11006a9828,9848
        !          4284: > *      FENCE
        !          4285: > *
        !          4286: > S$FNC  ENT                   ENTRY POINT
        !          4287: >        MOV  =P$FNC,WB        SET PCODE FOR P$FNC
        !          4288: >        ZER  XR               P0BLK
        !          4289: >        JSR  PBILD            BUILD P$FNC NODE
        !          4290: >        MOV  XR,XL            SAVE POINTER TO IT
        !          4291: >        MOV  (XS)+,XR         GET ARGUMENT
        !          4292: >        JSR  GTPAT            CONVERT TO PATTERN
        !          4293: >        ERR  180,FENCE ARGUMENT IS NOT PATTERN
        !          4294: >        JSR  PCONC            CONCATENATE TO P$FNC NODE
        !          4295: >        MOV  XR,XL            SAVE PTR TO CONCATENATED PATTERN
        !          4296: >        MOV  =P$FNA,WB        SET FOR P$FNA PCODE
        !          4297: >        ZER  XR               P0BLK
        !          4298: >        JSR  PBILD            CONSTRUCT P$FNA NODE
        !          4299: >        MOV  XL,PTHEN(XR)     SET PATTERN AS PTHEN
        !          4300: >        MOV  XR,-(XS)         SET AS RESULT
        !          4301: >        BRN  EXITS            DO NEXT CODE WORD
        !          4302: >        EJC
        !          4303: > .FI
        !          4304: > *
        !          4305: 11011c9853
        !          4306: <        ERR  107,FIELD SECOND ARGUMENT IS NOT INTEGER
        !          4307: ---
        !          4308: >        ERR  255,FIELD SECOND ARGUMENT IS NOT INTEGER
        !          4309: 11031c9873
        !          4310: < SFLD1  ERB  108,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME
        !          4311: ---
        !          4312: > SFLD1  ERB  254,FIELD FIRST ARGUMENT IS NOT DATATYPE NAME
        !          4313: 11034,11053d9875
        !          4314: < *      FENCE
        !          4315: < *
        !          4316: < S$FNC  ENT                   ENTRY POINT
        !          4317: <        MOV  =P$FNC,WB        SET PCODE FOR P$FNC
        !          4318: <        ZER  XR               P0BLK
        !          4319: <        JSR  PBILD            BUILD P$FNC NODE
        !          4320: <        MOV  XR,XL            SAVE POINTER TO IT
        !          4321: <        MOV  (XS)+,XR         GET ARGUMENT
        !          4322: <        JSR  GTPAT            CONVERT TO PATTERN
        !          4323: <        ERR  259,FENCE ARGUMENT IS NOT PATTERN
        !          4324: <        JSR  PCONC            CONCATENATE TO P$FNC NODE
        !          4325: <        MOV  XR,XL            SAVE PTR TO CONCATENATED PATTERN
        !          4326: <        MOV  =P$FNA,WB        SET FOR P$FNA PCODE
        !          4327: <        ZER  XR               P0BLK
        !          4328: <        JSR  PBILD            CONSTRUCT P$FNA NODE
        !          4329: <        MOV  XL,PTHEN(XR)     SET PATTERN AS PTHEN
        !          4330: <        MOV  XR,-(XS)         SET AS RESULT
        !          4331: <        BRN  EXITS            DO NEXT CODE WORD
        !          4332: <        EJC
        !          4333: < *
        !          4334: 11058,11059c9880,9881
        !          4335: <        ERR  109,GE FIRST ARGUMENT IS NOT NUMERIC
        !          4336: <        ERR  110,GE SECOND ARGUMENT IS NOT NUMERIC
        !          4337: ---
        !          4338: >        ERR  111,GE FIRST ARGUMENT IS NOT NUMERIC
        !          4339: >        ERR  112,GE SECOND ARGUMENT IS NOT NUMERIC
        !          4340: 11063d9884
        !          4341: <        EJC
        !          4342: 11069,11070c9890,9891
        !          4343: <        ERR  111,GT FIRST ARGUMENT IS NOT NUMERIC
        !          4344: <        ERR  112,GT SECOND ARGUMENT IS NOT NUMERIC
        !          4345: ---
        !          4346: >        ERR  113,GT FIRST ARGUMENT IS NOT NUMERIC
        !          4347: >        ERR  114,GT SECOND ARGUMENT IS NOT NUMERIC
        !          4348: 11079,11087c9900,9913
        !          4349: <        MOV  (XS)+,XR         GET THIRD ARG
        !          4350: <        MOV  (XS)+,XL         GET SECOND ARG
        !          4351: <        MOV  (XS)+,WA         GET FIRST ARG
        !          4352: <        JSR  SYSHS            ENTER SYSHS ROUTINE
        !          4353: <        ERR  254,ERRONEOUS ARGUMENT FOR HOST
        !          4354: <        ERR  255,ERROR DURING EXECUTION OF HOST
        !          4355: <        PPM  SHST1            STORE HOST STRING
        !          4356: <        PPM  EXNUL            RETURN NULL RESULT
        !          4357: <        PPM  EXIXR            RETURN XR
        !          4358: ---
        !          4359: >        JSR  GTSTG            CONVERT ARG TO STRING
        !          4360: >        ERR  115,ERRONEOUS THIRD ARGUMENT FOR HOST
        !          4361: >        MOV  WA,WB            KEEP LENGTH
        !          4362: >        MOV  XR,WC            KEEP THIRD ARG
        !          4363: >        JSR  GTSTG            CONVERT ARG TO STRING
        !          4364: >        ERR  116,ERRONEOUS SECOND ARGUMENT FOR HOST
        !          4365: >        ORB  WA,WB            NON ZERO UNLESS TWO ARGS NULL
        !          4366: >        MOV  XR,XL            KEEP SECOND ARG
        !          4367: >        JSR  GTSTG            CONVERT ARG TO STRING
        !          4368: >        ERR  117,ERRONEOUS FIRST ARGUMENT FOR HOST
        !          4369: >        ORB  WA,WB            NON ZERO UNLESS ALL ARGS NULL
        !          4370: >        MOV  XR,WA            KEEP FIRST ARG
        !          4371: >        MOV  WC,XR            GET THIRD ARG
        !          4372: >        JSR  SYSHS            CALL SYSHS ROUTINE
        !          4373: 11089,11093c9915,9916
        !          4374: < *
        !          4375: < *      RETURN HOST STRING
        !          4376: < *
        !          4377: < SHST1  BZE  XL,EXNUL         NULL STRING IF SYSHS UNCOOPERATIVE
        !          4378: <        MOV  SCLEN(XL),WA     LENGTH
        !          4379: ---
        !          4380: >        PPM  EROSI            ERROR RETURN
        !          4381: >        MOV  SCLEN(XL),WA     LENGTH OF RETURNED STRING
        !          4382: 11115,11120c9938,9941
        !          4383: <        ERR  113,INPUT THIRD ARGUMENT IS NOT A STRING
        !          4384: <        ERR  114,INAPPROPRIATE SECOND ARGUMENT FOR INPUT
        !          4385: <        ERR  115,INAPPROPRIATE FIRST ARGUMENT FOR INPUT
        !          4386: <        ERR  116,INAPPROPRIATE FILE SPECIFICATION FOR INPUT
        !          4387: <        PPM  EXFAL            FAIL IF FILE DOES NOT EXIST
        !          4388: <        ERR  117,INPUT FILE CANNOT BE READ
        !          4389: ---
        !          4390: >        ERR  118,INPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING
        !          4391: >        ERR  119,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR INPUT
        !          4392: >        ERR  120,INAPPROPRIATE FIRST ARGUMENT FOR INPUT
        !          4393: >        PPM  EXFAL            FAIL RETURN
        !          4394: 11122d9942
        !          4395: <        EJC
        !          4396: 11124a9945
        !          4397: >        EJC
        !          4398: 11131c9952
        !          4399: <        ERR  277,INSERT THIRD ARGUMENT NOT INTEGER
        !          4400: ---
        !          4401: >        ERR  121,INSERT THIRD ARGUMENT NOT INTEGER
        !          4402: 11135c9956
        !          4403: <        ERR  278,INSERT SECOND ARGUMENT NOT INTEGER
        !          4404: ---
        !          4405: >        ERR  122,INSERT SECOND ARGUMENT NOT INTEGER
        !          4406: 11142c9963
        !          4407: <        ERB  279,INSERT FIRST ARGUMENT NOT BUFFER
        !          4408: ---
        !          4409: >        ERB  123,INSERT FIRST ARGUMENT NOT BUFFER
        !          4410: 11147c9968
        !          4411: <        ERR  280,INSERT FOURTH ARGUMENT NOT A STRING
        !          4412: ---
        !          4413: >        ERR  124,INSERT FOURTH ARGUMENT NOT A STRING
        !          4414: 11150d9970
        !          4415: <        EJC
        !          4416: 11151a9972
        !          4417: >        EJC
        !          4418: 11162a9984,10000
        !          4419: > *      ITC
        !          4420: > *
        !          4421: > S$ITC  ENT
        !          4422: >        JSR  GTSMI            OBTAIN ARG AS AN INTEGER
        !          4423: >        ERR  125,ITC ARGUMENT IS NOT A SMALL INTEGER
        !          4424: >        PPM  EXFAL            FAIL IF OUT OF RANGE
        !          4425: >        BGE  WC,=CFP$A,EXFAL  FURTHER RANGE CHECK
        !          4426: >        MOV  WC,WB            PRESERVE WC
        !          4427: >        MOV  =NUM01,WA        FOR SCBLK REQUEST
        !          4428: >        JSR  ALOCS            BUILD STRING BLOCK
        !          4429: >        MOV  XR,XL            COPY STRING PTR
        !          4430: >        PSC  XL               READY TO STORE CHAR
        !          4431: >        SCH  WB,(XL)          STORE IT
        !          4432: >        ZER  XL               CLEAR GARBAGE
        !          4433: >        BRN  EXIXR            RETURN STRING RESULT
        !          4434: >        EJC
        !          4435: > *
        !          4436: 11200,11201c10038,10039
        !          4437: <        ERR  118,LE FIRST ARGUMENT IS NOT NUMERIC
        !          4438: <        ERR  119,LE SECOND ARGUMENT IS NOT NUMERIC
        !          4439: ---
        !          4440: >        ERR  126,LE FIRST ARGUMENT IS NOT NUMERIC
        !          4441: >        ERR  127,LE SECOND ARGUMENT IS NOT NUMERIC
        !          4442: 11213,11214c10051,10052
        !          4443: <        ERR  120,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4444: <        ERR  121,LEN ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4445: ---
        !          4446: >        ERR  128,LEN ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4447: >        ERR  129,LEN ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4448: 11222,11223c10060,10061
        !          4449: <        ERR  122,LEQ FIRST ARGUMENT IS NOT STRING
        !          4450: <        ERR  123,LEQ SECOND ARGUMENT IS NOT STRING
        !          4451: ---
        !          4452: >        ERR  130,LEQ FIRST ARGUMENT IS NOT STRING
        !          4453: >        ERR  131,LEQ SECOND ARGUMENT IS NOT STRING
        !          4454: 11233,11234c10071,10072
        !          4455: <        ERR  124,LGE FIRST ARGUMENT IS NOT STRING
        !          4456: <        ERR  125,LGE SECOND ARGUMENT IS NOT STRING
        !          4457: ---
        !          4458: >        ERR  132,LGE FIRST ARGUMENT IS NOT STRING
        !          4459: >        ERR  133,LGE SECOND ARGUMENT IS NOT STRING
        !          4460: 11244,11245c10082,10083
        !          4461: <        ERR  126,LGT FIRST ARGUMENT IS NOT STRING
        !          4462: <        ERR  127,LGT SECOND ARGUMENT IS NOT STRING
        !          4463: ---
        !          4464: >        ERR  134,LGT FIRST ARGUMENT IS NOT STRING
        !          4465: >        ERR  135,LGT SECOND ARGUMENT IS NOT STRING
        !          4466: 11255,11256c10093,10094
        !          4467: <        ERR  128,LLE FIRST ARGUMENT IS NOT STRING
        !          4468: <        ERR  129,LLE SECOND ARGUMENT IS NOT STRING
        !          4469: ---
        !          4470: >        ERR  136,LLE FIRST ARGUMENT IS NOT STRING
        !          4471: >        ERR  137,LLE SECOND ARGUMENT IS NOT STRING
        !          4472: 11266,11267c10104,10105
        !          4473: <        ERR  130,LLT FIRST ARGUMENT IS NOT STRING
        !          4474: <        ERR  131,LLT SECOND ARGUMENT IS NOT STRING
        !          4475: ---
        !          4476: >        ERR  138,LLT FIRST ARGUMENT IS NOT STRING
        !          4477: >        ERR  139,LLT SECOND ARGUMENT IS NOT STRING
        !          4478: 11277,11278c10115,10116
        !          4479: <        ERR  132,LNE FIRST ARGUMENT IS NOT STRING
        !          4480: <        ERR  133,LNE SECOND ARGUMENT IS NOT STRING
        !          4481: ---
        !          4482: >        ERR  140,LNE FIRST ARGUMENT IS NOT STRING
        !          4483: >        ERR  141,LNE SECOND ARGUMENT IS NOT STRING
        !          4484: 11282,11309d10119
        !          4485: <        EJC
        !          4486: < *
        !          4487: < *      LOCAL
        !          4488: < *
        !          4489: < S$LOC  ENT                   ENTRY POINT
        !          4490: <        JSR  GTSMI            GET SECOND ARGUMENT (LOCAL NUMBER)
        !          4491: <        ERR  134,LOCAL SECOND ARGUMENT IS NOT INTEGER
        !          4492: <        PPM  EXFAL            FAIL IF OUT OF RANGE
        !          4493: <        MOV  XR,WB            SAVE LOCAL NUMBER
        !          4494: <        MOV  (XS)+,XR         LOAD FIRST ARGUMENT
        !          4495: <        JSR  GTNVR            POINT TO VRBLK
        !          4496: <        PPM  SLOC1            JUMP IF NOT VARIABLE NAME
        !          4497: <        MOV  VRFNC(XR),XR     ELSE LOAD FUNCTION POINTER
        !          4498: <        BNE  (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED
        !          4499: < *
        !          4500: < *      HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME
        !          4501: < *
        !          4502: <        BZE  WB,EXFAL         FAIL IF SECOND ARG IS ZERO
        !          4503: <        BGT  WB,PFNLO(XR),EXFAL OR TOO LARGE
        !          4504: <        ADD  FARGS(XR),WB     ELSE ADJUST OFFSET TO INCLUDE ARGS
        !          4505: <        WTB  WB               CONVERT TO BYTES
        !          4506: <        ADD  WB,XR            POINT TO LOCAL POINTER
        !          4507: <        MOV  PFAGB(XR),XR     LOAD VRBLK POINTER
        !          4508: <        BRN  EXVNM            EXIT BUILDING NMBLK
        !          4509: < *
        !          4510: < *      HERE IF FIRST ARGUMENT IS NO GOOD
        !          4511: < *
        !          4512: < SLOC1  ERB  135,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME
        !          4513: 11318c10128
        !          4514: <        ERR  136,LOAD SECOND ARGUMENT IS NOT STRING
        !          4515: ---
        !          4516: >        ERR  142,LOAD SECOND ARGUMENT IS NOT STRING
        !          4517: 11321,11322c10131,10132
        !          4518: <        ERR  137,LOAD FIRST ARGUMENT IS NOT STRING
        !          4519: <        ERR  138,LOAD FIRST ARGUMENT IS NULL
        !          4520: ---
        !          4521: >        ERR  143,LOAD FIRST ARGUMENT IS NOT STRING
        !          4522: >        ERR  144,LOAD FIRST ARGUMENT IS NULL
        !          4523: 11329c10139
        !          4524: <        ERB  139,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN
        !          4525: ---
        !          4526: >        ERB  145,LOAD FIRST ARGUMENT IS MISSING A LEFT PAREN
        !          4527: 11334c10144
        !          4528: <        ERR  140,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME
        !          4529: ---
        !          4530: >        ERR  146,LOAD FIRST ARGUMENT HAS NULL FUNCTION NAME
        !          4531: 11345c10155
        !          4532: <        ERB  141,LOAD FIRST ARGUMENT IS MISSING A RIGHT PAREN
        !          4533: ---
        !          4534: >        ERB  147,BAD BLANK OR MISSING RIGHT PAREN IN LOAD ARG
        !          4535: 11355c10165
        !          4536: <        MOV  =NUM01,WB        SET STRING CODE IN CASE
        !          4537: ---
        !          4538: >        MOV  =NUM01,WB        SET STRING CODE IN CASE (1)
        !          4539: 11363a10174
        !          4540: >        ICV  WB               ELSE SET CODE FOR REAL (3)
        !          4541: 11366,11367c10177
        !          4542: <        MOV  (XS),XR          ELSE RELOAD STRING POINTER
        !          4543: <        ICV  WB               SET CODE FOR REAL (3)
        !          4544: ---
        !          4545: >        MOV  (XS),XR          RELOAD STRING POINTER
        !          4546: 11371a10182,10189
        !          4547: >        ICV  WB               SET CODE FOR BUFFER (4)
        !          4548: > .IF    .CNBF
        !          4549: > .ELSE
        !          4550: >        MOV  (XS),XR          RELOAD STRING POINTER
        !          4551: >        MOV  =SCBUF,XL        POINT TO /BUFFER/
        !          4552: >        JSR  IDENT            CHECK FOR MATCH
        !          4553: >        PPM  SLOD4            JUMP IF MATCH
        !          4554: > .FI
        !          4555: 11395c10213
        !          4556: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          4557: ---
        !          4558: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          4559: 11420,11421c10238,10239
        !          4560: <        ERR  142,LOAD FUNCTION DOES NOT EXIST
        !          4561: <        ERR  143,LOAD FUNCTION CAUSED INPUT ERROR DURING LOAD
        !          4562: ---
        !          4563: >        PPM  EXFAL            FAIL RETURN
        !          4564: >        PPM  EROSI            ERROR RETURN
        !          4565: 11429a10248,10275
        !          4566: > *      LOCAL
        !          4567: > *
        !          4568: > S$LOC  ENT                   ENTRY POINT
        !          4569: >        JSR  GTSMI            GET SECOND ARGUMENT (LOCAL NUMBER)
        !          4570: >        ERR  256,LOCAL SECOND ARGUMENT IS NOT INTEGER
        !          4571: >        PPM  EXFAL            FAIL IF OUT OF RANGE
        !          4572: >        MOV  XR,WB            SAVE LOCAL NUMBER
        !          4573: >        MOV  (XS)+,XR         LOAD FIRST ARGUMENT
        !          4574: >        JSR  GTNVR            POINT TO VRBLK
        !          4575: >        PPM  SLOC1            JUMP IF NOT VARIABLE NAME
        !          4576: >        MOV  VRFNC(XR),XR     ELSE LOAD FUNCTION POINTER
        !          4577: >        BNE  (XR),=B$PFC,SLOC1 JUMP IF NOT PROGRAM DEFINED
        !          4578: > *
        !          4579: > *      HERE IF WE HAVE A PROGRAM DEFINED FUNCTION NAME
        !          4580: > *
        !          4581: >        BZE  WB,EXFAL         FAIL IF SECOND ARG IS ZERO
        !          4582: >        BGT  WB,PFNLO(XR),EXFAL OR TOO LARGE
        !          4583: >        ADD  FARGS(XR),WB     ELSE ADJUST OFFSET TO INCLUDE ARGS
        !          4584: >        WTB  WB               CONVERT TO BYTES
        !          4585: >        ADD  WB,XR            POINT TO LOCAL POINTER
        !          4586: >        MOV  PFAGB(XR),XR     LOAD VRBLK POINTER
        !          4587: >        BRN  EXVNM            EXIT BUILDING NMBLK
        !          4588: > *
        !          4589: > *      HERE IF FIRST ARGUMENT IS NO GOOD
        !          4590: > *
        !          4591: > SLOC1  ERB  257,LOCAL FIRST ARG IS NOT A PROGRAM FUNCTION NAME
        !          4592: >        EJC
        !          4593: > *
        !          4594: 11434c10280
        !          4595: <        ERR  144,LPAD THIRD ARGUMENT NOT A STRING
        !          4596: ---
        !          4597: >        ERR  148,LPAD THIRD ARGUMENT NOT A STRING
        !          4598: 11438c10284
        !          4599: <        ERR  145,LPAD SECOND ARGUMENT IS NOT INTEGER
        !          4600: ---
        !          4601: >        ERR  149,LPAD SECOND ARGUMENT IS NOT INTEGER
        !          4602: 11444c10290
        !          4603: <        ERR  146,LPAD FIRST ARGUMENT IS NOT STRING
        !          4604: ---
        !          4605: >        ERR  150,LPAD FIRST ARGUMENT IS NOT STRING
        !          4606: 11485,11486c10331,10332
        !          4607: <        ERR  147,LT FIRST ARGUMENT IS NOT NUMERIC
        !          4608: <        ERR  148,LT SECOND ARGUMENT IS NOT NUMERIC
        !          4609: ---
        !          4610: >        ERR  151,LT FIRST ARGUMENT IS NOT NUMERIC
        !          4611: >        ERR  152,LT SECOND ARGUMENT IS NOT NUMERIC
        !          4612: 11496,11497c10342,10343
        !          4613: <        ERR  149,NE FIRST ARGUMENT IS NOT NUMERIC
        !          4614: <        ERR  150,NE SECOND ARGUMENT IS NOT NUMERIC
        !          4615: ---
        !          4616: >        ERR  153,NE FIRST ARGUMENT IS NOT NUMERIC
        !          4617: >        ERR  154,NE SECOND ARGUMENT IS NOT NUMERIC
        !          4618: 11510c10356
        !          4619: <        ERR  151,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION
        !          4620: ---
        !          4621: >        ERR  155,NOTANY ARGUMENT IS NOT STRING OR EXPRESSION
        !          4622: 11518,11519c10364,10365
        !          4623: <        ERR  152,OPSYN THIRD ARGUMENT IS NOT INTEGER
        !          4624: <        ERR  153,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4625: ---
        !          4626: >        ERR  156,OPSYN THIRD ARGUMENT IS NOT INTEGER
        !          4627: >        ERR  157,OPSYN THIRD ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4628: 11523c10369
        !          4629: <        ERR  154,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME
        !          4630: ---
        !          4631: >        ERR  158,OPSYN SECOND ARG IS NOT NATURAL VARIABLE NAME
        !          4632: 11531c10377
        !          4633: <        ERR  155,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME
        !          4634: ---
        !          4635: >        ERR  159,OPSYN FIRST ARG IS NOT NATURAL VARIABLE NAME
        !          4636: 11574c10420
        !          4637: < SOPS5  ERB  156,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME
        !          4638: ---
        !          4639: > SOPS5  ERB  160,OPSYN FIRST ARG IS NOT CORRECT OPERATOR NAME
        !          4640: 11586c10432
        !          4641: <        MOV  =NUM03,WB        OUTPUT FLAG
        !          4642: ---
        !          4643: >        MOV  =NUM02,WB        OUTPUT FLAG
        !          4644: 11588,11593c10434,10437
        !          4645: <        ERR  157,OUTPUT THIRD ARGUMENT IS NOT A STRING
        !          4646: <        ERR  158,INAPPROPRIATE SECOND ARGUMENT FOR OUTPUT
        !          4647: <        ERR  159,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT
        !          4648: <        ERR  160,INAPPROPRIATE FILE SPECIFICATION FOR OUTPUT
        !          4649: <        PPM  EXFAL            FAIL IF FILE DOES NOT EXIST
        !          4650: <        ERR  161,OUTPUT FILE CANNOT BE WRITTEN TO
        !          4651: ---
        !          4652: >        ERR  161,OUTPUT THIRD ARGUMENT (FILEPROPS) IS NOT A STRING
        !          4653: >        ERR  162,INAPPROPRIATE SECOND ARGUMENT (FILETAG) FOR OUTPUT
        !          4654: >        ERR  163,INAPPROPRIATE FIRST ARGUMENT FOR OUTPUT
        !          4655: >        PPM  EXFAL            FAIL RETURN
        !          4656: 11603,11604c10447,10448
        !          4657: <        ERR  162,POS ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4658: <        ERR  163,POS ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4659: ---
        !          4660: >        ERR  164,POS ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4661: >        ERR  165,POS ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4662: 11617a10462,10463
        !          4663: > .IF    .CNBF
        !          4664: > .ELSE
        !          4665: 11619c10465,10466
        !          4666: <        ERB  164,PROTOTYPE ARGUMENT IS NOT VALID OBJECT
        !          4667: ---
        !          4668: > .FI
        !          4669: >        ERB  166,PROTOTYPE ARGUMENT IS NOT TABLE OR ARRAY
        !          4670: 11657c10504
        !          4671: <        ERR  165,REMDR SECOND ARGUMENT IS NOT INTEGER
        !          4672: ---
        !          4673: >        ERR  167,REMDR SECOND ARGUMENT IS NOT INTEGER
        !          4674: 11668c10515
        !          4675: <        ERB  167,REMDR CAUSED INTEGER OVERFLOW
        !          4676: ---
        !          4677: >        ERB  168,REMDR CAUSED INTEGER OVERFLOW
        !          4678: 11672c10519
        !          4679: < SRM01  ERB  166,REMDR FIRST ARGUMENT IS NOT INTEGER
        !          4680: ---
        !          4681: > SRM01  ERB  169,REMDR FIRST ARGUMENT IS NOT INTEGER
        !          4682: 11684c10531
        !          4683: <        ERR  168,REPLACE THIRD ARGUMENT IS NOT STRING
        !          4684: ---
        !          4685: >        ERR  170,REPLACE THIRD ARGUMENT IS NOT STRING
        !          4686: 11687c10534
        !          4687: <        ERR  169,REPLACE SECOND ARGUMENT IS NOT STRING
        !          4688: ---
        !          4689: >        ERR  171,REPLACE SECOND ARGUMENT IS NOT STRING
        !          4690: 11749c10596
        !          4691: <        ERR  170,REPLACE FIRST ARGUMENT IS NOT STRING
        !          4692: ---
        !          4693: >        ERR  172,REPLACE FIRST ARGUMENT IS NOT STRING
        !          4694: 11768c10615
        !          4695: < SRPL5  ERB  171,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE
        !          4696: ---
        !          4697: > SRPL5  ERB  173,NULL OR UNEQUALLY LONG 2ND, 3RD ARGS TO REPLACE
        !          4698: 11771,11783d10617
        !          4699: < *      REWIND
        !          4700: < *
        !          4701: < S$REW  ENT                   ENTRY POINT
        !          4702: <        JSR  IOFCB            CALL FCBLK ROUTINE
        !          4703: <        ERR  172,REWIND ARGUMENT IS NOT A SUITABLE NAME
        !          4704: <        ERR  173,REWIND ARGUMENT IS NULL
        !          4705: <        JSR  SYSRW            CALL SYSTEM REWIND FUNCTION
        !          4706: <        ERR  174,REWIND FILE DOES NOT EXIST
        !          4707: <        ERR  175,REWIND FILE DOES NOT PERMIT REWIND
        !          4708: <        ERR  176,REWIND CAUSED NON-RECOVERABLE ERROR
        !          4709: <        BRN  EXNUL            EXIT WITH NULL RESULT IF NO ERROR
        !          4710: <        EJC
        !          4711: < *
        !          4712: 11788c10622
        !          4713: <        ERR  177,REVERSE ARGUMENT IS NOT STRING
        !          4714: ---
        !          4715: >        ERR  174,REVERSE ARGUMENT IS NOT STRING
        !          4716: 11810c10644
        !          4717: <        ERR  178,RPAD THIRD ARGUMENT IS NOT STRING
        !          4718: ---
        !          4719: >        ERR  175,RPAD THIRD ARGUMENT IS NOT STRING
        !          4720: 11814c10648
        !          4721: <        ERR  179,RPAD SECOND ARGUMENT IS NOT INTEGER
        !          4722: ---
        !          4723: >        ERR  176,RPAD SECOND ARGUMENT IS NOT INTEGER
        !          4724: 11820c10654
        !          4725: <        ERR  180,RPAD FIRST ARGUMENT IS NOT STRING
        !          4726: ---
        !          4727: >        ERR  177,RPAD FIRST ARGUMENT IS NOT STRING
        !          4728: 11863,11864c10697,10698
        !          4729: <        ERR  181,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4730: <        ERR  182,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4731: ---
        !          4732: >        ERR  178,RTAB ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4733: >        ERR  179,RTAB ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4734: 11872c10706
        !          4735: <        MOV  (XS)+,R$IO2      SAVE THIRD ARG
        !          4736: ---
        !          4737: >        MOV  (XS)+,R$IOL      SAVE THIRD ARG
        !          4738: 11874,11876c10708,10710
        !          4739: <        JSR  IOFCB            CALL FCBLK ROUTINE
        !          4740: <        ERR  291,SET FIRST ARGUMENT IS NOT A SUITABLE NAME
        !          4741: <        ERR  292,SET FIRST ARGUMENT IS NULL
        !          4742: ---
        !          4743: >        JSR  IOFTG            CALL IOTAG ROUTINE
        !          4744: >        ERR  180,SET FIRST ARGUMENT IS NOT A SUITABLE NAME
        !          4745: >        BZE  WA,EXFAL         FAIL IF NO IOTAG
        !          4746: 11878c10712
        !          4747: <        MOV  R$IO2,WC         LOAD THIRD ARG
        !          4748: ---
        !          4749: >        MOV  R$IOL,WC         LOAD THIRD ARG
        !          4750: 11880,11885c10714,10716
        !          4751: <        ERR  293,INAPPROPRIATE SECOND ARGUMENT TO SET
        !          4752: <        ERR  294,INAPPROPRIATE THIRD ARGUMENT TO SET
        !          4753: <        ERR  295,SET FILE DOES NOT EXIST
        !          4754: <        ERR  296,SET FILE DOES NOT PERMIT SETTING FILE POINTER
        !          4755: <        ERR  297,SET CAUSED NON-RECOVERABLE I/O ERROR
        !          4756: <        BRN  EXNUL            OTHERWISEW RETURN NULL
        !          4757: ---
        !          4758: >        PPM  EXFAL            FAILURE RETURN
        !          4759: >        PPM  EROSI            ERROR RETURN
        !          4760: >        BRN  EXNUL            OTHERWISE RETURN NULL
        !          4761: 11889,11899d10719
        !          4762: < *      TAB
        !          4763: < *
        !          4764: < S$TAB  ENT                   ENTRY POINT
        !          4765: <        MOV  =P$TAB,WB        SET PCODE FOR INTEGER ARG CASE
        !          4766: <        MOV  =P$TBD,WA        SET PCODE FOR EXPRESSION ARG CASE
        !          4767: <        JSR  PATIN            CALL COMMON ROUTINE TO BUILD NODE
        !          4768: <        ERR  183,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4769: <        ERR  184,TAB ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4770: <        BRN  EXIXR            RETURN PATTERN NODE
        !          4771: <        EJC
        !          4772: < *
        !          4773: 11906,11907c10726,10727
        !          4774: <        ERR  185,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4775: <        ERR  186,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4776: ---
        !          4777: >        ERR  181,RPOS ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4778: >        ERR  182,RPOS ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4779: 11917a10738
        !          4780: >        PPM  EXFAL            FAIL EMPTY TABLE
        !          4781: 11946c10767
        !          4782: < SSTX2  ERB  187,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL
        !          4783: ---
        !          4784: > SSTX2  ERB  183,SETEXIT ARGUMENT IS NOT LABEL NAME OR NULL
        !          4785: 11955a10777
        !          4786: >        PPM  EXFAL            FAIL EMPTY TABLE
        !          4787: 11967c10789
        !          4788: <        ERR  188,SPAN ARGUMENT IS NOT STRING OR EXPRESSION
        !          4789: ---
        !          4790: >        ERR  184,SPAN ARGUMENT IS NOT STRING OR EXPRESSION
        !          4791: 11974a10797
        !          4792: >        JSR  GTSTG            LOAD STRING ARGUMENT
        !          4793: 11981d10803
        !          4794: < .FI
        !          4795: 11986c10808,10809
        !          4796: <        ERR  189,SIZE ARGUMENT IS NOT STRING
        !          4797: ---
        !          4798: > .FI
        !          4799: >        ERR  185,SIZE ARGUMENT IS NOT STRING
        !          4800: 11996,11997c10819,10821
        !          4801: <        ERR  190,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME
        !          4802: <        ERR  191,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE
        !          4803: ---
        !          4804: >        ERR  186,STOPTR FIRST ARGUMENT IS NOT APPROPRIATE NAME
        !          4805: >        ERR  187,STOPTR SECOND ARGUMENT IS NOT TRACE TYPE
        !          4806: >        PPM  EXFAL            FAIL RETURN
        !          4807: 12005c10829
        !          4808: <        ERR  192,SUBSTR THIRD ARGUMENT IS NOT INTEGER
        !          4809: ---
        !          4810: >        ERR  188,SUBSTR THIRD ARGUMENT IS NOT INTEGER
        !          4811: 12009c10833
        !          4812: <        ERR  193,SUBSTR SECOND ARGUMENT IS NOT INTEGER
        !          4813: ---
        !          4814: >        ERR  189,SUBSTR SECOND ARGUMENT IS NOT INTEGER
        !          4815: 12014a10839
        !          4816: >        JSR  GTSTG            LOAD FIRST ARGUMENT
        !          4817: 12024d10848
        !          4818: < .FI
        !          4819: 12026c10850,10855
        !          4820: <        ERR  194,SUBSTR FIRST ARGUMENT IS NOT STRING
        !          4821: ---
        !          4822: > .FI
        !          4823: >        ERR  190,SUBSTR FIRST ARGUMENT IS NOT STRING
        !          4824: >        MOV  XR,XL            COPY POINTER TO FIRST ARG
        !          4825: > .IF    .CNBF
        !          4826: >        MOV  SBSSV,WC         RELOAD THIRD ARGUMENT
        !          4827: > .ELSE
        !          4828: 12028c10857
        !          4829: < *      MERGE WITH BFBLK OR SCBLK PTR IN XR.  WA HAS LENGTH
        !          4830: ---
        !          4831: > *      MERGE WITH BFBLK OR SCBLK IN XR, LENGTH IN WA
        !          4832: 12030a10860
        !          4833: > .FI
        !          4834: 12032c10862
        !          4835: <        MOV  WA,WC            ELSE GET STRING LENGTH
        !          4836: ---
        !          4837: >        MOV  SCLEN(XL),WC     ELSE GET STRING LENGTH
        !          4838: 12038,12039c10868
        !          4839: < SSUB1  MOV  WA,XL            SAVE STRING LENGTH
        !          4840: <        MOV  WC,WA            SET LENGTH OF SUBSTRING
        !          4841: ---
        !          4842: > SSUB1  MOV  WC,WA            SET LENGTH OF SUBSTRING
        !          4843: 12041,12042c10870
        !          4844: <        BGT  WC,XL,EXFAL      JUMP IF IMPROPER SUBSTRING
        !          4845: <        MOV  XR,XL            COPY POINTER TO FIRST ARG
        !          4846: ---
        !          4847: >        BGT  WC,SCLEN(XL),EXFAL JUMP IF IMPROPER SUBSTRING
        !          4848: 12046a10875,10885
        !          4849: > *      TAB
        !          4850: > *
        !          4851: > S$TAB  ENT                   ENTRY POINT
        !          4852: >        MOV  =P$TAB,WB        SET PCODE FOR INTEGER ARG CASE
        !          4853: >        MOV  =P$TBD,WA        SET PCODE FOR EXPRESSION ARG CASE
        !          4854: >        JSR  PATIN            CALL COMMON ROUTINE TO BUILD NODE
        !          4855: >        ERR  191,TAB ARGUMENT IS NOT INTEGER OR EXPRESSION
        !          4856: >        ERR  192,TAB ARGUMENT IS NEGATIVE OR TOO LARGE
        !          4857: >        BRN  EXIXR            RETURN PATTERN NODE
        !          4858: >        EJC
        !          4859: > *
        !          4860: 12053,12054c10892,10893
        !          4861: <        ERR  195,TABLE ARGUMENT IS NOT INTEGER
        !          4862: <        ERR  196,TABLE ARGUMENT IS OUT OF RANGE
        !          4863: ---
        !          4864: >        ERR  193,TABLE ARGUMENT IS NOT INTEGER
        !          4865: >        ERR  194,TABLE ARGUMENT IS OUT OF RANGE
        !          4866: 12062c10901
        !          4867: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          4868: ---
        !          4869: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          4870: 12101c10940
        !          4871: < STR01  ERB  197,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL
        !          4872: ---
        !          4873: > STR01  ERB  195,TRACE FOURTH ARG IS NOT FUNCTION NAME OR NULL
        !          4874: 12110,12111c10949,10951
        !          4875: <        ERR  198,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME
        !          4876: <        ERR  199,TRACE SECOND ARGUMENT IS NOT TRACE TYPE
        !          4877: ---
        !          4878: >        ERR  196,TRACE FIRST ARGUMENT IS NOT APPROPRIATE NAME
        !          4879: >        ERR  197,TRACE SECOND ARGUMENT IS NOT TRACE TYPE
        !          4880: >        PPM                   UNUSED RETURN
        !          4881: 12125c10965
        !          4882: <        ERR  200,TRIM ARGUMENT IS NOT STRING
        !          4883: ---
        !          4884: >        ERR  198,TRIM ARGUMENT IS NOT STRING
        !          4885: 12142c10982
        !          4886: <        ERR  201,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME
        !          4887: ---
        !          4888: >        ERR  199,UNLOAD ARGUMENT IS NOT NATURAL VARIABLE NAME
        !          4889: 12145a10986,10995
        !          4890: >        EJC
        !          4891: > *
        !          4892: > *      VDIFFER
        !          4893: > *
        !          4894: > S$VDF  ENT                   ENTRY POINT
        !          4895: >        MOV  (XS)+,XR         LOAD SECOND ARGUMENT
        !          4896: >        MOV  (XS),XL          LOAD FIRST ARGUMENT
        !          4897: >        JSR  IDENT            CALL IDENT COMPARISON ROUTINE
        !          4898: >        PPM  EXFAL            FAIL IF IDENT
        !          4899: >        BRN  EXITS            RETURN FIRST ARG IF DIFFER
        !          4900: 12255c11105
        !          4901: <        MOV  TRFPT(XR),XL     GET FILE CTRL BLK PTR OR ZERO
        !          4902: ---
        !          4903: >        MOV  TRTRI(XR),XL     GET TRTIO BLOCK PTR OR 0
        !          4904: 12263c11113,11121
        !          4905: <        JSR  SYSRD            READ NEXT STANDARD INPUT IMAGE
        !          4906: ---
        !          4907: >        BZE  TTINS,ACSA5      SKIP IF NOT TERML STD INPUT
        !          4908: >        JSR  SYSRI            READ FROM TERMINAL
        !          4909: >        PPM  ACS03            END FILE
        !          4910: >        PPM  EROSI            ERROR
        !          4911: >        BRN  ACS07            MERGE
        !          4912: > *
        !          4913: > *      GENUINE STD INPUT FILE
        !          4914: > *
        !          4915: > ACSA5  JSR  SYSRD            READ NEXT STANDARD INPUT IMAGE
        !          4916: 12264a11123
        !          4917: >        PPM  EROSI            ERROR RETURN
        !          4918: 12269c11128,11129
        !          4919: < ACS06  MOV  XL,WA            FCBLK PTR
        !          4920: ---
        !          4921: > ACS06  MOV  TRTAG(XL),WA     OBTAIN IOTAG
        !          4922: >        BZE  WA,ACS03         FAIL IF ENDFILE DONE
        !          4923: 12272c11132
        !          4924: <        MOV  XL,WA            FCBLK PTR
        !          4925: ---
        !          4926: >        MOV  TRTAG(XL),WA     GET IOTAG
        !          4927: 12275,12276c11135
        !          4928: <        PPM  ACS22            ERROR
        !          4929: <        PPM  ACS23            ERROR
        !          4930: ---
        !          4931: >        PPM  ACS22            ERROR RETURN
        !          4932: 12328c11187
        !          4933: <        MTI  KVABE(XR)        ELSE LOAD VALUE AS INTEGER
        !          4934: ---
        !          4935: >        MTI  KVANC(XR)        ELSE LOAD VALUE AS INTEGER
        !          4936: 12338a11198
        !          4937: >        WTB  XR               CONVERT TO OFFSET IN BAUS
        !          4938: 12347c11207
        !          4939: <        BSW  XR,5             SWITCH ON KEYWORD NUMBER
        !          4940: ---
        !          4941: >        BSW  XR,6             SWITCH ON KEYWORD NUMBER
        !          4942: 12349a11210
        !          4943: >        IFF  K$$CD,ACS23      CODE
        !          4944: 12385a11247
        !          4945: >        PPM  EROSI            ERROR RETURN
        !          4946: 12388c11250
        !          4947: < *      ERROR RETURNS
        !          4948: ---
        !          4949: > *      ERROR RETURN
        !          4950: 12391c11253
        !          4951: <        ERB  202,INPUT FROM FILE CAUSED NON-RECOVERABLE ERROR
        !          4952: ---
        !          4953: >        BRN  EROSI            GENERATE ERROR MESSAGE
        !          4954: 12393,12394c11255,11258
        !          4955: < ACS23  MOV  XR,DNAMP         POP UNUSED SCBLK
        !          4956: <        ERB  203,INPUT FILE RECORD HAS INCORRECT FORMAT
        !          4957: ---
        !          4958: > *      ACCESS CODE KEYWORD
        !          4959: > *
        !          4960: > ACS23  LDI  KVCOD            GET CODE VALUE
        !          4961: >        BRN  ACS13            EXIT
        !          4962: 12480c11344
        !          4963: < *      (WA)                  LENGTH REQUIRED IN BYTES
        !          4964: ---
        !          4965: > *      (WA)                  LENGTH REQUIRED IN BAUS
        !          4966: 12514c11378
        !          4967: <        WTB  XR               CONVERT TO BAUS (SGD05)
        !          4968: ---
        !          4969: >        WTB  XR               CONVERT TO BAUS
        !          4970: 12520c11384
        !          4971: <        ERB  204,MEMORY OVERFLOW
        !          4972: ---
        !          4973: >        ERB  200,MEMORY OVERFLOW
        !          4974: 12528c11392
        !          4975: <        BTW  WB               CONVERT BYTES TO WORDS
        !          4976: ---
        !          4977: >        BTW  WB               CONVERT BAUS TO WORDS
        !          4978: 12539c11403
        !          4979: <        WTB  XR               CONVERT TO BAUS (SGD05)
        !          4980: ---
        !          4981: >        WTB  XR               CONVERT TO BAUS
        !          4982: 12561a11426,11427
        !          4983: > *      (WA)                  0 (INITIAL OFFSET TO BFBLK CHARS)
        !          4984: > *      (WB)                  0 (INITIAL BCLEN)
        !          4985: 12563d11428
        !          4986: < *      (WA,WB)               DESTROYED
        !          4987: 12580c11445,11446
        !          4988: <        ZER  BFCHR(XL)        CLEAR FIRST WORD (NULL PAD)
        !          4989: ---
        !          4990: >        ZER  WB               CLEAR FOR RETURN
        !          4991: >        MOV  WB,BFCHR(XL)     CLEAR FIRST WORD (NULL PAD)
        !          4992: 12581a11448
        !          4993: >        ZER  WA               CLEAR FOR RETURN
        !          4994: 12586c11453
        !          4995: < ALB01  ERB  274,REQUESTED BUFFER ALLOCATION EXCEEDS MXLEN
        !          4996: ---
        !          4997: > ALB01  ERB  201,REQUESTED BUFFER ALLOCATION EXCEEDS MAXLNGTH
        !          4998: 12611c11478
        !          4999: <        CTB  WA,SCSI$         COMPUTE LENGTH OF SCBLK IN BYTES
        !          5000: ---
        !          5001: >        CTB  WA,SCSI$         COMPUTE LENGTH OF SCBLK IN BAUS
        !          5002: 12634c11501
        !          5003: < ALCS2  ERB  205,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD
        !          5004: ---
        !          5005: > ALCS2  ERB  202,STRING LENGTH EXCEEDS VALUE OF MAXLNGTH KEYWORD
        !          5006: 12640c11507
        !          5007: < *      (WA)                  LENGTH REQUIRED IN BYTES
        !          5008: ---
        !          5009: > *      (WA)                  LENGTH REQUIRED IN BAUS
        !          5010: 12676,12677d11542
        !          5011: < .IF    .CNBF
        !          5012: < .ELSE
        !          5013: 12679,12712d11543
        !          5014: < *      APNDB -- APPEND STRING TO BUFFER
        !          5015: < *
        !          5016: < *      THIS ROUTINE IS USED BY BUFFER HANDLING ROUTINES TO
        !          5017: < *      APPEND DATA TO AN EXISTING BFBLK.
        !          5018: < *
        !          5019: < *      (XR)                  EXISTING BCBLK TO BE APPENDED
        !          5020: < *      (XL)                  CONVERTABLE TO STRING
        !          5021: < *      JSR  APNDB            CALL TO APPEND TO BUFFER
        !          5022: < *      PPM  LOC              THREAD IF (XL) CANT BE CONVERTED
        !          5023: < *      PPM  LOC              IF NOT ENOUGH ROOM
        !          5024: < *      (WA,WB)               DESTROYED
        !          5025: < *
        !          5026: < *      IF MORE CHARACTERS ARE SPECIFIED THAN CAN BE INSERTED,
        !          5027: < *      THEN NO ACTION IS TAKEN AND THE SECOND RETURN IS TAKEN.
        !          5028: < *
        !          5029: < APNDB  PRC  E,2              ENTRY POINT
        !          5030: <        MOV  BCLEN(XR),WA     LOAD OFFSET TO INSERT
        !          5031: <        ZER  WB               REPLACE SECTION IS NULL
        !          5032: <        JSR  INSBF            CALL TO INSERT AT END
        !          5033: <        PPM  APN01            CONVERT ERROR
        !          5034: <        PPM  APN02            NO ROOM
        !          5035: <        EXI                   RETURN TO CALLER
        !          5036: < *
        !          5037: < *      HERE TO TAKE CONVERT FAILURE EXIT
        !          5038: < *
        !          5039: < APN01  EXI  1                RETURN TO CALLER ALTERNATE
        !          5040: < *
        !          5041: < *      HERE FOR NO FIT EXIT
        !          5042: < *
        !          5043: < APN02  EXI  2                ALTERNATE EXIT TO CALLER
        !          5044: <        ENP                   END PROCEDURE APNDB
        !          5045: <        EJC
        !          5046: < .FI
        !          5047: < *
        !          5048: 12882c11713
        !          5049: < *      HERE FOR FAILURE DURING EXPRESSION EVALUATION
        !          5050: ---
        !          5051: > *      HERE FOR FAILURE RETURNS
        !          5052: 12885d11715
        !          5053: <        EXI  1                TAKE FAILURE EXIT
        !          5054: 12886a11717,11718
        !          5055: > ASG3A  EXI  1                TAKE FAILURE EXIT
        !          5056: > *
        !          5057: 12933c11765
        !          5058: <        MOV  TRVAL(WC),-(XS)  STACK VALUE TO OUTPUT (SGD01)
        !          5059: ---
        !          5060: >        MOV  TRVAL(XR),-(XS)  STACK VALUE TO OUTPUT
        !          5061: 12939c11771
        !          5062: < ASG11  MOV  TRFPT(XL),WA     FCBLK PTR
        !          5063: ---
        !          5064: > ASG11  MOV  TRTRI(XL),WA     TRTIO BLK PTR
        !          5065: 12943a11776,11779
        !          5066: >        MOV  WA,XL            COPY TRTIO BLOCK PTR TO XL
        !          5067: >        MOV  TRTAG(XL),WA     GET IOTAG
        !          5068: >        BZE  WA,ASG3A         FAIL IF ENDFILE DONE
        !          5069: >        MOV  SCLEN(XR),WC     STRING LENGTH
        !          5070: 12945,12946c11781,11782
        !          5071: <        ERR  206,OUTPUT CAUSED FILE OVERFLOW
        !          5072: <        ERR  207,OUTPUT CAUSED NON-RECOVERABLE ERROR
        !          5073: ---
        !          5074: >        PPM  ASG3A            FAIL RETURN
        !          5075: >        PPM  EROSI            ERROR RETURN
        !          5076: 12954c11790
        !          5077: < *      HERE TO PRINT A STRING ON THE PRINTER
        !          5078: ---
        !          5079: > *      HERE TO PRINT A STRING
        !          5080: 12956,12958c11792,11793
        !          5081: < ASG13  JSR  PRTST            PRINT STRING VALUE
        !          5082: <        BEQ  TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT
        !          5083: <        JSR  PRTNL            END OF LINE
        !          5084: ---
        !          5085: > ASG13  BEQ  TRTER(XL),=V$TER,ASG20 JUMP IF TERMINAL OUTPUT
        !          5086: >        JSR  PRTSF            PRINT STRING AND FLUSH BUFFER
        !          5087: 12970c11805
        !          5088: <        ERR  208,KEYWORD VALUE ASSIGNED IS NOT INTEGER
        !          5089: ---
        !          5090: >        ERR  203,KEYWORD VALUE ASSIGNED IS NOT INTEGER
        !          5091: 12972a11808
        !          5092: >        BEQ  XL,=K$COD,ASG24  JUMP IF SPECIAL CASE OF CODE
        !          5093: 12981c11817
        !          5094: <        ERB  209,KEYWORD IN ASSIGNMENT IS PROTECTED
        !          5095: ---
        !          5096: >        ERB  204,KEYWORD IN ASSIGNMENT IS PROTECTED
        !          5097: 12985c11821
        !          5098: < ASG15  MOV  WA,KVABE(XL)     STORE NEW VALUE
        !          5099: ---
        !          5100: > ASG15  MOV  WA,KVANC(XL)     STORE NEW VALUE
        !          5101: 12998a11835
        !          5102: >        EJC
        !          5103: 12999a11837,11838
        !          5104: > *      ASIGN (CONTINUED)
        !          5105: > *
        !          5106: 13006c11845
        !          5107: < ASG18  ERB  210,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE
        !          5108: ---
        !          5109: > ASG18  ERB  205,KEYWORD VALUE ASSIGNED IS NEGATIVE OR TOO LARGE
        !          5110: 13012c11851
        !          5111: <        ERR  211,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING
        !          5112: ---
        !          5113: >        ERR  206,VALUE ASSIGNED TO KEYWORD ERRTEXT NOT A STRING
        !          5114: 13018c11857,11858
        !          5115: < ASG20  JSR  PRTTR            PRINT
        !          5116: ---
        !          5117: > ASG20  JSR  PTTST            PRINT STRING TO TERMINAL
        !          5118: >        JSR  PTTFH            FLUSH TERMINAL BUFFER
        !          5119: 13020d11859
        !          5120: < *
        !          5121: 13029c11868
        !          5122: <        ERB  268,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE
        !          5123: ---
        !          5124: >        ERB  207,INCONSISTENT VALUE ASSIGNED TO KEYWORD PROFILE
        !          5125: 13031c11870
        !          5126: < ASG22  MOV  WA,PFDMP          NOTE VALUE ON FIRST ASSIGNMENT
        !          5127: ---
        !          5128: > ASG22  MOV  WA,PFDMP         NOTE VALUE ON FIRST ASSIGNMENT
        !          5129: 13035a11875,11879
        !          5130: > *
        !          5131: > *      HERE FOR KEYWORD ASSIGNMENT TO CODE
        !          5132: > *
        !          5133: > ASG24  STI  KVCOD            STORE VALUE
        !          5134: >        EXI                   RETURN TO CALLER
        !          5135: 13093c11937
        !          5136: < *      (WA)                  LENGTH OF BLOCK IN BYTES
        !          5137: ---
        !          5138: > *      (WA)                  LENGTH OF BLOCK IN BAUS
        !          5139: 13107,13111d11950
        !          5140: < .IF    .CNBF
        !          5141: < .ELSE
        !          5142: <        IFF  BL$BC,BLN04      BCBLK
        !          5143: <        IFF  BL$BF,BLN11      BFBLK
        !          5144: < .FI
        !          5145: 13112a11952
        !          5146: >        IFF  BL$CO,BLN12      COBLK
        !          5147: 13131a11972,11976
        !          5148: > .IF    .CNBF
        !          5149: > .ELSE
        !          5150: >        IFF  BL$BC,BLN04      BCBLK
        !          5151: >        IFF  BL$BF,BLN11      BFBLK
        !          5152: > .FI
        !          5153: 13162c12007
        !          5154: < *      HERE FOR FOUR WORD BLOCKS (P2,TE,BC)
        !          5155: ---
        !          5156: > *      HERE FOR FOUR WORD BLOCKS (P2,TE)
        !          5157: 13202c12047
        !          5158: <        CTB  WA,SCSI$         CALCULATE LENGTH IN BYTES
        !          5159: ---
        !          5160: >        CTB  WA,SCSI$         CALCULATE LENGTH IN BAUS
        !          5161: 13209,13210c12054,12055
        !          5162: < BLN11  MOV  BFALC(XR),WA     GET ALLOCATION IN BYTES
        !          5163: <        CTB  WA,BFSI$         CALCULATE LENGTH IN BYTES
        !          5164: ---
        !          5165: > BLN11  MOV  BFALC(XR),WA     GET ALLOCATION IN BAUS
        !          5166: >        CTB  WA,BFSI$         CALCULATE LENGTH IN BAUS
        !          5167: 13212a12058,12062
        !          5168: > *
        !          5169: > *      HERE FOR COBLK
        !          5170: > *
        !          5171: > BLN12  MOV  *COSI$,WA        GET SIZE IN BAUS
        !          5172: >        EXI                   RETURN TO BLKLN CALLER
        !          5173: 13216c12066
        !          5174: < *      COPYB -- COPY A BLOCK
        !          5175: ---
        !          5176: > *      CBLCK -- COPY A BLOCK
        !          5177: 13219c12069
        !          5178: < *      JSR  COPYB            CALL TO COPY BLOCK
        !          5179: ---
        !          5180: > *      JSR  CBLCK            CALL TO COPY BLOCK
        !          5181: 13226c12076
        !          5182: < COPYB  PRC  N,1              ENTRY POINT
        !          5183: ---
        !          5184: > CBLCK  PRC  N,1              ENTRY POINT
        !          5185: 13228c12078
        !          5186: <        BEQ  XR,=NULLS,COP10  RETURN ARGUMENT IF IT IS NULL
        !          5187: ---
        !          5188: >        BEQ  XR,=NULLS,CBL10  RETURN ARGUMENT IF IT IS NULL
        !          5189: 13237,13239c12087,12089
        !          5190: <        BEQ  WB,=B$TBT,COP05  JUMP IF TABLE
        !          5191: <        BEQ  WB,=B$VCT,COP01  JUMP IF VECTOR
        !          5192: <        BEQ  WB,=B$PDT,COP01  JUMP IF PROGRAM DEFINED
        !          5193: ---
        !          5194: >        BEQ  WB,=B$TBT,CBL05  JUMP IF TABLE
        !          5195: >        BEQ  WB,=B$VCT,CBL01  JUMP IF VECTOR
        !          5196: >        BEQ  WB,=B$PDT,CBL01  JUMP IF PROGRAM DEFINED
        !          5197: 13242c12092
        !          5198: <        BEQ  WB,=B$BCT,COP11  JUMP IF BUFFER
        !          5199: ---
        !          5200: >        BEQ  WB,=B$BCT,CBL11  JUMP IF BUFFER
        !          5201: 13244c12094
        !          5202: <        BNE  WB,=B$ART,COP10  RETURN COPY IF NOT ARRAY
        !          5203: ---
        !          5204: >        BNE  WB,=B$ART,CBL10  RETURN COPY IF NOT ARRAY
        !          5205: 13249c12099
        !          5206: <        BRN  COP02            JUMP TO MERGE
        !          5207: ---
        !          5208: >        BRN  CBL02            JUMP TO MERGE
        !          5209: 13253c12103
        !          5210: < COP01  ADD  *PDFLD,XR        POINT TO PDFLD = VCVLS
        !          5211: ---
        !          5212: > CBL01  ADD  *PDFLD,XR        POINT TO PDFLD = VCVLS
        !          5213: 13258c12108
        !          5214: < COP02  MOV  (XR),XL          LOAD NEXT POINTER
        !          5215: ---
        !          5216: > CBL02  MOV  (XR),XL          LOAD NEXT POINTER
        !          5217: 13262c12112
        !          5218: < COP03  BNE  (XL),=B$TRT,COP04 JUMP IF NOT TRAPPED
        !          5219: ---
        !          5220: > CBL03  BNE  (XL),=B$TRT,CBL04 JUMP IF NOT TRAPPED
        !          5221: 13264c12114
        !          5222: <        BRN  COP03            AND LOOP BACK
        !          5223: ---
        !          5224: >        BRN  CBL03            AND LOOP BACK
        !          5225: 13267c12117
        !          5226: < *      COPYB (CONTINUED)
        !          5227: ---
        !          5228: > *      CBLCK (CONTINUED)
        !          5229: 13271,13273c12121,12123
        !          5230: < COP04  MOV  XL,(XR)+         STORE REAL VALUE, BUMP POINTER
        !          5231: <        BNE  XR,DNAMP,COP02   LOOP BACK IF MORE TO GO
        !          5232: <        BRN  COP09            ELSE JUMP TO EXIT
        !          5233: ---
        !          5234: > CBL04  MOV  XL,(XR)+         STORE REAL VALUE, BUMP POINTER
        !          5235: >        BNE  XR,DNAMP,CBL02   LOOP BACK IF MORE TO GO
        !          5236: >        BRN  CBL09            ELSE JUMP TO EXIT
        !          5237: 13277c12127
        !          5238: < COP05  ZER  IDVAL(XR)        ZERO ID TO STOP DUMP BLOWING UP
        !          5239: ---
        !          5240: > CBL05  ZER  IDVAL(XR)        ZERO ID TO STOP DUMP BLOWING UP
        !          5241: 13283,13284c12133,12134
        !          5242: < COP06  MOV  (XS),XR          LOAD TABLE POINTER
        !          5243: <        BEQ  WC,TBLEN(XR),COP09 JUMP TO EXIT IF ALL DONE
        !          5244: ---
        !          5245: > CBL06  MOV  (XS),XR          LOAD TABLE POINTER
        !          5246: >        BEQ  WC,TBLEN(XR),CBL09 JUMP TO EXIT IF ALL DONE
        !          5247: 13291c12141
        !          5248: < COP07  MOV  TENXT(XR),XL     LOAD POINTER TO NEXT TEBLK
        !          5249: ---
        !          5250: > CBL07  MOV  TENXT(XR),XL     LOAD POINTER TO NEXT TEBLK
        !          5251: 13293c12143
        !          5252: <        BEQ  (XL),=B$TBT,COP06 BACK FOR NEXT BUCKET IF CHAIN END
        !          5253: ---
        !          5254: >        BEQ  (XL),=B$TBT,CBL06 BACK FOR NEXT BUCKET IF CHAIN END
        !          5255: 13306,13307c12156,12157
        !          5256: < COP08  MOV  TEVAL(XL),XL     LOAD VALUE
        !          5257: <        BEQ  (XL),=B$TRT,COP08 LOOP BACK IF TRAPPED
        !          5258: ---
        !          5259: > CBL08  MOV  TEVAL(XL),XL     LOAD VALUE
        !          5260: >        BEQ  (XL),=B$TRT,CBL08 LOOP BACK IF TRAPPED
        !          5261: 13309c12159
        !          5262: <        BRN  COP07            BACK FOR NEXT TEBLK
        !          5263: ---
        !          5264: >        BRN  CBL07            BACK FOR NEXT TEBLK
        !          5265: 13313c12163
        !          5266: < COP09  MOV  (XS)+,XR         LOAD POINTER TO BLOCK
        !          5267: ---
        !          5268: > CBL09  MOV  (XS)+,XR         LOAD POINTER TO BLOCK
        !          5269: 13318,13319c12168
        !          5270: < COP10  EXI  1                RETURN
        !          5271: <        EJC
        !          5272: ---
        !          5273: > CBL10  EXI  1                RETURN
        !          5274: 13321a12171
        !          5275: >        EJC
        !          5276: 13325c12175
        !          5277: < COP11  MOV  BCBUF(XR),XL     GET BFBLK PTR
        !          5278: ---
        !          5279: > CBL11  MOV  BCBUF(XR),XL     GET BFBLK PTR
        !          5280: 13335c12185
        !          5281: <        BRN  COP09            BRANCH TO EXIT
        !          5282: ---
        !          5283: >        BRN  CBL09            BRANCH TO EXIT
        !          5284: 13337c12187,12188
        !          5285: <        ENP                   END PROCEDURE COPYB
        !          5286: ---
        !          5287: >        ENP                   END PROCEDURE CBLCK
        !          5288: >        EJC
        !          5289: 13455c12306
        !          5290: < CGN01  ERB  212,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED
        !          5291: ---
        !          5292: > CGN01  ERB  208,SYNTAX ERROR. VALUE USED WHERE NAME IS REQUIRED
        !          5293: 13586,13592d12436
        !          5294: <        BNZ  VRLEN(XR),CGVL0  JUMP IF NOT SYSTEM VARIABLE
        !          5295: <        MOV  XR,-(XS)         STACK XR
        !          5296: <        MOV  VRSVP(XR),XR     POINT TO SVBLK
        !          5297: <        MOV  SVBIT(XR),WA     GET SVBLK PROPERTY BITS
        !          5298: <        MOV  (XS)+,XR         RECOVER XR
        !          5299: <        ANB  BTCKW,WA         CHECK IF CONSTANT KEYWORD
        !          5300: <        NZB  WA,CGV00         JUMP IF CONSTANT KEYWORD
        !          5301: 13616,13617c12460
        !          5302: < *      PREPARE TO GENERATE CODE FOR CMBLK. WC IS SET TO THE
        !          5303: < *      VALUE OF CSWNO (ZERO IF -OPTIMISE, 1 IF -NOOPT) TO
        !          5304: ---
        !          5305: > *      PREPARE TO GENERATE CODE FOR CMBLK. WC IS CLEARED TO
        !          5306: 13624c12467
        !          5307: <        MOV  CSWNO,WC         RESET CONSTANT FLAG
        !          5308: ---
        !          5309: >        ZER  WC               CLEAR OPTIMISE FLAG
        !          5310: 13644d12486
        !          5311: <        IFF  C$CNP,CGV24      CONCATENATION (NOT PATTERN MATCH)
        !          5312: 13645a12488
        !          5313: >        IFF  C$CNP,CGV24      CONCAT. NOT PATTERN
        !          5314: 13688,13689c12531,12532
        !          5315: < CGV07  SUB  *CMVLS,WB        GET NUMBER OF ARG PTRS (BYTES)
        !          5316: <        BTW  WB               CONVERT BYTES TO WORDS
        !          5317: ---
        !          5318: > CGV07  SUB  *CMVLS,WB        GET NUMBER OF ARG PTRS (BAUS)
        !          5319: >        BTW  WB               CONVERT BAUS TO WORDS
        !          5320: 13968c12811
        !          5321: <        WTB  XR               CONVERT WORD OFFSET TO BYTES
        !          5322: ---
        !          5323: >        WTB  XR               CONVERT WORD OFFSET TO BAUS
        !          5324: 14105c12948
        !          5325: < CDWD5  ERB  213,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED.
        !          5326: ---
        !          5327: > CDWD5  ERB  209,SYNTAX ERROR. STATEMENT IS TOO COMPLICATED.
        !          5328: 14258,14260c13101,13107
        !          5329: <        BNE  STAGE,=STGIC,CMP02 SKIP UNLESS INITIAL COMPILE
        !          5330: <        JSR  READR            READ NEXT INPUT IMAGE
        !          5331: <        BZE  XR,CMP09         JUMP IF NO INPUT AVAILABLE
        !          5332: ---
        !          5333: >        BEQ  STAGE,=STGIC,CMPC1 READ IF INITIAL COMPILE
        !          5334: >        BZE  R$COP,CMP02      ELSE SKIP IF NO -COPY IN FORCE
        !          5335: > *
        !          5336: > *      HERE TO ATTEMPT READ (STGIC OR -COPY)
        !          5337: > *
        !          5338: > CMPC1  JSR  READR            READ NEXT INPUT IMAGE
        !          5339: >        BZE  XR,CMPC2         JUMP IF NO INPUT AVAILABLE
        !          5340: 14265a13113,13119
        !          5341: > *      HERE IF READR HAD NOTHING TO RETURN.  IF NOT DURING
        !          5342: > *      INITIAL COMPILE, THEN MUST BE AT OUTER LEVEL OF -COPY
        !          5343: > *      IN CODE().  R$CIM HAS BEEN RESTORED TO CODE STRING
        !          5344: > *      BY COPND SO WE CONTINUE FROM THE -COPY STMT.
        !          5345: > *
        !          5346: > CMPC2  BEQ  STAGE,=STGIC,CMP09 JUMP IF INITIAL COMPILE
        !          5347: > *
        !          5348: 14296c13150
        !          5349: <        BEQ  WC,=CH$MN,CMP32  JUMP IF CONTROL CARD
        !          5350: ---
        !          5351: >        BEQ  WC,=CH$MN,CMP33  JUMP IF CONTROL CARD
        !          5352: 14324c13178
        !          5353: <        ERB  214,BAD LABEL OR MISPLACED CONTINUATION LINE
        !          5354: ---
        !          5355: >        ERB  210,BAD LABEL OR MISPLACED CONTINUATION LINE
        !          5356: 14363c13217
        !          5357: <        BEQ  XL,=T$SMC,CMP10  JUMP IF END OF IMAGE
        !          5358: ---
        !          5359: >        BEQ  XL,=T$SMC,CMPEE  JUMP IF END OF IMAGE
        !          5360: 14371c13225
        !          5361: <        BEQ  XL,=T$SMC,CMP10  JUMP IF OK (END OF IMAGE)
        !          5362: ---
        !          5363: >        BEQ  XL,=T$SMC,CMPEE  JUMP IF OK (END OF IMAGE)
        !          5364: 14375c13229
        !          5365: < CMP08  ERB  215,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL
        !          5366: ---
        !          5367: > CMP08  ERB  211,SYNTAX ERROR. UNDEFINED OR ERRONEOUS ENTRY LABEL
        !          5368: 14380,14381c13234,13235
        !          5369: <        BEQ  STAGE,=STGXE,CMP10 JUMP IF CODE CALL (OK)
        !          5370: <        ERB  216,SYNTAX ERROR. MISSING END LINE
        !          5371: ---
        !          5372: >        BEQ  STAGE,=STGXE,CMPEE JUMP IF CODE CALL (OK)
        !          5373: >        ERB  212,SYNTAX ERROR. MISSING END LINE
        !          5374: 14385c13239
        !          5375: < CMP10  MOV  =OSTP$,WA        SET STOP CALL POINTER
        !          5376: ---
        !          5377: > CMPEE  MOV  =OSTP$,WA        SET STOP CALL POINTER
        !          5378: 14397c13251
        !          5379: <        ERB  217,SYNTAX ERROR. DUPLICATE LABEL
        !          5380: ---
        !          5381: >        ERB  213,SYNTAX ERROR. DUPLICATE LABEL
        !          5382: 14414c13268
        !          5383: <        BEQ  XL,=T$SMC,CMP31  JUMP IF NO FIELDS LEFT
        !          5384: ---
        !          5385: >        BEQ  XL,=T$SMC,CMP32  JUMP IF NO FIELDS LEFT
        !          5386: 14450c13304
        !          5387: < CMP17  ERB  218,SYNTAX ERROR. DUPLICATED GOTO FIELD
        !          5388: ---
        !          5389: > CMP17  ERB  214,SYNTAX ERROR. DUPLICATED GOTO FIELD
        !          5390: 14599d13452
        !          5391: <        EXI                   AND RETURN TO CMPIL CALLER
        !          5392: 14600a13454,13459
        !          5393: > *      LOOP TO UNNEST ANY OUTSTANDING -COPY LEVELS
        !          5394: > *
        !          5395: > CMP31  JSR  COPND            CALL TO UNNEST -COPY
        !          5396: >        BNZ  R$COP,CMP31      LOOP IF NOT ALL -COPYS CLOSED
        !          5397: >        EXI                   RETURN TO CMPIL CALLER
        !          5398: > *
        !          5399: 14603c13462
        !          5400: < CMP31  MOV  CMFGO(XS),WB     GET FAIL GOTO
        !          5401: ---
        !          5402: > CMP32  MOV  CMFGO(XS),WB     GET FAIL GOTO
        !          5403: 14606c13465
        !          5404: <        ERB  219,SYNTAX ERROR. EMPTY GOTO FIELD
        !          5405: ---
        !          5406: >        ERB  215,SYNTAX ERROR. EMPTY GOTO FIELD
        !          5407: 14610c13469
        !          5408: < CMP32  ICV  WB               POINT PAST CH$MN
        !          5409: ---
        !          5410: > CMP33  ICV  WB               POINT PAST CH$MN
        !          5411: 14634c13493
        !          5412: < CNC01  BGE  SCNPT,SCNIL,CNC09 RETURN IF END OF IMAGE
        !          5413: ---
        !          5414: > CNC01  BGE  SCNPT,SCNIL,CNC10 RETURN IF END OF IMAGE
        !          5415: 14638,14640d13496
        !          5416: < .IF    .CULC
        !          5417: <        FLC  WA               FOLD TO UPPER CASE
        !          5418: < .FI
        !          5419: 14641a13498,13500
        !          5420: > .IF    .CASL
        !          5421: >        BEQ  WA,=CH$$I,CNC07  DITTO (LC)
        !          5422: > .FI
        !          5423: 14649a13509,13511
        !          5424: > .IF    .CASL
        !          5425: >        JSR  SBSCC            CONVERT CASE BEFORE COMPARISON
        !          5426: > .ELSE
        !          5427: 14651,14653d13512
        !          5428: < .IF    .CULC
        !          5429: <        MOV  SCLEN(XR),WA     RELOAD LENGTH
        !          5430: <        JSR  FLSTG            FOLD TO UPPER CASE
        !          5431: 14658c13517
        !          5432: <        LCT  WC,=CC$NC        NUMBER OF STANDARD NAMES
        !          5433: ---
        !          5434: >        LCT  WC,=CC$CT        NUMBER OF STANDARD NAMES
        !          5435: 14682,14684c13541,13543
        !          5436: <        BSW  XL,CC$NC         SWITCH
        !          5437: < .IF    .CULC
        !          5438: <        IFF  CC$CA,CNC37      -CASE
        !          5439: ---
        !          5440: >        BSW  XL,CC$CT         SWITCH
        !          5441: > .IF    .CASL
        !          5442: >        IFF  CC$CI,CNC11      -CASEIG
        !          5443: 14686,14687c13545
        !          5444: <        IFF  CC$DO,CNC10      -DOUBLE
        !          5445: <        IFF  CC$DU,CNC11      -DUMP
        !          5446: ---
        !          5447: >        IFF  CC$CO,CNC23      -COPY
        !          5448: 14689,14705c13547,13556
        !          5449: <        IFF  CC$ER,CNC13      -ERRORS
        !          5450: <        IFF  CC$EX,CNC14      -EXECUTE
        !          5451: <        IFF  CC$FA,CNC15      -FAIL
        !          5452: <        IFF  CC$LI,CNC16      -LIST
        !          5453: <        IFF  CC$NR,CNC17      -NOERRORS
        !          5454: <        IFF  CC$NX,CNC18      -NOEXECUTE
        !          5455: <        IFF  CC$NF,CNC19      -NOFAIL
        !          5456: <        IFF  CC$NL,CNC20      -NOLIST
        !          5457: <        IFF  CC$NO,CNC21      -NOOPT
        !          5458: <        IFF  CC$NP,CNC22      -NOPRINT
        !          5459: <        IFF  CC$OP,CNC24      -OPTIMISE
        !          5460: <        IFF  CC$PR,CNC25      -PRINT
        !          5461: <        IFF  CC$SI,CNC27      -SINGLE
        !          5462: <        IFF  CC$SP,CNC28      -SPACE
        !          5463: <        IFF  CC$ST,CNC31      -STITLE
        !          5464: <        IFF  CC$TI,CNC32      -TITLE
        !          5465: <        IFF  CC$TR,CNC36      -TRACE
        !          5466: ---
        !          5467: >        IFF  CC$FA,CNC13      -FAIL
        !          5468: >        IFF  CC$LI,CNC14      -LIST
        !          5469: > .IF    .CASL
        !          5470: >        IFF  CC$NC,CNC15      -NOCASEIG
        !          5471: > .FI
        !          5472: >        IFF  CC$NF,CNC16      -NOFAIL
        !          5473: >        IFF  CC$NL,CNC17      -NOLIST
        !          5474: >        IFF  CC$ST,CNC18      -STITLE
        !          5475: >        IFF  CC$TI,CNC19      -TITLE
        !          5476: >        IFF  CC$TR,CNC22      -TRACE
        !          5477: 14717c13568
        !          5478: < CNC06  ERB  247,INVALID CONTROL CARD
        !          5479: ---
        !          5480: > CNC06  ERB  216,INVALID CONTROL CARD
        !          5481: 14722,14723c13573,13574
        !          5482: < .IF    .CULC
        !          5483: <        FLC  WA               FOLD TO UPPER CASE
        !          5484: ---
        !          5485: > .IF    .CASL
        !          5486: >        BEQ  WA,=CH$$N,CNC08  SKIP IF LC N
        !          5487: 14725a13577,13579
        !          5488: > .IF    .CASL
        !          5489: > CNC08  ADD  =NUM02,SCNPT     BUMP OFFSET PAST -IN
        !          5490: > .ELSE
        !          5491: 14726a13581
        !          5492: > .FI
        !          5493: 14739c13594
        !          5494: < CNC08  MOV  SCNPT,WA         PRESERVE IN CASE XEQ TIME COMPILE
        !          5495: ---
        !          5496: > CNC09  MOV  SCNPT,WA         PRESERVE IN CASE XEQ TIME COMPILE
        !          5497: 14746c13601,13602
        !          5498: < CNC09  EXI                   RETURN
        !          5499: ---
        !          5500: > CNC10  EXI                   RETURN
        !          5501: > .IF    .CASL
        !          5502: 14748c13604
        !          5503: < *      -DOUBLE
        !          5504: ---
        !          5505: > *      -CASEIG
        !          5506: 14750,14751c13606,13608
        !          5507: < CNC10  MNZ  CSWDB            SET SWITCH
        !          5508: <        BRN  CNC08            MERGE
        !          5509: ---
        !          5510: > CNC11  MNZ  CSWCI            SET SWITCH
        !          5511: >        BRN  CNC09            MERGE
        !          5512: > .FI
        !          5513: 14753,14759d13609
        !          5514: < *      -DUMP
        !          5515: < *      THIS IS USED FOR SYSTEM DEBUGGING . IT HAS THE EFFECT OF
        !          5516: < *      PRODUCING A CORE DUMP AT COMPILATION TIME
        !          5517: < *
        !          5518: < CNC11  JSR  SYSDM            CALL DUMPER
        !          5519: <        BRN  CNC09            FINISHED
        !          5520: < *
        !          5521: 14762c13612
        !          5522: < CNC12  BZE  CSWLS,CNC09      RETURN IF -NOLIST
        !          5523: ---
        !          5524: > CNC12  BZE  CSWLS,CNC10      RETURN IF -NOLIST
        !          5525: 14765c13615
        !          5526: <        BRN  CNC09            FINISHED
        !          5527: ---
        !          5528: >        BRN  CNC10            FINISHED
        !          5529: 14767,14776d13616
        !          5530: < *      -ERRORS
        !          5531: < *
        !          5532: < CNC13  ZER  CSWER            CLEAR SWITCH
        !          5533: <        BRN  CNC08            MERGE
        !          5534: < *
        !          5535: < *      -EXECUTE
        !          5536: < *
        !          5537: < CNC14  ZER  CSWEX            CLEAR SWITCH
        !          5538: <        BRN  CNC08            MERGE
        !          5539: < *
        !          5540: 14779,14780c13619,13620
        !          5541: < CNC15  MNZ  CSWFL            SET SWITCH
        !          5542: <        BRN  CNC08            MERGE
        !          5543: ---
        !          5544: > CNC13  MNZ  CSWFL            SET SWITCH
        !          5545: >        BRN  CNC09            MERGE
        !          5546: 14784,14785c13624,13626
        !          5547: < CNC16  MNZ  CSWLS            SET SWITCH
        !          5548: <        BEQ  STAGE,=STGIC,CNC08 DONE IF COMPILE TIME
        !          5549: ---
        !          5550: > CNC14  MNZ  CSWLS            SET SWITCH
        !          5551: >        BRN  CNC09            MERGE
        !          5552: > .IF    .CASL
        !          5553: 14787c13628
        !          5554: < *      LIST CODE LINE IF EXECUTE TIME COMPILE
        !          5555: ---
        !          5556: > *      -NOCASEIG
        !          5557: 14789,14792c13630,13632
        !          5558: <        ZER  LSTPF            PERMIT LISTING
        !          5559: <        JSR  LISTR            LIST LINE
        !          5560: <        BRN  CNC08            MERGE
        !          5561: <        EJC
        !          5562: ---
        !          5563: > CNC15  ZER  CSWCI            CLEAR SWITCH
        !          5564: >        BRN  CNC09            MERGE
        !          5565: > .FI
        !          5566: 14794,14805d13633
        !          5567: < *      CNCRD (CONTINUED)
        !          5568: < *
        !          5569: < *      -NOERRORS
        !          5570: < *
        !          5571: < CNC17  MNZ  CSWER            SET SWITCH
        !          5572: <        BRN  CNC08            MERGE
        !          5573: < *
        !          5574: < *      -NOEXECUTE
        !          5575: < *
        !          5576: < CNC18  MNZ  CSWEX            SET SWITCH
        !          5577: <        BRN  CNC08            MERGE
        !          5578: < *
        !          5579: 14808,14834c13636,13637
        !          5580: < CNC19  ZER  CSWFL            CLEAR SWITCH
        !          5581: <        BRN  CNC08            MERGE
        !          5582: < *
        !          5583: < *      -NOLIST
        !          5584: < *
        !          5585: < CNC20  ZER  CSWLS            CLEAR SWITCH
        !          5586: <        BRN  CNC08            MERGE
        !          5587: < *
        !          5588: < *      -NOOPTIMISE
        !          5589: < *
        !          5590: < CNC21  MNZ  CSWNO            SET SWITCH
        !          5591: <        BRN  CNC08            MERGE
        !          5592: < *
        !          5593: < *      -NOPRINT
        !          5594: < *
        !          5595: < CNC22  ZER  CSWPR            CLEAR SWITCH
        !          5596: <        BRN  CNC08            MERGE
        !          5597: < *
        !          5598: < *      -OPTIMISE
        !          5599: < *
        !          5600: < CNC24  ZER  CSWNO            CLEAR SWITCH
        !          5601: <        BRN  CNC08            MERGE
        !          5602: < *
        !          5603: < *      -PRINT
        !          5604: < *
        !          5605: < CNC25  MNZ  CSWPR            SET SWITCH
        !          5606: <        BRN  CNC08            MERGE
        !          5607: ---
        !          5608: > CNC16  ZER  CSWFL            CLEAR SWITCH
        !          5609: >        BRN  CNC09            MERGE
        !          5610: 14839c13642
        !          5611: < *      -SINGLE
        !          5612: ---
        !          5613: > *      -NOLIST
        !          5614: 14841,14863c13644
        !          5615: < CNC27  ZER  CSWDB            CLEAR SWITCH
        !          5616: <        BRN  CNC08            MERGE
        !          5617: < *
        !          5618: < *      -SPACE
        !          5619: < *
        !          5620: < CNC28  BZE  CSWLS,CNC09      RETURN IF -NOLIST
        !          5621: <        JSR  SCANE            SCAN INTEGER AFTER -SPACE
        !          5622: <        MOV  =NUM01,WC        1 SPACE IN CASE
        !          5623: <        BEQ  XR,=T$SMC,CNC29  JUMP IF NO INTEGER
        !          5624: <        MOV  XR,-(XS)         STACK IT
        !          5625: <        JSR  GTSMI            CHECK INTEGER
        !          5626: <        PPM  CNC06            FAIL IF NOT INTEGER
        !          5627: <        PPM  CNC06            FAIL IF NEGATIVE OR LARGE
        !          5628: <        BNZ  WC,CNC29         JUMP IF NON ZERO
        !          5629: <        MOV  =NUM01,WC        ELSE 1 SPACE
        !          5630: < *
        !          5631: < *      MERGE WITH COUNT OF LINES TO SKIP
        !          5632: < *
        !          5633: < CNC29  ADD  WC,LSTLC         BUMP LINE COUNT
        !          5634: <        LCT  WC,WC            CONVERT TO LOOP COUNTER
        !          5635: <        BLT  LSTLC,LSTNP,CNC30 JUMP IF FITS ON PAGE
        !          5636: <        JSR  PRTPS            EJECT
        !          5637: <        JSR  LISTT            LIST TITLE
        !          5638: ---
        !          5639: > CNC17  ZER  CSWLS            CLEAR SWITCH
        !          5640: 14866,14874d13646
        !          5641: < *      SKIP LINES
        !          5642: < *
        !          5643: < CNC30  JSR  PRTNL            PRINT A BLANK
        !          5644: <        BCT  WC,CNC30         LOOP
        !          5645: <        BRN  CNC09            MERGE
        !          5646: <        EJC
        !          5647: < *
        !          5648: < *      CNCRD (CONTINUED)
        !          5649: < *
        !          5650: 14877,14878c13649,13650
        !          5651: < CNC31  MOV  =R$STL,CNR$T     PTR TO R$STL
        !          5652: <        BRN  CNC33            MERGE
        !          5653: ---
        !          5654: > CNC18  MOV  =R$STL,CNR$T     PTR TO R$STL
        !          5655: >        BRN  CNC20            MERGE
        !          5656: 14882c13654
        !          5657: < CNC32  MOV  =NULLS,R$STL     CLEAR SUBTITLE
        !          5658: ---
        !          5659: > CNC19  MOV  =NULLS,R$STL     CLEAR SUBTITLE
        !          5660: 14887c13659
        !          5661: < CNC33  MOV  =NULLS,XR        NULL IN CASE NEEDED
        !          5662: ---
        !          5663: > CNC20  MOV  =NULLS,XR        NULL IN CASE NEEDED
        !          5664: 14891c13663
        !          5665: <        BLO  WA,WB,CNC34      JUMP IF NO CHARS LEFT
        !          5666: ---
        !          5667: >        BLO  WA,WB,CNC21      JUMP IF NO CHARS LEFT
        !          5668: 14898c13670
        !          5669: < CNC34  MOV  CNR$T,XL         POINT TO STORAGE LOCATION
        !          5670: ---
        !          5671: > CNC21  MOV  CNR$T,XL         POINT TO STORAGE LOCATION
        !          5672: 14900,14908c13672
        !          5673: <        BEQ  XL,=R$STL,CNC09  RETURN IF STITL
        !          5674: <        BNZ  PRECL,CNC09      RETURN IF EXTENDED LISTING
        !          5675: <        BZE  PRICH,CNC09      RETURN IF REGULAR PRINTER
        !          5676: <        MOV  SCLEN(XR),XL     GET LENGTH OF TITLE
        !          5677: <        MOV  XL,WA            COPY IT
        !          5678: <        BZE  XL,CNC35         JUMP IF NULL
        !          5679: <        ADD  =NUM10,XL        INCREMENT
        !          5680: <        BHI  XL,PRLEN,CNC09   USE DEFAULT LSTP0 VAL IF TOO LONG
        !          5681: <        ADD  =NUM04,WA        POINT JUST PAST TITLE
        !          5682: ---
        !          5683: >        BRN  CNC10            RETURN
        !          5684: 14910,14914d13673
        !          5685: < *      STORE OFFSET TO PAGE NN MESSAGE FOR SHORT TITLE
        !          5686: < *
        !          5687: < CNC35  MOV  WA,LSTPO         STORE OFFSET
        !          5688: <        BRN  CNC09            RETURN
        !          5689: < *
        !          5690: 14915a13675
        !          5691: > *
        !          5692: 14919,14921c13679,13680
        !          5693: < CNC36  JSR  SYSTT            TOGGLE SWITCH
        !          5694: <        BRN  CNC08            MERGE
        !          5695: < .IF    .CULC
        !          5696: ---
        !          5697: > CNC22  JSR  SYSTT            TOGGLE SWITCH
        !          5698: >        BRN  CNC09            MERGE
        !          5699: 14923,14925c13682
        !          5700: < *      -CASE
        !          5701: < *      SETS VALUE OF KVCAS SO THAT NAMES ARE FOLDED OR NOT
        !          5702: < *      DURING COMPILATION.
        !          5703: ---
        !          5704: > *      -COPY
        !          5705: 14927,14936c13684,13708
        !          5706: < CNC37  JSR  SCANE            SCAN INTEGER AFTER -CASE
        !          5707: <        ZER  WC               GET 0 IN CASE NONE THERE
        !          5708: <        BEQ  XL,=T$SMC,CNC38  SKIP IF NO INTEGER
        !          5709: <        MOV  XR,-(XS)         STACK IT
        !          5710: <        JSR  GTSMI            CHECK INTEGER
        !          5711: <        PPM  CNC06            FAIL IF NOT INTEGER
        !          5712: <        PPM  CNC06            FAIL IF NEGATIVE OR TOO LARGE
        !          5713: < CNC38  MOV  WC,KVCAS         STORE NEW CASE VALUE
        !          5714: <        BRN  CNC09            MERGE
        !          5715: < .FI
        !          5716: ---
        !          5717: > *      GET FILETAG AND NOTIFY OSINT THAT WE ARE NESTING
        !          5718: > *
        !          5719: > CNC23  JSR  SCANE            GET FILETAG
        !          5720: >        BNE  =T$CON,XL,CNC06  ERR IF NOT CONSTANT
        !          5721: >        BNE  =B$SCL,(XR),CNC06 ERR IF NOT SCBLK
        !          5722: >        JSR  SYSSC            CALL TO START COPY
        !          5723: >        ERR  258,COPY FILE DOES NOT EXIST
        !          5724: >        PPM  EROSI            ERROR RETURN (ALWAYS)
        !          5725: >        MOV  WA,WB            SAVE IOTAG FROM OSINT
        !          5726: >        MOV  *COSI$,WA        GET SIZE OF COPY BLOCK
        !          5727: >        JSR  ALLOC            ALLOCATE
        !          5728: >        MOV  =B$COP,COTYP(XR) SET TYPE
        !          5729: >        MOV  R$COP,CONXT(XR)  PLACE AT FRONT OF STACK CHN
        !          5730: >        MOV  XR,R$COP         SPLICE IT IN
        !          5731: >        MOV  WB,COIOT(XR)     SAVE OSINT IOTAG
        !          5732: >        MOV  TTINS,COTTI(XR)  SAVE TTINS
        !          5733: >        ZER  TTINS            INPUT NOT FROM TERMINAL NOW
        !          5734: >        MOV  R$CIM,COCIM(XR)  SAVE R$CIM IN CASE EXEC TIME
        !          5735: >        MOV  SCNPT,COSPT(XR)  SAVE SCNPT IN CASE EXEC TIME
        !          5736: >        MOV  CSWLS,COSLS(XR)  SAVE LIST FLAG
        !          5737: >        MOV  CSWIN,COSIN(XR)  SAVE -INXXX VALUE
        !          5738: >        MOV  R$STL,COSTL(XR)  SAVE SUBTITLE
        !          5739: >        BZE  CSWLS,CNC10      NO LIST -COPY IF -NOLIST
        !          5740: >        JSR  LISTR            LIST -COPY CARD
        !          5741: >        BRN  CNC10            EXIT
        !          5742: 14939a13712,13750
        !          5743: > *      COPND -- END -COPY NESTING
        !          5744: > *
        !          5745: > *      COPND IS CALLED FROM CMPIL AND READR IN ORDER TO
        !          5746: > *      UNNEST ONE LEVEL OF -COPY AND RESTORE THE PREVIOUS
        !          5747: > *      INPUT COMPILE STRING.  THE COPY BLOCK IS REMOVED
        !          5748: > *      FROM THE CHAIN AND THE STATE RESTORED FROM IT.
        !          5749: > *
        !          5750: > *      JSR  COPND            CALL TO END -COPY AT CUR. LEVEL
        !          5751: > *      (XL,WA,WB,WC)         DESTROYED
        !          5752: > *
        !          5753: > COPND  PRC  E,0              ENTRY POINT
        !          5754: >        MOV  R$COP,XL         GET POINTER TO CURRENT COBLK
        !          5755: >        BZE  XL,COP02         EXIT IF NONE
        !          5756: >        MOV  CONXT(XL),R$COP  TAKE OFF CHAIN
        !          5757: >        MOV  COIOT(XL),WA     GET IOTAG FOR OSINT
        !          5758: >        JSR  SYSEC            CALL TO END COPY
        !          5759: >        PPM                   DO NOT USE
        !          5760: >        PPM  EROSI            ERROR EXIT
        !          5761: >        BZE  CSWLS,COP01      SKIP LISTING IF -NOLIST
        !          5762: >        JSR  LISTR            LIST CURRENT IMAGE
        !          5763: > *
        !          5764: > *      MERGE AFTER POSSIBLE LISTING OF CURRENT IMAGE
        !          5765: > *
        !          5766: > COP01  MOV  COTTI(XL),TTINS  RESTORE TERMINAL INPUT FLAG
        !          5767: >        MOV  COSLS(XL),CSWLS  RESTORE LISTING STATE
        !          5768: >        MOV  COSPT(XL),SCNPT  GET OLD SCAN POINTER
        !          5769: >        MOV  COSIN(XL),CSWIN  OLD INPUT IMAGE LENGTH
        !          5770: >        MOV  COSTL(XL),R$STL  RESTORE SUBTITLE STRING
        !          5771: >        MNZ  LSTPF            THIS IMAGE LISTED IN CNCRD
        !          5772: >        MOV  COCIM(XL),XL     GET OLD COMPILER IMAGE SCBLK
        !          5773: >        MOV  XL,R$CIM         RESTORE IT
        !          5774: >        MOV  SCLEN(XL),SCNIL  SET INPUT IMAGE LENGTH TOO
        !          5775: > *
        !          5776: > *      MERGE TO EXIT
        !          5777: > *
        !          5778: > COP02  EXI                   RETURN TO CALLER
        !          5779: >        ENP                   END PROCEDURE COPND
        !          5780: >        EJC
        !          5781: > *
        !          5782: 14950a13762,13763
        !          5783: > .IF    .CNLD
        !          5784: > .ELSE
        !          5785: 14957,14958d13769
        !          5786: < .IF    .CNLD
        !          5787: < .ELSE
        !          5788: 14966d13776
        !          5789: < .FI
        !          5790: 14970a13781
        !          5791: > .FI
        !          5792: 14981c13792
        !          5793: <        ERB  248,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION
        !          5794: ---
        !          5795: >        ERB  217,ATTEMPTED REDEFINITION OF SYSTEM FUNCTION
        !          5796: 14991,15058d13801
        !          5797: < *      DTACH -- DETACH I/O ASSOCIATED NAMES
        !          5798: < *
        !          5799: < *      DETACHES TRBLKS FROM I/O ASSOCIATED VARIABLES, REMOVES
        !          5800: < *      ENTRY FROM IOCHN CHAIN ATTACHED TO FILEARG1 VRBLK AND MAY
        !          5801: < *      REMOVE VRBLK ACCESS AND STORE TRAPS.
        !          5802: < *      INPUT, OUTPUT, TERMINAL ARE HANDLED SPECIALLY.
        !          5803: < *
        !          5804: < *      (XL)                  I/O ASSOC. VBL NAME BASE PTR
        !          5805: < *      (WA)                  OFFSET TO NAME
        !          5806: < *      JSR  DTACH            CALL FOR DETACH OPERATION
        !          5807: < *      (XL,XR,WA,WB,WC)      DESTROYED
        !          5808: < *
        !          5809: < DTACH  PRC  E,0              ENTRY POINT
        !          5810: <        MOV  XL,DTCNB         STORE NAME BASE (GBCOL NOT CALLED)
        !          5811: <        ADD  WA,XL            POINT TO NAME LOCATION
        !          5812: <        MOV  XL,DTCNM         STORE IT
        !          5813: < *
        !          5814: < *      LOOP TO SEARCH FOR I/O TRBLK
        !          5815: < *
        !          5816: < DTCH1  MOV  XL,XR            COPY NAME POINTER
        !          5817: < *
        !          5818: < *      CONTINUE AFTER BLOCK DELETION
        !          5819: < *
        !          5820: < DTCH2  MOV  (XL),XL          POINT TO NEXT VALUE
        !          5821: <        BNE  (XL),=B$TRT,DTCH6 JUMP AT CHAIN END
        !          5822: <        MOV  TRTYP(XL),WA     GET TRAP BLOCK TYPE
        !          5823: <        BEQ  WA,=TRTIN,DTCH3  JUMP IF INPUT
        !          5824: <        BEQ  WA,=TRTOU,DTCH3  JUMP IF OUTPUT
        !          5825: <        ADD  *TRNXT,XL        POINT TO NEXT LINK
        !          5826: <        BRN  DTCH1            LOOP
        !          5827: < *
        !          5828: < *      DELETE AN OLD ASSOCIATION
        !          5829: < *
        !          5830: < DTCH3  MOV  TRVAL(XL),(XR)   DELETE TRBLK
        !          5831: <        MOV  XL,WA            DUMP XL ...
        !          5832: <        MOV  XR,WB            ... AND XR
        !          5833: <        MOV  TRTRF(XL),XL     POINT TO TRTRF TRAP BLOCK
        !          5834: <        BZE  XL,DTCH5         JUMP IF NO IOCHN
        !          5835: <        BNE  (XL),=B$TRT,DTCH5 JUMP IF INPUT, OUTPUT, TERMINAL
        !          5836: < *
        !          5837: < *      LOOP TO SEARCH IOCHN CHAIN FOR NAME PTR
        !          5838: < *
        !          5839: < DTCH4  MOV  XL,XR            REMEMBER LINK PTR
        !          5840: <        MOV  TRTRF(XL),XL     POINT TO NEXT LINK
        !          5841: <        BZE  XL,DTCH5         JUMP IF END OF CHAIN
        !          5842: <        MOV  IONMB(XL),WC     GET NAME BASE
        !          5843: <        ADD  IONMO(XL),WC     ADD OFFSET
        !          5844: <        BNE  WC,DTCNM,DTCH4   LOOP IF NO MATCH
        !          5845: <        MOV  TRTRF(XL),TRTRF(XR) REMOVE NAME FROM CHAIN
        !          5846: <        EJC
        !          5847: < *
        !          5848: < *      DTACH (CONTINUED)
        !          5849: < *
        !          5850: < *      PREPARE TO RESUME I/O TRBLK SCAN
        !          5851: < *
        !          5852: < DTCH5  MOV  WA,XL            RECOVER XL ...
        !          5853: <        MOV  WB,XR            ... AND XR
        !          5854: <        ADD  *TRVAL,XL        POINT TO VALUE FIELD
        !          5855: <        BRN  DTCH2            CONTINUE
        !          5856: < *
        !          5857: < *      EXIT POINT
        !          5858: < *
        !          5859: < DTCH6  MOV  DTCNB,XR         POSSIBLE VRBLK PTR
        !          5860: <        JSR  SETVR            RESET VRBLK IF NECESSARY
        !          5861: <        EXI                   RETURN
        !          5862: <        ENP                   END PROCEDURE DTACH
        !          5863: <        EJC
        !          5864: < *
        !          5865: 15069c13812
        !          5866: <        WTB  XR               CONVERT TO BYTE OFFSET
        !          5867: ---
        !          5868: >        WTB  XR               CONVERT TO BAU OFFSET
        !          5869: 15092,15093c13835
        !          5870: < *      DMARG EQ 2            FULL DUMP (INCL ARRAYS ETC.)
        !          5871: < *      DMARG GE 3            CORE DUMP
        !          5872: ---
        !          5873: > *      DMARG GE 2            FULL DUMP (INCL ARRAYS ETC.)
        !          5874: 15101d13842
        !          5875: <        BGT  XR,=NUM02,DMP29  JUMP IF CORE DUMP REQUIRED
        !          5876: 15108,15110c13849
        !          5877: <        JSR  PRTST            PRINT IT
        !          5878: <        JSR  PRTNL            TERMINATE PRINT LINE
        !          5879: <        JSR  PRTNL            AND PRINT A BLANK LINE
        !          5880: ---
        !          5881: >        JSR  PRTFB            PRINT IT
        !          5882: 15227,15228c13966,13967
        !          5883: < DMP11  JSR  PRTNL            PRINT BLANK LINE
        !          5884: <        JSR  PRTNL            AND ANOTHER
        !          5885: ---
        !          5886: > DMP11  JSR  PRTFH            PRINT BLANK LINE
        !          5887: >        JSR  PRTFH            AND ANOTHER
        !          5888: 15230,15232c13969
        !          5889: <        JSR  PRTST            PRINT HEADING
        !          5890: <        JSR  PRTNL            END LINE
        !          5891: <        JSR  PRTNL            PRINT ONE BLANK LINE
        !          5892: ---
        !          5893: >        JSR  PRTFB            PRINT HEADING
        !          5894: 15256,15257c13993
        !          5895: <        JSR  PRTVL            PRINT KEYWORD VALUE
        !          5896: <        JSR  PRTNL            TERMINATE PRINT LINE
        !          5897: ---
        !          5898: >        JSR  PRTVF            PRINT KEYWORD VALUE
        !          5899: 15276c14012
        !          5900: <        BEQ  WA,=B$BCT,DMP30  JUMP IF BUFFER
        !          5901: ---
        !          5902: >        BEQ  WA,=B$BCT,DMP29  JUMP IF BUFFER
        !          5903: 15310c14046
        !          5904: <        JSR  PRTNL            PRINT BLANK LINE
        !          5905: ---
        !          5906: >        JSR  PRTFH            PRINT BLANK LINE
        !          5907: 15312c14048
        !          5908: <        JSR  PRTVL            PRINT BLOCK VALUE (FOR TITLE)
        !          5909: ---
        !          5910: >        JSR  PRTVF            PRINT BLOCK VALUE (FOR TITLE)
        !          5911: 15314d14049
        !          5912: <        JSR  PRTNL            END PRINT LINE
        !          5913: 15380,15384d14114
        !          5914: < *
        !          5915: < *      CALL SYSTEM CORE DUMP ROUTINE
        !          5916: < *
        !          5917: < DMP29  JSR  SYSDM            CALL IT
        !          5918: <        BRN  DMP28            RETURN
        !          5919: 15393,15395c14123,14124
        !          5920: < DMP30  JSR  PRTNL            PRINT BLANK LINE
        !          5921: <        JSR  PRTVL            PRINT VALUE ID FOR TITLE
        !          5922: <        JSR  PRTNL            FORCE NEW LINE
        !          5923: ---
        !          5924: > DMP29  JSR  PRTFH            PRINT BLANK LINE
        !          5925: >        JSR  PRTVF            PRINT VALUE ID FOR TITLE
        !          5926: 15415,15416c14144
        !          5927: <        JSR  PRTCH            PRINT IT
        !          5928: <        JSR  PRTNL            PRINT NEW LINE
        !          5929: ---
        !          5930: >        JSR  PRTCF            PRINT IT
        !          5931: 15430c14158
        !          5932: <        JSR  PRTIS            PRINT ERROR PTR OR BLANK LINE
        !          5933: ---
        !          5934: >        JSR  PRTFH            PRINT ERROR PTR OR BLANK LINE
        !          5935: 15448,15450c14176
        !          5936: <        JSR  PRTST            PRINT ERROR MESSAGE TEXT
        !          5937: <        JSR  PRTIS            PRINT LINE
        !          5938: <        JSR  PRTIS            PRINT BLANK LINE
        !          5939: ---
        !          5940: >        JSR  PRTFB            PRINT ERROR MESSAGE TEXT
        !          5941: 15465a14192
        !          5942: >        BNZ  EROSN,ERT03      SKIP IF SPECIAL EROSI RETURN
        !          5943: 15483a14211,14216
        !          5944: > *
        !          5945: > *      SPECIAL CASE SET UP BY EROSI RETURN TO AVOID SYSEM CALL
        !          5946: > *
        !          5947: > ERT03  ZER  EROSN            CLEAR FLAG
        !          5948: >        MOV  R$ETX,XR         GET ERROR MESSAGE TEXT
        !          5949: >        BRN  ERT01            RETURN WITHOUT MAKING SYSEM CALL
        !          5950: 15498,15499d14230
        !          5951: < *      PPM  LOC              TRANSFER LOC FOR SUCCESSFUL EVAL
        !          5952: < *      (THE NORMAL RETURN IS NEVER TAKEN)
        !          5953: 15507c14238
        !          5954: < EVALI  PRC  R,4              ENTRY POINT (RECURSIVE)
        !          5955: ---
        !          5956: > EVALI  PRC  R,3              ENTRY POINT (RECURSIVE)
        !          5957: 15518c14249
        !          5958: <        EXI  4                TAKE SUCCESSFUL EXIT
        !          5959: ---
        !          5960: >        EXI                   SUCCESSFUL RETURN
        !          5961: 15621a14353
        !          5962: > *      (WA)                  APPROPRIATE MULTI CHARACTER PCODE
        !          5963: 15626,15627c14358
        !          5964: < *      PPM  LOC              TRANSFER LOC FOR SUCCESSFUL EVAL
        !          5965: < *      (THE NORMAL RETURN IS NEVER TAKEN)
        !          5966: ---
        !          5967: > *      (XL)                  PCODE OF NEW NODE (ENTRY WA)
        !          5968: 15629c14360
        !          5969: < *      (XL,WC,RA)            DESTROYED
        !          5970: ---
        !          5971: > *      (WA,WC,RA)            DESTROYED
        !          5972: 15634a14366,14367
        !          5973: > *      THIS IS DONE BY THE USUAL INDIRECT BRANCH THROUGH THE
        !          5974: > *      PCODE PASSED IN WA.
        !          5975: 15636c14369,14370
        !          5976: < EVALS  PRC  R,3              ENTRY POINT (RECURSIVE)
        !          5977: ---
        !          5978: > EVALS  PRC  R,2              ENTRY POINT (RECURSIVE)
        !          5979: >        MOV  WA,-(XS)         KEEP PCODE
        !          5980: 15638a14373
        !          5981: >        MOV  (XS)+,WA         RECOVER PCODE
        !          5982: 15644c14379
        !          5983: <        MOV  =P$BRK,XL        APPROPRIATE PCODE FOR OUR USE
        !          5984: ---
        !          5985: >        MOV  WA,XL            APPROPRIATE PCODE FOR OUR USE
        !          5986: 15649c14384,14385
        !          5987: <        EXI  3                TAKE SUCCESS RETURN
        !          5988: ---
        !          5989: >        MOV  (XR),XL          GET PCODE
        !          5990: >        EXI                   TAKE SUCCESS RETURN
        !          5991: 15653c14389,14390
        !          5992: < EVLS1  EXI  2                TAKE FAILURE RETURN
        !          5993: ---
        !          5994: > EVLS1  MOV  (XS)+,WA         POP STACK
        !          5995: >        EXI  2                TAKE FAILURE RETURN
        !          5996: 15733c14470
        !          5997: < EVLX3  MOV  (XS)+,XR         LOAD VALUE
        !          5998: ---
        !          5999: > EVLXV  MOV  (XS)+,XR         LOAD VALUE
        !          6000: 15735c14472
        !          6001: <        ERB  249,EXPRESSION EVALUATED BY NAME RETURNED VALUE
        !          6002: ---
        !          6003: >        ERB  218,EXPRESSION EVALUATED BY NAME RETURNED VALUE
        !          6004: 15739c14476
        !          6005: < EVLX4  MOV  (XS)+,WA         LOAD NAME OFFSET
        !          6006: ---
        !          6007: > EVLXN  MOV  (XS)+,WA         LOAD NAME OFFSET
        !          6008: 15743c14480
        !          6009: <        PPM  EVLX6            JUMP IF FAILURE DURING ACCESS
        !          6010: ---
        !          6011: >        PPM  EVLXF            JUMP IF FAILURE DURING ACCESS
        !          6012: 15752c14489
        !          6013: < EVLX6  MNZ  WB               NOTE UNSUCCESSFUL
        !          6014: ---
        !          6015: > EVLXF  MNZ  WB               NOTE UNSUCCESSFUL
        !          6016: 15806c14543
        !          6017: <        BTW  WA               CONVERT BYTE COUNT TO WORD COUNT
        !          6018: ---
        !          6019: >        BTW  WA               CONVERT BAU COUNT TO WORD COUNT
        !          6020: 15985c14722
        !          6021: <        MOV  =OPDVP,XR        ELSE POINT TO UNMISTAKABLE CONCAT.
        !          6022: ---
        !          6023: >        MOV  =OPDVP,XR        ELSE POINT TO UNMISTAKEABLE CONCAT
        !          6024: 15987c14724
        !          6025: < *      MERGE HERE WHEN XR SET UP WITH PROPER CONCATENATION DVBLK
        !          6026: ---
        !          6027: > *      MERGE WITH CORRECT CONCATENATION DVBLK IN XR
        !          6028: 15991c14728
        !          6029: <        ERB  220,SYNTAX ERROR. MISSING OPERATOR
        !          6030: ---
        !          6031: >        ERB  219,SYNTAX ERROR. MISSING OPERATOR
        !          6032: 15998c14735
        !          6033: <        ERB  221,SYNTAX ERROR. MISSING OPERAND
        !          6034: ---
        !          6035: >        ERB  220,SYNTAX ERROR. MISSING OPERAND
        !          6036: 16023c14760
        !          6037: < EXP08  ERB  222,SYNTAX ERROR. INVALID USE OF LEFT BRACKET
        !          6038: ---
        !          6039: > EXP08  ERB  221,SYNTAX ERROR. INVALID USE OF LEFT BRACKET
        !          6040: 16049c14786
        !          6041: <        ERB  223,SYNTAX ERROR. INVALID USE OF COMMA
        !          6042: ---
        !          6043: >        ERB  222,SYNTAX ERROR. INVALID USE OF COMMA
        !          6044: 16062c14799
        !          6045: <        ERB  224,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS
        !          6046: ---
        !          6047: >        ERB  223,SYNTAX ERROR. UNBALANCED RIGHT PARENTHESIS
        !          6048: 16080c14817
        !          6049: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          6050: ---
        !          6051: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          6052: 16124c14861
        !          6053: <        ERB  225,SYNTAX ERROR. UNBALANCED RIGHT BRACKET
        !          6054: ---
        !          6055: >        ERB  224,SYNTAX ERROR. UNBALANCED RIGHT BRACKET
        !          6056: 16153c14890
        !          6057: < EXP21  ERB  226,SYNTAX ERROR. MISSING RIGHT PAREN
        !          6058: ---
        !          6059: > EXP21  ERB  225,SYNTAX ERROR. MISSING RIGHT PAREN
        !          6060: 16157c14894
        !          6061: < EXP22  ERB  227,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO
        !          6062: ---
        !          6063: > EXP22  ERB  226,SYNTAX ERROR. RIGHT PAREN MISSING FROM GOTO
        !          6064: 16161c14898
        !          6065: < EXP23  ERB  228,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO
        !          6066: ---
        !          6067: > EXP23  ERB  227,SYNTAX ERROR. RIGHT BRACKET MISSING FROM GOTO
        !          6068: 16165c14902
        !          6069: < EXP24  ERB  229,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET
        !          6070: ---
        !          6071: > EXP24  ERB  228,SYNTAX ERROR. MISSING RIGHT ARRAY BRACKET
        !          6072: 16269c15006
        !          6073: < EXDM1  BLE  1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL
        !          6074: ---
        !          6075: > EXDM1  BLE  1(XS),=NUM05,EXDM2 JUMP IF STACK BOTTOM (SAVED LEVEL)
        !          6076: 16324d15060
        !          6077: < .IF    .CULC
        !          6078: 16326,16369d15061
        !          6079: < *      FLSTG -- FOLD STRING TO UPPER CASE
        !          6080: < *
        !          6081: < *      FLSTG FOLDS A CHARACTER STRING CONTAINING LOWER CASE
        !          6082: < *      CHARACCTERS TO ONE CONTAINING UPPER CASE CHARACTERS.
        !          6083: < *      FOLDING IS ONLY DONE IF &CASE (KVCAS) IS NOT ZERO.
        !          6084: < *
        !          6085: < *      (XR)                  STRING ARGUMENT
        !          6086: < *      (WA)                  LENGTH OF STRING
        !          6087: < *      JSR  FLSTG            CALL TO FOLD STRING
        !          6088: < *      (XR)                  RESULT STRING (POSSIBLY ORIGINAL)
        !          6089: < *      (WC)                  DESTROYED
        !          6090: < *
        !          6091: < FLSTG  PRC  R,0              ENTRY POINT
        !          6092: <        BZE  KVCAS,FST99      SKIP IF &CASE IS 0
        !          6093: <        MOV  XL,-(XS)         SAVE XL ACROSS CALL
        !          6094: <        MOV  XR,-(XS)         SAVE ORIGINAL SCBLK PTR
        !          6095: <        JSR  ALOCS            ALLOCATE NEW STRING BLOCK
        !          6096: <        MOV  (XS),XL          POINT TO ORIGINAL SCBLK
        !          6097: <        MOV  XR,-(XS)         SAVE POINTER TO NEW SCBLK
        !          6098: <        PLC  XL               POINT TO ORIGINAL CHARS
        !          6099: <        PLC  XR               POINT TO NEW CHARS
        !          6100: <        ZER  -(XS)            INIT DID FOLD FLAG
        !          6101: <        LCT  WC,WC            LOAD LOOP COUNTER
        !          6102: < FST01  LCH  WA,(XL)+         LOAD CHARACTER
        !          6103: <        BGT  =CH$$A,WA,FST02  SKIP IF LESS THAN LC A
        !          6104: <        BGT  WA,=CH$$$,FST02  SKIP IF GREATER THAN LC Z
        !          6105: <        FLC  WA               FOLD CHARACTER TO UPPER CASE
        !          6106: <        MNZ  (XS)             SET DID FOLD CHARACTER FLAG
        !          6107: < FST02  SCH  WA,(XR)+         STORE (POSSIBLY FOLDED) CHARACTER
        !          6108: <        BCT  WC,FST01         LOOP THRU ENTIRE STRING
        !          6109: <        CSC  XR               COMPLETE STORE CHARACTERS
        !          6110: <        BNZ  (XS)+,FST10      SKIP IF FOLDING DONE
        !          6111: <        MOV  (XS)+,DNAMP      DO NOT NEED NEW SCBLK
        !          6112: <        MOV  (XS)+,XR         RETURN ORIGINAL SCBLK
        !          6113: <        BRN  FST20            MERGE BELOW
        !          6114: < FST10  MOV  (XS)+,XR         RETURN NEW SCBLK
        !          6115: <        ICA  XS               THROW AWAY ORIGINAL SCBLK POINTER
        !          6116: < FST20  MOV  SCLEN(XR),WA     RELOAD STRING LENGTH
        !          6117: <        MOV  (XS)+,XL         RESTORE XL
        !          6118: < FST99  EXI                   RETURN
        !          6119: <        ENP
        !          6120: <        EJC
        !          6121: < .FI
        !          6122: < *
        !          6123: 16414c15106
        !          6124: < *      ENTRY VALUE OF WB IS THE NUMBER OF BYTES TO MOVE UP.
        !          6125: ---
        !          6126: > *      ENTRY VALUE OF WB IS THE NUMBER OF BAUS TO MOVE UP.
        !          6127: 16549,16550c15241,15242
        !          6128: < *                            BYTES. SET TO THE ADDRESS OF THE
        !          6129: < *                            FIRST BYTE WHILE ACTUALLY SCANNING
        !          6130: ---
        !          6131: > *                            BAUS. SET TO THE ADDRESS OF THE
        !          6132: > *                            FIRST BAU WHILE ACTUALLY SCANNING
        !          6133: 16570a15263,15265
        !          6134: > .IF    .CEPP
        !          6135: >        BOD  WA,GBC07         JUMP IF ENTRY POINTER (UNUSED)
        !          6136: > .ELSE
        !          6137: 16572a15268
        !          6138: > .FI
        !          6139: 16578a15275,15277
        !          6140: > .IF    .CEPP
        !          6141: >        BEV  WA,GBC06         LOOP BACK IF NOT END OF CHAIN
        !          6142: > .ELSE
        !          6143: 16580a15280
        !          6144: > .FI
        !          6145: 16603a15304,15306
        !          6146: > .IF    .CEPP
        !          6147: >        BEV  WA,GBC09         JUMP IF IN USE
        !          6148: > .ELSE
        !          6149: 16605a15309
        !          6150: > .FI
        !          6151: 16672c15376
        !          6152: <        ERB  250,INSUFFICIENT MEMORY TO COMPLETE DUMP
        !          6153: ---
        !          6154: >        ERB  229,INSUFFICIENT MEMORY TO COMPLETE DUMP
        !          6155: 16702a15407,15410
        !          6156: > .IF    .CRPP
        !          6157: >        BOD  XL,GPF02         JUMP IF NOT PTR INTO DYNAMIC AREA
        !          6158: > .ELSE
        !          6159: > .FI
        !          6160: 16714a15423,15425
        !          6161: > .IF    .CEPP
        !          6162: >        BOD  WA,GPF03         JUMP IF NOT ALREADY PROCESSED
        !          6163: > .ELSE
        !          6164: 16716a15428
        !          6165: > .FI
        !          6166: 16752a15465
        !          6167: >        IFF  BL$CO,GPF19      COBLK
        !          6168: 16889a15603,15608
        !          6169: > *
        !          6170: > *      COBLK
        !          6171: > *
        !          6172: > GPF19  MOV  *COSI$,WA        SET LENGTH
        !          6173: >        MOV  *CONXT,WB        AND OFFSET
        !          6174: >        BRN  GPF05            ALL SET
        !          6175: 16890a15610,15611
        !          6176: > .IF    .CNBF
        !          6177: > .ELSE
        !          6178: 16892a15614,15648
        !          6179: > *      GTBUF -- GET BUFFER
        !          6180: > *
        !          6181: > *      GTBUF IS PASSED AN OBJECT AND RETURNS A BUFFER IF
        !          6182: > *      POSSIBLE.  UNLESS THE OBJECT IS ALREADY A BUFFER,
        !          6183: > *      THIS INVOLVES A CONVERSION TO STRING AND THEN
        !          6184: > *      STRING TO BUFFER.
        !          6185: > *
        !          6186: > *      (XR)                  OBJECT TO BE CONVERTED
        !          6187: > *      JSR  GTBUF            CALL TO GET BUFFER
        !          6188: > *      PPM  LOC              TRANSFER LOC FOR CONVERT IMPOSSIBLE
        !          6189: > *      (XR)                  RESULTING BUFFER
        !          6190: > *      (XL,WA,WB,WC)         DESTROYED
        !          6191: > *
        !          6192: > GTBUF  PRC  E,1              ENTRY POINT
        !          6193: >        BEQ  (XR),=B$BCT,GTB01 EXIT IF ALREADY BUFFER
        !          6194: >        MOV  XR,-(XS)         STACK TO CONVERT TO STRING
        !          6195: >        JSR  GTSTG            CONVERT TO STRING
        !          6196: >        PPM  GTB02            CONVERSION ERROR
        !          6197: >        MOV  XR,XL            SAVE STRING POINTER
        !          6198: >        JSR  ALOBF            ALLOCATE BUFFER OF SAME SIZE
        !          6199: >        JSR  INSBF            COPY IN THE STRING
        !          6200: >        PPM                   ALREADY STRING - CANT FAIL TO CNV
        !          6201: >        PPM                   MUST BE ENOUGH ROOM
        !          6202: > *
        !          6203: > *      MERGE TO EXIT WITH BUFFER CONTROL BLK IN (XR)
        !          6204: > *
        !          6205: > GTB01  EXI                   RETURN TO CALLER
        !          6206: > *
        !          6207: > *      HERE ON CONVERSION FAILURE
        !          6208: > *
        !          6209: > GTB02  EXI  1                TAKE FAILURE EXIT
        !          6210: >        ENP
        !          6211: > .FI
        !          6212: >        EJC
        !          6213: > *
        !          6214: 16895c15651
        !          6215: < *      GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBL
        !          6216: ---
        !          6217: > *      GTARR IS PASSED AN OBJECT AND RETURNS AN ARRAY IF POSSIBLE
        !          6218: 16907c15663,15664
        !          6219: <        BNE  WA,=B$TBT,GTA9A  ELSE FAIL IF NOT A TABLE (SGD02)
        !          6220: ---
        !          6221: >        MOV  XR,-(XS)         PLACE POSSIBLE TBBLK PTR ON STACK
        !          6222: >        BNE  WA,=B$TBT,GTAR9  ELSE FAIL IF NOT A TABLE
        !          6223: 16911d15667
        !          6224: <        MOV  XR,-(XS)         REPLACE TBBLK POINTER ON STACK
        !          6225: 16973c15729
        !          6226: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          6227: ---
        !          6228: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          6229: 17027,17031c15783,15784
        !          6230: < GTAR9  MOV  (XS)+,XR         RESTORE STACK FOR CONV ERR (SGD02)
        !          6231: < *
        !          6232: < *      MERGE TO TAKE CONVERT ERROR WHEN STACK ADJUSTED OK
        !          6233: < *
        !          6234: < GTA9A  EXI  1                RETURN
        !          6235: ---
        !          6236: > GTAR9  MOV  (XS)+,XR         CLEAR UP STACK
        !          6237: >        EXI  1                RETURN
        !          6238: 17095,17099c15848,15852
        !          6239: < *      CHECK THE LAST CHARACTER OF THE STRING FOR COLON OR
        !          6240: < *      SEMICOLON.  THESE CHARACTERS CAN LEGITIMATELY END AN
        !          6241: < *      EXPRESSION IN OPEN CODE, SO EXPAN WILL NOT DETECT THEM
        !          6242: < *      AS ERRORS, BUT THEY ARE INVALID AS TERMINATORS FOR A
        !          6243: < *      STRING THAT IS BEING CONVERTED TO EXPRESSION FORM.
        !          6244: ---
        !          6245: > *      CHECK THE LAST CHAR OF STRING FOR COLON OR
        !          6246: > *      SEMICOLON. THEY CAN LEGITIMATELY END AN EXPRESSION
        !          6247: > *      IN OPEN CODE, SO EXPAN WILL NOT FAIL THEM BUT THEY ARE
        !          6248: > *      INVALID AS TERMINATORS FOR A STRING WHICH IS TO BE
        !          6249: > *      CONVERTED TO EXPRESSION FORM.
        !          6250: 17101,17105c15854,15858
        !          6251: <        MOV  XR,XL            COPY INPUT STRING POINTER (REG06)
        !          6252: <        PLC  XL,WA            POINT ONE PAST THE STRING END (REG06)
        !          6253: <        LCH  XL,-(XL)         FETCH THE LAST CHARACTER (REG06)
        !          6254: <        BEQ  XL,=CH$CL,GTEX2  ERROR IF IT IS A SEMICOLON (REG06)
        !          6255: <        BEQ  XL,=CH$SM,GTEX2  OR IF IT IS A COLON (REG06)
        !          6256: ---
        !          6257: >        MOV  XR,XL            COPY ARGUMENT STRING
        !          6258: >        PLC  XL,WA            POINT PAST STRING END
        !          6259: >        LCH  XL,-(XL)         GET LAST CHAR
        !          6260: >        BEQ  XL,=CH$CL,GTEX2  FAIL IF COLON
        !          6261: >        BEQ  XL,=CH$SM,GTEX2  FAIL IF SEMICOLON
        !          6262: 17196c15949
        !          6263: <        BEQ  WA,=B$ICL,GTN34  JUMP IF INTEGER (NO CONVERSION)
        !          6264: ---
        !          6265: >        BEQ  WA,=B$ICL,GTN3A  JUMP IF INTEGER (NO CONVERSION)
        !          6266: 17199c15952
        !          6267: <        BEQ  WA,=B$RCL,GTN34  JUMP IF REAL (NO CONVERSION)
        !          6268: ---
        !          6269: >        BEQ  WA,=B$RCL,GTN3A  JUMP IF REAL (NO CONVERSION)
        !          6270: 17204a15958
        !          6271: >        STI  GTNSV            SAVE IA
        !          6272: 17357,17359c16111,16113
        !          6273: < .IF    .CULC
        !          6274: <        BEQ  WB,=CH$$E,GTN15  JUMP IF E FOR EXPONENT
        !          6275: <        BEQ  WB,=CH$$D,GTN15  JUMP IF D FOR EXPONENT
        !          6276: ---
        !          6277: > .IF    .CASL
        !          6278: >        BEQ  WB,=CH$$E,GTN15  JUMP FOR EXPT
        !          6279: >        BEQ  WB,=CH$$D,GTN15  JUMP FOR EXPT
        !          6280: 17462c16216
        !          6281: <        WTB  WA               CONVERT REMAINING SCALE TO BYTE OFS
        !          6282: ---
        !          6283: >        WTB  WA               CONVERT REMAINING SCALE TO BAU OFS
        !          6284: 17490c16244
        !          6285: <        WTB  WA               CONVERT REMAINING SCALE TO BYTE OFS
        !          6286: ---
        !          6287: >        WTB  WA               CONVERT REMAINING SCALE TO BAU OFS
        !          6288: 17524c16278,16279
        !          6289: < GTN34  EXI                   RETURN TO GTNUM CALLER
        !          6290: ---
        !          6291: > GTN34  LDI  GTNSV            RECOVER IA
        !          6292: > GTN3A  EXI                   RETURN TO GTNUM CALLER
        !          6293: 17538a16294
        !          6294: >        LDI  GTNSV            RECOVER IA
        !          6295: 17552d16307
        !          6296: < *      (WA,WB)               DESTROYED (CONVERSION ERROR ONLY)
        !          6297: 17558a16314
        !          6298: >        BRN  GNV01            FAIL
        !          6299: 17559a16316,16320
        !          6300: > *      RESTORE REGS AND FAIL
        !          6301: > *
        !          6302: > GNV00  MOV  GNVSA,WA         RESTORE REGS
        !          6303: >        MOV  GNVSB,WB
        !          6304: > *
        !          6305: 17570,17574c16331,16332
        !          6306: <        PPM  GNV01            JUMP IF CONVERSION ERROR
        !          6307: <        BZE  WA,GNV01         NULL STRING IS AN ERROR
        !          6308: < .IF    .CULC
        !          6309: <        JSR  FLSTG            FOLD LOWER CASE TO UPPER CASE
        !          6310: < .FI
        !          6311: ---
        !          6312: >        PPM  GNV00            JUMP IF CONVERSION ERROR
        !          6313: >        BZE  WA,GNV00         NULL STRING IS AN ERROR
        !          6314: 17575a16334,16339
        !          6315: > .IF    .CASL
        !          6316: >        MOV  XR,XL            COPY STRING POINTER
        !          6317: >        ZER  WB               ZERO OFFSET
        !          6318: >        JSR  SBSTG            CONVERT TO PREFERRED CASE
        !          6319: >        MOV  SCLEN(XR),WA     RECOVER STRING LENGTH
        !          6320: > .FI
        !          6321: 17586c16350
        !          6322: <        WTB  WC               CONVERT OFFSET TO BYTES
        !          6323: ---
        !          6324: >        WTB  WC               CONVERT OFFSET TO BAUS
        !          6325: 17635c16399
        !          6326: <        WTB  XL               CONVERT TO BYTE OFFSET
        !          6327: ---
        !          6328: >        WTB  XL               CONVERT TO BAU OFFSET
        !          6329: 17687c16451
        !          6330: <        WTB  WA               CONVERT LENGTH TO BYTES
        !          6331: ---
        !          6332: >        WTB  WA               CONVERT LENGTH TO BAUS
        !          6333: 17703c16467
        !          6334: <        WTB  WA               CONVERT TO LENGTH IN BYTES
        !          6335: ---
        !          6336: >        WTB  WA               CONVERT TO LENGTH IN BAUS
        !          6337: 17826c16590
        !          6338: < *      MERGE HERE TO EXIT OF NO CONVERSION REQUIRED
        !          6339: ---
        !          6340: > *      MERGE HERE TO EXIT IF NO CONVERSION REQUIRED
        !          6341: 17901c16665
        !          6342: <        BGT  WC,MXLEN,GTSM3   OR IF TOO SMALL
        !          6343: ---
        !          6344: >        BGT  WC,MXLEN,GTSM3   OR IF TOO LARGE
        !          6345: 17979c16743
        !          6346: < .IF    .CNCI
        !          6347: ---
        !          6348: > .IF    .CSCI
        !          6349: 18008d16771
        !          6350: < .FI
        !          6351: 18023a16787
        !          6352: > .FI
        !          6353: 18181a16946,16948
        !          6354: > .IF    .CPLC
        !          6355: >        MOV  =CH$$E,WA        GET CHAR LETTER E
        !          6356: > .ELSE
        !          6357: 18182a16950
        !          6358: > .FI
        !          6359: 18265c17033
        !          6360: <        MOV  BCBUF(XL),XL     POINT TO BFBLK
        !          6361: ---
        !          6362: >        MOV  BCBUF(XL),XL     POINT TOBFBLK
        !          6363: 18326c17094
        !          6364: < *      HASHS IS USED TO CONVERT A STRING TO A UNIQUE INTEGER
        !          6365: ---
        !          6366: > *      HASHS REPRODUCIBLY MAPS A STRING TO AN INTEGER
        !          6367: 18337c17105
        !          6368: < *      START WITH THE LENGTH OF THE STRING (SGD07)
        !          6369: ---
        !          6370: > *      START WITH THE LENGTH OF THE STRING
        !          6371: 18383,18384c17151,17154
        !          6372: <        MFI  XR,ICBL1         COPY SMALL INTEGERS
        !          6373: <        BLE  XR,=NUM02,ICBL3  JUMP IF 0,1 OR 2
        !          6374: ---
        !          6375: >        ILT  ICBL1            SKIP IF NEGATIVE
        !          6376: >        SBI  INTV2            REDUCE BY TWO
        !          6377: >        ILE  ICBL3            JUMP IF 0 , 1 OR 2
        !          6378: >        ADI  INTV2            RESTORE VALUE
        !          6379: 18405c17175,17177
        !          6380: < ICBL3  WTB  XR               CONVERT INTEGER TO OFFSET
        !          6381: ---
        !          6382: > ICBL3  ADI  INTV2            RESTORE VALUE
        !          6383: >        MFI  XR               CONVERT TO SHORT INTEGER
        !          6384: >        WTB  XR               CONVERT INTEGER TO OFFSET
        !          6385: 18503c17275
        !          6386: < *      INOUT - USED TO INITIALISE INPUT AND OUTPUT VARIABLES
        !          6387: ---
        !          6388: > *      INOUT - USED TO INITIALISE .INPUT .OUTPUT .TERMINAL
        !          6389: 18506c17278
        !          6390: < *      (WB)                  TRBLK TYPE
        !          6391: ---
        !          6392: > *      (WB)                  TRBLK TYPE (TRTYP FIELD)
        !          6393: 18508,18509d17279
        !          6394: < *      (XL)                  VRBLK PTR
        !          6395: < *      (XR)                  TRBLK PTR
        !          6396: 18521c17291
        !          6397: <        JSR  GTNVR            BUILD VRBLK
        !          6398: ---
        !          6399: >        JSR  GTNVR            FIND OR BUILD VRBLK
        !          6400: 18524,18525c17294,17296
        !          6401: <        MOV  (XS)+,WB         GET TRTER FIELD
        !          6402: <        ZER  XL               ZERO TRFPT
        !          6403: ---
        !          6404: >        MOV  (XS)+,WB         GET TRTYP FIELD
        !          6405: >        ZER  XL               ZERO TRTRI
        !          6406: >        MOV  VRSVP(XR),XR     GET SVBLK POINTER
        !          6407: 18528,18531c17299,17301
        !          6408: <        MOV  VRSVP(XL),TRTER(XR) STORE SVBLK POINTER
        !          6409: <        MOV  XR,VRVAL(XL)     STORE TRBLK PTR IN VRBLK
        !          6410: <        MOV  =B$VRA,VRGET(XL) SET TRAPPED ACCESS
        !          6411: <        MOV  =B$VRV,VRSTO(XL) SET TRAPPED STORE
        !          6412: ---
        !          6413: >        MOV  *VRVAL,WA        OFFSET TO VALUE FIELD
        !          6414: >        JSR  TRCHN            PUT TRBLK IN TRACE CHAIN
        !          6415: >        PPM                   CANT FAIL
        !          6416: 18542,18543c17312,17313
        !          6417: < *      SECTION TO BE REPLACED IS DIFFERENT THAN THE LENGTH OF
        !          6418: < *      THE GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND,
        !          6419: ---
        !          6420: > *      SECTION TO BE REPLACED DIFFERS FROM THAT OF THE
        !          6421: > *      GIVEN STRING, AND THE REPLACEMENT IS NOT AN APPEND,
        !          6422: 18547,18548c17317,17318
        !          6423: < *      (XR)                  POINTER TO BFBLK
        !          6424: < *      (XL)                  OBJECT WHICH IS STRING CONVERTABLE
        !          6425: ---
        !          6426: > *      (XR)                  POINTER TO BCBLK
        !          6427: > *      (XL)                  OBJECT WHICH IS STRING CONVERTIBLE
        !          6428: 18552,18553c17322,17324
        !          6429: < *      PPM  LOC              THREAD IF (XR) NOT CONVERTABLE
        !          6430: < *      PPM  LOC              THREAD IF INSERT NOT POSSIBLE
        !          6431: ---
        !          6432: > *      PPM  LOC              ERROR IF (XR) NOT CONVERTIBLE
        !          6433: > *      PPM  LOC              FAIL IF INSERT NOT POSSIBLE
        !          6434: > *      (XL,WA,WB,WC)         DESTROYED
        !          6435: 18562d17332
        !          6436: <        MOV  WC,INSSC         SAVE ENTRY WC
        !          6437: 18568d17337
        !          6438: <        MOV  XL,-(XS)         SAVE ENTRY XL
        !          6439: 18570c17339
        !          6440: <        MOV  XL,-(XS)         STACK AGAIN FOR GTSTG
        !          6441: ---
        !          6442: >        MOV  XL,-(XS)         STACK STRING POINTER FOR GTSTG
        !          6443: 18572c17341
        !          6444: <        PPM  INS05            TAKE STRING CONVERT ERR EXIT
        !          6445: ---
        !          6446: >        PPM  INS06            TAKE STRING CONVERT ERR EXIT
        !          6447: 18574c17343,17346
        !          6448: <        MOV  (XS),XR          RESTORE BCBLK PTR
        !          6449: ---
        !          6450: >        MOV  (XS)+,XR         RESTORE BCBLK PTR
        !          6451: >        MOV  XR,INSBC         BCBLK PTR - NO DANGER OF GARB COLLN
        !          6452: >        MOV  BCBUF(XR),XR     POINT TO BFBLK
        !          6453: >        MOV  XR,INSBB         BFBLK PTR - NO DANGER OF GARB COLLN
        !          6454: 18577,18579c17349,17350
        !          6455: <        MOV  BCBUF(XR),XR     POINT TO BFBLK
        !          6456: <        BGT  WA,BFALC(XR),INS06 FAIL IF RESULT EXCEEDS ALLOCATION
        !          6457: <        MOV  (XS),XR          RESTORE BCBLK PTR
        !          6458: ---
        !          6459: >        BGT  WA,BFALC(XR),INS07 FAIL IF RESULT EXCEEDS ALLOCATION
        !          6460: >        MOV  INSBC,XR         RESTORE BCBLK PTR
        !          6461: 18586,18588c17357
        !          6462: <        BZE  WA,INS04         SKIP SHIFT IF NOTHING TO DO
        !          6463: <        BEQ  INSSB,SCLEN(XL),INS04 SKIP SHIFT IF LENGTHS MATCH
        !          6464: <        MOV  BCBUF(XR),XR     POINT TO BFBLK
        !          6465: ---
        !          6466: >        MOV  INSBB,XR         POINT TO BFBLK
        !          6467: 18590c17359,17361
        !          6468: <        BLO  INSSB,SCLEN(XL),INS01 BRN IF SHFT IS FOR MORE ROOM
        !          6469: ---
        !          6470: >        BZE  WA,INS02         SKIP SHIFT IF NOTHING TO DO
        !          6471: >        BEQ  INSSB,SCLEN(XL),INS02 SKIP SHIFT IF LENGTHS MATCH
        !          6472: >        BLO  INSSB,SCLEN(XL),INS01 BRN IF SHIFT IS FOR MORE ROOM
        !          6473: 18597c17368
        !          6474: < *      SEGMENT BEING REPLACED.)  REGISTERS ARE SET AS:
        !          6475: ---
        !          6476: > *      SEGMENT BEING REPLACED). REGISTERS ARE SET AS -
        !          6477: 18622c17393
        !          6478: < *      MERGE HERE AFTER MOVE TO ADJUST PADDING AT NEW BUFFER END
        !          6479: ---
        !          6480: > *      MERGE HERE AFTER POSSIBLE MOVE TO ADJUST ZERO FILL AT END
        !          6481: 18626a17398
        !          6482: >        BTC  WA               CONVERT TO CHAR COUNT
        !          6483: 18629,18630c17401
        !          6484: <        MOV  (XS),XR          GET BCBLK PTR
        !          6485: <        MOV  BCBUF(XR),XR     GET BFBLK PTR
        !          6486: ---
        !          6487: >        MOV  INSBB,XR         POINT TO BFBLK
        !          6488: 18633a17405
        !          6489: >        EJC
        !          6490: 18634a17407,17408
        !          6491: > *      INSBF (CONTINUED)
        !          6492: > *
        !          6493: 18639d17412
        !          6494: <        EJC
        !          6495: 18641,18642d17413
        !          6496: < *      INSBF (CONTINUED)
        !          6497: < *
        !          6498: 18646,18647c17417
        !          6499: < INS04  MOV  (XS),XR          GET BCBLK PTR
        !          6500: <        MOV  BCBUF(XR),XR     GET BFBLK PTR
        !          6501: ---
        !          6502: > INS04  MOV  INSBB,XR         POINT TO BFBLK
        !          6503: 18648a17419
        !          6504: >        BZE  WA,INS05         SKIP IF NO CHARS TO INSERT
        !          6505: 18652,18656c17423,17427
        !          6506: <        MOV  (XS)+,XR         RESTORE ENTRY XR
        !          6507: <        MOV  (XS)+,XL         RESTORE ENTRY XL
        !          6508: <        MOV  INSSA,WA         RESTORE ENTRY WA
        !          6509: <        MOV  INSSB,WB         RESTORE ENTRY WB
        !          6510: <        MOV  INSSC,WC         RESTORE ENTRY WC
        !          6511: ---
        !          6512: > *
        !          6513: > *      SUCCESSFUL RETURN
        !          6514: > *
        !          6515: > INS05  MOV  INSBC,XR         RESTORE ENTRY XR
        !          6516: >        ZER  XL               CLEAR GARBAGE CHAR POINTER
        !          6517: 18661,18665c17432
        !          6518: < INS05  MOV  (XS)+,XR         RESTORE ENTRY XR
        !          6519: <        MOV  (XS)+,XL         RESTORE ENTRY XL
        !          6520: <        MOV  INSSA,WA         RESTORE ENTRY WA
        !          6521: <        MOV  INSSB,WB         RESTORE ENTRY WB
        !          6522: <        MOV  INSSC,WC         RESTORE ENTRY WC
        !          6523: ---
        !          6524: > INS06  ICA  XS               DISCARD UNWANTED STACK TOP
        !          6525: 18670,18678c17437
        !          6526: < INS06  MOV  (XS)+,XR         RESTORE ENTRY XR
        !          6527: <        MOV  (XS)+,XL         RESTORE ENTRY XL
        !          6528: < *
        !          6529: < *      MERGE FOR LENGTH FAILURE EXIT WITH STACK SET
        !          6530: < *
        !          6531: < INS07  MOV  INSSA,WA         RESTORE ENTRY WA
        !          6532: <        MOV  INSSB,WB         RESTORE ENTRY WB
        !          6533: <        MOV  INSSC,WC         RESTORE ENTRY WC
        !          6534: <        EXI  2                ALTERNATE EXIT
        !          6535: ---
        !          6536: > INS07  EXI  2                ALTERNATE EXIT
        !          6537: 18681a17441
        !          6538: > *      IOFTG -- GET IOTAG
        !          6539: 18683c17443,17444
        !          6540: < *      IOFCB -- GET INPUT/OUTPUT FCBLK POINTER
        !          6541: ---
        !          6542: > *      USED TO FIND THE IOTAG (IF ANY) CORRESPONDING TO THE
        !          6543: > *      FILETAG ARGUMENT.
        !          6544: 18685,18691c17446,17448
        !          6545: < *      USED BY ENDFILE, EJECT AND REWIND TO FIND THE FCBLK
        !          6546: < *      (IF ANY) CORRESPONDING TO THEIR ARGUMENT.
        !          6547: < *
        !          6548: < *      -(XS)                 ARGUMENT
        !          6549: < *      JSR  IOFCB            CALL TO FIND FCBLK
        !          6550: < *      PPM  LOC              ARG IS AN UNSUITABLE NAME
        !          6551: < *      PPM  LOC              ARG IS NULL STRING
        !          6552: ---
        !          6553: > *      -(XS)                 FILETAG ARGUMENT
        !          6554: > *      JSR  IOFTG            CALL TO FIND IOTAG
        !          6555: > *      PPM  LOC              ARG IS AN UNSUITABLE FILETAG
        !          6556: 18693,18696c17450,17454
        !          6557: < *      (XL)                  PTR TO FILEARG1 VRBLK
        !          6558: < *      (XR)                  ARGUMENT
        !          6559: < *      (WA)                  FCBLK PTR OR 0
        !          6560: < *      (WB)                  DESTROYED
        !          6561: ---
        !          6562: > *      (XL)                  PTR TO FILETAG SCBLK
        !          6563: > *      (XR)                  PTR TO TRTIO TRACE BLK OR ZERO
        !          6564: > *      (WA)                  IOTAG OR ZERO
        !          6565: > *      (WB)                  PTR TO FILETAG VRBLK
        !          6566: > *      (WC)                  VALUE/0 FOR INTEGER/STRING FILETAG
        !          6567: 18698c17456
        !          6568: < IOFCB  PRC  N,2              ENTRY POINT
        !          6569: ---
        !          6570: > IOFTG  PRC  N,1              ENTRY POINT
        !          6571: 18700c17458
        !          6572: <        PPM  IOFC2            FAIL
        !          6573: ---
        !          6574: >        PPM  IOFT4            FAIL
        !          6575: 18702,18705c17460,17474
        !          6576: <        JSR  GTNVR            GET AS NATURAL VARIABLE
        !          6577: <        PPM  IOFC3            FAIL IF NULL
        !          6578: <        MOV  XL,WB            COPY STRING POINTER AGAIN
        !          6579: <        MOV  XR,XL            COPY VRBLK PTR FOR RETURN
        !          6580: ---
        !          6581: >        MOV  XR,-(XS)         STACK STRING
        !          6582: >        JSR  GTSMI            TRY CONVERSION TO INTEGER
        !          6583: >        PPM  IOFT5            SKIP IF CANT
        !          6584: >        PPM  IOFT5            SKIP IF CANT
        !          6585: > *
        !          6586: > *      MERGE WITH WC SET UP
        !          6587: > *
        !          6588: > IOFT1  MOV  WC,WB            KEEP INTEGER OR ZERO
        !          6589: >        MOV  XL,XR            FILETAG STRING TO XR FOR GTNVR CALL
        !          6590: >        JSR  GTNVR            FIND VRBLK
        !          6591: >        PPM  IOFT4            SKIP IF NULL STRING
        !          6592: >        MOV  XL,-(XS)         KEEP SCBLK PTR
        !          6593: >        ZER  XL               IN CASE NO TRTIO BLK FOUND
        !          6594: >        MOV  WB,WC            KEEP INTEGER OR ZERO
        !          6595: >        MOV  XR,WB            COPY VRBLK PTR FOR RETURN
        !          6596: 18710,18715c17479,17483
        !          6597: < IOFC1  MOV  VRVAL(XR),XR     GET POSSIBLE TRBLK PTR
        !          6598: <        BNE  (XR),=B$TRT,IOFC2 FAIL IF END OF CHAIN
        !          6599: <        BNE  TRTYP(XR),=TRTFC,IOFC1 LOOP IF NOT FILE ARG TRBLK
        !          6600: <        MOV  TRFPT(XR),WA     GET FCBLK PTR
        !          6601: <        MOV  WB,XR            COPY ARG
        !          6602: <        EXI                   RETURN
        !          6603: ---
        !          6604: > IOFT2  MOV  VRVAL(XR),XR     GET POSSIBLE TRBLK PTR
        !          6605: >        BNE  (XR),=B$TRT,IOFT3 SKIP IF END OF CHAIN
        !          6606: >        BNE  TRTYP(XR),=TRTIO,IOFT2 LOOP IF NOT FILETAG TRBLK
        !          6607: >        MOV  TRTAG(XR),WA     GET IOTAG OR 0
        !          6608: >        MOV  XR,XL            TRTIO BLK PTR
        !          6609: 18717c17485
        !          6610: < *      FAIL RETURN
        !          6611: ---
        !          6612: > *      RETURN POINT
        !          6613: 18719c17487,17489
        !          6614: < IOFC2  EXI  1                FAIL
        !          6615: ---
        !          6616: > IOFT3  MOV  XL,XR            TRTIO BLK PTR OR 0
        !          6617: >        MOV  (XS)+,XL         RECOVER SCBLK PTR
        !          6618: >        EXI                   SUCCESSFUL RETURN
        !          6619: 18721c17491
        !          6620: < *      NULL ARG
        !          6621: ---
        !          6622: > *      FAIL RETURN
        !          6623: 18723,18724c17493
        !          6624: < IOFC3  EXI  2                NULL ARG RETURN
        !          6625: <        ENP                   END PROCEDURE IOFCB
        !          6626: ---
        !          6627: > IOFT4  EXI  1                FAIL
        !          6628: 18727c17496
        !          6629: < *      IOPPF -- PROCESS FILEARG2 FOR IOPUT
        !          6630: ---
        !          6631: > *      NON NUMERIC FILETAG
        !          6632: 18729,18755c17498,17500
        !          6633: < *      (R$XSC)               FILEARG2 PTR
        !          6634: < *      JSR  IOPPF            CALL TO PROCESS FILEARG2
        !          6635: < *      (XL)                  FILEARG1 PTR
        !          6636: < *      (XR)                  FILE ARG2 PTR
        !          6637: < *      -(XS)..-(XS)          FIELDS EXTRACTED FROM FILEARG2
        !          6638: < *      (WC)                  NO. OF FIELDS EXTRACTED
        !          6639: < *      (WB)                  INPUT/OUTPUT FLAG
        !          6640: < *      (WA)                  FCBLK PTR OR 0
        !          6641: < *
        !          6642: < IOPPF  PRC  N,0              ENTRY POINT
        !          6643: <        ZER  WB               TO COUNT FIELDS EXTRACTED
        !          6644: < *
        !          6645: < *      LOOP TO EXTRACT FIELDS
        !          6646: < *
        !          6647: < IOPP1  MOV  =IODEL,XL        GET DELIMITER
        !          6648: <        MOV  XL,WC            COPY IT
        !          6649: <        JSR  XSCAN            GET NEXT FIELD
        !          6650: <        MOV  XR,-(XS)         STACK IT
        !          6651: <        ICV  WB               INCREMENT COUNT
        !          6652: <        BNZ  WA,IOPP1         LOOP
        !          6653: <        MOV  WB,WC            COUNT OF FIELDS
        !          6654: <        MOV  IOPTT,WB         I/O MARKER
        !          6655: <        MOV  R$IOF,WA         FCBLK PTR OR 0
        !          6656: <        MOV  R$IO2,XR         FILE ARG2 PTR
        !          6657: <        MOV  R$IO1,XL         FILEARG1
        !          6658: <        EXI                   RETURN
        !          6659: <        ENP                   END PROCEDURE IOPPF
        !          6660: ---
        !          6661: > IOFT5  ZER  WC               NOTE NON NUMERIC
        !          6662: >        BRN  IOFT1            MERGE
        !          6663: >        ENP                   END PROCEDURE IOFTG
        !          6664: 18758c17503
        !          6665: < *      IOPUT -- ROUTINE USED BY INPUT AND OUTPUT
        !          6666: ---
        !          6667: > *      IOPUT -- PROCESS INPUT AND OUTPUT ARGUMENTS
        !          6668: 18760,18763c17505,17507
        !          6669: < *      IOPUT SETS UP INPUT/OUTPUT  ASSOCIATIONS. IT BUILDS
        !          6670: < *      SUCH TRACE AND FILE CONTROL BLOCKS AS ARE NECESSARY AND
        !          6671: < *      CALLS SYSFC,SYSIO TO PERFORM CHECKS ON THE
        !          6672: < *      ARGUMENTS AND TO OPEN THE FILES.
        !          6673: ---
        !          6674: > *      IOPUT CHECKS THE ARGUMENTS OF INPUT AND OUTPUT CALLS,
        !          6675: > *      SETS UP THE REQUIRED ASSOCIATIONS AND CALLS SYSIO TO
        !          6676: > *      OPEN THE REQUESTED FILES.
        !          6677: 18765,18820d17508
        !          6678: < *         +-----------+   +---------------+       +-----------+
        !          6679: < *      +-.I           I   I               I------.I   =B$XRT  I
        !          6680: < *      I  +-----------+   +---------------+       +-----------+
        !          6681: < *      I  /           /        (R$FCB)            I    *4     I
        !          6682: < *      I  /           /                           +-----------+
        !          6683: < *      I  +-----------+   +---------------+       I           I-
        !          6684: < *      I  I   NAME    +--.I    =B$TRT     I       +-----------+
        !          6685: < *      I  /           /   +---------------+       I           I
        !          6686: < *      I   (FIRST ARG)    I =TRTIN/=TRTOU I       +-----------+
        !          6687: < *      I                  +---------------+             I
        !          6688: < *      I                  I     VALUE     I             I
        !          6689: < *      I                  +---------------+             I
        !          6690: < *      I                  I(TRTRF) 0   OR I--+          I
        !          6691: < *      I                  +---------------+  I          I
        !          6692: < *      I                  I(TRFPT) 0   OR I----+        I
        !          6693: < *      I                  +---------------+  I I        I
        !          6694: < *      I                     (I/O TRBLK)     I I        I
        !          6695: < *      I  +-----------+                      I I        I
        !          6696: < *      I  I           I                      I I        I
        !          6697: < *      I  +-----------+                      I I        I
        !          6698: < *      I  I           I                      I I        I
        !          6699: < *      I  +-----------+   +---------------+  I I        I
        !          6700: < *      I  I           +--.I    =B$TRT     I.-+ I        I
        !          6701: < *      I  +-----------+   +---------------+    I        I
        !          6702: < *      I  /           /   I    =TRTFC     I    I        I
        !          6703: < *      I  /           /   +---------------+    I        I
        !          6704: < *      I    (FILEARG1     I     VALUE     I    I        I
        !          6705: < *      I         VRBLK)   +---------------+    I        I
        !          6706: < *      I                  I(TRTRF) 0   OR I--+ I        .
        !          6707: < *      I                  +---------------+  I .  +-----------+
        !          6708: < *      I                  I(TRFPT) 0   OR I------./   FCBLK   /
        !          6709: < *      I                  +---------------+  I    +-----------+
        !          6710: < *      I                       (TRTRF)       I
        !          6711: < *      I                                     I
        !          6712: < *      I                                     I
        !          6713: < *      I                  +---------------+  I
        !          6714: < *      I                  I    =B$XRT     I.-+
        !          6715: < *      I                  +---------------+
        !          6716: < *      I                  I      *5       I
        !          6717: < *      I                  +---------------+
        !          6718: < *      +------------------I               I
        !          6719: < *                         +---------------+       +-----------+
        !          6720: < *                         I(TRTRF) O   OR I------.I  =B$XRT   I
        !          6721: < *                         +---------------+       +-----------+
        !          6722: < *                         I  NAME OFFSET  I       I    ETC    I
        !          6723: < *                         +---------------+
        !          6724: < *                           (IOCHN - CHAIN OF NAME POINTERS)
        !          6725: <        EJC
        !          6726: < *
        !          6727: < *      IOPUT (CONTINUED)
        !          6728: < *
        !          6729: < *      NO ADDITIONAL TRAP BLOCKS ARE USED FOR STANDARD INPUT/OUT
        !          6730: < *      FILES. OTHERWISE AN I/O TRAP BLOCK IS ATTACHED TO SECOND
        !          6731: < *      ARG (FILEARG1) VRBLK. SEE DIAGRAM ABOVE FOR DETAILS OF
        !          6732: < *      THE STRUCTURE BUILT.
        !          6733: < *
        !          6734: 18822,18824c17510,17512
        !          6735: < *      -(XS)                 2ND ARG (FILE ARG1)
        !          6736: < *      -(XS)                 3RD ARG (FILE ARG2)
        !          6737: < *      (WB)                  0 FOR INPUT, 3 FOR OUTPUT ASSOC.
        !          6738: ---
        !          6739: > *      -(XS)                 2ND ARG (FILETAG)
        !          6740: > *      -(XS)                 3RD ARG (FILEPROPS)
        !          6741: > *      (WB)                  0 FOR INPUT, 2 FOR OUTPUT ASSOC.
        !          6742: 18827c17515
        !          6743: < *      PPM  LOC              2ND ARG NOT A SUITABLE NAME
        !          6744: ---
        !          6745: > *      PPM  LOC              2ND ARG NOT A SUITABLE FILETAG
        !          6746: 18829,18831c17517
        !          6747: < *      PPM  LOC              INAPPROPRIATE FILE SPEC FOR I/O
        !          6748: < *      PPM  LOC              I/O FILE DOES NOT EXIST
        !          6749: < *      PPM  LOC              I/O FILE CANNOT BE READ/WRITTEN
        !          6750: ---
        !          6751: > *      PPM  LOC              FAIL RETURN
        !          6752: 18835,18858d17520
        !          6753: < IOPUT  PRC  N,6              ENTRY POINT
        !          6754: <        ZER  R$IOT            IN CASE NO TRTRF BLOCK USED
        !          6755: <        ZER  R$IOF            IN CASE NO FCBLK ALOCATED
        !          6756: <        MOV  WB,IOPTT         STORE I/O TRACE TYPE
        !          6757: <        JSR  XSCNI            PREPARE TO SCAN FILEARG2
        !          6758: <        PPM  IOP13            FAIL
        !          6759: <        PPM  IOPA0            NULL FILE ARG2
        !          6760: < *
        !          6761: < IOPA0  MOV  XR,R$IO2         KEEP FILE ARG2
        !          6762: <        MOV  WA,XL            COPY LENGTH
        !          6763: <        JSR  GTSTG            CONVERT FILEARG1 TO STRING
        !          6764: <        PPM  IOP14            FAIL
        !          6765: <        MOV  XR,R$IO1         KEEP FILEARG1 PTR
        !          6766: <        JSR  GTNVR            CONVERT TO NATURAL VARIABLE
        !          6767: <        PPM  IOP00            JUMP IF NULL
        !          6768: <        BRN  IOP04            JUMP TO PROCESS NON-NULL ARGS
        !          6769: < *
        !          6770: < *      NULL FILEARG1
        !          6771: < *
        !          6772: < IOP00  BZE  XL,IOP01         SKIP IF BOTH ARGS NULL
        !          6773: <        JSR  IOPPF            PROCESS FILEARG2
        !          6774: <        JSR  SYSFC            CALL FOR FILEARG2 CHECK
        !          6775: <        PPM  IOP16            FAIL
        !          6776: <        BRN  IOP11            COMPLETE FILE ASSOCIATION
        !          6777: 18859a17522,17538
        !          6778: > *      FIRST ARG NAME
        !          6779: > *      I      I
        !          6780: > *      +------+
        !          6781: > *      I      I-----+
        !          6782: > *      +------+     V
        !          6783: > *      I      I   +----------------+
        !          6784: > *                 I     =B$TRT     I
        !          6785: > *                 +----------------+
        !          6786: > *                 I =TRTIN/=TRTOU  I
        !          6787: > *                 +----------------+
        !          6788: > *                 I VALUE OR TRCHN +
        !          6789: > *                 +----------------+
        !          6790: > *           TRTER I                I-----+
        !          6791: > *                 +----------------+     V
        !          6792: > *           TRTRI I        0       I   +------+
        !          6793: > *                 +----------------+   I      I SVBLK
        !          6794: > *                  I/O TRACE BLOCK     +------+
        !          6795: 18861c17540
        !          6796: < *      IOPUT (CONTINUED)
        !          6797: ---
        !          6798: > *      1. ASSOCIATION TO STANDARD FILES.
        !          6799: 18863c17542,17558
        !          6800: < *      HERE WITH 0 OR FCBLK PTR IN (XL)
        !          6801: ---
        !          6802: > *      FIRST ARG NAME                      FILETAG VRBLK
        !          6803: > *      I      I                              I      I
        !          6804: > *      +------+  LK1                         +------+ LK2
        !          6805: > *      I      I---+                  +---+   I      I---+
        !          6806: > *      +------+   V                  I   V   +------+   V
        !          6807: > *      I      I  +----------------+  I  +----------------+
        !          6808: > *                I     =B$TRT     I  I  I     =B$TRT     I
        !          6809: > *                +----------------+  I  +----------------+
        !          6810: > *                I =TRTIN/=TRTOU  I  I  I     =TRTIO     I
        !          6811: > *                +----------------+  I  +----------------+
        !          6812: > *                I VALUE OR TRCHN I  I  I VALUE OR TRCHN I
        !          6813: > *                +----------------+  I  +----------------+
        !          6814: > *          TRTER I       0        I  I  I   0 OR IOTAG   I TRTAG
        !          6815: > *                +----------------+  I  +----------------+
        !          6816: > *          TRTRI I                I--+  I        0       I TRTRI
        !          6817: > *                +----------------+     +----------------+
        !          6818: > *                 I/O TRACE BLOCK           TRTIO BLOCK
        !          6819: 18865,18875c17560
        !          6820: < IOP01  MOV  IOPTT,WB         GET TRACE TYPE
        !          6821: <        MOV  R$IOT,XR         GET 0 OR TRTRF PTR
        !          6822: <        JSR  TRBLD            BUILD TRBLK
        !          6823: <        MOV  XR,WC            COPY TRBLK POINTER
        !          6824: <        MOV  (XS)+,XR         GET VARIABLE FROM STACK
        !          6825: <        JSR  GTVAR            POINT TO VARIABLE
        !          6826: <        PPM  IOP15            FAIL
        !          6827: <        MOV  XL,R$ION         SAVE NAME POINTER
        !          6828: <        MOV  XL,XR            COPY NAME POINTER
        !          6829: <        ADD  WA,XR            POINT TO VARIABLE
        !          6830: <        SUB  *VRVAL,XR        SUBTRACT OFFSET,MERGE INTO LOOP
        !          6831: ---
        !          6832: > *      2. REGULAR CASE.
        !          6833: 18877,18902c17562,17579
        !          6834: < *      LOOP TO END OF TRBLK CHAIN IF ANY
        !          6835: < *
        !          6836: < IOP02  MOV  XR,XL            COPY BLK PTR
        !          6837: <        MOV  VRVAL(XR),XR     LOAD PTR TO NEXT TRBLK
        !          6838: <        BNE  (XR),=B$TRT,IOP03    JUMP IF NOT TRAPPED
        !          6839: <        BNE  TRTYP(XR),IOPTT,IOP02 LOOP IF NOT SAME ASSOCN
        !          6840: <        MOV  TRNXT(XR),XR     GET VALUE AND DELETE OLD TRBLK
        !          6841: < *
        !          6842: < *      IOPUT (CONTINUED)
        !          6843: < *
        !          6844: < *      STORE NEW ASSOCIATION
        !          6845: < *
        !          6846: < IOP03  MOV  WC,VRVAL(XL)     LINK TO THIS TRBLK
        !          6847: <        MOV  WC,XL            COPY POINTER
        !          6848: <        MOV  XR,TRNXT(XL)     STORE VALUE IN TRBLK
        !          6849: <        MOV  R$ION,XR         RESTORE POSSIBLE VRBLK POINTER
        !          6850: <        MOV  WA,WB            KEEP OFFSET TO NAME
        !          6851: <        JSR  SETVR            IF VRBLK, SET VRGET,VRSTO
        !          6852: <        MOV  R$IOT,XR         GET 0 OR TRTRF PTR
        !          6853: <        BNZ  XR,IOP19         JUMP IF TRTRF BLOCK EXISTS
        !          6854: <        EXI                   RETURN TO CALLER
        !          6855: < *
        !          6856: < *      NON STANDARD FILE
        !          6857: < *      SEE IF AN FCBLK HAS ALREADY BEEN ALLOCATED.
        !          6858: < *
        !          6859: < IOP04  ZER  WA               IN CASE NO FCBLK FOUND
        !          6860: ---
        !          6861: > *      THE STRUCTURES BUILT FOR I/O ASSOCIATIONS ARE AS SHOWN
        !          6862: > *      ABOVE. A TRACE BLOCK CHAIN (TRCHN) MAY HOLD ANY OR ALL
        !          6863: > *      OF THE TYPES, =TRTIN, =TRTOU, =TRTIO, BUT NOT MORE THAN
        !          6864: > *      ONE BLOCK OF ANY GIVEN TYPE. CASES ARE -
        !          6865: > *      1. NO FILETAG OR IOTAG IS USED FOR ASSOCIATING STANDARD
        !          6866: > *         FILES (SYSRD, SYSPR, TERMINAL). THE I/O TRACE BLOCK
        !          6867: > *         IS DISTINGUISHED BY A NON-NULL TRTER FIELD POINTING
        !          6868: > *         TO THE RELEVANT SVBLK (V$INP, V$OUP, V$TER) AND A
        !          6869: > *         ZERO TRTRI FIELD. FOR TERMINAL, TRBLKS OF BOTH
        !          6870: > *         INPUT AND OUTPUT TYPE ARE CHAINED FROM THE FIRST ARG
        !          6871: > *         VIA THE TRCHN FIELD.
        !          6872: > *      2. THE I/O TRACE BLOCK FOR THE REGULAR CASE HAS A ZERO
        !          6873: > *         TRTER FIELD AND A POINTER TO A TRTIO BLOCK IS IN
        !          6874: > *         THE TRTRI FIELD. THE FILETAG MUST BE A NATURAL
        !          6875: > *         VARIABLE AND THE TRTIO TRACE BLOCK ATTACHED TO IT
        !          6876: > *         HOLDS THE IOTAG.
        !          6877: > *      THE EFFECT OF ENDFILE() IS TO CLEAR IOTAG AND BREAK LK2.
        !          6878: > *      THE EFFECT OF DETACH() IS TO BREAK LK1.
        !          6879: 18903a17581,17586
        !          6880: > IOPUT  PRC  N,4              ENTRY POINT
        !          6881: >        MOV  WB,IOPWB         KEEP ASSOCIATION TYPE FLAG
        !          6882: >        JSR  GTSTG            CONVERT THIRD ARG TO STRING
        !          6883: >        PPM  IOP12            FAIL THIRD ARG
        !          6884: >        BNZ  WA,IOP01         SKIP IF NON NULL
        !          6885: >        ZER  XR               NOTE NULL ARG
        !          6886: 18905c17588
        !          6887: < *      IOPUT (CONTINUED)
        !          6888: ---
        !          6889: > *      PROCESS SECOND ARG
        !          6890: 18907,18950c17590,17610
        !          6891: < *      SEARCH POSSIBLE TRBLK CHAIN TO PICK UP THE FCBLK
        !          6892: < *
        !          6893: < IOP05  MOV  XR,WB            REMEMBER BLK PTR
        !          6894: <        MOV  VRVAL(XR),XR     CHAIN ALONG
        !          6895: <        BNE  (XR),=B$TRT,IOP06 JUMP IF END OF TRBLK CHAIN
        !          6896: <        BNE  TRTYP(XR),=TRTFC,IOP05 LOOP IF MORE TO GO
        !          6897: <        MOV  XR,R$IOT         POINT TO FILE ARG1 TRBLK
        !          6898: <        MOV  TRFPT(XR),WA     GET FCBLK PTR FROM TRBLK
        !          6899: < *
        !          6900: < *      WA = 0 OR FCBLK PTR
        !          6901: < *      WB = PTR TO PRECEDING BLK TO WHICH ANY TRTRF BLOCK
        !          6902: < *           FOR FILE ARG1 MUST BE CHAINED.
        !          6903: < *
        !          6904: < IOP06  MOV  WA,R$IOF         KEEP POSSIBLE FCBLK PTR
        !          6905: <        MOV  WB,R$IOP         KEEP PRECEDING BLK PTR
        !          6906: <        JSR  IOPPF            PROCESS FILEARG2
        !          6907: <        JSR  SYSFC            SEE IF FCBLK REQUIRED
        !          6908: <        PPM  IOP16            FAIL
        !          6909: <        BZE  WA,IOP12         SKIP IF NO NEW FCBLK WANTED
        !          6910: <        BLT  WC,=NUM02,IOP6A  JUMP IF FCBLK IN DYNAMIC
        !          6911: <        JSR  ALOST            GET IT IN STATIC
        !          6912: <        BRN  IOP6B            SKIP
        !          6913: < *
        !          6914: < *      OBTAIN FCBLK IN DYNAMIC
        !          6915: < *
        !          6916: < IOP6A  JSR  ALLOC            GET SPACE FOR FCBLK
        !          6917: < *
        !          6918: < *      MERGE
        !          6919: < *
        !          6920: < IOP6B  MOV  XR,XL            POINT TO FCBLK
        !          6921: <        MOV  WA,WB            COPY ITS LENGTH
        !          6922: <        BTW  WB               GET COUNT AS WORDS (SGD APR80)
        !          6923: <        LCT  WB,WB            LOOP COUNTER
        !          6924: < *
        !          6925: < *      CLEAR FCBLK
        !          6926: < *
        !          6927: < IOP07  ZER  (XR)+            CLEAR A WORD
        !          6928: <        BCT  WB,IOP07         LOOP
        !          6929: <        BEQ  WC,=NUM02,IOP09  SKIP IF IN STATIC - DONT SET FIELDS
        !          6930: <        MOV  =B$XNT,(XL)      STORE XNBLK CODE IN CASE
        !          6931: <        MOV  WA,1(XL)         STORE LENGTH
        !          6932: <        BNZ  WC,IOP09         JUMP IF XNBLK WANTED
        !          6933: <        MOV  =B$XRT,(XL)      XRBLK CODE REQUESTED
        !          6934: < *
        !          6935: ---
        !          6936: > IOP01  MOV  XR,R$IOR         KEEP FILEPROPS STRING PTR
        !          6937: >        JSR  IOFTG            CHECK SECOND ARG
        !          6938: >        PPM  IOP07            FAIL SECOND ARG
        !          6939: >        MOV  XL,R$IOL         KEEP SCBLK FOR FILETAG
        !          6940: >        MOV  XR,R$IOT         KEEP TRTIO BLK PTR
        !          6941: >        MOV  WA,IOPWA         KEEP IOTAG
        !          6942: >        MOV  WB,IOPVR         KEEP FILETAG VRBLK PTR
        !          6943: >        MOV  WC,IOPWC         KEEP FILETAG VALUE
        !          6944: >        MOV  (XS)+,XR         GET FIRST ARG OFF STACK
        !          6945: >        JSR  GTVAR            CONVERT TO NAME
        !          6946: >        PPM  IOP13            FAIL FIRST ARG
        !          6947: >        MOV  XL,R$IO1         SAVE FIRST ARG NAME BASE ADRS
        !          6948: >        MOV  WA,IOPNF         SAVE FIRST ARG NAME OFFSET
        !          6949: >        MOV  WB,XR            FILETAG VRBLK PTR
        !          6950: >        BNZ  VRLEN(XR),IOP02  NOT SPECIAL CASE IF NOT SYS NAME
        !          6951: >        MOV  VRSVP(XR),WC     GET SVBLK PTR
        !          6952: >        MOV  =TRTIN,WB        IN CASE .INPUT
        !          6953: >        BEQ  WC,=V$INP,IOP06  JUMP IF .INPUT
        !          6954: >        MOV  =TRTOU,WB        IN CASE .OUTPUT OR .TERMINAL
        !          6955: >        BEQ  WC,=V$OUP,IOP08  JUMP IF .OUTPUT
        !          6956: >        BEQ  WC,=V$TER,IOP09  JUMP IF .TERMINAL
        !          6957: 18952d17611
        !          6958: < *      IOPUT (CONTINUED)
        !          6959: 18954c17613
        !          6960: < *      COMPLETE FCBLK INITIALISATION
        !          6961: ---
        !          6962: > *      NORMAL CASE
        !          6963: 18956,18958c17615,17624
        !          6964: < IOP09  MOV  R$IOT,XR         GET POSSIBLE TRBLK PTR
        !          6965: <        MOV  XL,R$IOF         STORE FCBLK PTR
        !          6966: <        BNZ  XR,IOP10         JUMP IF TRBLK ALREADY FOUND
        !          6967: ---
        !          6968: > IOP02  BNZ  R$IOT,IOP03      SKIP IF TRTIO BLK EXISTS ALREADY
        !          6969: >        MOV  =TRTIO,WB        TRACE BLOCK TYPE WORD
        !          6970: >        ZER  XR               ZERO IOTAG WORD
        !          6971: >        ZER  XL               ZERO TRTRI FIELD
        !          6972: >        JSR  TRBLD            BUILD TRTIO TRBLK
        !          6973: >        MOV  XR,R$IOT         SAVE TRTIO BLK PTR
        !          6974: >        MOV  IOPVR,XL         GET FILETAG VRBLK
        !          6975: >        MOV  *VRVAL,WA        OFFSET TO VALUE FIELD
        !          6976: >        JSR  TRCHN            PLACE IN TRBLK CHAIN FOR FILETAG
        !          6977: >        PPM                   UNUSED RETURN
        !          6978: 18960c17626
        !          6979: < *      A NEW TRBLK IS NEEDED
        !          6980: ---
        !          6981: > *      MERGE TO BUILD TRBLK FOR FIRST ARG
        !          6982: 18962,18970c17628,17630
        !          6983: <        MOV  =TRTFC,WB        TRTYP FOR FCBLK TRAP BLK
        !          6984: <        JSR  TRBLD            MAKE THE BLOCK
        !          6985: <        MOV  XR,R$IOT         COPY TRTRF PTR
        !          6986: <        MOV  R$IOP,XL         POINT TO PRECEDING BLK
        !          6987: <        MOV  VRVAL(XL),VRVAL(XR) COPY VALUE FIELD TO TRBLK
        !          6988: <        MOV  XR,VRVAL(XL)     LINK NEW TRBLK INTO CHAIN
        !          6989: <        MOV  XL,XR            POINT TO PREDECESSOR BLK
        !          6990: <        JSR  SETVR            SET TRACE INTERCEPTS
        !          6991: <        MOV  VRVAL(XR),XR     RECOVER TRBLK PTR
        !          6992: ---
        !          6993: > IOP03  MOV  =TRTIN,WB        IN CASE INPUT
        !          6994: >        BZE  IOPWB,IOP04      SKIP IF SO
        !          6995: >        MOV  =TRTOU,WB        IN CASE OUTPUT
        !          6996: 18972c17632
        !          6997: < *      XR IS PTR TO TRBLK, XL IS FCBLK PTR OR 0
        !          6998: ---
        !          6999: > *      BUILD TRACE BLOCK
        !          7000: 18974c17634,17641
        !          7001: < IOP10  MOV  R$IOF,TRFPT(XR)  STORE FCBLK PTR
        !          7002: ---
        !          7003: > IOP04  ICV  IOPWB            NOTE NOT STANDARD I/O FILE
        !          7004: >        MOV  R$IOT,XL         TRTIO BLK PTR TO TRTRI FIELD
        !          7005: >        ZER  XR               ZERO TRTER FIELD
        !          7006: >        JSR  TRBLD            BUILD I/O TRACE BLOCK
        !          7007: >        MOV  R$IO1,XL         ASSOCIATED VBL NAME BASE
        !          7008: >        MOV  IOPNF,WA         NAME OFFSET
        !          7009: >        JSR  TRCHN            UPDATE TRACE CHAIN FOR FIRST ARG
        !          7010: >        PPM                   UNUSED RETURN
        !          7011: 18976c17643
        !          7012: < *      CALL SYSIO TO COMPLETE FILE ACCESSING
        !          7013: ---
        !          7014: > *      PREPARE FOR AND MAKE SYSIO CALL
        !          7015: 18978,19003c17645,17656
        !          7016: < IOP11  MOV  R$IOF,WA         COPY FCBLK PTR OR 0
        !          7017: <        MOV  IOPTT,WB         GET INPUT/OUTPUT FLAG
        !          7018: <        MOV  R$IO2,XR         GET FILE ARG2
        !          7019: <        MOV  R$IO1,XL         GET FILE ARG1
        !          7020: <        JSR  SYSIO            ASSOCIATE TO THE FILE
        !          7021: <        PPM  IOP17            FAIL
        !          7022: <        PPM  IOP18            FAIL
        !          7023: <        BNZ  R$IOT,IOP01      NOT STD INPUT IF NON-NULL TRTRF BLK
        !          7024: <        BNZ  IOPTT,IOP01      JUMP IF OUTPUT
        !          7025: <        BZE  WC,IOP01         NO CHANGE TO STANDARD READ LENGTH
        !          7026: <        MOV  WC,CSWIN         STORE NEW READ LENGTH FOR STD FILE
        !          7027: <        BRN  IOP01            MERGE TO FINISH THE TASK
        !          7028: < *
        !          7029: < *      SYSFC MAY HAVE RETURNED A POINTER TO A PRIVATE FCBLK
        !          7030: < *
        !          7031: < IOP12  BNZ  XL,IOP09         JUMP IF PRIVATE FCBLK
        !          7032: <        BRN  IOP11            FINISH THE ASSOCIATION
        !          7033: < *
        !          7034: < *      FAILURE RETURNS
        !          7035: < *
        !          7036: < IOP13  EXI  1                3RD ARG NOT A STRING
        !          7037: < IOP14  EXI  2                2ND ARG UNSUITABLE
        !          7038: < IOP15  EXI  3                1ST ARG UNSUITABLE
        !          7039: < IOP16  EXI  4                FILE SPEC WRONG
        !          7040: < IOP17  EXI  5                I/O FILE DOES NOT EXIST
        !          7041: < IOP18  EXI  6                I/O FILE CANNOT BE READ/WRITTEN
        !          7042: ---
        !          7043: > IOP05  MOV  R$IOL,XL         FILETAG SCBLK PTR
        !          7044: >        MOV  R$IOR,XR         FILEPROPS SCBLK PTR
        !          7045: >        MOV  IOPWA,WA         IOTAG OR ZERO
        !          7046: >        MOV  IOPWB,WB         ASSOCIATION TYPE NUMBER
        !          7047: >        MOV  IOPWC,WC         POSSIBLE FILETAG VALUE
        !          7048: >        JSR  SYSIO            CALL SYSTEM ROUTINE TO OPEN FILE
        !          7049: >        PPM  IOP14            FAIL RETURN
        !          7050: >        PPM  EROSI            ERROR RETURN
        !          7051: >        MOV  R$IOT,XL         TRTIO POINTER
        !          7052: >        BZE  XL,IOP11         DONE IF ZERO
        !          7053: >        MOV  WA,TRTAG(XL)     STORE RETURNED IOTAG
        !          7054: >        BRN  IOP11            SUCCEED
        !          7055: 19006c17659
        !          7056: < *      IOPUT (CONTINUED)
        !          7057: ---
        !          7058: > *      SPECIAL CASE OF .INPUT
        !          7059: 19008,19009c17661
        !          7060: < *      ADD TO IOCHN CHAIN OF ASSSOCIATED VARIABLES UNLESS ALREAD
        !          7061: < *      PRESENT.
        !          7062: ---
        !          7063: > IOP06  BZE  IOPWB,IOP09      FAIL OUTPUT(.X,.INPUT)
        !          7064: 19011c17663
        !          7065: < IOP19  MOV  R$ION,WC         WC = NAME BASE, WB = NAME OFFSET
        !          7066: ---
        !          7067: > *      BAD FILETAG
        !          7068: 19013c17665
        !          7069: < *      SEARCH LOOP
        !          7070: ---
        !          7071: > IOP07  EXI  2                ERRONEOUS SECOND ARG
        !          7072: 19015,19019c17667
        !          7073: < IOP20  MOV  TRTRF(XR),XR     NEXT LINK OF CHAIN
        !          7074: <        BZE  XR,IOP21         NOT FOUND
        !          7075: <        BNE  WC,IONMB(XR),IOP20 NO MATCH
        !          7076: <        BEQ  WB,IONMO(XR),IOP22 EXIT IF MATCHED
        !          7077: <        BRN  IOP20            LOOP
        !          7078: ---
        !          7079: > *      SPECIAL CASE OF .OUTPUT
        !          7080: 19021c17669
        !          7081: < *      NOT FOUND
        !          7082: ---
        !          7083: > IOP08  BZE  IOPWB,IOP07      FAIL INPUT(.X,.OUTPUT)
        !          7084: 19023,19032c17671
        !          7085: < IOP21  MOV  *NUM05,WA        SPACE NEEDED
        !          7086: <        JSR  ALLOC            GET IT
        !          7087: <        MOV  =B$XRT,(XR)      STORE XRBLK CODE
        !          7088: <        MOV  WA,1(XR)         STORE LENGTH
        !          7089: <        MOV  WC,IONMB(XR)     STORE NAME BASE
        !          7090: <        MOV  WB,IONMO(XR)     STORE NAME OFFSET
        !          7091: <        MOV  R$IOT,XL         POINT TO TRTRF BLK
        !          7092: <        MOV  TRTRF(XL),WA     GET PTR FIELD CONTENTS
        !          7093: <        MOV  XR,TRTRF(XL)     STORE PTR TO NEW BLOCK
        !          7094: <        MOV  WA,TRTRF(XR)     COMPLETE THE LINKING
        !          7095: ---
        !          7096: > *      SPECIAL CASE OF .TERMINAL AND MERGE FOR OTHERS
        !          7097: 19034c17673,17685
        !          7098: < *      INSERT FCBLK ON FCBLK CHAIN FOR SYSEJ, SYSXI
        !          7099: ---
        !          7100: > IOP09  ZER  R$IOT            NOTE NO TRTIO BLOCK
        !          7101: >        MOV  WC,XR            SVBLK PTR FOR TRTER FIELD
        !          7102: >        ZER  XL               ZERO TRTRI FIELD
        !          7103: >        JSR  TRBLD            BUILD TRBLK
        !          7104: >        MOV  R$IO1,XL         ASSOCIATED VBL NAME BASE
        !          7105: >        MOV  IOPNF,WA         NAME OFFSET
        !          7106: >        JSR  TRCHN            UPDATE TRACE CHAIN FOR ARG 1
        !          7107: >        PPM                   UNUSED RETURN
        !          7108: >        BNE  TRTER(XR),=V$TER,IOP10 DONE UNLESS TERMINAL
        !          7109: >        BNE  TRTYP(XR),=TRTOU,IOP10 DONE IF TERM. 2ND TIME ROUND
        !          7110: >        MOV  =V$TER,WC        TRTER FIELD
        !          7111: >        MOV  =TRTIN,WB        TRTYP FIELD
        !          7112: >        BRN  IOP09            REPEAT LOOP FOR TERMINAL
        !          7113: 19036,19037c17687
        !          7114: < IOP22  BZE  R$IOF,IOP25      SKIP IF NO FCBLK
        !          7115: <        MOV  R$FCB,XL         PTR TO HEAD OF EXISTING CHAIN
        !          7116: ---
        !          7117: > *      CHECK SPECIAL CASES FOR NON-NULL THIRD ARGS
        !          7118: 19039c17689,17690
        !          7119: < *      SEE IF FCBLK ALREADY ON CHAIN
        !          7120: ---
        !          7121: > IOP10  ZER  IOPWA            NO IOTAG
        !          7122: >        BNZ  R$IOR,IOP05      MERGE ONLY IF FILEPROPS NON-NULL
        !          7123: 19041,19044c17692
        !          7124: < IOP23  BZE  XL,IOP24         NOT ON IF END OF CHAIN
        !          7125: <        BEQ  3(XL),R$IOF,IOP25 DONT DUPLICATE IF FIND IT
        !          7126: <        MOV  2(XL),XL         GET NEXT LINK
        !          7127: <        BRN  IOP23            LOOP
        !          7128: ---
        !          7129: > *      SUCCESS RETURN
        !          7130: 19046c17694,17698
        !          7131: < *      NOT FOUND SO ADD AN ENTRY FOR THIS FCBLK
        !          7132: ---
        !          7133: > IOP11  ZER  R$IO1            CLEAR GARBAGE
        !          7134: >        ZER  R$IOL
        !          7135: >        ZER  R$IOR
        !          7136: >        ZER  R$IOT
        !          7137: >        EXI                   RETURN TO CALLER
        !          7138: 19048,19054c17700
        !          7139: < IOP24  MOV  *NUM04,WA        SPACE NEEDED
        !          7140: <        JSR  ALLOC            GET IT
        !          7141: <        MOV  =B$XRT,(XR)      STORE BLOCK CODE
        !          7142: <        MOV  WA,1(XR)         STORE LENGTH
        !          7143: <        MOV  R$FCB,2(XR)      STORE PREVIOUS LINK IN THIS NODE
        !          7144: <        MOV  R$IOF,3(XR)      STORE FCBLK PTR
        !          7145: <        MOV  XR,R$FCB         INSERT NODE INTO FCBLK CHAIN
        !          7146: ---
        !          7147: > *      ERROR RETURNS
        !          7148: 19056c17702
        !          7149: < *      RETURN
        !          7150: ---
        !          7151: > IOP12  EXI  1                ERRONEOUS THIRD ARG
        !          7152: 19058c17704,17706
        !          7153: < IOP25  EXI                   RETURN TO CALLER
        !          7154: ---
        !          7155: > IOP13  EXI  3                ERRONEOUS FIRST ARG
        !          7156: > *
        !          7157: > IOP14  EXI  4                FAIL RETURN FROM SYSIO
        !          7158: 19098,19099c17746
        !          7159: <        JSR  PRTVL            PRINT KEYWORD VALUE
        !          7160: <        JSR  PRTNL            TERMINATE PRINT LINE
        !          7161: ---
        !          7162: >        JSR  PRTVF            PRINT KEYWORD VALUE
        !          7163: 19144c17791
        !          7164: < KWNM1  ERB  251,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD
        !          7165: ---
        !          7166: > KWNM1  ERB  230,KEYWORD OPERAND IS NOT NAME OF DEFINED KEYWORD
        !          7167: 19173c17820
        !          7168: <        BLO  WA,WB,LCMP1      JUMP IF ARG 1 LENGTH IS SMALLER
        !          7169: ---
        !          7170: >        BLO  WA,WB,LCMP0      JUMP IF ARG 1 LENGTH IS SMALLER
        !          7171: 19178,19179c17825,17830
        !          7172: < LCMP1  CMC  LCMP4,LCMP3      COMPARE STRINGS, JUMP IF UNEQUAL
        !          7173: <        BNE  WB,WC,LCMP2      IF EQUAL, JUMP IF LENGTHS UNEQUAL
        !          7174: ---
        !          7175: > LCMP0  BZE  WA,LCMP1         SKIP IF A NULL ARG
        !          7176: >        CMC  LCMP4,LCMP3      COMPARE STRINGS, JUMP IF UNEQUAL
        !          7177: > *
        !          7178: > *      EQUAL STRINGS OR AT LEAST ONE NULL ARG
        !          7179: > *
        !          7180: > LCMP1  BNE  WB,WC,LCMP2      IF EQUAL, JUMP IF LENGTHS UNEQUAL
        !          7181: 19239c17890,17897
        !          7182: <        BNZ  CNTTL,LIST5      JUMP IF -TITLE OR -STITL
        !          7183: ---
        !          7184: >        MOV  STAGE,WA         GET COMPILER STAGE
        !          7185: >        BEQ  WA,=STGIC,LIST0  LIST OK IF INITIAL COMPILE
        !          7186: >        BEQ  WA,=STGCE,LIST0  LIST OK IF END LINE
        !          7187: >        BRN  LIST4            ELSE NO LISTING OF SOURCE
        !          7188: > *
        !          7189: > *      HERE WHEN STAGE IS OK TO LIST
        !          7190: > *
        !          7191: > LIST0  BNZ  CNTTL,LIST5      JUMP IF -TITLE OR -STITL
        !          7192: 19245c17903
        !          7193: < LIST0  MOV  R$CIM,XR         LOAD POINTER TO CURRENT IMAGE
        !          7194: ---
        !          7195: > LIST1  MOV  R$CIM,XR         LOAD POINTER TO CURRENT IMAGE
        !          7196: 19251d17908
        !          7197: <        BNE  STAGE,=STGIC,LIST1 SKIP IF EXECUTE TIME
        !          7198: 19254,19257c17911
        !          7199: < *
        !          7200: < *      PRINT STATEMENT NUMBER
        !          7201: < *
        !          7202: < LIST1  JSR  PRTIN            ELSE PRINT STATEMENT NUMBER
        !          7203: ---
        !          7204: >        JSR  PRTIN            ELSE PRINT STATEMENT NUMBER
        !          7205: 19267c17921
        !          7206: <        JSR  PRTST            PRINT IT
        !          7207: ---
        !          7208: >        JSR  PRTSF            PRINT IT
        !          7209: 19269,19273c17923
        !          7210: <        BNZ  ERLST,LIST3      JUMP IF ERROR COPY TO INT.CH.
        !          7211: <        JSR  PRTNL            TERMINATE LINE
        !          7212: <        BZE  CSWDB,LIST3      JUMP IF -SINGLE MODE
        !          7213: <        JSR  PRTNL            ELSE ADD A BLANK LINE
        !          7214: <        ICV  LSTLC            AND BUMP LINE COUNTER
        !          7215: ---
        !          7216: >        MNZ  LSTPF            SET FLAG FOR LINE PRINTED
        !          7217: 19275,19278d17924
        !          7218: < *      HERE AFTER PRINTING SOURCE IMAGE
        !          7219: < *
        !          7220: < LIST3  MNZ  LSTPF            SET FLAG FOR LINE PRINTED
        !          7221: < *
        !          7222: 19290,19291c17936,17937
        !          7223: <        BZE  PRICH,LIST7      SKIP IF LISTING TO REGULAR PRINTER
        !          7224: <        BEQ  R$TTL,=NULLS,LIST0 TERMINAL LISTING OMITS NULL TITLE
        !          7225: ---
        !          7226: >        BNZ  PRLEN,LIST7      SKIP IF LISTING TO REGULAR PRINTER
        !          7227: >        BEQ  R$TTL,=NULLS,LIST1 TERMINAL LISTING OMITS NULL TITLE
        !          7228: 19296c17942
        !          7229: <        BRN  LIST0            MERGE
        !          7230: ---
        !          7231: >        BRN  LIST1            MERGE
        !          7232: 19316c17962
        !          7233: <        JSR  PRTNL            TERMINATE TITLE LINE
        !          7234: ---
        !          7235: >        JSR  PRTFH            TERMINATE TITLE LINE
        !          7236: 19323,19324c17969
        !          7237: <        JSR  PRTST            ELSE PRINT SUB-TITLE
        !          7238: <        JSR  PRTNL            TERMINATE LINE
        !          7239: ---
        !          7240: >        JSR  PRTSF            ELSE PRINT SUB-TITLE
        !          7241: 19329c17974
        !          7242: < LSTT1  JSR  PRTNL            PRINT A BLANK LINE
        !          7243: ---
        !          7244: > LSTT1  JSR  PRTFH            PRINT A BLANK LINE
        !          7245: 19358c18003
        !          7246: <        BZE  CSWLS,NXTS2      JUMP IF -NOLIST
        !          7247: ---
        !          7248: >        BZE  CSWLS,NXTS1      JUMP IF -NOLIST
        !          7249: 19360c18005
        !          7250: <        BZE  XR,NXTS2         JUMP IF NO IMAGE
        !          7251: ---
        !          7252: >        BZE  XR,NXTS1         JUMP IF NO IMAGE
        !          7253: 19363,19364c18008,18009
        !          7254: <        BNE  WA,=CH$MN,NXTS1  JUMP IF NOT CTRL CARD
        !          7255: <        BZE  CSWPR,NXTS2      JUMP IF -NOPRINT
        !          7256: ---
        !          7257: >        BEQ  WA,=CH$MN,NXTS1  SKIP LISTING IF CONTROL CARD
        !          7258: >        JSR  LISTR            LIST LINE
        !          7259: 19366,19369d18010
        !          7260: < *      HERE TO CALL LISTER
        !          7261: < *
        !          7262: < NXTS1  JSR  LISTR            LIST LINE
        !          7263: < *
        !          7264: 19372c18013
        !          7265: < NXTS2  MOV  R$CNI,XR         POINT TO NEXT IMAGE
        !          7266: ---
        !          7267: > NXTS1  MOV  R$CNI,XR         POINT TO NEXT IMAGE
        !          7268: 19377c18018
        !          7269: <        BLO  WA,WB,NXTS3      SKIP IF NOT TOO LONG
        !          7270: ---
        !          7271: >        BLO  WA,WB,NXTS2      SKIP IF NOT TOO LONG
        !          7272: 19382c18023
        !          7273: < NXTS3  MOV  WA,SCNIL         USE AS RECORD LENGTH
        !          7274: ---
        !          7275: > NXTS2  MOV  WA,SCNIL         USE AS RECORD LENGTH
        !          7276: 19505c18146
        !          7277: <        WTB  WA               CONVERT TO BYTE OFFSET
        !          7278: ---
        !          7279: >        WTB  WA               CONVERT TO BAU OFFSET
        !          7280: 19697d18337
        !          7281: <        EJC
        !          7282: 19699a18340
        !          7283: >        EJC
        !          7284: 19714,19716c18355
        !          7285: <        JSR  PRTST            AND PRINT IT
        !          7286: <        JSR  PRTNL            FOLLOWED BY NEWLINE
        !          7287: <        JSR  PRTNL            AND ANOTHER
        !          7288: ---
        !          7289: >        JSR  PRTFB            AND PRINT IT
        !          7290: 19718,19719c18357
        !          7291: <        JSR  PRTST            PRINT IT
        !          7292: <        JSR  PRTNL            NEW LINE
        !          7293: ---
        !          7294: >        JSR  PRTSF            PRINT IT
        !          7295: 19721,19723c18359
        !          7296: <        JSR  PRTST            PRINT IT
        !          7297: <        JSR  PRTNL            NEW LINE
        !          7298: <        JSR  PRTNL            AND ANOTHER BLANK LINE
        !          7299: ---
        !          7300: >        JSR  PRTFB
        !          7301: 19726c18362,18363
        !          7302: <        ADD  *NUM02,XR        BIAS PAST XNBLK HEADER (SGD07)
        !          7303: ---
        !          7304: >        ADD  *NUM02,XR        BIASS PAST XNBLK HEADER
        !          7305: >        EJC
        !          7306: 19728c18365
        !          7307: < *      LOOP HERE TO PRINT SUCCESSIVE ENTRIES
        !          7308: ---
        !          7309: > *      PRFLR (CONTINUED)
        !          7310: 19729a18367,18368
        !          7311: > *      LOOP FOR PRINTING TABLE ENTRIES
        !          7312: > *
        !          7313: 19748c18387
        !          7314: < *      MERGE AFTER PRINTING TIME
        !          7315: ---
        !          7316: > *      PRINT A BLANK
        !          7317: 19750c18389
        !          7318: < PRFL2  JSR  PRTNL            THATS ANOTHER LINE
        !          7319: ---
        !          7320: > PRFL2  JSR  PRTFH            THATS ANOTHER LINE
        !          7321: 19752c18391
        !          7322: < *      HERE TO GO TO NEXT ENTRY
        !          7323: ---
        !          7324: > *      TEST TO SEE IF LOOP FINISHED
        !          7325: 19754c18393
        !          7326: < PRFL3  ADD  *PF$I2,XR        BUMP INDEX PTR (SGD07)
        !          7327: ---
        !          7328: > PRFL3  ADD  *PF$I2,XR        BUMP INDEX POINTER
        !          7329: 19759c18398
        !          7330: < *      HERE TO EXIT
        !          7331: ---
        !          7332: > *      RETURN POINT
        !          7333: 19775c18414
        !          7334: <        MOV  WA,PFSVW         SAVE WA (SGD07)
        !          7335: ---
        !          7336: >        MOV  WA,PFSVW         SAVE WA
        !          7337: 19786c18425
        !          7338: <        SUB  =NUM01,PFNTE     ADJUST FOR EXTRA COUNT (SGD07)
        !          7339: ---
        !          7340: >        SUB  =NUM01,PFNTE     ADJUST FOR EXTRA COUNT
        !          7341: 19804c18443,18444
        !          7342: <        BCT  WA,PFLU1         AND ALLLLLLL THE REST
        !          7343: ---
        !          7344: >        BCT  WA,PFLU1         AND ALL THE REST
        !          7345: >        EJC
        !          7346: 19805a18446,18447
        !          7347: > *      PRFLU (CONTINUED)
        !          7348: > *
        !          7349: 19828c18470
        !          7350: < *      MERGE HERE TO EXIT
        !          7351: ---
        !          7352: > *      RETURN POINT
        !          7353: 19831c18473
        !          7354: <        MOV  PFSVW,WA         RESTORE SAVED REG
        !          7355: ---
        !          7356: >        MOV  PFSVW,WA         RESTORE WA
        !          7357: 19841d18482
        !          7358: <        EJC
        !          7359: 19842a18484
        !          7360: >        EJC
        !          7361: 19844c18486
        !          7362: < *      PRPAR - PROCESS PRINT PARAMETERS
        !          7363: ---
        !          7364: > *      PRPAR -- PROCESS PRINT PARAMETERS
        !          7365: 19846d18487
        !          7366: < *      (WC)                  IF NONZERO ASSOCIATE TERMINAL ONLY
        !          7367: 19848c18489
        !          7368: < *      (XL,XR,WA,WB,WC)      DESTROYED
        !          7369: ---
        !          7370: > *      (XR,WA,WB,WC)         DESTROYED
        !          7371: 19850,19853d18490
        !          7372: < *      SINCE MEMORY ALLOCATION IS UNDECIDED ON INITIAL CALL,
        !          7373: < *      TERMINAL CANNOT BE ASSOCIATED. THE ENTRY WITH WC NON-ZERO
        !          7374: < *      IS PROVIDED SO A LATER CALL CAN BE MADE TO COMPLETE THIS.
        !          7375: < *
        !          7376: 19855c18492
        !          7377: <        BNZ  WC,PRPA7         JUMP TO ASSOCIATE TERMINAL
        !          7378: ---
        !          7379: >        MOV  XL,-(XS)         SAVE XL
        !          7380: 19866,19868c18503,18504
        !          7381: <        MOV  PRLEN,WB         GET PRIOR LENGTH IF ANY
        !          7382: <        BZE  WB,PRPA2         SKIP IF NO LENGTH
        !          7383: <        BGT  WA,WB,PRPA3      SKIP STORING IF TOO BIG
        !          7384: ---
        !          7385: >        BZE  PRLEN,PRPA2      SKIP IF NOT SYSXI RESUMPTION
        !          7386: >        BHI  WA,PRLEN,PRPA3   SKIP IF BIGGER THAN PRIOR BFRS
        !          7387: 19874c18510
        !          7388: < *      PROCESS BITS OPTIONS
        !          7389: ---
        !          7390: > *      CHECK TERMINAL BUFFER SIZE
        !          7391: 19876,19879c18512,18513
        !          7392: < PRPA3  MOV  BITS3,WB         BIT 3 MASK
        !          7393: <        ANB  WC,WB            GET -NOLIST BIT
        !          7394: <        ZRB  WB,PRPA4         SKIP IF CLEAR
        !          7395: <        ZER  CSWLS            SET -NOLIST
        !          7396: ---
        !          7397: > PRPA3  BZE  TTLEN,PRPA4      SKIP IF NOT SYSXI RESUMPTION
        !          7398: >        BHI  XL,TTLEN,PRPA5   SKIP IF TOO BIG
        !          7399: 19881c18515
        !          7400: < *      CHECK IF FAIL REPORTS GOTO INTERACTIVE CHANNEL
        !          7401: ---
        !          7402: > *      STORE TERMINAL BUFFER LENGTH
        !          7403: 19883c18517,18521
        !          7404: < PRPA4  MOV  BITS1,WB         BIT 1 MASK
        !          7405: ---
        !          7406: > PRPA4  MOV  XL,TTLEN         BFR LENGTH
        !          7407: > *
        !          7408: > *      PROCESS BITS OPTIONS
        !          7409: > *
        !          7410: > PRPA5  MOV  BITS1,WB         BIT 1 MASK
        !          7411: 19885c18523
        !          7412: <        MOV  WB,ERICH         STORE INT. CHAN. ERROR FLAG
        !          7413: ---
        !          7414: >        MOV  WB,TTINS         INPUT FROM TERMINAL FLAG
        !          7415: 19888,19894c18526,18533
        !          7416: <        MOV  WB,PRICH         FLAG FOR STD PRINTER ON INT. CHAN.
        !          7417: <        MOV  BITS4,WB         BIT 4 MASK
        !          7418: <        ANB  WC,WB            GET BIT
        !          7419: <        MOV  WB,CPSTS         FLAG FOR COMPILE STATS SUPPRESSN.
        !          7420: <        MOV  BITS5,WB         BIT 5 MASK
        !          7421: <        ANB  WC,WB            GET BIT
        !          7422: <        MOV  WB,EXSTS         FLAG FOR EXEC STATS SUPPRESSION
        !          7423: ---
        !          7424: >        MOV  WB,TTOUS         STD OUTPUT TO TERMINAL FLAG
        !          7425: >        MOV  TTLEN,TTERL      ERRORS TO TERML IF AVAILABLE
        !          7426: >        MOV  PRLEN,PRAVL      NOTE IF A PRINT FILE IS AVAILABLE
        !          7427: >        ZRB  WB,PRPA6         IF FLAG SET, CLEAR TTERL SINCE ...
        !          7428: >        ZER  TTERL            ... TERML GETS ALL OUTPUT ALREADY
        !          7429: >        MOV  TTLEN,TTOUS      REGULAR O/P TO TERML IF AVAILABLE
        !          7430: >        MOV  TTLEN,PRLEN      REVISED PRINT BUFFER LENGTH
        !          7431: >        ZER  TTLEN            DONT NEED SEPARATE TERML BUFFER
        !          7432: 19899,19904c18538
        !          7433: <        MOV  BITS6,WB         BIT 6 MASK
        !          7434: <        ANB  WC,WB            GET BIT
        !          7435: <        MOV  WB,PRECL         EXTENDED/COMPACT LISTING FLAG
        !          7436: <        SUB  =NUM08,WA        POINT 8 CHARS FROM LINE END
        !          7437: <        ZRB  WB,PRPA5         JUMP IF NOT EXTENDED
        !          7438: <        MOV  WA,LSTPO         STORE FOR LISTING PAGE HEADINGS
        !          7439: ---
        !          7440: > *      GET OFFSET TO /PAGE NN/ PART OF HEADER
        !          7441: 19906c18540,18543
        !          7442: < *       CONTINUE OPTION PROCESSING
        !          7443: ---
        !          7444: > PRPA6  MOV  PRLEN,WA         STD BFR LENGTH
        !          7445: >        BNZ  WA,PRPA7         USE IF NON-ZERO
        !          7446: >        MOV  TTLEN,WA         ELSE TRY TERMINAL
        !          7447: >        BZE  WA,PRPA8         GIVE UP IF ZERO ALSO
        !          7448: 19908,19920c18545
        !          7449: < PRPA5  MOV  BITS7,WB         BIT 7 MASK
        !          7450: <        ANB  WC,WB            GET BIT 7
        !          7451: <        MOV  WB,CSWEX         SET -NOEXECUTE IF NON-ZERO
        !          7452: <        MOV  BIT10,WB         BIT 10 MASK
        !          7453: <        ANB  WC,WB            GET BIT 10
        !          7454: <        MOV  WB,HEADP         PRETEND PRINTED TO OMIT HEADERS
        !          7455: <        MOV  BITS9,WB         BIT 9 MASK
        !          7456: <        ANB  WC,WB            GET BIT 9
        !          7457: <        MOV  WB,PRSTO         KEEP IT AS STD LISTING OPTION
        !          7458: <        ZRB  WB,PRPA6         SKIP IF CLEAR
        !          7459: <        MOV  PRLEN,WA         GET PRINT BUFFER LENGTH
        !          7460: <        SUB  =NUM08,WA        POINT 8 CHARS FROM LINE END
        !          7461: <        MOV  WA,LSTPO         STORE PAGE OFFSET
        !          7462: ---
        !          7463: > *      GET OFFSET
        !          7464: 19922c18547,18552
        !          7465: < *      CHECK FOR TERMINAL
        !          7466: ---
        !          7467: > PRPA7  MOV  WA,PRLEN         STORE AS BUFFER LENGTH
        !          7468: >        SUB  =NUM08,WA        JUST BEFORE END OF LINE
        !          7469: >        MOV  WA,LSTPO         KEEP IT
        !          7470: >        MOV  TTOUS,WB         CONSTRUCT VALUE FOR ...
        !          7471: >        ORB  PRAVL,WB         ... USE IN DECIDING WHETHER TO ...
        !          7472: >        MOV  WB,PRPUT         ... PUT STRINGS IN OUTPUT BUFFER
        !          7473: 19924,19932c18554
        !          7474: < PRPA6  ANB  BITS8,WC         SEE IF TERMINAL TO BE ACTIVATED
        !          7475: <        BNZ  WC,PRPA7         JUMP IF TERMINAL REQUIRED
        !          7476: <        BZE  INITR,PRPA8      JUMP IF NO TERMINAL TO DETACH
        !          7477: <        MOV  =V$TER,XL        PTR TO /TERMINAL/
        !          7478: <        JSR  GTNVR            GET VRBLK POINTER
        !          7479: <        PPM                   CANT FAIL
        !          7480: <        MOV  =NULLS,VRVAL(XR) CLEAR VALUE OF TERMINAL
        !          7481: <        JSR  SETVR            REMOVE ASSOCIATION
        !          7482: <        BRN  PRPA8            RETURN
        !          7483: ---
        !          7484: > *      MORE BITS
        !          7485: 19934c18556,18559
        !          7486: < *      ASSOCIATE TERMINAL
        !          7487: ---
        !          7488: > PRPA8  MOV  BITS3,WB         BIT 3 MASK
        !          7489: >        ANB  WC,WB            GET -NOLIST BIT
        !          7490: >        ZRB  WB,PRPA9         SKIP IF CLEAR
        !          7491: >        ZER  CSWLS            SET -NOLIST
        !          7492: 19936,19945c18561
        !          7493: < PRPA7  MNZ  INITR            NOTE TERMINAL ASSOCIATED
        !          7494: <        BZE  DNAMB,PRPA8      CANT IF MEMORY NOT ORGANISED
        !          7495: <        MOV  =V$TER,XL        POINT TO TERMINAL STRING
        !          7496: <        MOV  =TRTOU,WB        OUTPUT TRACE TYPE
        !          7497: <        JSR  INOUT            ATTACH OUTPUT TRBLK TO VRBLK
        !          7498: <        MOV  XR,-(XS)         STACK TRBLK PTR
        !          7499: <        MOV  =V$TER,XL        POINT TO TERMINAL STRING
        !          7500: <        MOV  =TRTIN,WB        INPUT TRACE TYPE
        !          7501: <        JSR  INOUT            ATTACH INPUT TRACE BLK
        !          7502: <        MOV  (XS)+,VRVAL(XR)  ADD OUTPUT TRBLK TO CHAIN
        !          7503: ---
        !          7504: > *      MORE BITS
        !          7505: 19947c18563,18575
        !          7506: < *      RETURN POINT
        !          7507: ---
        !          7508: > PRPA9  MOV  BITS4,WB         BIT 4 MASK
        !          7509: >        ANB  WC,WB            GET BIT
        !          7510: >        MOV  WB,CPSTS         FLAG FOR COMPILE STATS SUPPRESSN.
        !          7511: >        MOV  BITS5,WB         BIT 5 MASK
        !          7512: >        ANB  WC,WB            GET BIT
        !          7513: >        MOV  WB,EXSTS         FLAG FOR EXEC STATS SUPPRESSION
        !          7514: >        MOV  BITS6,WB         BIT 6 MASK
        !          7515: >        ANB  WC,WB            GET BIT
        !          7516: >        MOV  WB,NOXEQ         SET NOEXECUTE IF NON-ZERO
        !          7517: >        MOV  BITS7,WB         BIT 7 MASK
        !          7518: >        ANB  WC,WB            GET BIT
        !          7519: >        ZRB  WB,PRP10         SKIP IF NOT SET
        !          7520: >        ZER  TTERL            CLEAR ERRORS TO TERML IF SET
        !          7521: 19949c18577,18589
        !          7522: < PRPA8  EXI                   RETURN
        !          7523: ---
        !          7524: > *      MORE BITS
        !          7525: > *
        !          7526: > PRP10  MOV  BITS8,WB         BIT 8 MASK
        !          7527: >        ANB  WC,WB            GET BIT
        !          7528: >        MOV  WB,HEADN         SYSID HEADERS INCLUDE/OMIT FLAG
        !          7529: >        MOV  BITS9,WB         BIT 9 MASK
        !          7530: >        ANB  WC,WB            GET BIT
        !          7531: >        MOV  WB,PRSTO         STANDARD LISTING FLAG
        !          7532: >        MOV  BIT10,WB         BIT 10 MASK
        !          7533: >        ANB  WC,WB            GET BIT
        !          7534: >        MOV  WB,PRECL         EXTENDED LISTING OPTION
        !          7535: >        MOV  (XS)+,XL         RESTORE XL
        !          7536: >        EXI                   RETURN
        !          7537: 19953c18593
        !          7538: < *      PRTCH -- PRINT A CHARACTER
        !          7539: ---
        !          7540: > *      PRTCF -- PRINT CHAR TO STD PRINTER AND FLUSH BFR
        !          7541: 19954a18595,18605
        !          7542: > *      (WA)                  CHAR TO PRINT
        !          7543: > *      JSR  PRTCF            CALL TO PRINT AND FLUSH
        !          7544: > *
        !          7545: > PRTCF  PRC  E,0              ENTRY POINT
        !          7546: >        JSR  PRTCH            PRINT CHARACTER
        !          7547: >        JSR  PRTFH            FLUSH BUFFER
        !          7548: >        EXI                   RETURN TO CALLER
        !          7549: >        ENP                   END PROCEDURE PRTCF
        !          7550: > *
        !          7551: > *      PRTCH -- PRINT A CHARACTER ON STANDARD PRINTER
        !          7552: > *
        !          7553: 19960a18612
        !          7554: >        BZE  PRLEN,PTCH2      SKIP IF NO PRINT FILE
        !          7555: 19962,19963c18614,18615
        !          7556: <        BNE  PROFS,PRLEN,PRCH1 JUMP IF ROOM IN BUFFER
        !          7557: <        JSR  PRTNL            ELSE PRINT THIS LINE
        !          7558: ---
        !          7559: >        BNE  PROFS,PRLEN,PTCH1 JUMP IF ROOM IN BUFFER
        !          7560: >        JSR  PRTFH            ELSE PRINT THIS LINE
        !          7561: 19967c18619
        !          7562: < PRCH1  MOV  PRBUF,XR         POINT TO PRINT BUFFER
        !          7563: ---
        !          7564: > PTCH1  MOV  PRBUF,XR         POINT TO PRINT BUFFER
        !          7565: 19973c18625,18628
        !          7566: <        EXI                   RETURN TO PRTCH CALLER
        !          7567: ---
        !          7568: > *
        !          7569: > *      RETURN POINT
        !          7570: > *
        !          7571: > PTCH2  EXI                   RETURN TO PRTCH CALLER
        !          7572: 19974a18630,18640
        !          7573: > *
        !          7574: > *      PRTFB -- PRINT STRING, FLUSH BFR AND PRINT BLANK LINE
        !          7575: > *
        !          7576: > *      (XR)                  STRING TO PRINT
        !          7577: > *      JSR  PRTFB            CALL FOR PRINT FLUSH AND BLANK
        !          7578: > *
        !          7579: > PRTFB  PRC  E,0              ENTRY POINT
        !          7580: >        JSR  PRTSF            PRINT AND FLUSH
        !          7581: >        JSR  PRTFH            PRINT BLANK
        !          7582: >        EXI                   RETURN TO CALLER
        !          7583: >        ENP                   END PROCEDURE PRTFB
        !          7584: 19977c18643
        !          7585: < *      PRTIC -- PRINT TO INTERACTIVE CHANNEL
        !          7586: ---
        !          7587: > *      PRTFH -- FLUSH STANDARD PRINT BUFFER
        !          7588: 19979,19982c18645,18649
        !          7589: < *      PRTIC IS CALLED TO PRINT THE CONTENTS OF THE STANDARD
        !          7590: < *      PRINT BUFFER TO THE INTERACTIVE CHANNEL. IT IS ONLY
        !          7591: < *      CALLED AFTER PRTST HAS SET UP THE STRING FOR PRINTING.
        !          7592: < *      IT DOES NOT CLEAR THE BUFFER.
        !          7593: ---
        !          7594: > *      PRTFH PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS
        !          7595: > *      THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER.
        !          7596: > *      ON ITS FIRST CALL IT MAY PRINT LISTING HEADERS.
        !          7597: > *      IF TTLST IS NON-ZERO, IT COPIES PRINT BUFFER TO
        !          7598: > *      TERMINAL AND FLUSHES THIS ALSO.
        !          7599: 19984,19985c18651
        !          7600: < *      JSR  PRTIC            CALL FOR PRINT
        !          7601: < *      (WA,WB)               DESTROYED
        !          7602: ---
        !          7603: > *      JSR  PRTFH            CALL TO FLUSH BUFFER
        !          7604: 19987,19992c18653,18655
        !          7605: < PRTIC  PRC  E,0              ENTRY POINT
        !          7606: <        MOV  XR,-(XS)         SAVE XR
        !          7607: <        MOV  PRBUF,XR         POINT TO BUFFER
        !          7608: <        MOV  PROFS,WA         NO OF CHARS
        !          7609: <        JSR  SYSPI            PRINT
        !          7610: <        PPM  PRTC2            FAIL RETURN
        !          7611: ---
        !          7612: > PRTFH  PRC  R,0              ENTRY POINT
        !          7613: >        BNZ  HEADP,PTFH1      WERE HEADERS PRINTED
        !          7614: >        JSR  PRTPS            NO - PRINT THEM
        !          7615: 19994c18657
        !          7616: < *      RETURN
        !          7617: ---
        !          7618: > *      HEADERS DONE
        !          7619: 19996,19997c18659,18668
        !          7620: < PRTC1  MOV  (XS)+,XR         RESTORE XR
        !          7621: <        EXI                   RETURN
        !          7622: ---
        !          7623: > PTFH1  BZE  PRLEN,PTFH4      SKIP IF NO OUTPUT POSSIBLE
        !          7624: >        MOV  XL,-(XS)         SAVE XL
        !          7625: >        MOV  XR,-(XS)         SAVE XR
        !          7626: >        MOV  WA,-(XS)         SAVE WA
        !          7627: >        MOV  WC,-(XS)         SAVE WC
        !          7628: >        MOV  PRBUF,XR         LOAD POINTER TO BUFFER
        !          7629: >        MOV  PROFS,WC         LOAD NUMBER OF CHARS IN BUFFER
        !          7630: >        BNZ  PRAVL,PTFH5      SKIP IF PRINT FILE AVAILABLE
        !          7631: >        BNZ  TTOUS,PTFH2      SKIP IF STD OUTPUT TO TERML
        !          7632: >        BZE  TTLST,PTFH3      LAST POSSIBILITY IS ERROR TO TERML
        !          7633: 19999c18670
        !          7634: < *      ERROR OCCURED
        !          7635: ---
        !          7636: > *       SEND TO TERMINAL
        !          7637: 20001,20004c18672,18674
        !          7638: < PRTC2  ZER  ERICH            PREVENT LOOPING
        !          7639: <        ERB  252,ERROR ON PRINTING TO INTERACTIVE CHANNEL
        !          7640: <        BRN  PRTC1            RETURN
        !          7641: <        ENP                   PROCEDURE PRTIC
        !          7642: ---
        !          7643: > PTFH2  JSR  SYSPI            PRINT TO TERMINAL
        !          7644: >        PPM  PTFH6            FAIL
        !          7645: >        PPM  EROSI            ERROR
        !          7646: 20005a18676
        !          7647: > *      PRTFH (CONTINUED)
        !          7648: 20007c18678
        !          7649: < *      PRTIS -- PRINT TO INTERACTIVE AND STANDARD PRINTER
        !          7650: ---
        !          7651: > *      BLANK BUFFER
        !          7652: 20009,20013c18680,18688
        !          7653: < *      PRTIS PUTS A LINE FROM THE PRINT BUFFER ONTO THE
        !          7654: < *      INTERACTIVE CHANNEL (IF ANY) AND THE STANDARD PRINTER.
        !          7655: < *      IT ALWAYS PRINTS TO THE STANDARD PRINTER BUT DOES
        !          7656: < *      NOT DUPLICATE LINES IF THE STANDARD PRINTER IS
        !          7657: < *      INTERACTIVE.  IT CLEARS DOWN THE PRINT BUFFER.
        !          7658: ---
        !          7659: > PTFH3  MOV  PRBLK,XL         POINT TO BLANKING STRING
        !          7660: >        MOV  PRCHS,XR         POINT TO BUFFER
        !          7661: >        MOV  PRCMV,WA         COUNT OF BAUS TO MOVE
        !          7662: >        MVW                   MOVE BLANKS INTO BUFFER
        !          7663: >        ZER  PROFS            RESET OFFSET
        !          7664: >        MOV  (XS)+,WC         RESTORE WC
        !          7665: >        MOV  (XS)+,WA         RECOVER WA
        !          7666: >        MOV  (XS)+,XR         RESTORE XR
        !          7667: >        MOV  (XS)+,XL         RESTORE XL
        !          7668: 20015,20016c18690
        !          7669: < *      JSR  PRTIS            CALL FOR PRINTING
        !          7670: < *      (WA,WB)               DESTROYED
        !          7671: ---
        !          7672: > *      RETURN POINT
        !          7673: 20018,20021c18692
        !          7674: < PRTIS  PRC  E,0              ENTRY POINT
        !          7675: <        BNZ  PRICH,PRTS1      JUMP IF STANDARD PRINTER IS INT.CH.
        !          7676: <        BZE  ERICH,PRTS1      SKIP IF NOT DOING INT. ERROR REPS.
        !          7677: <        JSR  PRTIC            PRINT TO INTERACTIVE CHANNEL
        !          7678: ---
        !          7679: > PTFH4  EXI                   RETURN TO CALLER
        !          7680: 20023c18694
        !          7681: < *      MERGE AND EXIT
        !          7682: ---
        !          7683: > *      HERE FOR REGULAR PRINT FILE
        !          7684: 20025,20027c18696,18710
        !          7685: < PRTS1  JSR  PRTNL            PRINT TO STANDARD PRINTER
        !          7686: <        EXI                   RETURN
        !          7687: <        ENP                   END PROCEDURE PRTIS
        !          7688: ---
        !          7689: > PTFH5  JSR  SYSPR            CALL SYSTEM PRINT ROUTINE
        !          7690: >        PPM  PTFH6            JUMP IF FAILED
        !          7691: >        PPM  EROSI            STOP IF ERROR
        !          7692: >        BZE  TTLST,PTFH3      SKIP IF NO COPY TO TERMINAL
        !          7693: >        MOV  PROFS,SCLEN(XR)  SET STRING LENGTH FOR PTTST
        !          7694: >        JSR  PTTST            COPY STD BUFFER TO TERML BFR
        !          7695: >        JSR  PTTFH            FLUSH IT
        !          7696: >        MOV  PRLEN,SCLEN(XR)  RESTORE BUFFER LENGTH
        !          7697: >        BRN  PTFH3            MERGE
        !          7698: > *
        !          7699: > *      A FAILURE SUCH AS FILE OVERFILLED OCCURRED
        !          7700: > *
        !          7701: > PTFH6  BZE  STAGX,PTFH3      IGNORE IF COMPILE TIME
        !          7702: >        BRN  EXFAL            ELSE CAUSE STMT FAILURE
        !          7703: >        ENP                   END PROCEDURE PRTFH
        !          7704: 20057d18739
        !          7705: <        EJC
        !          7706: 20071c18753
        !          7707: <        JSR  PRTNL            PRINT LINE
        !          7708: ---
        !          7709: >        JSR  PRTFH            PRINT LINE
        !          7710: 20076,20140d18757
        !          7711: < *      PRTMX  -- AS PRTMI WITH EXTRA COPY TO INTERACTIVE CHAN.
        !          7712: < *
        !          7713: < *      JSR  PRTMX            CALL FOR PRINTING
        !          7714: < *      (WA,WB)               DESTROYED
        !          7715: < *
        !          7716: < PRTMX  PRC  E,0              ENTRY POINT
        !          7717: <        JSR  PRTST            PRINT STRING MESSAGE
        !          7718: <        MOV  =PRTMF,PROFS     SET PTR TO COLUMN 15
        !          7719: <        JSR  PRTIN            PRINT INTEGER
        !          7720: <        JSR  PRTIS            PRINT LINE
        !          7721: <        EXI                   RETURN
        !          7722: <        ENP                   END PROCEDURE PRTMX
        !          7723: <        EJC
        !          7724: < *
        !          7725: < *      PRTNL -- PRINT NEW LINE (END PRINT LINE)
        !          7726: < *
        !          7727: < *      PRTNL PRINTS THE CONTENTS OF THE PRINT BUFFER, RESETS
        !          7728: < *      THE BUFFER TO ALL BLANKS AND RESETS THE PRINT POINTER.
        !          7729: < *
        !          7730: < *      JSR  PRTNL            CALL TO PRINT LINE
        !          7731: < *
        !          7732: < PRTNL  PRC  R,0              ENTRY POINT
        !          7733: <        BNZ  HEADP,PRNL0      WERE HEADERS PRINTED
        !          7734: <        JSR  PRTPS            NO - PRINT THEM
        !          7735: < *
        !          7736: < *      CALL SYSPR
        !          7737: < *
        !          7738: < PRNL0  MOV  XR,-(XS)         SAVE ENTRY XR
        !          7739: <        MOV  WA,PRTSA         SAVE WA
        !          7740: <        MOV  WB,PRTSB         SAVE WB
        !          7741: <        MOV  PRBUF,XR         LOAD POINTER TO BUFFER
        !          7742: <        MOV  PROFS,WA         LOAD NUMBER OF CHARS IN BUFFER
        !          7743: <        JSR  SYSPR            CALL SYSTEM PRINT ROUTINE
        !          7744: <        PPM  PRNL2            JUMP IF FAILED
        !          7745: <        LCT  WA,PRLNW         LOAD LENGTH OF BUFFER IN WORDS
        !          7746: <        ADD  *SCHAR,XR        POINT TO CHARS OF BUFFER
        !          7747: <        MOV  NULLW,WB         GET WORD OF BLANKS
        !          7748: < *
        !          7749: < *      LOOP TO BLANK BUFFER
        !          7750: < *
        !          7751: < PRNL1  MOV  WB,(XR)+         STORE WORD OF BLANKS, BUMP PTR
        !          7752: <        BCT  WA,PRNL1         LOOP TILL ALL BLANKED
        !          7753: < *
        !          7754: < *      EXIT POINT
        !          7755: < *
        !          7756: <        MOV  PRTSB,WB         RESTORE WB
        !          7757: <        MOV  PRTSA,WA         RESTORE WA
        !          7758: <        MOV  (XS)+,XR         RESTORE ENTRY XR
        !          7759: <        ZER  PROFS            RESET PRINT BUFFER POINTER
        !          7760: <        EXI                   RETURN TO PRTNL CALLER
        !          7761: < *
        !          7762: < *      FILE FULL OR NO OUTPUT FILE FOR LOAD MODULE
        !          7763: < *
        !          7764: < PRNL2  BNZ  PRTEF,PRNL3      JUMP IF NOT FIRST TIME
        !          7765: <        MNZ  PRTEF            MARK FIRST OCCURRENCE
        !          7766: <        ERB  253,PRINT LIMIT EXCEEDED ON STANDARD OUTPUT CHANNEL
        !          7767: < *
        !          7768: < *      STOP AT ONCE
        !          7769: < *
        !          7770: < PRNL3  MOV  =NINI8,WB        ENDING CODE
        !          7771: <        MOV  KVSTN,WA         STATEMENT NUMBER
        !          7772: <        JSR  SYSEJ            STOP
        !          7773: <        ENP                   END PROCEDURE PRTNL
        !          7774: <        EJC
        !          7775: < *
        !          7776: 20376,20377c18993
        !          7777: <        JSR  PRTVL            PRINT VALUE
        !          7778: <        JSR  PRTNL            TERMINATE LINE
        !          7779: ---
        !          7780: >        JSR  PRTVF            PRINT VALUE
        !          7781: 20384c19000
        !          7782: < *      PRTPG  -- PRINT A PAGE THROW
        !          7783: ---
        !          7784: > *      PRTPG -- PRINT A PAGE THROW
        !          7785: 20387c19003
        !          7786: < *      LISTING CHANNEL DEPENDING ON THE LISTING OPTIONS CHOSEN.
        !          7787: ---
        !          7788: > *      LISTING FILE DEPENDING ON THE LISTING OPTIONS CHOSEN.
        !          7789: 20392,20393c19008,19009
        !          7790: <        BEQ  STAGE,=STGXT,PRP01 JUMP IF EXECUTION TIME
        !          7791: <        BZE  LSTLC,PRP06      RETURN IF TOP OF PAGE ALREADY
        !          7792: ---
        !          7793: >        BNZ  STAGX,PTPG1      SKIP IF EXECUTION TIME
        !          7794: >        BZE  LSTLC,PTPG6      RETURN IF TOP OF PAGE ALREADY
        !          7795: 20398,20401c19014,19017
        !          7796: < PRP01  MOV  XR,-(XS)         PRESERVE XR
        !          7797: <        BNZ  PRSTD,PRP02      EJECT IF FLAG SET
        !          7798: <        BNZ  PRICH,PRP03      JUMP IF INTERACTIVE LISTING CHANNEL
        !          7799: <        BZE  PRECL,PRP03      JUMP IF COMPACT LISTING
        !          7800: ---
        !          7801: > PTPG1  MOV  XR,-(XS)         PRESERVE XR
        !          7802: >        BNZ  PRECL,PTPG2      EJECT IF EXTENDED LISTING
        !          7803: >        BZE  PRSTD,PTPG3      SKIP IF COMPACT LISTING
        !          7804: >        BNZ  TTOUS,PTPG3      SKIP IF LISTING TO TERMINAL
        !          7805: 20405,20406c19021,19024
        !          7806: < PRP02  JSR  SYSEP            EJECT
        !          7807: <        BRN  PRP04            MERGE
        !          7808: ---
        !          7809: > PTPG2  JSR  SYSEP            EJECT
        !          7810: >        PPM  PTPG4            IGNORE FAILURE
        !          7811: >        PPM  EROSI            ERROR
        !          7812: >        BRN  PTPG4            MERGE
        !          7813: 20408,20409c19026
        !          7814: < *      COMPACT OR INTERACTIVE CHANNEL LISTING. CANT PRINT
        !          7815: < *      BLANKS UNTIL CHECK MADE FOR HEADERS PRINTED AND FLAG SET.
        !          7816: ---
        !          7817: > *      COMPACT LISTING.
        !          7818: 20411,20416c19028,19033
        !          7819: < *
        !          7820: < PRP03  MOV  HEADP,XR         REMEMBER HEADP
        !          7821: <        MNZ  HEADP            SET TO AVOID REPEATED PRTPG CALLS
        !          7822: <        JSR  PRTNL            PRINT BLANK LINE
        !          7823: <        JSR  PRTNL            PRINT BLANK LINE
        !          7824: <        JSR  PRTNL            PRINT BLANK LINE
        !          7825: ---
        !          7826: > PTPG3  BNZ  HEADN,PTPG4      SKIP IF HEADERS OMITTED
        !          7827: >        MOV  HEADP,XR         REMEMBER HEADP
        !          7828: >        MNZ  HEADP            SET TO AVOID RECURSIVE PRTPG CALLS
        !          7829: >        JSR  PRTFH            PRINT BLANK LINE
        !          7830: >        JSR  PRTFH            PRINT BLANK LINE
        !          7831: >        JSR  PRTFH            PRINT BLANK LINE
        !          7832: 20425c19042
        !          7833: < PRP04  BNZ  HEADP,PRP05      JUMP IF HEADER LISTED
        !          7834: ---
        !          7835: > PTPG4  BNZ  HEADP,PTPG5      JUMP IF HEADER LISTED
        !          7836: 20426a19044
        !          7837: >        BNZ  HEADN,PTPG5      SKIP IF HEADERS OMITTED
        !          7838: 20431,20432c19049
        !          7839: <        JSR  PRTST            APPEND EXTRA CHARS
        !          7840: <        JSR  PRTNL            PRINT IT
        !          7841: ---
        !          7842: >        JSR  PRTSF            APPEND EXTRA CHARS AND PRINT
        !          7843: 20434,20437c19051,19052
        !          7844: <        JSR  PRTST            PLACE IT
        !          7845: <        JSR  PRTNL            PRINT IT
        !          7846: <        JSR  PRTNL            PRINT A BLANK
        !          7847: <        JSR  PRTNL            AND ANOTHER
        !          7848: ---
        !          7849: >        JSR  PRTFB            PLACE IT AND A BLANK
        !          7850: >        JSR  PRTFH            AND ANOTHER
        !          7851: 20443c19058
        !          7852: < PRP05  MOV  (XS)+,XR         RESTORE XR
        !          7853: ---
        !          7854: > PTPG5  MOV  (XS)+,XR         RESTORE XR
        !          7855: 20447c19062
        !          7856: < PRP06  EXI                   RETURN
        !          7857: ---
        !          7858: > PTPG6  EXI                   RETURN
        !          7859: 20451c19066
        !          7860: < *      PRTPS - PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION
        !          7861: ---
        !          7862: > *      PRTPS -- PRINT PAGE WITH TEST FOR STANDARD LISTING OPTION
        !          7863: 20463a19079,19089
        !          7864: > *
        !          7865: > *      PRTSF -- PRINT STRING TO STD PRINTER AND FLUSH BFR
        !          7866: > *
        !          7867: > *      (XR)                  STRING TO PRINT
        !          7868: > *      JSR  PRTSF            CALL TO PRINT AND FLUSH
        !          7869: > *
        !          7870: > PRTSF  PRC  E,0              ENTRY POINT
        !          7871: >        JSR  PRTST            PRINT STRING
        !          7872: >        JSR  PRTFH            FLUSH BUFFER
        !          7873: >        EXI                   RETURN TO CALLER
        !          7874: >        ENP                   END PROCEDURE PRTSF
        !          7875: 20512c19138
        !          7876: < *      PRTST -- PRINT STRING
        !          7877: ---
        !          7878: > *      PRTST -- PRINT STRING TO STANDARD FILE
        !          7879: 20514c19140
        !          7880: < *      PRTST PLACES A STRING OF CHARACTERS IN THE PRINT BUFFER
        !          7881: ---
        !          7882: > *      PLACE A STRING OF CHARACTERS IN THE STANDARD PRINT BUFFER
        !          7883: 20516,20517d19141
        !          7884: < *      SEE PRTNL FOR GLOBAL LOCATIONS USED
        !          7885: < *
        !          7886: 20519a19144,19147
        !          7887: > *      IF GLOBAL TTOUS IS NON-ZERO, STRING IS SENT TO TERMINAL
        !          7888: > *      INSTEAD OF STANDARD OUTPUT FILE.
        !          7889: > *      IF GLOBAL TTLST IS NON-ZERO, STRING IS SENT TO
        !          7890: > *      TERMINAL AS WELL AS STANDARD OUTPUT FILE
        !          7891: 20526c19154
        !          7892: <        BNZ  HEADP,PRST0      WERE HEADERS PRINTED
        !          7893: ---
        !          7894: >        BNZ  HEADP,PTST1      WERE HEADERS PRINTED
        !          7895: 20529c19157
        !          7896: < *      CALL SYSPR
        !          7897: ---
        !          7898: > *      HEADERS DEALT WITH
        !          7899: 20531c19159,19165
        !          7900: < PRST0  MOV  WA,PRSVA         SAVE WA
        !          7901: ---
        !          7902: > PTST1  BZE  PRLEN,PTST7      SKIP IF NO O/P POSSIBLE
        !          7903: >        BNZ  PRPUT,PTST2      SKIP IF PUTTING IS OK
        !          7904: >        BZE  TTLST,PTST7      SKIP OUT IF NOT ERROR TO TERML
        !          7905: > *
        !          7906: > *       KEEP REGISTERS
        !          7907: > *
        !          7908: > PTST2  MOV  WA,PRSVA         SAVE WA
        !          7909: 20537c19171
        !          7910: < PRST1  MOV  SCLEN(XR),WA     LOAD STRING LENGTH
        !          7911: ---
        !          7912: > PTST3  MOV  SCLEN(XR),WA     LOAD STRING LENGTH
        !          7913: 20539c19173
        !          7914: <        BZE  WA,PRST4         JUMP TO EXIT IF NONE LEFT
        !          7915: ---
        !          7916: >        BZE  WA,PTST6         JUMP TO EXIT IF NONE LEFT
        !          7917: 20545,20546c19179,19180
        !          7918: <        BNZ  XR,PRST2         SKIP IF ROOM LEFT ON THIS LINE
        !          7919: <        JSR  PRTNL            ELSE PRINT THIS LINE
        !          7920: ---
        !          7921: >        BNZ  XR,PTST4         SKIP IF ROOM LEFT ON THIS LINE
        !          7922: >        JSR  PRTFH            PRINT THIS LINE
        !          7923: 20554c19188
        !          7924: < PRST2  BLO  WA,XR,PRST3      JUMP IF ROOM FOR REST OF STRING
        !          7925: ---
        !          7926: > PTST4  BLO  WA,XR,PTST5      JUMP IF ROOM FOR REST OF STRING
        !          7927: 20559c19193
        !          7928: < PRST3  MOV  PRBUF,XR         POINT TO PRINT BUFFER
        !          7929: ---
        !          7930: > PTST5  MOV  PRBUF,XR         POINT TO PRINT BUFFER
        !          7931: 20564d19197
        !          7932: <        MOV  WB,PRSVC         PRESERVE CHAR COUNTER
        !          7933: 20566d19198
        !          7934: <        MOV  PRSVC,WB         RECOVER CHAR COUNTER
        !          7935: 20569c19201
        !          7936: <        BRN  PRST1            LOOP BACK TO TEST FOR MORE
        !          7937: ---
        !          7938: >        BRN  PTST3            LOOP BACK TO TEST FOR MORE
        !          7939: 20573c19205
        !          7940: < PRST4  MOV  PRSVB,WB         RESTORE ENTRY WB
        !          7941: ---
        !          7942: > PTST6  MOV  PRSVB,WB         RESTORE ENTRY WB
        !          7943: 20575,20577d19206
        !          7944: <        EXI                   RETURN TO PRTST CALLER
        !          7945: <        ENP                   END PROCEDURE PRTST
        !          7946: <        EJC
        !          7947: 20579c19208
        !          7948: < *      PRTTR -- PRINT TO TERMINAL
        !          7949: ---
        !          7950: > *      RETURN POINT
        !          7951: 20581,20582c19210,19211
        !          7952: < *      CALLED TO PRINT CONTENTS OF STANDARD PRINT BUFFER TO
        !          7953: < *      ONLINE TERMINAL. CLEARS BUFFER DOWN AND RESETS PROFS.
        !          7954: ---
        !          7955: > PTST7  EXI                   RETURN TO PRTST CALLER
        !          7956: >        ENP                   END PROCEDURE PRTST
        !          7957: 20584,20585c19213
        !          7958: < *      JSR  PRTTR            CALL FOR PRINT
        !          7959: < *      (WA,WB)               DESTROYED
        !          7960: ---
        !          7961: > *      PRTVF -- PLACE A VALUE AND FLUSH STANDARD BUFFER
        !          7962: 20587,20593c19215,19216
        !          7963: < PRTTR  PRC  E,0              ENTRY POINT
        !          7964: <        MOV  XR,-(XS)         SAVE XR
        !          7965: <        JSR  PRTIC            PRINT BUFFER CONTENTS
        !          7966: <        MOV  PRBUF,XR         POINT TO PRINT BFR TO CLEAR IT
        !          7967: <        LCT  WA,PRLNW         GET BUFFER LENGTH
        !          7968: <        ADD  *SCHAR,XR        POINT PAST SCBLK HEADER
        !          7969: <        MOV  NULLW,WB         GET BLANKS
        !          7970: ---
        !          7971: > *      (XR)                  VALUE TO PRINT
        !          7972: > *      JSR  PRTVF            CALL TO PRINT AND FLUSH
        !          7973: 20595,20602c19218,19222
        !          7974: < *      LOOP TO CLEAR BUFFER
        !          7975: < *
        !          7976: < PRTT1  MOV  WB,(XR)+         CLEAR A WORD
        !          7977: <        BCT  WA,PRTT1         LOOP
        !          7978: <        ZER  PROFS            RESET PROFS
        !          7979: <        MOV  (XS)+,XR         RESTORE XR
        !          7980: <        EXI                   RETURN
        !          7981: <        ENP                   END PROCEDURE PRTTR
        !          7982: ---
        !          7983: > PRTVF  PRC  E,0              ENTRY POINT
        !          7984: >        JSR  PRTVL            PLACE VALUE
        !          7985: >        JSR  PRTFH            FLUSH BUFFER
        !          7986: >        EXI                   RETURN TO CALLER
        !          7987: >        ENP                   END PROCEDURE PRTVF
        !          7988: 20676c19296
        !          7989: < *      VCBLK, TBBLK, BCBLK MERGE HERE FOR ) BLANK NUMBER IDVAL
        !          7990: ---
        !          7991: > *      VCBLK, TBBLK MERGE HERE FOR ) BLANK NUMBER IDVAL
        !          7992: 20814a19435,19536
        !          7993: >        EJC
        !          7994: > *
        !          7995: > *      PTTFH -- FLUSH TERMINAL BUFFER
        !          7996: > *
        !          7997: > *      PRINTS THE CONTENTS OF THE TTY BUFFER, RESETS
        !          7998: > *      THE BUFFER TO ALL BLANKS AND RESETS THE POINTER.
        !          7999: > *
        !          8000: > *      JSR  PTTFH            CALL TO FLUSH BUFFER
        !          8001: > *
        !          8002: > PTTFH  PRC  E,0              ENTRY POINT
        !          8003: >        BZE  TTLEN,PTTF2      SKIP IF NO TERMINAL
        !          8004: >        MOV  XL,-(XS)         SAVE XL
        !          8005: >        MOV  XR,-(XS)         SAVE XR
        !          8006: >        MOV  WA,-(XS)         SAVE WA
        !          8007: >        MOV  WC,-(XS)         SAVE WC
        !          8008: >        MOV  TTBUF,XR         LOAD POINTER TO BUFFER
        !          8009: >        MOV  TTOFS,WC         LOAD NUMBER OF CHARS IN BUFFER
        !          8010: >        JSR  SYSPI            CALL SYSTEM PRINT ROUTINE
        !          8011: >        PPM  PTTF3            JUMP IF FAILED
        !          8012: >        PPM  EROSI            STOP IF ERROR
        !          8013: > *
        !          8014: > *      BLANK BUFFER
        !          8015: > *
        !          8016: > PTTF1  MOV  TTBLK,XL         POINT TO BLANKING STRING
        !          8017: >        MOV  TTCHS,XR         POINT TO BUFFER
        !          8018: >        MOV  TTCMV,WA         COUNT OF BAUS TO MOVE
        !          8019: >        MVW                   MOVE BLANKS INTO BUFFER
        !          8020: >        ZER  TTOFS            RESET OFFSET
        !          8021: >        MOV  (XS)+,WC         RESTORE WC
        !          8022: >        MOV  (XS)+,WA         RECOVER WA
        !          8023: >        MOV  (XS)+,XR         RESTORE XR
        !          8024: >        MOV  (XS)+,XL         RESTORE XL
        !          8025: > *
        !          8026: > *      RETURN POINT
        !          8027: > *
        !          8028: > PTTF2  EXI                   RETURN TO CALLER
        !          8029: > *
        !          8030: > *      A FAILURE SUCH AS FILE OVERFILLED OCCURRED
        !          8031: > *
        !          8032: > PTTF3  BZE  STAGX,PTTF1      IGNORE IF COMPILE TIME
        !          8033: >        BRN  EXFAL            ELSE CAUSE STMT FAILURE
        !          8034: >        ENP                   END PROCEDURE
        !          8035: >        EJC
        !          8036: > *
        !          8037: > *      PTTST -- PRINT STRING TO TERMINAL
        !          8038: > *
        !          8039: > *      PLACE A STRING OF CHARACTERS IN THE TERMINAL BUFFER
        !          8040: > *
        !          8041: > *      NOTE THAT THE FIRST WORD OF THE BLOCK (NORMALLY B$SCL)
        !          8042: > *      IS NOT USED AND NEED NOT BE SET CORRECTLY (SEE PRTVN)
        !          8043: > *
        !          8044: > *      (XR)                  STRING TO BE PRINTED
        !          8045: > *      JSR  PTTST            CALL TO PRINT STRING
        !          8046: > *      (TTOFS)               UPDATED PAST CHARS PLACED
        !          8047: > *
        !          8048: > PTTST  PRC  E,0              ENTRY POINT
        !          8049: >        BZE  TTLEN,PTTS5      SKIP IF NO TERMINAL
        !          8050: >        MOV  WA,PRTVA         SAVE WA
        !          8051: >        MOV  WB,PRTVB         SAVE WB
        !          8052: >        ZER  WB               SET CHARS PRINTED COUNT TO ZERO
        !          8053: > *
        !          8054: > *      LOOP TO PRINT SUCCESSIVE LINES FOR LONG STRING
        !          8055: > *
        !          8056: > PTTS1  MOV  SCLEN(XR),WA     LOAD STRING LENGTH
        !          8057: >        SUB  WB,WA            SUBTRACT COUNT OF CHARS ALREADY OUT
        !          8058: >        BZE  WA,PTTS4         JUMP TO EXIT IF NONE LEFT
        !          8059: >        MOV  XL,-(XS)         ELSE STACK ENTRY XL
        !          8060: >        MOV  XR,-(XS)         SAVE ARGUMENT
        !          8061: >        MOV  XR,XL            COPY FOR EVENTUAL MOVE
        !          8062: >        MOV  TTLEN,XR         LOAD BUFFER LENGTH
        !          8063: >        SUB  TTOFS,XR         GET CHARS LEFT IN BUFFER
        !          8064: >        BNZ  XR,PTTS2         SKIP IF ROOM LEFT ON THIS LINE
        !          8065: >        JSR  PTTFH            ELSE PRINT THIS LINE
        !          8066: >        MOV  TTLEN,XR         AND SET FULL WIDTH AVAILABLE
        !          8067: > *
        !          8068: > *      HERE WITH CHARS TO PRINT AND SOME ROOM IN BUFFER
        !          8069: > *
        !          8070: > PTTS2  BLO  WA,XR,PTTS3      JUMP IF ROOM FOR REST OF STRING
        !          8071: >        MOV  XR,WA            ELSE SET TO FILL LINE
        !          8072: > *
        !          8073: > *      MERGE HERE WITH CHARACTER COUNT IN WA
        !          8074: > *
        !          8075: > PTTS3  MOV  TTBUF,XR         POINT TO PRINT BUFFER
        !          8076: >        PLC  XL,WB            POINT TO LOCATION IN STRING
        !          8077: >        PSC  XR,TTOFS         POINT TO LOCATION IN BUFFER
        !          8078: >        ADD  WA,WB            BUMP STRING CHARS COUNT
        !          8079: >        ADD  WA,TTOFS         BUMP BUFFER POINTER
        !          8080: >        MVC                   MOVE CHARACTERS TO BUFFER
        !          8081: >        MOV  (XS)+,XR         RESTORE ARGUMENT POINTER
        !          8082: >        MOV  (XS)+,XL         RESTORE ENTRY XL
        !          8083: >        BRN  PTTS1            LOOP BACK TO TEST FOR MORE
        !          8084: >        EJC
        !          8085: > *
        !          8086: > *      HERE TO EXIT AFTER PRINTING STRING
        !          8087: > *
        !          8088: > PTTS4  MOV  PRTVB,WB         RESTORE ENTRY WB
        !          8089: >        MOV  PRTVA,WA         RESTORE ENTRY WA
        !          8090: > *
        !          8091: > *      RETURN POINT
        !          8092: > *
        !          8093: > PTTS5  EXI                   RETURN TO PTTST CALLER
        !          8094: >        ENP                   END PROCEDURE PTTST
        !          8095: 20851a19574,19578
        !          8096: > *      THE GLOBAL FLAG RDRER IS SET JUST BEFORE THE READ, AND
        !          8097: > *      CLEARED AFTER IT.  THIS IS SO THAT IN THE EVENT SYSRD
        !          8098: > *      OR SYSRI TAKE AN EROSI EXIT, THE ERROR APPENDAGE CAN
        !          8099: > *      RECOGNIZE THE SITUATION AND TAKE APPROPRIATE ACTION.
        !          8100: > *
        !          8101: 20859,20861c19586,19596
        !          8102: <        BNZ  XR,READ3         EXIT IF ALREADY READ
        !          8103: <        BNE  STAGE,=STGIC,READ3 EXIT IF NOT INITIAL COMPILE
        !          8104: <        MOV  CSWIN,WA         MAX READ LENGTH
        !          8105: ---
        !          8106: >        BNZ  XR,READ5         EXIT IF ALREADY READ
        !          8107: > *
        !          8108: > *      MERGE FROM -COPY EOF TO TRY READ
        !          8109: > *
        !          8110: > READ0  BEQ  STAGE,=STGIC,READ1 READ IF INITIAL COMPILE
        !          8111: >        BZE  R$COP,READ6      ELSE EXIT IF NO -COPY IN FORCE
        !          8112: > *
        !          8113: > *      ATTEMPT READ
        !          8114: > *
        !          8115: > READ1  MOV  CSWIN,WA         MAX READ LENGTH
        !          8116: >        MNZ  RDRER            NOTE IN-READR IN CASE EROSI
        !          8117: 20863,20864c19598,19612
        !          8118: <        JSR  SYSRD            READ INPUT IMAGE
        !          8119: <        PPM  READ4            JUMP IF END OF FILE
        !          8120: ---
        !          8121: >        BZE  TTINS,READ2      SKIP IF STANDARD INPUT FILE
        !          8122: >        JSR  SYSRI            READ FROM TERMINAL
        !          8123: >        PPM  READ7            FAIL
        !          8124: >        PPM  EROSI            ERROR
        !          8125: >        BRN  READ3            MERGE
        !          8126: > *
        !          8127: > *      READ FROM STANDARD FILE
        !          8128: > *
        !          8129: > READ2  JSR  SYSRD            READ INPUT IMAGE
        !          8130: >        PPM  READ7            JUMP IF END OF FILE
        !          8131: >        PPM  EROSI            ERROR RETURN
        !          8132: > *
        !          8133: > *      MERGE
        !          8134: > *
        !          8135: > READ3  ZER  RDRER            NOTE NOT-IN-READR FOR ERROR RTN
        !          8136: 20866c19614
        !          8137: <        BLE  SCLEN(XR),CSWIN,READ1  USE SMALLER OF STRING LNTH ..
        !          8138: ---
        !          8139: >        BLE  SCLEN(XR),CSWIN,READ4  USE SMALLER OF STRING LNTH..
        !          8140: 20871c19619
        !          8141: < READ1  JSR  TRIMR            TRIM TRAILING BLANKS
        !          8142: ---
        !          8143: > READ4  JSR  TRIMR            TRIM TRAILING BLANKS
        !          8144: 20875c19623
        !          8145: < READ2  MOV  XR,R$CNI         STORE COPY OF POINTER
        !          8146: ---
        !          8147: > READ5  MOV  XR,R$CNI         STORE COPY OF POINTER
        !          8148: 20879c19627
        !          8149: < READ3  EXI                   RETURN TO READR CALLER
        !          8150: ---
        !          8151: > READ6  EXI                   RETURN TO READR CALLER
        !          8152: 20883c19631,19632
        !          8153: < READ4  MOV  XR,DNAMP         POP UNUSED SCBLK
        !          8154: ---
        !          8155: > READ7  ZER  RDRER            NOTE NOT-IN-READR FOR ERR
        !          8156: >        MOV  XR,DNAMP         POP UNUSED SCBLK
        !          8157: 20885c19634,19636
        !          8158: <        BRN  READ2            MERGE
        !          8159: ---
        !          8160: >        BZE  R$COP,READ5      SKIP IF NO -COPY IN FORCE
        !          8161: >        JSR  COPND            CALL TO END THIS -COPY (EOF)
        !          8162: >        BRN  READ0            TRY AGAIN
        !          8163: 20886a19638
        !          8164: > .IF    .CASL
        !          8165: 20888a19641,19724
        !          8166: > *      SBSCC -- BUILD SUBSTRING WITH CASE CONVERSION
        !          8167: > *
        !          8168: > *      (XL)                  PTR TO SCBLK CONTAINING CHARS
        !          8169: > *      (WA)                  CHAR COUNT
        !          8170: > *      (WB)                  OFFSET TO FIRST CHAR IN SCBLK
        !          8171: > *      JSR  SBSCC            CALL TO BUILD SUBSTRING
        !          8172: > *      (XR)                  PTR TO NEW SCBLK WITH SUBSTRING
        !          8173: > *      (WA,WB,WC,XL,IA)      DESTROYED
        !          8174: > *
        !          8175: > *      IF OPTION .CPLC IS SELECTED (PREFER LOWER CASE), TARGET
        !          8176: > *      CASE IS LOWER CASE, OTHERWISE IT IS UPPER CASE.
        !          8177: > *
        !          8178: > SBSCC  PRC  E,0              ENTRY POINT
        !          8179: >        BZE  WA,SBSC4         JUMP IF NULL SUBSTRING
        !          8180: >        JSR  ALOCS            ELSE ALLOCATE SCBLK
        !          8181: >        MOV  WC,WA            MOVE NUMBER OF CHARACTERS
        !          8182: >        MOV  XR,WC            SAVE PTR TO NEW SCBLK
        !          8183: >        PLC  XL,WB            PREPARE TO LOAD CHARS FROM OLD BLK
        !          8184: >        PSC  XR               PREPARE TO STORE CHARS IN NEW BLK
        !          8185: >        LCT  WA,WA            TO COUNT ROUND LOOP
        !          8186: > *
        !          8187: > *      LOOP TO COPY AND TRANSLATE CHARS
        !          8188: > *
        !          8189: > SBSC1  LCH  WB,(XL)+         GET CHAR
        !          8190: > .IF    .CPLC
        !          8191: >        BGT  WB,=CH$L$,SBSC2  SKIP IF NOT UC LETTER
        !          8192: >        BLT  WB,=CH$LA,SBSC2  SKIP IF NOT UC LETTER
        !          8193: > .IF    .CSCV
        !          8194: >        CUL  WB               CONVERT FROM UC TO LC
        !          8195: > .ELSE
        !          8196: >        ADD  =DFA$A,WB        CONVERT FROM UC TO LC
        !          8197: > .FI
        !          8198: > .ELSE
        !          8199: >        BGT  WB,=CH$$$,SBSC2  SKIP IF NOT A LC LETTER
        !          8200: >        BLT  WB,=CH$$A,SBSC2  SKIP IF NOT A LC LETTER
        !          8201: > .IF    .CSCV
        !          8202: >        CLU  WB               CONVERT FROM LC TO UC
        !          8203: > .ELSE
        !          8204: >        SUB  =DFA$A,WB        CONVERT FROM LC TO UC
        !          8205: > .FI
        !          8206: > .FI
        !          8207: > *
        !          8208: > *      STORE CHAR IN NEW SUBSTRING
        !          8209: > *
        !          8210: > SBSC2  SCH  WB,(XR)+         STORE CHAR
        !          8211: >        BCT  WA,SBSC1         LOOP
        !          8212: >        MOV  WC,XR            RESTORE SCBLK POINTER
        !          8213: > *
        !          8214: > *      RETURN POINT
        !          8215: > *
        !          8216: > SBSC3  ZER  XL               CLEAR GARBAGE POINTER IN XL
        !          8217: >        EXI                   RETURN TO SBSCC CALLER
        !          8218: > *
        !          8219: > *      HERE FOR NULL SUBSTRING
        !          8220: > *
        !          8221: > SBSC4  MOV  =NULLS,XR        SET NULL STRING AS RESULT
        !          8222: >        BRN  SBSC3            RETURN
        !          8223: >        ENP                   END PROCEDURE SBSCC
        !          8224: >        EJC
        !          8225: > *
        !          8226: > *      SBSTG -- BUILD SUBSTRING POSSIBLY CONVERTING CASE
        !          8227: > *
        !          8228: > *      (XL)                  PTR TO SCBLK CONTAINING CHARS
        !          8229: > *      (WA)                  CHAR COUNT
        !          8230: > *      (WB)                  OFFSET TO FIRST CHAR IN SCBLK
        !          8231: > *      JSR  SBSTG            CALL TO BUILD SUBSTRING
        !          8232: > *      (XR)                  PTR TO NEW SCBLK WITH SUBSTRING
        !          8233: > *      (WA,WB,WC,XL,IA)      DESTROYED
        !          8234: > *
        !          8235: > *      IF CASE IS TO BE IGNORED (-CASEIG OR .CSIG), SUBSTRING
        !          8236: > *      IS CONVERTED TO PREFERRED CASE (DEFAULT UPPER),
        !          8237: > *      OTHERWISE CASE IS LEFT ALONE.
        !          8238: > *
        !          8239: > SBSTG  PRC  E,0              ENTRY POINT
        !          8240: >        BZE  CSWCI,SBSG1      SKIP IF CASE NOT IGNORED
        !          8241: >        JSR  SBSCC            CONVERT TO IGNORE CASE
        !          8242: >        EXI                   RETURN TO CALLER
        !          8243: > *
        !          8244: > SBSG1  JSR  SBSTR            READ SUBSTRING IN MIXED CASE
        !          8245: >        EXI                   RETURN TO CALLER
        !          8246: >        ENP                   END PROCEDURE SBSTG
        !          8247: > .FI
        !          8248: >        EJC
        !          8249: > *
        !          8250: 20891c19727
        !          8251: < *      (XL)                  PTR TO SCBLK/BFBLK WITH CHARS
        !          8252: ---
        !          8253: > *      (XL)                  PTR TO SCBLK CONTAINING CHARS
        !          8254: 20896d19731
        !          8255: < *      (XL)                  ZERO
        !          8256: 21086,21087c19921
        !          8257: < .IF    .CUCF
        !          8258: <        BLO  =CFP$U,XR,SCN07  QUICK CHECK FOR OTHER CHAR
        !          8259: ---
        !          8260: >        BGE  XR,=CFP$U,SCN07  QUICK CHECK FOR OTHER CHAR
        !          8261: 21089,21091d19922
        !          8262: < .ELSE
        !          8263: <        BSW  XR,CFP$A,SCN07   SWITCH ON SCANNED CHARACTER
        !          8264: < .FI
        !          8265: 21187,21190c20018,20021
        !          8266: <        IFF  CH$PL,SCN33      PLUS
        !          8267: <        IFF  CH$MN,SCN34      MINUS
        !          8268: <        IFF  CH$NT,SCN35      NOT
        !          8269: <        IFF  CH$DL,SCN36      DOLLAR
        !          8270: ---
        !          8271: >        IFF  CH$PL,SCN34      PLUS
        !          8272: >        IFF  CH$MN,SCN35      MINUS
        !          8273: >        IFF  CH$NT,SCN36      NOT
        !          8274: >        IFF  CH$DL,SCN33      DOLLAR
        !          8275: 21206c20037
        !          8276: <        ERB  230,SYNTAX ERROR. ILLEGAL CHARACTER
        !          8277: ---
        !          8278: >        ERB  232,SYNTAX ERROR. ILLEGAL CHARACTER
        !          8279: 21260c20091
        !          8280: < SCN14  ERB  231,SYNTAX ERROR. INVALID NUMERIC ITEM
        !          8281: ---
        !          8282: > SCN14  ERB  233,SYNTAX ERROR. INVALID NUMERIC ITEM
        !          8283: 21263a20095,20097
        !          8284: > .IF    .CASL
        !          8285: > SCN15  JSR  SBSTG            BUILD STRING NAME OF VARIABLE
        !          8286: > .ELSE
        !          8287: 21264a20099
        !          8288: > .FI
        !          8289: 21305c20140
        !          8290: <        ERB  232,SYNTAX ERROR. UNMATCHED STRING QUOTE
        !          8291: ---
        !          8292: >        ERB  234,SYNTAX ERROR. UNMATCHED STRING QUOTE
        !          8293: 21381,21382c20216,20217
        !          8294: < *      THE FIRST THREE ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR
        !          8295: < *      AS PART OF A VARIABLE NAME (.) OR CONSTANT (.+-).
        !          8296: ---
        !          8297: > *      THE FIRST FOUR ENTRIES ARE SPECIAL SINCE THEY CAN OCCUR
        !          8298: > *      AS PART OF A VARIABLE NAME (.$) OR CONSTANT (.+-).
        !          8299: 21387c20222,20225
        !          8300: < SCN33  BZE  WC,SCN09         PLUS CAN BE PART OF CONSTANT
        !          8301: ---
        !          8302: > SCN33  BZE  WB,SCN09         DOLLAR CAN BE PART OF NAME
        !          8303: >        ADD  WB,WC            ELSE BUMP POINTER
        !          8304: > *
        !          8305: > SCN34  BZE  WC,SCN09         PLUS CAN BE PART OF CONSTANT
        !          8306: 21391c20229
        !          8307: < SCN34  BZE  WC,SCN09         MINUS CAN BE PART OF CONSTANT
        !          8308: ---
        !          8309: > SCN35  BZE  WC,SCN09         MINUS CAN BE PART OF CONSTANT
        !          8310: 21393a20232,20234
        !          8311: >        LCH  XR,(XL)          GET NEXT CHARACTER
        !          8312: >        BLT  XR,=CH$D0,SCN36  SKIP IF NOT DIGIT
        !          8313: >        BLE  XR,=CH$D9,SCN08  JUMP IF DIGIT
        !          8314: 21395,21396c20236
        !          8315: < SCN35  ADD  WB,WC            NOT
        !          8316: < SCN36  ADD  WB,WC            DOLLAR
        !          8317: ---
        !          8318: > SCN36  ADD  WB,WC            NOT
        !          8319: 21405a20246
        !          8320: >        EJC
        !          8321: 21406a20248,20249
        !          8322: > *      SCANE (CONTINUED)
        !          8323: > *
        !          8324: 21439c20282
        !          8325: < SCN48  ERB  233,SYNTAX ERROR. INVALID USE OF OPERATOR
        !          8326: ---
        !          8327: > SCN48  ERB  235,SYNTAX ERROR. INVALID USE OF OPERATOR
        !          8328: 21494c20337
        !          8329: <        ERB  234,SYNTAX ERROR. GOTO FIELD INCORRECT
        !          8330: ---
        !          8331: >        ERB  236,SYNTAX ERROR. GOTO FIELD INCORRECT
        !          8332: 21500,21501c20343,20344
        !          8333: <        MOV  =OPDVN,WA        POINT TO OPDV FOR COMPLEX GOTO
        !          8334: <        BLE  XR,STATB,SCNG3   JUMP IF NOT IN STATIC (SGD15)
        !          8335: ---
        !          8336: >        MOV  =OPDVN,WA        ELSE POINT TO OPDV FOR COMPLEX GOTO
        !          8337: >        BLE  XR,STATB,SCNG3   JUMP IF NOT IN STATIC
        !          8338: 21503c20346
        !          8339: <        BRN  SCNG3            COMPLEX GOTO - MERGE
        !          8340: ---
        !          8341: >        BRN  SCNG3            AND MERGE
        !          8342: 21571c20414
        !          8343: < *      THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURE
        !          8344: ---
        !          8345: > *      THE SORT USED IS HEAPSORT, FUNDAMENTALS OF DATA STRUCTURES,
        !          8346: 21576c20419
        !          8347: < *      SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BYTE
        !          8348: ---
        !          8349: > *      SORT ARRAY) CONTAINING AT ITS HIGH ADDRESS END, BAU
        !          8350: 21588a20432,20433
        !          8351: > *      GIVES ERROR MESSAGES FOR INCORRECT ARGS, RETURNS EXI 1
        !          8352: > *      FOR EMPTY TABLE.
        !          8353: 21593a20439
        !          8354: > *      PPM  LOC              FAIL RETURN FOR EMPTY TABLE
        !          8355: 21600c20446
        !          8356: < SORTA  PRC  N,0              ENTRY POINT
        !          8357: ---
        !          8358: > SORTA  PRC  N,1              ENTRY POINT
        !          8359: 21606a20453,20455
        !          8360: >        MOV  (XR),WA          GET ARG TYPE
        !          8361: >        BEQ  WA,=B$ART,SRT00  SKIP IF ARRAY
        !          8362: >        BNE  WA,=B$TBT,SRT16  ERROR IF NOT TABLE
        !          8363: 21608,21611c20457,20463
        !          8364: <        PPM  SRT16            FAIL
        !          8365: <        MOV  XR,-(XS)         STACK PTR TO RESULTING KEY ARRAY
        !          8366: <        MOV  XR,-(XS)         ANOTHER COPY FOR COPYB
        !          8367: <        JSR  COPYB            GET COPY ARRAY FOR SORTING INTO
        !          8368: ---
        !          8369: >        PPM  SRT18            FAIL
        !          8370: > *
        !          8371: > *      MAKE COPY OF ARRAY
        !          8372: > *
        !          8373: > SRT00  MOV  XR,-(XS)         STACK PTR TO RESULTING KEY ARRAY
        !          8374: >        MOV  XR,-(XS)         ANOTHER COPY FOR CBLCK
        !          8375: >        JSR  CBLCK            GET COPY ARRAY FOR SORTING INTO
        !          8376: 21619c20471
        !          8377: <        ERR  257,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR
        !          8378: ---
        !          8379: >        ERR  237,ERRONEOUS 2ND ARG IN SORT/RSORT OF VECTOR
        !          8380: 21627c20479
        !          8381: <        SUB  *VCSI$,WA        GET NO. OF ENTRIES, N (IN BYTES)
        !          8382: ---
        !          8383: >        SUB  *VCSI$,WA        GET NO. OF ENTRIES, N (IN BAUS)
        !          8384: 21635c20487
        !          8385: <        MOV  *ARVLS,WB        OFFSET TO FIRST VALUE IF ONE
        !          8386: ---
        !          8387: >        MOV  *ARVLS,WB        OFFSET TO FIRST VALUE IF ONE DIM.
        !          8388: 21637,21639c20489,20491
        !          8389: <        BEQ  ARNDM(XL),=NUM01,SRT04 JUMP IN FACT IF ONE DIM.
        !          8390: <        BNE  ARNDM(XL),=NUM02,SRT16  FAIL UNLESS TWO DIMENS
        !          8391: <        LDI  ARLB2(XL)        GET LOWER BOUND 2 AS DEFAULT
        !          8392: ---
        !          8393: >        BEQ  ARNDM(XL),=NUM01,SRT04 JUMP IF IN FACT ONE DIMENSION
        !          8394: >        BNE  ARNDM(XL),=NUM02,SRT16  FAIL UNLESS TWO DIMENSIONAL
        !          8395: >        LDI  ARLB2(XL)        GET LOWER BOUND 2 AS DEFAULT COLUMN
        !          8396: 21662c20514
        !          8397: <        WTB  WA               CONVERT TO BYTES
        !          8398: ---
        !          8399: >        WTB  WA               CONVERT TO BAUS
        !          8400: 21679c20531
        !          8401: < *      WA = NUMBER OF ITEMS, N (CONVERTED TO BYTES).
        !          8402: ---
        !          8403: > *      WA = NUMBER OF ITEMS, N (CONVERTED TO BAUS).
        !          8404: 21714c20566
        !          8405: <        BTW  WC               CONVERT FROM BYTES
        !          8406: ---
        !          8407: >        BTW  WC               CONVERT FROM BAUS
        !          8408: 21726c20578
        !          8409: < *      (SRTSN)               NUMBER OF ITEMS TO SORT, N (BYTES)
        !          8410: ---
        !          8411: > *      (SRTSN)               NUMBER OF ITEMS TO SORT, N (BAUS)
        !          8412: 21732c20584
        !          8413: <        WTB  WC               CONVERT BACK TO BYTES
        !          8414: ---
        !          8415: >        WTB  WC               CONVERT BACK TO BAUS
        !          8416: 21742c20594
        !          8417: < *      ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAI
        !          8418: ---
        !          8419: > *      ITEM, SINCE ALGORITHM INITIALISES IT AS, AND THEN MAINTAINS
        !          8420: 21799,21800c20651,20656
        !          8421: < SRT16  ERB  256,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE
        !          8422: < SRT17  ERB  258,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER
        !          8423: ---
        !          8424: > SRT16  ERB  238,SORT/RSORT 1ST ARG NOT SUITABLE ARRAY OR TABLE
        !          8425: > SRT17  ERB  239,SORT/RSORT 2ND ARG OUT OF RANGE OR NON-INTEGER
        !          8426: > *
        !          8427: > *      SOFT FAIL RETURN
        !          8428: > *
        !          8429: > SRT18  EXI  1                RETURN
        !          8430: 21964c20820
        !          8431: <        WTB  WC               CONVERT TO BYTES
        !          8432: ---
        !          8433: >        WTB  WC               CONVERT TO BAUS
        !          8434: 21993c20849
        !          8435: < *      (WA)                  MAX ARRAY INDEX, N (IN BYTES)
        !          8436: ---
        !          8437: > *      (WA)                  MAX ARRAY INDEX, N (IN BAUS)
        !          8438: 22045c20901
        !          8439: <        WTB  WC               CONVERT BACK TO BYTES
        !          8440: ---
        !          8441: >        WTB  WC               CONVERT BACK TO BAUS
        !          8442: 22057c20913
        !          8443: <        WTB  WC               CONVERT BACK TO BYTES
        !          8444: ---
        !          8445: >        WTB  WC               CONVERT BACK TO BAUS
        !          8446: 22123a20980,20982
        !          8447: > *      POSSIBILITY OF OVERFLOW EXIST ON TWOS COMPLEMENT
        !          8448: > *      MACHINE IF HASH SOURCE IS MOST NEGATIVE INTEGER OR IS
        !          8449: > *      A REAL HAVING THE SAME BIT PATTERN.
        !          8450: 22149c21008
        !          8451: <        WTB  WC               CONVERT TO BYTE OFFSET
        !          8452: ---
        !          8453: >        WTB  WC               CONVERT TO BAU OFFSET
        !          8454: 22202a21062
        !          8455: >        MOV  XR,WB            COPY DEFAULT VALUE
        !          8456: 22211c21071
        !          8457: <        MOV  =NULLS,TEVAL(XR) SET NULL AS INITIAL VALUE
        !          8458: ---
        !          8459: >        MOV  WB,TEVAL(XR)     SET DEFAULT AS INITIAL VALUE
        !          8460: 22214c21074
        !          8461: <        ICA  XS               POP PAST NAME/VALUE INDICATOR
        !          8462: ---
        !          8463: >        MOV  (XS)+,WB         RESTORE NAME/VALUE INDICATOR
        !          8464: 22235a21096
        !          8465: > *      PPM  LOC              FAIL STOPTR IF NON-EXISTENT TRACE
        !          8466: 22239c21100
        !          8467: < TRACE  PRC  N,2              ENTRY POINT
        !          8468: ---
        !          8469: > TRACE  PRC  N,3              ENTRY POINT
        !          8470: 22244,22246c21105,21112
        !          8471: < .IF    .CULC
        !          8472: <        FLC  WA               FOLD TO UPPER CASE
        !          8473: < .FI
        !          8474: ---
        !          8475: > .IF    .CASL
        !          8476: >        BLT  WA,=CH$$A,TRC00  SKIP IF NOT LOWER CASE
        !          8477: >        SUB  =DFA$A,WA        CONVERT LOWER TO UPPER CASE
        !          8478: > *
        !          8479: > *      HERE WITH UPPER CASE TRACE TYPE CODE
        !          8480: > *
        !          8481: > TRC00  MOV  (XS),XR          LOAD NAME ARGUMENT
        !          8482: > .ELSE
        !          8483: 22247a21114
        !          8484: > .FI
        !          8485: 22253,22255d21119
        !          8486: < .IF    .CULC
        !          8487: <        BZE  WA,TRC10         JUMP IF BLANK (VALUE)
        !          8488: < .ELSE
        !          8489: 22257d21120
        !          8490: < .FI
        !          8491: 22273a21137
        !          8492: >        MOV  XL,WB            COPY TRBLK PTR OR 0
        !          8493: 22280a21145
        !          8494: >        ORB  PFCTR(XR),WB     STOPTR FAIL CHECK
        !          8495: 22282c21147
        !          8496: <        BEQ  WA,=CH$LC,EXNUL  EXIT WITH NULL IF C (CALL)
        !          8497: ---
        !          8498: >        BEQ  WA,=CH$LC,TRC11  RETURN IF LETTER C
        !          8499: 22286,22287c21151,21153
        !          8500: < TRC02  MOV  XL,PFRTR(XR)     SET/RESET RETURN TRACE
        !          8501: <        EXI                   RETURN
        !          8502: ---
        !          8503: > TRC02  ORB  PFRTR(XR),WB     STOPTR FAIL CHECK
        !          8504: >        MOV  XL,PFRTR(XR)     SET/RESET RETURN TRACE
        !          8505: >        BRN  TRC11            RETURN
        !          8506: 22292a21159
        !          8507: >        MOV  (XS)+,WB         GET TRBLK OR ZERO
        !          8508: 22295a21163
        !          8509: >        BRN  TRCA4            MERGE
        !          8510: 22299,22300c21167,21171
        !          8511: < TRC04  BEQ  XL,=STNDL,TRC16  ERROR IF UNDEFINED LABEL
        !          8512: <        MOV  (XS)+,WB         GET TRBLK PTR AGAIN
        !          8513: ---
        !          8514: > TRC04  BZE  WB,TRC12         FAIL IF STOPTR OF UNTRACED LABEL
        !          8515: > *
        !          8516: > *      TEST FOR UNDEFINED LABEL
        !          8517: > *
        !          8518: > TRCA4  BEQ  XL,=STNDL,TRC17  ERROR IF UNDEFINED LABEL
        !          8519: 22326c21197
        !          8520: < *      MERGE HERE WITH TRBLK SET UP IN WB (OR ZERO)
        !          8521: ---
        !          8522: > *      MERGE HERE WITH TRBLK SET UP IN XL (OR ZERO)
        !          8523: 22328a21200
        !          8524: >        MOV  XL,WB            COPY TRBLK PR OR 0
        !          8525: 22334a21207
        !          8526: >        ORB  R$FNC,WB         STOPTR FAIL CHECK
        !          8527: 22336c21209
        !          8528: <        EXI                   RETURN
        !          8529: ---
        !          8530: >        BRN  TRC11            RETURN
        !          8531: 22340,22341c21213,21215
        !          8532: < TRC08  MOV  XL,R$ERT         SET/RESET ERRTYPE TRACE
        !          8533: <        EXI                   RETURN
        !          8534: ---
        !          8535: > TRC08  ORB  R$ERT,WB         STOPTR FAIL CHECK
        !          8536: >        MOV  XL,R$ERT         SET/RESET ERRTYPE TRACE
        !          8537: >        BRN  TRC11            RETURN
        !          8538: 22345,22346c21219,21221
        !          8539: < TRC09  MOV  XL,R$STC         SET/RESET STCOUNT TRACE
        !          8540: <        EXI                   RETURN
        !          8541: ---
        !          8542: > TRC09  ORB  R$STC,WB         STOPTR FAIL CHECK
        !          8543: >        MOV  XL,R$STC         SET/RESET STCOUNT TRACE
        !          8544: >        BRN  TRC11            RETURN
        !          8545: 22355,22357c21230,21234
        !          8546: <        MOV  (XS)+,WB         GET NEW TRBLK PTR AGAIN
        !          8547: <        ADD  XL,WA            POINT TO VARIABLE LOCATION
        !          8548: <        MOV  WA,XR            COPY VARIABLE POINTER
        !          8549: ---
        !          8550: >        MOV  (XS)+,XR         GET NEW TRBLK PTR AGAIN
        !          8551: >        MOV  WC,WB            COPY TRACE TYPE
        !          8552: >        JSR  TRCHN            UPDATE TRACE CHAIN
        !          8553: >        PPM  TRC12            FAIL
        !          8554: >        EXI                   RETURN
        !          8555: 22359c21236
        !          8556: < *      LOOP TO SEARCH TRBLK CHAIN
        !          8557: ---
        !          8558: > *      RETURN AFTER CHECKING STOPTR FAIL CONDITION (WB = 0)
        !          8559: 22361,22367c21238,21239
        !          8560: < TRC11  MOV  (XR),XL          POINT TO NEXT ENTRY
        !          8561: <        BNE  (XL),=B$TRT,TRC13  JUMP IF NOT TRBLK
        !          8562: <        BLT  WC,TRTYP(XL),TRC13 JUMP IF TOO FAR OUT ON CHAIN
        !          8563: <        BEQ  WC,TRTYP(XL),TRC12 JUMP IF THIS MATCHES OUR TYPE
        !          8564: <        ADD  *TRNXT,XL        ELSE POINT TO LINK FIELD
        !          8565: <        MOV  XL,XR            COPY POINTER
        !          8566: <        BRN  TRC11            AND LOOP BACK
        !          8567: ---
        !          8568: > TRC11  ZRB  WB,TRC12         FAIL IF NECESSARY
        !          8569: >        EXI                   ELSE RETURN
        !          8570: 22369c21241
        !          8571: < *      HERE TO DELETE AN OLD TRBLK OF THE TYPE WE WERE GIVEN
        !          8572: ---
        !          8573: > *      FAIL STOPTR
        !          8574: 22371,22372c21243
        !          8575: < TRC12  MOV  TRNXT(XL),XL     GET PTR TO NEXT BLOCK OR VALUE
        !          8576: <        MOV  XL,(XR)          STORE TO DELETE THIS TRBLK
        !          8577: ---
        !          8578: > TRC12  EXI  3                FAIL RETURN
        !          8579: 22374,22388d21244
        !          8580: < *      HERE AFTER DELETING ANY OLD ASSOCIATION OF THIS TYPE
        !          8581: < *
        !          8582: < TRC13  BZE  WB,TRC14         JUMP IF STOPTR CASE
        !          8583: <        MOV  WB,(XR)          ELSE LINK NEW TRBLK IN
        !          8584: <        MOV  WB,XR            COPY TRBLK POINTER
        !          8585: <        MOV  XL,TRNXT(XR)     STORE FORWARD POINTER
        !          8586: <        MOV  WC,TRTYP(XR)     STORE APPROPRIATE TRAP TYPE CODE
        !          8587: < *
        !          8588: < *      HERE TO MAKE SURE VRGET,VRSTO ARE SET PROPERLY
        !          8589: < *
        !          8590: < TRC14  MOV  WA,XR            RECALL POSSIBLE VRBLK POINTER
        !          8591: <        SUB  *VRVAL,XR        POINT BACK TO VRBLK
        !          8592: <        JSR  SETVR            SET FIELDS IF VRBLK
        !          8593: <        EXI                   RETURN
        !          8594: < *
        !          8595: 22409c21265
        !          8596: < *      (XL)                  TRFNC OR TRFPT
        !          8597: ---
        !          8598: > *      (XL)                  TRFNC OR TRTRI
        !          8599: 22420,22421c21276,21277
        !          8600: <        MOV  XL,TRFNC(XR)     STORE TRFNC (OR TRFPT)
        !          8601: <        MOV  (XS)+,TRTAG(XR)  STORE TRTAG (OR TRFNM)
        !          8602: ---
        !          8603: >        MOV  XL,TRFNC(XR)     STORE TRFNC (OR TRTRI)
        !          8604: >        MOV  (XS)+,TRTAG(XR)  STORE TRTAG (OR TRTER)
        !          8605: 22427a21284,21340
        !          8606: > *      TRCHN -- UPDATE TRACE BLOCK CHAIN
        !          8607: > *
        !          8608: > *      CALLED WHEN A TRACE BLOCK CHAIN IS TO BE UPDATED BY
        !          8609: > *      ADDITION OR REMOVAL OF A TRBLK.
        !          8610: > *      IF A TRBLK OF THE SAME TYPE AS AN ADDITION IS ALREADY
        !          8611: > *      PRESENT IT IS DELETED. THE TRTAG FIELD OF ANY DELETED
        !          8612: > *      TRBLK IS CLEARED AS REQUIRED BY S$ENF.
        !          8613: > *
        !          8614: > *      (XL,WA)               POINTER, OFFSET TO TRACED VARIABLE
        !          8615: > *      (XR)                  PTR TO NEW TRBLK OR 0 FOR REMOVAL
        !          8616: > *      (WB)                  TRACE TYPE (TRTYP)
        !          8617: > *      JSR  TRCHN            CALL TO UPDATE TRACE CHAIN
        !          8618: > *      PPM  LOC              NO TRACE BLK OF REQD DELETION TYPE
        !          8619: > *      (WA,WC)               DESTROYED
        !          8620: > *
        !          8621: > TRCHN  PRC  E,1              ENTRY POINT
        !          8622: >        ADD  XL,WA            KEEP POINTER TO TRACED LOCATION
        !          8623: >        MOV  WA,XL            COPY POINTER
        !          8624: >        SUB  *TRNXT,XL        ADJUST OFFSET BEFORE ENTERING LOOP
        !          8625: >        MOV  XR,WC            COPY TRBLK PTR
        !          8626: > *
        !          8627: > *      LOOP TO FIND TRACE BLOCK
        !          8628: > *
        !          8629: > TRCH1  MOV  XL,XR            COPY SO XR POINTS TO PREDECESSOR
        !          8630: >        MOV  TRNXT(XL),XL     POINT TO POSSIBLE TRACE BLOCK
        !          8631: >        BNE  (XL),=B$TRT,TRCH2 SKIP OUT AT CHAIN END
        !          8632: >        BLT  WB,TRTYP(XL),TRCH2 SKIP IF TOO FAR OUT ON CHAIN
        !          8633: >        BNE  WB,TRTYP(XL),TRCH1 LOOP UNLESS TYPE MATCHES
        !          8634: >        MOV  TRNXT(XL),TRNXT(XR) REMOVE LINK TO OLD TRBLK
        !          8635: >        ZER  TRTAG(XL)        CLEAR IOTAG FIELD OF DELETED BLOCK
        !          8636: >        BZE  WC,TRCH3         DONE IF NO NEW TRBLK
        !          8637: > *
        !          8638: > *      OLD TRBLK REMOVED AND/OR END OF CHAIN REACHED
        !          8639: > *
        !          8640: > TRCH2  BZE  WC,TRCH4         FAIL IF REQD BLOCK TYPE NOT FOUND
        !          8641: >        MOV  WC,XL            POINT TO NEW TRBLK
        !          8642: >        MOV  TRNXT(XR),TRNXT(XL) ATTACH TAIL OF CHAIN TO IT
        !          8643: >        MOV  WC,TRNXT(XR)     LINK NEW BLOCK IN
        !          8644: >        MOV  WB,TRTYP(XL)     ENSURE TRTYP FIELD SET UP
        !          8645: > *
        !          8646: > *      UPDATE ACCESS FIELDS OF NAME IF IT IS A VRBLK
        !          8647: > *
        !          8648: > TRCH3  MOV  WA,XR            POINT TO VBL
        !          8649: >        SUB  *VRVAL,XR        ADJUST TO POSSIBLE VRBLK NAME BASE
        !          8650: >        JSR  SETVR            UPDATE ACCESS FIELDS
        !          8651: >        MOV  WA,XL            RECOVER XL
        !          8652: >        MOV  WC,XR            RECOVER XR
        !          8653: >        EXI                   RETURN TO CALLER
        !          8654: > *
        !          8655: > *      FAIL RETURN
        !          8656: > *
        !          8657: > TRCH4  MOV  WA,XL            RECOVER XL
        !          8658: >        MOV  WC,XR            RECOVER XR
        !          8659: >        EXI  1                FAIL
        !          8660: >        ENP                   END PROCEDURE TRCHN
        !          8661: >        EJC
        !          8662: > *
        !          8663: 22475,22476c21388,21389
        !          8664: <        PSC  XL,WA            READY FOR STORING BLANKS
        !          8665: <        CTB  WA,SCHAR         GET LENGTH OF BLOCK IN BYTES
        !          8666: ---
        !          8667: >        PSC  XL,WA            READY FOR STORING ZEROES
        !          8668: >        CTB  WA,SCHAR         GET LENGTH OF BLOCK IN BAUS
        !          8669: 22480c21393
        !          8670: <        ZER  WC               SET BLANK CHAR
        !          8671: ---
        !          8672: >        ZER  WC               SET ZERO CHAR
        !          8673: 22562c21475
        !          8674: < TRXQ1  MOV  FLPTR,XS         POINT BACK TO OUR STACK ENTRIES
        !          8675: ---
        !          8676: > TRXQR  MOV  FLPTR,XS         POINT BACK TO OUR STACK ENTRIES
        !          8677: 22595a21509
        !          8678: > *      (XSCNB)               ERROR INDICATOR - SEE 4) BELOW
        !          8679: 22596a21511,21513
        !          8680: > *      LEADING BLANKS AND TRAILING BLANKS POSITIONED BEFORE A
        !          8681: > *      DELIMITER OR AT THE END OF THE ARGUMENT STRING ARE
        !          8682: > *      IGNORED. OTHER BLANKS ARE ILLEGAL.
        !          8683: 22598c21515
        !          8684: < *      UNTIL ONE OF THE FOLLOWING THREE CONDITIONS OCCURS.
        !          8685: ---
        !          8686: > *      UNTIL ONE OF THE FOLLOWING CONDITIONS OCCURS.
        !          8687: 22604c21521
        !          8688: < *      3)   END OF STRING ENCOUNTERED  (WA SET TO 0)
        !          8689: ---
        !          8690: > *      3)   END OF STRING ENCOUNTERED  (WA AND XSCNB SET TO 0)
        !          8691: 22605a21523,21524
        !          8692: > *      4)   ILLEGAL BLANK  (WA 0, XSCNB NON-ZERO)
        !          8693: > *
        !          8694: 22622a21542,21543
        !          8695: >        ZER  XSCBL            CLEAR COUNT OF TRAILING BLANKS
        !          8696: >        ZER  XSCNB            CLEAR NON-BLANK SEEN FLAG
        !          8697: 22632c21553
        !          8698: < XSCN1  LCH  WB,(XR)+         LOAD NEXT CHARACTER
        !          8699: ---
        !          8700: > XSCN0  LCH  WB,(XR)+         LOAD NEXT CHARACTER
        !          8701: 22635,22636c21556,21561
        !          8702: <        DCV  WA               DECREMENT COUNT OF CHARS LEFT
        !          8703: <        BNZ  WA,XSCN1         LOOP BACK IF MORE CHARS TO GO
        !          8704: ---
        !          8705: >        BEQ  WB,=CH$BL,XSCN7  SKIP IF IT IS A BLANK
        !          8706: > .IF    .CAHT
        !          8707: >        BEQ  WB,=CH$HT,XSCN7  SKIP IF IT IS A TAB
        !          8708: > .FI
        !          8709: >        BNZ  XSCBL,XSCN2      FAIL CHAR AFTER TRAILING BLANK
        !          8710: >        MNZ  XSCNB            NOTE A NON-BLANK SEEN
        !          8711: 22637a21563,21568
        !          8712: > *      COUNT CHARS DONE
        !          8713: > *
        !          8714: > XSCN1  DCV  WA               DECREMENT COUNT OF CHARS LEFT
        !          8715: >        BNZ  WA,XSCN0         LOOP BACK IF MORE CHARS TO GO
        !          8716: >        ZER  XSCNB            CLEAR ERRONEOUS BLANKS FLAG
        !          8717: > *
        !          8718: 22643a21575
        !          8719: >        SUB  XSCBL,WA         ADJUST FOR TRAILING BLANKS
        !          8720: 22665a21598
        !          8721: >        SUB  XSCBL,WA         ADJUST FOR TRAILING BLANKS
        !          8722: 22673a21607,21609
        !          8723: > .IF    .CASL
        !          8724: >        JSR  SBSTG            BUILD SUBSTRING
        !          8725: > .ELSE
        !          8726: 22674a21611
        !          8727: > .FI
        !          8728: 22677a21615,21625
        !          8729: > *
        !          8730: > *      DEAL WITH BLANK
        !          8731: > *
        !          8732: > XSCN7  BZE  XSCNB,XSCN8      SKIP IF LEADING BLANK
        !          8733: >        ICV  XSCBL            ELSE COUNT TRAILING BLANK
        !          8734: >        BRN  XSCN1            LOOP
        !          8735: > *
        !          8736: > *      LEADING BLANK
        !          8737: > *
        !          8738: > XSCN8  ICV  XSOFS            PUSH OFFSET PAST BLANK
        !          8739: >        BRN  XSCN1            LOOP
        !          8740: 22753c21701
        !          8741: <        WTB  XR               CONVERT TO BYTE OFFSET
        !          8742: ---
        !          8743: >        WTB  XR               CONVERT TO BAU OFFSET
        !          8744: 22765c21713
        !          8745: <        ERB  235,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY
        !          8746: ---
        !          8747: >        ERB  240,SUBSCRIPTED OPERAND IS NOT TABLE OR ARRAY
        !          8748: 22841c21789
        !          8749: <        WTB  WA               CONVERT OFFSET TO BYTES
        !          8750: ---
        !          8751: >        WTB  WA               CONVERT OFFSET TO BAUS
        !          8752: 22853c21801
        !          8753: < ARF09  ERB  236,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS
        !          8754: ---
        !          8755: > ARF09  ERB  241,ARRAY REFERENCED WITH WRONG NUMBER OF SUBSCRIPTS
        !          8756: 22866c21814
        !          8757: < ARF11  ERB  237,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT
        !          8758: ---
        !          8759: > ARF11  ERB  242,TABLE REFERENCED WITH MORE THAN ONE SUBSCRIPT
        !          8760: 22870c21818
        !          8761: < ARF12  ERB  238,ARRAY SUBSCRIPT IS NOT INTEGER
        !          8762: ---
        !          8763: > ARF12  ERB  243,ARRAY SUBSCRIPT IS NOT INTEGER
        !          8764: 22901c21849
        !          8765: <        WTB  WB               CONVERT TO BYTES
        !          8766: ---
        !          8767: >        WTB  WB               CONVERT TO BAUS
        !          8768: 22921a21870,21888
        !          8769: > *      EROSI -- PROCESS ERROR RETURN FROM OSINT
        !          8770: > *
        !          8771: > *      (WA)                  0 OR ERROR CODE IN 256 TO 998
        !          8772: > *      (XL)                  0 OR PSEUDO SCBLK FOR ERROR MESSAGE
        !          8773: > *      (IA)                  NEW VALUE FOR CODE KEYWORD
        !          8774: > *      BRN  EROSI            JUMP TO PROCESS ERROR
        !          8775: > *
        !          8776: > EROSI  RTN
        !          8777: >        STI  KVCOD            STORE NEW CODE KEYWORD VALUE
        !          8778: >        MOV  WA,KVERT         STORE ERROR CODE
        !          8779: >        BZE  XL,ERROR         FAIL AT ONCE IF NO ERROR MSG TEXT
        !          8780: >        MOV  SCLEN(XL),WA     STRING LENGTH
        !          8781: >        ZER  WB               ZERO OFFSET
        !          8782: >        JSR  SBSTR            COPY ERROR MESSAGE STRING
        !          8783: >        MOV  XR,R$ETX         AND STORE IT
        !          8784: >        MNZ  EROSN            NOTE NO CALL OF SYSEM
        !          8785: >        MOV  KVERT,WA         RECALL ERROR CODE
        !          8786: >        BRN  ERROR            ENTER ERROR SECTION
        !          8787: > *
        !          8788: 22935d21901
        !          8789: <        EJC
        !          8790: 22972d21937
        !          8791: <        EJC
        !          8792: 22999d21963
        !          8793: <        EJC
        !          8794: 23015d21978
        !          8795: <        EJC
        !          8796: 23058d22020
        !          8797: <        EJC
        !          8798: 23070d22031
        !          8799: <        EJC
        !          8800: 23100c22061
        !          8801: <        ERR  239,INDIRECTION OPERAND IS NOT NAME
        !          8802: ---
        !          8803: >        ERR  244,INDIRECTION OPERAND IS NOT NAME
        !          8804: 23131c22092
        !          8805: <        ERR  240,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN
        !          8806: ---
        !          8807: >        ERR  245,PATTERN MATCH RIGHT OPERAND IS NOT PATTERN
        !          8808: 23161c22122,22125
        !          8809: <        ERR  241,PATTERN MATCH LEFT OPERAND IS NOT STRING
        !          8810: ---
        !          8811: >        ERR  246,PATTERN MATCH LEFT OPERAND IS NOT STRING
        !          8812: > .IF    .CNBF
        !          8813: >        MOV  XR,R$PMS         IF OK, STORE SUBJECT STRING POINTER
        !          8814: > .ELSE
        !          8815: 23163c22127
        !          8816: < *      MERGE WITH BUFFER OR STRING
        !          8817: ---
        !          8818: > *      MERGE WITH NULL STRING OR BUFFER
        !          8819: 23165a22130
        !          8820: > .FI
        !          8821: 23173a22139
        !          8822: >        EJC
        !          8823: 23174a22141,22142
        !          8824: > *      MATCH (CONTINUED)
        !          8825: > *
        !          8826: 23201c22169
        !          8827: <        ERB  242,FUNCTION RETURN FROM LEVEL ZERO
        !          8828: ---
        !          8829: >        ERB  247,FUNCTION RETURN FROM LEVEL ZERO
        !          8830: 23227c22195
        !          8831: <        MOV  PFVBL(XR),XL     LOAD VRBLK PTR (SGD13)
        !          8832: ---
        !          8833: >        MOV  PFVBL(XR),XL     LOAD VRBLK POINTER
        !          8834: 23260c22228
        !          8835: <        JSR  PRTNL            TERMINATE PRINT LINE
        !          8836: ---
        !          8837: >        JSR  PRTFH            TERMINATE PRINT LINE
        !          8838: 23295c22263
        !          8839: < *      HERE IF &PROFILE = 1. START TIME MUST BE FRIGGED TO
        !          8840: ---
        !          8841: > *      HERE IF PROFILE = 1. START TIME MUST BE FRIGGED TO
        !          8842: 23303c22271
        !          8843: < *      HERE IF &PROFILE = 2
        !          8844: ---
        !          8845: > *      HERE IF PROFILE = 2
        !          8846: 23331a22300
        !          8847: >        EJC
        !          8848: 23332a22302,22303
        !          8849: > *      RETRN (CONTINUED)
        !          8850: > *
        !          8851: 23344d22314
        !          8852: <        EJC
        !          8853: 23346,23347d22315
        !          8854: < *      RETRN (CONTINUED)
        !          8855: < *
        !          8856: 23352c22320
        !          8857: <        ERR  243,FUNCTION RESULT IN NRETURN IS NOT NAME
        !          8858: ---
        !          8859: >        ERR  248,FUNCTION RESULT IN NRETURN IS NOT NAME
        !          8860: 23393c22361
        !          8861: <        ERB  244,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD
        !          8862: ---
        !          8863: >        ERB  249,STATEMENT COUNT EXCEEDS VALUE OF STLIMIT KEYWORD
        !          8864: 23409a22378,22380
        !          8865: > *
        !          8866: > *      MERGE PROFILE, NO-PROFILE CASES
        !          8867: > *
        !          8868: 23432c22403,22404
        !          8869: < *      (XR)                  POINTS TO ENDING MESSAGE
        !          8870: ---
        !          8871: > *      (WA)                  0 OR ERROR MESSAGE CODE
        !          8872: > *      (XR)                  0 OR ENDING MESSAGE POINTER
        !          8873: 23436c22408,22410
        !          8874: < *      TO ENDING MESSAGE OR IS ZERO IF MESSAGE  PRINTED ALREADY.
        !          8875: ---
        !          8876: > *      TO ENDING MESSAGE OR IS ZERO IF MESSAGE PRINTED ALREADY.
        !          8877: > *      (WA) AND (XR) ARE BOTH NON-ZERO ONLY IN THE CASE OF FATAL
        !          8878: > *      ERRORS DURING INITIAL COMPILE.
        !          8879: 23440d22413
        !          8880: <        BZE  XR,STPRA         SKIP IF SYSAX ALREADY CALLED (REG04)
        !          8881: 23442d22414
        !          8882: < STPRA  ADD  RSMEM,DNAME      USE THE RESERVE MEMORY
        !          8883: 23444d22415
        !          8884: <        ADD  RSMEM,DNAME      USE THE RESERVE MEMORY
        !          8885: 23446,23448c22417,22424
        !          8886: <        BNE  XR,=ENDMS,STPR0  SKIP IF NOT NORMAL END MESSAGE
        !          8887: <        BNZ  EXSTS,STPR3      SKIP IF EXEC STATS SUPPRESSED
        !          8888: <        ZER  ERICH            CLEAR ERRORS TO INT.CH. FLAG
        !          8889: ---
        !          8890: >        ADD  RSMEM,DNAME      USE THE RESERVE MEMORY
        !          8891: >        BZE  WA,STPR1         SKIP IF NO ERROR MESSAGE
        !          8892: >        MOV  XR,STPXR         KEEP 0 OR ENDING MESSAGE
        !          8893: >        MOV  TTERL,TTLST      SEND ERROR AND STATS TO TERML
        !          8894: >        JSR  PRTPG            PAGE THROW
        !          8895: >        JSR  ERMSG            PRINT ERROR MESSAGE
        !          8896: >        MOV  STPXR,XR         RECOVER 0 OR ENDING MESSAGE
        !          8897: >        ZER  EXSTS            TO FORCE ENDING STATS OUT FOR ERROR
        !          8898: 23450c22426
        !          8899: < *      LOOK TO SEE IF AN ENDING MESSAGE IS SUPPLIED
        !          8900: ---
        !          8901: > *      PROCESS ENDING STATISTICS
        !          8902: 23452,23454c22428,22433
        !          8903: < STPR0  JSR  PRTPG            EJECT PRINTER
        !          8904: <        BZE  XR,STPR1         SKIP IF NO MESSAGE
        !          8905: <        JSR  PRTST            PRINT MESSAGE
        !          8906: ---
        !          8907: > STPR1  MTI  KVSTN            GET STATEMENT NUMBER
        !          8908: >        IEQ  STPR6            SKIP IF COMPILE TIME
        !          8909: >        BNZ  EXSTS,STPR4      SKIP IF NO STATS TO BE PRINTED
        !          8910: >        JSR  PRTPG            EJECT PRINTER
        !          8911: >        BZE  XR,STPR2         SKIP IF NO MESSAGE
        !          8912: >        JSR  PRTFB            PRINT MESSAGE
        !          8913: 23458,23459c22437
        !          8914: < STPR1  JSR  PRTIS            PRINT BLANK LINE
        !          8915: <        MTI  KVSTN            GET STATEMENT NUMBER
        !          8916: ---
        !          8917: > STPR2  JSR  PRTFH            PRINT BLANK LINE
        !          8918: 23461c22439
        !          8919: <        JSR  PRTMX            PRINT IT
        !          8920: ---
        !          8921: >        JSR  PRTMI            PRINT IT
        !          8922: 23466c22444
        !          8923: <        JSR  PRTMX            PRINT IT
        !          8924: ---
        !          8925: >        JSR  PRTMI            PRINT IT
        !          8926: 23468c22446
        !          8927: <        ILT  STPR2            SKIP IF NEGATIVE
        !          8928: ---
        !          8929: >        ILT  STPR3            SKIP IF NEGATIVE
        !          8930: 23472c22450,22452
        !          8931: <        JSR  PRTMX            PRINT IT
        !          8932: ---
        !          8933: >        JSR  PRTMI            PRINT IT
        !          8934: > .IF    .CTMD
        !          8935: > .ELSE
        !          8936: 23475c22455
        !          8937: <        IOV  STPR2            JUMP IF WE CANNOT COMPUTE
        !          8938: ---
        !          8939: >        IOV  STPR3            JUMP IF WE CANNOT COMPUTE
        !          8940: 23477c22457
        !          8941: <        IOV  STPR2            JUMP IF OVERFLOW
        !          8942: ---
        !          8943: >        IOV  STPR3            JUMP IF OVERFLOW
        !          8944: 23479c22459,22460
        !          8945: <        JSR  PRTMX            PRINT IT
        !          8946: ---
        !          8947: >        JSR  PRTMI            PRINT IT
        !          8948: > .FI
        !          8949: 23486c22467
        !          8950: < STPR2  MTI  GBCNT            LOAD COUNT OF COLLECTIONS
        !          8951: ---
        !          8952: > STPR3  MTI  GBCNT            LOAD COUNT OF COLLECTIONS
        !          8953: 23488,23489c22469,22470
        !          8954: <        JSR  PRTMX            PRINT IT
        !          8955: <        JSR  PRTIS            ONE MORE BLANK FOR LUCK
        !          8956: ---
        !          8957: >        JSR  PRTMI            PRINT IT
        !          8958: >        JSR  PRTFH            ONE MORE BLANK FOR LUCK
        !          8959: 23494c22475
        !          8960: < STPR3  MOV  KVDMP,XR         LOAD DUMP KEYWORD
        !          8961: ---
        !          8962: > STPR4  MOV  KVDMP,XR         LOAD DUMP KEYWORD
        !          8963: 23496,23497c22477
        !          8964: < STPR3  JSR  PRFLR            PRINT PROFILE IF WANTED
        !          8965: < *
        !          8966: ---
        !          8967: > STPR4  JSR  PRFLR            PRINT PROFILE IF WANTED
        !          8968: 23501,23503c22481,22484
        !          8969: <        MOV  R$FCB,XL         GET FCBLK CHAIN HEAD
        !          8970: <        MOV  KVABE,WA         LOAD ABEND VALUE
        !          8971: <        MOV  KVCOD,WB         LOAD CODE VALUE
        !          8972: ---
        !          8973: > *
        !          8974: > *      MERGE TO END RUN FOR SEVERE COMPILATION ERRORS
        !          8975: > *
        !          8976: > STPR5  MOV  =KVCOD,WA        LOAD CODE VALUE
        !          8977: 23504a22486,22496
        !          8978: > *
        !          8979: > *      TERMINATION DURING COMPILE
        !          8980: > *
        !          8981: > STPR6  BZE  XR,STPR7         SKIP IF NO MESSAGE
        !          8982: >        JSR  PRTSF            ELSE PRINT IT
        !          8983: > *
        !          8984: > *      NOTIFICATION THAT IT IS COMPILE TIME
        !          8985: > *
        !          8986: > STPR7  MOV  =ENDIC,XR        NOTIFY USER
        !          8987: >        JSR  PRTSF            SEND IT
        !          8988: >        BRN  STPR5            END
        !          8989: 23522,23542d22513
        !          8990: <        EJC
        !          8991: < *
        !          8992: < *      SYSAB -- PRINT /ABNORMAL END/ AND TERMINATE
        !          8993: < *
        !          8994: < SYSAB  RTN
        !          8995: <        MOV  =ENDAB,XR        POINT TO MESSAGE
        !          8996: <        MOV  =NUM01,KVABE     SET ABEND FLAG
        !          8997: <        JSR  PRTNL            SKIP TO NEW LINE
        !          8998: <        BRN  STOPR            JUMP TO PACK UP
        !          8999: <        EJC
        !          9000: < *
        !          9001: < *      SYSTU -- PRINT /TIME UP/ AND TERMINATE
        !          9002: < *
        !          9003: < SYSTU  RTN
        !          9004: <        MOV  =ENDTU,XR        POINT TO MESSAGE
        !          9005: <        MOV  STRTU,WA         GET CHARS /TU/
        !          9006: <        MOV  WA,KVCOD         PUT IN KVCOD
        !          9007: <        MOV  TIMUP,WA         CHECK STATE OF TIMEUP SWITCH
        !          9008: <        MNZ  TIMUP            SET SWITCH
        !          9009: <        BNZ  WA,STOPR         STOP RUN IF ALREADY SET
        !          9010: <        ERB  245,TRANSLATION/EXECUTION TIME EXPIRED
        !          9011: 23548a22520
        !          9012: > STAKV  RTN                   ENTRY POINT FOR STACK OVERFLOW
        !          9013: 23552c22524
        !          9014: <        ERB  246,STACK OVERFLOW
        !          9015: ---
        !          9016: >        ERB  250,STACK OVERFLOW
        !          9017: 23557a22530,22531
        !          9018: >        ZER  WA               NO ERROR MESSAGE
        !          9019: >        MOV  TTERL,TTLST      SEND MESSAGE TO TERML IF POSSIBLE
        !          9020: 23591c22565,22567
        !          9021: < ERROR  BEQ  R$CIM,=CMLAB,CMPLE JUMP IF ERROR IN SCANNING LABEL
        !          9022: ---
        !          9023: > ERROR  RTN                   ERROR CODE ENTRY POINT
        !          9024: >        BGE  ERRFT,=NUM03,ERR16 SKIP IF TOO MANY FATALS
        !          9025: >        BEQ  R$CIM,=CMLAB,ERRG1 JUMP IF ERROR IN LABEL SCAN
        !          9026: 23598,23601c22574,22577
        !          9027: <        IFF  STGXC,ERR04      EXECUTE TIME COMPILE
        !          9028: <        IFF  STGEV,ERR04      EVAL COMPILING EXPR.
        !          9029: <        IFF  STGEE,ERR04      EVAL EVALUATING EXPR
        !          9030: <        IFF  STGXT,ERR05      EXECUTE TIME
        !          9031: ---
        !          9032: >        IFF  STGXC,ERR08      EXECUTE TIME COMPILE
        !          9033: >        IFF  STGEV,ERR08      EVAL COMPILING EXPR.
        !          9034: >        IFF  STGEE,ERR08      EVAL EVALUATING EXPR
        !          9035: >        IFF  STGXT,ERR12      EXECUTE TIME
        !          9036: 23603c22579
        !          9037: <        IFF  STGXE,ERR04      XEQ COMPILE-PAST END
        !          9038: ---
        !          9039: >        IFF  STGXE,ERR08      XEQ COMPILE-PAST END
        !          9040: 23605d22580
        !          9041: <        EJC
        !          9042: 23608d22582
        !          9043: < *
        !          9044: 23613d22586
        !          9045: < *
        !          9046: 23617d22589
        !          9047: < *
        !          9048: 23619a22592
        !          9049: >        EJC
        !          9050: 23623,23624c22596,22600
        !          9051: <        BNZ  ERRSP,ERR03      JUMP IF ERROR SUPPRESS FLAG SET
        !          9052: <        MOV  ERICH,ERLST      SET FLAG FOR LISTR
        !          9053: ---
        !          9054: >        BNZ  ERRSP,ERR06      JUMP IF ERROR SUPPRESS FLAG SET
        !          9055: >        JSR  PRTFH            PRINT A BLANK
        !          9056: >        MOV  TTERL,TTLST      SET FLAG FOR LISTR
        !          9057: >        ADD  =NUM03,LSTLC     CAUSE EJECT IF BELOW 4 LINES LEFT
        !          9058: >        MOV  LSTLC,-(XS)      KEEP LINE COUNT
        !          9059: 23626,23629c22602,22609
        !          9060: <        JSR  PRTIS            TERMINATE LISTING
        !          9061: <        ZER  ERLST            CLEAR LISTR FLAG
        !          9062: <        MOV  SCNSE,WA         LOAD SCAN ELEMENT OFFSET
        !          9063: <        BZE  WA,ERR02         SKIP IF NOT SET
        !          9064: ---
        !          9065: >        JSR  PRTFH            TERMINATE LISTING
        !          9066: >        MOV  (XS)+,WA         RECOVER LINE COUNT
        !          9067: >        BGT  LSTLC,WA,ERR02   SKIP IF NOT NEW PAGE
        !          9068: >        ADD  =NUM04,LSTLC     BUMP FOR LINES PRINTED
        !          9069: > *
        !          9070: > *      PRINT FLAG UNDER BAD ELEMENT
        !          9071: > *
        !          9072: > ERR02  MOV  SCNSE,WA         LOAD SCAN ELEMENT OFFSET
        !          9073: 23631c22611
        !          9074: <        LCT  WB,WA            LOOP COUNTER
        !          9075: ---
        !          9076: >        MOV  WA,WB            COPY OFFSET
        !          9077: 23635a22616
        !          9078: >        BZE  WB,ERR05         SKIP IF NO BLANKS BEFORE ERROR FLAG
        !          9079: 23637a22619
        !          9080: >        LCT  WB,WB            LOOP COUNTER
        !          9081: 23641,23642c22623,22624
        !          9082: < ERRA1  LCH  WC,(XL)+         GET NEXT CHAR
        !          9083: <        BEQ  WC,=CH$HT,ERRA2  SKIP IF TAB
        !          9084: ---
        !          9085: > ERR03  LCH  WC,(XL)+         GET NEXT CHAR
        !          9086: >        BEQ  WC,=CH$HT,ERR04  SKIP IF TAB
        !          9087: 23648,23650c22630,22636
        !          9088: < ERRA2  SCH  WC,(XR)+         STORE CHAR
        !          9089: <        BCT  WB,ERRA1         LOOP
        !          9090: <        MOV  =CH$EX,XL        EXCLAMATION MARK
        !          9091: ---
        !          9092: > ERR04  SCH  WC,(XR)+         STORE CHAR
        !          9093: >        BCT  WB,ERR03         LOOP
        !          9094: >        EJC
        !          9095: > *
        !          9096: > *      MERGE IN CASE OF NO PRECEDING BLANKS
        !          9097: > *
        !          9098: > ERR05  MOV  =CH$EX,XL        EXCLAMATION MARK
        !          9099: 23658c22644
        !          9100: <        MFI  GTNSI            STORE AS SIGNED INTEGER
        !          9101: ---
        !          9102: >        STI  GTNSI            STORE AS SIGNED INTEGER
        !          9103: 23662c22648
        !          9104: <        STI  PROFS            USE AS CHARACTER OFFSET
        !          9105: ---
        !          9106: >        MFI  PROFS            USE AS CHARACTER OFFSET
        !          9107: 23669,23670c22655,22656
        !          9108: < ERR02  JSR  ERMSG            GENERATE FLAG AND ERROR MESSAGE
        !          9109: <        ADD  =NUM03,LSTLC     BUMP PAGE CTR FOR BLANK, ERROR, BLK
        !          9110: ---
        !          9111: >        JSR  ERMSG            GENERATE FLAG AND ERROR MESSAGE
        !          9112: >        ZER  TTLST            REVERT TO REGULAR LISTING
        !          9113: 23672c22658,22659
        !          9114: <        BHI  ERRFT,=NUM03,STOPR PACK UP IF SEVERAL FATALS
        !          9115: ---
        !          9116: >        ICV  CMERC            BUMP ERROR COUNT
        !          9117: >        BNE  STAGE,=STGIC,ERRG2  SPECIAL RETURN IF AFTER END LINE
        !          9118: 23674c22661,22662
        !          9119: < *      COUNT ERROR, INHIBIT EXECUTION IF REQUIRED
        !          9120: ---
        !          9121: > *      IF ERROR IN READR THEN EITHER CLOSE OUT
        !          9122: > *      CURRENT -COPY LEVEL, OR IF AT TOP THEN ABORT
        !          9123: 23676,23679c22664,22667
        !          9124: <        ICV  CMERC            BUMP ERROR COUNT
        !          9125: <        ADD  CSWER,NOXEQ      INHIBIT XEQ IF -NOERRORS
        !          9126: <        BNE  STAGE,=STGIC,CMP10  SPECIAL RETURN IF AFTER END LINE
        !          9127: <        EJC
        !          9128: ---
        !          9129: >        BZE  RDRER,ERR06      SKIP IF NOT ERROR WHILE READING
        !          9130: >        BZE  R$COP,ERR16      ABORT IF AT TOP LEVEL INPUT FILE
        !          9131: >        ZER  RDRER            ELSE CLEAR READR ERROR FLAG
        !          9132: >        JSR  COPND            AND CLOSE OUT THIS COPY LEVEL
        !          9133: 23683c22671,22672
        !          9134: < ERR03  MOV  R$CIM,XR         POINT TO START OF IMAGE
        !          9135: ---
        !          9136: > ERR06  MOV  R$CIM,XR         POINT TO START OF IMAGE
        !          9137: >        BZE  XR,ERR07         SKIP IF NO INPUT IMAGE
        !          9138: 23686c22675
        !          9139: <        BEQ  XR,=CH$MN,CMPCE  JUMP IF ERROR IN CONTROL CARD
        !          9140: ---
        !          9141: >        BEQ  XR,=CH$MN,ERRG3  JUMP IF ERROR IN CONTROL CARD
        !          9142: 23690c22679
        !          9143: <        BNE  XL,=T$SMC,ERR03  LOOP BACK IF NOT STATEMENT END
        !          9144: ---
        !          9145: >        BNE  XL,=T$SMC,ERR06  LOOP BACK IF NOT STATEMENT END
        !          9146: 23691a22681
        !          9147: >        EJC
        !          9148: 23695c22685
        !          9149: <        MOV  *CDCOD,CWCOF     RESET OFFSET IN CCBLK
        !          9150: ---
        !          9151: > ERR07  MOV  *CDCOD,CWCOF     RESET OFFSET IN CCBLK
        !          9152: 23701c22691,22692
        !          9153: <        BRN  CMPSE            MERGE TO GENERATE ERROR AS CDFAL
        !          9154: ---
        !          9155: >        JMG  CMPSE            MERGE TO GENERATE ERROR AS CDFAL
        !          9156: >        EJC
        !          9157: 23703c22694
        !          9158: < *      ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATIO
        !          9159: ---
        !          9160: > *      ERROR DURING EXECUTE TIME COMPILE OR EXPRESSION EVALUATION.
        !          9161: 23711c22702,22704
        !          9162: < ERR04  ZER  R$CCB            FORGET GARBAGE CODE BLOCK
        !          9163: ---
        !          9164: > ERR08  JSR  COPND            CALL TO CLOSE OFF THIS LEVEL
        !          9165: >        BNZ  R$COP,ERR08      LOOP IF NOT ALL -COPYS CLOSED
        !          9166: >        ZER  R$CCB            FORGET GARBAGE CODE BLOCK
        !          9167: 23719,23721c22712,22714
        !          9168: < ERRA4  ICA  XS               POP STACK
        !          9169: <        BEQ  XS,FLPRT,ERRC4   JUMP IF PROG DEFINED FN CALL FOUND
        !          9170: <        BNE  XS,GTCEF,ERRA4   LOOP IF NOT EVAL OR CODE CALL YET
        !          9171: ---
        !          9172: > ERR09  ICA  XS               POP STACK
        !          9173: >        BEQ  XS,FLPRT,ERR11   JUMP IF PROG DEFINED FN CALL FOUND
        !          9174: >        BNE  XS,GTCEF,ERR09   LOOP IF NOT EVAL OR CODE CALL YET
        !          9175: 23729c22722
        !          9176: < ERRB4  BNZ  KVERL,ERR07      JUMP IF ERRLIMIT NON-ZERO
        !          9177: ---
        !          9178: > ERR10  BNZ  KVERL,ERR14      JUMP IF ERRLIMIT NON-ZERO
        !          9179: 23734,23736c22727,22728
        !          9180: < ERRC4  MOV  FLPTR,XS         RESTORE STACK FROM FLPTR
        !          9181: <        BRN  ERRB4            MERGE
        !          9182: <        EJC
        !          9183: ---
        !          9184: > ERR11  MOV  FLPTR,XS         RESTORE STACK FROM FLPTR
        !          9185: >        BRN  ERR10            MERGE
        !          9186: 23742,23744c22734
        !          9187: < *      IF ERRLIMIT KEYWORD IS ZERO, AN ABORT IS SIGNALLED,
        !          9188: < *      SEE CODING FOR SYSTEM LABEL ABORT AT L$ABO.
        !          9189: < *
        !          9190: ---
        !          9191: > *      IF ERRLIMIT KEYWORD IS ZERO, THE RUN IS ABORTED.
        !          9192: 23749c22739
        !          9193: < *      IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT IS SIGNALLED
        !          9194: ---
        !          9195: > *      IF 3 OR MORE FATAL ERRORS OCCUR AN ABORT OCCURS
        !          9196: 23752a22743
        !          9197: >        EJC
        !          9198: 23754,23755c22745,22746
        !          9199: < ERR05  SSL  INISS            RESTORE MAIN PROG S-R STACK PTR
        !          9200: <        BNZ  DMVCH,ERR08      JUMP IF IN MID-DUMP
        !          9201: ---
        !          9202: > ERR12  SSL  INISS            RESTORE MAIN PROG S-R STACK PTR
        !          9203: >        BNZ  DMVCH,ERR15      JUMP IF IN MID-DUMP
        !          9204: 23757c22748
        !          9205: < *      MERGE HERE FROM ERR08
        !          9206: ---
        !          9207: > *      MERGE HERE AFTER DUMP TIDY UP
        !          9208: 23759c22750,22751
        !          9209: < ERR06  BZE  KVERL,LABO1      ABORT IF ERRLIMIT IS ZERO
        !          9210: ---
        !          9211: > ERR13  ZER  XR               CLEAR XR FLAG
        !          9212: >        BZE  KVERL,STOPR      ABORT IF ERRLIMIT IS ZERO
        !          9213: 23762c22754
        !          9214: < *      MERGE FROM ERR04
        !          9215: ---
        !          9216: > *      MERGE AFTER ERRLIMIT TEST
        !          9217: 23764,23765c22756
        !          9218: < ERR07  BGE  ERRFT,=NUM03,LABO1 ABORT IF TOO MANY FATAL ERRORS
        !          9219: <        DCV  KVERL            DECREMENT ERRLIMIT
        !          9220: ---
        !          9221: > ERR14  DCV  KVERL            DECREMENT ERRLIMIT
        !          9222: 23772c22763
        !          9223: <        BZE  XR,LCNT1         CONTINUE IF NO SETEXIT TRAP
        !          9224: ---
        !          9225: >        BZE  XR,ERRG4         CONTINUE IF NO SETEXIT TRAP
        !          9226: 23781,23782c22772,22773
        !          9227: < ERR08  MOV  DMVCH,XR         CHAIN HEAD FOR AFFECTED VRBLKS
        !          9228: <        BZE  XR,ERR06         DONE IF ZERO
        !          9229: ---
        !          9230: > ERR15  MOV  DMVCH,XR         CHAIN HEAD FOR AFFECTED VRBLKS
        !          9231: >        BZE  XR,ERR13         DONE IF ZERO
        !          9232: 23785c22776,22795
        !          9233: <        BRN  ERR08            LOOP THROUGH CHAIN
        !          9234: ---
        !          9235: >        BRN  ERR15            LOOP THROUGH CHAIN
        !          9236: > *
        !          9237: > *      TAKE DRACONIAN STEPS FOR REPEATED FATAL ERRORS
        !          9238: > *
        !          9239: > ERR16  MOV  ERRTF,WA         ERROR CODE
        !          9240: >        MOV  WA,KVERT         PLACE ERROR CODE FOR ERMSG
        !          9241: >        MNZ  XR               IN CASE COMPILE TIME
        !          9242: >        BEQ  STAGE,=STGIC,STOPR JUMP IF SO
        !          9243: >        BEQ  STAGE,=STGCE,STOPR ALSO COMPILE TIME
        !          9244: >        ZER  XR               INDICATE EXECUTION
        !          9245: >        BRN  STOPR            TERMINATE RUN
        !          9246: > *
        !          9247: > ERRAF  ERB  251,TOO MANY FATAL ERRORS
        !          9248: > *
        !          9249: > *      HERE FOR GLOBAL ERROR JUMPS
        !          9250: > *
        !          9251: > ERRG1  JMG  CMPLE
        !          9252: > ERRG2  JMG  CMPEE
        !          9253: > ERRG3  JMG  CMPCE
        !          9254: > ERRG4  JMG  LCNXE
        !          9255: 23791,23801d22800
        !          9256: < 
        !          9257: < 
        !          9258: < 
        !          9259: < 
        !          9260: < 
        !          9261: < 
        !          9262: < 
        !          9263: < 
        !          9264: < 
        !          9265: < 
        !          9266: < 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.