C+ C Title: JASK C Author: T. R. Wyant C Date: 09-Sep-1987 C Modified: C Remarks: C INTEGER*4 function JASK returns an INTEGER*4 value C within the requested range. C- FUNCTION JASK (LGTH, TXT, LO, HI, DEF, 1 LUNO, LUNI, PNLEN, PNAM) INTEGER*4 JASK ! Ask for I*4 value. INTEGER*2 LGTH ! Length of prompt. LOGICAL*1 TXT (LGTH) ! Prompt. INTEGER*4 LO ! Lo range. INTEGER*4 HI ! Hi range. INTEGER*4 DEF ! Default. INTEGER*2 LUNO ! Output LUN. INTEGER*2 LUNI ! Input LUN. INTEGER*2 PNLEN ! Length of program name. LOGICAL*1 PNAM (PNLEN) ! Program name. INTEGER*4 VALUES (3) ! Argument values. INTEGER*2 DPS (3) ! Argument decimals. INTEGER*2 ITER8 ! Iteration. INTEGER*4 RESULT ! Result. VALUES (1) = LO VALUES (2) = HI VALUES (3) = DEF DO 1290 ITER8 = 1, 3 DPS (ITER8) = 1 IF (VALUES (ITER8) .LT. 0) DPS (ITER8) = 2 RESULT = 10 1230 IF (RESULT .LE. ABS(VALUES(ITER8))) THEN RESULT = RESULT * 10 DPS (ITER8) = DPS (ITER8) + 1 GO TO 1230 END IF 1290 CONTINUE 2000 WRITE (LUNO, 2010) TXT, VALUES 2010 FORMAT ('$', A1, ' [I ', I, ':', I, 1 ' D:', I, ']: ') READ (LUNI, 2020, END=9000, ERR=9100) ITER8, RESULT 2020 FORMAT (Q, I20) IF (ITER8 .LE. 0) THEN RESULT = DEF ELSE IF (RESULT .LT. LO) GO TO 9100 IF (RESULT .GT. HI) GO TO 9100 END IF GO TO 9900 9000 CALL EXIT 9100 WRITE (LUNO, 9110) PNAM, 'Input invalid' 9110 FORMAT (X, A1, ' -- Error -- ', A, '.') GO TO 2000 9900 JASK = RESULT RETURN END