C******************************************************************************* C SUBROUTINE IO(AN,BN,B1,B2,B3,BD1,BD2,ID) C C******************************************************************************* C C MAIN USER INPUT SUBROUTINE: C C THIS SUBROUTINE DISPLAYS UNCERTAINTY FOR A VARIABLE (LOW, MEDIAN, AND C HIGH ESTIMATES), BOUNDS IN WHICH ASSUMPTIONS MUST FALL, AND A DEFAULT C ASSUMPTION. THE USER MAY THEN EITHER ACCEPT THE DEFAULT OR SUPPLY HIS C OWN ASSUMPTION. IF THE ASSUMPTION IS WITHIN BOUNDS, IT IS READ BACK C AND THE USER MAY CONFIRM OR REJECT IT. IF THE ASSUMPTION IS NOT WITHIN C ACCEPTABLE BOUNDS, THE SUBROUTINE RETURNS WITH A CODE ID=1. C C INPUTS: C B1 = LOW ESTIMATE FOR THE VARIABLE AN. C B2 = MEDIAN ESTIMATE FOR THE VARIABLE AN. C B3 = HIGH ESTIMATE FOR THE VARIABLE AN. C BD1 = LOWER BOUNDS FOR USER SUPPLIED ASSUMPTION FOR AN. C BD2 = UPPER BOUNDS FOR USER SUPPLIED ASSUMPTION FOR AN. C ID = DESIGNATES IO FORMAT: C 0=F6.0 C 2=F6.2 C 3=F7.3 (DEFAULT ASSUMPTION IF OTHER VALUE OF ID IS SUPPLIED) C C OUTPUTS: C AN = USER SUPPLIED ASSUMPTION VARIABLE. C ID = CONDITION CODE: C ID=1 USER SUPPLIED ASSUMPTION EITHER BEYOND BOUNDS OR C USER IS UNSATISFIED WITH THE ASSUMPTION AND WISHES C TO TRY AGAIN. C C CODED: 8-19-85 SUBROUTINES CALLED: NONE C PROGRAMMER: JAE EDMONDS LATEST REVISIONS: NONE C IMPLICIT REAL*8 (A-H,O-Z), INTEGER(I-N) CHARACTER*1 YESNO C AN=BN YESNO='N' IOUNIT=0 C IF((ID.NE.0).AND.(ID.NE.2)) ID=3 WRITE(IOUNIT,2040) IF(ID.NE.0) GOTO 20 IF(B3.GT.99999.D0) GOTO 10 WRITE(IOUNIT,2000) B1 2000 FORMAT(1X,25X,'LOW ESTIMATE-------(',F6.0,')') WRITE(IOUNIT,2001) B2 2001 FORMAT(1X,25X,'MEDIAN ESTIMATE----(',F6.0,')') WRITE(IOUNIT,2002) B3 2002 FORMAT(1X,25X,'HIGH ESTIMATE------(',F6.0,')') WRITE(IOUNIT,2003) BN 2003 FORMAT(1X,25X,'DEFAULT ASSUMPTION ',F6.0) GOTO 40 C 10 CONTINUE WRITE(IOUNIT,2010) B1 2010 FORMAT(1X,25X,'LOW ESTIMATE-------(',F8.0,')') WRITE(IOUNIT,2011) B2 2011 FORMAT(1X,25X,'MEDIAN ESTIMATE----(',F8.0,')') WRITE(IOUNIT,2012) B3 2012 FORMAT(1X,25X,'HIGH ESTIMATE------(',F8.0,')') WRITE(IOUNIT,2013) BN 2013 FORMAT(1X,25X,'DEFAULT ASSUMPTION ',F8.0) GOTO 40 C 20 CONTINUE IF(ID.NE.2) GOTO 30 IF((B3.LE.99.99D0).AND.(B3.GE.-9.99D0)) GOTO 25 WRITE(IOUNIT,2020) B1 2020 FORMAT(1X,25X,'LOW ESTIMATE-------(',F6.2,')') WRITE(IOUNIT,2021) B2 2021 FORMAT(1X,25X,'MEDIAN ESTIMATE----(',F6.2,')') WRITE(IOUNIT,2022) B3 2022 FORMAT(1X,25X,'HIGH ESTIMATE------(',F6.2,')') WRITE(IOUNIT,2023) BN 2023 FORMAT(1X,25X,'DEFAULT ASSUMPTION ',F6.2) GOTO 40 C 25 CONTINUE WRITE(IOUNIT,2025) B1 2025 FORMAT(1X,25X,'LOW ESTIMATE-------(',F5.2,')') WRITE(IOUNIT,2026) B2 2026 FORMAT(1X,25X,'MEDIAN ESTIMATE----(',F5.2,')') WRITE(IOUNIT,2027) B3 2027 FORMAT(1X,25X,'HIGH ESTIMATE------(',F5.2,')') WRITE(IOUNIT,2028) BN 2028 FORMAT(1X,25X,'DEFAULT ASSUMPTION ',F5.2) GOTO 40 C 30 CONTINUE WRITE(IOUNIT,2030) B1 2030 FORMAT(1X,25X,'LOW ESTIMATE-------(',F5.3,')') WRITE(IOUNIT,2031) B2 2031 FORMAT(1X,25X,'MEDIAN ESTIMATE----(',F5.3,')') WRITE(IOUNIT,2032) B3 2032 FORMAT(1X,25X,'HIGH ESTIMATE------(',F5.3,')') WRITE(IOUNIT,2033) BN 2033 FORMAT(1X,25X,'DEFAULT ASSUMPTION ',F5.3) GOTO 40 C 40 CONTINUE WRITE(IOUNIT,2040) 2040 FORMAT(1X) WRITE(IOUNIT,2050) 2050 FORMAT(1X,5X,'DO YOU WISH TO ACCEPT THE DEFAULT ASSUMPTION? TYPE &EITHER "YES"') WRITE(IOUNIT,'(A\)')' OR "NO". THEN PRESS RETURN. ===>' READ(IOUNIT,'(BN,A1)') YESNO WRITE(IOUNIT,2040) IF((YESNO.EQ.'N').OR.(YESNO.EQ.'n')) GOTO 45 IF((YESNO.EQ.'Y').OR.(YESNO.EQ.'y').OR.(YESNO.EQ.' ')) ID=0 IF((YESNO.EQ.'Y').OR.(YESNO.EQ.'y').OR.(YESNO.EQ.' ')) RETURN ID=1 RETURN C 45 CONTINUE IF(ID.NE.0) GOTO 55 IF(BD2.GT.99999) GOTO 50 WRITE(IOUNIT,2060) BD1,BD2 2060 FORMAT(1X,5X,'TYPE DESIRED ASSUMPTION, WHICH MAY BE ANY VALUE BETW &EEN ',F4.0,' AND ',F6.0,',') WRITE(IOUNIT,'(A\)')' THEN PRESS RETURN. ===>' GOTO 70 C 50 WRITE(IOUNIT,2061) BD1,BD2 2061 FORMAT(1X,5X,'TYPE DESIRED ASSUMPTION, WHICH MAY BE ANY VALUE BETW &EEN ',F4.0,' AND ',F8.0,',') WRITE(IOUNIT,'(A\)')' THEN PRESS RETURN. ===>' GOTO 70 C 55 CONTINUE IF(ID.NE.2) GOTO 60 IF((BD2.GT.99.99D0).OR.(BD1.LT.-9.99D0)) WRITE(IOUNIT,2062)BD1,BD2 2062 FORMAT(1X,5X,'TYPE DESIRED ASSUMPTION, WHICH MAY BE ANY VALUE BETW &EEN ',F6.2,' AND ',F6.2,',') IF((BD2.LE.99.99D0).AND.(BD1.GE.-9.99D0)) & WRITE(IOUNIT,2063)BD1,BD2 2063 FORMAT(1X,5X,'TYPE DESIRED ASSUMPTION, WHICH MAY BE ANY VALUE BETW &EEN ',F5.2,' AND ',F5.2,',') WRITE(IOUNIT,'(A\)')' THEN PRESS RETURN. ===>' GOTO 70 C 60 CONTINUE WRITE(IOUNIT,2064) BD1,BD2 2064 FORMAT(1X,5X,'TYPE DESIRED ASSUMPTION, WHICH MAY BE ANY VALUE BETW &EEN ',F5.3,' AND ',F6.3,',') WRITE(IOUNIT,'(A\)')' THEN PRESS RETURN. ===>' C 70 CONTINUE READ(IOUNIT,'(BN,F8.0)',ERR=75) AN IF((AN.LT.BD1).OR.(AN.GT.BD2)) ID=1 IF(ID.EQ.1) WRITE(IOUNIT,2065) 2065 FORMAT(1X,15X,'!!!!! ILLEGAL ENTRY !!!!! TRY AGAIN !!!!!') CALL TIME IF(ID.EQ.1) RETURN C 80 CONTINUE WRITE(IOUNIT,2040) IF((BD2.LE.99999.D0).AND.(ID.EQ.0)) WRITE(IOUNIT,2070) AN IF((BD2.GT.99999.D0).AND.(ID.EQ.0)) WRITE(IOUNIT,2071) AN 2070 FORMAT(1X,25X,'YOUR ASSUMPTION IS: ',F6.0) 2071 FORMAT(1X,25X,'YOUR ASSUMPTION IS: ',F8.0) IF(ID.NE.2) GOTO 85 IF((BD2.GT.99.99D0).OR.(BD1.LT.-9.99D0)) WRITE(IOUNIT,2072) AN 2072 FORMAT(1X,25X,'YOUR ASSUMPTION IS: ',F6.2) IF((BD2.LE.99.99D0).AND.(BD1.GE.-9.99D0)) WRITE(IOUNIT,2073) AN 2073 FORMAT(1X,25X,'YOUR ASSUMPTION IS: ',F5.2) C 85 CONTINUE IF(ID.EQ.3) WRITE(IOUNIT,2074) AN 2074 FORMAT(1X,25X,'YOUR ASSUMPTION IS: ',F5.3) C WRITE(IOUNIT,2075) 2075 FORMAT(1X,25X,'IS THIS ASSUMPTION CORRECT?') WRITE(IOUNIT,'(A\)')' TYPE EITHER "YES" OR "NO", THEN PRESS R &ETURN. ===>' READ(IOUNIT,'(BN,A1)') YESNO IF((YESNO.EQ.'Y').OR.(YESNO.EQ.'y')) ID=0 IF((YESNO.EQ.'Y').OR.(YESNO.EQ.'y')) RETURN IF((YESNO.EQ.'N').OR.(YESNO.EQ.'n')) ID=1 IF((YESNO.EQ.'N').OR.(YESNO.EQ.'n')) RETURN 75 WRITE(IOUNIT,2065) CALL TIME ID=1 RETURN END