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-18373 C C RELOCATABLE PART NUMBER : 92067-16362 C C PROGRAMER(S) : J.M.N. C C C C ACNWU - NEW USER COMMAND ROUTINE C C CALLING SEQUENCE: CALL ACNWU C C ACERRS: -200 ACCOUNT NOT FOUND C -201 NO FREE ACCOUNTS C -202 ACCOUNT WITH THIS NAME ALREADY EXISTS C -203 INVALID ACCOUNT NAME C -204 INVALID PASSWORD C -206 INVALID FILE NAME C -207 INVALID CAPABILITY C -208 INVALID DISC LIMIT C -209 INVALID SST ENTRY C -210 CONFLICT IN SST DEFINITION C -211 USER OR GROUP ID NOT AVAILABLE C -212 INVALID NUMBER OF SST SPARES C FMP ACERR (READF,WRITF) C C SUBROUTINE ACNWU ,92067-16362 REV.2013 800131 DIMENSION MSNAM(5),MSGNM(6),MSGST(12),MSUPW(7),MSHFL(8) DIMENSION MSCAP(8),MSMXD(12),MSSST(29),MSSPR(11),MSLNK(32) DIMENSION MSGNX(9),LUMS1(27),LUMS2(31) DIMENSION IUSER(5),IDMY(2),IRECG(2) COMMON /ACOM1/NDCB(272),NBUF(128) COMMON /ACOM6 /LOC(6),IRN COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM9/IBUF(40),JBUF(96) COMMON /ACOMD/ICLASS,KPB,KRR,KRRR,IDSES,MYCAP,MYDIR,MYGID DATA MSNAM/2HUS,2HER,2H N,2HAM,2HE?/ DATA MSGNM/2HGR,2HOU,2HP ,2HNA,2HME,2H? / DATA MSGST/2HUS,2HE ,2HGR,2HOU,2HP ,2HSS,2HT ,2H(Y,2H O, 1 2HR ,2HN),2H? / DATA MSUPW/2HUS,2HER,2H P,2HAS,2HSW,2HOR,2HD?/ DATA MSHFL/2HUS,2HER,2H H,2HEL,2HLO,2H F,2HIL,2HE?/ DATA MSCAP/2HUS,2HER,2H C,2HAP,2HAB,2HIL,2HIT,2HY?/ DATA MSMXD/2HMA,2HXI,2HMU,2HM ,2HDI,2HSC,2H C,2HAR,2HTR, 1 2HID,2HGE,2HS?/ DATA MSSST/2HSS,2HT ,2HDE,2HFI,2HNI,2HTI,2HON,2H? ,2H(E, 1 2HNT,2HER,2H S,2HES,2HSI,2HON,2H L,2HU,,2H S,2HYS, 2 2HTE,2HM ,2HLU,2H, ,2HOR,2H E,2HNT,2HER,2H /,2HE)/ DATA MSSPR/2HNU,2HMB,2HER,2H O,2HF ,2HSS,2HT ,2HSP,2HAR, 1 2HES,2H? / DATA MSLNK/2HLI,2HNK,2H T,2HO ,2HAN,2H E,2HXI,2HST,2HIN, 1 2HG ,2HAC,2HCO,2HUN,2HT?,2H (,2HEN,2HTE,2HR ,2H" ,2H" , 2 2HOR,2H U,2HSE,2HR.,2HGR,2HOU,2HP/,2HPA,2HSS,2HWO, 3 2HRD,2H) / DATA MSGNX/2HNE,2HXT,2H G,2HRO,2HUP,2H O,2HR ,2H/E,2H? / DATA LUMS1/2HCO,2HNF,2HLI,2HCT,2H I,2HN ,2HSS,2HT ,2HDE, 1 2HFI,2HNI,2HTI,2HON,2H -,2H A,2HSS,2HUM,2HIN,2HG , 2 2HUS,2HER,2H D,2HEF,2HIN,2HIT,2HIO,2HN / DATA LUMS2/2HUS,2HER,2H: ,2HSE,2HS ,2HLU,2H ,2H ,2H, , 1 2HSY,2HS ,2HLU,2H ,2H ,2H ,2H ,2H G,2HRO,2HUP, 2 2H: ,2HSE,2HS ,2HLU,2H ,2H ,2H, ,2HSY,2HS ,2HLU, 3 2H ,2H / C C C CHECK IF A FREE ACCOUNT OF 128 WORDS EXISTS C CALL ACFDF(IDIRN,IRECN,IOFST,IERR,1) IF(IERR.EQ.0) GO TO 100 CALL ACERR(-201) RETURN C C PROMPT FOR THE USER NAME C 100 CALL ACPRM(MSNAM,5) C C READ AND PARSE THE USER NAME C CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(IPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF((IPBUF(2).EQ.2H/A).OR.(IPBUF(2).EQ.2H/E)) RETURN C C IF NAME IS INVALID, REPORT ACERR AND RE-PROMPT C NAME CANNOT BE IN USER.GROUP FORMAT C NAME CANNOT BE "@" OR NULL C IF(IERR.NE.0) GO TO 200 IF(IAND(IPBUF(1),255).NE.0) GO TO 200 IF(IPBUF(2).EQ.2H@ ) GO TO 200 IF(IPBUF(1).NE.0) GO TO 300 200 CALL ACERR(-203) GO TO 100 300 IF(IDSES.EQ.7777B) GO TO 310 C C GET THE GROUP NAME FROM C MY ACCOUNT C CALL ACDIR(1,MYDIR,IBUF,IERR) JPBUF(1)=256*LBYTE(IBUF(1)) JPBUF(2)=IBUF(7) JPBUF(3)=IBUF(8) JPBUF(4)=IBUF(9) JPBUF(5)=IBUF(10) JPBUF(6)=IBUF(11) C C SET MAXIMUM CAPABILITY C MAXCAP=62 GO TO 600 C 310 MAXCAP=63 C C PROMPT FOR THE GROUP NAME C CALL ACPRM(MSGNM,6) C C READ AND PARSE THE GROUP NAME C 320 CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(2).EQ.2H/A.OR.JPBUF(2).EQ.2H/E) RETURN C C IF NAME IS INVALID, REPORT ACERR AND RE-PROMPT C NAME CANNOT BE IN USER.GROUP FORMAT AND CANNOT BE "@" C 330 IF(IERR.NE.0) GO TO 400 IF(IAND(JPBUF(1),255).NE.0) GO TO 400 IF(JPBUF(2).NE.2H@ ) GO TO 500 400 CALL ACERR(-203) GO TO 300 C C IF NO GROUP SPECIFIED, DEFAULT TO GENERAL C 500 IF(JPBUF(1).NE.0) GO TO 600 JPBUF(1)=3400B JPBUF(2)=2HGE JPBUF(3)=2HNE JPBUF(4)=2HRA JPBUF(5)=2HL C C CHECK THAT GROUP ACCOUNT EXISTS C 600 IUSER(1)=0 CALL ACFDA(IUSER,JPBUF(2),IDMY,IDMY,IDMY,IERR) IF(IERR.EQ.0) GO TO 700 CALL ACERR(-200) IF(IDSES.EQ.7777B) GO TO 310 RETURN C C CHECK IF USER.GROUP ACCOUNT ALREADY EXISTS C 700 CALL ACFDA(IPBUF(2),JPBUF(2),IDMY,IDMY,IDMY,IERR) IF(IERR.EQ.-200) GO TO 800 710 CALL ACERR(-202) GO TO 100 C C SAVE GROUP INFO (LENGTH OF NAME, NAME) C 800 DO 900 I=2,6 IPBUF(I+5)=JPBUF(I) 900 CONTINUE IPBUF(1)=IPBUF(1)+(JPBUF(1)/256) C C PROMPT FOR WHETHER TO USE GROUP SST C CALL ACPRM(MSGST,12) C C READ AND PARSE FOR Y OR N C CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(2).EQ.2H/A.OR.JPBUF(2).EQ.2H/E) RETURN C C SET SIGN BIT IF Y OR NULL TO INDICATE USE GROUP SST C JBUF(33)=0 ITEMP=JPBUF(2)/256 IF((ITEMP.EQ.131B).OR.(JPBUF(1).EQ.0)) 1 JBUF(33)=100000B C C PROMPT FOR USER PASSWORD C 1100 CALL ACPRM(MSUPW,7) CALL ACREI(IBUF,IERR) 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) 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 JBUF(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 JBUF(KNDX)=JPBUF(KNDX) 1150 CONTINUE 1170 JBUF(1)=JPBUF(1)/256 C C PROMPT FOR USER HELLO FILE C 1200 CALL ACPRM(MSHFL,8) CALL ACREI(IBUF,IERR) ICHAR=1 CALL NAMR(JPBUF,IBUF,80,ICHAR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(1).EQ.2H/A.OR.JPBUF(1).EQ.2H/E) RETURN C CHECK IF NULL OR BLANK (DEFAULT TO NO HELLO FILE) C ITEMP=IAND(JPBUF(4),3) IF(ITEMP.NE.0.AND.JPBUF(1).NE.2H/E ) GO TO 1208 DO 1205 KNDX=7,9 JBUF(KNDX)=2H 1205 CONTINUE JBUF(10)=0 JBUF(11)=0 GO TO 1300 C C CHECK IF ASCII C 1208 IF(ITEMP.EQ.3) GO TO 1210 CALL ACERR(-206) GO TO 1200 C C MOVE HELLO FILE NAMR C 1210 I=1 DO 1220 KNDX=7,9 JBUF(KNDX)=JPBUF(I) I=I+1 1220 CONTINUE JBUF(10)=JPBUF(5) JBUF(11)=JPBUF(6) C C PROMPT FOR USER CAPABILITY C 1300 CALL ACPRM(MSCAP,8) CALL ACREI(IBUF,IERR) ICHAR=1 CALL NAMR(JPBUF,IBUF,80,ICHAR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(1).EQ.2H/A.OR.JPBUF(1).EQ.2H/E) RETURN C C CHECK FOR NULL OR BLANK (DEFAULT CAPABILITY TO 30) C ITEMP=IAND(JPBUF(4),3) IF(ITEMP.NE.0) GO TO 1305 JBUF(22)=30 GO TO 1400 C C CHECK IF INTEGER, 1-63 C 1305 IF(ITEMP.EQ.1) GO TO 1320 1310 CALL ACERR(-207) GO TO 1300 1320 IF(JPBUF(1).LE.0.OR.JPBUF(1).GT.MAXCAP) GO TO 1310 C C MOVE CAPABILITY C JBUF(22)=JPBUF(1) C C PROMPT FOR MAXIMUM DISC CARTRIDGES C 1400 CALL ACPRM(MSMXD,12) CALL ACREI(IBUF,IERR) ICHAR=1 CALL NAMR(JPBUF,IBUF,80,ICHAR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(1).EQ.2H/A.OR.JPBUF(1).EQ.2H/E) RETURN C C CHECK FOR NULL OR BLANK (DEFAULT LIMIT TO 2) C ITEMP=IAND(JPBUF(4),3) IF(ITEMP.NE.0) GO TO 1405 JBUF(31)=2 GO TO 1450 C C CHECK FOR INTEGER BETWEEN 0 AND 60 C 1405 IF(ITEMP.EQ.1) GO TO 1420 1410 CALL ACERR(-208) GO TO 1400 1420 IF((JPBUF(1).GT.60).OR.(JPBUF(1).LT.0)) GO TO 1410 JBUF(31)=JPBUF(1) C C ZERO OUT LAST LOG-ON, CUMULATIVE TIME, CPU TIME C 1450 DO 1460 I=23,28 JBUF(I)=0 1460 CONTINUE C C PROMPT FOR USER SST DEFINITION C ICL=29 KNDX=33 1500 CALL ACPRM(MSSST,ICL) CALL ACREI(IBUF,IERR) ICHAR=1 CALL NAMR(JPBUF,IBUF,80,ICHAR) C C CHECK FOR REQUEST TO END SST DEFINITION C IF(JPBUF(1).EQ.2H/E) GO TO 1600 C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(1).EQ.2H/A) RETURN C C CHECK FOR NULL OR BLANK (DEFAULT TO NO USER SST) C ITEMP=IAND(JPBUF(4),3) IF(KNDX.NE.33) GO TO 1510 IF(ITEMP.EQ.0) GO TO 1600 C C READ, PARSE AND VALIDATE SST ENTRY C SYSTEM LU MUST BE NUMERIC, 0-254 C SESSION LU MUST BE NUMERIC, 4-63 C 1510 IF(ITEMP.NE.1) GO TO 1540 ISES=JPBUF(1) C C PARSE THE SYSTEM LU C CALL NAMR(JPBUF,IBUF,80,ICHAR) ISYS=JPBUF(1) IF((ISYS.LT.0).OR.(ISYS.GT.254)) GO TO 1540 IF(IAND(JPBUF(4),3).NE.1) GO TO 1540 IF((ISES.LT.4).OR.(ISES.GT.63)) GO TO 1540 C C CHECK IF SESSION LU HAS ALREADY BEEN DEFINED C IF(KNDX.EQ.33) GO TO 1530 DO 1520 I=34,KNDX ITEMP=IAND(JBUF(I),255)+1 IF(ITEMP.EQ.ISES) GO TO 1540 1520 CONTINUE 1530 KNDX=KNDX+1 JBUF(KNDX)=(IAND(255,ISYS-1)*256)+ISES-1 ICL=8 GO TO 1500 1540 CALL ACERR(-209) ICL=8 GO TO 1500 C C SAVE INDEX FOR END OF USER SST C 1600 KNDXSV=KNDX C C PROMPT FOR SST SPARES C 1605 CALL ACPRM(MSSPR,11) CALL ACREI(IBUF,IERR) ICHAR=1 CALL NAMR(JPBUF,IBUF,80,ICHAR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(1).EQ.2H/A.OR.JPBUF(1).EQ.2H/E) RETURN C C CHECK FOR NULL OR BLANK (DEFAULT TO 5) C ITEMP=IAND(JPBUF(4),3) IF(ITEMP.LE.1) GO TO 1620 1610 CALL ACERR(-212) GO TO 1605 1620 IF(ITEMP.EQ.0) JPBUF(1)=5 IF((JPBUF(1).LT.0).OR.(JPBUF(1).GT.60)) GO TO 1610 ISPAR=JPBUF(1) IF(ISPAR+KNDX.GT.100) GO TO 1610 C C PROMPT FOR LINK TO EXISTING ACCOUNT C 1700 CALL ACPRM(MSLNK,32) CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(2).EQ.2H/A.OR.JPBUF(2).EQ.2H/E) RETURN C C CHECK FOR ERROR C IF(IERR.EQ.0) GO TO 1704 CALL ACERR(-203) GO TO 1700 C C CHECK FOR NULL OR BLANK (DEFAULT TO N), OR N C 1704 IF(JPBUF(1).EQ.0) GO TO 1780 C C NAME MUST BE IN USER.GROUP FORMAT C IF(IAND(JPBUF(1),255).NE.0) GO TO 1720 1710 CALL ACERR(-203) GO TO 1700 C C CHECK IF USER.GROUP ACCOUNT EXISTS C 1720 CALL ACGTU(JPBUF(2),JPBUF(7),NBUF,IOFST,IERR) IF(IERR.EQ.0) GO TO 1725 CALL ACERR(-200) GO TO 1700 C C CHECK THE PASSWORD (SKIP IF NO PASSWORD) 1725 ITEMP=IAND(NBUF(IOFST+1),77777B) IF(ITEMP.EQ.0) GO TO 1750 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) DO 1730 I=2,6 IF(JPBUF(I).NE.NBUF(IOFST+I)) GO TO 1740 1730 CONTINUE GO TO 1750 1740 CALL ACERR(-204) GO TO 1700 C C GET THE USER ID FROM THE ACCOUNT ENTRY C 1750 ID=NBUF(IOFST+29) IF(ID.GE.7776B) GO TO 1710 GO TO 1790 C C GET A USER ID C 1780 CALL ACGID(1,ID,IERR) IF(IERR.NE.-2) GO TO 1790 CALL ACERR(-211) RETURN 1790 JBUF(29)=ID C C GET GROUP ACCOUNT RECORD NUMBER C 1800 IUSER(1)=0 CALL ACFDA(IUSER,IPBUF(7),IDMY,IDMY,IRECG,IERR) IOFST=IRECG(2) CALL READF(NDCB,IERR,NBUF,128,LEN,IRECG) C C MERGE IN THE GROUP SST C IGLEN=0 C C CHECK IF GROUP SST IS TO BE USED C IF(JBUF(33).EQ.0) GO TO 1890 ICNT=IABS(NBUF(IOFST+6)) C C CHECK FOR EMPTY GROUP SST C IF(ICNT.LE.0.OR.ICNT.GT.64) GO TO 1890 K=IOFST+6 C C VALIDATE EACH GROUP SST ENTRY C DO 1880 I=1,ICNT ITEMP=IAND(NBUF(I+K),255) C C CHECK FOR CONFLICTS OR DUPLICATE SST DEFINITIONS C IF(KNDX.LT.34) GO TO 1865 DO 1860 J=34,KNDX ISES=IAND(JBUF(J),255) IF(ITEMP.NE.ISES) GO TO 1860 C C FOUND MATCHING SESSION LU - IF DUPLICATE DEFINITION C IGNORE IT, ELSE REPORT SST CONFLICT C IF(JBUF(J).EQ.NBUF(I+K)) GO TO 1880 GO TO 1870 1860 CONTINUE C C MOVE GROUP SST ENTRY TO USER C 1865 KNDX=KNDX+1 JBUF(KNDX)=NBUF(I+K) IGLEN=IGLEN+1 GO TO 1880 C C CONFLICT BETWEEN USER AND GROUP SST DEFINITION C 1870 CALL ACERR(-210) C C PRINT THE CONFLICTING LU DEFINITIONS C ISYSG=(NBUF(I+K)/256)+1 ISYSU=(JBUF(J)/256)+1 CALL ACITA(ISES+1,LUMS2(7),2) CALL ACITA(ISYSU,LUMS2(13),2) CALL ACITA(ISYSG,LUMS2(30),2) LUMS2(24)=LUMS2(7) LUMS2(25)=LUMS2(8) CALL ACWRI(LUMS1,27) CALL ACWRI(LUMS2,31) 1880 CONTINUE C C POST THE GROUP ID C 1890 JBUF(30)=IAND(NBUF(IOFST+1),77777B) C C WRITE SST LENGTH WORDS C JBUF(32)=(IGLEN*256)+ISPAR JBUF(33)=IOR(JBUF(33),KNDX-33) C C SET BIT INDICATING ACCOUNT EXTENDS PAST 64 WORDS C CALL RNRQ(1,IRN,ISTAT) IF(KNDX.LE.64) GO TO 1930 JBUF(1)=IOR(JBUF(1),100000B) C C FIND A FREE ACCOUNT ENTRY C CALL ACFDF(IDIRN,IRECN,IOFST,IERR,2) IF(IERR.EQ.0) GO TO 1895 1892 CALL ACERR(IERR) CALL RNRQ(4,IRN,ISTAT) RETURN C C BUILD THE DIRECTORY ENTRY C 1895 CALL ACPGA(-2,IDIRN,0) C C COPY SECOND PART INTO ACCOUNT ENTRY C CALL READF(NDCB,IERR,NBUF,128,LEN,IRECN) DO 1920 I=1,33 NBUF(I+IOFST)=JBUF(63+I) 1920 CONTINUE CALL WRITF(NDCB,IERR,NBUF,128,IRECN) C C SET JBUF(64)= RECORD NUMBER OF SECOND PART C IF(IOFST.NE.0) IRECN=IRECN+100000B JBUF(64)=IRECN C C FIND A FREE ACCOUNT ENTRY C 1930 CALL ACFDF(IDIRN,IRECN,IOFST,IERR,1) IF(IERR.NE.0) GO TO 1892 C C GENERATE MESSAGE FILE NAME C CALL ACMSN(IDIRN,JBUF(17)) C C BUILD THE DIRECTORY ENTRY C 1900 DO 2000 I=1,11 IBUF(I)=IPBUF(I) 2000 CONTINUE IBUF(12)=ID IBUF(13)=JBUF(30) IBUF(14)=IRECG(1) IF(IRECG(2).GT.0) IBUF(14)=IOR(IBUF(14),100000B) IBUF(15)=IRECN IF(IOFST.GT.0) IBUF(15)=IOR(IRECN,100000B) IBUF(16)=0 CALL ACDIR(2,IDIRN,IBUF,IERR) C C BUILD THE USER ACCOUNT ENTRY C CALL READF(NDCB,IERR,NBUF,128,LEN,IRECN) DO 2200 I=1,64 NBUF(I+IOFST)=JBUF(I) 2200 CONTINUE CALL WRITF(NDCB,IERR,NBUF,128,IRECN) CALL RNRQ(4,IRN,ISTAT) C C MORE GROUPS? C 2250 CALL ACPRM(MSGNX,9) C C READ AND PARSE THE NEXT GROUP NAME C CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND OR EXIT GROUP DEFINITION C ALSO CHECK FOR NULL OR BLANK C IF((JPBUF(2).EQ.2H/A).OR.(JPBUF(2).EQ.2H/E)) RETURN C C IF NAME IS INVALID, REPORT ACERR AND RE-PROMPT C NAME CANNOT BE IN USER.GROUP FORMAT AND CANNOT BE "@" C IF(IERR.NE.0) GO TO 2300 IF(IAND(JPBUF(1),255).NE.0) GO TO 2300 IF(JPBUF(2).NE.2H@ ) GO TO 2400 2300 CALL ACERR(-203) GO TO 2250 C C IF NO GROUP SPECIFIED, DEFAULT TO GENERAL C 2400 IF(JPBUF(1).NE.0) GO TO 2500 JPBUF(1)=3400B JPBUF(2)=2HGE JPBUF(3)=2HNE JPBUF(4)=2HRA JPBUF(5)=2HL C C CHECK THAT GROUP ACCOUNT EXISTS C 2500 IUSER(1)=0 CALL ACFDA(IUSER,JPBUF(2),IDMY,IDMY,IDMY,IERR) IF(IERR.EQ.0) GO TO 2600 CALL ACERR(-200) GO TO 2250 C C CHECK IF USER.GROUP ACCOUNT ALREADY EXISTS C 2600 CALL ACFDA(IPBUF(2),JPBUF(2),IDMY,IDMY,IDMY,IERR) IF(IERR.EQ.-200) GO TO 2700 CALL ACERR(-202) GO TO 2250 C C SAVE GROUP INFORMATION (LENGTH OF NAME, NAME) C 2700 DO 2800 I=2,6 IPBUF(I+5)=JPBUF(I) 2800 CONTINUE IPBUF(1)=IAND(IPBUF(1),177400B)+(JPBUF(1)/256) C C PROMPT FOR WHETHER TO USE GROUP SST C CALL ACPRM(MSGST,12) C C READ AND PARSE FOR Y OR N C CALL ACREI(IBUF,IERR) ICHAR=1 CALL PARSN(JPBUF,IBUF,80,ICHAR,IERR) C C CHECK FOR REQUEST TO ABORT COMMAND C IF(JPBUF(2).EQ.2H/A.OR.JPBUF(2).EQ.2H/E) RETURN C C SET SIGN BIT IF Y OR NULL TO INDICATE USE GROUP SST C JBUF(33)=0 ITEMP=JPBUF(2)/256 IF((ITEMP.EQ.131B).OR.(JPBUF(1).EQ.0)) 1 JBUF(33)=100000B C C RESET KNDX TO COPY USER SST ONLY C KNDX=KNDXSV GO TO 1800 END