C C THESE ROUTINES WERE EXTRACTED FROM PLAYER.FTN TO REDUCE COMPILATION C TIME FOR PLAYER.FTN C SUBROUTINE GETREL(VARI,FLAG,LOW,HIGH,DEFVAL) C COMMON/INBUF/INBUF(20),IOST LOGICAL*1 FLAG REAL VARI,LOW,HIGH,DEFVAL BYTE INPUT(15),LEFTED(15),IFLAG INTEGER NCHRS IFLAG=0 GO TO 2000 ENTRY GETRLL IFLAG=1 2000 CONTINUE FLAG=.FALSE. NCHRS=0 IF(IFLAG .EQ. 0 .AND. DEFVAL .NE. 0) GOTO 2300 2050 CONTINUE DO 2100 I=1,15 LEFTED(I)=' ' 2100 CONTINUE IF(IFLAG.NE.0 ) GO TO 2200 CALL ENASTR ! DON'T FORGET TO ENABLE KEYBOARD INPUT READ(1,100,END=2300) NCHRS,(INPUT(I),I=1,15) 100 FORMAT(Q,15A1) GOTO 2300 2200 CONTINUE NCHRS=IOST-2 DECODE(17,200,INBUF) INPUT 200 FORMAT(2X,15A1) IFLAG=0 2300 IF(NCHRS .NE.0 ) GOTO 2400 VARI=DEFVAL GO TO 2900 2400 IF(NCHRS .GT. 15) GO TO 2600 CALL STRMOV(INPUT,1,NCHRS,LEFTED,16-NCHRS) ! LEFT ADJUST INPUT DECODE(15,300,LEFTED,ERR=2700) VARI 300 FORMAT(G15.0) IF(VARI .GE. LOW .AND. VARI .LE. HIGH ) GOTO 2900 2600 CONTINUE WRITE(1,400) 400 FORMAT(' SORRY CAPTAIN, BUT THAT COMMAND MUST BE ') WRITE(1,500) LOW,HIGH 500 FORMAT(' BETWEEN ',F15.4,' AND ',F15.4) GO TO 2050 2700 CONTINUE WRITE(1,600) 600 FORMAT('$WOULD YOU PLEASE REPEAT THAT SIR ? ') GO TO 2050 2900 FLAG=.TRUE. 3000 CONTINUE RETURN END SUBROUTINE GETINT(NUM,FLAG,LOW,HIGH,DEFVAL) INTEGER HIGH,DEFVAL COMMON/INBUF/INBUF(20),IOST LOGICAL*1 FLAG BYTE IFLAG IFLAG=0 GO TO 4000 ENTRY GETINL IFLAG=1 4000 CONTINUE FLAG=.FALSE. IF(IFLAG .NE. 0 ) GO TO 4100 IF(DEFVAL .NE. 0) GOTO 4300 4050 CONTINUE CALL ENASTR ! DON'T FORGET TO ENABLE KEYBOARD INPUT READ(1,100,END=4200,ERR=4700) NCHRS,NUM 100 FORMAT(Q,I5) GOTO 4200 4100 CONTINUE NCHRS=IOST-2 IFLAG=0 ! CLEAR FLAG IN CASE DECODE FAILS DECODE(7,200,INBUF,ERR=4700) NUM 200 FORMAT(2X,I) 4200 CONTINUE IF(NCHRS .NE. 0 ) GO TO 4400 4300 CONTINUE NUM=DEFVAL GO TO 4900 4400 CONTINUE IF((NUM .LT. LOW) .OR. (NUM .GT. HIGH) ) GO TO 4600 GO TO 4900 4600 CONTINUE WRITE(1,300) LOW,HIGH 300 FORMAT(' SPOCK SAYS THAT COMMAND SHOULD BE BETWEEN',I5,' AND ',I5) 4700 CONTINUE WRITE(1,500) 500 FORMAT('$ TRY AGAIN : ') GO TO 4050 4900 FLAG=.TRUE. 5000 CONTINUE RETURN END SUBROUTINE YESNO(FLAG) COMMON/INBUF/INBUF(20),IOST LOGICAL*1 FLAG BYTE ANSWER,IFLAG IFLAG=0 GO TO 6000 ENTRY YESNOL IFLAG=1 C 6000 CONTINUE IF(IFLAG.NE.0 ) GO TO 6100 CALL ENASTR ! DON'T FORGET TO ENABLE KEYBOARD INPUT READ(1,100,END=6200) ANSWER 100 FORMAT(A1) GOTO 6200 6100 DECODE(3,200,INBUF) ANSWER 200 FORMAT(2X,A1) IFLAG=0 6200 IF(ANSWER .NE. 'Y') GOTO 6300 ! CHECK FOR A YES FLAG=.TRUE. GO TO 6500 6300 IF(ANSWER .NE. 'N') GOTO 6400 ! CHECK FOR A NO FLAG=.FALSE. GO TO 6500 6400 WRITE(1,300) 300 FORMAT(' ** PLEASE ANSWER "YES" OR "NO" **') WRITE(1,400) 400 FORMAT('$ANSWER ? ') GO TO 6000 6500 CONTINUE RETURN END