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