1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
|
include 'flib.fi'
C*GRDATE -- get date and time as character string (MS-DOS)
C+
SUBROUTINE GRDATE(CDATE, LDATE)
include 'flib.fd'
CHARACTER CDATE*(17)
INTEGER LDATE
C
C Return the current date and time, in format 'dd-Mmm-yyyy hh:mm'.
C To receive the whole string, the CDATE should be declared
C CHARACTER*17.
C
C Arguments:
C CDATE : receives date and time, truncated or extended with
C blanks as necessary.
C L : receives the number of characters in STRING, excluding
C trailing blanks. This will always be 17, unless the length
C of the string supplied is shorter.
C--
C 1989-Mar-17 - [AFT]
C 12/1993 C. T. Dum MS Power Station F32 Version
C-----------------------------------------------------------------------
CHARACTER CMON(12)*3
INTEGER*2 IHR, IMIN, ISEC, I100TH
INTEGER*2 IYR, IMON, IDAY
DATA CMON/'Jan','Feb','Mar','Apr','May','Jun',
: 'Jul','Aug','Sep','Oct','Nov','Dec'/
C---
CALL GETTIM(IHR, IMIN, ISEC, I100TH)
CALL GETDAT(IYR, IMON, IDAY)
WRITE(CDATE,111) IDAY,CMON(IMON),IYR,IHR,IMIN
111 FORMAT(I2,'-',A3,'-',I4,' ',I2,':',I2)
LDATE=17
RETURN
END
C*GRFLUN -- free a Fortran logical unit number (MS-DOS)
C+
SUBROUTINE GRFLUN(LUN)
INTEGER LUN
C
C Free a Fortran logical unit number allocated by GRGLUN. [This version
C is pretty stupid; GRGLUN allocates units starting at 81, and GRFLUN
C does not free units.]
C
C Arguments:
C LUN : the logical unit number to free.
C--
C 25-Nov-1988
C-----------------------------------------------------------------------
RETURN
END
C*GRGCOM -- read with prompt from user's terminal (MS-DOS)
C+
INTEGER FUNCTION GRGCOM(CREAD, CPROM, LREAD)
CHARACTER CREAD*(*), CPROM*(*)
INTEGER LREAD
C
C Issue prompt and read a line from the user's terminal; in VMS,
C this is equivalent to LIB$GET_COMMAND.
C
C Arguments:
C CREAD : (output) receives the string read from the terminal.
C CPROM : (input) prompt string.
C LREAD : (output) length of CREAD.
C
C Returns:
C GRGCOM : 1 if successful, 0 if an error occurs (e.g., end of file).
C--
C 1989-Mar-29
ctd 3/95:len_trim (MS Fortran)
C-----------------------------------------------------------------------
INTEGER IER
C---
11 FORMAT(A)
C---
GRGCOM = 0
LREAD = 0
WRITE (*, 101, IOSTAT=IER) CPROM
101 FORMAT(1X,A,\)
IF (IER.EQ.0) READ (*, 11, IOSTAT=IER) CREAD
IF (IER.EQ.0) GRGCOM = 1
LREAD = LEN_TRIM(CREAD)
RETURN
END
C*GRGENV -- get value of PGPLOT environment parameter (MS-DOS)
C+
SUBROUTINE GRGENV(CNAME, CVALUE, LVALUE)
include 'flib.fd'
CHARACTER CNAME*(*), CVALUE*(*)
INTEGER LVALUE
C
C Return the value of a PGPLOT environment parameter.
C
C Arguments:
C CNAME : (input) the name of the parameter to evaluate.
C CVALUE : receives the value of the parameter, truncated or extended
C with blanks as necessary. If the parameter is undefined,
C a blank string is returned.
C LVALUE : receives the number of characters in CVALUE, excluding
C trailing blanks. If the parameter is undefined, zero is
C returned.
C--
C 1990-Mar-19 - [AFT]
C 12/93;3/95 CTD F32
C-----------------------------------------------------------------------
C
CHARACTER*80 CTMP,CTEMP
INTEGER LTMP
CTMP = 'PGPLOT_'//CNAME
LTMP = INDEX(CTMP,' ')
LVALUE=GETENVQQ(CTMP(:LTMP-1),CTEMP)
IF(LVALUE.NE.0)THEN
CVALUE = CTEMP(:LVALUE)
ELSE
CVALUE = ' '
ENDIF
RETURN
END
C*GRGLUN -- get a Fortran logical unit number (MS-DOS)
C+
SUBROUTINE GRGLUN(LUN)
INTEGER LUN
C
C Get an unused Fortran logical unit number.
C Returns a Logical Unit Number that is not currently opened.
C After GRGLUN is called, the unit should be opened to reserve
C the unit number for future calls. Once a unit is closed, it
C becomes free and another call to GRGLUN could return the same
C number. Also, GRGLUN will not return a number in the range 1-9
C as older software will often use these units without warning.
C
C Arguments:
C LUN : receives the logical unit number, or -1 on error.
C--
C 12-Feb-1989 [AFT/TJP].
C-----------------------------------------------------------------------
INTEGER I
LOGICAL QOPEN
C---
DO 10 I=99,10,-1
INQUIRE (UNIT=I, OPENED=QOPEN)
IF (.NOT.QOPEN) THEN
LUN = I
RETURN
END IF
10 CONTINUE
CALL GRWARN('GRGLUN: out of units.')
LUN = -1
RETURN
END
C*GRLGTR -- translate logical name (MS-DOS)
C+
SUBROUTINE GRLGTR (CNAME)
CHARACTER CNAME*(*)
C
C Recursive translation of a logical name.
C Up to 20 levels of equivalencing can be handled.
C This is used in the parsing of device specifications in the
C VMS implementation of PGPLOT. In other implementations, it may
C be replaced by a null routine.
C
C Argument:
C CNAME (input/output): initially contains the name to be
C inspected. If an equivalence is found it will be replaced
C with the new name. If not, the old name will be left there. The
C escape sequence at the beginning of process-permanent file
C names is deleted and the '_' character at the beginning of
C device names is left in place.
C--
C 18-Feb-1988
C-----------------------------------------------------------------------
RETURN
END
C*GROPTX -- open output text file [MS-DOS]
C+
INTEGER FUNCTION GROPTX (UNIT, NAME, DEFNAM, MODE)
INTEGER UNIT,MODE
CHARACTER*(*) NAME,DEFNAM
C
C Input:
C UNIT : Fortran unit number to use
C NAME : name of file to create
C DEFNAM : default file name (used to fill in missing fields for VMS)
C
C Returns:
C 0 => success; any other value => error.
C-----------------------------------------------------------------------
INTEGER IER
OPEN (UNIT=UNIT, FILE=NAME, STATUS='UNKNOWN', IOSTAT=IER)
GROPTX = IER
RETURN
C-----------------------------------------------------------------------
END
C*GRTRML -- get name of user's terminal (MS-DOS)
C+
SUBROUTINE GRTRML(CTERM, LTERM)
CHARACTER CTERM*(*)
INTEGER LTERM
C
C Return the device name of the user's terminal, if any.
C
C Arguments:
C CTERM : receives the terminal name, truncated or extended with
C blanks as necessary.
C LTERM : receives the number of characters in CTERM, excluding
C trailing blanks. If there is not attached terminal,
C zero is returned.
C--
C 1989-Nov-08
C-----------------------------------------------------------------------
CTERM = 'CON'
LTERM = 3
RETURN
END
C*GRTTER -- test whether device is user's terminal (MS-DOS)
C+
SUBROUTINE GRTTER(CDEV, QSAME)
CHARACTER CDEV*(*)
LOGICAL QSAME
C
C Return a logical flag indicating whether the supplied device
C name is a name for the user's controlling terminal or not.
C (Some PGPLOT programs wish to take special action if they are
C plotting on the user's terminal.)
C
C Arguments:
C CDEV : (input) the device name to be tested.
C QSAME : (output) .TRUE. is CDEV contains a valid name for the
C user's terminal; .FALSE. otherwise.
C--
C 18-Feb-1988
C-----------------------------------------------------------------------
CHARACTER CTERM*64
INTEGER LTERM
C
CALL GRTRML(CTERM, LTERM)
QSAME = (CDEV.EQ.CTERM(:LTERM))
RETURN
END
C*GRUSER -- get user name (MS-DOS)
C+
SUBROUTINE GRUSER(CUSER, LUSER)
CHARACTER CUSER*(*)
INTEGER LUSER
C
C Return the name of the user running the program.
C
C Arguments:
C CUSER : receives user name, truncated or extended with
C blanks as necessary.
C LUSER : receives the number of characters in VALUE, excluding
C trailing blanks.
C--
C 1989-Mar-19 - [AFT]
C-----------------------------------------------------------------------
C
CALL GRGENV('USER', CUSER, LUSER)
RETURN
END
|