*DECK CLT=IO2
IDENT DISFIO
TITLE DISFIO - NAMI FILE I/O
COMMENT DISFIO - FILE I/O FUNCTIONS
*CALL NMI=VER
SPACE 4
* IF,DEF,COLECT,1
COLECT SET 1 BUILD NAMIFIO FOR COLLECTOR JOB
TITLE CODED INPUT/OUTPUT ROUTINES
LIST G,F
ENTRY GETLINE
ENTRY PUTLINE,OFLUSH
ENTRY PUTTERM
ENTRY STARTIO,FINSHIO
ENTRY PUTTRMX,REWDIF
ENTRY PUTRTO,PUTRTC
ENTRY PUTRTR,PUTRTL
COLECT IF DEF,COLECT
ENTRY TIGRLST
ENTRY CPYATT,CPYGET,CPYRET,CPYFLS,CPYOPN,CPYSAV
ENTRY CPYPUR
COLECT ENDIF
ENTRY RAZERO
COLECT IF -DEF,COLECT
ENTRY UPD8MFN,UPD8NIN,PRLDNIN,NEWMAST,GNETCCL
COLECT ENDIF
* THIS ROUTINE READS / WRITES CODED LINES
* PASSING PARAMETERS:
* W1 OF COMMON PASSIT = FWA OF AREA TO BE READ/WRITTEN
* W2 OF COMMON PASSIT = NUMBER OF WORDS TO READ/WRITE
*
* RETURNED PARAMETERS (READ ONLY):
* W1 = UNCHANGED
* W2 = NUMBER OF WORDS READ
* W3 = 0, IF READ TERMINATED NORMALLY
* -1, EOR ENCOUNTERED ON READ
* -2, EOI ENCOUNTERED ON READ
*
EJECT
USE /PASSIT/
FWABUF BSS 1
COUNT BSS 1
COMPLT BSS 1
LEVEL BSS 1
IAFLAG BSS 1
USE *
USE /IOBUFS/
IBUF BSS 65
OBUFX BSS 65
TBUFX BSS 65
RBUF BSS 65
SBUF BSS 65
XBUF BSS 188
BSS 1000B
ZBUF EQU *-1
.ZBUF EQU ZBUF-IBUF
USE *
*IF DEF,CDCNET
USE /NFMBLK/
NFMLFN BSS 1
NFMNFN BSS 20
NFMREST BSS 10
USE *
*ENDIF
NAMIVER DIS 1,VER "VERSN"
EJECT
COLECT IF -DEF,COLECT
CC01 MICRO 1,,$PARAM$
CC02 MICRO 1,,$CIN=VIN$
CC03 MICRO 1,,$UNM=UNM$
CC04 MICRO 1,,$PWM=PWM$
CC05 MICRO 1,,$LIN=000$
CC06 MICRO 1,,$UIN=999$
CC07 MICRO 1,,$OIN=000$
CC08 MICRO 1,,$ZZD0FIL=ZZD0VIN$
CC09 MICRO 1,,$ZZD1FIL=ZZD1VIN$
CC10 MICRO 1,,$ZZD2FIL=ZZD2VIN$
CC11 MICRO 1,,$ZZL0FIL=ZZL0VIN$
CC13 MICRO 1,,$ZZS0FIL=ZZS0VIN$
CC15 MICRO 1,,$ZZT0FIL=ZZT0VIN$
USE /NETCOM/
NETINVN VFD 60/10CVIN=999,
NETINCR VFD 60/0
DFLR EQU * ORDER DEPENDENT VALUES ....
DIS 15,*"CC01","CC02","CC03","CC04","CC07","CC08","CC09","C
,C10","CC11","CC13","CC15".
VFD 60/0
DIS 4,DEFAULT
DIS 4,
USE *
COLECT ENDIF
EJECT
COLECT IF -DEF,COLECT
USE /NETCTRL/
NETCTL EQU *
DIS ,*NETCTRL.*
NETVIN DIS ,*VIN=001,*
DIS 15,*"CC01","CC02","CC03","CC04","CC07","CC08","CC09","C
,C10","CC11","CC13","CC15".
VFD 60/0
DIS 1,MFN MASTER (PROC) FILE NAME
MFN VFD 60/0LNAMSTRT
DIS 1,UN MASTER FILE AND ROUTED JOB USERNAME
UN VFD 60/0LNETOPS DEFAULTS TO NETOPS UN
DIS 1,PW MASTER FILE AND ROUTED JOB PASSWORD
PW VFD 60/0 DEFAULTS TO NO CHANGE
DIS 1,FM MASTER (PROC) FILE FAMILY NAME
FM VFD 60/0LSYS76
DIS 1,RN LAST USED PARAMETER RECORD NAME
RN VFD 60/0LRESTRT
DIS 1,LIN LOWER NIN BOUNDS FOR COLLECT
LIN VFD 60/0L000 DEFAULTS TO 000
DIS 1,UIN UPPER NIN BOUNDS FOR COLLECT
UIN VFD 60/0L999 DEFAULTS TO 999
DIS 1,MEMFUN MEMORY FILE USERNAME
MEMFUN VFD 60/0 DEFAULTS TO CURRENT USERNAME
DIS 1,OIN OLD INVOCATION NMBR FROM CC CALL
OIN DIS 1,777
DIS 1, MACHID MACHINE ID
MACHID VFD 60/0
MEMFVER DIS 1,VER "VERSN"
.NETCTL EQU *
NETCTL. EQU .NETCTL-NETCTL
BSSZ 77B-NETCTL.
DIS 1,ENDNETCTRL
USE *
COLECT ENDIF
EJECT
SPACE 4,8
USE /ROUTCOM/
RLFN BSS 1
RCODE BSS 1
USE *
SPACE 4,8
USE /COPYCOM/
PFN1 BSS 1
UN1 BSS 1
PFN2 BSS 1
UN2 BSS 1
PFN3 BSS 1
UN3 BSS 1
USE *
USE /PFEMSG/
PFERMSG BSS 4
USE *
EJECT
SPACE 4,8
TBL77 EQU *
VFD 12/7700B,12/0014D,36/0
VFD 42/0LNAME,18/0
VFD 60/0LMM.DD.YYBB
VFD 60/0LHH.MM.SSBB
VFD 60/10LNAMI R7
VFD 42/7LCOLLECT,18/3R 1.
VFD 30/5L00 ,30/5L
VFD 60/10L
DIS 4,NAMI DUMP COLLECTION
VFD 60/0,60/0
TBL34 EQU *
VFD 12/3400B,12/1B,36/0
VFD 36/6LBENRAD,24/5
.TBLS EQU *
L.TBLS EQU .TBLS-TBL77
LIST *
LIST F
SPACE 4,8
** COMMON DECKS REQUIRED FROM OPL (CATLIST)
OPL XTEXT COMSPFM
OPL XTEXT COMCMAC
OPL XTEXT COMCRDH
** COMMON DECKS REQUIRED FROM OPL (SETLOF)
*OPL XTEXT COMCCMD
*OPL XTEXT COMCCPM
PFN001 VFD 36/0LNETCCL,24/0
PFN002 VFD 42/0LNETCCL2,18/0
PFN003 VFD 42/0LNETCTRL,18/0
LOFADDR VFD 12/0,18/LOFLIST,30/1
LOFLIST VFD 42/0,18/3 LENGTH OF LIST
VFD 42/7COUTFIL ,18/OUTFIL
VFD 42/7CINFIL ,18/INFIL
VFD 60/
NXTLINE BSSZ 1 BATCH MODE POINTER TO NEXT LINE START
SAVEFWA BSSZ 1
IA$FLAG BSSZ 1
RAZERO EQU 0 FOR RA+0/RA+77 ACCESS
EJECT
TITLE GETLINE - GET ONE DATA LINE
** GETLINE
*
GETLINE EQ *+1S17 ENTRY/EXIT
* SETLOF LOFADDR
SA1 FWABUF SAVE INCOMING FWA
BX6 X1
SA6 SAVEFWA
SB3 12 SET WORD COUNT (RETURN TO USER)
SX6 B3
SA6 COUNT
RJ READAGN SEE IF NEED TO ISSUE READ
* READH INFIL,BUFFER,14
SA4 FWABUF FWA BUFR IN X4
SB6 X4 FWA BUFFER TO B6
SB7 14 MAX WORDS TO READ
SX2 INFIL FWA OF FET OF READ FILE
RJ =XRDH=
BX6 X1 STATUS 0=OK, -1=EOF, -2=EOI
SA6 RDTAG LWA+1 IN BUFR = EOR
SX7 0 RETURN 0 FOR GOOD READ
ZR X6,STA5 GOOD READ - NORMAL TERMINATION
SX7 1 RETURN 1 FOR END OF RECORD
PL X6,STA5 END OF RECORD
SX7 3 EOF/EOI - RETURN +3
STA5 SA7 COMPLT
EQ GETLINE EXIT...
SPACE 4,8
READAGN EQ *+1S17 ENTRY/EXIT...
SA1 RDTAG
ZR X1,READAGN
SA2 INFIL
MX0 43
LX0 1
BX6 X0*X2
SA6 A2 CLEAR CODE AND STATUS
READ INFIL,R
EQ READAGN
RDTAG VFD 60/1B
TITLE FILE FUNCTIONS
** OFLUSH
*
OFLUSH EQ *+1S17 ENTRY/EXIT
WRITER OUTFIL,R
EQ OFLUSH
SPACE 4,8
** REWDIF
*
REWDIF EQ *+1S17 ENTRY/EXIT
REWIND INFIL,R
SX7 B0
SA7 NXTLINE
EQ REWDIF
SPACE 4,8
** PUTLINE
*
PUTLINE EQ *+1S17 ENTRY/EXIT
SA2 FWABUF STARTING ADDRESS OF PRINTLINE
SA3 COUNT NUMBER OF WORDS TO BE WRITTEN
WRITEH OUTFIL,X2,X3
EQ PUTLINE
SPACE 4,8
** PUTTERM
*
PUTTERM EQ *+1S17 ENTRY/EXIT
SA2 FWABUF
SA3 COUNT
WRITEH OUTPUT,X2,X3
RJ PUTLINE
EQ PUTTERM
SPACE 4,8
** PUTTRMX
*
PUTTRMX EQ *+1S17 ENTRY/EXIT
WRITER OUTPUT,R
EQ PUTTRMX
SPACE 4,8
** PUTRTO
*
PUTRTO EQ *+1S17 ENTRY/EXIT
SA2 RLFN
RJ STRIP55 CHNG TRAIL 55B TO 00B
BX1 X6
SX2 3
BX6 X1+X2
SA6 ROUTFIL
OPEN ROUTFIL,WRITE,R
EQ PUTRTO
SPACE 4,8
** PUTRTC
*
PUTRTC EQ *+1S17 ENTRY/EXIT
RECALL ROUTFIL
WRITER ROUTFIL,R
WRITEF ROUTFIL,R
REWIND ROUTFIL,R
CLOSE ROUTFIL,REWIND,R
EQ PUTRTC
SPACE 4,8
** PUTRTL
*
PUTRTL EQ *+1S17 ENTRY/EXIT
RECALL ROUTFIL
SA2 FWABUF
SA3 COUNT
WRITEH ROUTFIL,X2,X3
EQ PUTRTL
SPACE 4,8
** PUTRTR
*
PUTRTR EQ *+1S17 ENTRY/EXIT
RECALL ROUTFIL
WRITER ROUTFIL,R
EQ PUTRTR
SPACE 4,8
INFIL FILEB IBUF,65,(FET=15D),EPR
OUTFIL FILEB OBUF,65
OUTPUT FILEB TBUF,65
ROUTFIL FILEB RBUF,65
IF DEF,COLECT,1
CATFILE FILEB TIGRBUF,65,(FET=15D),EPR
IF -DEF,COLECT,1
SAVFILE FILEB NETCTL,65,(FET=15D),EPR
CPYFL1 FILEB IBUF,(.ZBUF+1),(FET=15D),EPR
CPYFL2 FILEB IBUF,(.ZBUF+1),(FET=15D),EPR
OBUF BSS 65
TBUF BSS 65
EJECT
COLECT IF -DEF,COLECT
** GNETCCL
*
GNETCCL EQ *+1S17 ENTRY/EXIT
SX7 B0
SA7 PFERMSG
GET INFIL,MFN,UN
SA1 INFIL CHECK FOR ERRORS
LX1 60-10
MX0 60-8
BX6 -X0*X1 ISOLATE ERROR BITS
ZR X6,GNE1 NO ERRORS
MESSAGE PFERMSG,0,RECALL
MESSAGE GNERMSG,0,RECALL
EQ GNETCCL EXIT IN SHAME
GNE1 OPEN INFIL,READ,R
EQ GNETCCL
GNERMSG DIS ,*CANNOT GET/FIND MASTER FILE*
COLECT ENDIF
SPACE 4,8
** STARTIO
*
STARTIO EQ *+1S17 ENTRY/EXIT
SX6 B0
SA6 PFERMSG
SX7 A6
SB1 1
SA6 A6+B1
SA6 A6+B1
SA6 A6+B1
SA7 INFIL+10D
IF -DEF,COLECT,1
SA7 SAVFILE+10D
SA1 IAFLAG
BX7 X1
SA7 IA$FLAG
* 0 = INTERACTIVE USER, 2 = BATCH USER
IF -DEF,COLECT,1
RJ GNETCCL
OPEN OUTFIL,WRITENR,R
OPEN OUTPUT,WRITENR,R
EQ STARTIO
** FINSHIO
*
FINSHIO EQ *+1S17 ENTRY/EXIT
CLOSE INFIL,REWIND,R
RETURN INFIL,R
CLOSE OUTFIL,REWIND,R
CLOSE OUTPUT,,R
EQ FINSHIO
TITLE SURVEY USER CATALOG
COLECT IF DEF,COLECT
USE /TIGRCOM/
TCSTAT BSS 1 CATLIST STATUS
TCLEN BSS 1 COUNT OF WORDS READ
TIGRBUF BSS 65
USE
** TIGRLST
* WHEREIN WE READ THE USER CATALOG AND RETURN
* PF INFORMATION TO THE CALLER.
*
TIGRLST EQ *+1S17 ENTRY/EXIT
SB1 1
SA1 CATFILE
MX0 43 CLEAR LAST CODE/STATUS
LX0 1
BX7 X1*X0
SA7 A1
SA1 A1+B1
MX0 42 SET UP IN AND OUT POINTERS
BX7 -X0*X1
SA7 A1+B1
SA7 A7+B1
CATLIST CATFILE,,UN2
SB1 1
SA1 CATFILE
BX7 X1
SA7 TCSTAT
SA1 A1+B1
SA2 A1+B1
SA3 A2+B1 X2, X3 = IN AND OUT
IX6 X2-X3
SA6 TCLEN
EQ TIGRLST
COLECT ENDIF
TITLE COPY FILES
COLECT IF DEF,COLECT
CPYATT EQ *+1S17 ENTRY/EXIT
ATTACH CPYFL1,PFN1,UN1
RJ CPYST1
OPEN CPYFL1,READ,RECALL
EQ CPYATT
SPACE 3,6
CPYGET EQ *+1S17 ENTRY/EXIT
GET CPYFL1,PFN1,UN1
RJ CPYST1
OPEN CPYFL1,READ,RECALL
EQ CPYGET
SPACE 3,6
CPYST1 EQ *+1S17 ENTRY/EXIT
MX0 42
SA1 PFN1
SA2 CPYFL1
BX6 -X0*X2 FILE NAME
BX3 X0*X1 STATUS
BX6 X6+X3
SA6 A1
EQ CPYST1
SPACE 3,6
CPYST2 EQ *+1S17 ENTRY/EXIT
MX0 42
SA1 PFN2
SA2 CPYFL2
BX6 -X0*X2 FILE NAME
BX3 X0*X1 STATUS
BX6 X6+X3
SA6 A1
EQ CPYST2
COLECT ENDIF
EJECT
COLECT IF DEF,COLECT
CPYOPN EQ *+1S17 ENTRY/EXIT
SX6 B0
SA6 PFERMSG
SX7 A6
SB1 1
SA6 A6+B1
SA6 A6+B1
SA6 A6+B1
SA7 CPYFL1+10D
SA7 CPYFL2+10D
RJ CPYSN2
* ATTACH CPYFL2
* PURGE CPYFL2
RETURN CPYFL2,RECALL
* DEFINE CPYFL2
OPEN CPYFL2,WRITE,RECALL
RJ CPYST2
EQ CPYOPN
SPACE 3,6
CPYRET EQ *+1S17 ENTRY/EXIT
CLOSE CPYFL1,REWIND,RECALL
RETURN CPYFL1,RECALL
EQ CPYRET
CPYMSG DIS ,* COPIED FILNAME*
SPACE 3,6
CPYSAV EQ *+1S17 ENTRY/EXIT
RJ CPYSN2
CLOSE CPYFL2,REWIND,RECALL
RJ CPYST2
* RETURN CPYFL2,RECALL
EQ CPYSAV
SPACE 3
CPYPUR EQ *+1S17 ENTRY/EXIT
PURGE CPYFL1,UN1
RJ CPYST1
EQ CPYPUR
COLECT ENDIF
EJECT
COLECT IF DEF,COLECT
CPYFLS EQ *+1S17 ENTRY/EXIT
* CLEAR BUFFER
RJ CPYSN2
RJ CPYTAG
*IF DEF,CDCNET
RJ DUMPNFN
*ENDIF
CPY1 BSS 0
SA1 CPYFL1+1
MX0 42
BX6 -X0*X1
SA6 CPYFL1+2
SA6 CPYFL1+3
SA6 CPYFL2+3
READ CPYFL1,RECALL
RJ CPYST1
SA4 CPYFL1+2
BX6 X4
SA6 CPYFL2+2
SA5 CPYFL1+3 CHK FOR DATA
IX3 X4-X5
SA1 CPYFL1
LX1 60-9 GET EOI BIT
MX0 59
BX2 -X0*X1
ZR X2,CPY2 NOT EOI
ZR X3,CPY1A NO DATA
WRITER CPYFL2,RECALL
RJ CPYST2
CPY1A EQU *
* WRITEF CPYFL2,RECALL
* RJ CPYST2
MESSAGE CPYMSG,0,RECALL
EQ CPYFLS
CPY2 SX2 .ZBUF
IX7 X3-X2
NZ X7,CPY3
WRITE CPYFL2,RECALL
EQ CPY5
CPY3 WRITER CPYFL2,RECALL
CPY5 RJ CPYST2
EQ CPY1
SPACE 4,8
CPYSN2 EQ *+1S17 ENTRY/EXIT
SA1 PFN2
MX0 42
SA2 CPYFL2
BX6 X0*X1
BX2 -X0*X2
BX6 X6+X2
SA6 A2
EQ CPYSN2 FILE NAME SET
COLECT ENDIF
EJECT
COLECT IF DEF,COLECT
CPYTAG EQ *+1S17 ENTRY/EXIT
MX0 42
SA1 PFN1 GET NAME AND SET UP 77 TABLE
BX6 X0*X1
SA6 CPYMSG+1
SA6 TBL77+1
SA6 TBL34
DATE TBL77+2
CLOCK TBL77+3
SA2 TBL77+2
SA3 TBL77+3
LX2 6
LX3 6
BX6 X2
BX7 X3
SA6 A2
SA7 A3
SB1 1
SB2 TBL77
SB3 IBUF
SB4 L.TBLS
CT1 SA1 B2
BX6 X1
SA6 B3
SB2 B2+B1
SB3 B3+B1
SB4 B4-B1
NE B0,B4,CT1
SA1 CPYFL2+1 SET FOR WRITE
MX0 42
BX6 -X0*X1
SA6 CPYFL2+3
SX5 L.TBLS
IX6 X6+X5
SA6 CPYFL2+2
WRITER CPYFL2,RECALL
RJ CPYST2
EQ CPYTAG
COLECT ENDIF
*IF DEF,CDCNET
EJECT
COLECT IF DEF,COLECT
DUMPNFN EQ *+1S17
SA1 CPYFL2
MX0 24
BX2 X1*X0
LX2 24
SA3 =R*DMDI*
IX4 X2-X3
NZ X4,DUMPNFN IF NOT MDI DUMP FILE
WRITEW CPYFL2,NFMNFN,20
RJ CPYST2
WRITER CPYFL2,R
RJ CPYST2
EQ DUMPNFN
COLECT ENDIF
*ENDIF
TITLE UPDATE NETWORK INVOCATION NUMBER
COLECT IF -DEF,COLECT
** ADDONE
* WHEREIN WE ADD ONE TO THE CONTENTS OF X1. X1
* CONTAINS A DISPLAY CODE NUMBER. THEREFORE, WE
* CHECK TO SEE IF THE RESULTING VALUE IS GREATER
* THAN A DISPLAY CODE 7. IF SO, CHANGE IT TO A
* ZERO AND SET CARRY TO A ONE- WE WORK IN BASE 8.
*
ADDONE EQ *+1S17 ENTRY/EXIT
SX2 77B
SX3 1R9+1
SA4 CARRY GET ADD VALUE (0 OR 1)
IX1 X1+X4
BX6 X2*X1
IX6 X6-X3 SEE IF DISPLAY CODE 9
ZR X6,AD1MORE
SX6 B0
SA6 A4
EQ ADDONE ALL DONE
AD1MORE BSS 0
SX6 1
SA6 A4
BX1 -X2*X1 REPLACE WITH DISPLAY CODE 0
SX3 1R0
BX1 X1+X3
EQ ADDONE
CARRY BSS 1
SPACE 4,8
** PRLDNIN
* PRELOAD NET INV NUMBER IN FILE NAMES
*
PRLDNIN EQ *+1S17 ENTRY/EXIT
SB1 1
SB2 NETVIN+1 RESET DEFAULT VALUES
SB3 DFLR
SB4 16 NUMBER OF WORDS TO MOVE
MOVNIN SA1 B2
BX6 X1
SA6 B3
SB2 B2+B1
SB3 B3+B1
SB4 B4-B1
NE B0,B4,MOVNIN
EQ PRLDNIN
SPACE 4,8
** UPD8MFN
* REWRITE THE MASTER FILE (EG., MFN UPDATE)
UPD8MFN EQ *+1S17 ENTRY/EXIT
GET SAVFILE,PFN003,MEMFUN
RJ CRE8MF
EQ UPD8MFN
CRE8MF EQ *+1S17 ENTRY/EXIT
OPEN SAVFILE,ALTER,R
REWIND SAVFILE,R
SA2 SAVFILE+2 RESET IN PTR FOR WRITE
SX3 64
IX6 X2+X3
SA6 A2
WRITER SAVFILE,R
CLOSE SAVFILE,REWIND,R
SA2 SAVREP CHECK SAVE/REPLACE FLAG
ZR X2,C8A
SAVE SAVFILE,PFN003,MEMFUN,,PU,W
EQ C8B
C8A REPLACE SAVFILE,PFN003,MEMFUN
C8B RETURN SAVFILE,R
SX6 B0
SA6 SAVREP CLEAR SAVE/REPLACE FLAG
EQ CRE8MF
SAVREP DATA 0
FRSTRY DATA 1
COLECT ENDIF
EJECT
COLECT IF -DEF,COLECT
** UPD8NIN
* UPDATE THE FIRST RECORD ON THE SAVFILE CONTROL
* RECORD FILE. WE ARE ADDING ONE TO THE NETWORK
* INVOCATION NUMBER.
*
UPD8NIN EQ *+1S17 ENTRY/EXIT
MACHID MACHID
SA1 PFN003
MX0 30
BX1 X0*X1
SA2 MACHID ENTER MACHID AS PART OF NAME
SX3 7777B
BX2 X3*X2
LX2 18
BX6 X1+X2
SA6 A1
D8N1 GET SAVFILE,PFN003,MEMFUN
SA1 SAVFILE CHECK FOR ERRORS
LX1 60-10
MX0 60-8
BX6 -X0*X1
NZ X6,D8N3 FILE NOT THERE OR ERROR
EQ D8N5
D8N3 SA6 SAVREP SET SAVE (VS REPLACE) FLAG
MESSAGE PFERMSG,0,RECALL
RJ CRE8MF
EQ D8N1 TRY AGAIN AFTER CREATING SAVFILE
D8N5 OPEN SAVFILE,ALTER,R
REWIND SAVFILE,R
SA1 FRSTRY SEE IF FIRST TIME
ZR X1,D8N21 NOT FIRST
SX6 B0 YES FIRST - SPECIAL READ/CHECK
SA6 A1 FOR NAMI MEMORY FILE VERSION NUMBER
SX2 RBUF READ INTO TEMP BUFFER
SA3 SAVFILE+1 RESET FIRST, IN, OUT, LIMIT
MX0 60-18
BX3 X0*X3
BX7 X3+X2
SA7 A3 SET NEW FIRST
BX7 -X0*X7
SA7 SAVFILE+2
SA7 SAVFILE+3 SET NEW IN, OUT
SX5 65
IX7 X7+X5
SA4 SAVFILE+4
BX4 X0*X4
BX7 X4+X7
SA7 A4 SET SET LIMIT
READ SAVFILE,R
REWIND SAVFILE,R
SX2 NETCTL RESET FET TO SAVFILE BUFFER
SA3 SAVFILE+1 RESET FIRST, IN, OUT, LIMIT
MX0 60-18
BX3 X0*X3
BX7 X3+X2
SA7 A3 SET NEW FIRST
BX7 -X0*X7
SA7 SAVFILE+2
SA7 SAVFILE+3 SET NEW IN, OUT
SX5 65
IX7 X7+X5
SA4 SAVFILE+4
BX4 X0*X4
BX7 X4+X7
SA7 A4 RESET NEW LIMIT
SA1 RBUF+MEMFVER-NETCTL
SA2 NAMIVER VALIDATE NAMI VERSION
BX6 X1-X2 REPLACE MEM FILE IF NOT EQUAL
MX0 60-12 LOOK AT 1ST 8 CHAR ONLY
BX6 X0*X6 TO ALLOW FOR SUB-VERSIONS
ZR X6,D8N21
SX7 B0 SET REPLACE FLAG
SA7 SAVREP
MESSAGE REPLMF1,0,RECALL
MESSAGE REPLMF2,0,RECALL
CLOSE SAVFILE,REWIND,R
PURGE SAVFILE,MEMFUN
RETURN SAVFILE,R
SA1 RBUF+NETVIN-NETCTL SAVE NET INVOCATION NUMBER
BX6 X1
SA6 NETVIN
SA1 NAMIVER SET VERSION NUMBER
BX7 X1
SA7 MEMFVER
USERNUM UN
USERNUM MEMFUN
MACHID MACHID
RJ CRE8MF
EQ D8N1
D8N21 BSS 0
SA1 SAVFILE+1
MX0 42
BX7 -X0*X1 FWA OF BUFFER
SA7 SAVFILE+2 IN-POINTER
SA7 SAVFILE+3 OUT-POINTER
SA2 SAVFILE
MX0 43
LX0 1
BX6 X2*X0
SA6 SAVFILE CLEAR CODE AND STATUS
READ SAVFILE,R
SA2 SAVFILE+2
SA3 SAVFILE+3
IX7 X2-X3 GET COUNT OF WORDS READ
SB5 X7
BKSP SAVFILE,R
SB1 1
SA1 SAVFILE+B1
SB2 A1+B1
SX6 X1+B5
SA6 B2 THIS IS SAVFILE+2
SB3 X1+B1 GET *** WORD OF BUFFER
SA1 B3
LX1 42
MX0 60-18
BX1 -X0*X1
SA5 NETINCR
SX6 X5
SA6 CARRY
RJ ADDONE
LX1 60-6
RJ ADDONE
LX1 60-6
RJ ADDONE
LX1 12 3 DIGITS RIGHT JUSTIFIED
MX0 60-18 3 CHARACTER MASK
SA2 B3 START WITH NIN PARAMETER
LX2 42
BX2 X0*X2
BX6 X1+X2
LX6 60-42
SA6 A2
SA6 NETINVN
RJ PRLDNIN
REWRITER SAVFILE,R
CLOSE SAVFILE,REWIND,R
REPLACE SAVFILE,PFN003,MEMFUN
RETURN SAVFILE,R
EQ UPD8NIN
REPLMF1 DIS ,*VERSION MISMATCH ON MEMORY FILE*
REPLMF2 DIS ,*MEMORY FILE REPLACED*
COLECT ENDIF
TITLE SET NEW MASTER FILE POINTERS
COLECT IF -DEF,COLECT
** NEWMAST
* SET UP NEW MASTER FILE DIRECTION
*
NEWMAST EQ *+1S17 ENTRY/EXIT
SA1 A1 KEYWORD TO X1
SB1 1
SA2 X1+B1
SA1 X1
RJ STRIP55 SET VALUE BLANKS TO ZEROS
SB2 NETCTL
SB3 NETCTL.-1
NMS1 SA3 B2 GET CURRENT KEYWORD
IX4 X3-X1
ZR X4,NMS7 FOUND A MATCH
SB2 B2+B1
SB3 B3-B1
NE B0,B3,NMS1
EQ NEWMAST EXHAUSTED ALL POSSIBILITIES
NMS7 BSS 0
SA6 B2+B1 STORE NEW VALUE
EQ NEWMAST
COLECT ENDIF
SPACE 4,8
STRIP55 EQ *+1S17 ENTRY/EXIT
MX0 60-6 VALUE IN X2
SX6 55B
SB1 1
SB4 10
S55A LX2 6
BX3 -X0*X2
IX3 X3-X6 SEE IF BLANK
NZ X3,S55B
BX2 X0*X2 SET TO 0 IF BLANK
S55B SB4 B4-B1
NE B4,B0,S55A
BX6 X2 MOVE TO X6 WHEN DONE
EQ STRIP55
ENTRY STRIPSP
STRIPSP EQ *+1S17 ENTRY/EXIT
SA2 X1
RJ STRIP55
SA6 X1
EQ STRIPSP
END
IDENT REMIO
TITLE REMOTE TERMINAL I/O
COMMENT REMOTE TERMINAL I/O
SPACE 4,8
USE /TERMCOM/
COUNT BSS 1
IBUF BSS 65
USE *
EJECT
ENTRY TERMRD
TERMRD EQ *+1S17 ENTRY/EXIT
OPEN INPUT,READ,R
SB1 1
SA2 INPUT
SA1 A2+B1 X1 = FWA BUFFER
MX0 42
BX6 -X0*X1
SA6 A1+B1 SET IN POINTER
SA6 A6+B1 SET OUT POINTER
SB4 X6 SAVE FWA OF BUFFER
MX0 43
LX0 1
BX6 X2*X0
SA6 A2
SB5 64 CLEAR OUT INPUT BUFFER
SA2 SPACES TO SPACES
BX7 X2
CLRB SB5 B5-B1
SA7 B4+B5
NE B5,B0,CLRB
READ INPUT,R
SA2 INPUT+2
SA3 INPUT+3
IX7 X2-X3
SA7 COUNT
CLOSE INPUT,,R
EQ TERMRD
INPUT FILEB IBUF,65
SPACES DATA 10H
END
*CWEOR,0