slugnet - multiple user conferencing system: Part 2 of 6
James R. Purdon III
purdon at athena.mit.edu
Fri Dec 21 03:42:15 AEST 1990
The slugnet program is a multiple-user, interactive conferencing
facility. It currently runs under a variety of System V-based and
BSD-based operating systems (although certain functions may not be
possible under some of these operating systems).
Cut here-------------------------------------------------------------------
#!/bin/sh
# to extract, remove the header and type "sh filename"
if `test ! -s ./slugnet.n`
then
echo "writing ./slugnet.n"
cat > ./slugnet.n << '\End\Of\Shar\'
PROC,SLUGINS*I"SLUGINS: SLUGNET INSTALLATION PROCEDURE",
SVRUN"SERVER'S USER NUMBER "=(*F,*S7(ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)),
MXUSR"MAXIMUM NUMBER OF USERS "=(*N=64,*S3(0123456789)),
INACT"INACTIVE USER TIME LIMIT"=(*N=2,*S1(123456789)),
ORGNM"ORGANIZATION NAME "=(*A).
HELP
SLUGINS IS THE INSTALLATION PROCEDURE FOR SLUGNET. FOUR PARAMETERS MAY BE
SPECIFIED, SVRUN, MXUSR, INACT, AND ORGNM. SVRUN AND ORGNM ARE REQUIRED.
ON INSTALLATION, SLUGNET WILL CREATE FOUR INDIRECT ACCESS FILES ( SLUGCON,
SLUGHLP, SLUGNET, AND SLUGNEW ), AND ONE DIRECT ACCESS FILE ( SLUGUSR ).
HELP,SVRUN
THIS IS THE SERVER USER NUMBER. SLUGNET MUST BE INSTALLED FROM THIS USER
NUMBER. THIS PARAMETER IS REQUIRED.
HELP,MXUSR
THIS IS THE MAXIMUM NUMBER OF USERS + 1 ALLOWED TO USE SLUGNET AT THE SAME
TIME. THIS NUMBER SHOULD BE A MULTIPLE OF 64. THE DEFAULT IS 64.
HELP,INACT
THIS IS THE MAXIMUM TIME A USER IS ALLOWED TO REMAIN INACTIVE IN THE USER
DIRECTORY IN HOURS. THE DEFAULT IS 2 HOURS.
HELP,ORGNM
THIS IS A STRING FIELD THAT CAN HOLD ANYTHING. IT IS SUGGESTED THAT YOU USE
THIS FIELD TO HOLD THE NAME OF YOUR ORGANIZATION, INSTALLATION, OR SYSTEM.
ENDHELP
$NOTE./ /* BUILDING SLUGNET...
$REWIND,*.
$NOTE./ /* COMPILING SLUGNET...
$FTN5,I=SLUGSRC,B=SLUGBIN,L=SLUGLST,E=SLUGLST,OPT=2.
$NOTE./ /* LOADING SLUGNET...
$LDSET,PRESET=ZERO.
$LOAD,SLUGBIN.
$NOGO,SLUGNET.
$NOTE./ /* SAVING SLUGNET...
$PURGE,SLUGNET,SLUGNEW,SLUGHLP,SLUGCON,SLUGUSR/NA.
$SAVE,SLUGNET/AC=Y,CT=S,M=E.
$SAVE,SLUGHLP,SLUGNEW/AC=N,CT=S,M=R.
$SAVE,SLUGCON/AC=Y,CT=S,M=R.
$RETURN,SLUGHLP,SLUGLST,SLUGBIN,SLUGNEW,SLUGSRC,SLUGCON.
$NOTE./ /* EXECUTING SLUGNET...
$NOTE./ /* TYPE 'EXIT' TO LEAVE SLUGNET.
SLUGNET.
$ATTACH,SLUGUSR.
$RETURN,SLUGUSR.
$NOTE./ /* SLUGNET INSTALLATION SUCCESSFUL.
$REVERT,NOLIST.
$EXIT.
$NOTE./ /* SLUGNET INSTALLATION FAILED.
$REVERT,NOLIST.
DATA,SLUGSRC
BLOCK DATA
C
C SLUGNET LICENSE AGREEMENT
C
C
C IMPORTANT: THIS PROGRAM IS PROVIDED ONLY ON THE CONDITION THAT THE
C INSTALLER AGREE TO THE TERMS OF THIS LICENSE. BY ACCESSING ANY OF
C THE FILES IN THIS PACKAGE, THE INSTALLER AGREES TO BE BOUND BY THE
C TERMS OF THIS LICENSE. IF THE INSTALLER DOES NOT WISH TO BE BOUND
C BY THE TERMS OF THIS LICENSE, THE INSTALLER MUST DESTROY ALL FILES
C CREATED, COPIED, OR DERIVED FROM THIS PACKAGE.
C
C LICENSE
C
C 1. THIS PROGRAM IS COPYRIGHTED MATERIAL. YOU ARE LICENSED TO INSTALL
C NUMBER OF COPIES OF THE PROGRAM ON AANY NUMBER OF MACHINES AND USE
C IT AND ALLOW OTHERS TO USE IT. SUCH USE MAY INCLUDE COPYING OF THE
C PROGRAM AND FILES FOR ARCHIVAL PURPOSES AND DISTRIBUTION. YOU MUST
C REPRODUCE THE PROGRAM'S COPYRIGHT AND TRADEMARK NOTICES ON ALL COPIES.
C THE SOURCE CODE MAY BE FREELY DISTRIBUTED TO OTHER PARTIES AS LONG AS
C NO CHARGE IS MADE, OTHER THAN MEDIA COSTS.
C
C 2. NO PROMISES ARE MADE REGARDING THE SUITABILITY OF THIS SOFTWARE FOR
C ANY PURPOSE, AND IN NO EVENT WILL JAMES R. PURDON III OR HIS EMPLOYER
C OR ASSOCIATES BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN
C THEY HAVE BEEN ADVISED OF THE POSSIBLITY OF SUCH DAMAGES, NOR SHALL
C JAMES R. PURDON III OR HIS EMPLOYERS OR ASSOCIATES BE LIABLE FOR A
C CLAIM MADE BY ANY OTHER PARTY.
C
COMMON /COPY/ RIGHT
CHARACTER*46 RIGHT
DATA RIGHT / 'SLUGNET: COPYRIGHT 1987 BY JAMES R. PURDON III'/
END
PROGRAM SLUGNET (SLUGPRO=/162,TAPE97=SLUGPRO)
C
C -- MAXSIZ - 1: MAXIMUM NUMBER OF USERS
C -- MAXTIM : MAXIMUM TIME IN HOURS FOR #INACTIVE ENTRY
C
PARAMETER (MAXSIZ=MXUSR)
PARAMETER (MAXTIM=INACT)
IMPLICIT INTEGER (A-Z)
C
COMMON /C1/ BYE
COMMON /C2/ EOL
COMMON /C3/ JSN
COMMON /C4/ MESSAG
COMMON /C5/ TOLC
COMMON /C6/ UN
COMMON /C7/ EOB
COMMON /C8/ BUFFER
COMMON /C9/ COLONS
COMMON /C10/ FAMILY
COMMON /C11/ DING
COMMON /COPY/ RIGHT
C
CHARACTER*1 ASTER,BLANK,COLON,DOLLAR,LEFTA,LEFTP,PERIOD,RIGHTA,
* RIGHTP,SLASH,USTAT,STAT,HAT,NSTAT
CHARACTER*2 BYE,EOL,TOLC
CHARACTER*2 EOB,ESC
CHARACTER*4 DING
CHARACTER*5 ENDHLP
CHARACTER*7 MSGFIL,NULFIL,PSSWRD,UPSSWR,CPSWRD,EDTFIL,NEWFIL,
* CONFIL,SCRFIL,INPNAM,OUTNAM,PROFIL,PRONAM
CHARACTER*10 CJSN,CUN,INPFIL,JSN,OUTFIL,RCVFIL,SNDFIL,USRFIL,UN,
* URCVFL,UUN,UJSN,TJSN,STKFIL,CMDFIL,HLPFIL,DATE,FAMILY,TIME,
* UFAMLY,UTIME
CHARACTER*17 EDITOR
CHARACTER*26 ALPHA
CHARACTER*40 CONFER,CNAME,NAME,NCONFR,UNAME,SCONFR,UCONFR,STRING
CHARACTER*46 RIGHT
CHARACTER*162 BLANKS,MESSAG,BUFFER,COLONS
C
DIMENSION FAMILY(3)
C
LOGICAL PRIVAT,MSGFLG,BYEFLG,SWITCH,SELF,NAMFLG,STAFLG
LOGICAL ALLFLG,MEMFLG,CONFLG,EXTFLG,OK,OLD,START
LOGICAL ERRFLG,NOVICE,PROMPT,HLPFLG,FNDHLP,ECHO
LOGICAL BELL,RING,WAIT,TIMER,BRDCST
C
C
DATA ASTER / '*'/ ,BLANK / ' '/ ,COLON / ':'/ ,DOLLAR / '$'/ ,
* LEFTA / '<'/ ,LEFTP / '('/ ,PERIOD / '.'/ ,RIGHTA / '>'/ ,
* RIGHTP / ')'/ ,SLASH / '/'/ ,HAT / '^' /
DATA INPFIL / 'INPUT '/ ,OUTFIL / 'OUTPUT '/ ,RCVFIL /
* 'ZZZZRCV '/ ,SNDFIL / 'ZZZZSND '/ ,USRFIL / 'SLUGUSR '/ ,
* STKFIL / 'ZZZZSTK '/ ,CMDFIL / 'ZZZZCMD '/ ,HLPFIL /
* 'SLUGHLP '/
DATA INPUNI / 1 / ,OUTUNI / 2 / ,RCVUNI / 3 / ,SNDUNI / 4 / ,
* USRUNI / 5 / ,PROUNI / 97 / ,STKUNI / 7 / ,CMDUNI / 8 / ,HLPUNI
* / 9 /
DATA CNAMLN / 11 / ,CUNLEN / 7 / ,CONLEN / 7 /
DATA MSGLEN / 33 / ,NAMLEN / 0 / ,UNLEN / 0 /
DATA MASK18 / O"777777"/ ,PRIVAT / .FALSE. / ,MSGFLG / .FALSE. /
DATA NULFIL / 'ZZZZNUL'/ ,NULUNI / 99 / ,ERRUNI / 98 / ,MSGFIL /
* 'SLUGMSG'/ ,MSGUNI / 10 / ,EDTFIL / 'ZZZZEDT'/ ,EDTUNI / 11 / ,
* NEWFIL / 'SLUGNEW'/ ,NEWUNI / 12 / ,CONFIL / 'SLUGCON'/ ,CONUNI
* / 13 / ,SCRFIL / 'ZZZZSCR'/ ,SCRUNI / 6 /
DATA FL / 7 / ,ECHO / .TRUE. /
DATA LIMIT / MAXTIM / ,DELAY / 15 /
DATA EDITOR / 'FSE,SLUGMSG,OP=A.'/
DATA NOVICE / .TRUE. / ,PROMPT / .TRUE. / ,WAIT / .FALSE. /
DATA BELL / .TRUE. / ,TIMER / .TRUE. /
DATA ALPHA / 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
DATA ENDHLP / '*EOF:'/ ,INPNAM / 'INPUT '/ ,OUTNAM / 'OUTPUT '/ ,
* PRONAM / 'SLUGPRO'/
C
C -- GET USER INFO
C
PPREQ = O"03201520005700000000".OR.(LOCF(FAMILY(1)).AND.MASK18)
CALL REQPP (PPREQ)
FAMLEN = INDEX(FAMILY(1),COLON)-1
PPREQ = O"03201520003200000000".OR.(LOCF(UN).AND.MASK18)
CALL REQPP (PPREQ)
UNLEN = INDEX(UN,COLON)-1
PPREQ = O"03201520001300000000".OR.(LOCF(JSN).AND.MASK18)
CALL REQPP (PPREQ)
C
C -- CREATE RECEIVER FILE PASSWORD
C
PPREQ = O"03201520001300000000".OR.(LOCF(I).AND.MASK18)
CALL REQPP (PPREQ)
CALL RANSET (I)
DO 10 I = 1, 7
PSSWRD(I:I) = CHAR(INT(RANF()*25.)+1)
10 CONTINUE
C
C -- INITIALIZE VARIABLES
C
DO 20 I = 1, 162
BLANKS(I:I) = BLANK
COLONS(I:I) = COLON
20 CONTINUE
C
CJSN(1:4) = JSN(1:4)
MESSAG(1:MSGLEN) = 'W^E^L^C^O^M^E ^T^O S^L^U^G^N^E^T!'
CNAME(1:CNAMLN) = 'S^E^R^V^E^R'
CUN(1:CUNLEN) = '_SVRUN_'
NAME(1:15) = 'N^E^W ^U^S^E^R:'
NAMLEN = INDEX(NAME,COLON)-1
CMDFIL(1:4) = JSN(1:4)
EDTFIL(1:4) = JSN(1:4)
NULFIL(1:4) = JSN(1:4)
RCVFIL(1:4) = JSN(1:4)
SNDFIL(1:4) = JSN(1:4)
STKFIL(1:4) = JSN(1:4)
SCRFIL(1:4) = JSN(1:4)
CONFER(1:CONLEN) = 'R^O^O^T'
BYE = ':D'
DING = ':G5G'
EOB = ':E'
EOL = '::'
TOLC = ':I'
STRLEN = 8
STRING(1:STRLEN) = 'F^R^O^M:'
C
C -- SEE IF NEW USER
C
OPEN (UNIT=CMDUNI,FILE=CMDFIL,STATUS='NEW',IOSTAT=IOSTAT,RECL=162)
IF (IOSTAT.EQ.0) THEN
INQUIRE (UNIT=PROUNI,NAME=PROFIL)
WRITE (CMDUNI,1000) JSN(1:4),CUN(1:CUNLEN),PROFIL,JSN(1:4),
1 JSN(1:4),JSN(1:4),PROFIL,JSN(1:4)
1000 FORMAT ('.PROC,',A4,'CMD.',/,
1 '$GET,SLUGNET=SLUGNET/UN=',A7,'.',/,
2 'SLUGNET,',A7,'.',/,
3 '$NOTE,NR./ / ',/,
4 '$WHILE,FILE(',A4,'STK,AS),LOOP.',/,
5 '$SETFS,',A4,'CMD,',A4,'STK,SLUGNET/FS=NAD.',/,
6 'SLUGNET,',A7,'.',/,
7 '$ENDW,LOOP.',/,
8 '$NOTE,NR./ /* SLUGNET TERMINATED.',/,
9 '$REVERT,NOLIST.',/,
A '$EXIT.',/,
B A4,'CMD.',/,
C '$REVERT,NOLIST.',/,
D '$EXIT.',/,
E '$NOTE,NR./ /* SLUGNET TERMINATED.',/,
F '$REVERT,NOLIST.' )
REWIND CMDUNI
CLOSE (UNIT=CMDUNI,STATUS='KEEP')
BUFFER(1:160) = COLONS(1:160)
BUFFER(1:9) = '!XXXXXXX.'
BUFFER(2:8) = CMDFIL(1:FL)
START = .TRUE.
GO TO 450
C
ENDIF
CLOSE (UNIT=CMDUNI,STATUS='KEEP')
C
C -- CREATE SERVER FILE PASSWORD
C
J = 0
DO 30 I = 1, 7
J = ICHAR(CUN(I:I))
30 CONTINUE
CALL RANSET (J)
DO 40 I = 1, 7
CPSWRD(I:I) = CHAR(INT(RANF()*25.)+1)
40 CONTINUE
C
C -- SEE IF USER IS RETURNING
C
OPEN (UNIT=STKUNI,FILE=STKFIL,STATUS='OLD',IOSTAT=IOSTAT,FORM=
* 'UNFORMATTED')
IF (IOSTAT.EQ.0) THEN
REWIND STKUNI
READ (STKUNI) NUMLIN,OUTFIL,EDITOR,CONFIL,NOVICE,PROMPT,INPFIL,
* ECHO,DELAY,PROFIL,BELL,STRING,TIMER,BRDTIM
OLD = .TRUE.
REWIND STKUNI
ELSE
INQUIRE (UNIT=PROUNI,NAME=PROFIL)
CALL PF ('GET',PROFIL,PROFIL,'UN',UN,'RC',PFERR)
IF (PFERR.EQ.0) THEN
INPFIL(1:FL) = PROFIL
CLOSE (UNIT=PROUNI,STATUS='KEEP')
ELSE
CLOSE (UNIT=PROUNI,STATUS='DELETE')
CALL PF ('GET','SLUGPRO','SLUGPRO','UN',CUN,'RC',PFERR)
IF (PFERR.EQ.0) THEN
INPFIL(1:FL) = 'SLUGPRO'
ENDIF
ENDIF
ENDIF
IF (INPFIL(1:FL).EQ.INPNAM.OR.INPFIL(1:FL).EQ.PROFIL) THEN
CLOSE (UNIT=STKUNI,STATUS='DELETE')
ELSE
CLOSE (UNIT=STKUNI,STATUS='KEEP')
ENDIF
C
C -- SET UP FILES FOR INPUT AND OUTPUT
C
OPEN (UNIT=INPUNI,FILE=INPFIL(1:FL),STATUS='UNKNOWN',RECL=162)
OPEN (UNIT=OUTUNI,FILE=OUTFIL(1:FL),STATUS='UNKNOWN',RECL=162)
C
C -- CREATE AN EMPTY FILE
C
OPEN (UNIT=NULUNI,FILE=NULFIL,STATUS='UNKNOWN',RECL=162)
REWIND NULUNI
WRITE (NULUNI,*) BLANK
REWIND NULUNI
CLOSE (UNIT=NULUNI,STATUS='KEEP')
C
C -- SET UP RECEIVE FILE
C
OPEN (UNIT=RCVUNI,FILE=RCVFIL(1:FL),STATUS='UNKNOWN',RECL=162)
OPEN (UNIT=SNDUNI,FILE=SNDFIL(1:FL),STATUS='UNKNOWN',RECL=162)
C
C -- INITALIZE FILES
C
WRITE (RCVUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,BLANK
* ,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1,4),
* BLANK,RIGHTP,COLON
C
1010 FORMAT (A2,'F^R^O^M ',80A1)
C
WRITE (RCVUNI,1020) TOLC,BLANK,(MESSAG(I:I),I=1,MSGLEN)
1020 FORMAT (A2,160A1)
WRITE (RCVUNI,1020) TOLC,BLANK
C
C -- GET NEWS FILE AND ADD TO RECEIVER FILE
C
CALL PF ('GET',NEWFIL,NEWFIL,'UN',CUN(1:CUNLEN),'RC',PFERR)
OPEN (UNIT=NEWUNI,FILE=NEWFIL,STATUS='UNKNOWN',RECL=162)
50 READ (NEWUNI,1450,END=60) MESSAG(1:160)
WRITE (RCVUNI,1460) TOLC,MESSAG(1:160)
GO TO 50
C
60 CLOSE (UNIT=NEWUNI,STATUS='DELETE')
WRITE (RCVUNI,1020) TOLC,BLANK
C
C -- MAKE THE PERMANENT RECEIVE FILE
C
REWIND RCVUNI
CLOSE (UNIT=RCVUNI,STATUS='KEEP')
C
C -- IF OLD, SKIP NEXT STEP
C
IF (OLD) GO TO 70
C
CALL PF ('PURGE',RCVFIL(1:FL),'RC',PFERR)
CALL PF ('SAVE',RCVFIL(1:FL),RCVFIL(1:FL),'CT','S','M','A','PW',
* PSSWRD)
C
C -- LOAD THE USER INTO THE DIRECTORY ( OR UPDATE HIS CONFERENCE )
C
70 CALL PF ('ATTACH',USRFIL(1:FL),USRFIL(1:FL),'UN',CUN(1:CUNLEN),
* 'PW',CPSWRD,'RC',PFERR,'M','M')
C
C -- IF A CONFERENCE SHIFT INPROGRESS, OPEN UP SNDFIL
C
IF (SWITCH) THEN
OPEN (UNIT=SNDUNI,FILE=SNDFIL(1:FL),STATUS='UNKNOWN',RECL=162)
REWIND SNDUNI
ENDIF
C
C -- NO ACCESS TO FILE
C
IF (PFERR.EQ.2) THEN
C
C -- IF CONFERENCE UN, CREATE NEW DIRECTORY
C
IF (UN(1:UNLEN).EQ.CUN(1:CUNLEN)) THEN
C
C -- DESTROY ANY DIRECTORY FILE PRESENT
C
OPEN (UNIT=USRUNI,FILE=USRFIL(1:FL),STATUS='UNKNOWN')
REWIND USRUNI
CLOSE (UNIT=USRUNI,STATUS='DELETE')
C
C -- CREATE NEW DIRECTORY FILE
C
CALL PF ('DEFINE',USRFIL(1:FL),USRFIL(1:FL),'PW',CPSWRD,'CT'
* ,'S','M','M','AC','N','RC',PFERR)
IF (PFERR.NE.0) THEN
WRITE (OUTUNI,1030) TOLC,PFERR
1030 FORMAT (A2,'*PF ^E^R^R^O^R ',I3,'.')
CALL EXIT
ENDIF
OPEN (UNIT=USRUNI,FILE=USRFIL(1:FL),STATUS='NEW',ACCESS=
* 'DIRECT',RECL=16,FORM='UNFORMATTED')
C
C -- BLANK OUT FILE
C
DO 80 J = 1, MAXSIZ
WRITE (USRUNI,REC=J) BLANKS(1:160)
80 CONTINUE
NUMBER = MAXSIZ-1
WRITE (USRUNI,REC=1) NUMBER,DATE(),TIME(),BLANKS(1:130)
CLOSE (UNIT=USRUNI,STATUS='KEEP')
C
C -- FLUSH THE BUFFER
C
OPEN (UNIT=USRUNI,FILE=USRFIL(1:FL),STATUS='UNKNOWN')
REWIND USRUNI
CLOSE (UNIT=USRUNI,STATUS='KEEP')
C
C -- RELEASE THE FILE
C
CALL PF ('ATTACH',USRFIL(1:FL),USRFIL(1:FL),'UN',CUN(1:
* CUNLEN),'PW',CPSWRD,'RC',PFERR,'M','R')
C
IF (PFERR.NE.0) THEN
WRITE (OUTUNI,1030) TOLC,PFERR
CALL EXIT
ENDIF
C
OPEN (UNIT=USRUNI,FILE=USRFIL,STATUS='UNKNOWN',ACCESS=
* 'DIRECT',RECL=16,FORM='UNFORMATTED')
CLOSE (UNIT=USRUNI,STATUS='DELETE')
GO TO 70
C
ELSE
MSGLEN = 17
MESSAG(1:MSGLEN) = '*U^N ^I^S ^N^O^T '
WRITE (OUTUNI,1020) TOLC,(MESSAG(I:I),I=1,MSGLEN),(CUN(I:I),
* I=1,CUNLEN),PERIOD
CALL EXIT
ENDIF
C
C -- FILE IS BUSY
C
ELSEIF (PFERR.EQ.1) THEN
GO TO 70
C
C -- OTHER ERROR
C
ELSEIF (PFERR.GT.2.OR.PFERR.LT.0) THEN
WRITE (OUTUNI,1030) TOLC,PFERR
CALL EXIT
C
C -- ADD USER TO DIRECTORY
C
ELSE
OPEN (UNIT=USRUNI,FILE=USRFIL(1:FL),STATUS='UNKNOWN',ACCESS=
* 'DIRECT',RECL=16,FORM='UNFORMATTED')
C
C -- NUMBER MAY BE NUMBER OF USERS, BUT IS MOST LIKELY THE NUMBER
C OF RECORDS
C
READ (USRUNI,REC=1) NUMBER
C
C -- LOOK FOR FREE SLOT IN DIRECTORY
C
DO 90 J = 1, 2
DO 90 I = 2, NUMBER
C
C -- READ THE UN, FILENAME, PASSWORD, CONFERENCE, AND STATUS
C
READ (USRUNI,REC=I) UTIME,UNAME,UJSN,UUN,URCVFL,UPSSWR,
* UCONFR,USTAT,UFAMLY
C
C -- BUST GHOSTS
C
IF (UUN(1:1).NE.BLANK) THEN
READ (UTIME,1040) ITIME1
1040 FORMAT (I3)
UTIME = TIME()
READ (UTIME,1040) ITIME2
IF (ITIME1.GT.ITIME2) ITIME2 = ITIME2+24
IF (IABS(ITIME1-ITIME2).GT.LIMIT) THEN
WRITE (USRUNI,REC=I) BLANKS(1:160)
UUN(1:1) = BLANK
ENDIF
ENDIF
C
C -- IF THE UN IS BLANK, THE RECORD IS OK TO USE
C
IF (UUN(1:1).EQ.BLANK.AND.(.NOT.SWITCH).AND.(.NOT.OLD)
* .AND.(.NOT.NAMFLG).AND.(.NOT.STAFLG).AND.(.NOT.EXTFLG)
* .AND.J.GT.1) THEN
WRITE (USRUNI,REC=I) TIME(),NAME,JSN,UN,RCVFIL,PSSWRD,
* CONFER,STAT,FAMILY(1)
GO TO 100
C
ENDIF
C
C -- IF THE USER IS ALREADY THERE, EXTRACT INFO AND UPDATE CONFER
C
IF (UUN.EQ.UN.AND.JSN.EQ.UJSN) THEN
IF (NAMFLG) UNAME = NAME
NAME = UNAME
NAMLEN = INDEX(NAME,COLON)-1
RCVFIL = URCVFL
PSSWRD = UPSSWR
IF (SWITCH) THEN
UCONFR = NCONFR
SWITCH = .FALSE.
ENDIF
CONFER = UCONFR
CONLEN = INDEX(CONFER,COLON)-1
IF (USTAT.EQ.'S') THEN
USTAT = COLON
ENDIF
IF (STAFLG) THEN
USTAT = NSTAT
ENDIF
STAT = USTAT
IF (EXTFLG) THEN
UN = BLANKS(1:7)
ENDIF
WRITE (USRUNI,REC=I) TIME(),NAME,JSN,UN,RCVFIL,PSSWRD,
* CONFER,STAT,FAMILY(1)
GO TO 100
C
ENDIF
90 CONTINUE
C
C -- IF WE GET HERE, ITS FULL!
C
EXTFLG = .TRUE.
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1050) TOLC
1050 FORMAT (A2,' U^S^E^R ^D^I^R^E^C^T^O^R^Y ^I^S ^F^U^L^L - ',
* 'T^R^Y ^A^G^A^I^N ^L^A^T^E^R.')
WRITE (OUTUNI,1140) TOLC
C
C -- CLOSE THE FILE AND RELEASE IT
C
100 CLOSE (UNIT=USRUNI,STATUS='KEEP')
C
C -- FLUSH THE BUFFER
C
OPEN (UNIT=USRUNI,FILE=USRFIL(1:FL),STATUS='UNKNOWN')
REWIND USRUNI
CLOSE (UNIT=USRUNI,STATUS='KEEP')
C
CALL PF ('ATTACH',USRFIL(1:FL),USRFIL(1:FL),'UN',CUN(1:CUNLEN),
* 'PW',CPSWRD,'RC',PFERR,'M','R')
C
IF (PFERR.NE.0) THEN
WRITE (OUTUNI,1030) TOLC,PFERR
CALL EXIT
ENDIF
C
OPEN (UNIT=USRUNI,FILE=USRFIL,STATUS='UNKNOWN',ACCESS='DIRECT',
* RECL=16,FORM='UNFORMATTED')
CLOSE (UNIT=USRUNI,STATUS='DELETE')
ENDIF
C
C -- BRANCH IF NAME CHANGE
C
IF (NAMFLG) THEN
NAMFLG = .FALSE.
GO TO 200
C
ENDIF
C
C -- BRANCH IF STATUS CHANGE
C
IF (STAFLG) THEN
STAFLG = .FALSE.
GO TO 200
C
ENDIF
C
C -- STOP IF EXIT
C
IF (EXTFLG) THEN
CALL PF ('PURGE',RCVFIL,'RC',PFERR)
OPEN (UNIT=NULUNI,FILE=NULFIL,STATUS='UNKNOWN')
CLOSE (UNIT=NULUNI,STATUS='DELETE')
OPEN (UNIT=CMDUNI,FILE=CMDFIL,STATUS='UNKNOWN')
CLOSE (UNIT=CMDUNI,STATUS='DELETE')
OPEN (UNIT=STKUNI,FILE=STKFIL,STATUS='UNKNOWN')
CLOSE (UNIT=STKUNI,STATUS='DELETE')
OPEN (UNIT=MSGUNI,FILE=MSGFIL,STATUS='UNKNOWN')
CLOSE (UNIT=MSGUNI,STATUS='DELETE')
OPEN (UNIT=HLPUNI,FILE=HLPFIL,STATUS='UNKNOWN')
CLOSE (UNIT=HLPUNI,STATUS='DELETE')
OPEN (UNIT=RCVUNI,FILE=RCVFIL,STATUS='UNKNOWN')
CLOSE (UNIT=RCVUNI,STATUS='DELETE')
OPEN (UNIT=SNDUNI,FILE=SNDFIL,STATUS='UNKNOWN')
CLOSE (UNIT=SNDUNI,STATUS='DELETE')
OPEN (UNIT=PROUNI,FILE=PROFIL,STATUS='UNKNOWN')
CLOSE (UNIT=PROUNI,STATUS='DELETE')
PPREQ = O"24143020000300000002"
CALL REQPP (PPREQ)
IF (BYEFLG) WRITE (OUTUNI,1060) BYE
1060 FORMAT (A2)
CALL EXIT
ENDIF
C
C -- BRANCH IF OLD
C
IF (OLD) THEN
OLD = .FALSE.
OPEN (UNIT=MSGUNI,FILE=MSGFIL,STATUS='UNKNOWN',RECL=162)
NUMLIN = 0
110 READ (MSGUNI,1060,END=120)
NUMLIN = NUMLIN+1
GO TO 110
C
120 GO TO 200
C
ENDIF
C
C -- WRITE NOTICE
C
MSGLEN = 24
MESSAG(1:MSGLEN) = ' ^L^O^G^G^E^D ^O^N ^T^O '
C
WRITE (SNDUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,BLANK
* ,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1,4),
* BLANK,RIGHTP,COLON
C
WRITE (SNDUNI,1070) TOLC,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,BLANK,
* (UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4),BLANK,
* RIGHTP,(MESSAG(I:I),I=1,MSGLEN),(CONFER(I:I),I=1,CONLEN),PERIOD
C
1070 FORMAT (A2,1X,80A1)
WRITE (SNDUNI,1070) TOLC,BLANK
REWIND SNDUNI
CLOSE (UNIT=SNDUNI,STATUS='KEEP')
C
C -- ATTACH THE CONFERENCE DIRECTORY
C
130 CALL PF ('ATTACH',USRFIL(1:FL),USRFIL(1:FL),'UN',CUN(1:CUNLEN),
* 'PW',CPSWRD,'RC',PFERR,'M','R')
IF (PFERR.EQ.1) GO TO 130
C
C -- OPEN IT AS A DIRECT ACCESS DEVICE
C
OPEN (UNIT=USRUNI,FILE=USRFIL,STATUS='OLD',ACCESS='DIRECT',RECL=16
* ,FORM='UNFORMATTED')
C
C -- THE FIRST LINE IS THE NUMBER OF ENTRIES
C
READ (USRUNI,REC=1) NUMBER
C
C -- GHOST FLAG
C
SELF = .FALSE.
C
C -- CYCLE THROUGH THE LIST, APPENDING THE MESSAGE TO THE USERS'
C RECEIVE FILES
C
DO 150 I = 2, NUMBER
C
C -- READ THE UN, FILENAME, PASSWORD, CONFERENCE, AND STATUS
C
READ (USRUNI,REC=I) UTIME,UNAME,UJSN,UUN,URCVFL,UPSSWR,UCONFR,
* USTAT,UFAMLY
C
C -- MAKE SURE RECORD ISN'T EMPTY
C
IF (UUN(1:1).EQ.BLANK) GO TO 150
C
C -- MAKE SURE FAMILY IS THE SAME
C
IF (FAMILY(1)(1:FAMLEN).NE.UFAMLY(1:FAMLEN)) GO TO 150
C
C -- CALCULATE UUNLEN
C
UUNLEN = INDEX(UUN,COLON)-1
IF (UUNLEN.LE.0) UUNLEN = 7
C
C -- SEE IF SELF
C
IF (UUN(1:UUNLEN).EQ.UN(1:UNLEN).AND.JSN(1:4).EQ.UJSN(1:4))
* SELF = .TRUE.
C
C -- TRY THE APPEND
C
140 PFERR = 0
IF ((.NOT.PRIVAT).AND.(.NOT.BRDCST)) THEN
IF (((CONFER(1:CONLEN).EQ.UCONFR(1:CONLEN).OR.USTAT.EQ.'M')
* .AND.JSN(1:4).NE.UJSN(1:4)).OR.(JSN(1:4).EQ.UJSN(1:4)
* .AND.ECHO)) CALL PF ('APPEND',SNDFIL,URCVFL,'UN',UUN(1:
* UUNLEN),'PW',UPSSWR,'RC',PFERR)
ELSEIF (.NOT.PRIVAT) THEN
IF ((USTAT.EQ.'M'.AND.JSN(1:4).NE.UJSN(1:4)).OR.(JSN(1:4)
* .EQ.UJSN(1:4).AND.ECHO)) CALL PF ('APPEND',SNDFIL,URCVFL,
* 'UN',UUN(1:UUNLEN),'PW',UPSSWR,'RC',PFERR)
ELSE
IF (CONFER(1:CONLEN).EQ.UCONFR(1:CONLEN).AND.(USTAT.EQ.'M'
* .OR.UJSN(1:4).EQ.TJSN(1:4).OR.(JSN(1:4).EQ.UJSN(1:4).AND.
* ECHO).OR.UUN(1:UUNLEN).EQ.CUN(1:CUNLEN))) CALL PF (
* 'APPEND',SNDFIL,URCVFL,'UN',UUN(1:UUNLEN),'PW',UPSSWR,
* 'RC',PFERR)
ENDIF
IF (PFERR.EQ.1) GO TO 140
C
150 CONTINUE
C
C -- RETURN THE DIRECTORY
C
CLOSE (UNIT=USRUNI,STATUS='DELETE')
C
C -- DESTROY SNDFIL
C
OPEN (UNIT=SNDUNI,FILE=SNDFIL,STATUS='UNKNOWN')
CLOSE (UNIT=SNDUNI,STATUS='DELETE')
C
C -- RESET PRIVATE STATUS
C
PRIVAT = .FALSE.
C
C -- RESET BROADCAST STATUS
C
BRDCST = .FALSE.
C
C -- IF SELF IS MISSING, PRINT MESSAGE AND EXIT
C
IF (.NOT.SELF) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1080) TOLC,LIMIT
1080 FORMAT (A2,' U^S^E^R ^D^I^R^E^C^T^O^R^Y ^E^N^T^R^Y ',
* '^I^N^A^C^T^I^V^E ^F^O^R ',I2,' ^H^O^U^R^S - J^O^B ',
* '^T^E^R^M^I^N^A^T^E^D. ')
EXTFLG = .TRUE.
ENDIF
C
C STOP
C
C -- IF AN EXIT IS IN PROGRESS, GO BLANK OUT THE UN
C
IF (EXTFLG) GO TO 70
C
C -- IF A JOIN IS IN PROGRESS, DO A SWITCH
C
IF (SWITCH) THEN
CONFER = NCONFR
CONLEN = NCONLN
GO TO 70
C
ENDIF
C
C -- GET AND DISPLAY THE USER'S OWN RECEIVER FILE
C
160 CALL PF ('GET',RCVFIL,RCVFIL,'PW',PSSWRD,'RC',PFERR)
IF (PFERR.EQ.1) GO TO 160
C
C -- CLEAR OUT THE RCVFIL
C
CALL PF ('REPLACE',NULFIL,RCVFIL,'PW',PSSWRD,'RC',PFERR)
IF (PFERR.EQ.1) GO TO 160
C
C -- SEE IF THE MESSAGE FILE EXISTS
C
C
C -- OPEN THE MESSAGE BUFFER
C
OPEN (UNIT=MSGUNI,FILE=MSGFIL,STATUS='UNKNOWN',RECL=162)
REWIND MSGUNI
C
C -- DISPLAY THE RECEIVER FILE
C
OPEN (UNIT=RCVUNI,FILE=RCVFIL,STATUS='UNKNOWN',RECL=162)
REWIND RCVUNI
170 MSGFLG = .FALSE.
READ (RCVUNI,1090,END=180,ERR=190,IOSTAT=IOSTAT) MESSAG(1:162)
ERRFLG = .FALSE.
1090 FORMAT (A162)
IF (WAIT) THEN
IF (INDEX(MESSAG(1:162),STRING(1:STRLEN)).GT.0) WAIT = .FALSE.
ENDIF
IF (MESSAG(1:1).EQ.DOLLAR) THEN
IF (MESSAG(2:5).EQ.JSN(1:4)) THEN
MESSAG(1:156) = MESSAG(6:162)
MSGFLG = .TRUE.
GO TO 210
C
ELSEIF (UN(1:UNLEN).NE.CUN(1:CUNLEN)) THEN
GO TO 170
C
ENDIF
ENDIF
C
ENDMSG = INDEX(MESSAG,EOL)-1
IF (ENDMSG.LE.0) ENDMSG = 162
WRITE (OUTUNI,1100) MESSAG(1:2),(MESSAG(I:I),I=3,ENDMSG)
1100 FORMAT (A2,160A1)
C
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 170
C
C -- MAKE SURE WE ARE AT EOI
C
180 IF (ERRFLG) GO TO 190
CLOSE (UNIT=RCVUNI,STATUS='KEEP')
OPEN (UNIT=RCVUNI,FILE=RCVFIL,STATUS='UNKNOWN',RECL=162)
ERRFLG = .TRUE.
GO TO 170
C
C -- DESTROY OLD RECEIVE FILE
C
190 CLOSE (UNIT=RCVUNI,STATUS='DELETE')
C
C -- ACCEPT USER MESSAGES
C
NUMLIN = 0
C
C -- BUILD THE PROMPT
C
200 MESSAG(1:162) = COLONS(1:162)
MESSAG(1:2) = TOLC
IF (PROMPT) THEN
MODLEN = MOD(CONLEN,2)
MESSAG(3:2+CONLEN) = CONFER(1:CONLEN)
I = 3+CONLEN
ELSE
I = 3
MODLEN = 0
ENDIF
MESSAG(I:I) = RIGHTA
IF (MODLEN.EQ.0) THEN
I = I+1
MESSAG(I:I) = BLANK
ENDIF
I = I+1
MESSAG(I:I+1) = EOB
I = I+2
MESSAG(I:I+1) = EOL
I = I+1
C
C -- IF IN SCAN MODE OR IN WAIT MODE SKIP INPUT REQUEST
C
IF (STAT.EQ.'S'.OR.WAIT) THEN
MESSAG = BLANKS
I = DELAY
PPREQ = O"03201520000600000000".OR.(LOCF(I).AND.MASK18)
CALL REQPP (PPREQ)
IF (TIMER) WRITE (OUTUNI,1110) TIME()
1110 FORMAT (A10)
GO TO 210
C
ENDIF
C
C -- WRITE THE PROMPT
C
IF (INPFIL(1:FL).EQ.INPNAM) THEN
PRINT 1120,MESSAG(1:162)
1120 FORMAT (A162)
ENDIF
C
PPREQ = O"24143020000300000001"
CALL REQPP (PPREQ)
READ (INPUNI,1130,END=240) MESSAG(1:160)
IF (INPFIL(1:FL).NE.INPNAM) THEN
IF (ECHO) WRITE (OUTUNI,1460) TOLC,MESSAG(1:160)
ENDIF
PPREQ = O"24143020000300000000"
CALL REQPP (PPREQ)
C
210 ENDMSG = INDEX(MESSAG(1:160),EOL)-1
IF (ENDMSG.LE.0) ENDMSG = 160
DO 220 I = 1, ENDMSG
IF (MESSAG(I:I).EQ.HAT) THEN
I2 = I+1
IF (I2.GT.ENDMSG) GO TO 230
IF (INDEX(ALPHA,MESSAG(I2:I2)).LE.0) MESSAG(I:I2) = BLANKS(1
* :2)
ENDIF
220 CONTINUE
230 IF (MESSAG(1:1).EQ.BLANK.AND.MESSAG(1:162).NE.BLANKS) THEN
WRITE (MSGUNI,1130) MESSAG(1:160)
1130 FORMAT (A160)
NUMLIN = NUMLIN+1
GO TO 200
C
ENDIF
C
C -- COMMANDS
C
C -- BLANK LINE: BROADCAST MESSAGE
C
IF (MESSAG.NE.BLANKS) GO TO 300
GO TO 250
C
240 CLOSE (UNIT=INPUNI,STATUS='KEEP')
INPFIL(1:FL) = INPNAM
OPEN (UNIT=INPUNI,FILE=INPFIL(1:FL),STATUS='UNKNOWN',RECL=162)
250 IF (NUMLIN.EQ.0.AND.(.NOT.SWITCH)) GO TO 160
REWIND MSGUNI
C
C -- POSITION SNDFIL AT END
C
OPEN (UNIT=SNDUNI,FILE=SNDFIL,STATUS='UNKNOWN',RECL=162)
260 READ (SNDUNI,1130,END=270) MESSAG(1:160)
GO TO 260
C
C -- PREPARE MESSAGE
C
C
C -- IF SWITCH AND NUMLIN .EQ. 0, SKIP HEADER
C
270 IF (SWITCH.AND.NUMLIN.EQ.0) GO TO 280
IF ((.NOT.PRIVAT).AND.(.NOT.BRDCST)) THEN
WRITE (SNDUNI,1010) TOLC,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,
* BLANK,(UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4)
* ,BLANK,RIGHTP,COLON
ELSEIF (.NOT.BRDCST) THEN
MSGLEN = 37
MESSAG(1:MSGLEN) = '< ^P^R^I^V^A^T^E ^M^E^S^S^A^G^E ^T^O '
WRITE (SNDUNI,1010) TOLC,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,
* BLANK,(UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4)
* ,BLANK,RIGHTP,BLANK,(MESSAG(I:I),I=1,MSGLEN),(TJSN(I:I),I=1,
* 4),BLANK,RIGHTA,COLON
ELSE
MSGLEN = 37
MESSAG(1:MSGLEN) = '< ^B^R^O^A^D^C^A^S^T ^M^E^S^S^A^G^E >'
WRITE (SNDUNI,1010) TOLC,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,
* BLANK,(UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4)
* ,BLANK,RIGHTP,BLANK,(MESSAG(I:I),I=1,MSGLEN)
ENDIF
C
280 READ (MSGUNI,1130,END=290) MESSAG(1:160)
IF (MESSAG(1:1).EQ.'1') MESSAG(1:1) = BLANK
WRITE (SNDUNI,1140) TOLC,MESSAG(1:160)
1140 FORMAT (A2,A160)
GO TO 280
C
290 WRITE (SNDUNI,1140) TOLC
CLOSE (UNIT=MSGUNI,STATUS='DELETE')
REWIND SNDUNI
CLOSE (UNIT=SNDUNI,STATUS='KEEP')
GO TO 130
C
C -- COPY MESSAG TO BUFFER, REMOVING HATS
C
300 BUFLEN = 0
BUFFER = BLANKS
DO 310 I = 1, 160
IF (MESSAG(I:I).NE.HAT) THEN
BUFLEN = BUFLEN+1
BUFFER(BUFLEN:BUFLEN) = MESSAG(I:I)
ENDIF
310 CONTINUE
C
C -- SEND JSN: SENDS MESSAGE TO JSN ONLY
C
IF (BUFFER(1:4).EQ.'SEND') THEN
I = INDEX(BUFFER,BLANK)+1
TJSN(1:4) = BUFFER(I:I+3)
IF (INDEX(TJSN(1:4),BLANK).EQ.0) PRIVAT = .TRUE.
GO TO 250
C
ENDIF
C
C -- BROADCAST: SENDS MESSAGE TO ALL JSN, REGARDLESS OF CONFERENCE
C
IF (BUFFER(1:9).EQ.'BROADCAST') THEN
BUFFER(1:10) = TIME()
READ (BUFFER(1:10),1150) HOURS,MINUTE,SECOND
1150 FORMAT (1X,I2,1X,I2,1X,I2)
NEWTIM = HOURS*3600+MINUTE*60+SECOND
IF (NEWTIM-BRDTIM.LT.60) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1160) TOLC
1160 FORMAT (A2,' Y^O^U ^M^A^Y ^B^R^O^A^D^C^A^S^T ^O^N^L^Y ',
* '^O^N^C^E ^P^E^R ^M^I^N^U^T^E.')
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ELSE
BRDTIM = NEWTIM
BRDCST = .TRUE.
GO TO 250
C
ENDIF
ENDIF
C
C -- REWIND COMMAND
C
IF (BUFFER(1:6).EQ.'REWIND') THEN
REWIND INPUNI
GO TO 200
C
ENDIF
C
C -- SET COMMAND
C
IF (BUFFER(1:4).EQ.'SET ') THEN
IF (BUFFER(5:9).EQ.'NAME ') THEN
I = INDEX(MESSAG,BLANK)
MESSAG(I:I) = COLON
I = INDEX(MESSAG,BLANK)+1
BUFFER = BLANKS
BUFFER(1:39) = MESSAG(I:I+38)
DO 320 I = 1, 40
IF (BUFFER(I:I+1).EQ.BLANKS(1:2)) THEN
BUFFER(I:I+1) = EOL
GO TO 330
C
ENDIF
320 CONTINUE
330 NAME(1:40) = BUFFER(1:40)
NAMLEN = INDEX(NAME,COLON)-1
IF (NAMLEN.LE.0) THEN
NAME(1:19) = 'A^N^O^N^Y^M^O^U^S::'
NAMLEN = INDEX(NAME,COLON)-1
ENDIF
NAMFLG = .TRUE.
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1170) TOLC,(NAME(I:I),I=1,NAMLEN),PERIOD
1170 FORMAT (A2,' C^H^A^N^G^I^N^G ^N^A^M^E ^T^O ',42A1)
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 70
C
ENDIF
C
C -- SET MESSAGE BUFFER EDITOR
C
IF (BUFFER(5:11).EQ.'EDITOR ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(12:16).EQ.'XEDIT') THEN
EDITOR = 'XEDIT,SLUGMSG,AS.'
WRITE (OUTUNI,1180) TOLC
1180 FORMAT (A2,' E^D^I^T^O^R ^S^E^T ^T^O X^E^D^I^T.')
ELSEIF (BUFFER(12:14).EQ.'FSE') THEN
EDITOR = 'FSE,SLUGMSG,OP=A.'
WRITE (OUTUNI,1190) TOLC
1190 FORMAT (A2,' E^D^I^T^O^R ^S^E^T ^T^O FSE.')
ELSEIF (BUFFER(12:14).EQ.'TED') THEN
EDITOR = 'TED,SLUGMSG. '
WRITE (OUTUNI,1200) TOLC
1200 FORMAT (A2,' E^D^I^T^O^R ^S^E^T ^T^O T^E^D.')
ELSEIF (BUFFER(12:15).EQ.'EDIT') THEN
EDITOR = 'EDIT,SLUGMSG,AS. '
WRITE (OUTUNI,1210) TOLC
1210 FORMAT (A2,' E^D^I^T^O^R ^S^E^T ^T^O E^D^I^T.')
ELSE
WRITE (OUTUNI,1220) TOLC
1220 FORMAT (A2,' I^N^V^A^L^I^D ^O^R ^O^B^S^O^L^E^T^E ',
* '^E^D^I^T^O^R ^S^E^L^E^C^T^E^D.')
ENDIF
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET USER FILE
C
IF (BUFFER(5:9).EQ.'USER ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
CALL PF ('GET',BUFFER(10:16),BUFFER(10:16),'UN',UN(1:UNLEN),
* 'RC',PFERR)
IF (PFERR.EQ.0) THEN
CONFIL(1:FL) = BUFFER(10:16)
OPEN (UNIT=CONUNI,FILE=CONFIL,STATUS='UNKNOWN',RECL=162)
CLOSE (UNIT=CONUNI,STATUS='DELETE')
WRITE (OUTUNI,1230) TOLC,CONFIL
1230 FORMAT (A2,' U^S^E^R ^F^I^L^E ^C^H^A^N^G^E^D ^T^O ',A7)
ELSE
WRITE (OUTUNI,1240) TOLC
1240 FORMAT (A2,' I^N^V^A^L^I^D ^U^S^E^R ^F^I^L^E ',
* '^S^E^L^E^C^T^E^D.')
ENDIF
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET NOVICE MODE
C
IF (BUFFER(5:11).EQ.'NOVICE ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(12:13).EQ.'ON') NOVICE = .TRUE.
IF (BUFFER(12:14).EQ.'OFF') NOVICE = .FALSE.
IF (NOVICE) BUFFER(1:7) = '^O^N. '
IF (.NOT.NOVICE) BUFFER(1:7) = '^O^F^F.'
WRITE (OUTUNI,1250) TOLC,(BUFFER(I:I),I=1,7)
1250 FORMAT (A2,' N^O^V^I^C^E ^M^O^D^E ^I^S ',7A1)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET TIMER MODE
C
IF (BUFFER(5:10).EQ.'TIMER ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(11:12).EQ.'ON') TIMER = .TRUE.
IF (BUFFER(11:13).EQ.'OFF') TIMER = .FALSE.
IF (TIMER) BUFFER(1:7) = '^O^N. '
IF (.NOT.TIMER) BUFFER(1:7) = '^O^F^F.'
WRITE (OUTUNI,1260) TOLC,(BUFFER(I:I),I=1,7)
1260 FORMAT (A2,' T^I^M^E^R ^M^O^D^E ^I^S ',7A1)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET ECHO MODE
C
IF (BUFFER(5:9).EQ.'ECHO ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(10:11).EQ.'ON') ECHO = .TRUE.
IF (BUFFER(10:12).EQ.'OFF') ECHO = .FALSE.
IF (ECHO) BUFFER(1:7) = '^O^N. '
IF (.NOT.ECHO) BUFFER(1:7) = '^O^F^F.'
WRITE (OUTUNI,1270) TOLC,(BUFFER(I:I),I=1,7)
1270 FORMAT (A2,' E^C^H^O ^M^O^D^E ^I^S ',7A1)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET PROMPT MODE
C
IF (BUFFER(5:11).EQ.'PROMPT ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(12:13).EQ.'ON') PROMPT = .TRUE.
IF (BUFFER(12:14).EQ.'OFF') PROMPT = .FALSE.
IF (PROMPT) BUFFER(1:7) = '^O^N. '
IF (.NOT.PROMPT) BUFFER(1:7) = '^O^F^F.'
WRITE (OUTUNI,1280) TOLC,(BUFFER(I:I),I=1,7)
1280 FORMAT (A2,' P^R^O^M^P^T ^M^O^D^E ^I^S ',7A1)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET RING MODE
C
IF (BUFFER(5:9).EQ.'RING ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
IF (BUFFER(10:11).EQ.'ON') BELL = .TRUE.
IF (BUFFER(10:12).EQ.'OFF') BELL = .FALSE.
IF (BELL) BUFFER(1:7) = '^O^N. '
IF (.NOT.BELL) BUFFER(1:7) = '^O^F^F.'
WRITE (OUTUNI,1290) TOLC,(BUFFER(I:I),I=1,7)
1290 FORMAT (A2,' R^I^N^G ^M^O^D^E ^I^S ',7A1)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET DELAY TIME
C
IF (BUFFER(5:10).EQ.'DELAY ') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
I = -1
OPEN (UNIT=SCRUNI,STATUS='SCRATCH',RECL=162)
WRITE (SCRUNI,1300) BUFFER(11:14)
1300 FORMAT (A4)
REWIND SCRUNI
READ (SCRUNI,*,ERR=340) I
340 CLOSE (UNIT=SCRUNI,STATUS='DELETE')
IF (I.GE.0.AND.I.LE.9999) THEN
DELAY = I
WRITE (OUTUNI,1310) TOLC,DELAY
1310 FORMAT (A2,' D^E^L^A^Y ^T^I^M^E ^S^E^T ^T^O ',I4,'.')
ELSE
WRITE (OUTUNI,1320) TOLC
1320 FORMAT (A2,
* ' I^N^V^A^L^I^D ^D^E^L^A^Y ^S^P^E^C^I^F^I^E^D.')
ENDIF
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- SET WAIT COMMAND
C
IF (BUFFER(5:9).EQ.'WAIT ') THEN
I = INDEX(MESSAG,BLANK)
MESSAG(I:I) = COLON
I = INDEX(MESSAG,BLANK)+1
BUFFER = BLANKS
BUFFER(1:39) = MESSAG(I:I+38)
DO 350 I = 1, 40
IF (BUFFER(I:I+1).EQ.BLANKS(1:2)) THEN
BUFFER(I:I+1) = EOL
GO TO 360
C
ENDIF
350 CONTINUE
360 STRING(1:40) = BUFFER(1:40)
STRLEN = INDEX(STRING,COLON)-1
IF (NAMLEN.LE.0) THEN
STRING(1:8) = 'F^R^O^M:'
STRLEN = INDEX(STRING,COLON)-1
ENDIF
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1330) TOLC,(STRING(I:I),I=1,STRLEN),PERIOD
1330 FORMAT (A2,' W^A^I^T ^S^T^R^I^N^G ^S^E^T ^T^O ',42A1)
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 200
C
ENDIF
ENDIF
C
C -- DO SCROLL
C
IF (BUFFER(1:6).EQ.'SCROLL') THEN
STAFLG = .TRUE.
NSTAT = 'S'
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1340) TOLC
1340 FORMAT (A2,' E^N^T^E^R^I^N^G ^S^C^R^O^L^L ^M^O^D^E.')
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
C
C -- CREATE STACK FILE
C
OPEN (UNIT=STKUNI,FILE=STKFIL,STATUS='UNKNOWN',FORM=
* 'UNFORMATTED')
REWIND STKUNI
WRITE (STKUNI) NUMLIN,OUTFIL,EDITOR,CONFIL,NOVICE,PROMPT,INPFIL
* ,ECHO,DELAY,PROFIL,BELL,STRING,TIMER,BRDTIM
REWIND STKUNI
CLOSE (UNIT=STKUNI,STATUS='KEEP')
GO TO 70
C
ENDIF
C
C -- MONITOR MODE
C
IF (BUFFER(1:7).EQ.'MONITOR'.AND.UN(1:UNLEN).EQ.CUN(1:CUNLEN))
* THEN
STAFLG = .TRUE.
NSTAT = 'M'
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1350) TOLC
1350 FORMAT (A2,' E^N^T^E^R^I^N^G ^M^O^N^I^T^O^R ^M^O^D^E.')
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 70
C
ENDIF
C
C -- DO DELAY
C
IF (BUFFER(1:5).EQ.'DELAY') THEN
I = DELAY
PPREQ = O"03201520000600000000".OR.(LOCF(I).AND.MASK18)
CALL REQPP (PPREQ)
GO TO 200
C
ENDIF
IF (BUFFER(1:4).EQ.'WAIT') THEN
WAIT = .TRUE.
GO TO 200
C
ENDIF
C
C -- JOIN CONFERENCE: CHANGES USER'S CONFERENCE
C
IF (BUFFER(1:5).EQ.'JOIN ') THEN
BUFFER = BLANKS
I = INDEX(MESSAG,BLANK)+1
BUFFER(1:39) = MESSAG(I:I+38)
DO 370 I = 1, 40
IF (BUFFER(I:I+1).EQ.BLANKS(1:2)) THEN
BUFFER(I:I+1) = EOL
GO TO 380
C
ENDIF
370 CONTINUE
380 NCONFR(1:40) = BUFFER(1:40)
NCONLN = INDEX(NCONFR,COLON)-1
IF (NCONLN.LE.0) THEN
NCONFR(1:9) = 'R^O^O^T::'
NCONLN = INDEX(NCONFR,COLON)-1
ENDIF
SWITCH = .TRUE.
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1360) TOLC,(NCONFR(I:I),I=1,NCONLN),PERIOD
1360 FORMAT (A2,' J^O^I^N^I^N^G ^C^O^N^F^E^R^E^N^C^E ',42A1)
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
C
C -- FLUSH MESSAGE BUFFER AND ADD NOTICE
C
MSGLEN = 26
C
C -- MAKE SURE MESSAGE EXITS
C
INQUIRE (FILE=MSGFIL,OPENED=OK)
IF (.NOT.OK) OPEN (UNIT=MSGUNI,FILE=MSGFIL,STATUS='UNKNOWN',
* RECL=162)
C
MESSAG(1:MSGLEN) = ' ^L^O^G^G^E^D ^O^F^F ^O^F '
BUFFER(1:7) = 'F^R^O^M'
C
WRITE (MSGUNI,1370) (BUFFER(I:I),I=1,7),BLANK,(CNAME(I:I),I=1,
* CNAMLN),BLANK,LEFTP,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,
* BLANK,(CJSN(I:I),I=1,4),BLANK,RIGHTP,COLON
C
WRITE (MSGUNI,1370) BLANK,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,
* BLANK,(UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4)
* ,BLANK,RIGHTP,(MESSAG(I:I),I=1,MSGLEN),(CONFER(I:I),I=1,
* CONLEN),PERIOD
WRITE (MSGUNI,1370) BLANK
1370 FORMAT (160A1)
GO TO 240
C
ENDIF
C
C -- SHOW: MEMBERS, CONFERENCES, ALL
C
IF (BUFFER(1:5).EQ.'SHOW ') THEN
C
C -- RESET FLAGS
C
MEMFLG = .FALSE.
CONFLG = .FALSE.
ALLFLG = .FALSE.
C
IF (BUFFER(6:12).EQ.'MEMBERS') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1380) TOLC
1380 FORMAT (A2,' J^S^N U^N N^A^M^E')
MEMFLG = .TRUE.
ENDIF
C
IF (BUFFER(6:8).EQ.'ALL'.AND.UN.EQ.CUN) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1390) TOLC
1390 FORMAT (A2,' J^S^N U^N S^T^A^T^U^S P^A^S^S^W^R^D ',
* 'C^O^N^F^E^R^E^N^C^E')
ALLFLG = .TRUE.
ENDIF
C
IF (BUFFER(6:11).EQ.'CONFER') THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP
* ,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I)
* ,I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1400) TOLC
1400 FORMAT (A2,' U^S^E^R^S C^O^N^F^E^R^E^N^C^E ^N^A^M^E')
CONFLG = .TRUE.
ENDIF
C
C -- IF NO OPTION IS SELECTED, BRANCH
C
IF (.NOT.(MEMFLG.OR.ALLFLG.OR.CONFLG)) GO TO 450
C
C -- DO REQUEST
C
I = I+1
IF (CONFLG) THEN
OPEN (UNIT=SCRUNI,FILE=SCRFIL,STATUS='UNKNOWN',ACCESS=
* 'DIRECT',FORM='UNFORMATTED',RECL=5)
NEXREC = 1
WRITE (SCRUNI,REC=NEXREC) BLANKS(1:50)
ENDIF
C
390 CALL PF ('ATTACH',USRFIL(1:FL),USRFIL(1:FL),'UN',CUN(1:CUNLEN),
* 'PW',CPSWRD,'RC',PFERR,'M','R')
IF (PFERR.EQ.1) GO TO 390
C
C -- OPEN IT AS A DIRECT ACCESS DEVICE
C
OPEN (UNIT=USRUNI,FILE=USRFIL,STATUS='OLD',ACCESS='DIRECT',RECL
* =16,FORM='UNFORMATTED')
C
C -- THE FIRST LINE IS THE NUMBER OF ENTRIES
C
READ (USRUNI,REC=1) NUMBER
C
C -- CYCLE THROUGH THE LIST, EXTRACTING INFO
C
DO 420 I = 2, NUMBER
C
C -- READ THE UN, FILENAME, PASSWORD, CONFERENCE, AND STATUS
C
READ (USRUNI,REC=I) UTIME,UNAME,UJSN,UUN,URCVFL,UPSSWR,
* UCONFR,USTAT,UFAMLY
C
C -- MAKE SURE RECORD ISN'T EMPTY
C
IF (UUN(1:1).EQ.BLANK) GO TO 420
C
C -- CLEAR COLONS FROM VALUES
C
J = INDEX(UUN,COLON)
UUN(J:10) = BLANKS(J:10)
J = INDEX(UNAME,COLON)
UNAME(J:40) = BLANKS(J:40)
J = INDEX(UCONFR,COLON)
UCONFR(J:40) = BLANKS(J:40)
C
C -- IF ALL, WRITE THE WORKS
C
IF (ALLFLG) THEN
WRITE (OUTUNI,1410) TOLC,UJSN(1:4),UUN(1:7),USTAT,UPSSWR(
* 1:7),UCONFR(1:39)
1410 FORMAT (A2,1X,A4,1X,A7,3X,A1,3X,A7,1X,A39)
ENDIF
C
C -- IF MEMBERS, ONLY SHOW PERSONS ON THE SAME CONFERENCE
C
IF (MEMFLG) THEN
C
C IF( UCONFR( 1: CONLEN + 1 ) .EQ. BLANK .AND.
C
IF (UCONFR(1:CONLEN).EQ.CONFER(1:CONLEN).AND.USTAT.NE.'M'
* .AND.UFAMLY(1:FAMLEN).EQ.FAMILY(1)(1:FAMLEN)) THEN
WRITE (OUTUNI,1420) TOLC,UJSN(1:4),UUN(1:7),UNAME(1:40
* )
1420 FORMAT (A2,1X,A4,1X,A7,1X,A40)
ENDIF
ENDIF
C
C -- SHOW CONFERENCES ( EXCEPT FOR INVISIBLES )
C
IF (CONFLG) THEN
IF (UCONFR(1:1).NE.'-') THEN
DO 400 K = 1, NEXREC
READ (SCRUNI,REC=K) SCONFR,NUMCON
IF (UCONFR(1:39).EQ.SCONFR(1:39)) THEN
NUMCON = NUMCON+1
WRITE (SCRUNI,REC=K) UCONFR,NUMCON
GO TO 410
C
ENDIF
400 CONTINUE
NUMCON = 1
WRITE (SCRUNI,REC=NEXREC) UCONFR,NUMCON
NEXREC = NEXREC+1
410 CONTINUE
ENDIF
ENDIF
420 CONTINUE
C
C -- RETURN THE DIRECTORY
C
CLOSE (UNIT=USRUNI,STATUS='DELETE')
C
C -- IF CONFLG, PRINT CONFERENCES
C
IF (CONFLG) THEN
NEXREC = NEXREC-1
DO 430 K = 1, NEXREC
READ (SCRUNI,REC=K) SCONFR,NUMCOM
WRITE (OUTUNI,1430) TOLC,NUMCOM,SCONFR(1:39)
1430 FORMAT (A2,2X,I3,2X,A39)
430 CONTINUE
ENDIF
C
C -- DESTROY SCRFIL
C
CLOSE (UNIT=SCRUNI,STATUS='DELETE')
C
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 200
C
ENDIF
C
C -- BYE COMMAND
C
440 IF (BUFFER(1:3).EQ.'BYE') THEN
BYEFLG = .TRUE.
BUFFER(1:4) = 'EXIT'
ENDIF
C
C -- EXIT COMMAND
C
IF (BUFFER(1:4).EQ.'EXIT') THEN
EXTFLG = .TRUE.
SWITCH = .TRUE.
C
C -- FLUSH MESSAGE BUFFER AND ADD NOTICE
C
MSGLEN = 26
C
C -- MAKE SURE MESSAGE EXITS
C
INQUIRE (FILE=MSGFIL,OPENED=OK)
IF (.NOT.OK) OPEN (UNIT=MSGUNI,FILE=MSGFIL,STATUS='UNKNOWN',
* RECL=162)
C
MESSAG(1:MSGLEN) = ' ^L^O^G^G^E^D ^O^F^F ^O^F '
BUFFER(1:7) = 'F^R^O^M'
C
WRITE (MSGUNI,1370) (BUFFER(I:I),I=1,7),BLANK,(CNAME(I:I),I=1,
* CNAMLN),BLANK,LEFTP,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,
* BLANK,(CJSN(I:I),I=1,4),BLANK,RIGHTP,COLON
C
WRITE (MSGUNI,1370) BLANK,(NAME(I:I),I=1,NAMLEN),BLANK,LEFTP,
* BLANK,(UN(I:I),I=1,UNLEN),BLANK,SLASH,BLANK,(JSN(I:I),I=1,4)
* ,BLANK,RIGHTP,(MESSAG(I:I),I=1,MSGLEN),(CONFER(I:I),I=1,
* CONLEN),PERIOD
WRITE (MSGUNI,1370) BLANK
GO TO 240
C
ENDIF
C
C -- EDIT MESSAG BUFFER
C
IF (BUFFER(1:4).EQ.'EDIT') THEN
BUFFER(1:160) = BLANKS(1:160)
BUFFER(1:13) = '!XXXXEDT.'
BUFFER(2:5) = JSN(1:4)
REWIND MSGUNI
CLOSE (UNIT=MSGUNI,STATUS='KEEP')
OPEN (UNIT=EDTUNI,FILE=EDTFIL,STATUS='UNKNOWN',RECL=162)
REWIND EDTUNI
WRITE (EDTUNI,1440) JSN(1:4),EDITOR,JSN(1:4),JSN(1:4),JSN(1:4),
* JSN(1:4),JSN(1:4),JSN(1:4)
1440 FORMAT ('.PROC,',A4,'EDT.',/,'$',A17,/,'$RETURN,',A4,'TMP.',/,
* '$COPYSBF,SLUGMSG,',A4,'TMP.',/,'$REWIND,',A4,'TMP,SLUGMSG.'
* ,/,'$COPY,',A4,'TMP,SLUGMSG.',/,'$RETURN,',A4,'TMP,',A4,
* 'EDT.',/,'$REWIND,SLUGMSG.',/,'$REVERT,NOLIST.')
REWIND EDTUNI
CLOSE (UNIT=EDTUNI,STATUS='KEEP')
PPREQ = O"24143020000300000001"
CALL REQPP (PPREQ)
ENDIF
C
C -- WRITE STACK FILE FOR NOS PASS THROUGH
C
450 IF (BUFFER(1:1).EQ.'!') THEN
ICOMMA = INDEX(BUFFER,',')
IF (INDEX(BUFFER,'BYE').GT.0.OR.INDEX(BUFFER,'HELLO').GT.0)
* THEN
IF (ICOMMA.EQ.0) THEN
BUFFER(1:3) = 'BYE'
GO TO 440
C
ELSE
MESSAG(ICOMMA:160) = BUFFER(ICOMMA:160)
BUFFER(2:7) = '$APPSW'
BUFFER(8:81) = MESSAG(ICOMMA:ICOMMA+72)
ENDIF
ENDIF
BUFFER(1:159) = BUFFER(2:160)
BUFFER(160:160) = '.'
IF (.NOT.START) THEN
OPEN (UNIT=STKUNI,FILE=STKFIL,STATUS='UNKNOWN',FORM=
* 'UNFORMATTED')
REWIND STKUNI
WRITE (STKUNI) NUMLIN,OUTFIL,EDITOR,CONFIL,NOVICE,PROMPT,
* INPFIL,ECHO,DELAY,PROFIL,BELL,STRING,TIMER,BRDTIM
REWIND STKUNI
CLOSE (UNIT=STKUNI,STATUS='KEEP')
ENDIF
C
C PRINT *, BUFFER( 1: 160 )
C REWIND OUTUNI
C
PPREQ = O"24032320000500000000".OR.(LOCF(BUFFER).AND.MASK18)
CALL REQPP (PPREQ)
C
CALL EXIT
ENDIF
C
C -- DO HELP
C
IF (BUFFER(1:4).EQ.'HELP') THEN
CALL PF ('GET',HLPFIL,HLPFIL,'UN',CUN(1:CUNLEN),'RC',PFERR)
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
C
C -- SEE WHAT THE SUBJECT IS
C
IEND = INDEX(BUFFER,BLANKS(1:2))
IF (IEND.LE.0) IEND = 160
BUFFER(IEND:IEND) = COLON
IF (BUFFER(5:5).NE.COLON) THEN
BUFFER(5:5) = ASTER
ELSE
BUFFER(5:9) = ENDHLP
ENDIF
IF (BUFFER(5:8).EQ.'*ALL') BUFFER(6:6) = COLON
LRQST = INDEX(BUFFER,COLON)-1
C
C -- SET FLAGS
C
HLPFLG = .FALSE.
FNDHLP = .FALSE.
C
OPEN (UNIT=HLPUNI,FILE=HLPFIL,STATUS='UNKNOWN',RECL=162)
460 READ (HLPUNI,1450,END=470) MESSAG(1:160)
1450 FORMAT (A160)
IF (MESSAG(1:1).NE.ASTER) THEN
IF (HLPFLG) WRITE (OUTUNI,1460) TOLC,MESSAG(1:160)
1460 FORMAT (A2,A160)
ELSE
IF (MESSAG(1:5).EQ.ENDHLP) THEN
IF (FNDHLP) THEN
GO TO 470
C
ELSE
HLPFLG = .TRUE.
ENDIF
ELSEIF (BUFFER(5:LRQST).EQ.MESSAG(1:LRQST-4)) THEN
HLPFLG = .TRUE.
FNDHLP = .TRUE.
ELSE
HLPFLG = .FALSE.
ENDIF
ENDIF
GO TO 460
C
470 CLOSE (UNIT=HLPUNI,STATUS='KEEP')
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
GO TO 200
C
ENDIF
C
C -- INPUT REDIRECTION
C
IF (BUFFER(1:1).EQ.LEFTA) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
C
C -- SEE IF DEFAULT
C
IF (BUFFER(2:2).EQ.COLON.OR.BUFFER(2:2).EQ.BLANK) BUFFER(2:8) =
* INPNAM
C
C -- TEST SPECIFIED FILE
C
OPEN (UNIT=SCRUNI,FILE=BUFFER(2:8),STATUS='UNKNOWN',IOSTAT=
* IOSTAT,RECL=162)
IF (IOSTAT.EQ.0) THEN
CLOSE (UNIT=SCRUNI,STATUS='KEEP')
CLOSE (UNIT=INPUNI,STATUS='KEEP')
INPFIL(1:FL) = BUFFER(2:8)
WRITE (OUTUNI,1470) TOLC,INPFIL(1:FL)
1470 FORMAT (A2,' I^N^P^U^T ^U^S^I^N^G ',A7)
OPEN (UNIT=INPUNI,FILE=INPFIL(1:FL),STATUS='UNKNOWN',RECL=
* 162)
ELSE
CLOSE (UNIT=SCRUNI,STATUS='DELETE')
WRITE (OUTUNI,1480) TOLC,BUFFER(2:8)
1480 FORMAT (A2,' I^N^V^A^L^I^D ^F^I^L^E ^N^A^M^E ',A7)
ENDIF
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- OUTPUT REDIRECTION
C
IF (BUFFER(1:1).EQ.RIGHTA) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
C
C -- SEE IF DEFAULT
C
IF (BUFFER(2:2).EQ.COLON.OR.BUFFER(2:2).EQ.BLANK) BUFFER(2:8) =
* OUTNAM
C
C -- TEST SPECIFIED FILE
C
OPEN (UNIT=SCRUNI,FILE=BUFFER(2:8),STATUS='UNKNOWN',IOSTAT=
* IOSTAT,RECL=162)
IF (IOSTAT.EQ.0) THEN
CLOSE (UNIT=SCRUNI,STATUS='KEEP')
OUTFIL(1:FL) = BUFFER(2:8)
WRITE (OUTUNI,1490) TOLC,OUTFIL(1:FL)
1490 FORMAT (A2,' O^U^T^P^U^T ^U^S^I^N^G ',A7)
WRITE (OUTUNI,1140) TOLC
CLOSE (ERRUNI,STATUS='KEEP')
CLOSE (UNIT=OUTUNI,STATUS='KEEP')
OPEN (UNIT=OUTUNI,FILE=OUTFIL,STATUS='UNKNOWN',RECL=162)
OPEN (UNIT=ERRUNI,FILE=OUTNAM,STATUS='UNKNOWN',RECL=162)
ELSE
CLOSE (UNIT=SCRUNI,STATUS='DELETE')
WRITE (OUTUNI,1480) TOLC,BUFFER(2:8)
WRITE (OUTUNI,1140) TOLC
ENDIF
GO TO 200
C
ENDIF
C
C -- BELL COMMAND
C
IF (BUFFER(1:4).EQ.'BELL') THEN
IF (BUFFER(5:5).EQ.'=') THEN
IF (BELL) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,
* LEFTP,BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,
* (CJSN(I:I),I=1,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1500) TOLC,BUFFER(6:9)
1500 FORMAT (A2,1X,A4,' ^I^S ^R^I^N^G^I^N^G ^Y^O^U.')
ELSE
GO TO 200
C
ENDIF
ENDIF
WRITE (OUTUNI,1510) DING
1510 FORMAT (A4)
WRITE (OUTUNI,1140) TOLC
GO TO 200
C
ENDIF
C
C -- COMMENT FILTER
C
IF (BUFFER(1:1).EQ.ASTER) GO TO 200
C
C -- RING COMMAND
C
IF (BUFFER(1:5).EQ.'RING ') THEN
RING = .TRUE.
UJSN(1:4) = BUFFER(6:9)
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1520) TOLC,UJSN(1:4)
1520 FORMAT (A2,' R^I^N^G^I^N^G ',A4,'.')
WRITE (OUTUNI,1140) TOLC
BUFFER(1:1) = DOLLAR
MESSAG(1:14) = '$XXXXBELL=XXXX'
MESSAG(2:5) = UJSN(1:4)
MESSAG(11:14) = JSN(1:4)
ENDIF
C
C -- MSGFLG COMMAND
C
IF (BUFFER(1:1).EQ.DOLLAR.AND.(UN(1:UNLEN).EQ.CUN(1:CUNLEN).OR.
* RING)) THEN
RING = .FALSE.
OPEN (UNIT=SNDUNI,FILE=SNDFIL,STATUS='UNKNOWN',RECL=162)
REWIND SNDUNI
WRITE (SNDUNI,1530) MESSAG(1:160)
1530 FORMAT (A160)
REWIND SNDUNI
CLOSE (UNIT=SNDUNI,STATUS='KEEP')
CLOSE (UNIT=MSGUNI,STATUS='KEEP')
GO TO 130
C
ENDIF
C
C -- SEE IF ENTRY IS A USER-DEFINED COMMAND
C
CALL PF ('GET',CONFIL,CONFIL,'UN',UN(1:UNLEN),'RC',PFERR)
C
C -- IF NO USER FILE, GET THE SYSTEM FILE
C
IF (PFERR.NE.0) THEN
CONFIL = 'SLUGCON'
CALL PF ('GET',CONFIL,CONFIL,'UN',CUN(1:CUNLEN),'RC',PFERR)
ENDIF
C
C -- ALL IS WELL
C
OPEN (UNIT=CONUNI,FILE=CONFIL,STATUS='UNKNOWN',RECL=162)
480 READ (CONUNI,1530,END=490) BUFFER(1:160)
C
C -- SEE IF SYNTAX IS CORRECT
C
IEQ = INDEX(BUFFER(1:160),'=')+1
ISEMI = INDEX(BUFFER(1:160),';')-1
ILEN = ISEMI-IEQ+1
IF (IEQ.EQ.0.OR.ISEMI.EQ.0.OR.IEQ.GT.ISEMI.OR.ILEN.LT.0) GO TO 480
C
C -- SEE IF COMMAND MATCHES
C
IF (MESSAG(1:IEQ-2).NE.BUFFER(1:IEQ-2)) GO TO 480
C
C -- IF IT MATCHES, REBUILD COMMAND LINE
C
BUFFER(1:ILEN) = BUFFER(IEQ:ISEMI)
ILEN = ILEN+1
BUFFER(ILEN:ILEN) = BLANK
ILEN = ILEN+1
BUFFER(ILEN:162) = COLONS(ILEN:162)
C
C -- FIND BLEN AND MLEN
C
LB = 162-ILEN+1
LM = 162-IEQ+1
BLEN = ILEN+MIN(LB,LM)-1
MLEN = IEQ+MIN(LB,LM)-1
C
C -- COPY COMMAND AND ARGUMENTS
C
BUFFER(ILEN:BLEN) = MESSAG(IEQ:MLEN)
MESSAG(1:162) = BUFFER(1:162)
CLOSE (UNIT=CONUNI,STATUS='DELETE')
GO TO 210
C
490 CLOSE (UNIT=CONUNI,STATUS='DELETE')
C
C -- SUGGEST HELP COMMAND, IF NOVICE
C
IF (NOVICE) THEN
WRITE (OUTUNI,1010) TOLC,(CNAME(I:I),I=1,CNAMLN),BLANK,LEFTP,
* BLANK,(CUN(I:I),I=1,CUNLEN),BLANK,SLASH,BLANK,(CJSN(I:I),I=1
* ,4),BLANK,RIGHTP,COLON
WRITE (OUTUNI,1540) TOLC
1540 FORMAT (A2,' T^Y^P^E "^H^E^L^P" ^F^O^R ^A ^L^I^S^T ^O^F ',
* '^C^O^M^M^A^N^D^S.')
WRITE (OUTUNI,1140) TOLC
IF (OUTFIL(1:FL).EQ.OUTNAM) REWIND OUTUNI
C
GO TO 200
C
C -- IF NOT A NOVICE, ASSUME ITS MESSAGE TEXT.
C
ELSE
BUFFER(1:159) = MESSAG(1:159)
MESSAG(1:1) = BLANK
MESSAG(2:160) = BUFFER(1:159)
GO TO 210
C
ENDIF
END
IDENT BOGUS
ENTRY REQPP
SYSCOM B1
REQPP BSS 1
SB1 1
SB2 X1
SA2 B2
SX7 0
IX7 X2+X7
SA7 RA.MTR
NO
XJ RA.MTR
NO
EQ REQPP
END
DATA,SLUGHLP
*BELL:
B^E^L^L S^E^N^D ^A ^C^O^N^T^R^O^L-G ^T^O ^T^H^E ^U^S^E^R'^S ^T^E^R^M^I^N^A^L.
*BROADCAST:
B^R^O^A^D^C^A^S^T S^E^N^D^S ^A ^M^E^S^S^A^G^E ^T^O ^A^L^L ^C^O^N^F^E^R^E^N^C^E^S. T^H^I^S
^C^O^M^M^A^N^D ^M^A^Y ^B^E ^U^S^E^D ^O^N^L^Y ^O^N^C^E ^P^E^R ^M^I^N^U^T^E.
*BYE:
B^Y^E L^O^G ^O^F^F S^L^U^G^N^E^T ( ^A^N^D ^S^Y^S^T^E^M ).
*DELAY:
D^E^L^A^Y R^O^L^L^S ^O^U^T ^T^H^E ^T^E^R^M^I^N^A^L ^F^O^R ^A ^P^E^R^I^O^D ^O^F
^T^I^M^E ( ^D^E^F^A^U^L^T ^I^S 15 ^S^E^C^O^N^D^S ). T^H^I^S
^T^I^M^E ^C^A^N ^B^E ^C^H^A^N^G^E^D ^U^S^I^N^G ^T^H^E 'S^E^T ^D^E^L^A^Y'
^C^O^M^M^A^N^D.
*EDIT:
E^D^I^T E^D^I^T ^M^E^S^S^A^G^E ^B^U^F^F^E^R. T^H^E ^D^E^F^A^U^L^T ^E^D^I^T^O^R
^I^S FSE. T^O ^C^H^A^N^G^E ^T^H^E ^D^E^F^A^U^L^T ^E^D^I^T^O^R,
^S^E^E ^T^H^E 'S^E^T ^E^D^I^T^O^R' ^C^O^M^M^A^N^D.
*EXIT:
E^X^I^T E^X^I^T S^L^U^G^N^E^T ^B^U^T ^R^E^M^A^I^N ^O^N ^S^Y^S^T^E^M.
*HELP:
H^E^L^P ^N D^I^S^P^L^A^Y^S ^H^E^L^P ^F^O^R ^N, ^W^H^E^R^E ^N ^I^S ^A S^L^U^G^N^E^T
^C^O^M^M^A^N^D ^O^R ^T^O^P^I^C. A ^L^I^S^T ^O^F ^T^O^P^I^C^S ^C^A^N ^B^E
^O^B^T^A^I^N^E^D ^B^Y ^T^Y^P^I^N^G '^H^E^L^P' ^W^I^T^H ^N^O ^A^R^G^U^M^E^N^T^S.
T^O ^D^I^S^P^L^A^Y ^A^L^L ^A^V^A^I^L^A^B^L^E ^H^E^L^P, ^S^P^E^C^I^F^Y '^A^L^L'
^F^O^R ^N.
*JOIN:
J^O^I^N ^N L^E^A^V^E ^C^U^R^R^E^N^T ^C^O^N^F^E^R^E^N^C^E ^A^N^D ^J^O^I^N ^O^R
^C^R^E^A^T^E ^N, ^W^H^E^R^E ^N ^I^S ^A ^C^O^N^F^E^R^E^N^C^E ^N^A^M^E.
J^O^I^N ^W^I^L^L ^C^R^E^A^T^E ^N^E^W ^C^O^N^F^E^R^E^N^C^E^S. I^F ^A
^C^O^N^F^E^R^E^N^C^E ^N^A^M^E ^B^E^G^I^N^S ^W^I^T^H '-', ^I^T ^W^I^L^L
^N^O^T ^B^E ^D^I^S^P^L^A^Y^E^D ^B^Y ^A "S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S"
^C^O^M^M^A^N^D. I^F ^N^O ^C^O^N^F^E^R^E^N^C^E ^N^A^M^E ^I^S ^G^I^V^E^N,
^T^H^E ^C^O^N^F^E^R^E^N^C^E "R^O^O^T" ^I^S ^J^O^I^N^E^D.
*REWIND:
R^E^W^I^N^D R^E^W^I^N^D^S ^T^H^E ^I^N^P^U^T ^S^T^R^E^A^M.
*RING:
R^I^N^G ^N S^E^N^D^S ^A ^C^O^N^T^R^O^L-G ^S^E^Q^U^E^N^C^E ^T^O ^N, ^W^H^E^R^E
^N ^I^S ^T^H^E JSN.
*SCROLL:
S^C^R^O^L^L E^N^T^E^R^S ^S^C^R^O^L^L ^M^O^D^E. S^L^U^G^N^E^T ^W^I^L^L ^C^H^E^C^K ^A^N^D
^D^I^S^P^L^A^Y ^A^N^Y ^N^E^W ^M^E^S^S^A^G^E^S ^A^F^T^E^R ^W^A^I^T^I^N^G ^F^O^R
^A ^P^E^R^I^O^D ^O^F ^T^I^M^E ( ^D^E^F^A^U^L^T ^I^S 15 ^S^E^C^O^N^D^S ).
T^H^E ^T^I^M^E ^C^A^N ^B^E ^C^H^A^N^G^E^D ^W^I^T^H ^T^H^E 'S^E^T ^D^E^L^A^Y'
^C^O^M^M^A^N^D. U^S^E ^T^H^E ^U^S^E^R ^B^R^E^A^K 2 ^C^H^A^R^A^C^T^E^R
( ^U^S^U^A^L^L^Y C^O^N^T^R^O^L-T ) ^T^O ^E^X^I^T ^S^C^R^O^L^L ^M^O^D^E.
*SEND:
S^E^N^D ^N S^E^N^D ^A ^P^R^I^V^A^T^E ^M^E^S^S^A^G^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ^A
JSN. I^F ^N ^I^S ^B^L^A^N^K, ^M^E^S^S^A^G^E ^W^I^L^L ^B^E
^B^R^O^A^D^C^A^S^T ^T^O ^A^L^L ^C^O^N^F^E^R^E^N^C^E ^M^E^M^B^E^R^S.
*SET DELAY:
S^E^T ^D^E^L^A^Y ^N S^E^T ^T^H^E ^D^E^L^A^Y ^T^I^M^E ^T^O ^N ^S^E^C^O^N^D^S, ^W^H^E^R^E ^N
^I^S ^A^N ^I^N^T^E^G^E^R ^B^E^T^W^E^E^N 0 ^A^N^D 9999> T^H^E
^D^E^L^A^Y ^T^I^M^E ^I^S ^U^S^E^D ^B^Y ^S^C^R^O^L^L ^M^O^D^E ^A^N^D ^T^H^E
^D^E^L^A^Y ^C^O^M^M^A^N^D.
*SET ECHO:
S^E^T ^E^C^H^O ^N S^E^T ^E^C^H^O ^M^O^D^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ON ^O^R OFF.
I^F ^E^C^H^O ^M^O^D^E ^I^S ^S^E^T ^T^O OFF, ^M^E^S^S^A^G^E^S ^S^E^N^T
^B^Y ^T^H^E ^U^S^E^R ^A^N^D ^L^I^N^E^S ^F^R^O^M ^A ^R^E^D^I^R^E^C^T^E^D
^I^N^P^U^T ^F^I^L^E ^A^R^E ^N^O^T ^E^C^H^O^E^D.
*SET EDITOR:
S^E^T ^E^D^I^T^O^R ^N S^E^T ^T^H^E ^M^E^S^S^A^G^E ^E^D^I^T^O^R ^T^O ^N, ^W^H^E^R^E ^N ^I^S
EDIT, FSE, ^O^R XEDIT. T^H^E ^M^E^S^S^A^G^E ^E^D^I^T^O^R
^I^S FSE ^B^Y ^D^E^F^A^U^L^T.
*SET NAME:
S^E^T ^N^A^M^E ^N S^E^T ^T^H^E ^U^S^E^R'^S ^N^A^M^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ^A
^T^E^X^T ^S^T^R^I^N^G. I^F ^N^O ^N^A^M^E ^I^S ^S^P^E^C^I^F^I^E^D,
^T^H^E ^N^A^M^E ^W^I^L^L ^B^E ^S^E^T ^T^O 'A^N^O^N^Y^M^O^U^S'.
*SET NOVICE:
S^E^T ^N^O^V^I^C^E ^N S^E^T ^N^O^V^I^C^E ^M^O^D^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ON ^O^R
OFF. W^H^E^N ^N^O^V^I^C^E ^M^O^D^E ^I^S OFF, ^I^T ^I^S ^N^O
^L^O^N^G^E^R ^N^E^C^E^S^S^A^R^Y ^T^O ^P^R^E^C^E^D^E ^M^E^S^S^A^G^E ^T^E^X^T
^W^I^T^H ^A ^B^L^A^N^K.
*SET PROMPT:
S^E^T ^P^R^O^M^P^T ^N S^E^T ^P^R^O^M^P^T ^M^O^D^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ON ^O^R
OFF. W^H^E^N ^P^R^O^M^P^T ^M^O^D^E ^I^S OFF, ^T^H^E ^N^A^M^E
^O^F ^T^H^E ^C^U^R^R^E^N^T ^C^O^N^F^E^R^E^N^C^E ^I^S ^N^O ^L^O^N^G^E^R
^P^R^I^N^T^E^D ^O^N ^A^N ^I^N^P^U^T ^R^E^Q^U^E^S^T.
*SET RING:
S^E^T ^R^I^N^G ^N S^E^T ^R^I^N^G ^M^O^D^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ON ^O^R OFF.
W^H^E^N ^R^I^N^G ^M^O^D^E ^I^S OFF, ^T^H^E ^U^S^E^R'^S ^T^E^R^M^I^N^A^L
^W^I^L^L ^N^O^T ^R^E^S^P^O^N^D ^T^O 'R^I^N^G' ^C^O^M^M^A^N^D^S ^G^I^V^E^N
^B^Y ^O^T^H^E^R ^U^S^E^R^S.
*SET TIMER:
S^E^T ^T^I^M^E^R ^N S^E^T^S ^T^I^M^E^R ^M^O^D^E ^T^O ^N, ^W^H^E^R^E ^N ^I^S ON ^O^R OFF.
W^H^E^N ^T^I^M^E^R ^M^O^D^E ^I^S ON, ^A ^T^I^M^E ^S^T^A^M^P ^I^S ^S^E^N^T
^T^O ^T^H^E ^O^U^T^P^U^T ^S^T^R^E^A^M ^W^H^I^L^E ^I^N ^S^C^R^O^L^L ^A^N^D ^W^A^I^T
^W^A^I^T ^M^O^D^E^S.
*SET USER:
S^E^T ^U^S^E^R ^N S^E^T^S ^T^H^E ^U^S^E^R ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^N^A^M^E
^T^O ^N. T^H^E ^D^E^F^A^U^L^T ^N^A^M^E ^I^S SLUGCON.
T^H^E ^U^S^E^R ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^S^H^O^U^L^D
^A^L^R^E^A^D^Y ^E^X^I^S^T ^A^N^D ^B^E ^A ^P^E^R^M^A^N^E^N^T ^F^I^L^E
( ^S^E^E ^T^H^E ^H^E^L^P ^E^N^T^R^Y ^F^O^R ^A ^D^E^S^C^R^I^P^T^I^O^N
^O^F ^T^H^E ^U^S^E^R ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ).
*SET WAIT:
S^E^T ^W^A^I^T ^N S^E^T^S ^T^H^E ^S^T^R^I^N^G ^U^S^E^D ^B^Y ^T^H^E '^W^A^I^T' ^C^O^M^M^A^N^D
^T^O ^N. T^H^E ^D^E^F^A^U^L^T ^S^T^R^I^N^G ^I^S "F^R^O^M".
*SHOW CONFERENCES:
S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S D^I^S^P^L^A^Y^S ^A^C^T^I^V^E ^C^O^N^F^E^R^E^N^C^E^S ( ^E^X^C^E^P^T
^F^O^R ^C^O^N^F^E^R^E^N^C^E^S ^W^H^O^S^E ^N^A^M^E ^B^E^G^I^N^S
^W^I^T^H '-' ).
*SHOW MEMBERS:
S^H^O^W ^M^E^M^B^E^R^S D^I^S^P^L^A^Y^S ^T^H^E JSN, UN, ^A^N^D ^N^A^M^E ^O^F ^A^L^L
^M^E^M^B^E^R^S ^O^F ^Y^O^U^R ^C^U^R^R^E^N^T ^C^O^N^F^E^R^E^N^C^E.
*WAIT:
W^A^I^T E^N^T^E^R^S ^S^C^R^O^L^L ^M^O^D^E ^U^N^T^I^L ^A ^S^P^E^C^I^F^I^E^D
^T^E^X^T ^S^T^R^I^N^G ^I^S ^R^E^C^E^I^V^E^D. T^H^E ^D^E^F^A^U^L^T
^T^E^X^T ^S^T^R^I^N^G ^I^S "F^R^O^M". T^H^E ^S^T^R^I^N^G
^C^A^N ^B^E ^S^E^T ^W^I^T^H ^T^H^E 'S^E^T ^W^A^I^T' ^C^O^M^M^A^N^D.
*NOS COMMANDS:
!^N. P^A^S^S ^N ^T^O NOS ^F^O^R ^P^R^O^C^E^S^S^I^N^G, ^W^H^E^R^E ^N
^I^S ^A NOS ^C^O^M^M^A^N^D ( ^N ^S^H^O^U^L^D ^B^E ^F^O^L^L^O^W^E^D
^B^Y ^A ^P^E^R^I^O^D ). A^F^T^E^R ^T^H^E ^C^O^M^M^A^N^D ^H^A^S
^B^E^E^N ^P^R^O^C^E^S^S^E^D, S^L^U^G^N^E^T ^W^I^L^L ^R^E^S^U^M^E.
*ENTERING COMMANDS AND TEXT:
E^N^T^E^R^I^N^G C^O^M^M^A^N^D^S ^A^N^D M^E^S^S^A^G^E T^E^X^T
A^L^L ^I^N^P^U^T ^S^T^A^R^T^I^N^G ^I^N ^C^O^L^U^M^N 1 ^W^I^L^L ^B^E ^I^N^T^E^R^P^R^E^T^E^D ^A^S
S^L^U^G^N^E^T ^C^O^M^M^A^N^D^S. I^N^P^U^T ^I^N^T^E^N^D^E^D ^A^S ^M^E^S^S^A^G^E ^T^E^X^T ^S^H^O^U^L^D
^B^E^G^I^N ^I^N ^C^O^L^U^M^N 2. A ^B^L^A^N^K ^L^I^N^E ^O^R ^A "S^E^N^D" ^C^O^M^M^A^N^D ^W^I^L^L
^F^L^U^S^H ^T^H^E ^M^E^S^S^A^G^E ^B^U^F^F^E^R ^A^N^D ^S^E^N^D ^T^H^E ^T^E^X^T.
I^F ^N^O^V^I^C^E ^M^O^D^E ^I^S ^S^E^T ^T^O OFF, ^M^E^S^S^A^G^E ^T^E^X^T ^D^O^E^S ^N^O^T ^H^A^V^E
^T^O ^B^E^G^I^N ^I^N ^C^O^L^U^M^N 2. H^O^W^E^V^E^R, ^I^F ^T^H^E ^T^E^X^T ^C^O^N^T^A^I^N^S ^A^N
^E^M^B^E^D^E^D ^C^O^M^M^A^N^D ^S^T^R^I^N^G ^S^T^A^R^T^I^N^G ^I^N ^C^O^L^U^M^N 1, S^L^U^G^N^E^T ^W^I^L^L
^A^T^T^E^M^P^T ^T^O ^P^R^O^C^E^S^S ^T^H^E ^C^O^M^M^A^N^D.
*RESERVED CHARACTERS:
R^E^S^E^R^V^E^D C^H^A^R^A^C^T^E^R^S
S^L^U^G^N^E^T ^R^E^S^E^R^V^E^S ^T^H^E ^C^H^A^R^A^C^T^E^R^S '<', '>', '*', ^A^N^D '!'
^I^N ^C^O^L^U^M^N 1 ^F^O^R ^I^N^P^U^T ^R^E^D^I^R^E^C^T^I^O^N, ^O^U^T^P^U^T ^R^E^D^I^R^E^C^T^I^O^N,
^C^O^M^M^E^N^T^S, ^A^N^D N^O^S ^C^O^M^M^A^N^D ^F^L^A^G.
*FILE REDIRECTION:
F^I^L^E R^E^D^I^R^E^C^T^I^O^N
S^L^U^G^N^E^T ^A^L^L^O^W^S ^R^E^D^I^R^E^C^T^I^O^N ^O^F ^T^H^E ^I^N^P^U^T ^A^N^D ^O^U^T^P^U^T ^S^T^R^E^A^M^S,
^U^S^I^N^G <^N ^O^R >^N, ^W^H^E^R^E ^N ^I^S ^A ^V^A^L^I^D ^N^A^M^E ^O^F ^A ^L^O^C^A^L N^O^S ^F^I^L^E
( >^N ^W^I^L^L ^C^R^E^A^T^E ^T^H^E ^F^I^L^E ). T^H^E ^O^U^T^P^U^T ^S^T^R^E^A^M ^I^S ^R^E^S^T^O^R^E^D
^T^O ^T^H^E ^T^E^R^M^I^N^A^L ^B^Y ^E^N^T^E^R^I^N^G '>^O^U^T^P^U^T' ^O^R '>'. T^H^E ^I^N^P^U^T
^S^T^R^E^A^M ^I^S ^R^E^S^T^O^R^E^D ^T^O ^T^H^E ^T^E^R^M^I^N^A^L ^W^H^E^N ^A ^F^I^L^E ^P^A^R^T^I^T^I^O^N,
'<^I^N^P^U^T', ^O^R '<' ^I^S ^E^N^C^O^U^N^T^E^R^E^D ^I^N ^A^N ^I^N^P^U^T ^S^T^R^E^A^M.
*USER CONFIGURATION FILE:
T^H^E U^S^E^R C^O^N^F^I^G^U^R^A^T^I^O^N F^I^L^E
S^L^U^G^N^E^T ^A^L^L^O^W^S ^T^H^E ^U^S^E^R ^T^O ^D^E^F^I^N^E ^H^I^S ^O^R ^H^E^R ^O^W^N ^C^O^M^M^A^N^D
^P^H^R^A^S^E^S ^B^Y ^M^E^A^N^S ^O^F ^A ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E. W^H^E^N S^L^U^G^N^E^T
^E^N^C^O^U^N^T^E^R^S ^A ^C^O^M^M^A^N^D ^I^T ^D^O^E^S ^N^O^T ^U^N^D^E^R^S^T^A^N^D, ^I^T ^A^T^T^E^M^P^T^S
^T^O GET ^A ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^I^N ^T^H^E ^U^S^E^R'^S ^I^N^D^I^R^E^C^T ^A^C^C^E^S^S
^C^A^T^A^L^O^G ^C^A^L^L^E^D SLUGCON ( SLUG^N^E^T CON^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ). I^F
^S^U^C^C^E^S^S^F^U^L, ^I^T ^S^C^A^N^S ^T^H^E ^C^O^N^T^E^N^T^S ^O^F ^T^H^E ^F^I^L^E ^F^O^R ^A ^M^A^T^C^H
^W^I^T^H ^T^H^E ^U^S^E^R'^S ^C^O^M^M^A^N^D, ^A^N^D ^R^E^P^L^A^C^E^S ^T^H^E ^U^S^E^R'^S ^C^O^M^M^A^N^D
^W^I^T^H ^T^H^E ^D^E^F^I^N^I^T^I^O^N.
T^H^I^S ^A^L^L^O^W^S ^F^O^R ^A ^G^R^E^A^T ^D^E^A^L ^O^F ^F^R^E^E^D^O^M ^O^N ^T^H^E ^P^A^R^T ^O^F
^T^H^E ^U^S^E^R. F^O^R ^E^X^A^M^P^L^E, ^A ^U^S^E^R ^W^H^O ^W^A^S ^U^S^E^D ^T^O ^T^H^E "/"
^C^O^M^M^A^N^D ^S^I^G^N^A^L ^O^F ^M^A^N^Y ^C^O^N^F^E^R^E^N^C^E ^P^R^O^G^R^A^M^S ^M^I^G^H^T ^M^A^K^E ^T^H^E
^F^O^L^L^O^W^I^N^G ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E:
*
* "/" ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^F^E^A^T^U^R^I^N^G ^U^P^P^E^R ^A^N^D ^L^O^W^E^R ^C^A^S^E
* ^C^O^M^M^A^N^D^S
*
/^W^H^O=^S^H^O^W ^M^E^M^B^E^R^S;
/WHO=^S^H^O^W ^M^E^M^B^E^R^S;
/W=^S^H^O^W ^M^E^M^B^E^R^S;
/^W=^S^H^O^W ^M^E^M^B^E^R^S;
*
/^N^A^M^E=^S^E^T ^N^A^M^E;
/NAME=^S^E^T ^N^A^M^E;
/N=^S^E^T ^N^A^M^E;
/^N=^S^E^T ^N^A^M^E;
*
/H=^H^E^L^P;
/^H=^H^E^L^P;
*
/S=^S^E^N^D;
/^S=^S^E^N^D;
*
/B=^B^Y^E;
/^B=^B^Y^E;
W^I^T^H ^T^H^I^S ^F^I^L^E, ^T^H^E ^U^S^E^R ^W^O^U^L^D ^B^E ^A^B^L^E ^U^S^E /^B, /^H, /^N, /^S,
^A^N^D /^W ^A^S ^C^O^M^M^A^N^D^S. I^F ^S^E^V^E^R^A^L ^D^I^F^F^E^R^E^N^T ^U^S^E^R^S ^S^H^A^R^E ^T^H^E
^S^A^M^E UN, ^T^H^E^Y ^C^A^N ^C^R^E^A^T^E ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E^S ^W^I^T^H ^N^A^M^E^S
^O^T^H^E^R ^T^H^A^N SLUGCON ^A^N^D ^U^S^E ^T^H^E 'S^E^T ^U^S^E^R' ^C^O^M^M^A^N^D ^T^O ^S^E^T
^T^H^E ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^N^A^M^E.
D^E^F^I^N^I^T^I^O^N^S ^S^H^O^U^L^D ^S^T^A^R^T ^I^N ^C^O^L^U^M^N 1 ^O^F ^T^H^E ^C^O^N^F^I^G^U^R^A^T^I^O^N
^F^I^L^E ^A^N^D ^T^E^R^M^I^N^A^T^E ^W^I^T^H ^A ^S^E^M^I^C^O^L^O^N ( ';' ). T^H^E ^U^S^E^R'^S
^C^O^M^M^A^N^D ^S^H^O^U^L^D ^B^E ^S^E^P^A^R^A^T^E^D ^B^F^R^O^M ^T^H^E ^D^E^F^I^N^I^T^I^O^N ^B^Y ^A^N
^E^Q^U^A^L ^S^I^G^N ( '=' ). N^E^I^T^H^E^R ^T^H^E ^U^S^E^R'^S ^C^O^M^M^A^N^D ^O^R ^T^H^E
^D^E^F^I^N^I^T^I^O^N ^S^O^U^L^D ^C^O^N^T^A^I^N ^E^Q^U^A^L ^S^I^G^N^S ^O^R ^S^E^M^I^C^O^L^O^N^S, ^O^T^H^E^R
^T^H^A^N ^T^H^E ^S^E^P^A^R^A^T^O^R ^A^N^D ^T^E^R^M^I^N^A^T^O^R. T^H^E ^D^E^F^I^N^I^T^I^O^N ^D^O^E^S
^N^O^T ^H^A^V^E ^T^O ^B^E ^A S^L^U^G^N^E^T ^C^O^M^M^A^N^D, ^B^U^T ^M^A^Y ^B^E ^A^N^Y ^T^E^X^T
^S^T^R^I^N^G ( ^I^T ^W^I^L^L ^B^E ^I^N^T^E^R^P^E^T^E^D ^J^U^S^T ^T^H^E ^S^A^M^E ^A^S ^I^F ^T^H^E
^U^S^E^R ^E^N^T^E^R^E^D ^I^T ^D^I^R^E^C^T^L^Y ).
*ADDITIONAL NOTES:
A^D^D^I^T^I^O^N^A^L N^O^T^E^S
1. S^L^U^G^N^E^T S^E^R^V^E^R ^M^E^S^S^A^G^E^S ^M^A^Y ^B^E ^R^E^C^O^G^N^I^Z^E^D ^B^E^C^A^U^S^E ^T^H^E^Y
^H^A^V^E ^T^H^E S^E^R^V^E^R'^S ^U^S^E^R ^N^U^M^B^E^R ^I^N ^T^H^E "F^R^O^M" ^M^E^S^S^A^G^E.
2. S^L^U^G^N^E^T ^C^R^E^A^T^E^S ^S^E^V^E^R^A^L ^L^O^C^A^L ^F^I^L^E^S ^A^N^D ^O^N^E ^I^N^D^I^R^E^C^T
^A^C^C^E^S^S ^F^I^L^E ^P^E^R ^S^E^S^S^I^O^N. W^I^T^H ^A ^F^E^W ^E^X^C^E^P^T^I^O^N^S, ^T^H^E^S^E
^F^I^L^E^S ^C^A^N ^B^E ^R^E^C^O^G^N^I^Z^E^D ^B^E^C^A^U^S^E ^T^H^E^Y ^A^R^E ^P^R^E^F^I^X^E^D ^B^Y
^T^H^E ^U^S^E^R'^S JSN. T^H^E ^E^X^C^E^P^T^I^O^N^S ^A^R^E ^P^R^E^F^I^X^E^D ^B^Y ^T^H^E
^L^E^T^T^E^R^S SLUG.
3. I^F ^Y^O^U^R ^S^E^S^S^I^O^N ^I^S ^A^B^N^O^R^M^A^L^L^Y ^T^E^R^M^I^N^A^T^E^D ^A^N^D ^Y^O^U ^A^R^E
^U^N^A^B^L^E ^T^O ^R^E^C^O^V^E^R ^T^H^E ^D^I^S^C^O^N^N^E^C^T^E^D JSN, ^Y^O^U ^M^A^Y ^W^I^S^H
^T^O ^P^U^R^G^E ^T^H^E ^F^I^L^E ^A^S^S^O^C^I^A^T^E^D ^W^I^T^H ^T^H^A^T JSN ^I^N ^Y^O^U^R
^I^N^D^I^R^E^C^T ^A^C^C^E^S^S ^C^A^T^A^L^O^G.
4. U^S^E^R^S ^W^H^O^S^E ^D^I^R^E^C^T^O^R^Y ^E^N^T^R^Y ^R^E^M^A^I^N^S ^I^N^A^C^T^I^V^E ^F^O^R ^A
^S^E^T ^T^I^M^E ^W^I^L^L ^B^E ^D^E^L^E^T^E^D ^F^R^O^M ^T^H^E ^D^I^R^E^C^T^O^R^Y. A ^U^S^E^R
^W^H^O^S^E ^E^N^T^R^Y ^H^A^S ^B^E^E^N ^D^E^L^E^T^E^D ^W^I^L^L ^H^A^V^E ^H^I^S ^O^R ^H^E^R
^S^E^S^S^I^O^N ^T^E^R^M^I^N^A^T^E^D ^W^I^T^H ^A ^M^E^S^S^A^G^E ^F^R^O^M ^T^H^E S^E^R^V^E^R ^T^O
^T^H^A^T ^E^F^F^E^C^T. F^R^E^Q^U^E^N^T ^D^I^R^E^C^T^O^R^Y ^A^C^T^I^V^I^T^Y ( ^S^U^C^H ^A^S
^E^N^T^E^R^I^N^G ^A^N^D ^E^X^I^T^I^N^G ^S^C^R^O^L^L ^M^O^D^E, ^C^H^A^N^G^I^N^G ^Y^O^U^R ^N^A^M^E
^O^R ^C^O^N^F^E^R^E^N^C^E ) ^C^A^N ^A^V^O^I^D ^T^H^I^S. I^F ^Y^O^U^R ^S^E^S^S^I^O^N ^I^S
^T^E^R^M^I^N^A^T^E^D ^Y^O^U ^C^A^N ^A^L^W^A^Y^S ^R^E^S^U^M^E ^I^T.
*USER PROLOGUE FILE:
T^H^E U^S^E^R P^R^O^L^O^G^U^E F^I^L^E
A ^U^S^E^R ^P^R^O^L^O^G^U^E ^F^I^L^E ^I^S ^A^N ^I^N^D^I^R^E^C^T ^A^C^C^E^S^S ^F^I^L^E ^O^F
S^L^U^G^N^E^T ^C^O^M^M^A^N^D^S ^T^H^A^T ^T^H^E ^U^S^E^R ^W^A^N^T^S ^E^X^E^C^U^T^E^D ^W^H^E^N
S^L^U^G^N^E^T ^I^S ^S^T^A^R^T^E^D. B^Y ^D^E^F^A^U^L^T, S^L^U^G^N^E^T ^L^O^O^K^S ^F^O^R
^T^H^E ^I^N^D^I^R^E^C^T ^A^C^C^E^S^S ^F^I^L^E SLUGPRO, ^B^U^T ^T^H^E ^U^S^E^R ^M^A^Y
^S^P^E^C^I^F^Y ^H^I^S ^O^W^N ^F^I^L^E ^N^A^M^E ^B^Y ^E^N^T^E^R^I^N^G ^I^T ^A^F^T^E^R ^T^H^E
S^L^U^G^N^E^T ^C^O^M^M^A^N^D, ^P^R^E^C^E^D^E^D ^B^Y ^A ^C^O^M^M^A ^A^S ^F^O^L^L^O^W^S:
SLUGNET,JOEUSER
I^N ^T^H^E ^A^B^O^V^E ^E^X^A^M^P^L^E, ^T^H^E ^U^S^E^R ^S^P^E^C^I^F^I^E^D ^T^H^E ^F^I^L^E
JOEUSER. T^H^E ^F^I^L^E JOEUSER ^C^O^U^L^D ^H^A^V^E ^C^O^N^T^A^I^N^E^D
^T^H^E ^F^O^L^L^O^W^I^N^G:
^S^E^T ^N^A^M^E J^O^E U^S^E^R
^S^E^T ^U^S^E^R JOESCON
T^H^I^S ^F^I^L^E ^W^O^U^L^D ^S^E^T ^T^H^E ^U^S^E^R'^S ^N^A^M^E ^T^O J^O^E U^S^E^R ^A^N^D
^H^I^S ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^T^O JOESCON.
*EOF:
H^E^L^P ^I^S ^A^V^A^I^L^A^B^L^E ^F^O^R ^T^H^E ^F^O^L^L^O^W^I^N^G ^C^O^M^M^A^N^D^S ^A^N^D ^T^O^P^I^C^S:
A^D^D^I^T^I^O^N^A^L ^N^O^T^E^S B^E^L^L B^R^O^A^D^C^A^S^T B^Y^E D^E^L^A^Y E^D^I^T
E^N^T^E^R^I^N^G ^C^O^M^M^A^N^D^S ^A^N^D ^T^E^X^T E^X^I^T F^I^L^E ^R^E^D^I^R^E^C^T^I^O^N H^E^L^P J^O^I^N
N^O^S ^C^O^M^M^A^N^D^S R^E^S^E^R^V^E^D ^C^H^A^R^A^C^T^E^R^S R^E^W^I^N^D R^I^N^G S^C^R^O^L^L
S^E^N^D S^E^T ^D^E^L^A^Y S^E^T ^E^C^H^O S^E^T ^E^D^I^T^O^R
S^E^T ^N^A^M^E S^E^T ^N^O^V^I^C^E S^E^T ^P^R^O^M^P^T S^E^T ^R^I^N^G
S^E^T ^T^I^M^E^R S^E^T ^U^S^E^R S^E^T ^W^A^I^T S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S
S^H^O^W ^M^E^M^B^E^R^S U^S^E^R ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E U^S^E^R ^P^R^O^L^O^G^U^E ^F^I^L^E
W^A^I^T
T^O ^V^I^E^W ^T^H^E ^H^E^L^P ^F^O^R ^A ^P^A^R^T^I^C^U^L^A^R ^T^O^P^I^C, ^T^Y^P^E '^H^E^L^P ^N', ^W^H^E^R^E ^N ^I^S
^T^H^E ^T^O^P^I^C.
DATA,SLUGNEW
N^E^W^S ^I^T^E^M 1: S^L^U^G^N^E^T ^I^N^S^T^A^L^L^E^D ^B^Y _ORGNM_
DATA,SLUGCON
*
* "/" ^C^O^N^F^I^G^U^R^A^T^I^O^N ^F^I^L^E ^F^E^A^T^U^R^I^N^G ^U^P^P^E^R ^A^N^D ^L^O^W^E^R ^C^A^S^E
* ^C^O^M^M^A^N^D^S
*
/^S^C^A^N=^S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S;
/SCAN=^S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S;
/SC=^S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S;
/^S^C=^S^H^O^W ^C^O^N^F^E^R^E^N^C^E^S;
*
/^W^H^O=^S^H^O^W ^M^E^M^B^E^R^S;
/WHO=^S^H^O^W ^M^E^M^B^E^R^S;
/W=^S^H^O^W ^M^E^M^B^E^R^S;
/^W=^S^H^O^W ^M^E^M^B^E^R^S;
*
/^N^A^M^E=^S^E^T ^N^A^M^E;
/NAME=^S^E^T ^N^A^M^E;
/N=^S^E^T ^N^A^M^E;
/^N=^S^E^T ^N^A^M^E;
*
/H=^H^E^L^P;
/^H=^H^E^L^P;
*
/S=^S^E^N^D;
/^S=^S^E^N^D;
*
/B=^B^Y^E;
/^B=^B^Y^E;
*
#EOR
#EOI
\End\Of\Shar\
else
echo "will not over write ./slugnet.n"
fi
chmod 400 ./slugnet.n
if [ `wc -c ./slugnet.n | awk '{printf $1}'` -ne 75692 ]
then
echo `wc -c ./slugnet.n | awk '{print "Got " $1 ", Expected " 75692}'`
fi
echo "Finished archive 2 of 6"
exit
More information about the Alt.sources
mailing list