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-18416 C C RELOCATABLE PART NUMBER : 92067-16361 C C PROGRAMER(S) : J.M.N. C C C C SUBROUTINE ACXFR(ICMND,ISTRC,IERR),92067-16361 REV.1940 790722 LOGICAL IFBRK,XFTTY DIMENSION LU2(2),ISIZE(2) COMMON /ACOMB /ISTK(90),IPT COMMON /ACOM3/LIST(10),LDCB(144),LLIST,LLDCB(144),ITTY,ITDCB(144) COMMON /ACOMC/IECHO,LULOG,IDUM(11),LLST1,LLST2,LLST3,LLST4 DIMENSION ICMND(40),IPBUF(11) DATA LU2 / 0,0 / DATA ISIZE / 24,0 / IMODE=IERR C C IF CURRENT INPUT IS A FILE THEN CLOSE C IPTT=IPT IF(ITTY.LE.255) GO TO 200 C SAVE RECORD NUMBER CALL LOCF(ITDCB,IERR,ISTK(IPT+4),ISTK(IPT+7),ISTK(IPT+8)) CALL CLOSE(ITDCB) GO TO 210 200 LU2(1)=IOR(ITTY,100000B) C C PARSE TO GET NEXT INPUT LU OR FILE C 210 IF(IPT.LT.80) IPT=IPT+8 IF(IMODE.GE.0) GO TO 150 IF(ITTY.NE.LULOG) GO TO 125 110 IPT=IPTT RETURN 125 ITTY=LULOG GO TO 300 150 CALL NAMR(ISTK(IPT+1),ICMND,80,ISTRC) ISTK4=IAND(ISTK(IPT+4),3) 175 IF(ISTK4.NE.1.OR.ISTK(IPT+1).LT.0) GO TO 180 ISTK(IPT+1)=LUTRU(ISTK(IPT+1)) IF(ISTK(IPT+1).LT.0) GO TO 975 180 IF(ITTY.EQ.ISTK(IPT+1).AND.ITTY.LE.255) GO TO 400 ITTY=ISTK(IPT+1) C IF(ITTY.EQ.0.AND.ISTK4.EQ.1) GO TO 975 C IF ZERO OR NEGATIVE THEN BACK UP STACK C IF(ITTY.LE.0) GO TO 600 C C IS THERE ROOM ON STACK C IF(IPT.GE.80) GO TO 950 C C IF LU IS IT LEGAL C IF(ITTY.GT.255.AND.ISTK4.NE.3) GO TO 900 ISTK(IPT+4)=1 300 IF(ITTY.LE.255) GO TO 350 IF(ISTK(IPT+5).EQ.0) ISTK(IPT+5)=-31178 CALL OPEN(ITDCB,IERR,ISTK(IPT+1),0,ISTK(IPT+5),ISTK(IPT+6)) IF(IERR.LT.0) GO TO 999 IF(ISTK(IPT+4).EQ.1) GO TO 400 CALL APOSN(ITDCB,IERR,ISTK(IPT+4),ISTK(IPT+7),ISTK(IPT+8)) IF(IERR.LT.0) GO TO 999 GO TO 400 C C UNLOCK LU C 350 CALL LURQ(70000B,LU2,1) GO TO 360 355 CONTINUE C C LOCK LU C 360 CALL ACLCK(ITTY,IERR) IF(IERR.NE.0) GO TO 999 C C PARSE FOR LIST FILE OR LU C 400 IF(ITTY.LT.0) GO TO 975 410 CALL NAMR(IPBUF,ICMND,80,ISTRC) C C IF NULL NO CHANGE C ITY=IAND(IPBUF(4),3) IF(ITY.EQ.0) GO TO 500 IF(LLIST.GT.255) GO TO 440 LU2(1)=IOR(LLIST,100000B) CALL LURQ(70000B,LU2,1) GO TO 445 430 CONTINUE GO TO 445 C C CLOSE UNCONDITIONALLY C 440 CALL ACCLS(LLDCB,3) 445 LLIST=IPBUF(1) IF(IPBUF(1).EQ.0) GO TO 500 IF(ITY.NE.3) GO TO 450 C C SAVE LOGICAL LIST FILE NAME C LLST1=IPBUF(1) LLST2=IPBUF(2) LLST3=IPBUF(3) LLST4=IPBUF(6) C C SET TYPE AND SIZE C IF(IPBUF(7).LT.3) IPBUF(7)=3 IF(IPBUF(8).EQ.0) IPBUF(8)=24 C C IF FILE OPEN IT C C TEST AGAINST CURRENT INPUTS C CALL ACTIN(IPBUF,IERR) IF(IERR.NE.0) GO TO 500 CALL ACROP(LLDCB,IERR,IPBUF,0,IPBUF(5),IPBUF(6) 1 ,IPBUF(8),IPBUF(7)) IF(IERR.LT.0) GO TO 998 GO TO 500 450 IF(IPBUF(1).LE.0.OR.IPBUF(1).GT.255) GO TO 980 C C LOCK LU C LLST=LUTRU(LLIST) LLIST=0 IECH=IECHO IECHO=1 IF(LLST.LT.0) GO TO 975 CALL ACLCK(LLST,IERR) IECHO=IECH IF(IERR.NE.0) GO TO 998 LLIST=LLST C C PARSE FOR ECHO C 500 CALL NAMR(IPBUF,ICMND,80,ISTRC) IF(IPBUF(1).EQ.2HEC) IECHO=1 IF(IPBUF(1).EQ.2HNO) IECHO=0 IF(IERR.GT.0) IERR=0 RETURN C C BACK UP STACK C 600 IF(ITTY.EQ.0) ITTY=-1 IPT=IPT-8+ITTY*8 IF(IPT.LT.0) IPT=0 IPTT=IPT ITTY=ISTK(IPT+1) GO TO 300 C C ACERRS 900 IERR=-222 GO TO 999 950 IERR=13 GO TO 999 975 IERR=12 GO TO 999 980 IERR=-222 998 LLIST=0 999 IPT=IPTT RETURN END