C CONVERT AN INPUT FROM-TO ANY OF THE FOLLOWING FORMATS: C BY,I2,I4,OC,F4,F8,A2,R5 C COPIED FROM DISPLY.FTN FROM SPRING '80 TAPE AND MODIFIED C TO SUPPORT NEW FORMATS. C BYTE BYT(8),R50(6) INTEGER IBUF(4),IN(2),I2 INTEGER*4 I4 REAL F4 DOUBLE PRECISION F8 EQUIVALENCE (IBUF(1),I4,F4,F8,I2,R50(1),BYT(1)) CALL ERRSET(63,.TRUE.,.FALSE.,.TRUE.,.FALSE.,) ! SUPPRESS OUTPUT ERROR CALL ERRSET(64,.TRUE.,.FALSE.,.TRUE.,.FALSE.,) ! SUPPRESS INPUT ERROR 1 DO 10 J=1,4 10 IBUF(J)=0 WRITE(1,2) 2 FORMAT('$','ENTER TYPE OF INPUT- BY,I2,I4,OC,F4,F8,A2,R5 1 (HIT TO EXIT) ? ') READ(1,3)ITYPE 3 FORMAT(A2) IF(ITYPE.EQ.'BY') GO TO 12 ! BYTE FORMAT IF(ITYPE.EQ.'I2') GO TO 13 ! INTEGER*2 FORMAT IF(ITYPE.EQ.'I4') GO TO 14 ! INTEGER*4 FORMAT IF(ITYPE.EQ.'OC') GO TO 15 ! OCTAL FORMAT IF(ITYPE.EQ.'F4') GO TO 16 ! REAL*4 FORMAT IF(ITYPE.EQ.'F8') GO TO 17 ! REAL*8 FORMAT IF(ITYPE.EQ.'A2') GO TO 18 ! ASCII FORMAT IF(ITYPE.EQ.'R5') GO TO 19 ! RAD50 FORMAT IF(ITYPE.EQ.8224) GO TO 1000 ! CARRIAGE RETURN TO EXIT GO TO 1 12 WRITE(1,121) 121 FORMAT(' ENTER UP TO 8 BYTES (BYTE,BYTE, ...)') READ(1,122,ERR=12) (BYT(I),I=1,8) 122 FORMAT(8O4) GO TO 22 15 WRITE(1,151) 151 FORMAT(' OCTAL INPUT (4 WORDS - WORD,WORD,WORD,WORD) ') READ(1,156,ERR=15)(IBUF(J),J=1,4) 156 FORMAT(4O6) GO TO 22 13 WRITE(1,101) 101 FORMAT(1X,'ENTER DECIMAL NUMBER - MAX = 32768') READ(1,102,ERR=13) I2 102 FORMAT(I6) GO TO 22 14 WRITE(1,103) 103 FORMAT(1X,'ENTER DECIMAL NUMBER - MAX =2,147,483,648') READ(1,104,ERR=14) I4 104 FORMAT(I11) GO TO 22 16 WRITE(1,105) 105 FORMAT(1X,'ENTER REAL NUMBER - MAX = 16,777,216 E31') READ(1,106,ERR=16) F4 106 FORMAT(F40.10) GO TO 22 17 WRITE(1,107) 107 FORMAT(1X,'ENTER REAL NUMBER - MAX = VERY LARGE') READ(1,106,ERR=17) F8 GO TO 22 18 WRITE(1,108) 108 FORMAT(1X,'ENTER UP TO 8 ASCII CHARACTERS') READ(1,109,ERR=18)IBUF 109 FORMAT(4A2) GO TO 22 19 WRITE(1,110) 110 FORMAT(' ENTER 2 RAD50 OCTAL NUMBERS (XXXXXX,XXXXXX): ') READ(1,111,ERR=19) (IN(J),J=1,2) 111 FORMAT(2O7) CALL R50ASC(6,IN,R50) C C TEST WHICH FORMAT TO TYPE IN C 22 WRITE(1,21) 21 FORMAT('$CONVERSION TYPE BY,I2,I4,F4,F8,A2,OC,R5 ? ') READ(1,3)ITYPE IF(ITYPE.EQ.'BY') GO TO 100 ! BYTE FORMAT IF(ITYPE.EQ.'I2') GO TO 200 ! INTEGER*2 FORMAT IF(ITYPE.EQ.'I4') GO TO 300 ! INTEGER*4 FORMAT IF(ITYPE.EQ.'F4') GO TO 400 ! REAL*4 FORMAT IF(ITYPE.EQ.'F8') GO TO 500 ! REAL*8 FORMAT IF(ITYPE.EQ.'A2') GO TO 600 ! ASCII FORMAT IF(ITYPE.EQ.'OC') GO TO 700 ! OCTAL FORMAT IF(ITYPE.EQ.'R5') GO TO 800 ! RAD50 FORMAT GO TO 22 100 WRITE(1,150) (BYT(I),I=1,8) 150 FORMAT(' ',8(2X,O3)) GO TO 1 200 WRITE(1,250,ERR=950)IBUF(1) 250 FORMAT(' ',I6) GO TO 1 300 WRITE(1,350,ERR=950)I4 350 FORMAT(' ',I20) GO TO 1 400 WRITE(1,450,ERR=950)F4 450 FORMAT(' ',F20.5) GO TO 1 500 WRITE(1,550,ERR=950)F8 550 FORMAT(' ',F40.10) GO TO 1 600 WRITE(1,650,ERR=950)IBUF 650 FORMAT(' ',4A2) GO TO 1 700 WRITE(1,750,ERR=950)IBUF 750 FORMAT(' ',4(1X,O6)) GO TO 1 800 J=IRAD50(6,IBUF,IN) IBUF(1)=IN(1) IBUF(2)=IN(2) IBUF(3)=0 IBUF(4)=0 IF(J .EQ. 6) GOTO 700 WRITE(1,900) 900 FORMAT(' NON RADIX-50 CHARACTER PRESENT') GO TO 1 950 WRITE(1,960) 960 FORMAT(' ERROR ON CONVERSION') GOTO 1 1000 END