#4001
DATE=Sept 20, 1977
PERSON=Engle
NAME=TIME
NBR=360/1
DESCR=When subroutine is used on a 360 and the print option is  
DESCR=specified, "SPRINT CALL USES ILLEGAL PARAMETERS" results.
OLDUPDATE=%AFTER TIME0620
OLDUPDATE=         SR    R15,R15
NEWUPDATE=/BEGIN C4001
NEWUPDATE=/COPY "TOFSOVLY"
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=         SR    R15,R15
NEWUPDATE=/END
COMMENTS=Corrects incorrect value for modifiers address in SPRINT 
COMMENTS=parameter list when run on a 360.
COMMENTS=    
COMMENTS=Note: Object for TIME on the restore tape has been changed.
COMMENTS=      Source, updated as per above, is in MTS:TIME on the
COMMENTS=      restore-tape pack. 
#4002
DATE=Sept 22, 1977
PERSON=Alexander
NAME=MTS
NBR=42/1
DESCR=Local time limit expiring just when user program was entering
DESCR=CMD subroutine was not handled properly.
OLDUPDATE=%AFTER MTS00742
OLDUPDATE=         MVI   CLSCMDID+1,MTSFLG    for local time limit
OLDUPDATE=*                                   at entry to CMD
NEWUPDATE=/BEGIN C4002
NEWUPDATE=/COPY "NXTSEG"
NEWUPDATE=/COPY COUNT=4
NEWUPDATE=         MVI   CLSCMDID+1,MTSFLG    for local time limit
NEWUPDATE=*                                   at entry to CMD
NEWUPDATE=/END
COMMENTS=REP cards for this are in the *IPL... files on the 
COMMENTS=restore-tape pack. 
#4003
DATE=Sept 22, 1977
PERSON=Helffrich
NAME=TABLES(DECKGEN)
NBR=004/5
DESCR=Corrects bug in generation of the CHANNELS table for selector
DESCR=sub-channels. 
NEWUPDATE=/BEGIN C4003
NEWUPDATE=/COPY "TABSEL"
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=TABSE5   DS    0H
NEWUPDATE=/COPY "TABSE4"
NEWUPDATE=/EDIT "TABSE1" = "TABSE5"
NEWUPDATE=/END 
COMMENTS=This correction is in the restore-tape pack files 
COMMENTS=MTS:DCKPCHR.S and MTS:DCKPCHR.O, and the ipl files *IPL...
#4004
DATE=Sept 22, 1977
PERSON=Helffrich
NAME=TABLES(DECKGEN)
NBR=004/5
DESCR=Corrects generation of BLKMPX table, for both 360s and 370s.
NEWUPDATE=/BEGIN C4004
NEWUPDATE=/COPY "TABSIO1"
NEWUPDATE=/COPY BLANKS "ESDEF BLKMPX,R2"
NEWUPDATE=/SKIP COUNT=2
NEWUPDATE=/COPY "TABBLK1"
NEWUPDATE=/DELETE BLANKS "TM    3(RA),1"
NEWUPDATE=         TM    3(RA),8            SEL SUB?
NEWUPDATE=/DELETE BLANKS "BZ    TABBLK2"
NEWUPDATE=         BO    TABBLK2            YES
NEWUPDATE=/END
COMMENTS=This correction is in the restore-tape pack files 
COMMENTS=MTS:DCKPCHR.S and MTS:DCKPCHR.O, and the ipl files *IPL...
#4005
DATE=Sept 22, 1977
PERSON=Helffrich
NAME=TABLES(DECKGEN)
NBR=004/5
DESCR=Fixes bug in allocation of TERMBFRS. 
NEWUPDATE=/BEGIN C4005
NEWUPDATE=/COPY "TABGNJT"
NEWUPDATE=/COPY BLANKS "ESDEF TERMBFRS,R2"
NEWUPDATE=/DELETE BLANKS "LA    R1,2(R2,R2)"
NEWUPDATE=         LA    R1,0(R8,R8)        PAST 'BUFUSE'
NEWUPDATE=/DELETE BLANKS "BCTR  R0,0"
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/END
COMMENTS=This correction is in the restore-tape pack files 
COMMENTS=MTS:DCKPCHR.S and MTS:DCKPCHR.O, and the ipl files *IPL...
********** Sent with Distribution 4.0 **********
#4006
DATE=Oct 5, 1977
PERSON=Tiffany
NAME=*APC(NEW_EXPLAIN)
NBR=496/5
DESCR=If the user attempts "EXPLAIN COMPARE", he gets
DESCR=more than just the description of the COMPARE
DESCR=command. 
EDIT=EDIT ETC:APCEXP
EDIT=SCAN 'COMPARE'
EDIT=CHANGE '6M'6'
EDIT=STOP
COMMENTS=The offensive letter "M" after a line number
COMMENTS=for the description of the COMPARE command is
COMMENTS=removed. 
#4007
DATE=Oct 07, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PALPHA)
NBR=615/7
DESCR=Corrects bug in PALPHA which prevented loading of alphabets
DESCR=from user files.
NEWUPDATE=/BEGIN C4007
NEWUPDATE=/COPY BEFORE "PALIB7"
NEWUPDATE=PALIB7   L     3,0(,1)            SAVE CONTROL BLOCK ADDRESS
NEWUPDATE=/EDIT "PALIB7" = "      "
NEWUPDATE=/DELETE      "         L     3,CPACON"
NEWUPDATE=/END
#4008
DATE=Oct 07, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PALPHA)
NBR=615/7
DESCR=Corrects bug in PSMLEN which prevented it from working for
DESCR=characters sets with grid size > 16.
NEWUPDATE=/BEGIN C4008
NEWUPDATE=/COPY BEFORE "         LA    7,PLCHARC"
NEWUPDATE=/SKIP C=4 
NEWUPDATE=/COPY BEFORE "PLCHARA"
NEWUPDATE=/COPY C=2
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY BEFORE "PLCHARD"
NEWUPDATE=/SKIP C=3
NEWUPDATE=/END
#4009
DATE=Oct 07, 1977
PERSON=Alexander
NAME=MTS
NBR=42/1
DESCR=The changes specified in Change Form 4002 were incorrect 
DESCR=in that they not only fixed the problem described, they
DESCR=also "fixed" a great many other things too.  REMOVE THE 
DESCR=CHANGES SPECIFIED BY 4002 and then apply the change here.
OLDUPDATE=%AFTER MTS04618
OLDUPDATE=         MVI   CLSCMDID+1,MTSFLG 
NEWUPDATE=/BEGIN C4009
NEWUPDATE=/COPY 'OKEDONE '
NEWUPDATE=         MVI   CLSCMDID+1,MTSFLG 
NEWUPDATE=/END
COMMENTS=Don't forget to REMOVE THE INSERTION SPECIFIED in 4002.
#4010
DATE=Oct 10, 1977
PERSON=Sherry
NAME=UMLOAD
NBR=001/1
DESCR=Corrects bug discovered by RPI to round length on END
DESCR=card to nearest doubleword.
OLDUPDATE=%DELETE UMLD1827
OLDUPDATE=ENDCF3   LA    R2,7(,R2)          ROUND UP LENGTH TO
OLDUPDATE=         N     R2,=X'FFFFFFF8'     NEAREST DOUBLEWORD.
OLDUPDATE=         ST    R2,ESDLEN          CSECT FINALLY HAS A LENGTH
NEWUPDATE=/BEGIN C4010
NEWUPDATE=/DELETE "ENDCF3   ST    R2,ESDLEN"
NEWUPDATE=ENDCF3   LA    R2,7(,R2)          ROUND UP LENGTH TO
NEWUPDATE=         N     R2,=X'FFFFFFF8'     NEAREST DOUBLEWORD.
NEWUPDATE=         ST    R2,ESDLEN          CSECT FINALLY HAS A LENGTH
NEWUPDATE=/END
COMMENTS=This bug caused some TXT cards (in OS-generated modules)
COMMENTS=to be rejected with the message "ILLEGAL TXT CARD LENGTH
COMMENTS=DETECTED"
********** Sent October 11, 1977      **********
#4011
DATE=Oct 11, 1977
PERSON=Lift
NAME=PLOT SYSTEM(CBDSECT)
NBR=615/8
DESCR=Changes alphabet names from 8c to 16c.
NEWUPDATE=/BEGIN C4011
NEWUPDATE=/DELETE   "CBNAME"
NEWUPDATE=CBNAME   DS    CL16               ALPHABET NAME
NEWUPDATE=/END
COMMENTS=This correction is to the dsect, so PSYM (615/6) and
COMMENTS=PALPHA (615/7) must be reassembled.
#4012
DATE=Oct 12, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PALPHA)
NBR=615/7
DESCR=Changes (with #4011) alphabet names from 8c to 16c.
NEWUPDATE=/BEGIN C4012
NEWUPDATE=/COPY "PALPHA1" 
NEWUPDATE=/DELETE BLANKS "CLC   0(8,2)" 
NEWUPDATE=         CLC   0(9,2),=C'STANDARD ' IS IT DEFAULT ONE? 
NEWUPDATE=/COPY BEFORE "         L     15,=V(PSYMSW1)" 
NEWUPDATE=/COPY COUNT=3 
NEWUPDATE=/EDIT "9" = "17" 
NEWUPDATE=/COPY BEFORE "PALIB1" 
NEWUPDATE=/COPY COUNT=4 
NEWUPDATE=/DELETE BLANKS "MVC   DWORD(8)" 
NEWUPDATE=         MVC   DWORD(16),=CL16' ' PAD CALLER'S NAME TO 16C
NEWUPDATE=/COPY "PALIB8" 
NEWUPDATE=/DELETE BLANKS "L     1,4(,2)"
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/EDIT "CPA" = "CDI"
NEWUPDATE=/EDIT "READ" = "READBFR"
NEWUPDATE=/DELETE BLANKS "L     3,4(,2)"
NEWUPDATE=         L     3,CDIREAD
NEWUPDATE=/DELETE BLANKS "LA    4,12" 
NEWUPDATE=         LA    4,20               ENTRY: 16C NAME, F LINE#
NEWUPDATE=/COPY BEFORE "PALIB4" 
NEWUPDATE=/EDIT "0(8,3),DWORD " = "0(16,3),DWORD" 
NEWUPDATE=/COPY BEFORE "PALIB6" 
NEWUPDATE=/EDIT "1,8(,3) " = "1,16(,3)" 
NEWUPDATE=/COPY "CPAREAD"
NEWUPDATE=CDIREAD  DC    A(0,LPABUF,MODF,LNUM,PAFDUB)  FOR READBFR
NEWUPDATE=/DELETE "DWORD" 
NEWUPDATE=DWORD    DS    2D 
NEWUPDATE=/COPY "DEFALPHA" 
NEWUPDATE=/COPY COUNT=3 
NEWUPDATE=         DC    C'        ' 
NEWUPDATE=/END 
COMMENTS=Note #4011 should be applied before this one.
#4013
DATE=Oct 11, 1977
PERSON=Alexander
NAME=TABLES(DECKGEN)
NBR=004/5
DESCR=Fixes generation of reverse pathfinding tables in cases
DESCR=where the first control unit on a channel has a high
DESCR=address. Formerly clobbered the tables generated.
NEWUPDATE=/BEGIN C4013
NEWUPDATE=/COPY 'TABGL11 '
NEWUPDATE=/DELETE NEXT 'SR' NEXT 'R9,R9'
NEWUPDATE=         LA    R9,16                  USE MINIMUM VALUE
NEWUPDATE=/END
#4014
DATE=OCT 12, 1977
PERSON=Salisbury
NAME=SDS(EDITOR)
NBR=600/010
DESCR=Corrects bug in adding PL/I external variables
DESCR=to symbol table.
NEWUPDATE=/BEGIN C4014 
NEWUPDATE=/COPY "DATADVS"
NEWUPDATE=/COPY COUNT=1 
NEWUPDATE=/SKIP COUNT=2 
NEWUPDATE=/END 
COMMENTS=Deletes test for external entry in SDS editor
#4015 
DATE=OCT 12, 1977 
PERSON=Salisbury
NAME=SDS(IOC) 
NBR=600/006 
DESCR=Corrects bug in handling variables@T=I on 360/67
NEWUPDATE=/BEGIN C4015 
NEWUPDATE=/COPY "SUEX"
NEWUPDATE=/DELETE BLANKS "L     GR4,0(REALADD)"
NEWUPDATE=         LOAD  GR4,0(REALADD),4    GET OPCODE AND MASK
NEWUPDATE=/END 
COMMENTS=Changes load instr to LOAD macro call.
#4016 
DATE=OCT 12, 1977
PERSON=Salisbury
NAME=SDS(IOC) 
NBR=600/006
DESCR=Scans for blank or comma ending binary input data
NEWUPDATE=/BEGIN C4016
NEWUPDATE=/COPY "BINCONV1"
NEWUPDATE=/COPY COUNT=2 
NEWUPDATE=         CLI   0(WA),C' ' 
NEWUPDATE=         BE    BINEXIT 
NEWUPDATE=         CLI   0(WA),C',' 
NEWUPDATE=         BE    BINEXIT 
NEWUPDATE=/END 
#4017 
DATE=OCT 12, 1977 
PERSON=Salisbury
NAME=SDS(CLSSOU) 
NBR=600/001 
DESCR=Allows multiple A-type and B-type constants within 
DESCR=a single input item
NEWUPDATE=/BEGIN C4017
NEWUPDATE=/COPY BEFORE "INAIP" 
NEWUPDATE=INAIP    CLI   0(WA),C'''' 
NEWUPDATE=         BNE   INACHK2 
NEWUPDATE=INACHK1  LA    WA,1(WA)
NEWUPDATE=         B     INACHK3 
NEWUPDATE=INACHK2  CLI   0(WA),C','
NEWUPDATE=         BE    INACHK1 
NEWUPDATE=INACHK3  CLI   0(WA),C' ' 
NEWUPDATE=         BNE   INACHK4
NEWUPDATE=         LA    WA,1(WA) 
NEWUPDATE=         B     INACHK3 
NEWUPDATE=/EDIT "INAIP  " = "INACHK4"
NEWUPDATE=/DELETE BLANKS "LA    WA,1(WA)"
NEWUPDATE=/DELETE BLANKS "SR    GR15,GR15"
NEWUPDATE=/EDIT "INPUFOC" = "INFTFC3"
NEWUPDATE=/COPY BEFORE "INBIP" 
NEWUPDATE=INBIP    CLI   0(WA),C'''' 
NEWUPDATE=         BNE   INBCHK2 
NEWUPDATE=INBCHK1  LA    WA,1(WA)
NEWUPDATE=         B     INBCHK3 
NEWUPDATE=INBCHK2  CLI   0(WA),C','
NEWUPDATE=         BE    INBCHK1 
NEWUPDATE=INBCHK3  CLI   0(WA),C' ' 
NEWUPDATE=         BNE   INBCHK4
NEWUPDATE=         LA    WA,1(WA) 
NEWUPDATE=         B     INBCHK3 
NEWUPDATE=INBCHK4  BCTR  WA,0 
NEWUPDATE=/EDIT "INBIP" = "     "
NEWUPDATE=/COPY COUNT=2
NEWUPDATE=/EDIT "INPUFOC" = "INFTFC3"
NEWUPDATE=/END 
#4018
DATE=Oct 22, 1977
PERSON=Lift
NAME=PLOT SYSTEM(ETC:PLOTALPHA)
NBR=615/9
DESCR=Changes alphabet names to 16C and introduces aliases for 
DESCR=some names.
EDIT=ED ETC:PLOTALPHA
EDIT=DE 1.001 1.999 OK
EDIT=A 1 #TN#TN        # 
EDIT=A 2 
EDIT=A 1 #HELVETIC#HELVETIC        # 
EDIT=A 3
EDIT=A 1 #GOTHICEN#GOTHICEN        # 
EDIT=A 4
EDIT=A 1 #ROMANTX#ROMANTX        # 
EDIT=A 5
EDIT=A 1 #ITALICTX#ITALICTX        # 
EDIT=A 6
EDIT=A 1 #GREEKCS#GREEKCS        # 
EDIT=A 7
EDIT=A 1 #ITALICCS#ITALICCS        # 
EDIT=A 8
EDIT=A 1 #ROMANCS#ROMANCS        # 
EDIT=A 9
EDIT=A 1 #ROMANDX#ROMANDX        # 
EDIT=A 10
EDIT=A 1 #GREEKSX#GREEKSX        # 
EDIT=A 11
EDIT=A 1 #ROMANSX#ROMANSX        # 
EDIT=A 12
EDIT=A 1 #SCRIPTSX#SCRIPTSX        # 
EDIT=A 13
EDIT=A 1 #GOTHICGE#GOTHICGE        # 
EDIT=A 14
EDIT=A 1 #GOTHICIT#GOTHICIT        # 
EDIT=A 15
EDIT=A 1 #SCRIPTCX#SCRIPTCX        # 
EDIT=A 16
EDIT=A 1 #ROMANCX#ROMANCX        # 
EDIT=A 17
EDIT=A 1 #ITALICCX#ITALICCX        # 
EDIT=A 18
EDIT=A 1 #GREEKCX#GREEKCX        # 
EDIT=A 19
EDIT=A 1 #CYRILLCX#CYRILLCX        # 
EDIT=A 20
EDIT=A 1 #ROMANCAR#ROMANCAR        # 
EDIT=A 21
EDIT=A 1 #GREEKCAR#GREEKCAR        # 
EDIT=A 22
EDIT=A 1 #HIRAGANA#HIRAGANA        # 
EDIT=A 23
EDIT=A 1 #KATAKANA#KATAKANA        # 
EDIT=A 24
EDIT=A 1 #KANJI1#KANJI1        # 
EDIT=A 25
EDIT=A 1 #KANJI2#KANJI2        # 
EDIT=A 26
EDIT=A 1 #KANJI3#KANJI3        # 
EDIT=A 27
EDIT=A 1 #KANJI4#KANJI4        # 
EDIT=A 28
EDIT=A 1 #KANJI5#KANJI5        # 
EDIT=A 29
EDIT=COPY 1 TO 100
EDIT=CONC 100 LEN=20
EDIT=DE 100
EDIT=DE 121 127 OK
EDIT=A 101 #HELVETIC   #HELVETICA.1#
EDIT=A 102 #GOTHICEN      #GOTHIC.ENGLISH#
EDIT=A 103 #ROMANTX#ROMAN.3#
EDIT=A 104 #ITALICTX#ITALIC.3#
EDIT=A 105 #GREEKCS #GREEK.2A#
EDIT=A 106 #ITALICCS #ITALIC.2A#
EDIT=A 107 #ROMANCS #ROMAN.2A#
EDIT=A 108 #ROMANDX   #SANSERIF.2#
EDIT=A 109 #GREEKSX#GREEK.1#
EDIT=A 110 #ROMANSX   #SANSERIF.1#
EDIT=A 111 #SCRIPTSX#SCRIPT.1#
EDIT=A 112 #GOTHICGE      #GOTHIC.FRAKTUR#
EDIT=A 113 #GOTHICIT      #GOTHIC.ITALIAN#
EDIT=A 114 #SCRIPTCX#SCRIPT.2#
EDIT=A 115 #ROMANCX#ROMAN.2#
EDIT=A 116 #ITALICCX#ITALIC.2#
EDIT=A 117 #GREEKCX#GREEK.2#
EDIT=A 118 #CYRILLCX  #CYRILLIC.2#
EDIT=A 119 #ROMANCAR     #SANSERIF.CART#
EDIT=A 120 #GREEKCAR  #GREEK.CART#
EDIT=CONC 100 120
EDIT=MOVE 100 120 TO 1.001
EDIT=CONC 1 1.999
EDIT=DE 100 *L OK
EDIT=DE 1.001 1.999 OK
EDIT=STOP
********** Sent October 18, 1977      **********
#4019
DATE=Oct 18,1977
PERSON=FRONCZAK
NAME=CALC(CLS)
NBR=585/001
DESCR=Corrects the bug of not properly (re)initializing ATTNTRP
DESCR=upon (re)entry to the CALC CLS.
OLDUPDATE=%AFTER CALC0230
OLDUPDATE=         MVI   INTSAVE,0          DAMNED RESET!!!
NEWUPDATE=/BEGIN C4019
NEWUPDATE=/COPY '*   SOME INIT'
NEWUPDATE=/COPY C=2
NEWUPDATE=         MVI   INTSAVE,0          DAMNED RESET!!!
NEWUPDATE=/END
********** Sent November 1, 1977      **********
#4020
DATE=November 1, 1977
PERSON=Salisbury
NAME=SDS(SDSCLSSOU)
NBR=600/001
DESCR=Corrects bug in the processing of call tracing when the
DESCR=call is from a low-core address.
NEWUPDATE=/BEGIN C4020
NEWUPDATE=/COPY BEFORE "IBPTCHK2"
NEWUPDATE=IBPTERR6 SET   TRCNORET,18       SET NO RETURN FLAG
NEWUPDATE=         B     IBPTERR 
NEWUPDATE=IBPTCHK2 CLI   BREAKTYP,BRKRET   RETURN BREAKPOINT?
NEWUPDATE=         BE    IBPTERR6          DON'T SET
NEWUPDATE=/EDIT "IBPTCHK2" = "        "
NEWUPDATE=/COPY "IBPTSIM"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         CLI   BREAKTYP,BRKRET   RETURN BREAKPOINT?
NEWUPDATE=         BE    IBPTERR6          DON'T SET 
NEWUPDATE=/COPY "OPERCALL" 
NEWUPDATE=/COPY COUNT=7 
NEWUPDATE=         RESET TRCNORET,18       RESET NO RETURN FLAG
NEWUPDATE=/COPY BEFORE "OPERCAL4" 
NEWUPDATE=OPERCAL4 TOF   TRCNORET,OPERCAL5,18  NO RETURN FLAG? 
NEWUPDATE=         BRT   ' (NO TRACING OF RETURN)' 
NEWUPDATE=/EDIT "OPERCAL4" = "OPERCAL5" 
NEWUPDATE=/END 
#4021 
DATE=November 1, 1977 
PERSON=Salisbury 
NAME=SDS(SDSCLISOU) 
NBR=600/004
DESCR=Part of correction described in #4020 
NEWUPDATE=/BEGIN C4021
NEWUPDATE=/COPY BEFORE "CSNODO"
NEWUPDATE=/EDIT "SMODE10" = "SMODE10+SPRED"
NEWUPDATE=/END
#4022 
DATE=November 1, 1977 
PERSON=Salisbury 
NAME=SDS(SDSPSECT) 
NBR=600/013
DESCR=Part of correction described in #4020 
NEWUPDATE=/BEGIN C4022
NEWUPDATE=/COPY "TRCCALL"
NEWUPDATE=TRCNORET EQU   X'08'     1 -> NO TRACE OF RETURN
NEWUPDATE=/END
#4023
DATE=November 3, 1977
PERSON=Engle
NAME=ACCOUNTING(GETFILE)
NBR=104/88
DESCR=If a call on GDINFO3 produces a wait to open and that wait is
DESCR=interrupted, GDINFO3 does not open the file but still returns
DESCR=with a return code of zero.  This change locks the file around
DESCR=the call on GDINFO3 and thus, by eliminating the possibility
DESCR=of a wait to open, insures that the file will be opened.
NEWUPDATE=/B  C4023
NEWUPDATE=/D LEN(72) "GTFL0046"
NEWUPDATE=         ST    R0,FDUB
NEWUPDATE=         LA    R1,=A(FDUB,F1,FM1)
NEWUPDATE=LOCK     L     R15,=V(LOCK)
NEWUPDATE=         BASR  R14,R15            LOCK FILE TO AVOID WAIT TO OPEN
NEWUPDATE=         C     R15,=F'20'
NEWUPDATE=         BE    LOCK               WAIT TO LOCK INTERRUPTED
NEWUPDATE=         LTR   R1,R15
NEWUPDATE=         BNZ   RETURN             ERROR
NEWUPDATE=/COP LEN(72) "GTFL0055"
NEWUPDATE=         LA    R1,=A(FDUB)
NEWUPDATE=         L     R15,=V(UNLK)
NEWUPDATE=         BASR  R14,R15            UNLOCK FILE
NEWUPDATE=         LTR   R15,R15
NEWUPDATE=         BNZ   RETURN             ERROR
NEWUPDATE=/COP LEN(72) "GTFL0069"
NEWUPDATE=FDUB     DS    A
NEWUPDATE=FM1      DC    F'-1'
NEWUPDATE=F1       DC    F'1'
NEWUPDATE=/EN
COMMENTS=This error allowed the user to interrupt the wait to open
COMMENTS=produced by GDINFO3 for *ACCOUNTINGn.  The file,
COMMENTS=consequently, was not opened; and when READ attempted to do
COMMENTS=an implicit open, an attention interrupt would cause the
COMMENTS=wait to open to be interrupted with a sideways exit,
COMMENTS=leaving *ACCOUNTING locked.
#4024
DATE=Nov 11,1977
PERSON=Helffrich
NAME=GATE
NBR=4000/1
DESCR=Corrects bug causing MODECHG bit to be on if user supplies
DESCR=bad GR13 value for gated routine.
NEWUPDATE=/BEGIN C4024
NEWUPDATE=/COPY "BADGR13 "
NEWUPDATE=         NI    SWSP1,OFF-MODECHG  didn't get around to changing
NEWUPDATE=/END C4024
#4025
DATE=Nov 11,1977
PERSON=Helffrich
NAME=GATE
NBR=4000/1
DESCR=Fixes GUINFUPD entry in GATE.
NEWUPDATE=/BEGIN C4025
NEWUPDATE=/DELETE "GUINFUPD "
NEWUPDATE=GUINFUPD PORT  SAVE,CLASS=3
NEWUPDATE=/END C4025
********** Sent November 15, 1977     **********
#4026 
DATE=November 16, 1977 
PERSON=Salisbury 
NAME=SDS(SDSCLISOU) 
NBR=600/004
DESCR=Change MODIFY command such that users may not modify 
DESCR=system storage by specifying operands in the form (GRx)+yyy
NEWUPDATE=/BEGIN C4026
NEWUPDATE=/COPY BEFORE "MODBLOC8"
NEWUPDATE=MODBLOC8 BAL   LINK,PREDFCHK    CHECK PREDEFINED SYMBOL
NEWUPDATE=/EDIT "MODBLOC8" = "        "
NEWUPDATE=/COPY BEFORE "MODEXIT"
NEWUPDATE=MODERR12 COMMENT 'INVALID DISPLACEMENT FOR PREDEFINED SYMBOL.'
NEWUPDATE=         B      NNEWCARD
NEWUPDATE=MODERR13 COMMENT 'INVALID LENGTH FOR PREDEFINED SYMBOL.'
NEWUPDATE=         B      NNEWCARD
NEWUPDATE=/COPY "UNDOMOV"
NEWUPDATE=*
NEWUPDATE=*     CHECK PREDEFINED SYMBOL FOR REASONABLE MODIFICATION
NEWUPDATE=*
NEWUPDATE=PREDFCHK TOF    SPRED,0(LINK),3   PREDEFINED SYMBOL?
NEWUPDATE=         ST     GR0,CLILINK2      SAVE REGISTER
NEWUPDATE=         CLC    SSYMBOL(2),=C'GR' GENERAL REGISTER?
NEWUPDATE=         BE     PREDF2
NEWUPDATE=         LA     GR0,8             SET PSW OR FR LENGTH
NEWUPDATE=PREDF1   S      GR0,CDISP 
NEWUPDATE=         BNH    MODERR12          DISPLACEMENT TOO BIG
NEWUPDATE=         BCTR   GR0,0
NEWUPDATE=         CR     WC,GR0 
NEWUPDATE=         BH     MODERR13          LENGTH TOO BIG
NEWUPDATE=         L      GR0,CLILINK2      RESTORE REGISTER
NEWUPDATE=         BR     LINK
NEWUPDATE=PREDF2   LA     GR0,4             SET GR LENGTH
NEWUPDATE=         B      PREDF1
NEWUPDATE=/END
#4027 
DATE=November 18, 1977 
PERSON=MTA
NAME=PDP
NBR=044/1
DESCR=The PDP gets an ILDN error when it retries after a fatal
DESCR=I/O error on a paging disk (rather than a drum).
NEWUPDATE=/BEGIN C4027
NEWUPDATE=/COPY 'UCRETRY2'
NEWUPDATE=/COPY C=2
NEWUPDATE=         L     0,DRUMLDN            GET JUST THE LDN
NEWUPDATE=/END
#4028
DATE=November 23, 1977
PERSON=Engle
NAME=*INDEX
NBR=580/1
DESCR=If an entry attribute begins with a double colon, designating
DESCR=a text colon instead of a sub-heading, and no sub-heading
DESCR=(single) colons appear in the entry attribute, the result is
DESCR=as though the entry attribute began with a triple colon.
NEWUPDATE=/B C4028
NEWUPDATE=/D LEN(72) "INDX0402"
NEWUPDATE=         IF SUBSTR(NAME,N+1,1)=':' THEN DO;
NEWUPDATE=/COP LEN(72) "INDX0406"
NEWUPDATE=/S LEN(72) "INDX0408"
NEWUPDATE=         ELSE DO;
NEWUPDATE=/EN
#4029
DATE=November 23, 1977
PERSON=Engle
NAME=*INDEX
NBR=580/1
DESCR=If 4 or more consecutive colons appear in an entry attribute
DESCR=to designate 2 or more consecutive text colons, the multiple
DESCR=text colons are condensed to a single colon.
NEWUPDATE=/B C4029
NEWUPDATE=/D LEN(72) "INDX0167"
NEWUPDATE=      FF = INDEX(SUBSTR(WORDD,NN+LENGTH(SUB)),CHAR);
NEWUPDATE=      IF FF=0 THEN NN=0;
NEWUPDATE=      ELSE NN=NN+FF+LENGTH(SUB)-1;
NEWUPDATE=/COP LEN(72) "INDX0472"
NEWUPDATE=/S LEN(72) "INDX0479"
NEWUPDATE=         CALL SUBS(LINE, '/', '/Z');
NEWUPDATE=/EN
COMMENTS=The change at INDX0473-INDX0479 does not correct an error,
COMMENTS=but was made possible by the error correction at INDX0167.
#4030
DATE=November 28, 1977
PERSON=Engle
NAME=*INDEX
NBR=580/1
DESCR=If a level N subheading is given and the headings for the N-1
DESCR=and N-2 levels are not given separately with location
DESCR=attributes, only the N and N-1 level headings are printed.
DESCR=E.g., if "1 A" and "2 A:B:C:D" are entered and entries for A:B
DESCR=and A:B:C are not given, the headings A, C, and D will print,
DESCR=but the heading B will not print.
NEWUPDATE=/B C4030
NEWUPDATE=/D LEN(72) "INDX0400"
NEWUPDATE=HEAD: N=INDEX(NAME,':');
NEWUPDATE=/D LEN(72) "INDX0412"
NEWUPDATE=            F=LENGTH(PRESENT)-1;
NEWUPDATE=            IF SUBSTR(PRESENT, 1, F)=SUBSTR(FORMER, 1, F) THEN N=
NEWUPDATE=            INDEX(NAME, ':');
NEWUPDATE=            ELSE N=0;
NEWUPDATE=/COP LEN(72) "INDX0414"
NEWUPDATE=/S LEN(72) "INDX0416"
NEWUPDATE=      F=LENGTH(PRESENT)-1;
NEWUPDATE=      IF SUBSTR(PRESENT,1,F) = SUBSTR(FORMER,1,F) THEN
NEWUPDATE=/D LEN(72) "INDX0418"
NEWUPDATE=         FORMER=SUBSTR(PRESENT,1,F);
NEWUPDATE=/D LEN(72) "INDX0441"
NEWUPDATE=      CALL SUBS(NAME, '::', ':');
NEWUPDATE=/COP LEN(72) "INDX0523"
NEWUPDATE=/S LEN(72) "INDX0525"
NEWUPDATE=         GO TO HEAD;
NEWUPDATE=/EN
#4031
DATE=Nov 28, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PLTBGN)
NBR=615/3
DESCR=Corrects PLTBGN bug occuring when PLTSIZ used or incorrect
DESCR=argument given to PLTBGN
NEWUPDATE=/BEGIN
NEWUPDATE=/COPY BEFORE BLANKS "BO    PBGN1"
NEWUPDATE=/EDIT "PBGN1" = "PBGN7"
NEWUPDATE=/COPY BEFORE BLANKS "LA    10,PBGN5"
NEWUPDATE=/EDIT "     " = "PBGN7"
NEWUPDATE=/DELETE BLANKS "L     2,YWIDTH"
NEWUPDATE=         LE    0,YWIDTH
NEWUPDATE=         DE    0,USCALE
NEWUPDATE=         STE   0,PACKING
NEWUPDATE=         L     2,PACKING
NEWUPDATE=/END
********** Sent November 28, 1977     **********
#4032
DATE=Dec 2, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PSYM)
NBR=615/6
DESCR=Corrects bug in doing carriage returns while using 
DESCR=relative coordinates
NEWUPDATE=/BEGIN
NEWUPDATE=/COPY BEFORE BLANKS "ST    4,XMARGIN"
NEWUPDATE=/BUFFER MARGINS
NEWUPDATE=/EDIT "       " = "PSINIT3"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY BEFORE BLANKS "BZ    PSINIT2"
NEWUPDATE=/EDIT "PSINIT2" = "PSINIT3"
NEWUPDATE=/COPY ".CCP5"
NEWUPDATE=/INCLUDE MARGINS
NEWUPDATE=/END
#4033
DATE=Dec 12, 1977
PERSON=Lift
NAME=PLOT SYSTEM(PALPHA)
NBR=615/7
DESCR=Allows a little more space after "1" in the standard alphabet.
NEWUPDATE=/BEGIN
NEWUPDATE=/COPY "DEFCHAR"
NEWUPDATE=/COPY BEFORE "         DC    X'06636F4D080B3D5F9FBDBA3433B30E0B'"
NEWUPDATE=/EDIT "06" = "07"
NEWUPDATE=/END
#4034
DATE=Dec 12, 1977
PERSON=Lift
NAME=PLOT SYSTEM(CCASM)
NBR=615/4
DESCR=Establishes synonyms PWIND for PRSTER, PONWIN for PONRST,
DESCR=and POFWIN for POFRST.  Next V11 will use the new names
DESCR=in place of the old.
NEWUPDATE=/BEGIN
NEWUPDATE=/COPY "#PRASTR  CSECT"
NEWUPDATE=/COPY BEFORE BLANKS "ENTRY PRSTER"
NEWUPDATE=/EDIT "PRSTER      " = "PWIND,PRSTER"
NEWUPDATE=/COPY BEFORE "PRSTER" 
NEWUPDATE=/EDIT "PRSTER" = "PWIND "
NEWUPDATE=PRSTER   EQU   PWIND
NEWUPDATE=/COPY BEFORE BLANKS "ENTRY POFRST"
NEWUPDATE=/EDIT "POFRST       " = "POFWIN,POFRST"
NEWUPDATE=/COPY BEFORE "POFRST"
NEWUPDATE=/EDIT "POFRST" = "POFWIN"
NEWUPDATE=POFRST   EQU   POFWIN
NEWUPDATE=/COPY BEFORE BLANKS "ENTRY PONRST"
NEWUPDATE=/EDIT "PONRST" = "PONWIN,PONRST"
NEWUPDATE=/COPY BEFORE "PONRST"
NEWUPDATE=/EDIT "PONRST" = "PONWIN"
NEWUPDATE=PONRST   EQU   PONWIN
NEWUPDATE=/END
#4035
DATE=Dec 13, 1977
PERSON=Helffrich 
NAME=MTS
NBR=42/1
DESCR=Change of the job number encoding in internal scratch file names.
DESCR=If job number goes over 9999, the first digit goes to A, B, C,
DESCR=etc.  Base 33, sort of.
NEWUPDATE=/BEGIN SFWRAP
NEWUPDATE=/.     SFWRAP -- Fix up scratch file numbering scheme so won't wrap
NEWUPDATE=/.               after job # 10000
NEWUPDATE=/COPY NEXT "CVD" NEXT "SCA,SCRATCH2" NEXT "SAVE JOB NUMBER"
NEWUPDATE=/COPY C=1
NEWUPDATE=         SRDA  SCA,32
NEWUPDATE=         D     SCA,=F'1000'      IF JOB # > 1000, MAKE FIRST
NEWUPDATE=         IC    SCA,BASE36(SCB)      DIGIT DO A, B, C, ...
NEWUPDATE=         STC   SCA,SCRFNAME+4       STUNT
NEWUPDATE=/COPY "STPARS "
NEWUPDATE=BASE36   DC    C'0123456789ABCDEFGHIJKLMNOPQRSTUVWQQSV'
NEWUPDATE=/DELETE NEXT "USING" NEXT "*,GR10"
NEWUPDATE=         USING INLOOPX,GR10       This section is self-addressable
NEWUPDATE=/COPY END
NEWUPDATE=/END SFWRAP
#4036
DATE=Dec 13, 1977
PERSON=Helffrich 
NAME=MTS
NBR=42/1
DESCR=Make allocation/deallocation of FDUBs less subject to error
DESCR=if SYGNOF branched to by GETSPACE/FREESPAC.  Makes system less
DESCR=suceptible to LOADT usecounts going negative.
DESCR=NOTE: This change requires change #4037 to be applied at the 
DESCR=same time. 
NEWUPDATE=/BEGIN ROBUST1
NEWUPDATE=/.     ROBUST1 -- Make fdub allocation/decallocation more robust
NEWUPDATE=/.                on a busy system with lots of people hanging up
NEWUPDATE=/.                in the middle of the signoff procedure.
NEWUPDATE=/COPY "CFDCHAIN "
NEWUPDATE=/COPY C=5
NEWUPDATE=/INCLUDE CFDMOVE
NEWUPDATE=/COPY "CFDNON "
NEWUPDATE=/BUFFER CFDMOVE
NEWUPDATE=/COPY C=4
NEWUPDATE=         LR    SCA,GR1
NEWUPDATE=/COPY C=3
NEWUPDATE=         LR    GR1,SCA
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=2
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY END
NEWUPDATE=/END ROBUST1
COMMENTS=This is part 1 of a two-change-form change. See also #4037.
#4037
DATE=Dec 13, 1977
PERSON=Helffrich 
NAME=FSUB
NBR=635/1
DESCR=Make allocation/deallocation of FDUBs less subject to error
DESCR=if SYGNOF branched to by GETSPACE/FREESPAC.  Makes system less
DESCR=suceptible to LOADT usecounts going negative.
DESCR=NOTE: This change requires change #4036 to be applied at the
DESCR=same time. 
NEWUPDATE=/BEGIN ROBUST1
NEWUPDATE=/.     ROBUST1:: To make GIVEBACK a bit more fail-safe in the 
NEWUPDATE=/.               giving back of FDUBs.
NEWUPDATE=/COPY BEFORE "*" BLANKS "FDGET"
NEWUPDATE=/EDIT "." = ","
NEWUPDATE=*                          IN MTS (IF YOU ARE NOT ONE OF THE HAPPY
NEWUPDATE=*                          FEW WHO ALREADY KNOWS THIS.)
NEWUPDATE=/COPY TAB(72) "FSUB0498"
NEWUPDATE=/EDIT "BER" = "BZR"
NEWUPDATE=/COPY "GVBULNE"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         LTR   SCA,SCA            FCB still there? (Could happen if
NEWUPDATE=         BZ    GVBFDB             jumped out of middle of SYGNOF)
NEWUPDATE=/DELETE BLANKS "BNP   GVBGRFF"
NEWUPDATE=         BP    GVBFDB             -> somebody still using FCB
NEWUPDATE=         XC    FDUBLN,FDUBLN      not any more for this FDUB
NEWUPDATE=         B     GVBGRFF
NEWUPDATE=/COPY "GVBFDB "
NEWUPDATE=/SKIP COUNT=17
NEWUPDATE=*
NEWUPDATE=         L     SCB,FDUBNAM        get backpointer to pointer
NEWUPDATE=         LTR   SCB,SCB
NEWUPDATE=         BZ    *+16               -> none
NEWUPDATE=         XC    0(4,SCB),0(SCB)    pointer
NEWUPDATE=         XC    FDUBNAM,FDUBNAM    and backpointer
NEWUPDATE=*
NEWUPDATE=         BAL   GR14,UNCHFDUB      unchain FDUB
NEWUPDATE=*
NEWUPDATE=         L     GR1,FDUBNAME       release name if any
NEWUPDATE=         LTR   GR1,GR1
NEWUPDATE=         BZ    *+14
NEWUPDATE=         XC    FDUBNAME,FDUBNAME
NEWUPDATE=         BAL   GR14,HIABYMH
NEWUPDATE=*
NEWUPDATE=         L     GR1,FDUBERM        release error message if any
NEWUPDATE=         LTR   GR1,GR1
NEWUPDATE=         BZ    *+14
NEWUPDATE=         XC    FDUBERM,FDUBERM
NEWUPDATE=         BAL   GR14,HIABYMH
NEWUPDATE=*
NEWUPDATE=         L     GR1,FDUBERXS       release I/O error suspension
NEWUPDATE=         LTR   GR1,GR1            block, if any
NEWUPDATE=         BZ    *+14
NEWUPDATE=         XC    FDUBERXS,FDUBERXS
NEWUPDATE=         BAL   GR14,HIABYMH
NEWUPDATE=*
NEWUPDATE=/COPY "GVBGRFCB"
NEWUPDATE=/COPY BLANKS "L     GR1,FCBMXLBA"
NEWUPDATE=         XC    FCBMXLBA,FCBMXLBA  make sure it gets lost
NEWUPDATE=/END ROBUST1
COMMENTS=This is the second of a two-changeform change.  See also #4036.
#4038
DATE=Dec 13, 1977
PERSON=Ogden
NAME=CMDS
NBR=636/1
DESCR=Rewrite of SIGNONM job program.
NEWUPDATE=/BEGIN SMNEW
NEWUPDATE=/.     SMNEW -- New SIGNONM
NEWUPDATE=/COPY BEFORE "SIGNONM "
NEWUPDATE=/DELETE "SIGNONM "
NEWUPDATE=/SKIP COUNT=8
NEWUPDATE=         EJECT
NEWUPDATE=*        SIGNONM  --  Job program to read a line from the console
NEWUPDATE=*                     which becomes a message printed out at 
NEWUPDATE=*                     signon for MTS users.
NEWUPDATE=         SPACE 3
NEWUPDATE=SIGNONM  DC    A(*+8,0)
NEWUPDATE=         USING *,15
NEWUPDATE=         LA    1,SIGONMS+2
NEWUPDATE=         SVC   READ
NEWUPDATE=         BZ    *-2                BACK AGAIN IF CANCELLED
NEWUPDATE=*
NEWUPDATE=         AR    1,0                end of message+1
NEWUPDATE=         AH    0,=H'1'            include CC character in length
NEWUPDATE=SIGNONM1 BCTR  1,0                trim off blanks
NEWUPDATE=         CLI   0(1),C' '
NEWUPDATE=         BNE   *+8
NEWUPDATE=         BCT   0,SIGNONM1         -> loop de loop
NEWUPDATE=*
NEWUPDATE=         STC   0,SIGONMS          resultant length, maybe zero
NEWUPDATE=         SVC   EXIT               -> back to the womb
NEWUPDATE=SIGONMS  DC    AL1(0),101C' '     length, text
NEWUPDATE=/COPY END
NEWUPDATE=/END SMNEW
#4039
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=CMDS
NBR=636/1
DESCR=Fix bug in D4.0 causing explicit concatenation of files to 
DESCR=be opened with the program key *MTS.RUN rather than *MTS.ETC.RUN
NEWUPDATE=/BEGIN RUNPKEY
NEWUPDATE=/.     RUNPKEY  --  Fixes bug causing program key to not be set
NEWUPDATE=/.                  to *MTS.ETC.RUN when FDName concatenation is
NEWUPDATE=/.                  run
NEWUPDATE=/COPY "STDNEWF2 "
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=         NI    SWS17,255-DFPID    don't default program key
NEWUPDATE=*
NEWUPDATE=         TM    SWS2,DBGCMSW 
NEWUPDATE=         BO    STDDFPID           -> $DEBUGging today
NEWUPDATE=         L     SCA,FDUBCH
NEWUPDATE=         LTR   SCA,SCA
NEWUPDATE=         BNZ   STDETCPK           -> exp.concatenation, set to .ETC.
NEWUPDATE=         TM    FDUBSWS2,FDUBBLN+FDUBELN+FDUBMOD
NEWUPDATE=         BNZ   STDETCPK           -> beginning #, ending # or mods 
NEWUPDATE=         TM    FDUBS,FDUBINC
NEWUPDATE=         BO    STDETCPK           -> explicit increment
NEWUPDATE=         TM    SWS4,NOUNLD
NEWUPDATE=         BO    STDETCPK           -> UNLOAD=OFF
NEWUPDATE=         CLI   SHFSEP,C':'
NEWUPDATE=         BE    STDOPEN            -> no changed SHFSEP
NEWUPDATE=         SPACE
NEWUPDATE=STDETCPK L     SCA,CLSPTR+MTSFLG*4
NEWUPDATE=         MVC   CLSPID-CLSAREA(12,SCA),=CL12'*MTS.ETC.RUN'
NEWUPDATE=STDDFPID OI    SWS17,DFPID        flag something weird happened
NEWUPDATE=/COPY C=1
NEWUPDATE=/ED "       " = "STDOPEN"
NEWUPDATE=/COPY "STHOPEOK "
NEWUPDATE=/COPY COUNT=10
NEWUPDATE=         TM    SWS17,DFPID 
NEWUPDATE=         BO    STH04               -> see if PROT status needs change
NEWUPDATE=/SKIP COUNT=14
NEWUPDATE=/DELETE "STH04 "
NEWUPDATE=/SKIP C=4
NEWUPDATE=STH04    DS    0H
NEWUPDATE=/COPY BEFORE "STEXP21 "
NEWUPDATE=/ED "STEXP21" = "       "
NEWUPDATE=/END RUNPKEY
#4040
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=CMDS
NBR=636/1
DESCR=Fixes MTS SNARKing if user signs on with a  ridiculously low
DESCR=global time limit.
NEWUPDATE=/BEGIN T=.001
NEWUPDATE=/.     T=.001 -- Fixes snark if user says '$SIG xxxx T=.001'
NEWUPDATE=/.            -- by setting lowest time limit to .003, naturally
NEWUPDATE=/COPY BEFORE "SIGPAST "
NEWUPDATE=         L     GR15,GLOBCPUT       check time limit, if given
NEWUPDATE=         C     GR15,=A(100*768/10)   must be > .1
NEWUPDATE=         BNL   SIGPAST
NEWUPDATE=         BXLE  GR15,GR15,SIGPAST   and nonzero
NEWUPDATE=         MVC   GLOBCPUT,=A(100*768/10)
NEWUPDATE=/END T=.001
#4041
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=CMDS
NBR=636/1
DESCR=Fix bug causing EXEC cls to not return to cls which invoked
DESCR=it, but rather always the MTS cls.
NEWUPDATE=/BEGIN EXECRET
NEWUPDATE=/.     EXECRET -- Fix so that any CLS which calls the EXEC CLS
NEWUPDATE=/.                gets returned to when the EXEC CLS returns.
NEWUPDATE=/COPY "SYSLAB2 "
NEWUPDATE=/COPY C=5
NEWUPDATE=/EDIT "       " = "SYSLAB3"
NEWUPDATE=/COPY "RETLAB "
NEWUPDATE=/COPY BEFORE NEXT "B" NEXT "SYSLAB2"
NEWUPDATE=/EDIT "SYSLAB2" = "SYSLAB3"
NEWUPDATE=/DELETE NEXT "B" NEXT "CKDUMP"
NEWUPDATE=/INCLUDE CKDUMP
NEWUPDATE=/COPY BEFORE "MTSCLAB2 "
NEWUPDATE=MTSCLAB2 OI   SWS19,RUNTOFDA      disable RUNTOF setting CLSCMDID cuz  *
NEWUPDATE=                                  we already did it (==KLUDGE)
NEWUPDATE=/EDIT "MTSCLAB2" = "        "
NEWUPDATE=/COPY "MTSCMVC "
NEWUPDATE=/SKIP C=1
NEWUPDATE=/BUFFER CKDUMP
NEWUPDATE=/EDIT "CKDUMP" = "      "
NEWUPDATE=/COPY C=5
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY "RUNTOF "
NEWUPDATE=/COPY C=3
NEWUPDATE=         TM    SWS19,RUNTOFDA 
NEWUPDATE=         BO    RUNTOF1            -> this means don't touch CLSCMDID
NEWUPDATE=         CLI   CLSCURB,EXECFLG
NEWUPDATE=         BNE   RUNTOF1            -> EXEC wasn't previous, CLSCMDID    *
NEWUPDATE=                                     already set
NEWUPDATE=         L     SCA,CLSPTR+EXECFLG*4
NEWUPDATE=         LTR   SCA,SCA
NEWUPDATE=         BZ    RUNTOF1            -> no EXEC CLS
NEWUPDATE=         MVC   CLSCMDID,CLSCRID-CLSAREA(SCA)   set up EXEC CLS invoker
NEWUPDATE=RUNTOF1  NI    SWS19,255-RUNTOFDA reset -- only a one-shot deal
NEWUPDATE=/END EXECRET
#4042
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=CMDS
NBR=636/1
DESCR=Fix bug causing scratch files not to be destroyed if SCRFCHAR=*
NEWUPDATE=/BEGIN SFCBUG
NEWUPDATE=/.     SFCBUG -- Fix bug causing scratch files not being destroyed
NEWUPDATE=/.               if SCRFCHAR=*
NEWUPDATE=/COPY "GROD "
NEWUPDATE=/COPY BEFORE NEXT "LA" NEXT "GR1,DSFDL"
NEWUPDATE=         MVI   FNIASF,C'-'        a nice, safe scratch file char
NEWUPDATE=/END SFCBUG
#4043
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=DSRS
NBR=637/1
DESCR=Fix bug in PEEL when @MAXLEN@PEEL modifier combination used.
NEWUPDATE=/BEGIN PEELBUG
NEWUPDATE=/.     PEELBUG -- Fix bug in PEEL causing unexpected movement of 
NEWUPDATE=/.                stuff in segment 5 if high order byte of address
NEWUPDATE=/.                has garbage in it.
NEWUPDATE=/COPY "PEEL "
NEWUPDATE=/COPY C=8
NEWUPDATE=         LA    SCC,0(,SCC)
NEWUPDATE=/COPY END
NEWUPDATE=/END PEELBUG
#4044
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=DSRS
NBR=637/1
DESCR=Fix another @MAXLEN@PEEL combination bug.
NEWUPDATE=/BEGIN PEELBUG2
NEWUPDATE=/.     PEELBUG2 -- Fix another bug in peel if empty file read from
NEWUPDATE=/.                 with @PEEL@MAXLEN set.  Caused a reference to 
NEWUPDATE=/.                 page 0 in PEEL.
NEWUPDATE=/COPY "PEEL "
NEWUPDATE=/EDIT "BE" = "BZ"
NEWUPDATE=/COPY NEXT "LA" NEXT "GR2,0(GR1,SCC)"
NEWUPDATE=         LR    GR3,SCC             save location of line
NEWUPDATE=         LTR   GR2,GR2
NEWUPDATE=         BZ    PEEL1               -> no input buffer
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT "     " = "PEEL1"
NEWUPDATE=/END PEELBUG2
#4045
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=DSRI
NBR=639/1
DESCR=Make sure user input area is blanked following implicit 
DESCR=concatenation to another file.  Wipes out fragment of 
DESCR=$CONTINUE WITH xxxx left in input buffer.
NEWUPDATE=/BEGIN AREABLNK
NEWUPDATE=/.     AREABLNK :: to make sure user's input area is blanked from
NEWUPDATE=/.                 end of text to end of area if explicit concat.
NEWUPDATE=/.                 or $ENDFILE read resulted in end-of-file.
NEWUPDATE=/.                 Previously, this condition resulted in $ENDFILE
NEWUPDATE=/.                 or the tail end of the $CONTINUE WITH ... to be
NEWUPDATE=/.                 left in the buffer.
NEWUPDATE=/COPY MAXCOUNT=1200 "GIOSIQU"
NEWUPDATE=/DELETE BLANKS "BE    PSFXFE"
NEWUPDATE=         BE    ISENDFIL           -> give EOF
NEWUPDATE=/DELETE BLANKS "BE    PSFXFE"
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=         BNE   GIOSIQC
NEWUPDATE=ISENDFIL BAL   GR14,BLANKIT       blank rest of input region
NEWUPDATE=         B     PSFXFE
NEWUPDATE=*
NEWUPDATE=/COPY "GIOSIQV"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=/SKIP BLANKS "EX" NEXT "SCB,GIOSMVC"
NEWUPDATE=/COPY BLANKS "LR    GR3,SCA"
NEWUPDATE=         BAL   GR14,BLANKIT       blank rest of input region
NEWUPDATE=/COPY "GIOSIQBB"
NEWUPDATE=/SKIP COUNT=4
NEWUPDATE=/EDIT "0(SCA),FDUBNOEC " = "FDUBMTB,FDUBNOEC"
NEWUPDATE=/COPY TAB(72) "DSRI1343"
NEWUPDATE=         EJECT
NEWUPDATE=*        BLANKIT  --  Subroutine to blank out what we read for
NEWUPDATE=*                     possible implicit concatenation or endfile.
NEWUPDATE=*
NEWUPDATE=*            Clobbers SCRATCH.
NEWUPDATE=*            Assumes GR13 points to original savearea at call
NEWUPDATE=         SPACE 3
NEWUPDATE=BLANKIT  STM   SCA,SCD,SCRATCH
NEWUPDATE=         L     SCA,24(,GR13)      get original GR1
NEWUPDATE=         LM    SCA,SCB,0(SCA)     A(reg,len)
NEWUPDATE=         LH    SCB,0(,SCB)        get length
NEWUPDATE=         LA    SCC,0(SCA,SCB)     end of input region
NEWUPDATE=*
NEWUPDATE=         XR    SCD,SCD            select either X'00' or C' ' to 
NEWUPDATE=         CLI   0(SCC),0           wipe out buffer with
NEWUPDATE=         BPI   OPND,*+8           -> edge of world, use x'00'
NEWUPDATE=         BE    *+8
NEWUPDATE=         LA    SCD,C' '
NEWUPDATE=*
NEWUPDATE=         AIF   (&S370).MVCL
NEWUPDATE=         STC   SCD,0(,SCA)        propagate this
NEWUPDATE=         S     SCB,=F'2'
NEWUPDATE=         BM    BLANKRET           -> nothing much to do
NEWUPDATE=BLANKNXT S     SCB,=F'256'
NEWUPDATE=         BM    BLANKLST
NEWUPDATE=         MVC   1(256,SCA),0(SCA)  propagate fill character
NEWUPDATE=         LA    SCA,256(,SCA)
NEWUPDATE=         B     BLANKNXT
NEWUPDATE=BLANKMVC MVC   1(0,SCA),0(SCA)
NEWUPDATE=BLANKLST EX    SCB,BLANKMVC       fill last portion
NEWUPDATE=         AGO   .NOMVCL
NEWUPDATE=.MVCL    SLL    SCD,24            fill character
NEWUPDATE=         MVCL   SCA,SCC           zap the easy way
NEWUPDATE=.NOMVCL  ANOP
NEWUPDATE=BLANKRET LM     SCA,SCD,SCRATCH
NEWUPDATE=         BR     GR14
NEWUPDATE=/COPY END
NEWUPDATE=/END AREABLNK
#4046
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=DSRI
NBR=639/1
DESCR=Fix bug in D4.0 MTS causing PGNT if SETIOERR subroutine returns
DESCR=and original parameter list of output subroutine did not have
DESCR=a line number parameter.
NEWUPDATE=/BEGIN IOERSFL
NEWUPDATE=/.            :: Fix to save FAKELIST across I/O error subroutine
NEWUPDATE=/.               calls.
NEWUPDATE=/COPY "EXNOGATE"
NEWUPDATE=/SKIP   COUNT=1
NEWUPDATE=         XR    GR14,GR14          assume not using fakelist; identifed
NEWUPDATE=         ST    GR14,4+DSRISFL     by zero address of length HW
NEWUPDATE=         LA    GR14,FAKELIST
NEWUPDATE=         CR    GR14,SCB 
NEWUPDATE=         BNE   UIOENOFL           -> not using fakelist
NEWUPDATE=         MVC   DSRISFL(7*4),FAKELIST save fakelist here
NEWUPDATE=/EDIT "        " = "UIOENOFL"
NEWUPDATE=/COPY BEFORE "UIOEB1"
NEWUPDATE=/SKIP COUNT=4
NEWUPDATE=*
NEWUPDATE=UIOEB1   L     GR2,24(,GR13)      assume using user's parameters
NEWUPDATE=         L     GR14,4+DSRISFL     but check if fakelist was really
NEWUPDATE=         LTR   GR14,GR14          used
NEWUPDATE=         BZ    UIOEB2             -> no, user's parameters
NEWUPDATE=         MVC   FAKELIST(7*4),DSRISFL
NEWUPDATE=         LA    GR2,FAKELIST
NEWUPDATE=UIOEB2   XC    FDUBERXS,FDUBERXS  free DIRISUSP
NEWUPDATE=         BAL   GR14,HIABYMH       after covering tracks
NEWUPDATE=         LR    GR1,GR2            restore parameter list pointer
NEWUPDATE=/END IOERSFL
#4046.1
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=TIMT
NBR=539/1
DESCR=Just a cleanup of some things.
NEWUPDATE=/BEGIN CLEANUP1
NEWUPDATE=/.     CLEANUP1:: Just a few diddlie things
NEWUPDATE=/COPY "SWSNOLD"
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=/SKIP COUNT=2
NEWUPDATE=         JOBTBL N=1,R=GR12
NEWUPDATE=/COPY "NOTCAND"
NEWUPDATE=/SKIP COUNT=2
NEWUPDATE=         JOBTBL N=1,R=GR4
NEWUPDATE=/END CLEANUP1
#4047
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=GATE
NBR=4000/1
DESCR=Remove TRANTB from gate
NEWUPDATE=/BEGIN REMTTB
NEWUPDATE=/.     REMTTB -- Remove "TRANTB" from GATE
NEWUPDATE=/DELETE "TRANTB" NEXT "PORT"
NEWUPDATE=/COPY END
NEWUPDATE=/END REMTTB
#4048
DATE=Dec 13, 1977
PERSON=Helffrich
NAME=USUB
NBR=638/1
DESCR=Fix bug causing subversion of LSS-imposed time limit if 
DESCR=SETLCL called to reset timer interrupt.
NEWUPDATE=/BEGIN LCLTBUG
NEWUPDATE=/.     LCLTBUG -- Fixes bug which lets users subvert LSS if their
NEWUPDATE=/.                program sets a small local time limit.
NEWUPDATE=/COPY BEFORE "SETLRS "
NEWUPDATE=SETLRS   TM    SWS8,LSSBIT       LSS=on for this user?
NEWUPDATE=         BO    SETLRC4           -> yes, then can't cancel LSS limit
NEWUPDATE=/EDIT "SETLRS" = "      "
NEWUPDATE=/COPY END
NEWUPDATE=/END LCLTBUG
#4049
DATE=Dec 16, 1977
PERSON=Sherry
NAME=*WATFIV(INOUT) -- UPDATE
NBR=483/001
DESCR=Fix bug in INOUT to properly diagnose syntax errors in
DESCR=I/O statements with NAMELIST specified.
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to INOUT assembly --
EDIT=INSERT 58033
EDIT=%AFTER '08610000'  ; INOUT BUGFIX
EDIT=         IF    (IOBJBIT,ON,X'08'),IERSXA No list for NAMELIST
EDIT=$ENDFILE
EDIT=STOP
COMMENTS=I/O statements of the form:
COMMENTS=      READ(5,DATA) X,Y,Z
COMMENTS=were not flagged as syntax errors if DATA was a NAMELIST
COMMENTS=variable (no list is allowed).
#4050
DATE=Dec 16, 1977
PERSON=Sherry
NAME=*WATFIV(STARTB) -- UPDATE
NBR=483/001
DESCR=Fix bug in STARTB to detect illegal subscript for variable
DESCR=dimension of dummy array in subroutines.
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to STARTB assembly --
EDIT=COMMENT -- (near sequence id '10180000') --
EDIT=INSERT 77077
EDIT=         LA    R6,0(,R6)   Clear top byte of address
EDIT=$ENDFILE
EDIT=STOP
COMMENTS=This corrects a bug n the following situations:
COMMENTS=      SUBROUTINE X( A, N)
COMMENTS=      DIMENSION A(N)
COMMENTS=      A(20) = 0.
COMMENTS=If N=20 and A is dimensioned as A(10) in the calling
COMMENTS=program, the reference to A(20) will now be flagged as
COMMENTS=an error.
#4051
DATE=December 16, 1977
PERSON=Engle
NAME=GRJLDT/GRJLTM SUBRS (GRJLDT)
NBR=519/1
DESCR=Check for and produce a return code of 4 if "digits" in the
DESCR=argument would produce a data exception.
NEWUPDATE=/B C4051
NEWUPDATE=/S LEN(72) "GJDT0002"
NEWUPDATE=GJDT     TITLE 'S-TYPE CALLING INTERFACE FOR GRGJULDT--C. F. ENGLE--16 1
NEWUPDATE=               DEC 77'
NEWUPDATE=/COP LEN(72) "GJDT0005"
NEWUPDATE=         PACK  DOUBLE(2),0(2,1)   CHECK FOR POTENTIAL DATA EXCEPTIONS
NEWUPDATE=         PACK  DOUBLE+2(2),3(2,1)
NEWUPDATE=         PACK  DOUBLE+4(2),6(2,1)
NEWUPDATE=         LA    15,4
NEWUPDATE=         CP    DOUBLE(2),DOUBLE+2(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=         CP    DOUBLE(2),DOUBLE+4(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=/D LEN(72) "GJDT0009"
NEWUPDATE=         SR    15,15
NEWUPDATE=EXIT     L     13,SAVE+4
NEWUPDATE=/D LEN(72) "GJDT0011"
NEWUPDATE=/EN
#4052
DATE=December 16, 1977
PERSON=Engle
NAME=GRJLDT/GRJLTM SUBRS (GRJLTM)
NBR=519/3
DESCR=Check for and produce a return code of 4 if "digits" in the
DESCR=argument would produce a data exception.
NEWUPDATE=/B C4052
NEWUPDATE=/D LEN(72) "GJTM0002"
NEWUPDATE=               DEC 77'
NEWUPDATE=/COP LEN(72) "GJTM0005"
NEWUPDATE=         PACK  QUAD(2),0(2,1)     CHECK FOR POTENTIAL DATA EXCEPTIONS
NEWUPDATE=         PACK  QUAD+2(2),3(2,1)
NEWUPDATE=         PACK  QUAD+4(2),6(2,1)
NEWUPDATE=         PACK  QUAD+6(2),8(2,1)
NEWUPDATE=         PACK  QUAD+8(2),11(2,1)
NEWUPDATE=         PACK  QUAD+10(2),14(2,1)
NEWUPDATE=         LA    15,4
NEWUPDATE=         CP    QUAD(2),QUAD+2(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=         CP    QUAD+4(2),QUAD+6(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=         CP    QUAD+8(2),QUAD+10(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=/D LEN(72) "GJTM0009"
NEWUPDATE=         SR    15,15
NEWUPDATE=EXIT     L     13,SAVE+4
NEWUPDATE=/D LEN(72) "GJTM0011"
NEWUPDATE=/EN
#4053
DATE=December 16, 1977
PERSON=Engle
NAME=GROSDT
NBR=520/1
DESCR=Check for and produce a return code of 4 if "digits" in the
DESCR=first argument would produce a data exception.
NEWUPDATE=/B C4053
NEWUPDATE=/D LEN(72) "GODT0001"
NEWUPDATE=GODT     TITLE 'GREGORIAN TO OS DATE CONVERSION--C. F. ENGLE--16 DEC 771
NEWUPDATE=/COP LEN(72) "GODT0008"
NEWUPDATE=         PACK  DOUBLE(2),0(2,1)   CHECK FOR POTENTIAL DATA EXCEPTIONS
NEWUPDATE=         PACK  DOUBLE+2(2),3(2,1)
NEWUPDATE=         PACK  DOUBLE+4(2),6(2,1)
NEWUPDATE=         LA    15,4
NEWUPDATE=         CP    DOUBLE(2),DOUBLE+2(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=         CP    DOUBLE(2),DOUBLE+4(2)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=/D LEN(72) "GODT0025"
NEWUPDATE=         SR    15,15
NEWUPDATE=EXIT     L     13,SAVE+4
NEWUPDATE=/D LEN(72) "GODT0027"
NEWUPDATE=/EN
#4054
DATE=20 December, 1977
PERSON=Lift
NAME=PLOT SYSTEM(ASM)
NBR=615/4
DESCR=Fixes a bug which occurred when both optional arguments were
DESCR=omitted.
NEWUPDATE=/BEGIN C4054
NEWUPDATE=/COPY "PNUMBR"
NEWUPDATE=/COPY "         LA    8,=F'0'"
NEWUPDATE=         SR    9,9
NEWUPDATE=/DELETE "         SR    9,9"
NEWUPDATE=/END
#4055
DATE=Dec 22, 1977     
PERSON=Boettner
NAME=FILESTATUS      
NBR=529/1
DESCR=The SUMMARY option failed to print summary items for several
DESCR=things, including the number of files, last-changed date, 
DESCR=and file information items if a catalog scan was the last 
DESCR=thing done.  Also if a catalog scan was followed by a single
DESCR=file and file information was requested (as in:
DESCR=     $FILESTATUS (AARD?,VARK) SIZE       for example)
DESCR=then file information printed for the single file was really
DESCR=the information for the last file in the catalog scan. 
NEWUPDATE=/BEGIN C4055
NEWUPDATE=/COPY BEFORE BLANKS 'XC    SCATINFO'
NEWUPDATE=/EDIT '10' = '12'
NEWUPDATE=/COPY  BLANKS 'XC    SFILINFO'
NEWUPDATE=         MVC   SCATINFO+CIONID-CIDSECT(4),=CL32' '    ZAP THESE,
NEWUPDATE=         MVC   SCATINFO+CIVOL-CIDSECT(8),=CL32' '     HAVING NO MEANING
NEWUPDATE=         MVC   SCATINFO+CIPKEY-CIDSECT(12),=CL32' '   FOR SUMMARIZATION
NEWUPDATE=/COPY 'FILOOPE'
NEWUPDATE=/DELETE BLANKS 'BE    BX'
NEWUPDATE=         BE    BXCAT
NEWUPDATE=/COPY BEFORE 'BX'
NEWUPDATE=BXCAT    MVC   FILINFO,SAVFILI   RESTORE THIS, DONE WITH SCAN
NEWUPDATE=/DELETE  BLANKS 'MVC   CATINFO'
NEWUPDATE=         MVC   CATINFO+8(12*4),SCATINFO+8
NEWUPDATE=/COPY 'NAMES2'
NEWUPDATE=/COPY BLANKS 'MVI'
NEWUPDATE=         CVD   GR6,DBLWD
NEWUPDATE=         ED    0(4,GR1),DBLWD+6
NEWUPDATE=         A     GR1,CBWID 
NEWUPDATE=         XR    GR15,GR15
NEWUPDATE=         BR    GR14
NEWUPDATE=/END
OLDUPDATE=%DELETE FSTA0241
OLDUPDATE=         XC    SCATINFO(12*4),SCATINFO
OLDUPDATE=%AFTER FSTA0242 
OLDUPDATE=         MVC   SCATINFO+CIONID-CIDSECT(4),=CL32' '    ZAP THESE,
OLDUPDATE=         MVC   SCATINFO+CIVOL-CIDSECT(8),=CL32' '     HAVING NO MEANING
OLDUPDATE=         MVC   SCATINFO+CIPKEY-CIDSECT(12),=CL32' '   FOR SUMMARIZATION
OLDUPDATE=%DELETE FSTA0781
OLDUPDATE=         BE    BXCAT
OLDUPDATE=%AFTER FSTA0790
OLDUPDATE=BXCAT    MVC   FILINFO,SAVFILI   RESTORE THIS, DONE WITH SCAN
OLDUPDATE=%DELETE  FSTA0798
OLDUPDATE=         MVC   CATINFO+8(12*4),SCATINFO+8
OLDUPDATE=%AFTER FSTA1584 
OLDUPDATE=         CVD   GR6,DBLWD
OLDUPDATE=         ED    0(4,GR1),DBLWD+6
OLDUPDATE=         A     GR1,CBWID 
OLDUPDATE=         XR    GR15,GR15
OLDUPDATE=         BR    GR14
#4056
DATE=January 6, 1978
PERSON=Engle
NAME=BILLING (BILLING)
NBR=500/4
DESCR=If a checkpoint is written after all records with type numbers
DESCR=greater than or equal to 1 have been processed, i.e., at most,
DESCR=only project records (type 0) remain in the input stream after
DESCR=the checkpoint is written, a VB record with null data (record
DESCR=length including record descriptor length equals 4) is written
DESCR=to file REPORT.  This null data record causes an error when
DESCR=processed by BILPRNT (500/7) for ALL, RUN, or CHARGE.
NEWUPDATE=/B C4056
NEWUPDATE=/D LEN(72) 'BILL0593'
NEWUPDATE=                 PUT FILE(REPORT) EDIT(TVCODE, '-') (COL(1), 2 A);
NEWUPDATE=/EN
#4057
DATE=January 6, 1978
PERSON=Engle
NAME=ACCOUNTING CLS (ACCMXMAT)
NBR=631/6
DESCR=Last line printed by STATUS PROJECT produced high order
DESCR=truncation when the number of signon ID's in the project was
DESCR=greater than 999.
NEWUPDATE=/B C4057
NEWUPDATE=/COP LEN(72) 'AMXM0802'
NEWUPDATE=/S LEN(72) 'AMXM0804'
NEWUPDATE=         MVC   CNTMSG+16(6),=X'402020202120'
NEWUPDATE=         ED    CNTMSG+16(6),DOUBLE+5
NEWUPDATE=/COP LEN(72) 'AMXM0808'
NEWUPDATE=/S LEN(72) 'AMXM0810'
NEWUPDATE=         MVC   CNTMSG+34(6),=X'402020202120'
NEWUPDATE=         ED    CNTMSG+34(6),DOUBLE+5
NEWUPDATE=/COP LEN(72) 'AMXM0812'
NEWUPDATE=/S LEN(72) 'AMXM0814'
NEWUPDATE=         MVC   CNTMSG+47(6),=X'402020202120'
NEWUPDATE=         ED    CNTMSG+47(6),DOUBLE+5
NEWUPDATE=/COP LEN(72) 'AMXM2207'
NEWUPDATE=/S LEN(72) 'AMXM2209'
NEWUPDATE=CNTMSG   DC    C' NOCHANGE ON FOR       AND OFF FOR       OF THE       1
NEWUPDATE=               PROJECT ID''S'
NEWUPDATE=/EN
********** Sent January 12, 1978      **********
#4058
DATE=Jan 19, 1978
PERSON=Tiffany
NAME=UNLINKER
NBR=562/001
DESCR=Prevents generation of junk RLD from an overlay module.
DESCR=Occurs only when OS linkage editor doesn't reset bit 7
DESCR=of flag field in last RLD data for ENTAB.
NEWUPDATE=/BEGIN C4058
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=UNLK     TITLE 'ROUTINE TO PUNCH OS LOAD MODULES FOR MTS (AN198)'
NEWUPDATE=/COPY "RLDP    "
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         MVI   RLDSW,0            RESET RLDSW.
NEWUPDATE=/COPY SPAN(" ") "END" SPAN(" ") "UNLK"
NEWUPDATE=/SKIP SPAN(" ") "EJECT"
NEWUPDATE=/END
COMMENTS=The switch is reset at start.
COMMENTS=Extra source records at end are also removed.
#4059
DATE=January 20, 1978
PERSON=Engle
NAME=GRJLDT/GRJLTM SUBRS (GRJLDT)
NBR=519/1
DESCR=Return a value of zero if the return code is nonzero.
NEWUPDATE=/B C4059
NEWUPDATE=/S BEFORE LEN(72) 'GJDT0003'
NEWUPDATE=GJDT     TITLE 'S-TYPE CALLING INTERFACE FOR GRGJULDT--C. F. ENGLE--19 1
NEWUPDATE=               JAN 78'
NEWUPDATE=/COP LEN(72) 'GJDT0005'
NEWUPDATE=/COP C=3
NEWUPDATE=         SR    0,0
NEWUPDATE=/EN
COMMENTS=Assumes that change number 4051 has been applied.
#4060
DATE=January 20, 1978
PERSON=Engle
NAME=GRJLDT/GRJLTM SUBRS (GRJLTM)
NBR=519/3
DESCR=Return a value of zero if the return code is nonzero.
NEWUPDATE=/B C4060
NEWUPDATE=/S BEFORE LEN(72) 'GJTM0003'
NEWUPDATE=GJTM     TITLE 'S-TYPE CALLING INTERFACE FOR GRGJULTM--C. F. ENGLE--19 1
NEWUPDATE=               JAN 78'
NEWUPDATE=/COP LEN(72) 'GJTM0005'
NEWUPDATE=/COP C=6
NEWUPDATE=         SR    0,0
NEWUPDATE=/COP LEN(72) 'GJTM0008'
NEWUPDATE=/COP C=1
NEWUPDATE=         LR    0,1
NEWUPDATE=/D LEN(72) 'GJTM0012'
NEWUPDATE=/EN
COMMENTS=Assumes that change number 4052 has been applied.
#4061
DATE=January 20, 1978
PERSON=Engle
NAME=GROSDT
NBR=520/1
DESCR=Return values consisting of all blanks if the return code is
DESCR=nonzero.
NEWUPDATE=/B C4061
NEWUPDATE=/S BEFORE LEN(72) 'GODT0002'
NEWUPDATE=GODT     TITLE 'GREGORIAN TO OS DATE CONVERSION--C. F. ENGLE--19 JAN 781
NEWUPDATE=/COP LEN(72) 'GODT0006'
NEWUPDATE=/S LEN(72) 'GODT0008'
NEWUPDATE=         MVC   0(8,3),=CL8' '     BLANKS
NEWUPDATE=/COP BEFORE LEN(72) 'GODT0009'
NEWUPDATE=         MVC   3(2,3),6(1)        YEAR
NEWUPDATE=/D LEN(72) 'GODT0023'
NEWUPDATE=         SR    15,15
NEWUPDATE=EXIT     MVC   DOUBLE,0(3)
NEWUPDATE=/COP LEN(72) 'GODT0024'
NEWUPDATE=/S C=2
NEWUPDATE=         L     13,SAVE+4
NEWUPDATE=/EN
COMMENTS=Assumes that change number 4053 has been applied.
#4062
DATE=January 20, 1978
PERSON=Engle
NAME=OSGRDT
NBR=523/1
DESCR=Check for and produce a return code of 4 and values consisting
DESCR=of all blanks if "digits" in the first argument would produce
DESCR=a data exception.
NEWUPDATE=/B C4062
NEWUPDATE=/D LEN(72) 'OGDT0001'
NEWUPDATE=OGDT     TITLE 'OS TO GREGORIAN DATE CONVERSION--C. F. ENGLE--19 JAN 781
NEWUPDATE=/D LEN(72) 'OGDT0007'
NEWUPDATE=         PACK  0(2,3),3(2,1)      CHECK FOR POTENTIAL DATA EXCEPTIONS
NEWUPDATE=         PACK  2(2,3),5(3,1)
NEWUPDATE=         MVC   DOUBLE,=CL8' '
NEWUPDATE=         LA    15,4
NEWUPDATE=         CP    0(2,3),2(2,3)
NEWUPDATE=         BPI   OPND,EXIT
NEWUPDATE=         ZAP   DOUBLE,2(2,3)      GET DAYS
NEWUPDATE=/D LEN(72) 'OGDT0020'
NEWUPDATE=         SR    15,15
NEWUPDATE=EXIT     MVC   0(8,3),DOUBLE
NEWUPDATE=/D LEN(72) 'OGDT0024'
NEWUPDATE=/EN
#4063
DATE=Jan 23, 1978
PERSON=Tiffany
NAME=APC
NBR=0496/003
DESCR=If the synchronization mode is on, the printout
DESCR=ignores the PRCOL option.
NEWUPDATE=/BEGIN C4063
NEWUPDATE=/COPY "PRNTBOTH"
NEWUPDATE=/COPY SPAN(" ") "IF" SPAN(" ") "R3,NZ"
NEWUPDATE=           S     R2,=F'12'        MAKE ROOM FOR LINE NUMBER
NEWUPDATE=           A     R2,PRCOL         ACCOUNT FOR PRCOL
NEWUPDATE=           S     R3,PRCOL         SET LENGTH=LENGTH-PRCOL+1
NEWUPDATE=           A     R3,=F'1'
NEWUPDATE=           IF    NEG              IF NEGATIVE, ZERO LENGTH
NEWUPDATE=             SR    R3,R3
NEWUPDATE=             S     R2,PRCOL
NEWUPDATE=             A     R2,=F'1'
NEWUPDATE=           ENDIF
NEWUPDATE=/DELETE SPAN(" ") "S" SPAN(" ") "R2,=F'11'"
NEWUPDATE=/COPY SPAN(" ") "IF" SPAN(" ") "R5,NZ"
NEWUPDATE=           S     R4,=F'12'        MAKE ROOM FOR LINE NUMBER
NEWUPDATE=           A     R4,PRCOL         ACCOUNT FOR PRCOL
NEWUPDATE=           S     R5,PRCOL         SET LENGTH=LENGTH-PRCOL+1
NEWUPDATE=           A     R5,=F'1'
NEWUPDATE=           IF    NEG              IF NEGATIVE, ZERO LENGTH
NEWUPDATE=             SR    R5,R5
NEWUPDATE=             S     R4,PRCOL
NEWUPDATE=             A     R4,=F'1'
NEWUPDATE=           ENDIF
NEWUPDATE=/DELETE SPAN(" ") "S" SPAN(" ") "R4,=F'11'"
NEWUPDATE=/END
#4064
DATE=Jan 23,1978
PERSON=MTA
NAME=RAMROD(SERVICE MODULE)
NBR=1019/1
DESCR=Any system with a record longer than 256 bytes (for example a 
DESCR=CSI record) won't load properly.
NEWUPDATE=/BEGIN C4064
NEWUPDATE=/COPY 'TMLOOP '
NEWUPDATE=/COPY NEXT 'A '
NEWUPDATE=         A     R7,=F'256'         UPDATE TO ADDRESS ALSO
NEWUPDATE=/END
#4065
DATE=Jan 23, 1978
PERSON=MTA
NAME=*FAKEOS(UPDATES)
NBR=545/5
DESCR=OPEN blows up if the number of buffers requested is not odd (i.e 
DESCR=if it is a multiple of 2).
OLDUPDATE=%DELETE FAKB4096
OLDUPDATE=%DELETE FAKB4102
OLDUPDATE=*NUMBER OF BUFFERS WANTED IN GR0 AND LENGTH OF EACH IN GR1
OLDUPDATE=%DELETE FAKB4108
OLDUPDATE=         MH    R1,DOUBLE          TOTAL LENGTH OF ALL BUFFERS
COMMENTS=These updates should be merged into 545/5 in the appropriate place.
#4066
DATE=Jan 23, 1978
PERSON=MTA
NAME=*FAKEOS(BDAM SIMULATOR)
NBR=545/7
DESCR=Every BDAM I/O operation allocates X'90' bytes for an IOB which
DESCR=is never released or reused.
NEWUPDATE=/BEGIN C4066
NEWUPDATE=/COPY 'DAWAIT '
NEWUPDATE=/COPY NEXT 'STC '
NEWUPDATE=/BUFFER CHAIN
NEWUPDATE=/SKIP '* CAM '
NEWUPDATE=/COPY BEFORE NEXT 'SR ' NEXT 'RF,RF '
NEWUPDATE=/SKIP C=1
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY 'DACHKSYN '
NEWUPDATE=/COPY C=1
NEWUPDATE=         MVI   IOBDAVLI,0         RELEASE IOB
NEWUPDATE=/COPY BEFORE 'DACLRIOB '
NEWUPDATE=/EDIT F=1 REM =
NEWUPDATE=/COPY NEXT 'ST ' NEXT 'R4,'
NEWUPDATE=/INCLUDE CHAIN
NEWUPDATE=         MVI   IOBDAVLI,255       MARK IT IN USE
NEWUPDATE=/EDIT F=1 = 'DACLRIOB'
NEWUPDATE=/END
#4067
DATE=Jan 24, 1978
PERSON=Sherry
NAME=UMLOAD
NBR=001/1
DESCR=Fix the relocation factor of CM with non-zero origin (as produced
DESCR=by the OS Linkage Editor) - it's not the same as the value.
NEWUPDATE=/BEGIN C4067
NEWUPDATE=/COPY "ESDDEF92 TM"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         TM    SETESD+ESDST1D,COMBT  IF ESD ITEM = CM, COMPUTE NEW
NEWUPDATE=         BO    ESDDEF8                 RELFAC IN CASE NONZERO ORIGIN
NEWUPDATE=/END
COMMENTS=This bug caused A-type adcons referencing non-zero origin CMs
COMMENTS=to be improperly relocated (inter-module references).
#4068
DATE=Jan 24, 1978
PERSON=Sherry
NAME=UMLOAD
NBR=001/1
DESCR=Fix to properly relocate V-con reference to CM with non-zero
DESCR=origin from csect defined within same module as csect declaring
DESCR=CM as produced by the OS linkage editor (intra-module reference).
NEWUPDATE=/BEGIN C4068
NEWUPDATE=/COPY "RLDSA3   OI"
NEWUPDATE=/COPY COUNT=6
NEWUPDATE=         TM    RBFLGS+3,X'10'     A V-CON REFERENCE?
NEWUPDATE=         BO    RLDSA4             NO NEED TO RELOCATE NOW
NEWUPDATE=/END
#4069
DATE=Jan 24, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
DESCR=Fix bug to free input fdub when loading empty file with the
DESCR=noprompt and return on error bits set.
NEWUPDATE=/BEGIN C4069
NEWUPDATE=/COPY "XRUNIT   L"
NEWUPDATE=/COPY BEFORE BLANKS "BO    XLERRET"
NEWUPDATE=/EDIT "XLERRET" = "XLERROR"
NEWUPDATE=/END
COMMENTS=This caused the file to be locked so other users could not
COMMENTS=access it while the calling program was still loaded.
#4070
DATE=Jan 30, 1978
PERSON=Tiffany
NAME=APC
NBR=0496/003
DESCR=To correct line number for sequential files when scanning
DESCR=backwards.
NEWUPDATE=/BEGIN C4070
NEWUPDATE=/DELETE "NOSCAN0 "
NEWUPDATE=NOSCAN0  IF    IOMOD+1,O,X'20',TM BACKWARDS?
NEWUPDATE=           NI    IOMOD+1,NOT-X'20'
NEWUPDATE=           NI    IOSWS,NOT-EOFSW
NEWUPDATE=         ENDIF
NEWUPDATE=/COPY SPAN(" ") "BM" SPAN(" ") "READBSR "
NEWUPDATE=         IF    IOSWS,O,EOFSW,TM   ENDFILE?
NEWUPDATE=           TM    IOMOD+1,X'20'    BACKWARDS?
NEWUPDATE=           BZ    READSEQ3         NO, QUICK RETURN
NEWUPDATE=           NI    IOSWS,NOT-EOFSW  RESET SWITCH
NEWUPDATE=         ENDIF
NEWUPDATE=/SKIP COUNT=2
NEWUPDATE=/COPY BEFORE SPAN(" ") "BE" SPAN(" ") "READSEQ2"
NEWUPDATE=/EDIT "SEQ2" = "SEQ6"
NEWUPDATE=/COPY BEFORE SPAN(" ") "L" SPAN(" ") "R1,RDSAVE"
NEWUPDATE=           L     R1,=F'1000'      SET INCREMENT
NEWUPDATE=           TM    IOMOD+1,X'20'    IF BACKWARDS,
NEWUPDATE=           BZ    *+6              NEGATE IT.
NEWUPDATE=           LNR   R1,R1
NEWUPDATE=           A     R1,RDSAVE        UPDATE LINE NUMBER
NEWUPDATE=/SKIP COUNT=2
NEWUPDATE=/COPY BEFORE "READSEQ2"
NEWUPDATE=READSEQ6 IF    IOMOD+1,O,X'20',TM IF BACKWARDS
NEWUPDATE=           XC    IOLNR,IOLNR      SET LNR=0.0
NEWUPDATE=         ELSE
NEWUPDATE=/COPY BEFORE "READSEQ5"
NEWUPDATE=         ENDIF
NEWUPDATE=/END
#4071
DATE=Feb 3, 1978
PERSON=Boettner
NAME=FILESTATUS COMMAND
NBR=0529/001
DESCR=To correct one of the corrections in Change Form 4055.  The
DESCR=MVC instruction with label BXCAT that was inserted just   
DESCR=before the line with label BX should be executed only if 
DESCR=SPCBIT is on, since otherwise SAVFILI does not have a valid
DESCR=value.  This caused various strange behaviors, including 
DESCR=pgnts.  The following change assumes that Change 4055 
DESCR=has already been applied. 
NEWUPDATE=/BEGIN C4071
NEWUPDATE=/COPY BEFORE 'BXCAT'
NEWUPDATE=BXCAT    TM    SWS3,SPCBIT
NEWUPDATE=         BZ    BX
NEWUPDATE=/EDIT 'BXCAT' = '     '
NEWUPDATE=/END
#4072
DATE=February 6, 1978
PERSON=Engle
NAME=ACCOUNTING (STATUS)
NBR=104/11
DESCR=Exceeding a global time limit in conversational mode or a
DESCR=local time limit in batch or conversational mode while the
DESCR=accounting file is locked will leave the file locked until the
DESCR=program is unloaded.  This change causes the program to
DESCR=terminate without locking the file if either of these limits
DESCR=leaves too little remaining time.
NEWUPDATE=/B C4072
NEWUPDATE=/D LEN(72) 'STAT0001'
NEWUPDATE=STAT     TITLE 'ACCOUNTING STATUS FOR MTS USER--C. F. ENGLE--6 FEB 78' 
NEWUPDATE=/COP LEN(72) 'STAT0133'
NEWUPDATE=         MACRO 
NEWUPDATE=&NAME    GUINFO    &ITEM,&LOC 
NEWUPDATE=.********************************************************************** 
NEWUPDATE=.*                                                                    * 
NEWUPDATE=.*       ITEM  THE LOCATION SPECIFYING THE GUINFO ITEM TO BE OBTAINED.* 
NEWUPDATE=.*       LOC   THE LOCATION INTO WHICH THE GUINFO ITEM WILL BE PLACED.* 
NEWUPDATE=.*                                                                    * 
NEWUPDATE=.********************************************************************** 
NEWUPDATE=&NAME    LA    R1,=A(&ITEM,&LOC) 
NEWUPDATE=         L     R15,=V(GUINFO) 
NEWUPDATE=         BALR  R14,R15 
NEWUPDATE=         LTR   R15,R15 
NEWUPDATE=         BNZ   GUINFERR 
NEWUPDATE=         MEND 
NEWUPDATE=         SPACE 5 
NEWUPDATE=/COP LEN(72) 'STAT0158'
NEWUPDATE=GETELT   EQU   38                 SVC DEFINITION 
NEWUPDATE=         SPACE 5 
NEWUPDATE=/D LEN(72) 'STAT0168'
NEWUPDATE=/S LEN(72) 'STAT0173'
NEWUPDATE=         GUINFO    SIGNONID,ID    GET USER SIGNON ID 
NEWUPDATE=/D LEN(72) 'STAT0182'
NEWUPDATE=         GUINFO    LOCCPUT,DOUBLE 
NEWUPDATE=         GUINFO BATCHMD,DOUBLE+4 
NEWUPDATE=         C     R6,DOUBLE+4 
NEWUPDATE=         BNE   CKLCLTM            BATCH, NO GLOBAL TIME LIMIT PROBLEM 
NEWUPDATE=         GUINFO    GLOBCPUT,DOUBLE+4 
NEWUPDATE=         L     R2,DOUBLE+4 
NEWUPDATE=         LTR   R2,R2 
NEWUPDATE=         BZ    CKLCLTM            NO GLOBAL TIME LIMIT 
NEWUPDATE=         GUINFO    GLOBTTN,DOUBLE+4    GLOBAL TIME LIMIT BASE 
NEWUPDATE=         A     R2,DOUBLE+4 
NEWUPDATE=         C     R6,DOUBLE 
NEWUPDATE=         BNE   LCLBASE            LOCAL TIME LIMIT 
NEWUPDATE=         B     GETREQTM 
NEWUPDATE=         SPACE 5 
NEWUPDATE=CKLCLTM  C     R6,DOUBLE 
NEWUPDATE=         BE    GETACC             NO LOCAL TIME LIMIT 
NEWUPDATE=         L     R2,=X'7FFFFFFF'    MAXIMUM FOR GLOBAL TIME LIMIT 
NEWUPDATE=LCLBASE  GUINFO    LOCTTN,DOUBLE+4     LOCAL TIME LIMIT BASE 
NEWUPDATE=         L     R3,DOUBLE 
NEWUPDATE=         A     R3,DOUBLE+4 
NEWUPDATE=         CR    R2,R3 
NEWUPDATE=         BNH   GETREQTM           GLOBAL LIMIT BEFORE LOCAL LIMIT 
NEWUPDATE=         LR    R2,R3              USE LOCAL TIME LIMIT 
NEWUPDATE=GETREQTM L     R3,=F'-7680'       -0.1 CPU SEC NEEDED TO READ ACC REC 
NEWUPDATE=         L     R15,=V(CNFGINFO) 
NEWUPDATE=         USING CNFGINFD,R15 
NEWUPDATE=         CLC   CIMODEL,=X'0470' 
NEWUPDATE=         BE    CKREMTM            470V/6 
NEWUPDATE=         SLA   R3,1               MINUS CPU TIME NEEDED FOR 370/168 
NEWUPDATE=         CLC   CIMODEL,=X'0168' 
NEWUPDATE=         BE    CKREMTM            370/168 
NEWUPDATE=         DROP  R15 
NEWUPDATE=         MH    R3,=H'6'           MINUS CPU TIME NEEDED FOR 360/67 
NEWUPDATE=CKREMTM  AR    R3,R2 
NEWUPDATE=         SVC   GETELT             CURRENT CPU TIME 
NEWUPDATE=         SR    R3,R0 
NEWUPDATE=         SR    R3,R1              REMAINING CPU TIME MINUS TIME NEEDED 
NEWUPDATE=         BM    NOTIME             INSUFFICIENT CPU TIME TO READ ACC REC 
NEWUPDATE=GETACC   L     R0,SAVE+4 
NEWUPDATE=/D LEN(72) 'STAT0255'
NEWUPDATE=/S LEN(72) 'STAT0258'
NEWUPDATE=         GUINFO    BATCHMD,DOUBLE 
NEWUPDATE=         C     R6,DOUBLE 
NEWUPDATE=         BE    NOFULL             NOT BATCH, ABBREVIATED OUTPUT 
NEWUPDATE=/COP LEN(72) 'STAT0267'
NEWUPDATE=GUINFERR LA    R1,=A(GUINFMSG,H13,0)   GUINFO ERROR 
NEWUPDATE=         B     READERR 
NEWUPDATE=         SPACE 5 
NEWUPDATE=/COP LEN(72) 'STAT0275'
NEWUPDATE=NOTIME   LA    R1,=A(NOTIMMSG,H44,0)   INSUFFICIENT CPU TIME 
NEWUPDATE=         B     READERR 
NEWUPDATE=         SPACE 5 
NEWUPDATE=/COP LEN(72) 'STAT0692'
NEWUPDATE=BATCHMD  DC    F'10' 
NEWUPDATE=/COP LEN(72) 'STAT0695'
NEWUPDATE=GLOBCPUT DC    F'78' 
NEWUPDATE=GLOBTTN  DC    F'94' 
NEWUPDATE=/COP LEN(72) 'STAT0701'
NEWUPDATE=LOCCPUT  DC    F'86' 
NEWUPDATE=LOCTTN   DC    F'96' 
NEWUPDATE=/COP LEN(72) 'STAT0703'
NEWUPDATE=SIGNONID DC    F'2' 
NEWUPDATE=/COP LEN(72) 'STAT0710'
NEWUPDATE=H44      DC    H'44' 
NEWUPDATE=/COP LEN(72) 'STAT0720'
NEWUPDATE=GUINFMSG DC    C' GUINFO ERROR' 
NEWUPDATE=/COP LEN(72) 'STAT0723'
NEWUPDATE=NOTIMMSG DC    C' THE LOCAL OR GLOBAL TIME LIMIT IS TOO SMALL' 
NEWUPDATE=/COP LEN(72) 'STAT0740'
NEWUPDATE=*********************************************************************** 
NEWUPDATE=*                                                                     * 
NEWUPDATE=*        MACHINE CONFIGURATION TABLE                                  * 
NEWUPDATE=*                                                                     * 
NEWUPDATE=*********************************************************************** 
NEWUPDATE=         SPACE 5 
NEWUPDATE=         COPY  *CNFGINFODSECT 
NEWUPDATE=         EJECT 
NEWUPDATE=/EN
#4073
DATE=FEBRUARY 7, 1978
PERSON=MTA
NAME=MSG ROUTINE
NBR=1023/1
DESCR=A CALL item after a false IF test causes an infinite loop.
NEWUPDATE=/BEGIN C4073
NEWUPDATE=/COPY 'L1SKP '
NEWUPDATE=/COPY C=4
NEWUPDATE=         CLI   0(MSGLOC),CALL@     CALL THIS TO GET LENGTH
NEWUPDATE=         BE    L1B
NEWUPDATE=/COPY BEFORE 'CALLC '
NEWUPDATE=CALLC    TM    SWX,@SKIP          ARE WE SKIPPING?
NEWUPDATE=         BO    CALLSKP            YES
NEWUPDATE=/EDIT FIELD=1 'CALLC' =
NEWUPDATE=/COPY 'CALLQ '
NEWUPDATE=/COPY NEXT 'B '
NEWUPDATE=CALLSKP  LA    MSGLOC,4(0,R6)     SET RESUME POINT
NEWUPDATE=         B     LOOP               AND CONTINUE
NEWUPDATE=/END
********** Sent February 8, 1978      **********
#4074
DATE=FEB 15, 1978
PERSON=Sherry
NAME=*WATFIV(ACCT) -- UPDATE
NBR=483/001
DESCR=Change the /COMPILE card scanner to recognize abbreviations
DESCR=for some job options and also to allow commas or blanks as
DESCR=delimiters.
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to ACCT assembly --
EDIT=INSERT 2090
EDIT=%DELETE '01250000' '01270000' 
EDIT=         LR    R2,R1              SAVE CURRENT POINTER
EDIT=BLOOP    IF        (ZR1,EQ,C';'),BANALDON        END OF PARAMETERS 
EDIT=         CLI   ZR1,C' ' 
EDIT=         BNE   *+12 
EDIT=         LA    R1,ZR1+1           SKIP THE BLANK 
EDIT=         B     BLOOP              CONTINUE 
EDIT=         CLI   ZR1,C','           SKIP ALL COMMAS 
EDIT=         BNE   BCHKDEL
EDIT=BLOOP3   LA        R1,ZR1+1            R1=R1+1; 
EDIT=         B     BLOOP              TRY SOME MORE 
EDIT=BCHKDEL  CR    R1,R2              ANY DELIMITERS?
EDIT=         BE    BANALERR           NO, SO IT'S AN ERROR
EDIT=$ENDFILE
EDIT=INSERT 2092
EDIT=%BEFORE  '01840000' 
EDIT=         BE    *+22 
EDIT=         CLC   =C'T=',ZR1              "T="? 
EDIT=%BEFORE  '01850000' 
EDIT=         LA    R1,ZR1+1                SKIP THE "T" 
EDIT=         B     *+8 
EDIT=$ENDFILE
EDIT=INSERT 2116
EDIT=%BEFORE  '02030000' 
EDIT=         BE    *+22 
EDIT=         CLC   =C'P=',ZR1              "P="? 
EDIT=%BEFORE  '02040000' 
EDIT=         LA    R1,ZR1+1                SKIP THE "P" 
EDIT=         B     *+8 
EDIT=%BEFORE  '02360000' 
EDIT=         BE    *+22 
EDIT=         CLC   =C'L=',ZR1              "L="? 
EDIT=%BEFORE  '02370000' 
EDIT=         LA    R1,ZR1+1                SKIP THE "L" 
EDIT=         B     *+8 
EDIT=$ENDFILE
EDIT=INSERT 2128
EDIT=         BE    *+20 
EDIT=         CLI   ZR1,C'S'                "S"? 
EDIT=$ENDFILE
EDIT=INSERT 2129
EDIT=         LA    R1,ZR1+1                SKIP THE "S" 
EDIT=         B     *+8 
EDIT=$ENDFILE
COMMENTS=Allowable abbreviations are T for TIME, P for PAGES,
COMMENTS=L for LINES and S for SOURCE.
#4075
DATE=FEB 15, 1978
PERSON=Sherry
NAME=*WATFIV(SCAN) -- UPDATE
NBR=483/001
DESCR=Change the control card scanner to detect illegal control cards
DESCR=and print a warning message.
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to SCAN assembly --
EDIT=INSERT 71014
EDIT=%AFTER '02014000'
EDIT=         SPRIN XCARD1,90          PRINT OFFENDING CARD
EDIT=         MVI   XCARD2,0           SO ERROR WON'T PRINT LAST BUFFER
EDIT=         ERROR (WARN,JB,2),DONE   "UNRECOGNIZED CONTROL CARD"
EDIT=$ENDFILE
EDIT=COMMENT -- Edit update to ERRTEXTS assembly to add new message 
EDIT=INSERT 44001
EDIT=%AFTER '02790000'
EDIT=         EMESSAGE   JB,2,'UNRECOGNIZABLE CONTROL CARD.'
EDIT=$ENDFILE
EDIT=COMMENT -- Edit update to STARTA section to add new switch.
EDIT=INSERT 76052
EDIT=%AFTER '09351500'
EDIT=XJOBSW   DC    X'00'              ON IF $JOB CARD READ
EDIT=$ENDFILE
EDIT=COMMENT -- Edit update to MAIN assembly --
EDIT=INSERT 61042
EDIT=%DELETE '02690000'
EDIT=         BE    MAIN15             YES, START THE JOB 
EDIT=         CLI   XJOBSW,0           READ A $JOB CARD YET? 
EDIT=         BE    MAIN10C            NO, SO COMPLAIN 
EDIT=         EX    R0,COPENTRY        AN $ENTRY CARD? 
EDIT=         BNE   MAIN10             NO, IGNORE IT 
EDIT=         MVI   XJOBSW,0           NO $JOB CARD YET 
EDIT=         B     MAIN10 
EDIT=MAIN10C  CLI   XSRCPTR,0          BATCH? 
EDIT=         BNE   MAIN10P            YES, PRINT THE CARD 
EDIT=         CLI   XITZFILE,0         SCARDS A FILE? 
EDIT=         BE    MAIN10             NO, SO IGNORE IT 
EDIT=MAIN10P  SPRIN XCARD1,90          ECHO CONTROL CARD 
EDIT=         SERCOM 'YOU MUST ENTER A "&CONTROL&NEWJOB" CARD FIRST'
EDIT=         B     MAIN10             TRY AGAIN 
EDIT=$ENDFILE
EDIT=INSERT 61044
EDIT=         MVI   XJOBSW,B'10000000' REMEMBER A $JOB CARD WAS READ
EDIT=$ENDFILE
EDIT=COMMENT -- Edit ERRTABLE macro to add new message type -- 
EDIT=INSERT 43000
EDIT=%INPUT *S* 43    ;43              ERRTABLE
EDIT=%OUTPUT WAT5.FUNMAC(1000)
EDIT=%AFTER '03090000'
EDIT=         ERRDEFN JB2
EDIT=%AFTER FILEMARK
EDIT=%CLOSE *S*
EDIT=%CLOSE WAT5.FUNMAC(1000)
EDIT=$CONTINUE WITH *DUMMY*
EDIT=$ENDFILE
COMMENTS=The macro ERRTABLE must be regenerated and placed in the 
COMMENTS=appropriate macro library (WAT5.FUNMAC); the copy sections
COMMENTS=ERRTEXTS and STARTA must be regenerated; and the modules
COMMENTS=ERROR, SCAN and MAIN must be regenerated and assembled to 
COMMENTS=effect this change.
#4076
DATE=FEB 15, 1978
PERSON=Sherry
NAME=*WATFIV(INOUT) -- UPDATE
NBR=483/001
DESCR=Fix the error message issued when more than 256 constants 
DESCR=appear in a DATA statement (WATFIV restriction).
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to INOUT assembly --
EDIT=%AFTER '06020000'  ; BUGFIX
EDIT=          MVI   IOBJBIT,X'00'     INITIALIZE SWITCH
EDIT=%AFTER '07830000' ;  BUGFIX
EDIT=          C     R4,=F'255'        MORE THAN 255 CONSTANTS?
EDIT=          BNH   ISETLEN           NO, OK
EDIT=          MVI   ZR3+1,255         SET MAX COUNT
EDIT=          ERROR (NOAC,DA,A),ITUFF  "MORE THAN 255 CONSTANTS"
EDIT=ISETLEN   DS    0H
EDIT=$ENDFILE
EDIT=COMMENT -- Edit update to ERRTEXTS copy section --
EDIT=INSERT 44001
EDIT=%AFTER '00980000'
EDIT=         EMESSAGE   DA,A,'MORE THAN 255 CONSTANTS IN DATA STATEMENT'
EDIT=$ENDFILE
EDIT=COMMENT -- Edit ERRTABLE macro to add new message type -- 
EDIT=INSERT 43003
EDIT=%BEFORE '03140000'
EDIT=         ERRDEFN DAA
EDIT=$ENDFILE
COMMENTS=Previously the message "MORE VARIABLES THAN CONSTANTS" was
COMMENTS=printed because only one byte is used to save the number of
COMMENTS=constants in the object code. This change requires that the
COMMENTS=macro ERRTABLE, the copy section ERRTEXTS, the module ERROR,
COMMENTS=and the module INOUT be regenerated.
#4077
DATE=Feb 20, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
DESCR=Fix bug to not unload run-only program when it loads a null
DESCR=program with noprompt and return on error bits set.
NEWUPDATE=/BEGIN C4077
NEWUPDATE=/COPY "XLERROR  L"
NEWUPDATE=/COPY BEFORE BLANKS "BAL   GR2,XLCLEAN"
NEWUPDATE=/EDIT "       " = "XLERRCL"
NEWUPDATE=/COPY "XRUNIT   L"
NEWUPDATE=/COPY BEFORE BLANKS "BO    XLERROR"
NEWUPDATE=/EDIT "XLERROR" = "XLERRCL"
NEWUPDATE=/END
COMMENTS=Note: this bug was introduced by the bugfix of change #4069.
COMMENTS=The "B XLERROR" should have been "B XLERROR+8".
#4078
DATE=Mar 25, 1978
PERSON=OGDEN
NAME=OPERATOR JOB
NBR=634/1
DESCR=Provides support for the 3286 log printer, which is just
DESCR=treated like a 3284.
NEWUPDATE=/BEGIN C4078
NEWUPDATE=/COPY "GETNUP "
NEWUPDATE=/COPY COUNT=9
NEWUPDATE=         CLC   =C'3286',RDLNAM(R2)
NEWUPDATE=         BE    IS3284              WELL ALMOST ANYWAY
NEWUPDATE=/END
#4079
DATE=Mar 25, 1978
PERSON=OGDEN
NAME=OPERATOR JOB
NBR=634/1
DESCR=Fixes several bugs in the log printer Unit Check routines.
NEWUPDATE=/BEGIN C4079
NEWUPDATE=/COPY BEFORE "SVCSKIP "
NEWUPDATE=/EDIT "31" = "13"
NEWUPDATE=/COPY "TRYNUDVS "
NEWUPDATE=/COPY COUNT=16
NEWUPDATE=/EDIT "SWS" = "SWS2"
NEWUPDATE=/COPY "SAMPTR "
NEWUPDATE=/COPY COUNT=6
NEWUPDATE=/EDIT "SWS" = "SWS2"
NEWUPDATE=/COPY "UCPTR "
NEWUPDATE=/COPY COUNT=11
NEWUPDATE=/EDIT "+OC" = ""
NEWUPDATE=/COPY "WAITRTN "
NEWUPDATE=/COPY COUNT=12
NEWUPDATE=/EDIT "SWS" = "SWS2"
NEWUPDATE=/END
COMMENTS=The D4.1 version will contain a "cleaner" fix for
COMMENTS=the 1403 support.
COMMENTS=I'm sorry it took me so long to get these
COMMENTS=written up on a change form.
#4080
DATE=Mar 25, 1978
PERSON=OGDEN
NAME=OPERATOR JOB
NBR=634/1
DESCR=Fix the register setup so the SVC TIMERCNCL will work.
NEWUPDATE=/BEGIN C4080
NEWUPDATE=/COPY "WRITNOW "
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=/EDIT "R3" = "R0"
NEWUPDATE=/END
COMMENTS=My thanks to the folks from UBC for finding this.
#4081
DATE=Mar 25, 1978
PERSON=OGDEN
NAME=OPERATOR JOB
NBR=634/1
DESCR=A fix so both digits of the month (mm-dd-yy) will print 
DESCR=on the console log.
NEWUPDATE=/BEGIN C4081
NEWUPDATE=/COPY "DLTIME "
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=          DC    X'21000800',AL1(0,0,0,0,0)
NEWUPDATE=/END
#4082
DATE=MARCH 31, 1978
PERSON=Sherry
NAME=*WATFIV(FORMCONV) -- UPDATE
NBR=483/001
DESCR=Fix E and D-type output format conversion for zero valued variables.
EDIT=EDIT WAT5.SGEN
EDIT=COMMENT -- Edit update to FORMCONV assembly --
EDIT=INSERT 50110
EDIT=%AFTER '13070000'
EDIT=         BAL   R8,SPZERO          CHECK IF VARIABLE IS ZERO
EDIT=%AFTER '13100000'     ; ADD NEW SUBROUTINE
EDIT=         SPACE
EDIT=SPZERO   L     R1,STR1            POINT TO VARIABLE
EDIT=         LE    0,0(,R1)           NOW IN FR0
EDIT=         LTER  0,0                IS IT ZERO?
EDIT=         BNZR  R8                 NO, JUST RETURN
EDIT=         B     ISZERO             YES
EDIT=DPZERO   L     R1,STR1            POINTER TO VARIABLE
EDIT=         LD    0,0(,R1)           PICK UP REAL*8 VARIABLE
EDIT=         LTDR  0,0                IS IT ZERO?
EDIT=         BNZR  R8                 NO, RETURN
EDIT=ISZERO   LR    R3,R4              BUFFER POINTER TO EXPONENT
EDIT=         SR    R3,R7              - POINTER TO DECIMAL POINT
EDIT=         SH    R3,=H'3'           = NUMBER OF 0'S TO BLANK
EDIT=         BM    ISZEROR            NEGATIVE -> RETURN
EDIT=         MVI   2(R7),C' '         BLANK OUT FRACTION
EDIT=         BZ    ISZEROR            ONLY ONE EXTRA 0
EDIT=         BCTR  R3,0               IBM LENGTH
EDIT=         EX    R3,BLKFRAC         BLANK OUT EXTRA ZEROS IN FRACTION
EDIT=ISZEROR  LA    R4,4(,R4)          UPDATE BUFFER POINTER
EDIT=         B     SUPCLEAN           RETURN
EDIT=BLKFRAC  MVC   3(0,R7),2(R7)
EDIT=%AFTER  '13250000'
EDIT=         BAL   R8,DPZERO          CHECK FOR VAR = 0.0
EDIT=$ENDFILE
COMMENTS=Previously FORMCONV would print zero valued variables with
COMMENTS=formats like E13.5 as "0.00000E-01", now just "0.0" will
COMMENTS=be printed for all E and D-type formats as FTN does.
#4083
DATE=April 12, 1978
PERSON=Helffrich
NAME=OPEN
NBR=428/14
DESCR=When the RENAMEIT subroutine was called to rename a file from
DESCR=one catalog to another, and the LASTCHG and CREDATE stuff was
DESCR=supplied, the LASTCHG and CREDATE were exchanged.
OLDUPDATE=%BEFORE  'OPEN1587' 
OLDUPDATE=*           16+CRECAT,80+CREFD,12+SDMLIKE,12+SDWRITE,12+FDWRITE 
OLDUPDATE=%DELETE  'OPEN1587' 
OLDUPDATE=%BEFORE  'OPEN2093' 
OLDUPDATE=         MVC   CFDPAR+56+4(22-4,RD),4(R2) RE-FORMAT PARAMETERS 
OLDUPDATE=         MVC   CFDPAR+56(2,RD),2(R2)      SO THAT CREFD GETS THEM 
OLDUPDATE=         MVC   CFDPAR+56+2(2,RD),0(R2)    RIGHT 
OLDUPDATE=         LA    R2,CFDPAR+56(,RD)          POINT TO NEW ONES 
OLDUPDATE=%BEFORE  'OPEN2111' 
OLDUPDATE=         LA    RD,CFDPAR+56+24(,RD) 
OLDUPDATE=%DELETE  'OPEN2111' 
#4084
DATE=April 12, 1978
PERSON=Helffrich
NAME=OPEN
NBR=428/14
DESCR=This decreases the number of references to the catalog to 
DESCR=update the LASTCHG date and the FSAVEIT bit in the catalog
DESCR=when a file is changed.
OLDUPDATE=%BEFORE  'OPEN0285' 
OLDUPDATE=         TM    FDFODT(R5),FSAVEIT 
OLDUPDATE=         BZ    *+8                -> FSAVEIT bit not on 
OLDUPDATE=         OI    FCBFLG(R2),FDCHNG  will, remember this then 
OLDUPDATE=%BEFORE  'OPEN0286' 
OLDUPDATE=         MVC   FCBOLCD(2,R2),FDLCHNG(R5) last change date at open 
OLDUPDATE=%BEFORE  'OPEN0287' 
OLDUPDATE=         MVC   FCBFDLOC(6,R2),BCBPA(R8)  SAVE FDLOC FOR CLOSE 
OLDUPDATE=%DELETE  'OPEN0287' 
OLDUPDATE=%BEFORE  'OPEN0574' 
OLDUPDATE=         MVC   R1NAB(4,R7),FCBLNAB(R8)  #AVAIL ENTRIES 
OLDUPDATE=%DELETE  'OPEN0574' 
OLDUPDATE=%BEFORE  'OPEN0614' 
OLDUPDATE=         BZ    CLOSD3X            -> no, check if additional refs 
OLDUPDATE=         TM    FCBFLG(R8),FDCHNG  FSAVEIT in FD set yet? 
OLDUPDATE=         BZ    CLOSR1             -> no, do it right away 
OLDUPDATE=* 
OLDUPDATE=         SVC   TIME               see if last change date needs 
OLDUPDATE=         D     R0,=F'60000000'    updating from value at open 
OLDUPDATE=         XR    R0,R0 
OLDUPDATE=         D     R0,=A(24*60)       mumbo jumbo 
OLDUPDATE=         LA    R0,1(,R1) 
OLDUPDATE=         L     R1,R1LOC(,RD)      restore this 
OLDUPDATE=         CH    R0,FCBOLCD(,R8)    see if has changed 
OLDUPDATE=         BH    CLOSR1             -> yup, have to update 
OLDUPDATE=* 
OLDUPDATE=CLOSD3X  LH    R9,FCBREFC(,R8)    any new refrences to FCB besides 
OLDUPDATE=         BXLE  R9,R9,CLOSR20      this open?  -> no 
OLDUPDATE=         SPACE 2 
OLDUPDATE=*        Going to read and maybe write file descriptor, now 
OLDUPDATE=         SPACE 
OLDUPDATE=CLOSR1   LR    R6,R8              KEEP FCB LOC AROUND 
OLDUPDATE=         SR    R7,R7              THIS MARKS A KEEPIT & INUSE BUFFER 
OLDUPDATE=%DELETE  'OPEN0614' 'OPEN0619' 
OLDUPDATE=%BEFORE  'OPEN0624' 
OLDUPDATE=         BO    *+6                DONT EVEN THINK ABOUT USING THIS ONE 
OLDUPDATE=%DELETE  'OPEN0624' 
OLDUPDATE=%BEFORE  'OPEN0666' 
OLDUPDATE=* 
OLDUPDATE=         LH    R4,FCBREFC(,R6)    FIRST CHECK ADDITIONAL REFERENCES 
OLDUPDATE=         LTR   R4,R4 
OLDUPDATE=         BNZ   CLOSR5             -> FOUND SOME FLEAS 
OLDUPDATE=* 
OLDUPDATE=         CH    R2,FDLCHNG(,R5)    IF LAST CHANGE DATE ISN'T LATER, WE 
OLDUPDATE=         BH    CLOSR6             CAN SKIP WRITE ENTIRELY 
OLDUPDATE=         TM    FCBFLG(R6),FDCHNG    UNLESS 
OLDUPDATE=         BZ    CLOSR6                 FSAVEIT IN FD NOT SET 
OLDUPDATE=* 
OLDUPDATE=         LA    R0,LDN             SKIP  WRITE  JUST FREE DRIVE 
OLDUPDATE=%DELETE  'OPEN0666' 'OPEN0675' 
OLDUPDATE=%BEFORE  'OPEN0689' 
OLDUPDATE=         OI    FCBFLG(R6),FDCHNG      AND DON'T DO IT AGAIN 
OLDUPDATE=CLOSR7   MVC   FCBOLCD(2,R6),FDLCHNG(R5)  ANYWAY, UPDATE WHILE HERE 
OLDUPDATE=         LA    R8,0(,R8) 
OLDUPDATE=%DELETE  'OPEN0689' 
OLDUPDATE=%AFTER    FILEMARK 
#4085
DATE=April 12, 1978
PERSON=Helffrich
NAME=RWSEQ
NBR=428/17
DESCR=Fix bug in D4.0 READS causing write pointer in sequential file
DESCR=to not be updated properly on a backwards read.
OLDUPDATE=%BEFORE  'RWSE0349' 
OLDUPDATE=         CLC   0(4,R2),FCBSRPW(RE)  check write pointer < read 
OLDUPDATE=         BH    RSSKIPCK           -> yes 
OLDUPDATE=%DELETE  'RWSE0349' 'RWSE0350' 
********** Sent April 13, 1978        **********
#4086
DATE=May 5, 1978
PERSON=Engle
NAME=RCALL/ADROF SUBRS
NBR=357/1
DESCR=Updates the source to agree with the object (357/2) in D4.0 by
DESCR=including the entry point IADROF and zeroing the high order
DESCR=byte of the value returned by ADROF (IADROF).
NEWUPDATE=/B C4086
NEWUPDATE=/D LEN(72) 'RCAL0072'
NEWUPDATE=         ENTRY IADROF
NEWUPDATE=IADROF   EQU   *
NEWUPDATE=         L     1,0(0,1)           PICK UP THE ADDRESS FROM THE P LIST
NEWUPDATE=         LA    0,0(0,1)           ZERO THE HIGH ORDER BYTE
NEWUPDATE=/EN
COMMENTS=The same source appears to have been distributed starting
COMMENTS=with D2.0; the object changed sometime between D2.0 and
COMMENTS=D3.0.
#4087
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCPRINT)
NBR=104/5
DESCR=Remove the external symbol LINCOUNT from this module so that
DESCR=it can be placed in an independent module, and include the
DESCR=provision that a new page is generated if LINCOUNT contains
DESCR=zero.
NEWUPDATE=/B C4087
NEWUPDATE=/S LEN(72) 'APRT0002'
NEWUPDATE=APRT     TITLE 'MTS ACCOUNTING RECORD PRINT PROGRAM--C. F. ENGLE--15 MA1'
NEWUPDATE=               Y 78'
NEWUPDATE=/D LEN(72) 'APRT0193'
NEWUPDATE=/D LEN(72) 'APRT0245'
NEWUPDATE=CKINIT   L     R4,=V(LINCOUNT)    GET LINE COUNT
NEWUPDATE=         L     R4,0(,R4)
NEWUPDATE=         LTR   R4,R4
NEWUPDATE=         BZ    INIT               LINE COUNT IS ZERO
NEWUPDATE=         CLI   INITIAL,0
NEWUPDATE=/D LEN(72) 'APRT0247'
NEWUPDATE=INIT     SR    R4,R4              INITIALIZE GR4 FOR LINE COUNT
NEWUPDATE=/D LEN(72) 'APRT0334'
NEWUPDATE=         L     R2,=V(LINCOUNT)
NEWUPDATE=         ST    R4,0(,R2)          SAVE LINE COUNT
NEWUPDATE=/D LEN(72) 'APRT0340'
NEWUPDATE=/S LEN(72) 'APRT0341'
NEWUPDATE=CONTINUE CH    R4,=H'50'
NEWUPDATE=/D LEN(72) 'APRT0376'
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4088
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCLSTPR)
NBR=104/72
DESCR=Remove the external symbol LINCOUNT from this module so that
DESCR=it can be placed in an independent module, and include the
DESCR=provision that a new page is generated if LINCOUNT contains
DESCR=zero.
NEWUPDATE=/B C4088
NEWUPDATE=/D LEN(72) 'ALPR0002'
NEWUPDATE=               15 MAY 78'
NEWUPDATE=/D LEN(72) 'ALPR0195'
NEWUPDATE=/D LEN(72) 'ALPR0243'
NEWUPDATE=CKINIT   L     R4,=V(LINCOUNT)    GET LINE COUNT
NEWUPDATE=         L     R4,0(,R4)
NEWUPDATE=         LTR   R4,R4
NEWUPDATE=         BZ    INIT               LINE COUNT IS ZERO
NEWUPDATE=         CLI   INITIAL,0
NEWUPDATE=/D LEN(72) 'ALPR0245'
NEWUPDATE=INIT     MVI   INITIAL,X'FF'
NEWUPDATE=/D LEN(72) 'ALPR0297'
NEWUPDATE=         L     R2,=V(LINCOUNT)
NEWUPDATE=         ST    R4,0(,R2)          SAVE LINE COUNT
NEWUPDATE=/D LEN(72) 'ALPR0302'
NEWUPDATE=/S LEN(72) 'ALPR0303'
NEWUPDATE=CONTINUE CH    R4,=H'57'
NEWUPDATE=/D LEN(72) 'ALPR0320'
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4089
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACPRJPRT)
NBR=104/32
DESCR=Reverse the printing of the no high priority flags so that the
DESCR=indication is printed when the flag is off rather than on.
NEWUPDATE=/B C4089
NEWUPDATE=/D LEN(72) 'APPR0001'
NEWUPDATE=/S LEN(72) 'APPR0002'
NEWUPDATE=APPR     TITLE 'MTS PROJECT RECORD PRINT PROGRAM--C. F. ENGLE--15 MAY 71
NEWUPDATE=               8'
NEWUPDATE=/D LEN(72) 'APPR0262'
NEWUPDATE=               MAXFLAGS+2,40,NONRMT,MAXFLAGS+2,-20,HITRM               3
NEWUPDATE=/D LEN(72) 'APPR0264'
NEWUPDATE=               MAXFLAGS+2,-4,HIBAT
NEWUPDATE=/D LEN(72) 'APPR0288'
NEWUPDATE=               MAXFLAGS+2,40,NONRMT,MAXFLAGS+2,-20,HITRM,              3
NEWUPDATE=/D LEN(72) 'APPR0290'
NEWUPDATE=               MAXFLAGS+2,-4,HIBAT
NEWUPDATE=/EN
#4090
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACPRJPRT)
NBR=104/32
DESCR=Remove the external symbol LINCOUNT from this module so that
DESCR=it can be placed in an independent module, and include the
DESCR=provision that a new page is generated if LINCOUNT contains
DESCR=zero.
NEWUPDATE=/B C4090
NEWUPDATE=/D LEN(72) 'APPR0195'
NEWUPDATE=/COP LEN(72) 'APPR0224'
NEWUPDATE=         L     R4,=V(LINCOUNT)    GET LINE COUNT
NEWUPDATE=         L     R4,0(,R4)
NEWUPDATE=         LTR   R4,R4
NEWUPDATE=         BZ    INIT               LINE COUNT IS ZERO
NEWUPDATE=/D LEN(72) 'APPR0227'
NEWUPDATE=INIT     SR    R4,R4              INITIALIZE GR4 FOR LINE COUNT
NEWUPDATE=/D LEN(72) 'APPR0298'
NEWUPDATE=         L     R2,=V(LINCOUNT)
NEWUPDATE=         ST    R4,0(,R2)          SAVE LINE COUNT
NEWUPDATE=/D LEN(72) 'APPR0304'
NEWUPDATE=/S LEN(72) 'APPR0305'
NEWUPDATE=CONTINUE CH    R4,=H'55'
NEWUPDATE=/D LEN(72) 'APPR0332'
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4091
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (LINCOUNT)
NBR=104
BASE=no previous
DESCR=Place the external symbol LINCOUNT in an independent module.
NEWUPDATE=/B C4091
NEWUPDATE=LCNT     TITLE 'STORAGE FOR THE EXTERNAL SYMBOL LINCOUNT--C. F. ENGLE--1
NEWUPDATE=               15 MAY 78'
NEWUPDATE=LINCOUNT START
NEWUPDATE=         DS    F
NEWUPDATE=         END
NEWUPDATE=/EN
COMMENTS=The object module should be placed in ACC:ACCLIB (104/31).
COMMENTS=Since the symbol LINCOUNT is no longer a duplicate symbol
COMMENTS=in the library nor loaded by reference to another symbol in
COMMENTS=the same module, the previous practice of removing it from
COMMENTS=the library directory when ACCLIB is generated must be
COMMENTS=abandoned.
COMMENTS=
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4092
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCMAINT)
NBR=104/15
DESCR=Change instructions referencing the data in LINCOUNT from
DESCR=halfword operations to fullword operations.
NEWUPDATE=/B C4092
NEWUPDATE=/COP LEN(72) 'AMAT0745'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'AMAT0747'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/COP LEN(72) 'AMAT0852'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'AMAT0854'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/COP LEN(72) 'AMAT0946'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'AMAT0948'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4093
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCPRJMT)
NBR=104/29
DESCR=Change instructions referencing the data in LINCOUNT from
DESCR=halfword operations to fullword operations.
NEWUPDATE=/B C4093
NEWUPDATE=/COP LEN(72) 'APMT0417'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'APMT0419'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/COP LEN(72) 'APMT0492'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'APMT0494'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4094
DATE=May 16, 1978
PERSON=Engle
NAME=ACCOUNTING (ACONSIST)
NBR=104/40
DESCR=Change instructions referencing the data in LINCOUNT from
DESCR=halfword operations to fullword operations.
NEWUPDATE=/B C4094
NEWUPDATE=/COP LEN(72) 'ACNS0013'
NEWUPDATE=/E 'LH'='L '
NEWUPDATE=/COP LEN(72) 'ACNS0015'
NEWUPDATE=/E 'STH'='ST '
NEWUPDATE=/EN
COMMENTS=Changes 4087, 4088, and 4090 through 4094 should be
COMMENTS=implemented simultaneously.
#4095
DATE=May 25, 1978
PERSON=Engle
NAME=SORT (*SORT)
NBR=303/1
BASE=D4.0 and D4.1
DESCR=An addressing exception occurs at ISPAC14(10), IMOD2, or
DESCR=possibly other locations with certain rare, and difficult to
DESCR=describe, combinations of maximum record length, maximum block
DESCR=length, record format, and estimated number of records.
NEWUPDATE=/B C4095
NEWUPDATE=/COP 'ISPAC8'
NEWUPDATE=/D LEN(9) 'LA    R0,0(R8,R3)' TAB(34) '+BUFFER REQ'
NEWUPDATE=         LR    R0,R3              R0 <- L(RSA+TREE+4)
NEWUPDATE=         AR    R0,R8              L(BUFFER REQ+RSA+TREE+4)
NEWUPDATE=/EN
COMMENTS=Two manifestations of the error which this corrects can be
COMMENTS=produced by:
COMMENTS=
COMMENTS=     $RUN *SORT PAR=I=,,360 R=91000
COMMENTS=
COMMENTS=and
COMMENTS=
COMMENTS=     $RUN *SORT PAR=I=,,360 R=91500
COMMENTS=
COMMENTS=To determine the location of the interrupt, include the DPI
COMMENTS=parameter, e.g.,
COMMENTS=
COMMENTS=     $RUN *SORT PAR=I=,,360 R=91000,DP
#4096
DATE=May 26, 1978
PERSON=Tiffany
NAME=*MACUTIL 
NBR=738/1
BASE=D4.1
DESCR=The PUNCH command is ignored by *MACUTIL if the modifiers
DESCR=are specified.  The following update fixes this bug.
NEWUPDATE=/BEGIN C4096
NEWUPDATE=/COPY 'RENULHTE'
NEWUPDATE=/COPY BEFORE BLANKS "KWSET"
NEWUPDATE=/EDIT "LCLRHT" = "PUNRHT"
NEWUPDATE=/END
COMMENTS=The KWSET macro before "PUNLHT" should specify 
COMMENTS=RHTABLE=PUNRHT instead of RHTABLE=LCLRHT. 
COMMENTS=Otherwise, KWSCAN will give a bad return code,
COMMENTS=forcing *MACUTIL to ignore PUNCH command completely.
#4097
DATE=30 May, 1978
PERSON=Lift
NAME=PLOT SYSTEM
NBR=615/7
BASE=D4.1
DESCR=PSMLEN was treating sub- and super-script characters
DESCR=x'09' and x'38' as regular characters.  This fixes
DESCR=that bug.
NEWUPDATE=/BEGIN
NEWUPDATE=/COPY "PSMLEN"
NEWUPDATE=/COPY BEFORE "PLCHAR"
NEWUPDATE=/EDIT "2F" = "38"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         BZ    PLCHARF
NEWUPDATE=         CLI   0(3),X'2F'
NEWUPDATE=/EDIT "L " = "NZ"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=/EDIT "       " = "PLCHARF"
NEWUPDATE=/COPY "PLCHAR4"
NEWUPDATE=         BZ    PLCHARD            JUST SOME CHARACTER
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=         CLI   0(3),X'09'
NEWUPDATE=         BNZ   PLCHAR1
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=/EDIT "       " = "PLCHARD"
NEWUPDATE=/END
#4098
DATE=June 1, 1978
PERSON=Engle
NAME=ACCOUNTING (DIRECTRY)
NBR=104/44
DESCR=If DIRCLOSE is called before the directory is opened, an error
DESCR=in unlocking the file is mistakenly detected.
NEWUPDATE=/B C4098
NEWUPDATE=/D LEN(72) 'DIR00003'
NEWUPDATE=DIR      TITLE 'DIRECTORY ASSISTANCE PROGRAMS--C. F. ENGLE--1 JUN 78'
NEWUPDATE=/COP LEN(72) 'DIR00488'
NEWUPDATE=         L     R15,FDUBPTR
NEWUPDATE=         LTR   R15,R15
NEWUPDATE=         BZ    CLSEXIT            DIRECTORY IS NOT OPEN
NEWUPDATE=/EN
COMMENTS=This error occurred when the first command given to
COMMENTS=ACCMAINT was DPN and there was no directory record, and
COMMENTS=hence no ID's, for the project.
#4099
DATE=June 28, 1978
PERSON=Tiffany
NAME=*TEXT360 (PPR1)
NBR=138/6
DESCR=Page numbers were left out in the table of contents if the 
DESCR=margin is nonzero, as specified by the last +MARGIN+ in
DESCR=the TEXT360 input.
NEWUPDATE=/BEGIN C4099
NEWUPDATE=/COPY BLANKS "LASTPAG:"
NEWUPDATE=/COPY BEFORE BLANKS "BETA"
NEWUPDATE=/EDIT "+" = "-"
NEWUPDATE=/END
COMMENTS=This sign change fixes the IBM bug that has been
COMMENTS=there for years!!
#4100
DATE=AUG 14, 1978
PERSON=OGDEN
NAME=CONSIO
NBR=634/003
DESCR=The version of CONSIO sent out with D4.1 was the same as
DESCR=sent out with D4.0, but it shouldn't have been.  The 
DESCR=following changes will bring the D4.0 or D4.1 source
DESCR=up to the present.
NEWUPDATE=/BEGIN D4.1-CONSIO
NEWUPDATE=CONSIO   TITLE 'SUBROUTINE TO DO STAND-ALONE I/O TO 1052 OR 3066'
NEWUPDATE=*
NEWUPDATE=*   REQUIRES 2=COPY:SETPARM AND 3=COPY:MISC.MACROS
NEWUPDATE=*
NEWUPDATE=*   LAST CHANGED DEC. '77 BY JCO
NEWUPDATE=*     TO USE CONSDSCT MACRO FROM COPY:MISC.MACROS
NEWUPDATE=*   AND AGAIN IN APRIL '78 BY MTA
NEWUPDATE=*     SO IT WILL WORK WHEN THERE IS NO 1052, 3215 OR 3066 CONSOLE
NEWUPDATE=*     AND TO ALLOW THE RETURN OF NULL LINES
NEWUPDATE=         SPACE 2
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=         AIF   (&S370).NO360
NEWUPDATE=         INSTSET S370=NO,M67=YES
NEWUPDATE=.NO360   ANOP
NEWUPDATE=         SPACE 3
NEWUPDATE=/COPY COUNT=100
NEWUPDATE=         NI    CONSFLG,ALL-CONSLINT-CONSNOSQ  RESET LOST INT FLAG
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=15
NEWUPDATE=         TM    CONSFLG,CONSBKUP       HAVE WE BEEN USING 1052
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=2
NEWUPDATE=         CLC   =H'-1',0(R2)       IS THERE A BACK UP CONSOLE
NEWUPDATE=         BE    *+12               NO - DON'T TRY TO USE ONE THEN
NEWUPDATE=/COPY COUNT=2
NEWUPDATE=         OI    CONSFLG,CONSCALL         SIGNAL FOR OPERATOR JOB
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=31
NEWUPDATE=         CH    R1,=H'-1'          IS THERE A BACK UP CONSOLE?
NEWUPDATE=         BE    NOBAKUP            NOPE
NEWUPDATE=/COPY COUNT=3
NEWUPDATE=         LH    R1,CONSPATH            DEVICE ADDRESS
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=28
NEWUPDATE=CONSEXIT TM    CONSFLG,CONSLINT        ANY LOST INTERRUPTS?
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=24
NEWUPDATE=         LH    R1,CONSPATH            DEVICE ADDRESS
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=12
NEWUPDATE=         L     R1,CSW             CHECK FOR A NULL LINE
NEWUPDATE=         LA    R1,0(0,R1)         ADDR OF LAST CCW + 8
NEWUPDATE=         LA    R2,CONSRCCW+8      POINT TO SECOND CCW
NEWUPDATE=         CR    R1,R2              DID WE GET TO IT
NEWUPDATE=         BH    *+8                YES
NEWUPDATE=         LH    R0,6(0,R3)         NO - SET RESID CNT TO INIT CNT
NEWUPDATE=/COPY COUNT=33
NEWUPDATE=USE1052  OI    CONSFLG,CONSBKUP       TEMPORARILY USING OLD STUFF
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=56
NEWUPDATE=ATTNWAIT OI    CONSFLG,CONSNOSQ        DON'T Q INTS FOR THIS DEV
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=11
NEWUPDATE=         CH    R1,CONSPATH            MIGHT WE HAVE TO HDV
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=32
NEWUPDATE=CONSGO   OI    CONSFLG,CONSNOSQ        DON'T QUEUE STATUS FOR THIS DEV
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=33
NEWUPDATE=RING     TM    CONSFLG,CONSBKUP       ARE WE USING THE 3270?
NEWUPDATE=         BNZ   RING2              NO, FORCE OUR WAY THROUGH
NEWUPDATE=         CH    R1,CONSPATH            IS IT THE 1052 CAUSING TROUBLE?
NEWUPDATE=/SKIP COUNT=3
NEWUPDATE=/COPY COUNT=25
NEWUPDATE=QUECHK   TM    CONSFLG,CONSNOSQ        Q STATUS FOR ALL DEV?
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=10
NEWUPDATE=         OI    CONSFLG,CONSLINT        REMEMBER
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=32
NEWUPDATE=EXTINT   TM    CONSFLG,CONSBKUP       ALREADY USING BACKUP?
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=/COPY COUNT=8
NEWUPDATE=CONSCOMM DS    0F
NEWUPDATE=.NOOJ2   ANOP
NEWUPDATE=         CONSDSCT  TYPE=CSECT
NEWUPDATE=*         SPACE
NEWUPDATE=/SKIP COUNT=17
NEWUPDATE=/COPY COUNT=60
NEWUPDATE=/END
COMMENTS=The above update lines produce three changes:
COMMENTS=1) Allow null lines to be returned.
COMMENTS=2) Allow CONSIO to work even where where isn't a
COMMENTS=   a "backup" console.
COMMENTS=3) Move the DSECT CONSDSCT into the macro library
COMMENTS=   COPY:MISC.MACROS, changing a few symbol names
COMMENTS=   along the way.
#4101
DATE=Aug 22, 1978
PERSON=MTA
NAME=ASMH Macro Update
NBR=737/20
DESCR=Several mistakes in the update for the ASMH macro library resulted
DESCR=from trying to simultaneously update both the macro library and its
DESCR=update. The fixes are as follows
BASE=Dist 4.1
EDIT=MOVE 103.3 103.6 112
EDIT=MOVE 1 TO 1
EDIT=INSERT 1 '/OPTIONS CHANGE_CODE=(73-80,REPLACE)'
EDIT=CHANGE 4035 'SYSCCID'SYSLINE'
EDIT=INSERT 2011.7 '/SKIP C=1'
#4102
DATE=August 31, 1978
PERSON=Engle
NAME=*INDEX
NBR=580/1
DESCR=If a location attribute (page number) contains a number which
DESCR=is followed by a period, and the period is not followed by a
DESCR=numeric digit, an infinite loop results.  For example, any of
DESCR=the following will produce a loop:
DESCR=     24. Term
DESCR=     24.X Term
DESCR=     24..8 Term
BASE=D4.1
NEWUPDATE=/B C4102
NEWUPDATE=/COP LEN(72) 'INDX0322'
NEWUPDATE=                  ELSE DO;
NEWUPDATE=                     FNLPG=FNLPG||'.';
NEWUPDATE=                     ATTRT=ATTRT||'.';
NEWUPDATE=                     PAGEE=SUBSTR(PAGEE, 2);
NEWUPDATE=                  END;
NEWUPDATE=/EN
#4103
DATE=September 5, 1978
PERSON=Alexander
NAME=CONFIG
NBR=046/2
DESCR=When calculating the length of the preloaded part of shared VM, CONFIG
DESCR=fails to take account of the 8 bytes occupied by the ENDSEG2 CSECT. This
DESCR=means that if ENDSEG2 falls on a page boundary, it is effectively 
DESCR=discarded by CONFIG.
BASE=D4.1
NEWUPDATE=/BEGIN C4103
NEWUPDATE=/COPY '.SX10 '
NEWUPDATE=/COPY NEXT 'L '
NEWUPDATE=         LA    GR4,8(0,GR4)       PLUS 8 FOR ENDSEG2 ITSELF
NEWUPDATE=/END
#4104
DATE=September 27, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCFLATN)
NBR=104/103
DESCR=This subroutine was inadvertently left out of D4.1.  This
DESCR=updates it to the D4.1 level.
NEWUPDATE=/B
NEWUPDATE=/C Change C4104 - Change codes cannot be added to GOM programs
NEWUPDATE=/COP C=2
NEWUPDATE=/S C=3
NEWUPDATE=           P'N ACTSW, ATTNSV(17), ATTNSW, EXPTM, STAFSW
NEWUPDATE=           B'N ACTSW, ATTNSW, STAFSW
NEWUPDATE=/EN
#4105
DATE=September 27, 1978
PERSON=Engle
NAME=ACCOUNTING (ACCFLATN)
NBR=104/103
DESCR=If an attention interrupt is entered twice, the second one
DESCR=will produce a program interrupt at a location which is twice
DESCR=the address of ATTN.
NEWUPDATE=/B
NEWUPDATE=/C Change C4105 - Change codes cannot be added to GOM programs
NEWUPDATE=/D TAB(16) 'ATTNTRP'
NEWUPDATE=           ATTNTRP.(R0=ATTN, R1=.LOC. ATTNSV)
NEWUPDATE=/EN
COMMENTS=The current version of GOM produces two RLD items when a
COMMENTS=function contains a function name constant referring to the
COMMENTS=function itself.  The solution to this is to refer to the
COMMENTS=function with a function name variable having the name of
COMMENTS=the function instead of with a function name constant.
#4106
DATE=September 27, 1978
PERSON=Engle
NAME=ACCOUNTING (FILUPDAT)
NBR=104/58
BASE=D4.1
DESCR=Eliminate updating of the accounting record fields if the last
DESCR=time the cumulative sums were updated is greater than or equal
DESCR=to the time to which the file charges are being updated.
NEWUPDATE=/B C4106
NEWUPDATE=/D TAB(72) 'FLUP0002'
NEWUPDATE=               NGLE--11 JUL 78'
NEWUPDATE=/COP TAB(72) 'FLUP0184'
NEWUPDATE=         CL    5,ACCTAF
NEWUPDATE=         BNH   NEXT
NEWUPDATE=/EN
#4107
DATE=September 27, 1978
PERSON=Sherry
NAME=*SYMBOLS
NBR=0096/001
BASE=D4.1
DESCR=This fix is required because *LIBRARY was changed from a
DESCR=sequential file to a line file. Consequently, *SYMBOLS
DESCR=must now process DIR records in line files.
NEWUPDATE=/BEGIN C4107
NEWUPDATE=/COPY "SCANDIR "
NEWUPDATE=         MVC   DIRTYPEF,LBA+9     SAVE FILE TYPE FLAG
NEWUPDATE=/COPY BLANKS "CALL  FREESPAC"
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         TM    DIRTYPEF,X'01'     IS THE LIBRARY A LINE FILE?
NEWUPDATE=         BO    LINELIB            YES, DON'T POINT (IT'S IMPOLITE)
NEWUPDATE=/COPY BLANKS "B     LBREAD"
NEWUPDATE=LINELIB  L     R1,PDIRPTR         LINE NUMBER OF ENDJUNK
NEWUPDATE=         BCTR  R1,0               POINT BEFORE
NEWUPDATE=         ST    R1,LBN             THIS IS THE LINE TO READ
NEWUPDATE=         MVC   LBM,=X'10060002'   @EC,@IC,@SP,@I
NEWUPDATE=         CALL  READ,LBREADP       THIS DOES THE "POINT"
NEWUPDATE=         XC    LBM,LBM            RESET MODIFIERS
NEWUPDATE=         B     LBREAD             CONTINUE
NEWUPDATE=/COPY "LBL "
NEWUPDATE=DIRTYPEF DS    XL1
NEWUPDATE=/END
#4108
DATE=October 9, 1978
PERSON=Engle
NAME=SORT (SORT PGM, SORT PGM PH 1, SORT PGM PH 2)
NBR=303/1,24,28
BASE=D4.1 and RDIST15
DESCR=If the sequence (SE) collating type is used, if more than one
DESCR=output data set is specified in the control statement and SORT
DESCR=changes to a new output data set, and if no intermediate files
DESCR=are needed by SORT, then SORT terminates with a program
DESCR=interrupt.
NEWUPDATE=/B C4108
NEWUPDATE=/D TAB(72) 'SORT1441'
NEWUPDATE=         CLI   CURINP+1,1         REAL EOF?
NEWUPDATE=/D TAB(72) 'SORT1460'
NEWUPDATE=         MVI   CURINP+1,1         MARK REAL SEQUENCE EOF
NEWUPDATE=/D TAB(72) 'SORT1468'
NEWUPDATE=         CLI   CURINP+1,1         REAL EOF?
NEWUPDATE=/EN
COMMENTS=This condition may be produced as follows:
COMMENTS=
COMMENTS=     $RUN *SORT PAR=S=CH,A,1,7,SE I=*SOURCE* O=-1(,2),,,,-2 R=10
COMMENTS=      LINE A
COMMENTS=      LINE B
COMMENTS=      LINE C
COMMENTS=      LINE D
COMMENTS=      LINE E
COMMENTS=     $ENDFILE
#4109
DATE=October 9, 1978
PERSON=Engle
NAME=SORT (SORT PGM, SORT PGM PH 1, SORT PGM PH 2)
NBR=303/1,24,28
BASE=D4.1 and RDIST15
DESCR=If the delete (DEL) parameter and more than one output data
DESCR=set are specified in the control statement, and if SORT
DESCR=changes to a new output data set, then the first record after
DESCR=the change will be treated as not equal to the following
DESCR=record regardless of its actual relationship.
NEWUPDATE=/B C4109
NEWUPDATE=/COP TAB(72) 'SORT1596'
NEWUPDATE=         L     R1,AREC            A(NEXT OUTPUT REC) FOR DELETE OPTION
NEWUPDATE=/EN
COMMENTS=This condition may be produced as follows:
COMMENTS=
COMMENTS=     $R *SORT PAR=S=CH,A,2,4,SE I=*SOURCE* O=-1(,2),,,,-2 DEL=LAST
COMMENTS=      LINE A
COMMENTS=      LINE B
COMMENTS=      LINE C
COMMENTS=      LINE D
COMMENTS=      LINE E
COMMENTS=     $ENDFILE
COMMENTS=
COMMENTS=" LINE C" will be erroneously deleted.
#4110
DATE=October 12, 1978
PERSON=MTA
NAME=*REDUCE2
NBR=556/3
BASE=RDIST15
DESCR=One line in the RDIST15 version of REDUCE2 is longer than 72
DESCR=characters. Unfortunately it is a comment line and the semi-colon
DESCR=is lost causing the next line to be ignored.  This has disastrous
DESCR=results (e.g., i**2 is 0).
NEWUPDATE=/BEGIN C4110
NEWUPDATE=/. FIX A LINE THAT GOT TOO LONG SOMEHOW IN SUBS2F*
NEWUPDATE=/COPY 'SYMBOLIC PROCEDURE SUBS2F!* U;'
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT HOLD 'SUBSTITUTION' = 'SUBST'
NEWUPDATE=/EDIT 'OCCUR' = 'OCCURS;'
NEWUPDATE=/END
********** Sent with RD15 (10-17-78)  **********
#4111
DATE=October 27, 1978
PERSON=Tiffany
NAME=*UNLINKER
NBR=562/2
BASE=D4.0
DESCR=This fixes a program interrupt in routine BLKRTN of *UNLINKER
DESCR=when the user is trying to input an IEHMOVE data set with
DESCR=parameter LIST,DUMP.
NEWUPDATE=/BEGIN C4111
NEWUPDATE=/. Get rid of a bad branch in the BXLE instruction.
NEWUPDATE=/COPY 'XDUMP1 '
NEWUPDATE=/COPY BEFORE NEXT 'BXLE'
NEWUPDATE=/EDIT 'DUMP2 ' = 'XDUMP2'
NEWUPDATE=/END
COMMENTS= This affects also the program *IEHMOVE (component #291).
#4112
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXLNR - Fix things so MTS line numbers bigger than 999999.999
NEWUPDATE=/.          or smaller than -99999.999 print as eight hex digits
NEWUPDATE=/.          with primes on either side, like the editor does.
NEWUPDATE=/.          I don't like this fix much, but it is better than
NEWUPDATE=/.          just printing as much of the number as will fit and
NEWUPDATE=/.          we don't really want to change the format of the
NEWUPDATE=/.          output produced by the $LIST command.
NEWUPDATE=/BEGIN FIXLNR
NEWUPDATE=/COPY 'WHAF '
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT 'PUTDEC' = 'PUTLNR'
NEWUPDATE=/COPY 'AFREDINC '
NEWUPDATE=/COPY NEXT 'B' NEXT 'CONFIRM'
NEWUPDATE=         B     PUTLNR 
NEWUPDATE=/COPY 'POUT '
NEWUPDATE=/COPY NEXT 'EJECT'
NEWUPDATE=*              PUTLNR  --  SUBROUTINE TO PUT OUT DECIMAL LINE
NEWUPDATE=*                          NUMBER IN LINE IMAGE READY TO PRINT.
NEWUPDATE=*                          IF THE NUMBER IS TOO BIG TO FIT IN
NEWUPDATE=*                          10 COLUMNS THEN IT IS PRINTED IN HEX.
NEWUPDATE=*
NEWUPDATE=*                          ENTRY - SDC CONTAINS THE FW VALUE 
NEWUPDATE=*                                  SCC CONTAINS LOCN OF WHERE
NEWUPDATE=*                                  THE 12 CHAR. RESULT IS TO GO
NEWUPDATE=* 
NEWUPDATE=*                          RESULT HAS THE FORM BDDDDDD.DDDB IF
NEWUPDATE=*                          THE VALUE IS BIGGER THAN 999999.999 OR
NEWUPDATE=*                          LESS THAN -99999.999, OTHERWISE
NEWUPDATE=*                          IT HAS THE FORM B'HHHHHHHH'B
NEWUPDATE=*
NEWUPDATE=*             CLOBBERS GR1
NEWUPDATE=         SPACE 3
NEWUPDATE=PUTLNR   C     SCD,=F'999999999'   TOO BIG?
NEWUPDATE=         BH    PUTBIG
NEWUPDATE=         C     SCD,=F'-99999999'   TOO SMALL?
NEWUPDATE=         BNL   PUTDEC
NEWUPDATE=*  TOO BIG OR TOO SMALL SO PUT IT OUT IN HEX
NEWUPDATE=PUTBIG   LA    SCC,2(,SCC)         WHERE TO PUT HEX. NBR.
NEWUPDATE=         LR    GR1,GR14            SAVE THIS
NEWUPDATE=         BAL   GR14,PUTHEX
NEWUPDATE=         S     SCC,=F'2'           BACK THE WAY IT WAS
NEWUPDATE=         MVC   0(2,SCC),=C' '''
NEWUPDATE=         MVC   10(2,SCC),=C''' '
NEWUPDATE=         LR    GR14,GR1            RESORE THIS
NEWUPDATE=         BR    GR14                RETURN
NEWUPDATE=         EJECT 
NEWUPDATE=/END FIXLNR 
#4113
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS 
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXDEC - Fit PUTDEC so that attempts to convert number bigger
NEWUPDATE=/.          than 999999.999 or smaller than -99999.999 cause a
NEWUPDATE=/.          string of asterisks to be output instead
NEWUPDATE=/BEGIN FIXDEC
NEWUPDATE=/COPY BEFORE 'PUTDEC '
NEWUPDATE=PUTDEC   C     SCD,=F'999999999'   TOO BIG?
NEWUPDATE=         BH    PUTSTARS
NEWUPDATE=         C     SCD,=F'-99999999'   TOO SMALL?
NEWUPDATE=         BL    PUTSTARS
NEWUPDATE=/EDIT 'PUTDEC' = '      '
NEWUPDATE=/COPY BEFORE '* '
NEWUPDATE=         SPACE 
NEWUPDATE=PUTSTARS MVC   0(12,SCC),=C' ********** '  OH WELL
NEWUPDATE=         BR    GR14
NEWUPDATE=/END FIXDEC 
#4114
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. TRIMNOW  -  In theory it is on longer necessary to write
NEWUPDATE=/.             @-TRIM @PEEL from OUT.  This change tests that
NEWUPDATE=/.             theory.  It was necessary to WRITE @TRIM @PEEL
NEWUPDATE=/.             before to keep FAKELIST from being reused, but
NEWUPDATE=/.             now that DSRI doesn't use FAKELIST anymore ....
NEWUPDATE=/BEGIN TRIMNOW
NEWUPDATE=/COPY 'OUT '
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SR    SCC,SCC             START WITH MODS ALL DEFAULT
NEWUPDATE=/COPY 'OUTMATN '
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SR    SCC,SCC             MODS ARE ZERO TO START
NEWUPDATE=/COPY 'OUTM '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT '48' = '00'
NEWUPDATE=/COPY 'OUTBNATN '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT '48' = '00'
NEWUPDATE=/COPY 'OUTB '
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SR    SCC,SCC             ZERO MODS
NEWUPDATE=/COPY 'OUTMC '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT '68' = '20' 
NEWUPDATE=/END TRIMNOW 
#4115
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS
NBR=42/1
DESCR=This eliminates the message, "THERE IS NO ACTIVE FILE TO PUT
DESCR=THAT IN" if the hapless user types a line number on the front
DESCR=of his input line.
NEWUPDATE=/. =================================================================
NEWUPDATE=/. KILLAFD  - Push the use of *AFD* in to the back ground a 
NEWUPDATE=/.            little more and someday it may die a natural death.
NEWUPDATE=/BEGIN KILLAFD
NEWUPDATE=/COPY BEFORE 'NWHAF2 '
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=2
NEWUPDATE=        B      INLOOP 
NEWUPDATE=/SKIP C=2
NEWUPDATE=/COPY 'INC89 '
NEWUPDATE=/COPY C=5
NEWUPDATE=         BZ    INC8                IF NOT THEN DON'T PEEL
NEWUPDATE=/SKIP BEFORE 'INC88 '
NEWUPDATE=/EDIT 'INC88' = '     ' 
NEWUPDATE=/END KILLAFD 
#4116
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. LFRRAX - KILL OFF THE SET LFR OPTION
NEWUPDATE=/BEGIN LFRAX
NEWUPDATE=/COPY 'INLP45 '
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=8
NEWUPDATE=/END LFRAX
#4117
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. ================================================================
NEWUPDATE=/. FIXHADDD - GET ZHADDDA TO USE THE STACK
NEWUPDATE=/BEGIN FIXHADDD
NEWUPDATE=/COPY 'MTS '
NEWUPDATE=/COPY BEFORE NEXT 'ENTRY' NEXT 'ATTNNGCK,ZHADDDA,CHKSPEL'
NEWUPDATE=/EDIT ',ZHADDDA' = ''
NEWUPDATE=/COPY 'OUTMA '
NEWUPDATE=/SKIP C=1
NEWUPDATE=               RSECT(NULLRCT),LINKAGE-TYPE(MTS) 
NEWUPDATE=/COPY 'HIABYMHA '
NEWUPDATE=/COPY C=1
NEWUPDATE=ZHADDDA  ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,0)) 
NEWUPDATE=CFDUBA   ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,1)),       @
NEWUPDATE=               RSECT(NULLRCT)                   ***ADAPTOR***
NEWUPDATE=/COPY 'ZTRCHL '
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=3
NEWUPDATE=         RICALL ZHADDDA(A(1),(SCD)) 
NEWUPDATE=/COPY 'HIABYMHA '
NEWUPDATE=/COPY C=2
NEWUPDATE=         SPACE 5
NEWUPDATE=CFDUBA   RAENTER  ,               CFDUB ADAPTOR
NEWUPDATE=         BAL  GR14,CFDUB
NEWUPDATE=         REXIT VALUE()            FDUB IN GR0 ALREADY
NEWUPDATE=/COPY 'OPERAN3 '
NEWUPDATE=/COPY '* '
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=2
NEWUPDATE=*          GR1 = FDUB TO BE HELD
NEWUPDATE=/SKIP C=5
NEWUPDATE=         SPACE 2
NEWUPDATE=ZHARCT   RSECT
NEWUPDATE=ZHAMSG   DS    CL19                FOR "*...* NNNNNN RELEASED" MSG
NEWUPDATE=         REND
NEWUPDATE=         SPACE 3
NEWUPDATE=ZHADDDA  RENTER ,                  ZILCH TO HOLD *...*
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCD,GR1
NEWUPDATE=/COPY NEXT 'LPR' NEXT 'GR0,SCD'
NEWUPDATE=/SKIP  C=3
NEWUPDATE=         RCALL CFDUBA(,A(5),(SCD))  COPY FDUB ONTO CHAIN 5 
NEWUPDATE=/COPY C=6
NEWUPDATE=/EDIT 'SCSSVA' = 'ZHAMSG' 
NEWUPDATE=/EDIT 'SCSSVA' = 'ZHAMSG'
NEWUPDATE=/EDIT 'SCSSVA' = 'ZHAMSG'
NEWUPDATE=/SKIP C=6
NEWUPDATE=         RCALL OUTMA(A(19),A(ZHAMSG))
NEWUPDATE=         DROP  SCC,SCD 
NEWUPDATE=ZHADRET  REXIT 
NEWUPDATE=/END FIXHADDD
#4118
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
DESCR=This implements the suggestion by UQV to make SIGMCD macro
DESCR=expand its buffer size dependent on RATELEN.
NEWUPDATE=/. =================================================================
NEWUPDATE=/. SIGMCD - If that macro is going to reference RATELEN then
NEWUPDATE=/.          this better become part of "THEDSECT"
NEWUPDATE=/BEGIN SIGMCD
NEWUPDATE=/COPY 'FTV '
NEWUPDATE=/COPY BEFORE NEXT 'COPY' NEXT 'COPY:RATEVEC'
NEWUPDATE=/SKIP C=2
NEWUPDATE=/END SIGMCD
#4119
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
DESCR=This is a "temporary" UM change to set a mousetrap for some
DESCR=dumps which have shown this up recently.
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FREEDSCT - DON'T LET THE MTS DSECT GET AWAY
NEWUPDATE=/BEGIN FREEDSCT
NEWUPDATE=/COPY 'HIABYMH '
NEWUPDATE=         LA    GR2,0(GR1)          DON'T GIVE AWAY THE MTS DSECT!
NEWUPDATE=         CR    GR2,GR4
NEWUPDATE=         BL    HIABWIOK
NEWUPDATE=         LA    GR0,LASTDSCT-DSCT(,GR4)
NEWUPDATE=         CR    GR2,GR0
NEWUPDATE=         BNL   HIABWIOK
NEWUPDATE=         BAL   GR2,GMABPDIE        OOPS
NEWUPDATE=HIABWIOK DS    0H                  HERE IS A BUFFER WHICH IS OK TO FREE
NEWUPDATE=/END FREEDSCT 
#4120
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. ARLCHK - Accounting record length check to prevent unexpectedly
NEWUPDATE=/.          long accounting records from clobbering the DSECT, or
NEWUPDATE=/.          prevent long records from being written out.
NEWUPDATE=/BEGIN ARLCHK
NEWUPDATE=/COPY 'GETACR4 '
NEWUPDATE=/COPY C=6
NEWUPDATE=         CH    GR1,=Y(LACCR-11)   TOO LONG?
NEWUPDATE=         BH    GARERR             YES - ERROR
NEWUPDATE=/COPY BEFORE 'GETACR7 '
NEWUPDATE=GETACR7  CH    GR1,=Y(LACCR)      TOO LONG?
NEWUPDATE=         BH    GARERR             YES - ERROR
NEWUPDATE=/EDIT 'GETACR7' = '       ' 
NEWUPDATE=/COPY 'RWFXIT2 '
NEWUPDATE=/COPY C=5
NEWUPDATE=         SPACE
NEWUPDATE=GARERR   LA    GR0,LGAREMSG       WARN OPERATOR
NEWUPDATE=         LA    GR1,GAREMSG
NEWUPDATE=         SVC   WRITE
NEWUPDATE=         B     OOPS               GO SNARK
NEWUPDATE=         SPACE
NEWUPDATE=GAREMSG  DC    C'ACCOUNTING RECORD TOO LONG IN GETACCR'
NEWUPDATE=LGAREMSG EQU   *-GAREMSG
NEWUPDATE=/COPY 'PUTACRL '
NEWUPDATE=/COPY C=2
NEWUPDATE=         BPI   OPND,PARERR        MISSING OR CLOBERED TERMINATOR
NEWUPDATE=/COPY C=4
NEWUPDATE=         CH    SCB,=Y(LACCR)      TOO BIG?
NEWUPDATE=         BH    PARERR             OH WELL
NEWUPDATE=/COPY C=2
NEWUPDATE=         SPACE
NEWUPDATE=PARERR   LA    GR0,LPAREMSG       WARN OPERATOR
NEWUPDATE=         LA    GR1,PAREMSG
NEWUPDATE=         SVC   WRITE
NEWUPDATE=         B     OOPS               GO SNARK
NEWUPDATE=         SPACE
NEWUPDATE=PAREMSG  DC    C'ACCOUNTING RECORD TOO LONG IN PUTACCR'
NEWUPDATE=LPAREMSG EQU   *-PAREMSG
NEWUPDATE=/END ARLCHK
#4121
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  REPLINN -- Replace LINNBRN subroutine with NEWMTS routine, 
NEWUPDATE=/.             LINENBR, which always returns.
NEWUPDATE=/BEGIN REPLINN
NEWUPDATE=/COPY NEXT "ENTRY" NEXT "WTPLG"
NEWUPDATE=         ENTRY MINLIN,MAXLIN      MIN/MAX INTERNAL FILE LINE NUMBERS
NEWUPDATE=/COPY C=1
NEWUPDATE=*        NEWMTS ROUTINE DECLARATIONS
NEWUPDATE=         SPACE
NEWUPDATE=/COPY C=1
NEWUPDATE=LINENBR  ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,3))
NEWUPDATE=         SPACE 2
NEWUPDATE=/COPY "CFDUBA "
NEWUPDATE=/COPY C=1
NEWUPDATE=GIVEBACA ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(1,0)),       *
NEWUPDATE=               RSECT(NULLRCT)                   ***ADAPTOR***
NEWUPDATE=PABOSFTA ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,2)),       *
NEWUPDATE=               RSECT(NULLRCT)                   ***ADAPTOR***
NEWUPDATE=/COPY "INLOOP "
NEWUPDATE=/DELETE NEXT "B" NEXT "LINNBR"
NEWUPDATE=         BAL   GR2,OOPS ***A DISABLING BLOW TO LINNBR CALLS***
NEWUPDATE=/DELETE NEXT "B" NEXT "LINNBRN"
NEWUPDATE=         BAL   GR2,OOPS ***A DISABLING BLOW TO LINNBRN CALLS***
NEWUPDATE=/DELETE "LINNBRN "
NEWUPDATE=/SKIP NEXT "EJECT"
NEWUPDATE=LINNBR   STM   GR1,GR2,LNRSA      SAVE REGS HERE FOR THE NONCE
NEWUPDATE=         LA    GR1,0(,SCC)        COPY OVER POINTER
NEWUPDATE=         LR    SCC,GR14           SAVE RETURN
NEWUPDATE=         LR    GR2,SCD            COPY FDUB
NEWUPDATE=         TM    SWS10,GETLNRSW
NEWUPDATE=         BO    *+8                -> SEZ FDUB IS IN SCD
NEWUPDATE=         L     GR2,AFD               OTHERWISE, USE AFD
NEWUPDATE=         OI    SWS8,NONUM         NO NUMBER
NEWUPDATE=         RICALL LINENBR(A(4095),,)     CALL THE GOOD GUYS
NEWUPDATE=         LR    GR0,GR2            COPY LINE NUMBER RETURNED
NEWUPDATE=         LR    GR14,SCC           RE-PLANT RETURN POINT
NEWUPDATE=         LR    SCC,GR1                     AND SCAN POINTER
NEWUPDATE=         B     *+4(GR15)          TEST RC
NEWUPDATE=         B     *+12               -> LOOKS GOOD
NEWUPDATE=         B     LINNRC0            -> NOTHING THERE, RC=0 VALUE=0
NEWUPDATE=         B     LINNMSG            -> DID SOMETHING BAD
NEWUPDATE=* 
NEWUPDATE=         NI    SWS8,255-NONUM     GOT A NUMBER
NEWUPDATE=         CLC   LNS,0(SCC)         TERMINATED BY LNS?
NEWUPDATE=         BNE   LINNRC0            -> NO
NEWUPDATE=         LA    SCC,1(,SCC)        EAT IT UP
NEWUPDATE=         SPACE
NEWUPDATE=LINNRC0  XR    GR15,GR15          GIVE RC=0
NEWUPDATE=LINNRET  LM    GR1,GR2,LNRSA      LOAD UP FOR BLAST OFF
NEWUPDATE=         BR    GR14
NEWUPDATE=         SPACE
NEWUPDATE=LINNRC4  LA    GR15,4             GIVE RC=4
NEWUPDATE=         B     LINNRET
NEWUPDATE=         SPACE
NEWUPDATE=LINNMSG  BCT   GR0,LINNMSG2       -> MUST HAVE BEEN CODE 2
NEWUPDATE=LINNMSG1 FMSG  116,NXTSEG         TOO MANY DIGITS TO LEFT OF DEC.
NEWUPDATE=LINNMSG2 FMSG  115,NXTSEG         TOO MANY DIGITS TO RIGHT OF DEC.
NEWUPDATE=         EJECT
NEWUPDATE=/COPY "FMSGGAL "
NEWUPDATE=/SKIP C=2
NEWUPDATE=         RICALL LINENBR(A(33*4-2),A(SCSSVA+2),(SCA))
NEWUPDATE=         LTR    GR15,GR15
NEWUPDATE=         BNZ    FMSGOUCH          -> SOMEBODY BLEW SOMETHING
NEWUPDATE=/EDIT F=3 "0" = "GR2"
NEWUPDATE=/DELETE "LNRMF "
NEWUPDATE=/COPY "CFDUBA "
NEWUPDATE=/COPY NEXT "REXIT"
NEWUPDATE=         SPACE 5
NEWUPDATE=GIVEBACA RAENTER ,                GIVEBACK ADAPTOR
NEWUPDATE=         GIVEBACK ,               MACRO DOES DIRTY WORK
NEWUPDATE=         REXIT  ,
NEWUPDATE=         SPACE 5
NEWUPDATE=PABOSFTA RAENTER ,                PABOSFTC ADAPTOR
NEWUPDATE=         BAL   GR14,PABOSFTC
NEWUPDATE=         REXIT VALUE(,)           VALUES SET UP ALREADY
NEWUPDATE=/COPY "DSRDISPV "
NEWUPDATE=/COPY BEFORE "DTBLOFFS "
NEWUPDATE=         DC    V(LINENBRE)        DSR ENTRY TO LINENBR
NEWUPDATE=/END REPLINN
#4122
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  NEWPW  --  Implement new password setting changes.  Here, only
NEWUPDATE=/.             thing that is done is to set password changed bit 
NEWUPDATE=/.             in accounting record when record is written out.
NEWUPDATE=/BEGIN NEWPW
NEWUPDATE=/COPY "TSA "
NEWUPDATE=/DELETE NEXT "BH" NEXT "*+10"
NEWUPDATE=         BH    *+14
NEWUPDATE=         NI    ACCSWS2,255-ACCPWCC PW NO LONGER SET BY COMP. CNTR.
NEWUPDATE=/END NEWPW
#4123
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  FMSGCMSG  --  Define NEWMTS type routines FMSG and CMSG which
NEWUPDATE=/.                called when FMSG and CMSG macros are expanded in
NEWUPDATE=/.                a NEWMTS type routine.
NEWUPDATE=/BEGIN FMSGCMSG
NEWUPDATE=/COPY "DEQIT "
NEWUPDATE=FMSGSUB  ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,0)),       *
NEWUPDATE=               RSECT(NULLRCT)
NEWUPDATE=CMSGSUB  ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,0)),       *
NEWUPDATE=               RSECT(NULLRCT)
NEWUPDATE=/DELETE NEXT "EJECT"
NEWUPDATE=/COPY BEFORE "*" NEXT "CHKSPEL"
NEWUPDATE=*        FMSGSUB -- FMSG CALLER INVOKED BY USAGE OF FMSG MACRO IN
NEWUPDATE=*                   NEWMTS ENVIRONMENT.
NEWUPDATE=*
NEWUPDATE=*          NEWMTS R(2,0) CALLING SEQUENCE
NEWUPDATE=*            GR0 - OPTIONS BITS: 
NEWUPDATE=*                    BIT 31 1 - TRANSFER TO INLOOP WHEN DONE
NEWUPDATE=*                           0 - RETURN WHEN DONE
NEWUPDATE=*                    BIT 30 1 - WRITE ON SINK
NEWUPDATE=*                           0 - NO WRITE ON SINK
NEWUPDATE=*                    BIT 29 1 - WRITE ON MSINK
NEWUPDATE=*                           0 - NO WRITE ON MSINK
NEWUPDATE=*            GR1 - ERROR MESSAGE NUMBER
NEWUPDATE=*            RC=0 ALWAYS
NEWUPDATE=         SPACE 2
NEWUPDATE=FMSGSUB  RAENTER ,                ADAPTOR ROUTINE FOR NOW
NEWUPDATE=         LA    2,OUTB             ASSUME BOTH SINK/MSINK
NEWUPDATE=         TM    NULR0+3,X'06'
NEWUPDATE=         BO    FMSGCALL           -> RIGHT
NEWUPDATE=         LA    2,OUTM             ASSUME MSINK ONLY
NEWUPDATE=         TM    NULR0+3,X'04'
NEWUPDATE=         BO    FMSGCALL           -> RIGHT
NEWUPDATE=         LA    2,OUT              MUST BE JUST SINK
NEWUPDATE=FMSGCALL LA    1,NULR1+2          POINT AT MESSAGE NUMBER
NEWUPDATE=         BAL   0,FMSG             DO DIRTY WORK
NEWUPDATE=         TM    NULR0+3,X'01'
NEWUPDATE=         BO    INLOOP             -> SIDEWAYS BRANCH REQUESTED
NEWUPDATE=         REXIT ,                  RETURN PROPERLY
NEWUPDATE=         SPACE 5
NEWUPDATE=*        CMSGSUB -- CMSG CALLER INVOKED BY USAGE OF CMSG MACRO IN
NEWUPDATE=*                   NEWMTS ENVIRONMENT.
NEWUPDATE=*
NEWUPDATE=*          NEWMTS R(3,0) CALLING SEQUENCE
NEWUPDATE=*            GR0 - OPTIONS BITS: 
NEWUPDATE=*                    BIT 31 1 - TRANSFER TO INLOOP WHEN DONE
NEWUPDATE=*                           0 - RETURN WHEN DONE
NEWUPDATE=*                    BIT 30 1 - WRITE ON SINK
NEWUPDATE=*                           0 - NO WRITE ON SINK
NEWUPDATE=*                    BIT 29 1 - WRITE ON MSINK
NEWUPDATE=*                           0 - NO WRITE ON MSINK
NEWUPDATE=*            GR1 - ERROR MESSAGE LENGTH
NEWUPDATE=*            GR2 - ERROR MESSAGE TEXT POINTER
NEWUPDATE=*            RC=0 ALWAYS
NEWUPDATE=         SPACE 2
NEWUPDATE=CMSGSUB  RAENTER ,                ADAPTOR ROUTINE FOR NOW
NEWUPDATE=         LR    0,GR1              COPY LENGTH
NEWUPDATE=         LR    1,GR2              COPY TEXT ADDRESS
NEWUPDATE=         LA    2,OUTB             ASSUME OUT ON BOTH
NEWUPDATE=         TM    NULR0+3,X'06'
NEWUPDATE=         BO    CMSGCALL           -> RIGHT
NEWUPDATE=         LA    2,OUTM             ASSUME OUT ON JUST MSINK
NEWUPDATE=         TM    NULR0+3,X'04'
NEWUPDATE=         BO    CMSGCALL           -> RIGHT
NEWUPDATE=         LA    2,OUT              JUST OUT ON SINK
NEWUPDATE=CMSGCALL BALR  2,2                CALL ROUTINE
NEWUPDATE=         TM    NULR0+3,X'01'
NEWUPDATE=         BO    INLOOP             -> REQUESTED SIDEWAYS BRANCH
NEWUPDATE=         REXIT ,                  THAT'S ALL
NEWUPDATE=         EJECT
NEWUPDATE=/END FMSGCMSG
#4124
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  GIGO  --  Add GETOUTTC and change GETINTC to simplify 
NEWUPDATE=/.            temporary dynamic loading of components.
NEWUPDATE=/BEGIN GIGO
NEWUPDATE=/DELETE "INLP44 "
NEWUPDATE=/SKIP "INLP45 "
NEWUPDATE=         BAL   GR14,GETOUTTC      GET RID OF LFTC COMPONENTS
NEWUPDATE=/COPY NEXT "B " NEXT "PUTLNR"
NEWUPDATE=         B     GETOUTTC
NEWUPDATE=/COPY BEFORE "GETINTC "
NEWUPDATE=GETINTC  LR    GR1,GR0            GETINTC CONDITIONAL -- DOES NOT
NEWUPDATE=         BCTR  GR1,0              INCREMENT USECOUNT IF ALREADY 
NEWUPDATE=         MH    GR1,=Y(LDTSIZE)    LOADED
NEWUPDATE=         A     GR1,LDTLOCN
NEWUPDATE=         L     GR15,LDTLOC-LOADTDCT(,GR1)
NEWUPDATE=         LTR   GR15,GR15
NEWUPDATE=         BNZR  GR14               -> ALREADY LOADED, RETURN
NEWUPDATE=/EDIT "GETINTC" = "       "
NEWUPDATE=/COPY BEFORE "GETOUT "
NEWUPDATE=GETOUTTC LH    GR1,LFTCC          GETOUT FOR LFTC COMPONENTS
NEWUPDATE=         SH    GR1,=H'1'          ANY LEFT?
NEWUPDATE=         BMR   GR14               -> NO, RETURN
NEWUPDATE=         STH   GR1,LFTCC          NEW COUNT
NEWUPDATE=         XR    GR0,GR0
NEWUPDATE=         IC    GR0,LFTC(GR1)      GET GETIN INDEX
NEWUPDATE=         LR    GR15,GR14          SAVE RETURN
NEWUPDATE=         BAL   GR14,GETOUT        RID OURSELVES OF IT
NEWUPDATE=         LR    GR14,GR15          RESET RETURN
NEWUPDATE=         B     GETOUTTC           -> PERFORM TILL ALL UNLOADED
NEWUPDATE=         SPACE 2
NEWUPDATE=/COPY BEFORE NEXT "LA" NEXT "GR1,18*4"
NEWUPDATE=/EDIT F=3 "18*4" = "18*4+4"
NEWUPDATE=/COPY C=2
NEWUPDATE=         ST    GR15,18*4(,GR13)   SAVE GR15
NEWUPDATE=/COPY NEXT "CALL" NEXT "STORSCAN"
NEWUPDATE=         L     GR15,18*4(,GR13)   RESTORE GR15
NEWUPDATE=/END GIGO
#4125
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  CFDUB  --  Fix problem in CFDUB which left instruction window 
NEWUPDATE=/.             during which branch to DSROFF could have caused use
NEWUPDATE=/.             counts, etc., to be left inconsistent when fdub freed.
NEWUPDATE=/.             This bug is responsible for the balance of the
NEWUPDATE=/.             LOADT usecount negative snarks.
NEWUPDATE=/BEGIN CFDUB
NEWUPDATE=/COPY "CFDUB "
NEWUPDATE=/COPY NEXT "BAL" NEXT "GR14,GMABP"
NEWUPDATE=/EDIT F=3 "4" = "FDUBAL"
NEWUPDATE=/DELETE "CFDCHAIN "
NEWUPDATE=/SKIP C=4
NEWUPDATE=CFDCHAIN DS    0H                 NOW COPY OVER ALL NON-CRITICAL FDUB  *
NEWUPDATE=                                  FIELDS, AND UPDATE CRITICAL ONES IN AN
NEWUPDATE=                                  ORDER WHICH WILL ENSURE CONSISTENCY  *
NEWUPDATE=                                  IF INTERRUPTED.
NEWUPDATE=         MVC   4+FDUBS-FDBDCT(FDUBLN-FDUBS,GR1),FDUBS-FDBDCT(SCD)
NEWUPDATE=*                                 SKIP FDUBLN
NEWUPDATE=         MVC   4+FDUBBL-FDBDCT(FDUBSBR-FDUBBL,GR1),FDUBBL-FDBDCT(SCD)
NEWUPDATE=*                                 SKIP FDUBSBR
NEWUPDATE=         MVC   4+FDUBSCR-FDBDCT(FDUBNAM-FDUBSCR,GR1),FDUBSCR-FDBDCT(SCDX
NEWUPDATE=               )
NEWUPDATE=*                                 SKIP FDUBNAM
NEWUPDATE=         MVC   4+FDUBDS-FDBDCT(FDUBCH-FDUBDS,GR1),FDUBDS-FDBDCT(SCD)
NEWUPDATE=*                                 SKIP FDUBCH
NEWUPDATE=         MVC   4+FDUBTYPE-FDBDCT(FDUBIX-FDUBTYPE,GR1),FDUBTYPE-FDBDCT(SX
NEWUPDATE=               CD)
NEWUPDATE=*                                 SKIP FDUBIX
NEWUPDATE=         MVC   4+FDUBSWS-FDBDCT(FDUBNAME-FDUBSWS,GR1),FDUBSWS-FDBDCT(SCX
NEWUPDATE=               D)
NEWUPDATE=*                                 SKIP FDUBNAME, FDUBERM
NEWUPDATE=         MVC   4+FDUBSWS2-FDBDCT(FDUBERXS-FDUBSWS2,GR1),FDUBSWS2-FDBDCTX
NEWUPDATE=               (SCD)
NEWUPDATE=*                                 SKIP FDUBERXS
NEWUPDATE=         MVC   4+FDUBSWS3-FDBDCT(FDUBL-(FDUBSWS3-FDBDCT),GR1),FDUBSWS3-X
NEWUPDATE=               FDBDCT(SCD)
NEWUPDATE=/COPY NEXT "LR" NEXT "GR1,SCA"
NEWUPDATE=         MVC   4+FDUBIX-FDBDCT(1,GR1),FDUBIX-FDBDCT(SCD)
NEWUPDATE=/COPY "CFDNOSBR "
NEWUPDATE=/EDIT F=3 "+4(1)" = "(SCD)"
NEWUPDATE=/EDIT F=3 "4(GR1)" = "FDUBS-FDBDCT(SCD)"
NEWUPDATE=/COPY NEXT "USING"
NEWUPDATE=         OI    4+FDUBS-FDBDCT(GR1),FDUBNO
NEWUPDATE=/COPY NEXT "STH"
NEWUPDATE=         LA    SCB,FCBDSCT-FCBHDR(,SCA)   BACK TO REAL FCB
NEWUPDATE=         ST    SCB,4+FDUBLN-FDBDCT(,GR1)  NOW STUFF FCB POINTER
NEWUPDATE=/EDIT F=3 "+4(GR1)" = "(SCD)"
NEWUPDATE=/COPY NEXT "STH"
NEWUPDATE=         NI    4+FDUBS-FDBDCT(GR1),255-FDUBNO
NEWUPDATE=/COPY BEFORE NEXT "XC" NEXT "0(4,GR1),0(GR1)"
NEWUPDATE=/EDIT F=3 "4" = "FDUBAL"
NEWUPDATE=/COPY "CFDWD "
NEWUPDATE=         LA    SCB,1
NEWUPDATE=/EDIT F=2 "L" = "AH"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         STH   SCB,DEVTBLU(SCA)   UPDATE USE COUNT
NEWUPDATE=         MVC   4+FDUBLN-FDBDCT(4,GR1),FDUBLN-FDBDCT(SCD)  PLANT LDN
NEWUPDATE=         OI    4+FDUBS-FDBDCT(GR1),FDUBNO
NEWUPDATE=/EDIT F=3 "+4(GR1)" = "(SCD)"
NEWUPDATE=/SKIP BEFORE NEXT "B " NEXT "CFDCPY"
NEWUPDATE=         BO    CFDCPY             -> NO, SKIP REMAINDER
NEWUPDATE=         LA    SCB,1              INCREMENT OPEN COUNT
NEWUPDATE=         AH    SCB,2+DEVTBLU(SCA)
NEWUPDATE=         STH   SCB,2+DEVTBLU(SCA)
NEWUPDATE=         NI    4+FDUBS-FDBDCT(GR1),255-FDUBNO
NEWUPDATE=/END CFDUB
#4126
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  MERITBUG  --  Fix bug in TSA which skips generation of STOP 
NEWUPDATE=/.                command to Merit batch if user didn't get signed
NEWUPDATE=/.                on.
NEWUPDATE=/BEGIN MERITBUG
NEWUPDATE=/COPY "TSANSO "
NEWUPDATE=/COPY NEXT "L" NEXT "GR15,=V(HASP3B)"
NEWUPDATE=         BALR  GR14,GR15
NEWUPDATE=/END MERITBUG
#4127
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  DSRDISPV  --  Remove vestigial entries in DSRDISPV formerly used
NEWUPDATE=/.                only by CMDSTAT when it was non-MTS component.
NEWUPDATE=/BEGIN DSRDISPV
NEWUPDATE=/COPY "DSRDISPV "
NEWUPDATE=/DELETE NEXT "DC" NEXT "F'-1'"
NEWUPDATE=/DELETE NEXT "DC" NEXT "A(CLSCURR-DSCT)"
NEWUPDATE=/END DSRDISPV
#4128
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  INCONT  --  Fix bug in IN which does not properly handle case
NEWUPDATE=/.              when null continuation line is entered.
NEWUPDATE=/BEGIN INCONT
NEWUPDATE=/COPY "IN "
NEWUPDATE=/COPY "INC9 "
NEWUPDATE=/DELETE NEXT "C" NEXT "GR0,=F'1'"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         N     GR0,=F'1'          SEE IF NOTIFICATION GIVEN
NEWUPDATE=         BNZ   INSWITCH           -> NOPE
NEWUPDATE=/COPY C=2
NEWUPDATE=/INCLUDE INCLC
NEWUPDATE=/DELETE NEXT "LTR" NEXT "SCB,SCB"
NEWUPDATE=/SKIP C=1
NEWUPDATE=/BUFFER INCLC
NEWUPDATE=/COPY C=2
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY MAXCOUNT=5 NEXT "A" NEXT "SCB,INREGL"
NEWUPDATE=         C     SCB,INREGL
NEWUPDATE=         BE    INCONT             -> NULL LINE, DONE WITH CONTINUATION
NEWUPDATE=/END INCONT
#4129
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. LSSGOOF - FIX THINGS SO THAT MTS CHECKS THE RIGHT BYTE IN THE
NEWUPDATE=/.           COMMAND TABLE ENTRY WHEN IT CHECKS TO SEE IF THE
NEWUPDATE=/.           COMMAND SHOULD BE ALLOWED DURING LSS EVEN IF IT IS
NEWUPDATE=/.           NORMALLY PROHIBITED. 
NEWUPDATE=/BEGIN LSSGOOF 
NEWUPDATE=/COPY BEFORE 'INLPCDT '
NEWUPDATE=/EDIT '10(GR15)' = 'CMDFLAGS' 
NEWUPDATE=/END LSSGOOF 
#4130
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS
NBR=42/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  NOPW  --  Implement mechanism whereby DSR may request that a 
NEWUPDATE=/.            signon not require a PW.
NEWUPDATE=/BEGIN NOPW
NEWUPDATE=/COPY NEXT "ENTRY MINLIN"
NEWUPDATE=         EXTRN WFOPER,WFDISK
NEWUPDATE=/COPY "INITNPW "
NEWUPDATE=/EDIT "        " = "INITNPW2"
NEWUPDATE=/COPY "INITOPER "
NEWUPDATE=/EDIT F=3 "INITNPW" = "INITNPW2"
NEWUPDATE=/COPY BEFORE "OPERTV "
NEWUPDATE=/EDIT "OPERANSU,SCSBF2" = "OPERANSU,WFOPER"
NEWUPDATE=/COPY BEFORE "DISKTV "
NEWUPDATE=/EDIT "SCSBF2,GVBGRF" = "WFDISK,GVBGRF"
NEWUPDATE=/COPY "INC9 "
NEWUPDATE=/DELETE NEXT "N "
NEWUPDATE=/SKIP C=1
NEWUPDATE=         STC   GR0,SCRATCH2+4     EASIER TO TEST BITS IN MEMORY
NEWUPDATE=         TM    SCRATCH2+4,X'04'
NEWUPDATE=         BZ    *+8
NEWUPDATE=         OI    SWS7,NOPWN2        DSR SAID NO PW NEEDED
NEWUPDATE=         TM    SCRATCH2+4,X'01'
NEWUPDATE=         BO    INSWITCH           -> SOURCE CHANGED
NEWUPDATE=/END NOPW
#4131
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=FSUB
NBR=635/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. GVBFUNNY - THIS FIX SHOULD HELP THOSE CASES WHERE GIVEBACK
NEWUPDATE=/.            TAKES AN UNEXPECTED SIDEWAYS EXIT AND THEN LATER
NEWUPDATE=/.            COMES BACK AND TRIES TO RERELEASE THE SPACE IT
NEWUPDATE=/.            HAS ALREADY FREED.
NEWUPDATE=/BEGIN GVBFUNNY
NEWUPDATE=/COPY 'GVBNOSUB '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GVBGRD4' = '       ' 
NEWUPDATE=/COPY C=3
NEWUPDATE=         ST    SCC,DEVTBLC(SCA) 
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GVBGRD4' = 'GVBNOSUB' 
NEWUPDATE=/END GVBFUNNY
#4132
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=FSUB
NBR=635/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  FMSGCMSG  --  Define NEWMTS type routines FMSG and CMSG for
NEWUPDATE=/.                use by FMSG and CMSG macros when being expanded
NEWUPDATE=/.                in NEWMTS type routine.
NEWUPDATE=/BEGIN FMSGCMSG
NEWUPDATE=/COPY "DEQIT "
NEWUPDATE=FMSGSUB  ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,0))
NEWUPDATE=CMSGSUB  ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,0))
NEWUPDATE=/END FMSGCMSG
#4133
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=FSUB
NBR=635/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  REPLINN  --  Replace usage of LINNBRN in the system with new
NEWUPDATE=/.               subroutine LINENBR which always returns. 
NEWUPDATE=/.               Also:  Rewrite SFFPL so is NEWMTS type routine, 
NEWUPDATE=/.                      and fix bug causing lower case modifiers
NEWUPDATE=/.                      not to be recognized;
NEWUPDATE=/.                      Rewrite GETLNR so that it is type NEWMTS
NEWUPDATE=/.                      routine and dosen't use LINNBRN;
NEWUPDATE=/.                      Make adaptor routine for HOPENIT called
NEWUPDATE=/.                      OPENIT;
NEWUPDATE=/.                      Add external entry for DSRs to use to call
NEWUPDATE=/.                      LINENBR, LINENBRE.
NEWUPDATE=/BEGIN REPLINN
NEWUPDATE=/COPY BEFORE NEXT "ENTRY" NEXT "FDGET2,"
NEWUPDATE=/EDIT F=3 "GETLNR," = ""
NEWUPDATE=/COPY BEFORE "DEQIT "
NEWUPDATE=         ENTRY LINENBRE           LINENBR FOR DSRS TO CALL
NEWUPDATE=OPENIT   ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,0)),       *
NEWUPDATE=               RSECT(NULLRCT)
NEWUPDATE=LINENBR  ROUTINE ENTRY,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,3))
NEWUPDATE=/COPY "HIABYMHA "
NEWUPDATE=PABOSFTA ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,2))
NEWUPDATE=GIVEBACA ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(1,0))
NEWUPDATE=CFDUBA   ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,1))
NEWUPDATE=         SPACE 5
NEWUPDATE=*        INTERNAL ROUTINE DECLARATIONS
NEWUPDATE=         SPACE
NEWUPDATE=SFFPL    ROUTINE INTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,2))
NEWUPDATE=GETFLLNR ROUTINE INTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,3))
NEWUPDATE=/DELETE "MFDU44A "
NEWUPDATE=/SKIP NEXT "LR" NEXT "SCA,SCC"
NEWUPDATE=MFDU44A  XR    GR0,GR0            FIGURE WHETHER TO HAVE SFFPL
NEWUPDATE=         TM    SWS3,GTFDBIT       GENERATE MESSAGES OR NOT
NEWUPDATE=         BO    *+8
NEWUPDATE=         LA    GR0,1              OK, GENERATE MESSAGES
NEWUPDATE=         RICALL SFFPL(,FDGNXCHR,(SCC)) FILE PARAMETERS AND LIMITS
NEWUPDATE=*
NEWUPDATE=         LR    GR15,SCD           IMPLANT GETFD/FDGET RETURN CODE
NEWUPDATE=*
NEWUPDATE=         LR    GR0,GR1            NOW FIND END OF FDNAME TEXT
NEWUPDATE=         XR    GR14,GR14          PARENTHESIS LEVEL COUNTER
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GR1,GR1" = "GR14,GR14"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GR1,1(,GR1" = "GR14,1(,GR14"
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GR1" = "GR14"
NEWUPDATE=/EDIT F=3 "GR1,GR1" = "GR14,GR14"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GR1,GR1" = "GR14,GR14"
NEWUPDATE=/EDIT "SCC,1(,SCC" = "GR1,1(,GR1"
NEWUPDATE=/DELETE MAXCOUNT=10 "FDGEND "
NEWUPDATE=FDGEND   ST    GR1,FDGNXCHR       SAVE POSITION FOR RAINY DAY
NEWUPDATE=         CR    GR0,GR1 
NEWUPDATE=/DELETE MAXCOUNT=20 "FDGOK "
NEWUPDATE=         DROP  SCC
NEWUPDATE=*
NEWUPDATE=         USING FDBDCT,SCD
NEWUPDATE=FDGOK    LR    SCD,SCC            NOW CONSTRUCT FDUBNAME FIELD
NEWUPDATE=         L     SCC,FDGNXCHR       BAD WEATHER ALREADY
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY "*" NEXT "SFFPL" NEXT "--"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP NEXT "USING FDBDCT,SCD"
NEWUPDATE=*          NEWMTS R(3,2) CALLING SEQUENCE:
NEWUPDATE=*             GR0 - SWITCHES:  BIT 31 = 0 NO ERROR MESSAGES
NEWUPDATE=*                                     = 1 PRINT ERROR MESSAGES
NEWUPDATE=*             GR1 - POINTER TO AREA TO SCAN FOR PARAMETERS AND
NEWUPDATE=*                   LIMITS, UPDATED TO POINT TO FIRST UNSCANNED
NEWUPDATE=*                   CHARACTER ON RETURN
NEWUPDATE=*             GR2 - FDUB
NEWUPDATE=         SPACE 2
NEWUPDATE=SFFRCT   RSECT
NEWUPDATE=SFFREG   DS    8A                 UC CONVERSION REGION AND SCRATCH
NEWUPDATE=SFFSWS   DS    X                  SWITCHES:
NEWUPDATE=SFFMSG   EQU   X'01'                1 = GENERATE ERROR MESSAGES
NEWUPDATE=SFFNOT   EQU   X'02'                1 = NEGATE SENSE OF MODIFIER
NEWUPDATE=         REND
NEWUPDATE=         SPACE 2
NEWUPDATE=SFFPL    RENTER ,                 SCAN FOR FILE PARAMETERS AND LIMITS
NEWUPDATE=         LR    SCD,GR2            COPY OVER FDUB
NEWUPDATE=         STC   GR0,SFFSWS         INITIALIZE SWITCHES
NEWUPDATE=         NI    SFFSWS,SFFMSG      JUST THIS BIT, PLEASE
NEWUPDATE=         SPACE
NEWUPDATE=         USING FDBDCT,SCD
NEWUPDATE=SFFLOOP  DS    0H                 LOOK FOR SOMETHING STARTING WITH     *
NEWUPDATE=                                  "(" OR "@"
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/EDIT F=3 "0(GR14)" = "SFFPLRET"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/SKIP C=2
NEWUPDATE=         BNE   SFFPLRET           -> TH-TH-THAT'S ALL, FOLKS
NEWUPDATE=         SPACE 2
NEWUPDATE=*        PARSE OFF A PARAMETER
NEWUPDATE=         SPACE
NEWUPDATE=/EDIT F=3 "SCC,1(0,SCC)" = "GR1,1(,GR1)"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=         LR    SCC,GR1            SAVE FIRST CHAR
NEWUPDATE=/COPY "SFFEND "
NEWUPDATE=/EDIT F=3 "SWS9" = "SFFSWS"
NEWUPDATE=/COPY C=5
NEWUPDATE=/EDIT F=3 "SWS9" = "SFFSWS"
NEWUPDATE=/COPY C=2
NEWUPDATE=         CH    1,*+10             TRUNCATE AT 32 CHARS
NEWUPDATE=         BNH   *+8
NEWUPDATE=         LA    1,31
NEWUPDATE=         EX    1,SFFMVC           MVC   SFFREG(0),0(SCC)
NEWUPDATE=/COPY BEFORE NEXT "TM" NEXT "SWS9"
NEWUPDATE=/EDIT F=3 "SWS9" = "SFFSWS"
NEWUPDATE=/DELETE NEXT "B" NEXT "SFFSFDG"
NEWUPDATE=         LR    GR1,SCC            MOVE OVER SCAN POINTER
NEWUPDATE=         B     SFFLOOP            -> LOOK FOR MORE STUFF
NEWUPDATE=/COPY BEFORE NEXT "LA" NEXT "SCC"
NEWUPDATE=/EDIT F=3 "SCC" = "GR1"
NEWUPDATE=/DELETE NEXT "TM" NEXT "SWS3"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         TM    SFFSWS,SFFMSG
NEWUPDATE=         BZ    SFFLOOP            -> DON'T GENERATE MESSAGES
NEWUPDATE=/EDIT F=3 "SFFSFDG" = "SFFLOOP"
NEWUPDATE=/COPY BEFORE "SFFCLC "
NEWUPDATE=/EDIT F=3 "0(0,SCC)" = "SFFREG(0)"
NEWUPDATE=SFFMVC   MVC   SFFREG(0),0(SCC)
NEWUPDATE=/SKIP C=4
NEWUPDATE=/SKIP C=5
NEWUPDATE=         SPACE 2
NEWUPDATE=*        PARSE OFF A LIMIT, THAT IS A LINE NUMBER RANGE
NEWUPDATE=         SPACE 1
NEWUPDATE=SFFIFL   DS    0H
NEWUPDATE=/DELETE NEXT "L" NEXT "SCA,MAXLIN"
NEWUPDATE=         L     SCA,=V(MAXLIN)
NEWUPDATE=         L     SCA,0(,SCA)
NEWUPDATE=/DELETE  NEXT "LA" NEXT "SCC,1(SCC)"
NEWUPDATE=         LA    GR1,1(,GR1)
NEWUPDATE=/SKIP C=2
NEWUPDATE=         BAL   GR2,SFGLN          GET STARTING LINE NUMBER
NEWUPDATE=/COPY C=1
NEWUPDATE=         B     *+8                -> GOT IT, IN GR0
NEWUPDATE=         B     SFFLOOP            -> THAT'S IT, NO MORE LINE NUMBERS
NEWUPDATE=/COPY BEFORE "SFFISP "
NEWUPDATE=/EDIT "SCA" = "GR2"
NEWUPDATE=/EDIT F=3 "12" = "20"
NEWUPDATE=         B     *+8                -> GOT LAST, IN GR0
NEWUPDATE=         B     SFFLOOP            -> NO MORE LINE NUMBERS
NEWUPDATE=/COPY BEFORE NEXT "BAL" NEXT "SCA"
NEWUPDATE=/EDIT "SCA" = "GR2"
NEWUPDATE=/EDIT "12" = "20"
NEWUPDATE=         B     *+8                -> GOT INCREMENT, IN GR0
NEWUPDATE=         B     SFFLOOP            -> NO MORE LINE NUMBERS
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/SKIP C=2
NEWUPDATE=         BE    SFFRBNC            -> OK, AT END, END OF LINE NUMBERS
NEWUPDATE=         OI    FDUBS,FDUBBAD      MARK BAD
NEWUPDATE=         CLI   0(GR1),C',' 
NEWUPDATE=         BNE   SFFLOOP            -> IF NOT A COMMA, ASSUME SFGLN PARKED
NEWUPDATE=                                     GR1 AT A GOOD CHAR TO RESTART
NEWUPDATE=         TM    SFFSWS,SFFMSG
NEWUPDATE=         BZ    SFFLEAT            -> NO MESSAGE
NEWUPDATE=         CMSG  'TOO MANY NUMBERS GIVEN FOR LINE NUMBER RANGE.',*
NEWUPDATE=SFFLEAT  BAL   GR2,SFFADV         LOOK FOR END OF RANGE
NEWUPDATE=         B     SFFLOOP            -> FOUND END OF FDNAME
NEWUPDATE=         CLI   0(GR1),C')'        END?
NEWUPDATE=         BE    SFFRBNC            -> YES, ADVANCE PAST 
NEWUPDATE=         LA    GR1,1(,GR1) 
NEWUPDATE=         B     SFFLEAT            -> NO, CONTINUE UNTIL SOMETHING FOUND
NEWUPDATE=/SKIP "SFGLN "
NEWUPDATE=         SPACE 2
NEWUPDATE=*        SFGLN  --  GET A LINE NUMBER.
NEWUPDATE=* 
NEWUPDATE=*           CALLED VIA BAL GR2,SFGLN WITH:
NEWUPDATE=*              GR1 - CHARACTER POINTER, ADVANCED TO FIRST UNSCANNED
NEWUPDATE=*                    CHARACTER ON RETURN.
NEWUPDATE=*              SCD - FDUB POINTER
NEWUPDATE=*
NEWUPDATE=*           RETURNS TO 0(GR2) IF NULL SPECIFICATION (DEFAULT)
NEWUPDATE=*                      4(GR2) IF NUMBER FOUND, NUMBER IN GR0
NEWUPDATE=*                      8(GR2) IF END OF LIMIT SPECIFICATION
NEWUPDATE=*
NEWUPDATE=*           CLOBBERS GR0,GR1,GR14,GR15 
NEWUPDATE=         SPACE
NEWUPDATE=SFGLN    LA    GR0,8              ASSUME END RETURN
NEWUPDATE=         CLI   0(GR1),C')'        ARE WE AT END
NEWUPDATE=         BE    SFGLN2             -> YES
NEWUPDATE=/SKIP C=1
NEWUPDATE=         XR    GR0,GR0            ASSUME NULL RETURN
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=         BE    SFGLN2             -> NULL SPECIFICATION IT IS
NEWUPDATE=/SKIP C=4
NEWUPDATE=         STM   GR1,GR2,SFFREG     SAVE POINTER, RETURN HERE A MINIT
NEWUPDATE=         RCALL LINENBR(A(255),,(SCD)),EXIT=(,SFGLNER) GET NUMBER
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/EDIT F=3 "SFDLER" = "SFGLNER"
NEWUPDATE=/EDIT "SCC,1(0,SCC)" = "GR1,1(,GR1)"
NEWUPDATE=/SKIP C=2
NEWUPDATE=SFGLNC   LR    GR0,GR2            COPY RETURNED LINE NUMBER OR ZERO
NEWUPDATE=         L     GR2,SFFREG+4       OUR RETURN POINT
NEWUPDATE=/SKIP C=1
NEWUPDATE=         L     GR15,=V(MAXLIN)
NEWUPDATE=         C     GR0,0(,GR15)       CHECK LINE NUMBER AGAINST LIMITS
NEWUPDATE=/EDIT F=3 "SFFRBAD" = "SFGLNER"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         L     GR15,=V(MINLIN)
NEWUPDATE=         C     GR0,0(,GR15)
NEWUPDATE=/EDIT F=3 "SFFRBAD" = "SFGLNER"
NEWUPDATE=/DELETE NEXT "B" NEXT "4("
NEWUPDATE=         B     4(,GR2)            RETURN A LINE NUMBER
NEWUPDATE=*
NEWUPDATE=SFGLNER  OI    FDUBS,FDUBBAD      DON'T USE FDUB
NEWUPDATE=         L     GR1,SFFREG         RESTORE POINTER TO INPUT
NEWUPDATE=SFGLNER1 BAL   GR2,SFFADV         LOOK FOR INTERESTING CHARACTER
NEWUPDATE=         B     SFFMSG1            -> OFF END OF FDNAME, GIVE MESSAGE
NEWUPDATE=         CLI   0(GR1),C'+'
NEWUPDATE=         BNE   SFFMSG2            -> OK, INTERESTING ENOUGH
NEWUPDATE=         LA    GR1,1(,GR1)
NEWUPDATE=         B     SFGLNER1           -> ASSUME + IS ARITHMETIC HERE
NEWUPDATE=SFFMSG2  L     GR2,SFFREG+4       RESTORE RETURN POINT
NEWUPDATE=         CLI   0(GR1),C','
NEWUPDATE=         BNE   *+8                -> DON'T MOVE PAST NON-COMMA
NEWUPDATE=         LA    GR1,1(,GR1)
NEWUPDATE=         TM    SFFSWS,SFFMSG
NEWUPDATE=         BZR   GR2                -> NO MESSAGE, NULL RETURN
NEWUPDATE=         CMSG  'INVALID LINE NUMBER.',0(,GR2)
NEWUPDATE=SFFMSG1  L     GR2,SFFREG+4       RESTORE RETURN
NEWUPDATE=         TM    SFFSWS,SFFMSG 
NEWUPDATE=         BZ    8(,GR2)            -> NO MESSAGE, END RETURN
NEWUPDATE=         CMSG  'INVALID LINE NUMBER OR LINE NUMBER DELIMITER.',8(,GR2)
NEWUPDATE=/SKIP "SFGLN2 "
NEWUPDATE=/SKIP C=1
NEWUPDATE=SFGLN2   LA    GR1,1(,GR1)        SKIP COMMA
NEWUPDATE=SFGLN3   ALR   GR2,GR0            ADJUST RETURN POINT
NEWUPDATE=         BR    GR2                -> RETURN
NEWUPDATE=         SPACE 2
NEWUPDATE=*        SFFADV  --  ADVANCE TO NEXT INTERESTING CHARACTER IN 
NEWUPDATE=*                    FILE LIMIT SPECIFICATION.
NEWUPDATE=*
NEWUPDATE=*           CALLED VIA BAL GR2,SFFADV WITH
NEWUPDATE=*              GR1 -- TEXT POINTER, UPDATED
NEWUPDATE=*
NEWUPDATE=*           RETURNS TO 0(GR2) IF PGNT, BLANK, OR X'FF' FOUND
NEWUPDATE=*                      4(GR2) IF ZERO LEVEL COMMA, PLUS, OR RIGHT PAREN
NEWUPDATE=*
NEWUPDATE=*           CLOBBERS GR0
NEWUPDATE=         SPACE
NEWUPDATE=SFFADV   XR    GR0,GR0            NESTING LEVEL COUNTR
NEWUPDATE=SFFADVLP CLI   0(GR1),C' '        CHECK FOR END
NEWUPDATE=         BPI   OPND,0(GR2)        -> UNLESS RUDELY INTERRUPTED
NEWUPDATE=         BER   GR2                -> FOUND END
NEWUPDATE=         CLI   0(GR1),X'FF'
NEWUPDATE=         BER   GR2                -> FOUND END
NEWUPDATE=         LTR   GR0,GR0
NEWUPDATE=         BNZ   SFFADVIP           -> SKIP + , TEST IF INSIDE (...)
NEWUPDATE=         CLI   0(GR1),C'+'
NEWUPDATE=         BE    4(,GR2)            -> GOT +
NEWUPDATE=         CLI   0(GR1),C',' 
NEWUPDATE=         BE    4(,GR2)            -> GOT ,
NEWUPDATE=SFFADVIP CLI   0(GR1),C'('
NEWUPDATE=         BNE   *+8
NEWUPDATE=         AH    GR0,=H'1'          UP ONE LEVEL
NEWUPDATE=         CLI   0(GR1),C')'
NEWUPDATE=         BNE   *+12
NEWUPDATE=         SH    GR0,=H'1'          DOWN A LEVEL
NEWUPDATE=         BM    4(,GR2)            -> THIS IS OF INTEREST AT ZERO LEVEL
NEWUPDATE=         LA    GR1,1(,GR1) 
NEWUPDATE=         B     SFFADVLP           -> NEXT CHARACTER OF INTEREST
NEWUPDATE=         SPACE 2
NEWUPDATE=SFFRBNC  LA    GR1,1(,GR1)        ADVANCE TO NEXT CHARACTER
NEWUPDATE=         B     SFFLOOP            -> AND BACK TO TOP
NEWUPDATE=         SPACE 2
NEWUPDATE=SFFPLRET RRETURN VALUE(,)         REGS SET UP FOR RETURN
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GR10," = ""
NEWUPDATE=         REND
NEWUPDATE=         EJECT
NEWUPDATE=*        LINENBR  --  PARSE A LINE NUMBER FROM AN INPUT STRING.
NEWUPDATE=*
NEWUPDATE=*          NEWMTS R(3,3) TYPE CALLING SEQUENCE
NEWUPDATE=*             GR0 - LENGTH OF INPUT STRING, UPDATED ON RETURN
NEWUPDATE=*             GR1 - INPUT STRING, UPDATED ON RETURN
NEWUPDATE=*             GR2 - FDUB (FOR EVALUATION OF *F ETC) OR ZERO,
NEWUPDATE=*                   LINE NUMBER VALUE ON RETURN
NEWUPDATE=*
NEWUPDATE=*             RC=0  LINE NUMBER FOUND, GR0 & GR1 UPDATED, GR2 IS
NEWUPDATE=*                   VALUE
NEWUPDATE=*             RC=4  LINE NUMBER NOT FOUND, GR2 IS ZERO
NEWUPDATE=*             RC=8  SYNTAX ERROR, GR0 HAS ERROR CODE AND GR1 
NEWUPDATE=*                   ERROR MESSAGE IN FORM HALFWORD LENGTH FOLLOWED
NEWUPDATE=*                   BY ERROR MESSAGE TEXT.
NEWUPDATE=*                   ERROR CODES:  1 = TOO MANY DIGITS BEFORE DECIMAL
NEWUPDATE=*                                 2 = TOO MANY DIGITS AFTER DECIMAL
NEWUPDATE=         SPACE 2
NEWUPDATE=*        LINENBRE IS OS-R TYPE CALLABLE VERSION FOR DSRS TO USE.
NEWUPDATE=*          PARAMETERS/RETURNS IDENTICAL TO LINENBR.
NEWUPDATE=         SPACE 2
NEWUPDATE=LINRCT   RSECT
NEWUPDATE=LINFL    DS    F                  VALUE RETURNED BY GETFLLNR
NEWUPDATE=LINSWS   DS    X                  SWITCHES:
NEWUPDATE=LINSIGN  EQU   X'80'                 - SIGN FOUND
NEWUPDATE=LINPER   EQU   X'40'                 . FOUND
NEWUPDATE=LINDIGIT EQU   X'20'                 DIGIT FOUND
NEWUPDATE=LINGFL   EQU   X'10'                 GETFLLNR FOUND SOMETHING
NEWUPDATE=         REND
NEWUPDATE=         SPACE 2
NEWUPDATE=LINENBRE BEGIN 1,N=2              EXTERNAL ENTRY TO THIS
NEWUPDATE=         RICALL LINENBR(,,)       CALL REAL MCCOY
NEWUPDATE=         EXIT  *,RESTORE=3        RETURN WITH RC FROM LINENBR
NEWUPDATE=         SPACE 2
NEWUPDATE=LINENBR  RENTER ,                 FLASHY NEW ROUTINE CODED HERE
NEWUPDATE=         LR    GR5,GR1            COPY INPUT ADDRESS
NEWUPDATE=         LR    GR9,GR2            COPY FDUB
NEWUPDATE=         LTR   GR0,GR0
NEWUPDATE=         BNP   LINRET4            -> NO INPUT TEXT
NEWUPDATE=         LTR   GR1,GR1
NEWUPDATE=         BZ    LINRET4            -> NO INPUT TEXT
NEWUPDATE=*
NEWUPDATE=         NI    LINSWS,255-LINSIGN-LINPER-LINDIGIT-LINGFL
NEWUPDATE=         RCALL GETFLLNR(,,)       TRY FOR *F OR ITS ILK
NEWUPDATE=         ST    GR2,LINFL          SAVE VALUE
NEWUPDATE=         CR    GR1,GR5            TAKE ANYTHING?
NEWUPDATE=         BE    *+4+4+2            -> NO
NEWUPDATE=         OI    LINSWS,LINGFL      REMEMBER
NEWUPDATE=         LR    GR5,GR1            REMEMBER POINTER, TOO
NEWUPDATE=*
NEWUPDATE=         XR    GR6,GR6            NOW GO AFTER SIGN/NUMBER
NEWUPDATE=         XR    GR2,GR2            NUMBER BUILT IN GR2
NEWUPDATE=         LA    GR3,7              MAX 6 INTEGRAL DIGITS
NEWUPDATE=         CLI   0(GR1),C'-' 
NEWUPDATE=         BE    LINMINUS           -> EAT 'EM UP
NEWUPDATE=         CLI   0(GR1),C'+'
NEWUPDATE=         BE    LINLOOP            -> EAT THIS TOO
NEWUPDATE=         TM    LINSWS,LINGFL
NEWUPDATE=         BO    LINRET             -> GOT *F OR SOMETHING, SKIP REST
NEWUPDATE=         B     LINLOOP1           -> JUMP INTO LOOP
NEWUPDATE=*
NEWUPDATE=*
NEWUPDATE=LINMINUS OI    LINSWS,LINSIGN     REMEMBER
NEWUPDATE=LINLOOP  LA    GR1,1(,GR1)        ADVANCE SCAN POINTER
NEWUPDATE=         BCT   GR0,*+8
NEWUPDATE=         B     LINRET             -> COUNT EXHAUSTED
NEWUPDATE=LINLOOP1 TM    LINSWS,LINPER
NEWUPDATE=         BO    LINNOPER           -> ALREADY GOT DOT, NOT AGAIN
NEWUPDATE=         CLI   0(GR1),C'.'
NEWUPDATE=         BNE   LINNOPER
NEWUPDATE=         LA    GR3,4              MAX 3 FRACTIONAL DIGITS
NEWUPDATE=         OI    LINSWS,LINPER
NEWUPDATE=         B     LINLOOP
NEWUPDATE=LINNOPER CLI   0(GR1),C'0'
NEWUPDATE=         BL    LINRET
NEWUPDATE=         CLI   0(GR1),C'9'
NEWUPDATE=         BH    LINRET
NEWUPDATE=         OI    LINSWS,LINDIGIT    REMEMBER A DIGIT
NEWUPDATE=         IC    GR6,0(,GR1)        DECODE DIGIT
NEWUPDATE=         N     GR6,=X'0000000F'
NEWUPDATE=         MH    GR2,=H'10'         SHIFT NUMBER
NEWUPDATE=         AR    GR2,GR6            ADD IN DIGIT
NEWUPDATE=         BCT   GR3,LINLOOP        -> WILL BRANCH IF NOT TOO MANY DIGITS
NEWUPDATE=*
NEWUPDATE=         TM    LINSWS,LINPER 
NEWUPDATE=         BO    LINDRDP            -> TOO MANY DIGITS TO RIGHT
NEWUPDATE=         LA    GR1,L'ECM1
NEWUPDATE=         LA    GR2,ECM1
NEWUPDATE=         LA    GR3,1
NEWUPDATE=         B     LINERR             -> GENERATE MESSAGE & RETURN
NEWUPDATE=LINDRDP  LA    GR1,L'ECM2
NEWUPDATE=         LA    GR2,ECM2
NEWUPDATE=         LA    GR3,2
NEWUPDATE=         B     LINERR
NEWUPDATE=         SPACE
NEWUPDATE=LINRET   TM    LINSWS,LINGFL+LINDIGIT
NEWUPDATE=         BZ    LINRET4            -> RC4 IF NO *F OR DIGITS
NEWUPDATE=         TM    LINSWS,LINDIGIT
NEWUPDATE=         BO    *+4+2              NO NUMERIC PORTION, POINT BACK AT 
NEWUPDATE=         LR    GR1,GR5            WHAT GETFLLNR ATE UP THROUGH
NEWUPDATE=         TM    LINSWS,LINPER
NEWUPDATE=         BO    *+4+4              -> GOT A FRACTIONAL PART
NEWUPDATE=         LA    GR3,4              NO FRACTION, PRIME COUNT 
NEWUPDATE=         BCTR  GR3,0              NOW 3-(NUMBER FRACTIONAL DIGITS)
NEWUPDATE=         SLL   GR3,1              *2
NEWUPDATE=         MH    GR2,=H'1,10,100,1000'(GR3)  SHIFT PROPER AMOUNT
NEWUPDATE=         TM    LINSWS,LINSIGN
NEWUPDATE=         BZ    *+4+2
NEWUPDATE=         LCR   GR2,GR2            NEGATE
NEWUPDATE=         A     GR2,LINFL          ADD IN CONTRIBUTION BY GETFLLNR
NEWUPDATE=         L     GR0,LINR1          COMPUTE LENGTH USED
NEWUPDATE=         SR    GR0,GR1            (GR0 COUNT UNRELIABLE IF E.G. "*F+")
NEWUPDATE=         A     GR0,LINR0
NEWUPDATE=         RRETURN VALUE(,,),RC(0)
NEWUPDATE=         SPACE
NEWUPDATE=LINERR   LR    GR5,GR1            GENERATE ERROR MESSAGE AND GIVE
NEWUPDATE=         LA    GR1,2(,GR1)        RC=8
NEWUPDATE=         RCALL PABOSFTA(,)        GET STORAGE FOR ERROR MESSAGE
NEWUPDATE=         BCTR  GR5,0
NEWUPDATE=         EX    GR5,LINERRMV       MVC   2(0,GR1),0(GR2)
NEWUPDATE=         LA    GR5,3(,GR5)
NEWUPDATE=         STH   GR5,0(,GR1)
NEWUPDATE=         RRETURN VALUE((GR3),,),RC(8)
NEWUPDATE=LINERRMV MVC   2(0,GR1),0(GR2)
NEWUPDATE=         SPACE
NEWUPDATE=LINRET4  RRETURN VALUE(LINR0,LINR1,A(0)),RC(4)
NEWUPDATE=         SPACE 2
NEWUPDATE=ECM1     DC    C'NUMBER HAS TOO MANY DIGITS BEFORE DECIMAL POINT.'
NEWUPDATE=ECM2     DC    C'NUMBER HAS TOO MANY DIGITS AFTER DECIMAL POINT.'
NEWUPDATE=         SPACE
NEWUPDATE=         REND
NEWUPDATE=         EJECT
NEWUPDATE=/SKIP NEXT "USING FDBDCT,SCD"
NEWUPDATE=*        GETFLLNR  --  GET FIRST OR LAST LINE NUMBER.  EVALUATE
NEWUPDATE=*                      "*F", "*L", "FIRST", "LAST", "MIN", OR "MAX"
NEWUPDATE=*                      AS A LINE NUMBER.
NEWUPDATE=*
NEWUPDATE=*          NEWMTS R(3,3) CALLING SEQUENCE:
NEWUPDATE=*            GR0 - LENGTH OF INPUT STRING, UPDATED ON RETURN
NEWUPDATE=*            GR1 - ADDRESS OF INPUT STRING, UPDATED ON RETURN
NEWUPDATE=*            GR2 - FDUB OR ZERO, VALUE ON RETURN OR ZERO IF NO
NEWUPDATE=*                  VALUE OR CAN'T BE EVALUATED (ZERO FDUB, NO
NEWUPDATE=*                  ACCESS TO FILE TO READ FIRST/LAST LINE #, ETC.)
NEWUPDATE=* 
NEWUPDATE=*            RC=0  IF FOUND SOMETHING INTERESTING
NEWUPDATE=*              =4  IF NOTHING FOUND OF INTEREST
NEWUPDATE=         SPACE 2
NEWUPDATE=GETRCT   RSECT SA=NO
NEWUPDATE=GETFLSCR DS    XL(READLSS)        SCRATCH FOR READF/READL CALL
NEWUPDATE=GETSA    RSA   ,                  SAVEAREA
NEWUPDATE=GETFLPAR DS    2A                 READF/READL PARAMETERS
NEWUPDATE=         REND
NEWUPDATE=         SPACE 2
NEWUPDATE=GETFLLNR RENTER ,                 GET FIRST/LAST LINE NUMBER
NEWUPDATE=         CH    GR0,=H'2'          CHECK FOR TOO SHORT
NEWUPDATE=         BL    GETRC4             -> NO NUMBER
NEWUPDATE=         LR    GR3,GR0            MOVE MAX 5, MIN NUMBER GIVEN
NEWUPDATE=         CH    GR3,*+10           CHARACTERS INTO SCRATCH AREA
NEWUPDATE=         BNH   *+8
NEWUPDATE=         LA    GR3,5
NEWUPDATE=         BCTR  GR3,0
NEWUPDATE=         EX    GR3,GETFLMVC       MVC   GETFLSCR(0),0(GR1)
NEWUPDATE=         L     GR15,=V(CASECONV)
NEWUPDATE=         TR    GETFLSCR(5),0(GR15)
NEWUPDATE=         LR    GR9,GR2            COPY FDUB
NEWUPDATE=         MVI   GETFLPAR,0         FLAG READF CALL
NEWUPDATE=         CH    GR0,=H'2'
NEWUPDATE=         BE    GET2CHAR           -> 2 CHARACTERS ONLY
NEWUPDATE=         CH    GR0,=H'4'
NEWUPDATE=         BL    GET3CHAR           -> 3 CHARACTERS
NEWUPDATE=         BE    GET4CHAR           -> 4 CHARACTERS
NEWUPDATE=         LA    GR3,5              MUST BE 5 OR MORE
NEWUPDATE=         CLC   =C'FIRST',GETFLSCR 
NEWUPDATE=         BE    GETFLOPE           -> EVALUATE 'FIRST'
NEWUPDATE=GET4CHAR LA    GR3,4              TRYING FOR 4 CHARACTER MATCH NOW
NEWUPDATE=         CLC   =C'LAST',GETFLSCR
NEWUPDATE=         BNE   GET3CHAR           -> NO, TRY 3
NEWUPDATE=         MVI   GETFLPAR,4         FLAG READL CALL
NEWUPDATE=         B     GETFLOPE           -> EVALUATE 'LAST'
NEWUPDATE=GET3CHAR LA    GR3,3              TRYING FOR 3 CHARACTER MATCH NOW
NEWUPDATE=         L     GR2,=V(MINLIN)
NEWUPDATE=         L     GR2,0(,GR2)
NEWUPDATE=         CLC   =C'MIN',GETFLSCR
NEWUPDATE=         BE    GETFLRC0           -> GOT 'MIN'
NEWUPDATE=         L     GR2,=V(MAXLIN)
NEWUPDATE=         L     GR2,0(,GR2)
NEWUPDATE=         CLC   =C'MAX',GETFLSCR
NEWUPDATE=         BE    GETFLRC0           -> GOT 'MAX'
NEWUPDATE=GET2CHAR LA    GR3,2              TRYING FOR 2 CHARACTER MATCH NOW
NEWUPDATE=         CLC   =C'*F',GETFLSCR
NEWUPDATE=         BE    GETFLOPE           -> EVALUATE '*F'
NEWUPDATE=         CLC   =C'*L',GETFLSCR
NEWUPDATE=         BNE   GETRC4             -> DIDN'T FIND ANYTING
NEWUPDATE=         MVI   GETFLPAR,4         FLAG READL CALL
NEWUPDATE=         SPACE
NEWUPDATE=         USING FDBDCT,GR9         OK, GOING TO USE FDUB
NEWUPDATE=GETFLOPE XR    GR2,GR2            ZERO VALUE FOR NOW
NEWUPDATE=         LTR   GR9,GR9
NEWUPDATE=         BZ    GETFLNF            -> NO FDUB
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GETLNR5" = "GETFLNF"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT F=3 "GETLNR5" = "GETFLNF"
NEWUPDATE=/SKIP BEFORE NEXT "NI" NEXT "FDUBSWS"
NEWUPDATE=         LR    GR5,GR0            PROTECT ACROSS CFDUBA CALL
NEWUPDATE=         LR    GR6,GR1
NEWUPDATE=         RCALL CFDUBA(A(1),A(3),(GR9))  COPY FDUB ONTO CHAIN 3
NEWUPDATE=         LR    GR9,GR0            LODGE NEW FDUB
NEWUPDATE=/EDIT F=3 "-FDBDCT(SCD)" = ""
NEWUPDATE=/EDIT F=3 "-FDBDCT(SCD)" = ""
NEWUPDATE=/SKIP C=5
NEWUPDATE=         RCALL OPENIT(A(0),(GR9)) OPEN FDUB IN NORMAL FASHION
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "GETLNRER" = "GETFLGVB"
NEWUPDATE=         IC    GR15,GETFLPAR
NEWUPDATE=         L     GR15,=V(READF,READL)(GR15)   ROUTINE TO CALL
NEWUPDATE=/EDIT F=3 "-FDBDCT(,GR1)" = ""
NEWUPDATE=/SKIP C=1
NEWUPDATE=/EDIT F=3 "GR1" = "GR2"
NEWUPDATE=/SKIP C=6
NEWUPDATE=         STM   GR1,GR2,GETFLPAR   PARAMETERS TO READF/READL
NEWUPDATE=         LA    GR1,GETFLPAR
NEWUPDATE=         XR    GR2,GR2
NEWUPDATE=/COPY C=2
NEWUPDATE=/SKIP NEXT "B" NEXT "GETLNR5A"
NEWUPDATE=         BNZ   *+4+2
NEWUPDATE=         LR    GR2,GR1            COPY OVER RETURNED LINE #
NEWUPDATE=GETFLGVB RCALL GIVEBACA((GR9))    GIVE BACK COPIED FDUB
NEWUPDATE=         LR    GR0,GR5            COPY BACK COUNT
NEWUPDATE=         LR    GR1,GR6            AND POINTER
NEWUPDATE=         SPACE
NEWUPDATE=GETFLNF  DS    0H
NEWUPDATE=GETFLRC0 AR    GR1,GR3            ECHE POINTER
NEWUPDATE=         SR    GR0,GR3            BACK DOWN COUNT
NEWUPDATE=         RRETURN VALUE(,,),RC(0)
NEWUPDATE=GETFLMVC MVC   GETFLSCR(0),0(GR1)
NEWUPDATE=         SPACE
NEWUPDATE=GETRC4   RRETURN VALUE(GETR0,GETR1,A(0)),RC(4)
NEWUPDATE=         SPACE
NEWUPDATE=         DROP  GR9
NEWUPDATE=LASTJBA2 DC    V(LASTJOB)
NEWUPDATE=         REND
NEWUPDATE=/SKIP MAXCOUNT=20 NEXT "DS" NEXT "0H"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         EJECT
NEWUPDATE=*        OPENIT -- OPEN A FDUB ACCORDING TO SPECIFIED OPTIONS.
NEWUPDATE=*
NEWUPDATE=*          NEWMTS R(2,0) CALLING SEQUENCE
NEWUPDATE=*            GR0 - OPTIONS SWITCHES:
NEWUPDATE=*                     BIT 31 - 1=DON'T ALTER LOCKING STATUS
NEWUPDATE=*                              0=OK TO ALTER
NEWUPDATE=*                     BIT 30 - 1=MAKE SEQUENTIAL (IN THIRD SENSE)
NEWUPDATE=*                              0=DON'T FORCE SEQUENTIAL
NEWUPDATE=*                     BIT 29 - 1=OPEN EVEN IF NO ACCESS************
NEWUPDATE=*                              0=DON'T OPEN IF IMPROPER ACCESS*****
NEWUPDATE=*                              *******NOT YET IMPLEMENTED**********
NEWUPDATE=*            GR1 - FDUB
NEWUPDATE=*            RC=0 - FILE HAS BEEN OPENED IF NECESSARY
NEWUPDATE=*              =4 - FILE DOES NOT EXIST
NEWUPDATE=*              =8 - ERROR IN OPEN OR ILLEGAL DEVICE TYPE
NEWUPDATE=*              =12- NO ACCESS
NEWUPDATE=*              =16- CAN'T WAIT: DEADLOCK
NEWUPDATE=*              =20- WAIT TO OPEN INTERRUPTED
NEWUPDATE=         SPACE 2
NEWUPDATE=OPENIT   RAENTER ,                ADAPTOR ROUTINE FOR NOW
NEWUPDATE=         LR    SCD,GR1            FDUB FOR HOPENIT
NEWUPDATE=         L     GR15,=A(HOPENIT)
NEWUPDATE=         LTR   GR0,GR0
NEWUPDATE=         BZ    OPENIT1            -> NORMAL FLAVOR
NEWUPDATE=         L     GR15,=A(HOPENLK)
NEWUPDATE=         SRA   GR0,1
NEWUPDATE=         BZ    OPENIT1            -> DON'T ALTER LOCKING
NEWUPDATE=         L     GR15,=A(SEQFILE)   MAKE SEQUENTIAL THEN
NEWUPDATE=OPENIT1  BALR  GR14,GR15
NEWUPDATE=         RRETURN RC()
NEWUPDATE=         REND
NEWUPDATE=         EJECT
NEWUPDATE=/COPY "WRITEBUF "
NEWUPDATE=/DELETE "*" NEXT "USES" NEXT "GR2,"
NEWUPDATE=*        USES  GR0,GR2,SCA,SCB,SCC,SCD
NEWUPDATE=/COPY "RENUMP "
NEWUPDATE=/DELETE NEXT "OI" NEXT "SWS10"
NEWUPDATE=/DELETE NEXT "LR" NEXT "SCD,GR0"
NEWUPDATE=/COPY NEXT "ST" NEXT "SCC,9*4(,GR1)"
NEWUPDATE=         LR    SCD,GR1
NEWUPDATE=/EDIT "GR2,GR2" = "SCC,SCC"
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    GR0,SCB
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=2
NEWUPDATE=         RICALL LINENBR(,,5*4(,SCD))  PROCESS FIRST OR NEW             *
NEWUPDATE=                                      FIRST LINE NUMBER
NEWUPDATE=/COPY C=2
NEWUPDATE=/SKIP C=4
NEWUPDATE=         ST    GR2,6*4(SCC,SCD)   PLANT EITHER FIRST OR NEW FIRST
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCA,GR1            COPY OVER FOR NEXPAR CALL
NEWUPDATE=         LR    SCB,GR0
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    GR0,SCB            COPY REMAINING COUNT
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY MAXCOUNT=10 BEFORE "RNBP6 "
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA,1(,SCA)" = "GR1,1(,GR1)"
NEWUPDATE=/EDIT "SCB" = "GR0"
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCA,GR1            COPY FOR NEXPAR CALL
NEWUPDATE=         LR    SCB,GR0
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    GR0,SCB
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/DELETE "RNBP5 "
NEWUPDATE=/SKIP C=1
NEWUPDATE=RNBP5    RICALL LINENBR(,,5*4(,SCD))
NEWUPDATE=/COPY C=2
NEWUPDATE=/SKIP NEXT "LR" NEXT "SCA,SCC"
NEWUPDATE=         ST    GR2,7*4(SCC,SCD)   PLANT EITHER NEW LAST OR INCR.
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCA,GR1            HERE WE GO AGAIN, SHUFFLING FEET
NEWUPDATE=         LR    SCB,GR0            FOR NEXPAR
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    GR0,SCB
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY MAXCOUNT=10 BEFORE "RNBP7 "
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=RNBP3    LTR   SCC,SCC            SEE IF ALREADY HAVE 'TO'
NEWUPDATE=         BNZ   RNBPERR            -> YES, NOT AGAIN
NEWUPDATE=         LA    GR1,2(,GR1)
NEWUPDATE=/EDIT "SCB" = "GR0"
NEWUPDATE=/EDIT "SCB" = "GR0"
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCA,GR1            SHUFFLE, SHUFFLE NEXPAR
NEWUPDATE=         LR    SCB,GR0
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    GR0,SCB
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY MAXCOUNT=10 BEFORE "RNBP8 "
NEWUPDATE=/EDIT "GR2,GR2" = "SCC,SCC"
NEWUPDATE=/SKIP C=3
NEWUPDATE=         LA    SCC,8
NEWUPDATE=         BZ    RNBPAGN            -> BACK TO PROCESS NEW FIRST, INCR.
NEWUPDATE=         B     RNBPERR            -> TRIED TO GIVE TOO MANY PARAMETERS
NEWUPDATE=/COPY BEFORE "RNBP2 "
NEWUPDATE=/EDIT "GR1" = "SCD"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=2
NEWUPDATE=         RICALL LINENBR(A(5),A(=C'FIRST'),5*4(,SCD))  GET *F VALUE
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT "GR0,6*4(,GR1" = "GR2,6*4(,SCD"
NEWUPDATE=/EDIT "GR1" = "SCD"
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=2
NEWUPDATE=         RICALL LINENBR(A(4),A(=C'LAST'),5*4(,SCD)) GET *L VALUE
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT HOLD "GR0" = "GR2"
NEWUPDATE=/EDIT "GR1" = "SCD"
NEWUPDATE=/DELETE "RNBPOUT"
NEWUPDATE=RNBPOUT  LR    GR1,SCD            GIVE BACK PARAMETER REGION
NEWUPDATE=/END REPLINN
#4134
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. LENFIX - The following change prevents an MTS program 
NEWUPDATE=/.          interrupt after Len Harding enters first
NEWUPDATE=/.               $START PRINT=TN
NEWUPDATE=/.          followed by a response of NO when prompted by
NEWUPDATE=/.          KWSCAN to see if he might allow SPRINT for PRINT.
NEWUPDATE=/.          Why he wanted to say $START PRINT=TN in the first
NEWUPDATE=/.          place is anyones guess.
NEWUPDATE=/BEGIN LENFIX
NEWUPDATE=/COPY 'RLDFDN ' 
NEWUPDATE=         C     GR13,KWSAVE
NEWUPDATE=         BE    2(,GR5)             ILLEGAL FROM START OR RESTART
NEWUPDATE=/END LENFIX
#4135
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXDUMPS - Make sure that GR13 points to a valid save area,
NEWUPDATE=/.            even when there are no extra pars to go with the
NEWUPDATE=/.            DUMP command and the user hasn't $SET ERRORDUMP=ON
NEWUPDATE=/BEGIN FIXDUMPS
NEWUPDATE=/COPY 'JOBD89 '
NEWUPDATE=/COPY NEXT 'IC'
NEWUPDATE=         L     GR13,KWSAVE         USED IT BEFORE, MIGHT AS WELL AGAIN
NEWUPDATE=/END FIXDUMPS
#4136
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. LYSTPFX - This fixes a minor bug introduced when long prefixes
NEWUPDATE=/.           were added.  No one noticed for months!
NEWUPDATE=/BEGIN LYSTPFX
NEWUPDATE=/COPY 'LYSTFOD '
NEWUPDATE=/COPY NEXT 'LR' NEXT '13,1'
NEWUPDATE=         LA    GR0,MTSFLG
NEWUPDATE=         LA    GR1,LYSTPFX
NEWUPDATE=         BAL   GR14,SAVPFX         SET PFX TO ">" AND SAVE OLD ONE
NEWUPDATE=         ST    GR1,4(,GR13)        IN THE SA BACK POINTER (WHERE ELSE?)
NEWUPDATE=/COPY BEFORE 'LYSTGO '
NEWUPDATE=/SKIP BEFORE 'LYSTLLP '
NEWUPDATE=/COPY BEFORE 'LYSTEF2'
NEWUPDATE=/EDIT 'LYSTEF2' = '       '
NEWUPDATE=/COPY 'CKLYST '
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT 'LYSTGO' = 'LYSTLLP' 
NEWUPDATE=/END LYSTPFX
#4137
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. ================================================================
NEWUPDATE=/. FIXLNR - So the $LIST command will do something "reasonable"
NEWUPDATE=/.          when it tries to list lines with line numbers that
NEWUPDATE=/.          are bigger than 999999.999 or smaller than -99999.999
NEWUPDATE=/BEGIN FIXLNR
NEWUPDATE=/COPY 'LYSTOK '
NEWUPDATE=/COPY BEFORE NEXT 'BAL'
NEWUPDATE=/EDIT 'PUTDEC' = 'PUTLNR' 
NEWUPDATE=/END FIXLNR
#4138
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. ================================================================
NEWUPDATE=/.  FDNJUNK - FIX THINGS SO THAT LINE RANGES AND I/O MODIFIERS
NEWUPDATE=/.            on FDnames cause an error when given where they
NEWUPDATE=/.            don't make sense, for example: $EMPTY file(5,10).
NEWUPDATE=/BEGIN FDNJUNK
NEWUPDATE=/COPY 'KREANL3 '
NEWUPDATE=/COPY NEXT 'LR' NEXT 'SCA,GR0' 
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(SCA),FDUBBLN+FDUBELN+FDUBMOD
NEWUPDATE=         BNZ   KREFP               FOUND JUNK AT END OF FDNAME
NEWUPDATE=         TM    FDUBS-FDBDCT(SCA),FDUBINC
NEWUPDATE=         BNZ   KREFP               OTHER JUNK AT END OF FDNAME
NEWUPDATE=/COPY 'CREME '
NEWUPDATE=/COPY C=2
NEWUPDATE=*
NEWUPDATE=KREFP    FMSG  168                 JUNK AT END OF FDNAME
NEWUPDATE=         SPACE 3
NEWUPDATE=         DS    0H
NEWUPDATE=/COPY 'CLOBBER'
NEWUPDATE=/COPY C=6
NEWUPDATE=         L     GR1,FDGNXCHR        GET NEXT CHARACTER
NEWUPDATE=         CLI   0(GR1),C'@'
NEWUPDATE=         BPI   OPND,CLOBASK        -> OK, I GUESS (HOPE)
NEWUPDATE=         BE    CLOBFP              OOPS, JUNK AT END OF NAME
NEWUPDATE=         CLI   0(GR1),C'(' 
NEWUPDATE=         BE    CLOBFP              MORE JUNK
NEWUPDATE=CLOBASK  DS    0H
NEWUPDATE=/COPY 'DAFDF '
NEWUPDATE=CLOBFP   FMSG  168                 JUNK AT END OF FILE NAME
NEWUPDATE=/COPY 'MT '
NEWUPDATE=/COPY C=6
NEWUPDATE=         TM    FDUBS-FDBDCT(SCD),FDUBINC       INCREMENT?
NEWUPDATE=         BNZ   MTFP 
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(SCD),FDUBBLN+FDUBELN+FDUBMOD
NEWUPDATE=         BNZ   MTFP 
NEWUPDATE=/COPY 'MTBP '
NEWUPDATE=MTFP     FMSG  168                 JUNK AT END OF FDNAME
NEWUPDATE=/COPY 'TRUNK '
NEWUPDATE=/COPY C=6
NEWUPDATE=         TM    FDUBS-FDBDCT(SCD),FDUBINC       INCREMENT?
NEWUPDATE=         BNZ   TRUNKFP
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(SCD),FDUBBLN+FDUBELN+FDUBMOD 
NEWUPDATE=         BNZ   TRUNKFP
NEWUPDATE=/COPY 'TRCMP '
NEWUPDATE=TRUNKFP  FMSG  168                 JUNK AT END OF FDNAME
NEWUPDATE=/COPY 'LOCH '
NEWUPDATE=/COPY C=5
NEWUPDATE=         LR    GR1,GR0
NEWUPDATE=         TM    FDUBS-FDBDCT(GR1),FDUBINC       INCREMENT?
NEWUPDATE=         BNZ   LOCHFP
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(GR1),FDUBBLN+FDUBELN+FDUBMOD 
NEWUPDATE=         BNZ   LOCHFP
NEWUPDATE=/COPY 'LOCHMP '
NEWUPDATE=LOCHFP   FMSG  168                 JUNK AT END OF FILENAME
NEWUPDATE=/COPY 'UNLOCH2 '
NEWUPDATE=         TM    FDUBS-FDBDCT(SCC),FDUBINC       INCREMENT?
NEWUPDATE=         BNZ   UNLFP 
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(SCC),FDUBBLN+FDUBELN+FDUBMOD 
NEWUPDATE=         BNZ   UNLFP 
NEWUPDATE=/COPY 'UNLOCHMP '
NEWUPDATE=UNLFP    FMSG  168                 JUNK AT END OF FDNAME
NEWUPDATE=/COPY 'LSTAT3 '
NEWUPDATE=/COPY C=5
NEWUPDATE=         L     GR1,FDGNXCHR        GET NEXT CHARACTER
NEWUPDATE=         CLI   0(GR1),C'@'
NEWUPDATE=         BPI   OPND,LSTAT4         -> OK, I GUESS (HOPE)
NEWUPDATE=         BE    LSTFP               OOPS, JUNK AT END OF NAME
NEWUPDATE=         CLI   0(GR1),C'(' 
NEWUPDATE=         BE    LSTFP               MORE JUNK
NEWUPDATE=/COPY 'LSTBP '
NEWUPDATE=LSTFP    FMSG  168                 JUNK AT END OF FILE NAME
NEWUPDATE=/COPY 'CNTRLCMD '
NEWUPDATE=/COPY C=10
NEWUPDATE=         TM    FDUBS-FDBDCT(SCA),FDUBINC
NEWUPDATE=         BNZ   CCMFP
NEWUPDATE=         TM    FDUBSWS2-FDBDCT(SCA),FDUBBLN+FDUBELN+FDUBMOD
NEWUPDATE=         BNZ   CCMFP
NEWUPDATE=/COPY 'CCMDERR1 '
NEWUPDATE=*
NEWUPDATE=CCMFP    FMSG  168                 JUNK AT END OF FDNAME
NEWUPDATE=/END FDNJUNK 
#4139
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. CLEANPWM - Clean up calls to PWM
NEWUPDATE=/BEGIN CLEANPWM
NEWUPDATE=/COPY 'SYGCPW '
NEWUPDATE=/COPY C=5
NEWUPDATE=/SKIP C=2
NEWUPDATE=/COPY 'STPWX '
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=2
NEWUPDATE=/COPY 'CANGO '
NEWUPDATE=/COPY C=6
NEWUPDATE=/SKIP C=2
NEWUPDATE=/COPY C=2
NEWUPDATE=         LA    GR2,CANACR 
NEWUPDATE=/END CLEANPWM
#4140
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. ADDPWCON - Add $SET PWCONFIRM=ON to force user to enter old
NEWUPDATE=/.            PW before the new PW may be changed.  Only applies
NEWUPDATE=/.            to terminal users and can only be set ON 
NEWUPDATE=/BEGIN ADDPWCON
NEWUPDATE=/COPY BEFORE 'SETLHTL '
NEWUPDATE=         KWTEL PWCONFIRM,ONOFF,STPWCX-SETEXT
NEWUPDATE=/COPY BEFORE 'STEXPFX '
NEWUPDATE=STPWCX   NI    SWS19,255-PWCONF              $SET PWCONFIRM=ON
NEWUPDATE=         BAL   GR5,*+4                       $SET PWCONFIRM=OFF
NEWUPDATE=         TM    SWS19,PWCONF
NEWUPDATE=         BOR   GR5                           IS ALREADY OFF
NEWUPDATE=         FMSG  170,*                         CAN'T SET OFF
NEWUPDATE=         BR    GR5
NEWUPDATE=         SPACE 
NEWUPDATE=/END ADDPWCON
#4141
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. CLEANSET - CLEAN UP THE SET COMMAND A LITTLE
NEWUPDATE=/BEGIN CLEANSET
NEWUPDATE=/COPY 'SETTE '
NEWUPDATE=/COPY C=4
NEWUPDATE=         LA    R13,SETSA1          SA TO KEEP KWSCAN HAPPY
NEWUPDATE=/COPY C=7
NEWUPDATE=/SKIP C=1
NEWUPDATE=         L     SCB,=V(RHTABLE)     5. RHT LOCN.
NEWUPDATE=/COPY C=10
NEWUPDATE=/EDIT  "X'17'" = "X'37'"
NEWUPDATE=/EDIT 'PROMPT,' = 'PROMPT, UC' 
NEWUPDATE=/END CLEANSET
#4142
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =============================================================
NEWUPDATE=/. LFRAX - DELETE THE $SET LFR OPTION, I'LL BET YOU DIDN'T EVEN KNOW
NEWUPDATE=/.         IT WAS THERE!
NEWUPDATE=/BEGIN LRFAX
NEWUPDATE=/COPY 'SYGNOTSA '
NEWUPDATE=/COPY BEFORE NEXT 'MVI' NEXT 'SWS,LFRBIT+'
NEWUPDATE=/EDIT HOLD 'LFRBIT+' = '' 
NEWUPDATE=/EDIT 'LFR=OFF' = '' 
NEWUPDATE=/COPY 'RALPHA '
NEWUPDATE=/SKIP C=4
NEWUPDATE=/COPY 'SETLHT '
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY BEFORE 'STLFRX '
NEWUPDATE=/SKIP C=3 
NEWUPDATE=/END LFRAX 
#4143
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. ===============================================================
NEWUPDATE=/. CANBATCH - ALLOW PASSWORD TO BE GIVEN IN BATCH ON CARD FOLLOWING
NEWUPDATE=/.            $CANCEL COMMAND IF ID=XXXX GIVEN ON COMMAND ITSELF.
NEWUPDATE=/BEGIN CANBATCH
NEWUPDATE=/COPY 'CANCMD '
NEWUPDATE=/COPY '* '
NEWUPDATE=/COPY BEFORE NEXT 'BAL' NEXT 'GR14,GUSER' 
NEWUPDATE=/EDIT 'GUSER' = 'GUSEREOF' 
NEWUPDATE=         LTR   GR15,GR15
NEWUPDATE=         BNZ   CANIPW
NEWUPDATE=/END CANBATCH
#4144
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. NEWPW - ALLOW  $SET  PW= WITHOUT ANY RHS
NEWUPDATE=/BEGIN NEWPW
NEWUPDATE=/COPY 'SINTNB '
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT "0" = "PWCONF" 
NEWUPDATE=/COPY BEFORE 'STPWX '
NEWUPDATE=/SKIP 'STMPW '
NEWUPDATE=STPWX    BAL   GR5,STPW1          $SET PW=SOMETHING 
NEWUPDATE=         BAL   GR5,STPW2          $SET PW=NOTHING OR SIMPLY $SET PW 
NEWUPDATE=         SPACE 2 
NEWUPDATE=*  THIS CODE IS EXECUTED WHEN THE USER GIVES THE PW= OR 
NEWUPDATE=*  PASSWORD= COMMAND WITH SOMETHING ON THE RIGHT HAND SIDE.
NEWUPDATE=*
NEWUPDATE=*  KWSCAN SETS UP THE REGISTERS:
NEWUPDATE=*     GR1 -> THE IBM LENGTH OF THE NEW PASSWORD
NEWUPDATE=*     GR2 -> ADDRESS OF THE NEW PASSWORD
NEWUPDATE=*     GR4 -> MTS DSECT
NEWUPDATE=*     GR5 -> LINK REGISTER
NEWUPDATE=*     GR10-> LOCAL BASE
NEWUPDATE=*     GR11 AND GR12 -> COMBASE
NEWUPDATE=*     GR13-> ADDRESS OF THE SET COMMAND'S DSECT
NEWUPDATE=         SPACE 
NEWUPDATE=STPW1    DS    0H 
NEWUPDATE=         LR    SCD,GR13           ADDRESS OF OUR DSECT 
NEWUPDATE=         USING SETKWD,SCD 
NEWUPDATE=         LA    GR13,SETSA2        A STANDARD SAVE AREA 
NEWUPDATE=         MVC   SETPW1,=CL12' '    BLANK SETPW1
NEWUPDATE=         LA    GR3,SETPW1        WHERE TO MOVE THE PW FROM THE SET CMD. 
NEWUPDATE=         EX    GR1,STPWMVC        GR1 IS IBM LENGTH PROVIDED BY KWSCAN 
NEWUPDATE=         BAL   SCC,STOPWC      DO OLD PWCONFIRM PROCESSING IF NECESSARY 
NEWUPDATE=* SOMEDAY THIS CODE WILL CAUSE TERMINAL USERS WHO ENTER THEIR
NEWUPDATE=* PASSWORDS ON THE $SET CMD. TO REENTER IT AGAIN JUST TO BE SAFE.
NEWUPDATE=*         TM    SWS2,BATCHM        IS IT BATCH?
NEWUPDATE=*         BO    STPW1B             IF SO SKIP THE CONFIRMATION
NEWUPDATE=*         BAL   SCC,STGETPW        BETTER READ A LINE
NEWUPDATE=*         LA    GR3,SETPW2         THE 2ND PASSWORD IS UP NEXT
NEWUPDATE=*         BAL   SCC,STMOVPW        MOVE THE PW INTO SETPW2
NEWUPDATE=*         CLC   SETPW1,SETPW2      DO THEY MATCH?
NEWUPDATE=*         BE    STPW1B             YES
NEWUPDATE=*         FMSG  184,STPWXIT,TYPE=M  1ST & 2ND NEW PASSWORDS DON'T MATCH
NEWUPDATE=STPW1B   BAL   SCC,STNPW          ENCODE AND SET THE NEW PASSWORD 
NEWUPDATE=         BAL   GR14,ECHOTST2      DID USER SEE THE $SET COMMAND? 
NEWUPDATE=         B     STPW1C             NO, SO GO WARN HIM/HER 
NEWUPDATE=* THIS TOO WILL BE EXECUTED SOMEDAY
NEWUPDATE=*         FMSG  185,*              SAW CMD., BUT IT IS A BAD PRACTICE
NEWUPDATE=         B     STPWXIT            EXIT 
NEWUPDATE=STPW1C   FMSG  162,*,TYPE=M       PASSWORD HAS BEEN CHANGED 
NEWUPDATE=STPWXIT  LR    GR13,SCD           PUT THIS BACK THE WAY WE FOUND IT 
NEWUPDATE=         BR    GR5                RETURN 
NEWUPDATE=         SPACE 
NEWUPDATE=         DROP  SCD
NEWUPDATE=         SPACE
NEWUPDATE=STPWMVC  MVC   0(0,GR3),0(GR2)    EXECUTED 
NEWUPDATE=         SPACE 2 
NEWUPDATE=*  THIS CODE IS EXECUTED WHEN THE USER GIVES THE PW= OR 
NEWUPDATE=*  PASSWORD= COMMAND WITH NOTHING ON THE RIGHT HAND SIDE.
NEWUPDATE=*
NEWUPDATE=*  KWSCAN SETS UP THE REGISTERS:
NEWUPDATE=*     GR4 -> MTS DSECT
NEWUPDATE=*     GR5 -> LINK REGISTER
NEWUPDATE=*     GR10-> LOCAL BASE
NEWUPDATE=*     GR11 AND GR12 -> COMBASE
NEWUPDATE=*     GR13-> ADDRESS OF THE SET COMMAND'S DSECT
NEWUPDATE=         SPACE 
NEWUPDATE=STPW2    DS    0H
NEWUPDATE=         LR    SCD,GR13           ADDRESS OF OUR DSECT 
NEWUPDATE=         USING SETKWD,SCD
NEWUPDATE=         LA    GR13,SETSA2        A STANDARD SAVE AREA 
NEWUPDATE=         BAL   SCC,STOPWC      DO OLD PWCONFIRM PROCESSING IF NECESSARY 
NEWUPDATE=         TM    SWS2,BATCHM        BATCH? 
NEWUPDATE=         BO    STPW2A             YES, THEN SKIP PROMPT 
NEWUPDATE=         FMSG  187,*,TYPE=M       ENTER NEW USER PASSWORD. 
NEWUPDATE=STPW2A   BAL   SCC,STGETPW     BLANK INPUT AND READ A LINE FROM MSOURCE 
NEWUPDATE=         LA    GR3,SETPW1         WE ARE DEALING WITH THE FIRST PW 
NEWUPDATE=         BAL   SCC,STMOVPW        MOVE THE PW INTO SETPW1
NEWUPDATE=         CLC   SETPW1,=CL12' '    DID WE GET ONE
NEWUPDATE=         BNE   STPW2B
NEWUPDATE=         FMSG  188,STPWXIT,TYPE=M  PW TOO SHORT (IE. NULL)
NEWUPDATE=STPW2B   BAL   SCC,STSKIPW        SKIP TO NEXT PW ON LINE, IF ANY 
NEWUPDATE=         B     STPW2C             GOT ONE 
NEWUPDATE=         TM    SWS2,BATCHM        2ND PW NOT ON SAME LINE, IS IT BATCH? 
NEWUPDATE=         BO    STPW2F             IF SO SKIP THE CONFIRMATION 
NEWUPDATE=         FMSG  190,*,TYPE=M
NEWUPDATE=         BAL   SCC,STGETPW        BETTER READ A LINE 
NEWUPDATE=STPW2C   LA    GR3,SETPW2         THE 2ND PASSWORD IS UP NEXT 
NEWUPDATE=         BAL   SCC,STMOVPW        MOVE THE PW INTO SETPW2 
NEWUPDATE=         CLC   SETPW1,SETPW2      DO THEY MATCH? 
NEWUPDATE=         BE    STPW2E             YES 
NEWUPDATE=STPW2D   FMSG  184,STPWXIT,TYPE=M 1ST AND 2ND NEW PASSWORDS DON'T MATCH 
NEWUPDATE=STPW2E   BAL   SCC,STSKIPW        CHECK FOR JUNK AT END OF LINE
NEWUPDATE=         B     STPW2D             FOUND JUNK
NEWUPDATE=STPW2F   BAL   SCC,STNPW          ENCODE AND SET THE NEW PASSWORD 
NEWUPDATE=         B     STPWXIT            EXIT 
NEWUPDATE=         SPACE 2
NEWUPDATE=*  CALLS CONTROL TO BLANK MSOURCE, READS A LINE AND RETURNS
NEWUPDATE=*  WITH THE LENGTH+1 IN GR0 AND A POINTER TO THE TEXT IN GR2
NEWUPDATE=         SPACE
NEWUPDATE=STGETPW  DS    0H
NEWUPDATE=         CALL  CONTROL,(STBLANK,STBLEN,MSOURCE),VL,                    @
NEWUPDATE=               MF=(E,STCTLPAR),LIT=YES       BLANK THE INPUT LINE
NEWUPDATE=         BAL   GR14,GUSEREOF
NEWUPDATE=         LTR   GR15,GR15          CHECK RC
NEWUPDATE=         BZ    STGETPWA
NEWUPDATE=STPWNC   FMSG  191,STPWXIT,TYPE=M  PW NOT CHANGED - EXIT
NEWUPDATE=STGETPWA LH    GR2,0(,GR1)        GET THE LENGTH
NEWUPDATE=         LA    GR0,1(,GR2)        ADD ONE
NEWUPDATE=         LA    GR2,2(,GR1)        ADDRESS OF TEXT
NEWUPDATE=         BR    SCC                RETURN
NEWUPDATE=         SPACE
NEWUPDATE=STBLANK  DC    C'BLANK=12 '
NEWUPDATE=STBLEN   DC    Y(L'STBLANK)
NEWUPDATE=         SPACE 2
NEWUPDATE=*  CALLED TO MOVE THE PW INTO THE REGION POINTED TO BY GR3
NEWUPDATE=*  ON ENTRY GR2 POINTES TO START OF TEXT, GR0 HAS REMAINING
NEWUPDATE=*  LENGTH PLUS ONE.  ON EXIT GR0 AND GR2 ARE UPDATED.
NEWUPDATE=         SPACE
NEWUPDATE=STMOVPW  DS    0H
NEWUPDATE=         MVC   0(12,GR3),=CL12' ' A FEW BLANKS TO START
NEWUPDATE=         LR    SCA,GR2            MAKE AN EXTRA COPY
NEWUPDATE=STMOVPWA CLI   0(SCA),C' '        A BLANK?
NEWUPDATE=         BE    STMOVPWB
NEWUPDATE=         CLI   0(SCA),C','        A COMMA?
NEWUPDATE=         BE    STMOVPWB
NEWUPDATE=         LA    SCA,1(,SCA)        NEXT CHAR.
NEWUPDATE=         BCT   GR0,STMOVPWA       THIS CAN'T FAIL
NEWUPDATE=         B     STPWNC             BUT JUST IN CASE
NEWUPDATE=STMOVPWB LR    GR1,SCA            ANOTHER COPY
NEWUPDATE=         SR    GR1,GR2            THIS GIVES THE LENGTH
NEWUPDATE=         CH    GR1,=H'12'         TOO BIG?
NEWUPDATE=         BNH   STMOVPWC           NO
NEWUPDATE=         FMSG  197,STPWXIT,TYPE=M  PW TOO LONG
NEWUPDATE=STMOVPWC LTR   GR1,GR1            NULL PW?
NEWUPDATE=         BZR   SCC                YUP, RETURN BLANKS
NEWUPDATE=         BCTR  GR1,0              IBM LENGTH
NEWUPDATE=         EX    GR1,STPWMVC        MOVE IT TO 0(GR3)
NEWUPDATE=         LR    GR2,SCA            NEW TEXT POINTER
NEWUPDATE=         BR    SCC                RETURN
NEWUPDATE=         SPACE 2
NEWUPDATE=*  CALLED TO SCAN FOR A 2ND PW ON A LINE, RETURNS 0(SCC)
NEWUPDATE=*  IF A 2ND PW IS FOUND AND 4(SCC) IF NOT.  GR2 CONTAINS
NEWUPDATE=*  A POINTER TO THE REMAINING TEXT AND GR0 THE LENGTH ON ENTRY.
NEWUPDATE=*  GR0 AND GR2 ARE UPDATED ON EXIT.
NEWUPDATE=         SPACE
NEWUPDATE=STSKIPW  DS    0H
NEWUPDATE=         CLI   0(GR2),C' '        SKIP OVER BLANKS
NEWUPDATE=         BE    STSKIPWA
NEWUPDATE=         CLI   0(GR2),C','        SKIP OVER COMMAS
NEWUPDATE=         BNER  SCC                NOT BLANK OR COMMA RETURN
NEWUPDATE=STSKIPWA LA    GR2,1(,GR2)        ON TO NEXT
NEWUPDATE=         BCT   GR0,STSKIPW        LOOP
NEWUPDATE=         B     4(,SCC)            OOPS, RAN OUT OF LINE
NEWUPDATE=         SPACE 2
NEWUPDATE=*  CALLED TO ENCODE AND SET THE NEW PW, USES THE PW TEXT
NEWUPDATE=*  FROM SETPW1
NEWUPDATE=         SPACE
NEWUPDATE=STNPW    DS    0H
NEWUPDATE=         MVC   SCRATCH2(12),SETPW1 GET THE NEW PW
NEWUPDATE=         LR    GR3,SCC
NEWUPDATE=         BAL   GR14,PWM           ENCODE IT
NEWUPDATE=         MVC   SAVEPW(4),SCRATCH2 SAVE IT FOR LATER
NEWUPDATE=         SVC   BINTIME
NEWUPDATE=         D     GR0,=F'60000000'   TIME IN MINS.
NEWUPDATE=         ST    GR1,SAVEPW+4       SAVE THIS TOO
NEWUPDATE=         BR    GR3                RETURN ADDRESS WAS MOVED HERE
NEWUPDATE=         SPACE 2
NEWUPDATE=*  CALLED TO DO OLD PW CONFIRMATION IF REQUESTED BY USER
NEWUPDATE=*  AND OPERATING IN TERMINAL MODE.
NEWUPDATE=         SPACE
NEWUPDATE=STOPWC   DS    0H
NEWUPDATE=         TM    SWS19,PWCONF       USER REQUEST THIS?
NEWUPDATE=         BOR   SCC                ON=OFF IS THIS MIXED UP WORLD
NEWUPDATE=         TM    SWS2,BATCHM        IF BATCH
NEWUPDATE=         BOR   SCC                THEN RETURN
NEWUPDATE=         FMSG  192,*,TYPE=M       ENTER OLD USER PASSWORD
NEWUPDATE=         LR    GR3,SCC            SAVE THIS HERE FOR NOW
NEWUPDATE=         BAL   SCC,STGETPW
NEWUPDATE=         LR    GR15,GR3           AND NOW HERE
NEWUPDATE=         LA    GR3,SCRATCH2       WHERE WE WANT THE PW TO BE
NEWUPDATE=         BAL   SCC,STMOVPW        MOVE IT
NEWUPDATE=         BAL   SCC,STSKIPW        CHECK FOR JUNK AT END OF LINE
NEWUPDATE=         B     STOPWCA            FOUND JUNK
NEWUPDATE=         BAL   GR14,PWM           ENCODE IT, CLOBBERS SCA, SCB, SCC
NEWUPDATE=         CLC   ACCPW,SCRATCH2     CHECK IT
NEWUPDATE=         BER   GR15               THIS IS WHERE WE HIDE THE LINK
NEWUPDATE=         CLC   SAVEPW(4),SCRATCH2 A 2ND CHANGE
NEWUPDATE=         BER   GR15
NEWUPDATE=STOPWCA  FMSG  193,STPWXIT,TYPE=M PASSWORD INCORRECT - RETURN
NEWUPDATE=         SPACE
NEWUPDATE=         DROP  SCD 
NEWUPDATE=         SPACE 3
NEWUPDATE=/END NEWPW
#4145
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. SIGMCD  - MOVE COPY:RATEVEC INTO THEDSECT TO KEEP  SIGMCD HAPPY
NEWUPDATE=/BEGIN SIGMCD
NEWUPDATE=/COPY "UNLTCH "
NEWUPDATE=/COPY "* "
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=4
NEWUPDATE=/SKIP C=1
NEWUPDATE=/END SIGMCD
#4146
DATE=Oct 31, 1978
PERSON=Ogden
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. SIGBATCH  - GIVE THE USER ONLY ONE CHANCE TO ENTER A SIGNON
NEWUPDATE=/.             COMMAND IN BATCH.
NEWUPDATE=/BEGIN SIGBATCH
NEWUPDATE=/COPY 'SYGNE '
NEWUPDATE=/COPY C=4
NEWUPDATE=/EDIT HOLD '7' = '6'
NEWUPDATE=/EDIT 'SIGNOFF' = 'SIGNOF' 
NEWUPDATE=/COPY 'SYGNUNA '
NEWUPDATE=         TM    SWS2,BATCHM
NEWUPDATE=         BO    SYGNOFNL            ONE CHANCE IN BATCH!
NEWUPDATE=/END SIGBATCH
#4147
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  SIGNOFF -- Make parsing of $SIGNOFF parameters (LONG, SHORT, $)
NEWUPDATE=/.             done by KWSCAN.
NEWUPDATE=/.             Change prompted by UBC change to MTS
NEWUPDATE=/BEGIN SIGNOFF
NEWUPDATE=/COPY "SYGNOFC "
NEWUPDATE=/SKIP BEFORE NEXT "B " NEXT "SYGNOF"
NEWUPDATE=         L     GR0,INREGP         SEE IF ANY PARAMETERS
NEWUPDATE=         LTR   GR0,GR0
NEWUPDATE=         BZ    SYGNOF             -> NONE
NEWUPDATE=*
NEWUPDATE=         LA    GR1,INREG          COMPUTE REMAINDER OF INPUT
NEWUPDATE=         S     GR1,INREGP
NEWUPDATE=         A     GR1,INREGL
NEWUPDATE=         STH   GR1,SCRATCH        TO PASS TO KWSCAN
NEWUPDATE=         L     GR2,INREGP         TEXT POINTER TO KWSCAN
NEWUPDATE=         XR    GR3,GR3            SPELLING CORRECTION BITS
NEWUPDATE=         IC    GR3,SPELCOR
NEWUPDATE=         SLL   GR3,14
NEWUPDATE=         LA    GR3,7(,GR3)        + PRINT, PROMPT, MULTIPLE
NEWUPDATE=         ST    GR3,SCRATCH+4      SWITCHES
NEWUPDATE=         L     GR13,KWSAVE
NEWUPDATE=         CALL  KWSCAN,(=Y(SIGOFLTL),SIGOFLT,SIGOFEXT,(GR2),SIGOFRHT,SCRX
NEWUPDATE=               ATCH,SCRATCH+4,0),MF=(E,SCRATCH+8)
NEWUPDATE=         LTR   GR15,GR15
NEWUPDATE=         BNZ   INLOOP             -> ABORT IF BAD RC
NEWUPDATE=* 
NEWUPDATE=         TM    SWS2,BATCHM
NEWUPDATE=         BZ    SYGNOF             -> DO WHAT USER SAID IF TERMINAL
NEWUPDATE=         MVI   SYGTYPE,0          OTHERWISE FORCE LONG SIGNOFF
NEWUPDATE=/COPY ".S370M3 "
NEWUPDATE=         SPACE 3
NEWUPDATE=*        SIGNOFF EXECUTE TABLE
NEWUPDATE=         SPACE 1
NEWUPDATE=SIGOFEXT DS    0H
NEWUPDATE=SIGOFSHO MVI   SYGTYPE,1          SHORT
NEWUPDATE=SIGOF$   MVI   SYGTYPE,2          $
NEWUPDATE=SIGOFLON MVI   SYGTYPE,0          LONG
NEWUPDATE=         SPACE 3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SPACE 1
NEWUPDATE=/COPY "LSOL "
NEWUPDATE=         SPACE 3
NEWUPDATE=SIGOFLT  DC    AL1(SIGOFRHT-SIGOFRHT,0,0)   $SIGNOFF LEFT-HAND TABLE
NEWUPDATE=SIGOFLTL EQU   *-SIGOFLT
NEWUPDATE=         SPACE 2
NEWUPDATE=SIGOFRHT DC    AL1(20,SIGOFSHO-SIGOFEXT,6,1),C'SHORT'
NEWUPDATE=         DC    AL1(1,SIGOF$-SIGOFEXT,1),C'$'
NEWUPDATE=         DC    AL1(20,SIGOFLON-SIGOFEXT,5,1),C'LONG'
NEWUPDATE=         DC    X'FF'
NEWUPDATE=/END SIGNOFF
#4148
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  REPLINN  --  Replace all usages of LINNBR in the system with 
NEWUPDATE=/.               calls to LINENBR, which never makes sideways 
NEWUPDATE=/.               branch.
NEWUPDATE=/BEGIN REPLINN
NEWUPDATE=/COPY "DELSFT "
NEWUPDATE=LINENBR  ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,3))
NEWUPDATE=/COPY "NUMBB "
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/EDIT "SCC,SCC" = "GR1,GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/DELETE NEXT "BAL" NEXT "GR14,LINNBRN"
NEWUPDATE=         RICALL LINENBR(A(255),,AFD)   TRY FOR STARTINGNUMBER
NEWUPDATE=/COPY BEFORE NEXT "C" NEXT "GR0,"
NEWUPDATE=/EDIT F=3 "0" = "2"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "0" = "2"
NEWUPDATE=/DELETE NEXT "LR"
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT HOLD "SCC" = "GR1"
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=NUMFSP   LR    SCC,GR2             COPY BEGINNING LINE NUMBER
NEWUPDATE=/SKIP C=1
NEWUPDATE=         RICALL LINENBR(A(255),,AFD)   TRY FOR INCREMENT
NEWUPDATE=/COPY BEFORE NEXT "C" NEXT "GR0,"
NEWUPDATE=/EDIT "GR0" = "GR2"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "GR0" = "GR2"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/BUFFER NUMSSP
NEWUPDATE=/DELETE "NUMSSP "
NEWUPDATE=NUMOK    LTR   SCA,GR1            CHECK FOR EXTRA PARAM
NEWUPDATE=         BZ    *+8                -> NONE, SKIP NEXPARB CALL
NEWUPDATE=/COPY C=2
NEWUPDATE=/BUFFER END
NEWUPDATE=/EDIT HOLD "      " = "NUMSSP"
NEWUPDATE=/EDIT "GR0" = "GR2"
NEWUPDATE=/EDIT "SCD" = "SCC"
NEWUPDATE=/INCLUDE NUMSSP
NEWUPDATE=/EDIT F=1 "NUMOK" = ""
NEWUPDATE=/COPY "NUMSTD "
NEWUPDATE=         LR    GR2,SCC            DEFINE INCREMENT, TOO
NEWUPDATE=/SKIP NEXT "B" NEXT "NUMOK"
NEWUPDATE=         B     NUMSSP
NEWUPDATE=/COPY BEFORE "NUMSTD1 "
NEWUPDATE=/EDIT "SCD" = "GR2"
NEWUPDATE=/COPY BEFORE "NUMSTD2 "
NEWUPDATE=NUMSTD2  LR    SCC,GR2            COPY OVER STARTINGNUMBER
NEWUPDATE=/EDIT HOLD "NUMSTD2" = "       "
NEWUPDATE=/EDIT F=3 "0" = "GR2"
NEWUPDATE=/COPY BEFORE "NUMCFB "
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCA" = "GR1"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/END REPLINN
#4149
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  UBCFRBUG -- Fix bug in altering and displaying FRS.  Fixed by
NEWUPDATE=/.              UBC update, included here.
NEWUPDATE=/BEGIN UBCFRBUG
NEWUPDATE=/COPY "DYSPLB20 "
NEWUPDATE=/DELETE NEXT "SLL" NEXT "SCA,3"
NEWUPDATE=         SLL   SCA,2              (FRS ARE ALREADY MULTIPLES OF 2)
NEWUPDATE=/COPY "ALTC2 "
NEWUPDATE=/DELETE NEXT "SLL" NEXT "SCD,3"
NEWUPDATE=         SLL   SCD,2              (FRS ARE ALREADY MULTIPLES OF 2)
NEWUPDATE=/END UBCFRBUG
#4150
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  GIGO  --  Install GETINTCC and GETOUTTC subroutines in MTS. 
NEWUPDATE=/.            Make changes in signoff procedure to use them.
NEWUPDATE=/BEGIN GIGO
NEWUPDATE=/COPY "GROD "
NEWUPDATE=/DELETE NEXT "L" NEXT "GR15,ASETKEY"
NEWUPDATE=/SKIP NEXT "XC" NEXT "ASETFSAV"
NEWUPDATE=/DELETE NEXT "SR" NEXT "GR3,GR3"
NEWUPDATE=/COPY BEFORE NEXT "BZ" NEXT "SYGNODES"
NEWUPDATE=/EDIT F=3 "DES" = "DET"
NEWUPDATE=/DELETE "SYGTPI "
NEWUPDATE=/SKIP C=1
NEWUPDATE=/EDIT "      " = "SYGTPI"
NEWUPDATE=/EDIT F=3 "GETIN" = "GETINTC"
NEWUPDATE=/SKIP C=1
NEWUPDATE=/EDIT "SYGDHP" = "      "
NEWUPDATE=/DELETE "SYGNODES "
NEWUPDATE=/SKIP BEFORE "SYGNODET "
NEWUPDATE=/COPY "SINTNB "
NEWUPDATE=/COPY NEXT "STH" NEXT "SCA,CLSCMDID"
NEWUPDATE=         BAL   GR14,GETOUTTC      THROW AWAY LFTC JUNK NOW
NEWUPDATE=/COPY "DYSPLA2 "
NEWUPDATE=/SKIP NEXT "BNZ "
NEWUPDATE=/COPY "DDA5 "
NEWUPDATE=/DELETE NEXT "XC" NEXT "ADYSSUB"
NEWUPDATE=/END GIGO
#4151
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  STOP  --  Make change to DSROFF and ERRRTN so that signoffs will
NEWUPDATE=/.            be forced even if in a gated subroutine.  This means
NEWUPDATE=/.            that tasks waiting in the DSR during a call to READ
NEWUPDATE=/.            from a user subroutine will stop, rather than 
NEWUPDATE=/.            having to be blasted or some similar violent act.
NEWUPDATE=/BEGIN STOP
NEWUPDATE=/COPY "DSROFF "
NEWUPDATE=/DELETE NEXT "TM" NEXT "SWSP1,GATED"
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY "ERRRTN "
NEWUPDATE=/COPY "ERROFF "
NEWUPDATE=/DELETE NEXT "TM" NEXT "SWSP1,GATED"
NEWUPDATE=/SKIP C=1
NEWUPDATE=/END STOP
#4152
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  NOPW  --  Define mechanism whereby DSR may request that a signon
NEWUPDATE=/.            not require a password.
NEWUPDATE=/BEGIN NOPW
NEWUPDATE=/COPY "SIGPAST "
NEWUPDATE=/DELETE NEXT "TM" NEXT "SWS7"
NEWUPDATE=/SKIP C=1
NEWUPDATE=         TM    SWS7,NOPWN+NOPWN2  PASSWORD NEEDED?
NEWUPDATE=         BNZ   SYGNPW             -> NO PW IF BNCH OR DSR REQUESTED
NEWUPDATE=/COPY "SYGNOFX "
NEWUPDATE=/DELETE NEXT "CLI" NEXT "JOBTYPE"
NEWUPDATE=/SKIP BEFORE "SYGNOTF "
NEWUPDATE=/DELETE "STARMVC "
NEWUPDATE=/SKIP C=1
NEWUPDATE=/END NOPW
#4153
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDS
NBR=636/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  UNLFIX  --  Fix a couple of potential problems in UNLI/UNLC
NEWUPDATE=/.              which could cause buffer release snarks if user hangs
NEWUPDATE=/.              up at critical moment.
NEWUPDATE=/BEGIN UNLFIX
NEWUPDATE=/COPY "UNLCF "
NEWUPDATE=/COPY NEXT "BALR "
NEWUPDATE=         L     GR1,CLSPTR+EXECFLG*4
NEWUPDATE=         XC    CLSUDP-CLSAREA(4,GR1),CLSUDP-CLSAREA(GR1)               *
NEWUPDATE=                                  ZERO POINTER TO USER CLS EXTENSION
NEWUPDATE=/COPY "UNLNOUND "
NEWUPDATE=/COPY BEFORE NEXT "BZ"
NEWUPDATE=/EDIT F=3 "8" = "12"
NEWUPDATE=         ST    SCA,CLSPGNSA       ZERO POINTER BEFORE HIABYMH
NEWUPDATE=/DELETE NEXT "ST" NEXT "SCA"
NEWUPDATE=/COPY BEFORE NEXT "BZ"
NEWUPDATE=/EDIT F=3 "8" = "12"
NEWUPDATE=         ST    SCA,CLSATNSA       ZERO POINTER BEFORE HIABYMH
NEWUPDATE=/DELETE NEXT "ST" NEXT "SCA"
NEWUPDATE=/DELETE NEXT "ST" NEXT "SCA,CLSUDP"
NEWUPDATE=/END UNLFIX
#4154
DATE=Oct 31, 1978
PERSON=Ogden
NAME=DSRI
NBR=639/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. CHKMODS  -  GET DSRI TO CHECK THE MODIFIER WORD IN A
NEWUPDATE=/.             more controlled way then getting a PGNT behind
NEWUPDATE=/.             the GATE.
NEWUPDATE=/BEGIN CHKMODS
NEWUPDATE=/COPY 'GIOIO '
NEWUPDATE=/COPY C=5
NEWUPDATE=         BPI   OPND,GIOBP
NEWUPDATE=/COPY C=2
NEWUPDATE=         C     GR1,0(SCC)  NOT REALLY A COMPARE, JUST CHECKING ADDR.
NEWUPDATE=         BPI   OPND,GIOBP
NEWUPDATE=/END CHKMODS
#4155
DATE=Oct 31, 1978
PERSON=Ogden
NAME=DSRI
NBR=639/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXLNR  -  Change to deal with line numbers bigger than
NEWUPDATE=/.            999999.999 or smaller than -99999.999.
NEWUPDATE=/BEGIN FIXLNR
NEWUPDATE=/COPY 'GIOSIJ2 '
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT  'PUTDEC' = 'PUTLNR'
NEWUPDATE=/END FIXLNR
#4156
DATE=Oct 31, 1978
PERSON=Ogden
NAME=DSRI
NBR=639/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. CONJUNK - Check for junk at the end of $CONTINUE WITH lines.
NEWUPDATE=/BEGIN CONJUNK
NEWUPDATE=/COPY 'GIOSIQC '
NEWUPDATE=/COPY C=3 
NEWUPDATE=/EDIT "=F'16'" = "=A(L'CONTW)" 
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT "(15)" = "(L'CONTW)"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "(15)" = "(L'CONTW)"
NEWUPDATE=/EDIT "(15)" = ""
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP BEFORE 'GIOSIQBB '
NEWUPDATE=         CH    SCC,=H'16'          IF IT ISN'T THIS LONG THEN
NEWUPDATE=         BL    GIOICGBG            IT IS WRONG
NEWUPDATE=         CLI   14(SCA),C' '        AND IF THIS ISN'T A BLANK
NEWUPDATE=         BNE   GIOICGBG            THAT IS AN ERROR TOO
NEWUPDATE=         LA    SCA,L'CONTW(,SCA)   ADVANCE PAST THIS
NEWUPDATE=         LR    SCB,SCC             LENGTH
NEWUPDATE=         SH    SCB,=Y(L'CONTW)     REMAINING LENGTH 
NEWUPDATE=         BAL   GR14,NEXPAR         FIND NEXT PAR - FDNAME I HOPE
NEWUPDATE=         BZ    GIOICGBG            NO FDNAME, ERROR
NEWUPDATE=         LR    SCC,SCA             SAVE POINTER TO FDNAME
NEWUPDATE=         LR    GR15,SCB            SAVE REMAINING LENGTH FOR MVCL
NEWUPDATE=         BAL   GR14,NEXPAR         FIND ANYTHING ELSE 
NEWUPDATE=         BZ    GIOICP              NOPE, CAN'T BE RETURN THEN
NEWUPDATE=         CH    SCB,=H'6'           LONG ENOUGH FOR "RETURN"
NEWUPDATE=         BL    GIOICGBG            NOPE, JUNK AT END
NEWUPDATE=         MVC   SCRATCH(6),0(SCA)   MOVE TO SAFE PLACE
NEWUPDATE=         L     GR14,=V(CASECONV) 
NEWUPDATE=         TR    SCRATCH(6),0(GR14)  TO UPPER CASE
NEWUPDATE=         CLC   =C'RETURN',SCRATCH  SOMETHING WE LIKE?
NEWUPDATE=         BNE   GIOICGBG            NO, GARBAGE AT END
NEWUPDATE=         CH    SCB,=H'6'           ANYTHING MORE?
NEWUPDATE=         BE    GIOICRET            NO, THEN GO FLAG IT
NEWUPDATE=         CLI   6(SCA),C' '         MUST BE A BLANK OR ELSE
NEWUPDATE=         BNE   GIOICGBG            NOT BLANK, TRASH
NEWUPDATE=         BAL   GR14,NEXPAR         ANYTHING MORE?
NEWUPDATE=         BNZ   GIOICGBG            YUP, JUNK
NEWUPDATE=GIOICRET SR    GR3,GR3             FLAG, NO "RETURN"
NEWUPDATE=         B     GIOFDG 
NEWUPDATE=         SPACE
NEWUPDATE=GIOICP   LA    GR3,1               FLAG "RETURN"
NEWUPDATE=         LA    SCA,0(SCC,GR15)     SCA=FDNAME+REM-LENGTH
NEWUPDATE=         CLI   0(SCA),C' '         A BLANK AFTER FDNAME? 
NEWUPDATE=         BPI   OPND,GIOICP1        NOT A BLANK I GUESS
NEWUPDATE=         BE    GIOFDG              YES, WHAT LUCK
NEWUPDATE=GIOICP1  LR    GR0,SCC             POINTER TO FDNAME 
NEWUPDATE=         LR    GR14,SCC            POINTER TO FDNAME FOR MVCL
NEWUPDATE=         BCTR  GR0,0               LESS ONE FOR MVCL
NEWUPDATE=         LR    SCC,GR0             FDGET WILL WANT THIS LATER
NEWUPDATE=         LR    GR1,GR15            GR15 HAS THE REMAINING LENGTH
NEWUPDATE=         MVCL  GR0,GR14            MOVE IT ALL DOWN BY ONE
NEWUPDATE=         BCTR  SCA,0
NEWUPDATE=         MVI   0(SCA),C' '         AND ADD A BLANK AT THE END
NEWUPDATE=GIOFDG   C     SCD,MSOURCE         ATTEMPT TO CHANGE MSOURCE?
NEWUPDATE=         BE    GIOCCMS             YUP, CAN'T ALLOW THAT
NEWUPDATE=         BAL   GR14,FDGET          GET FDUB - SCC HAS POINTER TO FDNAME
NEWUPDATE=         BAL   GR14,BLANKIT        CLEAN UP THE MESS
NEWUPDATE=         B     GIOREPT
NEWUPDATE=         SPACE 2
NEWUPDATE=GIOCCMS  FMSG  82,ERRSAV,TYPE=M        CAN'T CHANGE MSOURCE
NEWUPDATE=         SPACE 2
NEWUPDATE=GIOICGBG FMSG  169,*,TYPE=M       INVALID  $CONTINUE WITH
NEWUPDATE=         TM    SWS2,BATCHM        BATCH?
NEWUPDATE=         BO    GIOICGB1           ALWAYS IN BATCH
NEWUPDATE=         LR    SCA,SCD
NEWUPDATE=         L     SCB,MSOURCE
NEWUPDATE=         BAL   GR14,CLFDUB        $C...W READ FROM MSOURCE?
NEWUPDATE=         BE    ERRSAV
NEWUPDATE=GIOICGB1 LA    GR1,256            A PLACE TO PUT THE FDNAME
NEWUPDATE=         BAL   GR14,PABOSFTC
NEWUPDATE=         LR    SCA,GR1            SAVE THIS FOR LATER
NEWUPDATE=         L     SCB,FDUBNAME
NEWUPDATE=         LH    SCC,0(,SCB)        HW LENGTH OF THE FDNAME
NEWUPDATE=         BCTR  SCC,0              IBM LENGTH OF THE FDNAME
NEWUPDATE=         EX    SCC,GIONMVC
NEWUPDATE=         LA    SCB,1(SCA,SCC)     ONE PAST END OF FDNAME
NEWUPDATE=         MVI   0(SCB),C' '        DELIM FOR MSG ROUTINE
NEWUPDATE=         LA    SCB,FDUBCL         ADDRESS OF CURRENT LINE# 
NEWUPDATE=         FMSG  183,*,TYPE=M       INVALID $CONTINUE WITH ...
NEWUPDATE=         LR    GR1,SCA
NEWUPDATE=         BAL   GR14,TABOSFTC      CLEAN UP 
NEWUPDATE=         B     ERRSAV             GET THE HELL OUT
NEWUPDATE=         SPACE
NEWUPDATE=GIONMVC  MVC   0(0,SCA),2(SCB)    EXECUTED TO MOVE EXTERNAL FDNAME
NEWUPDATE=         EJECT 
NEWUPDATE=/COPY BEFORE 'CONTW '
NEWUPDATE=/EDIT "WITH " = "WITH" 
NEWUPDATE=/END CONJUNK
#4157
DATE=Oct 31, 1978
PERSON=Ogden
NAME=DSRI
NBR=639/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. MOVEMAKE - MOVE THE MAKE MACRO FROM COPY:MTS.MACROS TO DSRI
NEWUPDATE=/BEGIN MOVEMAKE
NEWUPDATE=/COPY C=1
NEWUPDATE=         MACRO 
NEWUPDATE=         MAKE  &NAME,&LABEL= 
NEWUPDATE=         DC    CL8'&NAME' 
NEWUPDATE=         USING *,GR15 
NEWUPDATE=         AIF   (T'&LABEL EQ 'O').L1 
NEWUPDATE=&LABEL   SAVE  (14,12),T 
NEWUPDATE=         ENTRY &LABEL 
NEWUPDATE=         AGO   .L2 
NEWUPDATE=.L1      ANOP 
NEWUPDATE=&NAME    SAVE  (14,12),T 
NEWUPDATE=         ENTRY &NAME 
NEWUPDATE=.L2      ANOP 
NEWUPDATE=         AIF   ('&NAME' EQ 'READ' OR '&NAME' EQ 'WRITE').L3 
NEWUPDATE=         SR    SCA,SCA 
NEWUPDATE=         LA    SCC,&NAME.I*4 
NEWUPDATE=.L4      L     GR5,LGIOSP2 
NEWUPDATE=         BR    GR5 
NEWUPDATE=         DROP  GR15 
NEWUPDATE=         SPACE 5 
NEWUPDATE=         AGO   .END 
NEWUPDATE=.L3      L     SCB,16(1) 
NEWUPDATE=         AIF   ('&NAME' EQ 'READ').L5 
NEWUPDATE=         LA    SCA,8 
NEWUPDATE=         AGO   .L4 
NEWUPDATE=.L5      LA    SCA,4 
NEWUPDATE=         AGO   .L4 
NEWUPDATE=.END     MEND 
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SPACE 5
NEWUPDATE=/COPY NEXT 'SETPARM' 
NEWUPDATE=/SKIP C=1
NEWUPDATE=         EJECT 
NEWUPDATE=/COPY 'CALLNOHO '
NEWUPDATE=/COPY C=8
NEWUPDATE=/SKIP C=1
NEWUPDATE=         SPACE 
NEWUPDATE=/END MAKEMOVE
#4158
DATE=Oct 31, 1978
PERSON=Ogden
NAME=DSRI
NBR=639/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. GOODMSGS - FIX THE DSRI MESSAGE "... CALL USES ILLEGAL PARS..."
NEWUPDATE=/.            UP TO SAY JUST WHAT IS WRONG
NEWUPDATE=/BEGIN GOODMSGS
NEWUPDATE=/COPY NEXT 'MAKE'
NEWUPDATE=         DS    0H                 START ON A HALFWORD TO BE SAFE
NEWUPDATE=/COPY NEXT "DC" NEXT "CL8'&NAME'"
NEWUPDATE=         DC    CL4'    '          TO GIVE THE MSG ROUTINES A DELIM.
NEWUPDATE=/COPY '.L3 '
NEWUPDATE=         BPI   OPND,GIOERR1
NEWUPDATE=/COPY 'GIOSPP '
NEWUPDATE=/EDIT 'GIOBPNF' = 'GIOERR3'
NEWUPDATE=/COPY 'GIOSPOO '
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR4'
NEWUPDATE=/COPY BEFORE NEXT 'BPI' NEXT 'OPND,GIOBP'
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR4'
NEWUPDATE=/COPY 'GIONOTO '
NEWUPDATE=/EDIT 'GIOZFDB' = 'GIOERR5'
NEWUPDATE=/COPY 'GIORDWR '
NEWUPDATE=/EDIT 'GIOBPNF' = 'GIOERR6'
NEWUPDATE=/COPY 'GIORW5 '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBPNF' = 'GIOERR6'
NEWUPDATE=/COPY BEFORE NEXT 'BNZ' NEXT 'GIOBPNF'
NEWUPDATE=/EDIT 'GIOBPNF' = 'GIOERR12'
NEWUPDATE=/COPY 'GIOBTCH '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'LR ' = 'LTR'
NEWUPDATE=         BZ    GIOSAV
NEWUPDATE=/COPY 'GIOIO '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR2'
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR2'
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR7'
NEWUPDATE=/COPY BEFORE 'GIOCKLN '
NEWUPDATE=/SKIP C=1
NEWUPDATE=GIOCKLN  CLI   12+1(GR1),USERSEG*16  CHECK LINE# 
NEWUPDATE=         BPI   OPND,GIOERR2          BAD PAR
NEWUPDATE=         BL    GIOERR8               MUST BE ABOVE SYS. SEGMENT
NEWUPDATE=/COPY C=2
NEWUPDATE=/SKIP C=2
NEWUPDATE=         CLI   0+1(GR1),USERSEG*16   CHECK BUFFER
NEWUPDATE=         BL    GIOERR9
NEWUPDATE=         CLI   4+1(GR1),USERSEG*16   CHECK LENGTH
NEWUPDATE=         BL    GIOERR10
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR10' 
NEWUPDATE=/COPY C=3
NEWUPDATE=/EDIT 'GIOSLE' = 'GIOERR11'
NEWUPDATE=/COPY C=2
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR9'
NEWUPDATE=/COPY 'GIONIC '
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR2'
NEWUPDATE=/COPY BEFORE NEXT 'BPI'
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR7'
NEWUPDATE=/COPY 'GIOSIS '
NEWUPDATE=/COPY C=10
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR10'
NEWUPDATE=/COPY 'GIOSIS3A '
NEWUPDATE=         BPI   OPND,GIOERR2
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR8'
NEWUPDATE=/COPY 'GIOSIS2 '
NEWUPDATE=/COPY C=6
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR10'
NEWUPDATE=/COPY 'GIOSIZ3 '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR8'
NEWUPDATE=/COPY 'GIOSII2 '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'GIOBP' = 'GIOERR8'
NEWUPDATE=/COPY BEFORE 'GIOSLE '
NEWUPDATE=/SKIP 'GIOBPM'
NEWUPDATE=         EJECT
NEWUPDATE=*   IF YOU GET TO THIS PART OF THE CODE IT MEANS THAT ONE OR
NEWUPDATE=*   MORE OF THE PARAMETERS TO THE I/O CALL WERE BAD, AND WE
NEWUPDATE=*   NEED TO PRODUCE AN ERROR MESSAGE AND EXIT.  MOST OF THE
NEWUPDATE=*   DIRTY WORK IS LEFT TO THE MSG ROUTINES WHICH ARE CALLED
NEWUPDATE=*   BY FMSG.
NEWUPDATE=         SPACE  2
NEWUPDATE=         PUSH  USING
NEWUPDATE=         DROP
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR1  BALR  GR5,0               NEED A GOOD LOCAL BASE
NEWUPDATE=         USING *,GR5
NEWUPDATE=         L     GR5,LGIOSP          JUST LIKE EVERONE ELSE
NEWUPDATE=         DROP  GR5
NEWUPDATE=         USING GIOSP,GR5
NEWUPDATE=         L     GR10,LGIOSP+4
NEWUPDATE=         USING GIOSP+4096,GR10
NEWUPDATE=         HWIMB 1,N=7
NEWUPDATE=         USING DSCT,GR4
NEWUPDATE=         LM    GR11,GR12,COMBASE
NEWUPDATE=         DROP
NEWUPDATE=         POP   USING               BACK TO NORMAL
NEWUPDATE=         SR    SCD,SCD             NO FDUB
NEWUPDATE=         SR    GR2,GR2             NO SWITCHES TO START
NEWUPDATE=         LA    GR14,0(GR14)        COME THROUGH THE GATE?
NEWUPDATE=         C     GR14,=V(GATEOUT)
NEWUPDATE=         BE    *+8                 YES
NEWUPDATE=         LA    GR2,FDUBNOG         NO - FLAG IT FOR LATER
NEWUPDATE=         CHKPAR NOTIFY=GIOERR2     TURN OFF MODE CHANGE IF NEC.
NEWUPDATE=         O     GR2,=A(FDUBPRC)     REMEMBER
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR2  TM    0(GR1),0
NEWUPDATE=         BPI   OPND,GIOERR2A
NEWUPDATE=         BAL   GR1,GIOERR 
NEWUPDATE=         FMSG  172,GIOBTCH,TYPE=M  PART OF PAR LIST ISN'T ADDR. 
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR2A BAL   GR1,GIOERR
NEWUPDATE=         FMSG  173,GIOBTCH,TYPE=M  ALL OF PAR LIST ISN'T ADDR.
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR3  LR    SCD,GR2
NEWUPDATE=GIOERR4  BAL   GR1,GIOERR
NEWUPDATE=         FMSG  174,GIOBTCH,TYPE=M  INVLAID FDNAME POINTER
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR5  BAL   GR1,GIOERR
NEWUPDATE=         FMSG  175,GIOBTCH,TYPE=M  INVALID FDUB
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR6  LR    SCD,GR2
NEWUPDATE=         BAL   GR1,GIOERR
NEWUPDATE=         FMSG  176,GIOBTCH,TYPE=M  UNIT PAR IS NOT ADDR.
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR7  BAL   GR1,GIOERR
NEWUPDATE=         FMSG  177,GIOBTCH,TYPE=M  MODS NOT ADDRESSABLE
NEWUPDATE=         SPACE 
NEWUPDATE=GIOERR8  BAL   GR1,GIOERR
NEWUPDATE=         FMSG  178,GIOBTCH,TYPE=M  LINE# NOT ADDRESSABLE
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR9  BAL   GR1,GIOERR
NEWUPDATE=         FMSG  179,GIOBTCH,TYPE=M  I/O BUFFER IS NOT ADDRESSABLE
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR10 BAL   GR1,GIOERR
NEWUPDATE=         FMSG  180,GIOBTCH,TYPE=M  LENGTH IS NOT ADDRESSABLE
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR11 BAL   GR1,GIOERR
NEWUPDATE=         FMSG  181,GIOBTCH,TYPE=M  OUTPUT CALL USES NEG. LENGTH
NEWUPDATE=         SPACE
NEWUPDATE=GIOERR12 BAL   GR1,GIOERR
NEWUPDATE=         FMSG  182,GIOBTCH,TYPE=M  UNIT PAR. IS INVALID
NEWUPDATE=         SPACE 2
NEWUPDATE=*  THIS ROUTINE IS CALLED ON GR1, IT SETS SCA TO POINT AT THE
NEWUPDATE=*  CALLER'S GR14 ADDRESS AND SCB TO POINT AT THE NAME OF THE
NEWUPDATE=*  CALLED ROUTINE.
NEWUPDATE=         SPACE 
NEWUPDATE=GIOERR   LA    SCB,=C'I/O '                A NAME TO USE IF NO OTHER
NEWUPDATE=         L     SCA,16(,GR13)               SEARCH FOR A BETTER NAME
NEWUPDATE=         LA    SCA,0(,SCA)
NEWUPDATE=         CL    SCA,=A(GIOENTRY)
NEWUPDATE=         BL    GIOERRA                     TOO LOW
NEWUPDATE=         CL    SCA,LGIOSP
NEWUPDATE=         BNL   GIOERRA                     TOO HIGH
NEWUPDATE=         SL    SCA,=F'12'                  BACK UP TO NAME
NEWUPDATE=         LR    SCB,SCA                     ADDRESS OF NAME TO USE
NEWUPDATE=GIOERRA  DS    0H
NEWUPDATE=         LA    SCA,12(,GR13)               CALLER'S GR14 IN SA
NEWUPDATE=         L     SCD,0(,SCA)
NEWUPDATE=         LA    SCD,0(,SCD)                 CLEAN IT
NEWUPDATE=         C     SCD,=V(GATEOUT)             IS THE GATE IN THE WAY?
NEWUPDATE=         BNE   GIOERRB
NEWUPDATE=         LA    SCA,GATER14
NEWUPDATE=GIOERRB  BR    GR1                         BACK WE GO
NEWUPDATE=/END GOODMSGS
#4159
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=DSRI
NBR=639/1
NEWUPDATE=/. ================================================================
NEWUPDATE=/.  EOFJUNK  --  Check for junk following $ENDFILE card.
NEWUPDATE=/BEGIN EOFJUNK
NEWUPDATE=/COPY "GIOSIQU "
NEWUPDATE=         CH    SCC,=Y(L'EOF)      LONG ENOUGH FOR $ENDFILE?
NEWUPDATE=         BL    GIOSIQC            -> NO WAY, JOSE
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "8" = "L'EOF"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT F=3 "8" = "L'EOF"
NEWUPDATE=/EDIT F=3 "=C'$ENDFILE'" = "EOF"
NEWUPDATE=/COPY BEFORE "ISENDFIL "
NEWUPDATE=         B     GIOSIQUE           -> OK, GOT-UM ENDFILE
NEWUPDATE=         SPACE
NEWUPDATE=ISENDFIL LR    SCB,SCC            COPY OVER COUNT FOR NEXPAR
NEWUPDATE=         SH    SCB,=Y(L'EOF)
NEWUPDATE=         BNP   GIOSIQUE           -> NOTHING LEFT, OK ENDFILE
NEWUPDATE=         AH    SCA,=Y(L'EOF)
NEWUPDATE=         CLI   0(SCA),C' '
NEWUPDATE=         BNE   GIOEOFBG           -> NOT A BLANK AT END, BUM ONE
NEWUPDATE=         BAL   GR14,NEXPAR
NEWUPDATE=         BNZ   GIOEOFBG           -> EXTRA STUFF, BUM ONE
NEWUPDATE=/EDIT "ISENDFIL" = "GIOSIQUE"
NEWUPDATE=/COPY BEFORE "GIOICGBG"
NEWUPDATE=GIOEOFBG FMSG  37,GIO##BG,TYPE=M  INVALID $ENDFILE ...
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "       " = "GIO##BG"
NEWUPDATE=/COPY "BINEOF "
NEWUPDATE=EOF      DC    C'$ENDFILE'
NEWUPDATE=/END EOFJUNK
#4160
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=DSRI
NBR=639/1
NEWUPDATE=/. ================================================================
NEWUPDATE=/.  NOPW  --  Define mechanism whereby DSR may request that no
NEWUPDATE=/.            password is needed for this signon.
NEWUPDATE=/BEGIN NOPW
NEWUPDATE=/COPY "GIONTFY "
NEWUPDATE=/SKIP BEFORE NEXT "BR" NEXT "14"
NEWUPDATE=         LA    GR0,1              REGULAR-TYPE NOTIFY
NEWUPDATE=         CLI   FDBDSRSW,2         DID DSR SAY NO PASSWORD, TOO?
NEWUPDATE=         BNE   *+8
NEWUPDATE=         LA    GR0,4+1            INCLUDE IRREGULAR ONE FROM DSR
NEWUPDATE=         L     14,12(,13)
NEWUPDATE=         LM    1,12,24(13)
NEWUPDATE=         XR    15,15
NEWUPDATE=/COPY "GIOSIRA "
NEWUPDATE=/COPY NEXT "SR"
NEWUPDATE=         CLI   FDBDSRSW,2
NEWUPDATE=         BNE   *+8                -> NO NO PASSWORD NOTIFICATION
NEWUPDATE=         LA    SCB,4
NEWUPDATE=/END NOPW
#4161
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=DSRS
NBR=637/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXHADDD - FIX THIS TO USE THE STACK (AND NOT LOOP)
NEWUPDATE=/BEGIN FIXHADDD
NEWUPDATE=/COPY 'DSRS '
NEWUPDATE=/COPY NEXT 'ENTRY' NEXT 'PCHCLOS,PTRCLOS'
NEWUPDATE=/COPY C=1
NEWUPDATE=ZHADDDA  ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(2,0))
NEWUPDATE=         SPACE 5
NEWUPDATE=/COPY 'HCTHOLD '
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=5
NEWUPDATE=         RICALL ZHADDDA(,HCTLDR)  GO HOLD IT
NEWUPDATE=/END FIXHADDD
#4162
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=DSRS
NBR=637/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  REPLINN -- Replace calls to LINNBRN in system with calls to 
NEWUPDATE=/.             new routine LINENBR which never takes the sidewasy
NEWUPDATE=/.             branch.
NEWUPDATE=/BEGIN REPLINN
NEWUPDATE=/COPY "ZHADDDA "
NEWUPDATE=LINENBR ROUTINE EXTERNAL,LINKAGE-TYPE(MTS),PARAMETER-TYPE(R(3,3))
NEWUPDATE=/COPY "PEEL "
NEWUPDATE=/COPY NEXT "LR" NEXT "SCC,SCB"
NEWUPDATE=/EDIT "SCC" = "GR1"
NEWUPDATE=/EDIT "GR1" = "SCC"
NEWUPDATE=/EDIT "GR1,0(,GR1)" = "GR0,0(,SCC)"
NEWUPDATE=/SKIP C=2
NEWUPDATE=         LA    GR3,0(,GR1)        CLEAN AND COPY
NEWUPDATE=/SKIP BEFORE "PEEL1 "
NEWUPDATE=         STM   GR14,GR15,PEELSAV  I WISH I DIDN'T HAVE TO DO THIS
NEWUPDATE=         RICALL LINENBR(,,(SCD))  TRY FOR A LINE NUMBER
NEWUPDATE=         SRA   GR15,3             CHECK FOR RC=8
NEWUPDATE=         LM    GR14,GR15,PEELSAV
NEWUPDATE=         BNZ   PEELERR            -> ERROR MESSAGE RETURNED
NEWUPDATE=         LTR   GR0,GR0 
NEWUPDATE=         BNP   PEEL1              -> NO TEXT LEFT
NEWUPDATE=         CLC   LNS,0(GR1) 
NEWUPDATE=         BNE   PEEL1              -> LNS DIDN'T END LINE NUMBER
NEWUPDATE=         LA    GR1,1(,GR1)        EAT UP LNS
NEWUPDATE=         BCTR  GR0,0
NEWUPDATE=/EDIT "GR2" = "SCC"
NEWUPDATE=/EDIT "GR0,0(,GR2)" = "GR2,0(,SCC)"
NEWUPDATE=/SKIP C=2
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "GR1" = "GR0"
NEWUPDATE=/SKIP C=2
NEWUPDATE=         LA    GR2,0(,GR1)        COPY AND CLEAN WHERE TO MOVE TO
NEWUPDATE=         LR    GR1,GR0            COUNT OF BYTES TO MOVE
NEWUPDATE=         CR    GR2,GR3 
NEWUPDATE=         BE    PLMAX              -> SKIP MOVE IF SAME ADDRESS
NEWUPDATE=/COPY NEXT "LH" NEXT "GR1,0(,SCC)"
NEWUPDATE=/SKIP C=2
NEWUPDATE=         B     PLMOVIT            WILL RETURN THRU GR14
NEWUPDATE=         SPACE
NEWUPDATE=PEELERR  LH    GR0,0(,GR1)        GET ERROR MESSAGE LENGTH
NEWUPDATE=         LA    GR1,2(,GR1)        AND ADDRESS
NEWUPDATE=         BAL   GR2,OUTM           PRINT ON MSINK ONLY, I GUESS
NEWUPDATE=         B     INLOOP             -> TAKE THE BIG SIDEWAYS BRANCH
NEWUPDATE=/END REPLINN
#4163
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=DSRS
NBR=637/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  NOPW  --  Define mechanism whereby DSR may request that signon
NEWUPDATE=/.            not require password.
NEWUPDATE=/BEGIN NOPW
NEWUPDATE=/COPY NEXT "ENTRY PCHCLOS"
NEWUPDATE=         ENTRY WFOPER,WFDISK 
NEWUPDATE=/COPY "GFRDR "
NEWUPDATE=/DELETE NEXT "BAL" NEXT "SCD,INITJUNK"
NEWUPDATE=         L     SCD,=A(INITJUNK)   INVOKE THIS GRUBBY LITTLE ROUTINE
NEWUPDATE=         BALR  SCD,SCD
NEWUPDATE=/COPY "GFRRTY "
NEWUPDATE=/COPY NEXT "EJECT"
NEWUPDATE=*        WFOPER -- WAITFOR FOR OPERATORS CONSOLE
NEWUPDATE=         SPACE 5
NEWUPDATE=         USING WFOPER,GR10
NEWUPDATE=WFOPER   LR    GR10,GR15          ESTABLISH BASE
NEWUPDATE=         LR    GR1,GR0            COPY FDUB
NEWUPDATE=*
NEWUPDATE=         L     GR1,FDUBLN-FDBDCT(,GR1) GET OPER FCB
NEWUPDATE=         S     GR1,=A(FCBDSCT-FCBHDR)  BACK OFF TO PREFIX
NEWUPDATE=         OI    FCBSWS2-FCBHDR(GR1),FCBWFWLO FLAG WAITFOR LAST OP
NEWUPDATE=*
NEWUPDATE=         LM    14,12,12(13)       RESTORE
NEWUPDATE=         XR    15,15              WHATEVER THIS MEANS
NEWUPDATE=         BR    14                 -> RETURN
NEWUPDATE=         EJECT
NEWUPDATE=/COPY "GFOPER "
NEWUPDATE=/DELETE NEXT "LR" NEXT "SCD,0"
NEWUPDATE=         LR    SCA,1              PRESERVE GR1 ACROSS SVC READ
NEWUPDATE=*
NEWUPDATE=/COPY C=1
NEWUPDATE=         LR    SCD,0              IMPLANT FDUB
NEWUPDATE=/SKIP C=1
NEWUPDATE=         L     GR1,FDUBLN         OPER FCB
NEWUPDATE=         S     GR1,=A(FCBDSCT-FCBHDR)  BACK OFF TO PREFIX
NEWUPDATE=         TM    FCBSWS2-FCBHDR(GR1),FCBWFWLO
NEWUPDATE=         BZ    *+12               -> WAITFOR WASN'T LAST OP
NEWUPDATE=         NI    FCBSWS2-FCBHDR(GR1),255-FCBWFWLO  NOW IT ISN'T ANY MORE
NEWUPDATE=         MVI   FDBDSRSW,2         TELL POSTFIX TO NOTIFY NO PW NEEDED
NEWUPDATE=*
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT "16" = "12"
NEWUPDATE=/SKIP C=1
NEWUPDATE=/EDIT F=3 "FCBLINK-FCBDSCT+4" = "FCBOPBUF-FCBHDR"
NEWUPDATE=/COPY NEXT "EJECT"
NEWUPDATE=*        WFDISK  --  WAITFOR FOR DISK DSR.
NEWUPDATE=* 
NEWUPDATE=*                    THIS GETS USED WHEN *-FILE JOBS ARE STARTED
NEWUPDATE=         SPACE 5
NEWUPDATE=         USING WFDISK,GR10
NEWUPDATE=WFDISK   LR    GR10,GR15          ESTABLISH BASE
NEWUPDATE=         LR    GR9,GR0            ESTABLISH FDUB
NEWUPDATE=*
NEWUPDATE=         L     GR2,FDUBNAME-FDBDCT(,GR9)  PUT NAME OF *-FILE WE ARE 
NEWUPDATE=         LH    GR3,0(,GR2)                INTO JOB TABLE FOR SSRTN
NEWUPDATE=         CH    GR3,*+10                   TO NICELY DISPLAY
NEWUPDATE=         BNH   *+8
NEWUPDATE=         LA    GR3,5              MAX OF 5 CHARS, PLEASE
NEWUPDATE=         BCTR  GR3,0
NEWUPDATE=         L     GR1,LOCPARR
NEWUPDATE=         SVC   PROOFF
NEWUPDATE=         MVC   13(5,GR1),=5C' '   PAD WITH BLANKS
NEWUPDATE=         EX    GR3,WFDISKMV       MVC   13(0,GR1),2(GR2)
NEWUPDATE=         SVC   PROTON
NEWUPDATE=*
NEWUPDATE=         L     GR1,FDUBLN-FDBDCT(,GR9)    NOW FLAG WAITFOR WAS LAST
NEWUPDATE=         S     GR1,=A(FCBDSCT-FCBHDR)     OPERATION
NEWUPDATE=         OI    FCBSWS2-FCBHDR(GR1),FCBWFWLO
NEWUPDATE=* 
NEWUPDATE=         LM    14,12,12(13)       RETURN
NEWUPDATE=         XR    15,15              WHATEVER THIS MEANS
NEWUPDATE=         BR    14 
NEWUPDATE=         SPACE 2
NEWUPDATE=WFDISKMV MVC   13(0,GR1),2(GR2) 
NEWUPDATE=         EJECT
NEWUPDATE=/COPY "GFDRET "
NEWUPDATE=         L     GR1,FDUBLN         NOW SET UP INSTRUCTIONS TO POSTFIX
NEWUPDATE=         S     GR1,=A(FCBDSCT-FCBHDR)
NEWUPDATE=         TM    FCBSWS2-FCBHDR(GR1),FCBWFWLO
NEWUPDATE=         BZ    *+12               -> NOT FIRST OP AFTER WAITFOR
NEWUPDATE=         NI    FCBSWS2-FCBHDR(GR1),255-FCBWFWLO
NEWUPDATE=         MVI   FDBDSRSW,2         TELL POSTFIX NO PASSWORD NEEDED
NEWUPDATE=/COPY "PLMOVITM "
NEWUPDATE=/COPY NEXT "DROP"
NEWUPDATE=         LTORG                    THIS PROVED TO BE NECESSARY
NEWUPDATE=/DELETE "WOOPER "
NEWUPDATE=WOOPER   DS    0H                 WRITE ON OPER
NEWUPDATE=/COPY "WOPTR "
NEWUPDATE=/DELETE NEXT "BAL" NEXT "SCD,INITJUNK"
NEWUPDATE=         L     SCD,=A(INITJUNK)
NEWUPDATE=         BALR  SCD,SCD            CALL THIS BASELESS ROUTINE
NEWUPDATE=/COPY "WOPCH "
NEWUPDATE=/DELETE NEXT "BAL" NEXT "SCD,INITJUNK"
NEWUPDATE=         L     SCD,=A(INITJUNK)
NEWUPDATE=         BALR  SCD,SCD            CALL THIS BASELESS ROUTINE
NEWUPDATE=/COPY "LWOPTR "
NEWUPDATE=/COPY BEFORE NEXT "EJECT"
NEWUPDATE=/BUFFER INITJUNK
NEWUPDATE=/COPY NEXT "SPACE"
NEWUPDATE=         PUSH  USING
NEWUPDATE=         DROP  ,                  NOTA BENE
NEWUPDATE=         USING DSCT,GR4           NOTA BENE
NEWUPDATE=         SPACE 2
NEWUPDATE=/COPY BEFORE NEXT "EJECT"
NEWUPDATE=         SPACE 2
NEWUPDATE=         POP   USING
NEWUPDATE=/BUFFER END
NEWUPDATE=/DELETE "WODISK "
NEWUPDATE=WODISK   DS    0H                 WRITE ON DISK
NEWUPDATE=/COPY "WODWCM "
NEWUPDATE=/COPY BEFORE NEXT "EJECT"
NEWUPDATE=/INCLUDE INITJUNK
NEWUPDATE=/END NOPW
#4164
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=RSF 
NBR=578/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. SIGMCD  - RATEVEC HAS MOVED INTO "THEDSECT"
NEWUPDATE=/BEGIN SIGMCD
NEWUPDATE=/COPY 'LASTJBA5 '
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=3
NEWUPDATE=/SKIP C=1
NEWUPDATE=/END SIGMCD 
#4165
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=RSF 
NBR=578/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  GIGO  --  Install GETINTCC and GETOUTTC subroutines in MTS. 
NEWUPDATE=/.            Change code to load SETKEY, SETFSAV, SETFPRIV by 
NEWUPDATE=/.            using GETINTCC.
NEWUPDATE=/BEGIN GIGO
NEWUPDATE=/COPY "FCSETPK "
NEWUPDATE=/DELETE NEXT "L" NEXT "GR15,ASETKEY"
NEWUPDATE=/SKIP "FCSETPK1 "
NEWUPDATE=         LA    GR0,SKEYIX         LOAD SETKEY
NEWUPDATE=         BAL   GR14,GETINTC
NEWUPDATE=         LA    GR1,FCTLPL         PARAMETER LIST
NEWUPDATE=/COPY "FCTPR "
NEWUPDATE=/SKIP "FCTPR1 "
NEWUPDATE=         LR    GR3,GR2            PROTECT PARLIST PTR
NEWUPDATE=         LA    GR0,SPRVIX         LOAD SETFPRIV
NEWUPDATE=         BAL   GR14,GETINTC
NEWUPDATE=         LR    GR1,GR3
NEWUPDATE=/COPY "FCTSSB "
NEWUPDATE=/SKIP "FCTSSB1 "
NEWUPDATE=         LR    GR3,GR2            PROTECT PARLIST PTR
NEWUPDATE=         LA    GR0,SSBIX          LOAD SETFSAV
NEWUPDATE=         BAL   GR14,GETINTC
NEWUPDATE=         LR    GR1,GR3
NEWUPDATE=/END GIGO
#4166
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=TIMNTRP
NBR=539/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  SWSTATE  --  This fixes a bug which is evidenced by having the
NEWUPDATE=/.               wrong CLS area user extension in the job table if
NEWUPDATE=/.               the SWSTATE process gets interrupted at a critical
NEWUPDATE=/.               spot.
NEWUPDATE=/BEGIN SWSTATE
NEWUPDATE=/COPY "SWSDONE "
NEWUPDATE=/BUFFER TWOMVCS
NEWUPDATE=/COPY C=2
NEWUPDATE=/BUFFER END
NEWUPDATE=/EDIT F=3 "GR11" = "GR11,L=SCRATCH"
NEWUPDATE=/INCLUDE JBTBLUPD
NEWUPDATE=/INCLUDE TWOMVCS
NEWUPDATE=/COPY "SWSNOLD "
NEWUPDATE=/COPY C=2
NEWUPDATE=/BUFFER JBTBLUPD
NEWUPDATE=/EDIT F=3 "GR11" = "GR14"
NEWUPDATE=/EDIT F=3 "GR12" = "GR15"
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT HOLD "GR11" = "GR14"
NEWUPDATE=/EDIT "GR12" = "GR15"
NEWUPDATE=/COPY NEXT "SVC" NEXT "PROTON"
NEWUPDATE=/BUFFER END
NEWUPDATE=/END SWSTATE
#4167
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=CMDSTAT
NBR=531/1
BASE=D4.1
NEWUPDATE=/.  DSRDISPV  --  Remove CMDSTAT usage of DSRDISPV, as it is now a
NEWUPDATE=/.                true MTS component.
NEWUPDATE=/BEGIN DSRDISPV
NEWUPDATE=/DELETE "NOPW "
NEWUPDATE=/SKIP NEXT "LA" NEXT "GR1,1(GR4,GR2)"
NEWUPDATE=/EDIT HOLD "    " = "NOPW"
NEWUPDATE=/EDIT F=3 "0(GR1)" = "CLSCURB"
NEWUPDATE=/END DSRDISPV
#4168
DATE=Oct 31, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
NEWUPDATE=/. ERRRTN - update to have LLXU read @ERRRTN and @NOPROMPT if
NEWUPDATE=/. called with NOPROMPT and ERRRTN bits set. 
NEWUPDATE=/. Note: LLXNTMOD must be defined in LXDCT as DS XL1 before this
NEWUPDATE=/. update will work. The "spare" byte following LLXSW1 can be used
NEWUPDATE=/. for this.
NEWUPDATE=/BEGIN ERRRTN
NEWUPDATE=/COPY "XLNIE "
NEWUPDATE=/COPY BLANKS "XC" BLANKS "LLXUSSA,"
NEWUPDATE=         MVI   LLXNTMOD,X'80'     SET @NOTIFY MODIFIER FOR LLXINP
NEWUPDATE=/COPY "XLNBL2 "
NEWUPDATE=         TM    XLSWS+3,ERRTNBT+NOPRMTBT CALLER WANTS FULL CONTROL?
NEWUPDATE=         BNO   *+8                NOPE
NEWUPDATE=         OI    LLXNTMOD,X'44'     YES, READ @ERRRTN AND @NOPROMPT
NEWUPDATE=/COPY "LLXINP "
NEWUPDATE=/DELETE BLANKS "OI" BLANKS "LLXINMOD"
NEWUPDATE=         OC    LLXINMOD(1),LLXNTMOD SET @NOTIFY AND POSSIBLY @ERRRTN
NEWUPDATE=/COPY BEFORE "LLXINCK "
NEWUPDATE=LLXINCK  LTR   SCD,GR0            IO OPERATION COMPLETED?
NEWUPDATE=         BZ    LLXINSDS           YES, ONTO SDS
NEWUPDATE=         N     SCD,=F'2'          ERROR OPENING NEW FDUB?
NEWUPDATE=         BZ    LLXINFY            NO, CHECK FOR NOTIFY
NEWUPDATE=         LA    GR15,8             YES, GIVE UMLOAD AN IO ERROR RETURN
NEWUPDATE=         B     LLXINRET
NEWUPDATE=/EDIT "CK" = "FY"  ;* CHANGE THE LABEL
NEWUPDATE=/COPY "LLXRETI "   ;* POSITION TO USER INPUT ROUTINE INTERCEPT
NEWUPDATE=/DELETE BLANKS "C" BLANKS "GR0"
NEWUPDATE=/SKIP COUNT=1
NEWUPDATE=         LTR   GR0,GR0            IO OPERATION COMPLETED?
NEWUPDATE=         BNZ   LLXUXIT            NO, A NOTIFICATION OR ERROR
NEWUPDATE=/END ERRRTN
#4169
DATE=Oct 31, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. RUNONLY - update to return to caller if ERRRTN bit is set on call
NEWUPDATE=/. to LLXU even is program is "RUN ONLY".
NEWUPDATE=/BEGIN RUNONLY
NEWUPDATE=/COPY BEFORE "XLPFDN "
NEWUPDATE=/EDIT "XLDEFPID" = "XLDEFPKY"
NEWUPDATE=/COPY BEFORE "XLPIGN "
NEWUPDATE=/EDIT "XLDEFPID" = "XLDEFPKY"
NEWUPDATE=/COPY BEFORE "XLDEFPID "
NEWUPDATE=XLDEFPID TM    XLSWS+3,ERRTNBT    ERROR RETURN REQUESTED?
NEWUPDATE=         BOR   GR14               YES, SO DON'T UNLOAD PGM
NEWUPDATE=/EDIT "XLDEFPID" = "XLDEFPKY"  ;* CHANGE THE NAME
NEWUPDATE=/END RUNONLY
#4170
DATE=Oct 31, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. LSW - update to return the correct loader status word when 
NEWUPDATE=/. calling the error exit supplied on the call to LINK or XCTL.
NEWUPDATE=/BEGIN LSW
NEWUPDATE=/COPY "XLERRCL " ;* AFTER XLERROR
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         ST    SCD,LSW            RESTORE ERROR LSW FOR EXIT RTN
NEWUPDATE=/COPY "XLERRET3 "
NEWUPDATE=/COPY BEFORE BLANKS "MVC "
NEWUPDATE=/EDIT "(," = "(4,"   ;*  RETURN ALL 4 BYTES!!
NEWUPDATE=/END LSW
#4171
DATE=Oct 31, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXPFX - update to restore previous prefix before calling user
NEWUPDATE=/. error exit routine after bad LINK or XCTL.
NEWUPDATE=/BEGIN FIXPFX
NEWUPDATE=/COPY BEFORE "XLERRET1 "
NEWUPDATE=/BUFFER LOADTEST
NEWUPDATE=/EDIT FIELD=1 "XLERRET1" =     ;* REMOVE LABEL FIELD
NEWUPDATE=/COPY BEFORE "XLERRET2 "
NEWUPDATE=/BUFFER END
NEWUPDATE=/EDIT "RET2" = "RET1" ;* CHANGE LABEL
NEWUPDATE=/COPY BLANKS "DROP  GR15"
NEWUPDATE=/INCLUDE LOADTEST ;* MOVE SOME CODE
NEWUPDATE=/COPY BEFORE BLANKS "LR" BLANKS "GR1"
NEWUPDATE=/EDIT FIELD=1 = "XLERRET2"   ;*  ADD A NEW LABEL
NEWUPDATE=/END FIXPFX
#4172
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FIXLNR - Make FIXLNR one of the commonly addressable subs.
NEWUPDATE=/BEGIN FIXLNR
NEWUPDATE=/COPY '*MACRO ' NEXT 'CLSAREA'
NEWUPDATE=/COPY 'CLSAREAL '
NEWUPDATE=/SKIP C=1
NEWUPDATE=         EJECT
NEWUPDATE=/COPY '*MACRO ' NEXT 'MTSTV'
NEWUPDATE=/COPY 'CONFIRM '
NEWUPDATE=PUTLNR   B     0 
NEWUPDATE=/END FIXLNR
#4173
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  SIGMCD  --  FIX UP SIGMCD MACRO SO USES SYMBOLIC RATE VECCTOR
NEWUPDATE=/.              LENGTH.
NEWUPDATE=/BEGIN SIGMCD
NEWUPDATE=/COPY "*MACRO" NEXT "THEDSECT" 
NEWUPDATE=/COPY C=2
NEWUPDATE=         SPACE 2
NEWUPDATE=         COPY  COPY:RATEVEC 
NEWUPDATE=/COPY "*MACRO" NEXT "SIGMCD"
NEWUPDATE=/COPY BEFORE "SIGMRVEC"
NEWUPDATE=/EDIT F=3 "20" = "(RATELEN/2)"
NEWUPDATE=/END SIGMCD
#4174
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. ADDPWCON  -  Add $SET PWCONFIRM=ON option
NEWUPDATE=/BEGIN ADDPWCON 
NEWUPDATE=/COPY '*MACRO ' NEXT 'DSCT' 
NEWUPDATE=/COPY 'EOFISOK'
NEWUPDATE=PWCONF   EQU   X'08'               1->OFF 0->ON REQUIRE OLD PW 
NEWUPDATE=/END ADDPWCON
#4175
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. ADDPWARN  - Add warnings if (1) the PW is one that was set by
NEWUPDATE=/.             the computing center rather than the user or (2)
NEWUPDATE=/.             if the password has been changed in a 'long' time.
NEWUPDATE=/.  Note: COPY:ACCFORMAT should really be a MACRO and then this
NEWUPDATE=/.        would work!
NEWUPDATE=/.  /BEGIN ADDPWARN 
NEWUPDATE=/.  /COPY '*MACRO ' NEXT 'DSCT'
NEWUPDATE=/.  /COPY 'ACCDCT '
NEWUPDATE=/.  /COPY '*' NEXT '14'
NEWUPDATE=/.  *                                      15 - PW SET BY CC
NEWUPDATE=/.  /COPY 'ACCPUSE '
NEWUPDATE=/.  ACCPWCC  EQU   X'01'               PW SET BY COMPUTING CENTER
NEWUPDATE=/.  /END ADDPWARN
#4176
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. PWNORHS - Allow PW with no right hand side
NEWUPDATE=/BEGIN PWNORHS
NEWUPDATE=/COPY '*MACRO ' NEXT 'SETKWD'
NEWUPDATE=/COPY 'SETKWD '
NEWUPDATE=SETSA1   DS    18F                 A SAVE AREA FOR KWSCAN
NEWUPDATE=SETSA2   DS    18F                 A SAVE AREA FOR CONTROL, ...
NEWUPDATE=SETPW1   DS    CL12                COPY OF 1st USER PW
NEWUPDATE=SETPW2   DS    CL12                COPY OF 2nd USER PW
NEWUPDATE=STCTLPAR DS    3A                  PAR LIST TO CALL CONTROL
NEWUPDATE=/COPY '*MACRO ' NEXT 'RHTABLE'
NEWUPDATE=/COPY BEFORE 'PWRHT '
NEWUPDATE=/SKIP C=1
NEWUPDATE=PWRHT    DC    AL1(3,0,2,1,12) .   PW=something (1=>n<=12) 
NEWUPDATE=         DC    AL1(3,4,1,0)        PW=nothing
NEWUPDATE=         DC    AL1(7,4,0)          PW all by itself
NEWUPDATE=/END PWNORHS
#4177
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. MOVEMAKE - MOVE THE MAKE MACRO OUT OF COPY:MTS.MACROS AND INTO
NEWUPDATE=/.            DSRI THE ONE AND ONLY PLACE IT IS USED.
NEWUPDATE=/BEGIN MOVEMAKE
NEWUPDATE=/COPY BEFORE '*MACRO ' NEXT 'MAKE'
NEWUPDATE=/SKIP NEXT 'MEND'
NEWUPDATE=/END MOVEMAKE
#4178
DATE=Oct 31, 1978
PERSON=Ogden
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  LFRAX - KILL OFF THE SET LFR OPTION
NEWUPDATE=/BEGIN LFRAX
NEWUPDATE=/COPY BEFORE 'LFRBIT '
NEWUPDATE=/SKIP C=1
NEWUPDATE=* X'40' IS CURRENTLY UNUSED, WAS LFRBIT
NEWUPDATE=/COPY BEFORE  'LFRRUN '
NEWUPDATE=/SKIP C=1
NEWUPDATE=* X'04' IS CURRENTLY UNUSED, WAS LFRRUN
NEWUPDATE=/END  LFRAX 
#4179
DATE=Oct 31, 1978
PERSON=Sherry
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/.  ================================================================
NEWUPDATE=/. LXDCT - Add a new item ("LLXNTMOD") to LXDCT.
NEWUPDATE=/BEGIN LXDCT
NEWUPDATE=/COPY "*MACRO" NEXT "LXDCT"
NEWUPDATE=/DELETE BLANKS "DS" BLANKS "X" SPAN(' .') "SPARE"
NEWUPDATE=LLXNTMOD DS    X                  @NOTIFY, @ERRRTN AND @NOPROMPT MODS
NEWUPDATE=/END LXDCT
#4180
DATE=Oct 31, 1978
PERSON=Sherry
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/.  ================================================================
NEWUPDATE=/. LSWORD - Add a new bit definition for "IOERRBT". 
NEWUPDATE=/BEGIN LSWORD
NEWUPDATE=/COPY "*MACRO" NEXT "LSWORD"
NEWUPDATE=/DELETE "*" BLANKS "X'08'" ;* NO LONGER SPARE
NEWUPDATE=IOERRBT  EQU   X'08'              ON IF IO ERROR FROM INPUT ROUTINE
NEWUPDATE=/END LSWORD
#4181
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FMSGCMSG  --  Make FMSG and CMSG macros call NEWMTS type routines
NEWUPDATE=/.               FMSGSUB and CMSGSUB when they are expanded in a
NEWUPDATE=/.               NEWMTS type routine.
NEWUPDATE=/BEGIN FMSGCMSG
NEWUPDATE=/COPY "*MACRO" NEXT "CMSG"
NEWUPDATE=/COPY NEXT "GBLA" NEXT "&CNT"
NEWUPDATE=         GBLA  &CURNON            NONZERO IF IN NEWMTS ENVIRONMENT
NEWUPDATE=         LCLA  &J,&K
NEWUPDATE=/COPY C=1
NEWUPDATE=         AIF   (&CURNON NE 0).NEWMTS
NEWUPDATE=/DELETE NEXT "MEND"
NEWUPDATE=         MEXIT
NEWUPDATE=.*
NEWUPDATE=.*
NEWUPDATE=.NEWMTS  ANOP
NEWUPDATE=&J       SETA  K'&MSG             ROUND LENGTH TO NEXT HALFWORD
NEWUPDATE=&K       SETA  (&J+1)/2*2
NEWUPDATE=&CNT     SETA  &CNT+&K-&J         ADJUST FOR ROUNDING
NEWUPDATE=         AIF   ('&LBL' NE '').RET
NEWUPDATE=&J       SETA  1                  SET INLOOP OPTION
NEWUPDATE=.RET     AIF   ('&TYPE' EQ 'B').BOTH,                                  *
NEWUPDATE=               ('&TYPE' EQ 'M').MSINK,                                 *
NEWUPDATE=               ('&TYPE' EQ 'S').SINK
NEWUPDATE=         MNOTE 4,'ILLEGAL CMSG TYPE'
NEWUPDATE=.BOTH    ANOP
NEWUPDATE=&J       SETA  &J+4+2
NEWUPDATE=         AGO   .L6
NEWUPDATE=.MSINK   ANOP
NEWUPDATE=&J       SETA  &J+4
NEWUPDATE=         AGO   .L6
NEWUPDATE=.SINK    ANOP
NEWUPDATE=&J       SETA  &J+2
NEWUPDATE=.L6      AIF   ('&SL' EQ '').L6SKIP
NEWUPDATE=&SL      DS    0H
NEWUPDATE=.L6SKIP  AIF   ('&LBL' EQ '').RCALL
NEWUPDATE=         STM   GR14,GR2,0(GR12)   SAVE REGISTERS ON STACK
NEWUPDATE=         LA    GR12,5*4(,GR12)    COVER THEM OVER
NEWUPDATE=.RCALL   RCALL CMSGSUB(A(&J),A(&K),A(G&SYSNDX))
NEWUPDATE=         AIF   ('&LBL' EQ '').L8
NEWUPDATE=         LA    GR15,5*4
NEWUPDATE=         SR    GR12,GR15
NEWUPDATE=         LM    GR14,GR2,0(GR12)   RESTORE REGISTERS
NEWUPDATE=         AIF   ('&LBL' NE '*').L7
NEWUPDATE=         B     *+4+&K
NEWUPDATE=         AGO   .L8
NEWUPDATE=.L7      B     &LBL
NEWUPDATE=.L8      ANOP
NEWUPDATE=G&SYSNDX DC    CL&K&MSG
NEWUPDATE=         MEND
NEWUPDATE=/COPY "*MACRO" NEXT "FMSG"
NEWUPDATE=/COPY C=2
NEWUPDATE=         GBLA  &CURNON            NONZERO IF IN NEWMTS ENVIRONMENT
NEWUPDATE=         LCLA  &J
NEWUPDATE=         AIF   (&CURNON NE 0).NEWMTS
NEWUPDATE=/DELETE NEXT "MEND"
NEWUPDATE=         MEXIT
NEWUPDATE=.*
NEWUPDATE=.*
NEWUPDATE=.NEWMTS  AIF   ('&LBL' NE '').RET
NEWUPDATE=&J       SETA  1                  SET INLOOP OPTION
NEWUPDATE=.RET     AIF   ('&TYPE' EQ 'B').BOTH,                                  *
NEWUPDATE=               ('&TYPE' EQ 'M').MSINK,                                 *
NEWUPDATE=               ('&TYPE' EQ 'S').SINK
NEWUPDATE=         MNOTE 4,'ILLEGAL FMSG TYPE'
NEWUPDATE=.BOTH    ANOP
NEWUPDATE=&J       SETA  &J+4+2
NEWUPDATE=         AGO   .L6
NEWUPDATE=.MSINK   ANOP
NEWUPDATE=&J       SETA  &J+4
NEWUPDATE=         AGO   .L6
NEWUPDATE=.SINK    ANOP
NEWUPDATE=&J       SETA  &J+2
NEWUPDATE=.L6      AIF   ('&SL' EQ '').L6SKIP
NEWUPDATE=&SL      DS    0H
NEWUPDATE=.L6SKIP  AIF   ('&LBL' EQ '').RCALL
NEWUPDATE=         STM   GR14,GR1,0(GR12)   SAVE REGISTERS ON STACK
NEWUPDATE=         LA    GR12,4*4(,GR12)    COVER THEM OVER
NEWUPDATE=.RCALL   RCALL FMSGSUB(A(&J),A(&LNR))
NEWUPDATE=         AIF   ('&LBL' EQ '').MEND
NEWUPDATE=         LA    GR15,4*4
NEWUPDATE=         SR    GR12,GR15
NEWUPDATE=         LM    GR14,GR1,0(GR12)   RESTORE REGISTERS
NEWUPDATE=         AIF   ('&LBL' EQ '*').MEND
NEWUPDATE=         B     &LBL
NEWUPDATE=.MEND    MEND
NEWUPDATE=/END FMSGCMSG
#4182
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/.  ================================================================
NEWUPDATE=/.  REPLINN -- Replace LINNBRN subroutine with LINENBR subroutine
NEWUPDATE=/.             coded a la new MTS.  Make changes to DSCT macro to
NEWUPDATE=/.             reflect this.
NEWUPDATE=/BEGIN REPLINN
NEWUPDATE=/COPY "*MACRO" NEXT "DSCT"
NEWUPDATE=/DELETE "SFFGR14 "
NEWUPDATE=/DELETE "SFFNOT "
NEWUPDATE=*        EQU   4                  UNUSED - WAS SFFNOT
NEWUPDATE=/DELETE "LNRN "
NEWUPDATE=*        EQU   X'80'              UNUSED - WAS LNRN
NEWUPDATE=/COPY BEFORE "SDSINVSA "
NEWUPDATE=PEELSAV  DS    2A                 PEEL SAVE AREA
NEWUPDATE=/COPY "*MACRO" NEXT "MTSTV"
NEWUPDATE=/DELETE "LINNBR "
NEWUPDATE=         B     0                  UNUSED -- WAS LINNBR
NEWUPDATE=/DELETE "LINNBRN " 
NEWUPDATE=         B     0                  UNUSED -- WAS LINNBRN
NEWUPDATE=/END REPLINN
#4183
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  GIGO  --  Add GETOUTTC and GETINTCC subroutines to MTS.
NEWUPDATE=/BEGIN GIGO
NEWUPDATE=/COPY "*MACRO" NEXT "DSCT"
NEWUPDATE=/DELETE "ASETKEY "
NEWUPDATE=/DELETE "ASETPRIV "
NEWUPDATE=/DELETE "ASETFSAV "
NEWUPDATE=/COPY "*MACRO" NEXT "MTSTV"
NEWUPDATE=/COPY "PUTLNR "
NEWUPDATE=GETOUTTC B     0
NEWUPDATE=/END GIGO
#4184
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  CLEANUP1 -- Clean out MTSTV entry for CHKSER
NEWUPDATE=/BEGIN CLEANUP1
NEWUPDATE=/COPY "*MACRO" NEXT "MTSTV"
NEWUPDATE=/DELETE "CHKSER "
NEWUPDATE=         B     0                  UNUSED -- WAS CHKSER
NEWUPDATE=/END CLEANUP1
#4185
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  CMNDBUG  --  Fix bug in CMND macro which causes wrong CMDSTAT
NEWUPDATE=/.               type to be picked up for the R abbreviation for 
NEWUPDATE=/.               the RUN command.
NEWUPDATE=/BEGIN CMNDBUG
NEWUPDATE=/COPY "*MACRO" NEXT "CMND"
NEWUPDATE=/DELETE "&T" NEXT "SETC" NEXT "'&CMDCT'"
NEWUPDATE=&T       SETC  '&T'.'    '        derive CMDSTAT type from command name
NEWUPDATE=         AIF   ('&CMDCT' EQ '').GOTCT
NEWUPDATE=&T       SETC  '&CMDCT'.'    '    unless one explicitly given
NEWUPDATE=.GOTCT   ANOP
NEWUPDATE=/END CMNDBUG
#4186
DATE=Oct 31, 1978
PERSON=Helffrich
NAME=MTS.MACROS
NBR=344/1
BASE=D4.1
NEWUPDATE=/. =================================================================
NEWUPDATE=/.  NOPW  --  Define mechanism whereby DSR may request that signon
NEWUPDATE=/.            not require password.
NEWUPDATE=/BEGIN NOPW
NEWUPDATE=/COPY "*MACRO" NEXT "FCBDSCT"
NEWUPDATE=/DELETE " " NEXT "DS" NEXT "H"
NEWUPDATE=         DS    X                  UNUSED
NEWUPDATE=FCBSWS2  DS    X                  ANOTHER SWITCH BYTE
NEWUPDATE=FCBWFWLO EQU   X'80'              WAITFOR WAS LAST OP (ONLY SET/USED BY*
NEWUPDATE=                                  SOME DSRS)
NEWUPDATE=/COPY "BNCHLNG "
NEWUPDATE=         SPACE 3
NEWUPDATE=         ORG   FCBLINK+4          FCB FOR OPER DSR
NEWUPDATE=FCBOPBUF DS    CL100              INPUT REGION FOR SVC READ
NEWUPDATE=OPERLNG  EQU   *-FCBHDR
NEWUPDATE=/COPY "*MACRO" NEXT "DSCT"
NEWUPDATE=/COPY "SWS7 "
NEWUPDATE=/DELETE "*"
NEWUPDATE=NOPWN2   EQU   4                  NO PW NEEDED BECAUSE DSR SAID SO
NEWUPDATE=/COPY "*MACRO" NEXT "MTSCTAB"
NEWUPDATE=/COPY "FTYPTBL "
NEWUPDATE=/EDIT F=3 "FCBLINK-FCBHDR+4+100" = "OPERLNG"
NEWUPDATE=/END NOPW
#4187
DATE=Oct 31, 1978
PERSON=Ogden
NAME=RATENBR
NBR=651/10
NEWUPDATE=/. =================================================================
NEWUPDATE=/. HSLINE  - The powers that be have changed the name of PRIVATE
NEWUPDATE=/.           LINES to HIGH SPEED LINES so we need to change the
NEWUPDATE=/.           code as well.
NEWUPDATE=/BEGIN HSLINE 
NEWUPDATE=/COPY BEFORE 'RPRIVL '
NEWUPDATE=/EDIT 'RPRIVL' = 'RHSLINE'
NEWUPDATE=/COPY 'NOTBATCH '
NEWUPDATE=/COPY BEFORE NEXT 'BE' NEXT 'TSTPVT'
NEWUPDATE=/SKIP C=1 
NEWUPDATE=         BE    TSTHSL              YES - MAY BE A HIGH SPEED LINE
NEWUPDATE=/COPY BEFORE 'TSTPVT '
NEWUPDATE=/EDIT HOLD 'TSTPVT' = 'TSTHSL'
NEWUPDATE=/EDIT ' PVT LINE' = ' HS LINE'
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT HOLD 'RPRIVL' = 'RHSLINE'
NEWUPDATE=/EDIT 'PRIVATE LINES' = 'HIGH SPEED LINES' 
NEWUPDATE=/EDIT HOLD "=C'PRIVATE LINE,'" = "=C'HIGH SPEED LINE,'"
NEWUPDATE=/EDIT '13' = '16'
NEWUPDATE=/EDIT '13' = '16'
NEWUPDATE=/END HSLINE 
#4188
DATE=Oct 31, 1978
PERSON=Ogden
NAME=RATENBR
NBR=651/10
NEWUPDATE=/. =================================================================
NEWUPDATE=/. SIGMCD - RATEVEC has moved into "THEDSECT"
NEWUPDATE=/BEGIN SIGMCD
NEWUPDATE=/COPY 'ENGLE '
NEWUPDATE=/COPY C=4
NEWUPDATE=/SKIP C=1
NEWUPDATE=/COPY C=4
NEWUPDATE=/SKIP C=1
NEWUPDATE=/END SIGMCD 
#4189
DATE=Oct 31, 1978
PERSON=Ogden
NAME=USUB
NBR=638/1
NEWUPDATE=/. =================================================================
NEWUPDATE=/. FREEDSCT - DON'T ALLOW ANYONE TO FREE THE MTS DSECT
NEWUPDATE=/BEGIN FREEDSCT
NEWUPDATE=/COPY 'FSBASE '
NEWUPDATE=         LA    GR15,0(,GR1)       DON'T LET GO OF THE MTS DSECT
NEWUPDATE=         CR    GR15,GR4 
NEWUPDATE=         BL    FSD0               BELOW DSECT IS OK (SORT OF)
NEWUPDATE=         LA    GR14,LASTDSCT-DSCT(,GR4)
NEWUPDATE=         CR    GR15,GR14          BEYONE DSECT?
NEWUPDATE=         BL    FSMTD              NO, CAUGHT ONE
NEWUPDATE=FSD0     DS    0H                 SAFE SO FAR
NEWUPDATE=/COPY 'FSCHK '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT '     ' = 'FSMTD' 
NEWUPDATE=/END FREEDSCT
********** Sent November 6, 1978      **********
#4190
DATE=NOV. 9, 1978
PERSON=Ogden
NAME=CONSIO
NBR=634/3
BASE=RD15
DESCR=The version of CONSIO sent out on the RD15 tape (you remember the
DESCR=code should have gone out on D4.1, but by mistake the D4.0
DESCR=version was sent instead) contains a bug (now, aren't you
DESCR=glad we didn't send out the right version the first time). 
NEWUPDATE=/BEGIN FIXREAD
NEWUPDATE=/.  FIXREAD  -  This deck fixes a bug that was introduced
NEWUPDATE=/.              when CONSIO was changed to allow the
NEWUPDATE=/.              return of NULL lines. 
NEWUPDATE=/COPY 'CHKATN '
NEWUPDATE=/COPY NEXT 'LA' NEXT 'R0,CONSWCCW'
NEWUPDATE=         LH   R1,CONSPATH       DON'T TRUST TO FATE
NEWUPDATE=/END FIXREAD
COMMENTS=It took a long time for this bug to surface here at UM. 
COMMENTS=Depending on where CONSIO was loaded and what devices
COMMENTS=were attached to what channels input requests directed
COMMENTS=through CONSIO would or wouldn't work. 
#4191
DATE=NOV. 13, 1978
PERSON=Sherry
NAME=LLXU
NBR=354/1
BASE=RD15
DESCR=This update fixes a bug inadvertently introduced by the
DESCR=XLCLEAN update of RD15 - a DROP GR10 statement was deleted
DESCR=when the XLCLEAN subroutine was moved to become self-addressable.
NEWUPDATE=/BEGIN DROP10
NEWUPDATE=/COPY "FGRC2"
NEWUPDATE=/COPY NEXT "BR    GR14"
NEWUPDATE=         SPACE
NEWUPDATE=         DROP  GR10
NEWUPDATE=/END DROP10
COMMENTS=This bug manifested itself in GBSTOR near XLEIB(10) where
COMMENTS=the maximum storage index number (MSIN) was reset to garbage
COMMENTS=because GR10 instead of SCB was assembled as the base register
COMMENTS=in the statement:
COMMENTS=          L     SCD,GR14LSAV+4(GR1)
********** Sent November 13, 1978     **********
#4192
DATE=NOV. 13, 1978
PERSON=OGDEN
NAME=TASKSTAT
NBR=647/1
BASE=RD15
DESCR=THIS UPDATE FIXES A BUG IN THE RD15 VERSION OF TASKSTAT.
DESCR=THE ERROR SHOULD ONLY OCCUR IN THOSE SYSTEMS RUNNING UBC
DESCR=INTERTASK.
NEWUPDATE=/BEGIN R3TOR2
NEWUPDATE=/.   R3TOR2  -  Fix TASKSTAT so that TSTATE values are
NEWUPDATE=/.              always stored off of R2 rahter than incorrectly
NEWUPDATE=/.              off of R3. 
NEWUPDATE=/COPY 'TRYITBSY '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'R3' = 'R2'
NEWUPDATE=/COPY 'TRYITRDY '
NEWUPDATE=/COPY C=1
NEWUPDATE=/EDIT 'R3' = 'R2'
NEWUPDATE=/END R3TOR2
#4193
DATE=November 20, 1978
PERSON=Engle
NAME=SORT (SORT PGM PH 2)
NBR=303/28
BASE=RDIST15
DESCR="Terminated" is spelled with an extra "t" in a warning message.
NEWUPDATE=/B 4193
NEWUPDATE=/COP 'WARNMSG'
NEWUPDATE=/S C=1
NEWUPDATE=               ment is not terminated by the' 
NEWUPDATE=/EN
#4194
DATE=November 28, 1978
PERSON=Tiffany
NAME=*FTNTIDY
NBR=727/1 
BASE=D4.1
DESCR=The following fixes the PAUSE problem for *FTNTIDY. 
DESCR=Thanks from John Stevens for reporting.
NEWUPDATE=/BEGIN *PAUSE*
NEWUPDATE=/COPY 'QUOTE '
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=         CLC   =C'PAUSE',STACK  If PAUSE statement
NEWUPDATE=         BE    OPEXIT   then don't turn SKIPPING off.
NEWUPDATE=/END *PAUSE*
********** Sent November 28, 1978     **********
#4195
DATE=January 12, 1978
PERSON=Tiffany
NAME=*FTNTIDY
NBR=727/1 
BASE=D4.1
DESCR=The following fixes *FTNTIDY to treat 100 of the READ
DESCR=statement in the example below as a label instead of an
DESCR=ordinary number.
DESCR=        READ (IU'(INDEX),100) X
DESCR= 100    FORMAT (F10.2)
DESCR=        END
DESCR=Thanks from Gavin Eadie for reporting.
NEWUPDATE=/BEGIN *READ*
NEWUPDATE=/COPY "INCR1 "
NEWUPDATE=/COPY BEFORE NEXT "BNE" NEXT "INCR2"
NEWUPDATE=/EDIT "2" = "3" ;                Change INCR2 to INCR3
NEWUPDATE=/COPY BEFORE "INCR2 "
NEWUPDATE=/BUFFER INCR2 ;                  Move INCR2 code to just before INCR4
NEWUPDATE=/COPY BEFORE NEXT "BNE" NEXT "INCR3" ; Change all references in
NEWUPDATE=/EDIT "3" = "4" ;                the code from INCR3 to INCR4.
NEWUPDATE=/COPY BEFORE NEXT "BZ" NEXT "INCR3"
NEWUPDATE=/EDIT "3" = "4"
NEWUPDATE=/COPY BEFORE NEXT "BNZ" NEXT "INCR3"
NEWUPDATE=/EDIT "3" = "4"
NEWUPDATE=/COPY BEFORE "INCR3 "
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY BEFORE NEXT "BZ" NEXT "INCR4" 
NEWUPDATE=/EDIT "4" = "2" ;                Change all references in the INCR3
NEWUPDATE=/COPY BEFORE NEXT "BP" NEXT "INCR4" ; code from "INCR4" to "INCR2".
NEWUPDATE=/EDIT "4" = "2"
NEWUPDATE=/COPY BEFORE "INCR4 "
NEWUPDATE=/INCLUDE INCR2 ;                 Include INCR2 code here.
NEWUPDATE=/END *READ*
COMMENTS=After a call to CLEAN from IOEXP, the return should be
COMMENTS=made with the stack pointer at the comma in the example
COMMENTS=above instead of the first right parenthesis.
********** Sent January 23, 1979      **********
#4196
DATE=April 9, 1979
PERSON=Tiffany
NAME=*FTNTIDY
NBR=727/1 
BASE=D4.2
DESCR=When LBLXREF option is in effect, *FTNTIDY actually 
DESCR=not only produces the label dictionary but also the 
DESCR=variable dictionary. The following CDUPDATE will
DESCR=prevent printing the variable dictionary.
NEWUPDATE=/BEGIN LBLXREF
NEWUPDATE=/COPY "PRINLST "
NEWUPDATE=/COPY NEXT "BAL" NEXT "R10,PRINT"
NEWUPDATE=/DELETE NEXT "ENDIF"
NEWUPDATE=/COPY BEFORE NEXT "LA" NEXT "R2,NLIST-8"
NEWUPDATE=         ENDIF
NEWUPDATE=/END LBLXREF
COMMENTS=The ENDIF macro is moved forward to just before printing
COMMENTS=the label dictionary, so that *FTNTIDY will not print 
COMMENTS=the variable dictionary when LBLXREF is in effect.
#4197
DATE=April 24, 1979
PERSON=Engle
NAME=SORT (SORT PGM)
NBR=303/1
BASE=D4.2
DESCR=A spurious output record is generated if the first input
DESCR=record is an end-of-file and a particular half-word of
DESCR=acquired storage (via GETSPACE) contains a value greater than
DESCR=four.
NEWUPDATE=/B C4198; CORRECT ERROR CAUSING ZERO INPUT RECORDS TO PRODUCE A SPURIOUS
NEWUPDATE=/C        OUTPUT RECORD
NEWUPDATE=/COP TAB(72) 'SORT1505'
NEWUPDATE=         BC    4,*+8              NULL RECORD?
NEWUPDATE=         STH   R3,0(0,R2)         YES, ZERO LENGTH FOR FLUSH
NEWUPDATE=/EN
COMMENTS=It is hard to produce this error.  If the acquired storage
COMMENTS=contains X'81's, it will not occur.  The following
COMMENTS=sequence produced it at U of M on April 23 and April 24
COMMENTS=from an IBM 3278, but it might not work at another time or
COMMENTS=place.  (The same sequence except for using DEBUG instead
COMMENTS=of RUN did not produce the error.)
COMMENTS=
COMMENTS=     $R *SORT PAR=I=*DUMMY* R=10
#4198
DATE=April 25, 1979
PERSON=Fronczak
NAME=VTRX
NBR=681/002
BASE=D4.2
DESCR=This update fixes a bug inadvertently introduced by 
DESCR=disallowing the VOTRAX user's being able to refer to any
DESCR=file via %DEF, %VOC, and %MVO device commands before
DESCR=signing on MTS. This security change also disallowed
DESCR=the use of the Touch-Tone code #4 to reference the
DESCR=system text-definition file *ARUDEF. 
NEWUPDATE=/BEGIN D4.2.1
NEWUPDATE=/COPY BEFORE "OPENFILE CLC"
NEWUPDATE=OPENFILE CLC   =C'*ARUDEF ',0(1)   SKIP TEST FOR SYS TXT DEF FILE.
NEWUPDATE=         BE    OPNF1
NEWUPDATE=         TM    CTRLWHER,2          USER SIGNED ON YET?
NEWUPDATE=         BNOR  R14                 NO, NO FILE ACCESS ALLOWED.
NEWUPDATE=OPNF1    ST    R14,OPENSAV
NEWUPDATE=/SKIP "R14,OPENSAV"
NEWUPDATE=/END D4.2.1
#4199
DATE=April 26, 1979
PERSON=Engle
NAME=ACCOUNTING (ACCFLINF)
NBR=104/116
BASE=D4.1
DESCR=If the date is given in the PAR field as mm/dd/yy instead of
DESCR=DATE=mm/dd/yy, it is rejected as invalid.
NEWUPDATE=/B ; C4200 CORRECT ERROR MAKING PAR=MM/DD/YY INVALID.
NEWUPDATE=/D TAB(21) '(2)'
NEWUPDATE=           C'T PARLHT(22)=4@BR, 0@BR, 0@BR 
NEWUPDATE=/EN
#4200
DATE=April 26, 1979
PERSON=Engle
NAME=ACCOUNTING (ACCFLINF)
NBR=104/116
BASE=D4.1
DESCR=Add the END parameter to the SORT control statement.
NEWUPDATE=/B ; C4201 ADD THE END PARAMETER TO THE SORT CONTROL STATEMENT.
NEWUPDATE=/D TAB(16) 'SORT'
NEWUPDATE=                SORT.("=,D,,4,,,5,8 I=*,F,* O=**,FB,,* R=* E ", FDUB,
NEWUPDATE=/EN
********** Sent May 3, 1979           **********
#4201
DATE=May 9, 1979
PERSON=Ogden
NAME=TASKSTAT SUBR 
NBR=647
BASE=D4.2
DESCR=Fix TASKSTAT so it won't PGNT if it looks for an SVC in
DESCR=fetch protected VM.
NEWUPDATE=/COPY "CHKSVC "
NEWUPDATE=/COPY C=1
NEWUPDATE=    BPI  OPND,ASSWAYT 
#4202
DATE=May 11, 1979
PERSON=Engle
NAME=SORT (SORT PGM)
NBR=303/1
DESCR=A warning that the control statement is not terminated by the
DESCR=END parameter followed by a program interrupt is produced if
DESCR=the control statement is read via GUSER and the end of a line
DESCR=occurs after a type, aspect, or location parameter which is
DESCR=immediately followed by a comma.
BASE=D4.2
NEWUPDATE=/B C4202; CORRECT ERROR CAUSING A SPURIOUS MISSING END PARAMETER WARNING
NEWUPDATE=/C        MESSAGE AND PROGRAM INTERRUPT IF THE CONTROL STATEMENT IS SPLIT
NEWUPDATE=/C        BETWEEN TWO LINES READ VIA GUSER AFTER THE TYPE, ASPECT, OR, LOCATION
NEWUPDATE=/C        PARAMETERS.
NEWUPDATE=/D TAB(72) 'SORT0547'
NEWUPDATE=/S TAB(72) 'SORT0548'
NEWUPDATE=.WARN4   BC    8,*+10
NEWUPDATE=         L     R6,AWARN
NEWUPDATE=         BR    R6                 FORGET THE REQUEST
NEWUPDATE=/EN
COMMENTS=This occurs only in the version of *SORT which produces a
COMMENTS=warning message if the control statement is not terminated
COMMENTS=by the END parameter.  The following produces the error:
COMMENTS=
COMMENTS=     $RUN *SORT SCARDS=*SOURCE*
COMMENTS=     S=CH,
COMMENTS=     A,1,4
COMMENTS=     INPUT LINE ONE
COMMENTS=     INPUT LINE TWO
********** Sent May 14, 1979          **********
#4203
DATE=May 23, 1979
PERSON=Engle
NAME=ACCOUNTING (STATUS)
NBR=104/14
BASE=D4.1
DESCR=If SIGNONS@REMAINING or an equivalent expression with the
DESCR=attribute explicitly specified is contained in the PAR field
DESCR=and the maximum number of concurrent signons is four or zero
DESCR=(unlimited), the number of remaining signons is printed as
DESCR=unlimited or negative, respectively.
NEWUPDATE=/B C4203; CORRECT INDICATION THAT REMAINING NUMBER OF SIGNONS IS UNLIMITED 
NEWUPDATE=/COM      OR NEGATIVE WHEN MAXIMUM NUMBER IS 4 OR 0, RESPECTIVELY, AND
NEWUPDATE=/COM      @REMAINING OR ITS EQUIVALENT IS EXPLICITLY GIVEN WITH SIGNONS
NEWUPDATE=/COM      PARAMETER
NEWUPDATE=/D TAB(72) 'STAT0643'
NEWUPDATE=         CH    R6,ACCMSIG
NEWUPDATE=/EN
#4204
DATE=May 29, 1979
PERSON=Engle
NAME=ACCOUNTING (STATUS)
NBR=104/14
BASE=D4.1
DESCR=If the cumulative disk storage is greater than 85899345 page-
DESCR=hours or the cumulative paper tape punched is greater than
DESCR=21474836 inches, the wrong values are printed.
NEWUPDATE=/B C4204; CORRECT ERROR WHEN CONVERSION TO CHARACTERS DOES A MULTIPLY BEFORE A
NEWUPDATE=/COM      DIVIDE AND THE PRODUCT IS GREATER THAN 31 BITS.
NEWUPDATE=/S BEFORE TAB(72) 'STAT0002'
NEWUPDATE=STAT     TITLE 'ACCOUNTING STATUS FOR MTS USER--C. F. ENGLE--29 MAY 79'
NEWUPDATE=/D TAB(72) 'STAT0038'
NEWUPDATE=         AIF   ('&DIV' NE '').MULT     CHECK FOR DIVISOR
NEWUPDATE=         LPR   R3,R3              POSITIVE VALUE NEEDED FOR ROUNDING
NEWUPDATE=.MULT    M     R2,=F'&MULT'
NEWUPDATE=         AIF   ('&DIV' NE '').RND      CHECK FOR DIVISOR
NEWUPDATE=/COP TAB(72) 'STAT0041'
NEWUPDATE=.RND     ANOP
NEWUPDATE=/D TAB(72) 'STAT0043'
NEWUPDATE=/S TAB(72) 'STAT0044'
NEWUPDATE=         AL    R3,=F'&T'          ROUND FOR DIVISION
NEWUPDATE=         AIF   ('&MULT' EQ '').DIV     CHECK FOR MULTIPLYING FACTOR
NEWUPDATE=         BC    12,*+8
NEWUPDATE=         A     R2,=F'1'
NEWUPDATE=.DIV     D     R2,=F'&DIV'
NEWUPDATE=/EN
********** Sent June 7, 1979          **********
#4205
DATE=July 2, 1979
PERSON=Fronczak
NAME=BASIC
NBR=508/024
BASE=D4.2
DESCR=This update fixes a bug for the RENUMBER command which
DESCR=caused problems when a statement for the form
DESCR=  IF YY="string", THEN line# was encountered. The line#'s
DESCR=left-most digit was prefixed to the new line# under the 
DESCR=renumbering. E.g., IF YY="Y", THEN 100 would become
DESCR=  IF YY="Y", THEN 1300 if line 100 became 300 under the
DESCR=renumbering.
NEWUPDATE=/BEGIN D4.2.1
NEWUPDATE=/COPY  "PTRF6    LA    3,3(,3)"
NEWUPDATE=/DELETE "B     PTRF2"
NEWUPDATE=         B     PTRF0               RETURN TO MAIN SCAN
NEWUPDATE=/END D4.2.1
********** Sent July 2, 1979          **********
#4206
DATE=July 5, 1979
PERSON=Engle
NAME=*INDEX
NBR=580/1
BASE=D4.2
DESCR=If any special characters other than #-/?:*;|,.()%=+!"'<>&$
DESCR=appear in the page attribute, an infinite loop results.
NEWUPDATE=/B C4206; ELIMINATE INFINITE LOOP WHEN LOCATION ATTRIBUTE CONTAINS A
NEWUPDATE=/C        CHARACTER NOT LISTED IN "SYMBOL;" E.G., _ OR @
NEWUPDATE=/D TAB(72) 'INDX0145'
NEWUPDATE=/D TAB(72) 'INDX0179'
NEWUPDATE=/D TAB(72) 'INDX0361'
NEWUPDATE=            Y = INDEX(TRANSLATE(PAGEE, (11)'0', ' '||NOS), '0');
NEWUPDATE=/EN
COMMENTS=The following input will produce the infinite loop:
COMMENTS=
COMMENTS=First_Page Error#example
********** Sent July 9, 1979          **********
#4207
DATE=August 13,1979
PERSON=Tiffany
NAME=COMPARE
NBR=746/1
BASE=RD16
DESCR=Wrong line numbers get printed on blocks.
NEWUPDATE=/BEGIN BADLNRS
NEWUPDATE=/COPY "MARKBLK "
NEWUPDATE=/COPY "*" NEXT "In blocking mode, we back up"
NEWUPDATE=/COPY BEFORE NEXT "SR" NEXT "BLKCNT,BLKCNT"
NEWUPDATE=         MVC   OLDBLK1,LISTLNR-LIST(OLD)    Set last old line nr. 
NEWUPDATE=         MVC   NEWBLK1,LISTLNR-LIST(NEW)    And last new line nr.
NEWUPDATE=         INVOKE GETBLK               Insert line numbers.
NEWUPDATE=         SR    R0,R0                 Restore register 0.
NEWUPDATE=/COPY "*" NEXT "Here lines in both files"
NEWUPDATE=/COPY NEXT "ENDIF"
NEWUPDATE=/COPY NEXT "ENDIF"
NEWUPDATE=         MVC   OLDBLK0,LISTLNR-LIST(OLD)    Set first old line nr.
NEWUPDATE=         MVC   NEWBLK0,LISTLNR-LIST(NEW)    and first new line nr.
NEWUPDATE=/COPY "PRTFILES"
NEWUPDATE=/DELETE NEXT "INVOKE" NEXT "GETBLK"
NEWUPDATE=/END BADLNRS
COMMENTS=To get proper line numbers, GETBLK should be invoked
COMMENTS=from MARKBLK instead of PRTFILES.
#4208
DATE=August 13,1979
PERSON=Tiffany
NAME=COMPARE
NBR=746/1
BASE=RD16
DESCR=PRTFILES get mixed up when it encounters two different blocks
DESCR=on both units.  In that case, it uses the block on unit 0.
NEWUPDATE=/BEGIN BADBLKS
NEWUPDATE=/COPY "PRTFILES"
NEWUPDATE=/COPY NEXT "SET" NEXT "BLOCKING,ON"
NEWUPDATE=         LH    R14,LISTBLK#-LIST(0,OLD)
NEWUPDATE=         LH    R15,LISTBLK#-LIST(0,NEW)
NEWUPDATE=         IF    (R14,ZERO),AND,(R15,ZERO)
NEWUPDATE=/INCLUDE HELP 
NEWUPDATE=/DELETE NEXT "IF"
NEWUPDATE=         ELSEIF (R15,ZERO),OR,((R14,NZ),AND,(R14,LT,R15,CR))
NEWUPDATE=/DELETE NEXT "ELSEIF"
NEWUPDATE=         ELSE
NEWUPDATE=/DELETE NEXT "ELSE "
NEWUPDATE=/BUFFER HELP 
NEWUPDATE=/COPY NEXT "ERROR"
NEWUPDATE=/BUFFER END
NEWUPDATE=/END BADBLKS
********** Sent August 23, 1979       **********
#4209
DATE=August 27,1979
PERSON=Boettner
NAME=FILESTATUS
NBR=529
BASE=RD16
DESCR=Too many sharing descriptors (would you believe it took 15 
DESCR=lines on 3270 to print) can cause program interrupt on ALL
DESCR=(full-access-maybe category) output. 
NEWUPDATE=/BEGIN FAMFIX 
NEWUPDATE=/COPY "FACCESSS"
NEWUPDATE=/COPY  NEXT "ST" NEXT "GR6,FAMAX"
NEWUPDATE=         L     GR6,EOBREG 
NEWUPDATE=         CLI   OUTFORM,COLS 
NEWUPDATE=         BE    *+8
NEWUPDATE=         ST    GR6,FAMAX
NEWUPDATE=/COPY "ACCUPNL "
NEWUPDATE=/COPY C=2
NEWUPDATE=         C     GR1,FAMAX
NEWUPDATE=         BH    ACCWUPS
NEWUPDATE=/COPY NEXT "ST" NEXT "TEMPGR1S"
NEWUPDATE=/COPY C=1
NEWUPDATE=         C     GR1,FAMAX
NEWUPDATE=         BH    ACCWUPS
NEWUPDATE=/COPY "ACCLFO "
NEWUPDATE=/COPY C=2
NEWUPDATE=         C     GR1,FAMAX
NEWUPDATE=         BH    ACCWUPS
NEWUPDATE=/COPY "ACCUPN22 "
NEWUPDATE=/COPY NEXT "BNH" NEXT "ACCNMAY"
NEWUPDATE=ACCNMAZ  DS    0H
NEWUPDATE=/COPY "ACCAD "
NEWUPDATE=/COPY C=2
NEWUPDATE=ACCWUPS  C     GR2,=A(FACCESMC)
NEWUPDATE=         BE    ACCNMAZ
NEWUPDATE=         S     GR1,=F'11'
NEWUPDATE=         MVC   0(11,GR1),=C'*truncated*'
NEWUPDATE=         A     GR1,=F'11'
NEWUPDATE=         B     ACCAD
NEWUPDATE=/END FAMFIX
********** Sent August 28, 1979       **********
#4210
DATE=September 5,1979
PERSON=Boettner
NAME=FILESTATUS
NBR=529
BASE=RD16
DESCR=Alas would you believe that change #4209, while fixing the
DESCR=problem, did not give the desired behavior in all cases. 
DESCR=This change, to be applied after #4209, allows FULLACCESS 
DESCR=info to exceed the column width (if column output) if it is
DESCR=the last column of information.  And if it can't, instead of
DESCR=saying "*truncated*" it will give just ACCESS with flag. 
NEWUPDATE=/BEGIN FAMFIX2
NEWUPDATE=/COPY "FACCESSS"
NEWUPDATE=/COPY  BEFORE NEXT "L" NEXT "GR6,SIOA"
NEWUPDATE=         C     GR2,=A(FACCESMC)
NEWUPDATE=         BE    ACFAMNB      IF FAM, STAY IN COLS
NEWUPDATE=         L     GR14,CBSSAV+4
NEWUPDATE=         LA    GR14,8(,GR14) 
NEWUPDATE=         C     GR14,NXTCBS  is this the last column?
NEWUPDATE=         BNE   *+8
NEWUPDATE=         ST    GR6,FAMAX   if so go to end of page.
NEWUPDATE=ACFAMNB  DS    0H
NEWUPDATE=/DELETE "ACIVS "
NEWUPDATE=ACIVS    ST    GR1,FASTAR   SAVE LOCATION OF POTENTIAL *
NEWUPDATE=         C     GR2,=A(FACCESSC)  WANT FULL CRAP?
NEWUPDATE=/COPY C=1
NEWUPDATE=/SKIP C=1
NEWUPDATE=/DELETE  "ACCNMAZ "
NEWUPDATE=ACCWUPS  DS    0H
NEWUPDATE=/COPY "ACCAD "
NEWUPDATE=/DELETE "ACCWUPS " 
NEWUPDATE=/SKIP C=5
NEWUPDATE=/END FAMFIX2
********** Sent September 11, 1979    **********
#4211
DATE=September 20,1979
PERSON=Tiffany 
NAME=MACUTIL 
NBR=738/1
BASE=D4.2
DESCR=*MACUTIL blew up on a PGNT 4.
NEWUPDATE=/BEGIN KILPGNT4
NEWUPDATE=/COPY "WTONEMAC"
NEWUPDATE=/COPY  BEFORE NEXT "IF" NEXT "MCFSTLNR-MACDSCT(R6)"
NEWUPDATE=/EDIT F=3 "MCFSTLNR-MACDSCT(R6),EQ,TOKENLNR" = "TOKENLNR,EQ,MCFSTLNR-MACDSCT(R6)"
NEWUPDATE=/END KILPGNT4
********** Sent September 26, 1979    **********
#4212
DATE=December 4, 1979
PERSON=Tiffany 
NAME=COMPARE 
NBR=746/1
BASE=D4.2C
DESCR=*COMPARE printed unexplicable block numbers, etc.
NEWUPDATE=/BEGIN BLOCK# 
NEWUPDATE=/COPY "MARKBLK "
NEWUPDATE=/COPY NEXT "INVOKE DECIDE"
NEWUPDATE=         L     BLKCNT,BLK#     Restore block count register.
NEWUPDATE=/END BLOCK#
COMMENTS=The register BLKCNT (R2) at the call to DECIDE was clobbered
COMMENTS=and needs to be restored after the call.  This explains
COMMENTS=the unexpected results of the COMPARE program.
********** Sent with D4.2C (12-10-79) **********
#4213
DATE=January 11, 1980
PERSON=Tiffany 
NAME=PL1 COMPILER
NBR=163/10
BASE=D4.2C
DESCR=*PL1 blew up when using a large virtual memory file with
DESCR=MACRO option on.
NEWUPDATE=/BEGIN VMFILE 
NEWUPDATE=/COPY "VMWRITE "
NEWUPDATE=/COPY BEFORE NEXT "MVC" NEXT "4(0,R1),ZEROS"
NEWUPDATE=/EDIT F=3 "4(0" = "0(4"
NEWUPDATE=/END VMFILE
COMMENTS=The next VM file pointer was not zeroed.  The contents was
COMMENTS=X'1000'; so *PL1 started to read the UMLOAD which it 
COMMENTS=shouldn't.
********** Sent January 14, 1980      **********
#4214
DATE=February 7, 1980
PERSON=Tiffany 
NAME=PL1 COMPILER
NBR=163/9 
BASE=D4.2C
DESCR=*PL1 grabbed tons of virtual memory storage with MACRO option
DESCR=enabled for the second time in batch compilation.
NEWUPDATE=/BEGIN VMFILE 
NEWUPDATE=/COPY "TIOX "
NEWUPDATE=/COPY BEFORE NEXT "MVI" NEXT "DCBDEVT,DCB_VMFILE"
NEWUPDATE=/BUFFER MVI
NEWUPDATE=/COPY COUNT=1
NEWUPDATE=/BUFFER END
NEWUPDATE=/COPY NEXT "IF" NEXT "DCBDSGVM.DCBDSRG2"
NEWUPDATE=/INCLUDE MVI
NEWUPDATE=/END VMFILE
COMMENTS=The VM file should always be a VM file.  The RD4.2C PL/I(F)
COMMENTS=compiler may be patched in the csect OPEN# in the file *PL1
COMMENTS=as follows:
COMMENTS=      $RUN *OBJUTIL 0=*PL1
COMMENTS=      CSECT OPEN#
COMMENTS=      DISPLAY 1EA@T=I
COMMENTS=      COMMENT SHOULD BE I'B 0C65C'
COMMENTS=      MODIFY 1EA I'B 0CEA6'
COMMENTS=      MODIFY EA6 I'MVI 06B04A,B 0C65C'
COMMENTS=      STOP
********** Sent Februaty 11, 1980     **********
