This page was created by the IDL library routine
mk_html_help. For more information on
this routine, refer to the IDL Online Help Navigator
or type:
? mk_html_help
at the IDL command line prompt.
Last modified: Tue Aug 18 15:38:05 2015.
NAME: f2idl PURPOSE: (one line) write idl wrapper DESCRIPTION: write idl wrapper_w.pro from fortran file CATEGORY: util CALLING SEQUENCE: f2idl, forfunc, fileroot = fileroot INPUTS: forfunc - name in original fortran code OPTIONAL INPUT PARAMETERS: fileroot - root filename s.t. forfile = .f - file with original fortran code cfile = _c.f - file with f2c code docfile = .f or _d.f - file with extra documentation sofile - name of the shared object (so) file KEYWORD INPUT PARAMETERS: none KEYWORD OUTPUT PARAMETERS: none OUTPUTS: none COMMON BLOCKS: None SIDE EFFECTS: Writes idlfile wrapper idlfile = _w.pro RESTRICTIONS: (1) FORFILE - FORTRAN FILE Must contain lines starting ' FUNCTION* *'+forfunc+'*' or ' SUBROUTINE* *'+forfunc+'*' or (2) CFILE normally the output of f2c This is parsed to get the types of the parameters (3) DOCFILE Has legal FORTRAN comment lines of the form C STARTDOC C : C C ENDDOC Catagories are 'PURPOSE', 'CATAGORY', 'CALLING SEQUENCE',$ 'INPUTS', 'OPTIONAL INPUTS', 'KEYWORD PARAMETERS', $ 'OUTPUTS', 'OPTIONAL OUTPUTS', 'COMMON BLOCKS', $ 'SIDE EFFECTS', 'RESTRICTIONS', 'PROCEDURE', $ 'EXAMPLE', 'MODIFICATION HISTORY' The OUTPUTS doc lines are used to preset variables to be the proper format (type, dimension) before they are passed to the fortran routine. For example, in init_zm.f C ------------------- C STARTDOC INIT_ZM C PURPOSE: Return initial altitudes C CALLING SEQUENCE: init_zm, zm, km, delz0, fac1 C INPUTS: C km - number of layers C DELZ0 - delta z of the lowest layer (m) C FAC1 - factor by which to increase successive layers C OUTPUTS: zm - altitude [m, km array] C MODIFICATION HISTORY: Written 2007 Feb 7, LAY C ENDDOC INIT_ZM C ------------------- is used to make the following lines in init_zm.pro ;------------------------- ; setup the output variables that will be passed to the fortran ; routine ZM = make_array(KM,type= 5) PROCEDURE: From the fortran file, get: - whether this is a function or procedue (subroutine) - names and order of all arguments - rank (eg scaler, 1-D array, 2-D matrix) of all arguments - string with dimensions of all arguments From the C file, get: - return type, if a function - type (integer, doublereal) of all arguments MODIFICATION HISTORY: Written 2007 Feb 7, LAY 2008 Nov 9 LAY. - changed search in forfunc to allow more than 6 spaces before FUNCTION or SUBROUTINE 2007 Aug 20 LAY. - expanded documentation - changed outer loop index from idim to idiml to avoid name conflict in the dimension and rank loop - change how we split variables in the fortran dimension statements to deal with mutli-dimensioned arrays (with commas inside the parantheses) - in idl output, use array_equal rather than eq to check proper dimensions of 2-d arrays 2007 Aug 28 LAY. - correct return types for functions 2007 Aug 31 LAY - change integer type from 2 (integer) to 3 (longword integer)
(See ../fileio/f2idl.pro)
NAME: f2idl_b PURPOSE: (one line) write idl wrapper DESCRIPTION: write idl wrapper_w.pro from fortran file CATEGORY: util CALLING SEQUENCE: f2idl_b, forfunc, fileroot = fileroot INPUTS: forfunc - name in original fortran code OPTIONAL INPUT PARAMETERS: fileroot - root filename s.t. forfile = .f - file with original fortran code cfile = _c.f - file with f2c code docfile = .f or _d.f - file with extra documentation KEYWORD INPUT PARAMETERS: none KEYWORD OUTPUT PARAMETERS: none OUTPUTS: none COMMON BLOCKS: None SIDE EFFECTS: Writes idlfile wrapper idlfile = _w.pro RESTRICTIONS: (1) FORFILE - FORTRAN FILE (a) Must contain lines starting ' FUNCTION* *'+forfunc+'*' or ' SUBROUTINE* *'+forfunc+'*' or (2) CFILE (a) if forfile = PROCEDURE: From the fortran file, get: - whether this is a function or procedue (subroutine) - names and order of all arguments - rank (eg scaler, 1-D array, 2-D matrix) of all arguments - string with dimensions of all arguments From the C file, get: - return type, if a function - type (integer, doublereal) of all arguments MODIFICATION HISTORY: Written 2007 Feb 7, LAY 2008 Nov 9 LAY. - changed search in forfunc to allow more than 6 spaces before FUNCTION or SUBROUTINE 2007 Aug 20 LAY. - expanded documentation - changed outer loop index from idim to idiml to avoid name conflict in the dimension and rank loop 2007 Aug 28 LAY. - correct return types for functions 2007 Aug 31 LAY - change integer type from 2 (integer) to 3 (longword integer) 2007 Sep 1 LAY - repair printing of asignment of non-parameter dimensions for multi-dimesional arguments 2007 Sep 2 LAY - repair printing of asignment of non-parameter dimensions for multi-dimesional arguments
(See ../fileio/f2idl_b.pro)
NAME:
f2idl_mkmake
PURPOSE: (one line)
write Makefile for Fortran to IDL (f2idl) calls
DESCRIPTION:
write Makefile for Fortran to IDL (f2idl) calls
CATEGORY:
fileio
CALLING SEQUENCE:
f2idl_mkmake, sofile, forfiles=forfiles
INPUTS:
OPTIONAL INPUT PARAMETERS:
sofile - name of the shared object (so) that the Makefile will create
KEYWORD INPUT PARAMETERS:
forfiles = fortran files with f2idl documentation
default : *.f in current directory
ccbin - binary for c compiler (default cc)
KEYWORD OUTPUT PARAMETERS:
OUTPUTS:
COMMON BLOCKS:
SIDE EFFECTS:
Writes Makefile
RESTRICTIONS:
Filenames cannot be *_b.f or *_f.f
Filenames ending *_d.f are assumed to contain only documentation
PROCEDURE:
MODIFICATION HISTORY:
Written 2007 Feb 7, LAY
2007 Aug 20 LAY.
- expanded documentation
- changed outer loop index from idim to idiml to avoid
name conflict in the dimension and rank loop
- change how we split variables in the fortran dimension
statements to deal with mutli-dimensioned arrays (with
commas inside the parantheses)
- in idl output, use array_equal rather than eq to check proper
dimensions of 2-d arrays
2007 Aug 28 LAY.
- correct return types for functions
2007 Aug 31 LAY
- change integer type from 2 (integer) to 3 (longword integer)
(See ../fileio/f2idl_mkmake.pro)
NAME: isfile PURPOSE: Check if a file exists DESCRIPTION: CATEGORY: fileio CALLING SEQUENCE: exists = IsFile(fn) INPUTS: fn: the filename OPTIONAL INPUT PARAMETERS: KEYWORD INPUT PARAMETERS: OUTPUTS: exists (boolean): true if file exists KEYWORD OUTPUT PARAMETERS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: call findfile MODIFICATION HISTORY: 2002/05/30 - Initial version written, Leslie Young SwRI 2011/10/20 - Protect against fn=' '
(See ../fileio/isfile.pro)
NAME: next_lun PURPOSE: find next available lun DESCRIPTION: find next available lun, useful for finding which code that fails to close opened luns. CATEGORY: fileio CALLING SEQUENCE: lun = next_lun() INPUTS: OPTIONAL INPUT PARAMETERS: KEYWORD INPUT PARAMETERS: OUTPUTS: Next available lun KEYWORD OUTPUT PARAMETERS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: call get_lun, free_lun MODIFICATION HISTORY: 2002/05/30 - Initial version written, Leslie Young SwRI
(See ../fileio/next_lun.pro)
NAME:
nthline
PURPOSE: (one line)
Return the nth line in a file
DESCRIPTION:
Return the nth line in a file, using a lookup file called
filename.lookup .
CATEGORY:
File IO
CALLING SEQUENCE:
line = nthline(filename, linenum)
INPUTS:
filename - file from which to get lines
linenum - the line number to return (long or array of long)
OPTIONAL INPUT PARAMETERS:
None
KEYWORD INPUT PARAMETERS:
KEYWORD OUTPUT PARAMETERS:
OUTPUTS:
If input is a scalar, then output is a single string.
If input is a vector, then output is an array of strings.
If a line is not found (linenum out of range), returned value is ''.
COMMON BLOCKS:
None
SIDE EFFECTS:
None
PROCEDURES:
spawned call to sed
RESTRICTIONS:
Output file is different based on big vs. little-endian system.
For consistency, it is recommended that all files be written
big-endian. x86 Linux is this way, but OS X is not.
EXAMPLE:
print, nthline('foo',[430L, 1000L])
MODIFICATION HISTORY:
Written 23 Apr 2006 Leslie Young SwRI
Modified 26 Apr 2006 Henry Throop SwRI. Creates lookup file if it
does not exist. Improved other error handling.
2007 May 4 LAY swap if little endian
(See ../fileio/nthline.pro)
NAME: nthline PURPOSE: (one line) Return the nth line in a file DESCRIPTION: Return the nth line in a file CATEGORY: File IO CALLING SEQUENCE: line = nthline(filename, linenum) INPUTS: filename - file from which to get lines linenum - the line number to return (long or array of long) OPTIONAL INPUT PARAMETERS: None KEYWORD INPUT PARAMETERS: /VERBOSE -- If set, print diagnostics to screen. KEYWORD OUTPUT PARAMETERS: NSTARS -- Returns the number of successfully-retrieved lines. OUTPUTS: If input is a scalar, then output is a single string. If input is a vector, then output is an array of strings. If a line is not found (linenum out of range), returned value is ''. COMMON BLOCKS: None SIDE EFFECTS: None PROCEDURES: repeated calls to readf RESTRICTIONS: EXAMPLE: print, nthline(102,[430L, 1000L]) MODIFICATION HISTORY: Written 2006 Apr 23 Leslie Young SwRI
(See ../fileio/nthline_v1.pro)
NAME: nthline PURPOSE: (one line) Return the nth line in a file DESCRIPTION: Return the nth line in a file CATEGORY: File IO CALLING SEQUENCE: line = nthline(filename, linenum) INPUTS: filename - file from which to get lines linenum - the line number to return (long or array of long) OPTIONAL INPUT PARAMETERS: None KEYWORD INPUT PARAMETERS: /VERBOSE -- If set, print diagnostics to screen. KEYWORD OUTPUT PARAMETERS: NSTARS -- Returns the number of successfully-retrieved lines. OUTPUTS: If input is a scalar, then output is a single string. If input is a vector, then output is an array of strings. If a line is not found (linenum out of range), returned value is ''. COMMON BLOCKS: None SIDE EFFECTS: None PROCEDURES: spawned call to sed RESTRICTIONS: EXAMPLE: print, nthline(102,[430L, 1000L]) MODIFICATION HISTORY: Written 2006 Apr 23 Leslie Young SwRI
(See ../fileio/nthline_v2.pro)
NAME: nthline_lookup PURPOSE: (one line) make a lookup table for use by nthline DESCRIPTION: make a lookup table for use by nthline CATEGORY: File IO CALLING SEQUENCE: nthline_lookup, filename, lookup=lookup, recalc=recalc INPUTS: filename - file for which to make the lookup OPTIONAL INPUT PARAMETERS: KEYWORD INPUT PARAMETERS: lookup - name of lookup table (otherwise filename.lookup) recalc - if set, recalculate and save lookup table, even if file exists KEYWORD OUTPUT PARAMETERS: OUTPUTS: COMMON BLOCKS: None SIDE EFFECTS: Creates lookup table, a file of 2 x n longs startbyte nbyte PROCEDURES: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Written 2006 Apr 23 Leslie Young SwRI
(See ../fileio/nthline_lookup.pro)
NAME:
TMPPRO
PURPOSE:
Get the filename and path of a temporary .pro file.
CATEGORY:
IO.
CALLING SEQUENCE:
Result = TMPPRO( [Prefix, Ndigits] )
OPTIONAL INPUTS:
Prefix: The prefix of the filename, ('tmp'=default).
Ndigits: The number of digits to append to the Prefix, (3=default).
OPTIONAL INPUT KEYWORD PARAMETERS:
SEED: The seed used by the random number generator to determine
the number to append to the Prefix.
OUTPUTS:
The file specification returned is:
tmp_dir+Prefix+NNN+Suffix
where NNN is a random LONG integer with number of digits = Ndigits.
This routine also searches the tmp_dir for this filename. If a
duplicate filename is found, then another random number is chosen.
tmp_dir is the path to the /tmp directory
where is the directory containing tmppro
EXAMPLE:
Let's create a temp filename myNNNN.pro:
tmp_file = TMPFILE('my',4)
MODIFICATION HISTORY:
30-DEC-2005 Modified from tmpfile by Leslie Young, SwRI
MODIFICATION HISTORY OF TMPFILE
Written by: Han Wen, November 1994.
08-FEB-1995 Fixed minor bug, random integer -> random LONG integer
12-JUN-1995 Check existence of TMP directory and create it if no
such directory exists.
01-JUL-1995 Use DIR_EXIST to check existence of TMP directory.
07-AUG-1996 Use TMPPATH (hacked version of FILEPATH) to determine
TMP directory.
(See ../fileio/tmppro.pro)