PROGRAM HERTAP C C THIS PROGRAM IS TO READ THE HERSHEY CHARACTER DATA TAPE C DIMENSION IDATA(16,10),IDIR(4000),ID(160),IDI(16,250) DIMENSION IRECDB(40) BYTE IRECD(80),IFILE(40) COMMON /NLUN/LUN,ISTAT(2) EQUIVALENCE (ID(1),IDATA(1,1)),(IDIR(1),IDI(1,1)) EQUIVALENCE (IRECD(1),IRECDB(1)) LOGICAL*1 IEND CALL ASSIGN(1,'MT:') LUN=1 CALL SET8 1 TYPE 10 10 FORMAT(' Enter the output file name '$) READ(5,20,END=999)IQ,IFILE 20 FORMAT(Q,40A1) IFILE(IQ+1)=0 OPEN (UNIT=2,NAME=IFILE,TYPE='UNKNOWN', 1ACCESS='DIRECT',RECORDSIZE=8,INITIALSIZE=500, 2ASSOCIATEVARIABLE=IR) IR=251 INDEX=1 C C C 100 CALL NTAPE(IRECD,80) IF (ISTAT(1).NE.1)GOTO 900 DO 101 I=1,40 101 CALL EBTAS(IRECDB(I)) DECODE(80,110,IRECD)ICHAR,IREC C TYPE 111, INDEX,ICHAR,IREC 111 FORMAT(3I8) 110 FORMAT(4X,I4,I3) IF (IREC.NE.1)GOTO 200 IEND=.FALSE. IPEN=3 IPOS=2 ID(1)=0 JPOS=28 120 CALL DP(ID,ID(IPOS),IPOS,IRECD(JPOS),IPEN,IEND) IF ((IPOS.EQ.3).AND.(IREC.EQ.1))IPEN=3 IF (IPOS.GT.160)STOP ' HIT CHARACTER WITH MORE THAN 160 STROKE' JPOS=JPOS+4 IF (IEND)GOTO 300 IF (JPOS.GE.76)GOTO 100 GOTO 120 C C C 200 JPOS=12 IF (IEND) GOTO 100 GOTO 120 C C C 300 IPOS=IPOS-1 J=IPOS/16 TYPE 301, INDEX,ID(1),ICHAR 301 FORMAT(3I8) IF (MOD(IPOS,16).NE.0)J=J+1 IDIR( INDEX ) = ICHAR INDEX = INDEX + 1 IDIR( INDEX ) = IR INDEX = INDEX + 1 IF( INDEX .EQ. 4000 ) STOP DO 310 K=1,J 310 WRITE(2'IR)(IDATA(KK,K),KK=1,16) GOTO 100 C C C 900 DO 910 I=1,250 910 WRITE(2'I)(IDI(KK,I),KK=1,16) CALL CLOSE(2) GOTO 1 999 STOP END SUBROUTINE DP(IVEC,IP,IPOS,IVAL,IPEN,IEND) BYTE IVAL(80) LOGICAL*1 IEND DECODE (80,10,IVAL)IX,IY 10 FORMAT(2I2) IF (IX.GT.50)IX=IX-100 IF (IY.GT.50)IY=IY-100 IF (IX.EQ.50)GOTO 100 IY=-IY CALL PACK(IP,IX,IY,IPEN) IPEN=2 IPOS=IPOS+1 IVEC=IVEC+1 RETURN C C 100 IF (IY.EQ.50)IEND=.TRUE. IPEN=3 RETURN END