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-18379 C C RELOCATABLE PART NUMBER : 92067-16361 C C PROGRAMER(S) : J.M.N. C C SUBROUTINE ACUNL ,92067-16361 REV.1940 790625 LOGICAL ISRCH INTEGER ODCB,ONAME(3),INAME(6),NAMSV(6) DIMENSION LU2(2) COMMON /ACOM1/NDCB(272),NBUF(256) COMMON /ACOM2/ LRTRN,LRTR2,LGOTO,ITYPE,ITTYT,LTOSEG,NAMSG(3) COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOM4/ICMND(40) COMMON /ACOM5/LOWUS,IHIGR COMMON /ACOM6 /LOC(6),IRN,IPFLG COMMON /ACOM7/IPBUF(11),ISTRC,JPBUF(11) COMMON /ACOM8/LASTP(40),LENP COMMON /ACOM9/JBUF(136) COMMON /ACOMA /ISRCH,ISR1,ISR2,ISR3,ISR4 COMMON /ACOMB /ISTK(90),IPT COMMON /ACOMC/IECHO,LULOG,ITLOG,KECHO DIMENSION KDEL(202) LU2(2)=100B C C PARSE INPUT NAMR C CALL NAMR(LIST,ICMND,80,ISTRC) LIST(4)=IAND(LIST(4),3) C C LOCK RN C CALL RNRQ(1,IRN,ISTAT) C C COMPUTE REQUIRED SIZE C J=-1 IDELO=0 KDEL(1)=1 IACCTS=8*(LOC(6)-LOC(5)) DO 100 I=1,IACCTS CALL ACNXA(J,IREC,IDEL,KOUNT,IDIR,IDELX) C C INITIALIZE DELTA ARRAY C IF(IDELO.EQ.IDEL) GO TO 90 C C MAKE RECORD NUMBER(64 WORD) NEGATIVE C KDEL(IDELX)=-IDIR C C USE OLD DELTA C KDEL(IDELX+1)=IDELO KDEL(IDELX+3)=IDEL C C SET END OF TABLE C KDEL(IDELX+2)=1 IDELO=IDEL 90 IF(JBUF(J).EQ.0) GO TO 110 100 CONTINUE C C READ HEADER C 110 CALL READF(NDCB,IERR,NBUF,128,LEN,1) JACCTS=8*(KOUNT/8)+7 NBUF(6)=NBUF(5)+(JACCTS+1)/8 IDELI=(NBUF(6)-LOC(6))*2 JSIZE=NBUF(6)+(JACCTS+1)/2 NBUF(29)=0 C C OPEN SAVE FILE C CALL ACOPL(IERR,2,JSIZE) IF(IERR.NE.0) GO TO 999 C C CHECK IF PUNCH C AND GENERATE LEADER C LU2(1)=IOR(LIST,100000B) CALL XLUEX(100015B,LU2,IEQ5,IEQ4) GO TO 120 115 IDVRT=IAND(IEQ5,37400B)/256 IF(IDVRT.NE.2) GO TO 120 LU2(2)=1000B CALL XLUEX(3,LU2) C C POST TO SAVE FILE C 120 CALL ACWRL(NBUF,128,IERR) IF(IERR.NE.0) GO TO 999 C C CLEAR ACTIVE SESSION TABLE C DO 125 I=1,128 125 NBUF(I)=0 C C WRITE REST OF SESSION WIDE INFORMATION C IEND=LOC(5)-1 DO 150 I=2,IEND IF(I.LT.LOC(2)) GO TO 130 CALL READF(NDCB,IERR,NBUF,128,LEN,I) IF(IERR.LT.0) GO TO 999 130 CALL ACWRL(NBUF,128,IERR) IF(IERR.NE.0) GO TO 999 150 CONTINUE C C BUILD DIRECTORY THAT HAS HOLES C REMOVED C J=-1 200 DO 500 I=1,128,16 CALL ACNXA(J,IREC,IDEL,KOUNT,IDIR,IDELX) CALL ACFID (JBUF(J+14),IDELI,KDEL) CALL ACFID (JBUF(J+13),IDELI,KDEL) JJ=J C C MOVE TO OUPUT BUFFER C DO 400 II=I,I+15 NBUF(II)=JBUF(JJ) 400 JJ=JJ+1 IF(NBUF(I).EQ.0.AND.I.LT.113) NBUF(I)=-1 500 CONTINUE C C WRITE DIRECTORY RECORD C CALL ACWRL(NBUF,128,IERR) IF(IERR.NE.0) GO TO 999 IF(JBUF(J).NE.O) GO TO 200 C C NOW WRITE THE ACCOUNT ENTRIES C II=1 J=-1 DO 1000 I=1,IACCTS CALL ACNXA(J,IDREC,IDEL,KOUNT,L,IDELX) IREC=L/2 IOFST=129+64*MOD(L,2) CALL READF(NDCB,IERR,NBUF(129),128,LEN,IREC) C C MOVE TO OUTPUT BUFFER C 800 DO 900 JJ=IOFST,IOFST+63 NBUF(II)=NBUF(JJ) 900 II=II+1 C C FIX EXTENSION ACLNK C IF(NBUF(IOFST)+1.LT.0) CALL ACFID (NBUF(IOFST+63),IDELI,KDEL) IF(255.GE.JBUF(J)) GO TO 950 C C SET MESSAGE FILE NAME C CALL ACMSN(I,NBUF(II-48)) 950 IF(II.LT.128.AND.JBUF(J).NE.0) GO TO 1000 CALL ACWRL(NBUF,128,IERR) IF(IERR.NE.0) GO TO 999 II=1 IF(JBUF(J).EQ.0) GO TO 1100 1000 CONTINUE C C PRINT ACERR C 999 CALL ACERR(IERR) C C CLOSE SAVE FILE AND UNLOCK RN C 1100 CALL RNRQ(4,IRN,ISTAT) IF(LIST(4).NE.1.OR.IERR.EQ.12) GO TO 1200 C C WRITE EOF AND REWIND C CALL XLUEX(3,LU2) LU2(2)=500B CALL XLUEX(3,LU2) C 1200 CALL ACCLL RETURN END