IMPLICIT INTEGER*2 (A-Z) INTEGER*2 PARM(6),IOSTAT(2) CHARACTER*80 BUFFER,MCR CHARACTER*35 NAME CHARACTER*21 FILNAM BYTE BNAME(35) BYTE BIT(80) BYTE BMCR(80) EQUIVALENCE (BIT,BUFFER) EQUIVALENCE (MCR,BMCR) EQUIVALENCE (NAME,BNAME) DATA FILNAM /'LB0:[1,1]PASSWORD.DAT'/ DATA PARM /0,35,0,0,0,0/ DATA NAME /' '/ CALL GETADR (PARM(1),NAME) CALL GETMCR (MCR,DSW) PROMPT=0 PRIV=0 MLENG=1 IF (DSW .LT. 0) GOTO 20 DO 10,I=1,DSW MLENG=MLENG+1 DSW=DSW-1 IF (BMCR(I) .EQ. 'V') PRIV=1 IF (BMCR(I) .EQ. ' ') GOTO 11 10 CONTINUE GOTO 20 11 CONTINUE IF (BMCR(MLENG) .EQ. '*') GOTO 20 LENG=DSW DO 15,I=1,DSW BNAME(I)=BMCR(MLENG) MLENG=MLENG+1 15 CONTINUE IF (BNAME(LENG) .LT. 32) BNAME(LENG)=' ' TYPE 1008,NAME 1008 FORMAT(X,'Password Name: ',A) GOTO 50 20 CONTINUE PROMPT=1 TYPE 1000 1000 FORMAT (X,'Enter Name: ',$) ACCEPT 1001,LENGTH,NAME 1001 FORMAT (Q,A) 50 OPEN (UNIT=1,ERR=88,NAME=FILNAM,TYPE='OLD',READONLY,SHARED) DO 1,I=1,32000 READ (1,1002,END=99)LENGTH,BUFFER 1002 FORMAT (Q,A) IF (LENGTH .EQ. 0) GOTO 1 HIT=INDEX(BUFFER,NAME) IF (HIT .NE. 1) GOTO 1 TYPE 1003 1003 FORMAT (X,'Enter Password: ',$) CALL WTQIO ('1020'O,5,1,,IOSTAT,PARM) DO 60,J=(IOSTAT(2)+1),35 BNAME(J)=' ' 60 CONTINUE HIT=INDEX(BUFFER(36:70),NAME) IF (HIT .NE. 1) GOTO 199 TYPE 1007 1007 FORMAT(X,/,X,'Password Accecpted') CALL DELAY IF (PRIV .EQ. 0) CALL EXIT DECODE (5,1004,BUFFER(76:80)) EXSTAT 1004 FORMAT(I) EXSTAT=IAND(EXSTAT,'177776'O) EXSTAT=EXSTAT+1 CALL DELAY CALL EXST (EXSTAT) 1 CONTINUE 99 CONTINUE TYPE 1005 1005 FORMAT(X,'Name Not Found') GOTO 9999 199 CONTINUE TYPE 1006 1006 FORMAT(X,/,X,'Password Incorrect') GOTO 9999 88 TYPE 500 500 FORMAT(X,'Password Data File Open Error') 9999 CALL DELAY CALL EXST (4) 999 CONTINUE END SUBROUTINE DELAY CALL MARK (2,2,2) CALL STOPFR (2) RETURN END