FTN4,L C C *************************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* C * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C *************************************************************** C C SOURCE PART NUMBER :92067-18374 C C RELOCATABLE PART NUMBER : 92067-16362 C C PROGRAMER(S) : J.M.N. C C C C ACPAS - ROUTINE TO VERIFY ACCESS TO ACCTS PROGRAM C C CALLING SEQUENCE: CALL ACPAS C C ACERRS: -204 = INVALID PASSWORD C C SUBROUTINE ACPAS ,92067-16362 REV.1940 790801 DIMENSION MSPAS(5),IUSER(5),IGRP(5),LUX(2),IESC(2) COMMON /ACOM1/NDCB(272),NBUF(128) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM6/LOC(6) COMMON /ACOM7/IPBUF(11) COMMON /ACOM9/IBUF(40) COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID DATA MSPAS/2HPA,2HSS,2HWO,2HRD,2H? / C C CHECK IF PASSWORD EXISTS FOR ACCOUNT C WITH USER ID 7777B (MANAGER.SYS) C I1=LOC(5) I2=LOC(6)-1 DO 50 I=I1,I2 CALL READF(NDCB,IERR,NBUF,128,LEN,I) DO 50 J=1,128,16 IF(NBUF(J).LT.0) GO TO 50 IF(NBUF(J+11).EQ.7777B) GO TO 60 50 CONTINUE GO TO 400 C C READ THE ACCOUNT C 60 IREC=NBUF(J+14) IOFST=0 IF(0.GT.IREC) IOFST=64 IREC=IAND(IREC,77777B) CALL READF(NDCB,IERR,NBUF,128,LEN,IREC) I=IAND(NBUF(IOFST+1),255) IF(I.EQ.0) GO TO 400 C C PROMPT WITH "PASSWORD? " C AND FETCH IT C KECHO=0 CALL ACPSN(MSPAS,5,IPBUF,IERR) KECHO=400B C C COMPARE PASSWORD WITH MANAGER.SYS ACCOUNT C 200 DO 300 I=2,6 IF(IPBUF(I).NE.NBUF(IOFST+I)) GO TO 500 300 CONTINUE 400 IDSES=7777B RETURN 500 CALL ACERR(-204) CALL ACTRM END C ACAPA ALTERS THE CURRENT USERS PASSWORD C SUBROUTINE ACAPA ,92067-16362 REV.2013 800131 DIMENSION IWIPE(24),LU(2),KWIPE(23) COMMON /ACOM1/NDCB(272),NBUF(128) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM6 /LOC(6),IRN COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID EQUIVALENCE (IWIPE(2),KWIPE(1)) C DATA IWIPE / 15501B,6415B,5*2HXX,6527B,4*2HWW,53415B,5*2HII 1,6460B,4*2H00,2H0 / C C GO ASK FOR CURRENT PASSWORD C KECHO=0 CALL ACPSN(26HENTER CURRENT PASSWORD _,13,JBUF,IERR) KECHO=400B CALL ACWRI(2H ,1) C C GET CURRENT PASSWORD C CALL ACDIR(1,MYDIR,IBUF,IERR) IOF=0 IREC=IBUF(15) IF(0.GT.IREC) IOF=64 IREC=IAND(IREC,77777B) CALL READF(NDCB,IERR,NBUF,128,LEN,IREC) C C VERFY PASSWORD C DO 100 I=1,6 IF(NBUF(I+IOF).NE.JBUF(I)) GO TO 900 100 CONTINUE C C ASK FOR NEW PASSWORD C KECHO=0 CALL ACPSN(26HENTER NEW PASSWORD _,13,JBUF,IERR) KECHO=400B IF(IERR.NE.0) RETURN CALL ACPRM(22HTHE NEW PASSWORD IS: ,11) CALL ACPRM(2H ,1) JBUF(7)=2H JBUF(8)=2HOK JBUF(9)=2H ( JBUF(10)=2HY JBUF(11)=2H0R JBUF(12)=2H N JBUF(13)=2H)? JBUF(14)=2H _ CALL ACPRM(JBUF(2),13) IF(ITTY.LE.0.OR.ITTY.GT.255) GO TO 150 LU(1)=IOR(100000B,ITTY) LU(2)=2100B CALL XLUEX(1,LU,IPB,-1) CALL ACPRM(IWIPE,24) CALL ACPRM(KWIPE,23) IF(IPB.NE.131B) RETURN CALL ACPRM(22HNEW PASSWORD INSTALLED ,11) C C INSTALL THE NEW PASSWORD C 150 CALL RNRQ(1,IRN,ISTAT) CALL READF(NDCB,IERR,NBUF,128,LEN,IREC) DO 200 I=1,6 NBUF(I+IOF)=JBUF(I) 200 CONTINUE CALL WRITF(NDCB,IERR,NBUF,128,IREC) CALL RNRQ(4,IRN,ISTAT) RETURN 900 CALL ACERR(-204) CALL ACTRM END C C C C C C ACPSN PARSES A PASSWOORD C C CALLING SEQUENCE C C CALL ACPSN(MESS,LENGTH,JPASS,IERR) C C C C WHERE MESS IS PROMPT C C LENGTH IS LENGTH OF PROMPT IN WORDS C C JPASS IS THE BUFFER FOR PARSED PASSWORD C C IERR IS ERROR CODE C C SUBROUTINE ACPSN(MESS,MESSL,JPASS,IERR) 1 ,92067-16362 REV.1940 790801 COMMON /ACOM1/NDCB(272),NBUF(128) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM6 /LOC(6),IRN COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID DIMENSION JPASS(6),LUX(2),IESC(2) DATA LUX,IESC /0,0,15501B,15515B / C C PROMPT FOR USER PASSWORD C 1100 CALL ACPRM(MESS,MESSL) CALL ACREI(IBUF,IERR) IF(KECHO.EQ.400B) GO TO 1105 C C TEST FOR DVR07 C IF(ITTY.LE.0.OR.ITTY.GT.255) GO TO 1105 LUX(1)=IOR(100000B,ITTY) CALL XLUEX(13,LUX,IEQT5) IEQT5=IAND(37400B,IEQT5)/256 IF(IEQT5.NE.7B) GO TO 1105 CALL XLUEX(2,LUX,IESC,2) 1105 ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) IF(IERR.EQ.0) GO TO 1120 C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(2).EQ.2H/A.OR.JPBUF(2).EQ.2H/E) RETURN 1110 CALL ACERR(-204) IF(KECHO.EQ.0) CALL ACTRM IERR=0 GO TO 1100 C C IF NO PASSWORD SPECIFIED, DEFAULT TO NONE C 1120 IF(JPBUF(1).NE.0) GO TO 1140 DO 1130 KNDX=2,6 JPASS(KNDX)=2H 1130 CONTINUE GO TO 1170 C C PASSWORD CAN'T BE IN USER.GROUP FORMAT C 1140 IF(IAND(JPBUF(1),255).NE.0) GO TO 1110 DO 1150 KNDX=2,6 JPASS(KNDX)=JPBUF(KNDX) 1150 CONTINUE 1170 JPASS(1)=JPBUF(1)/256 RETURN END