FORPRINT
Name
FORPRINT
Purpose
Print a set of vectors by looping over each index value.
Explanation
If W and F are equal length vectors, then the statement
IDL> forprint, w, f
is equivalent to
IDL> for i = 0L, N_elements(w)-1 do print,w[i],f[i]
Calling Sequence
forprint, v1,[ v2, v3, v4,....v18, FORMAT = , TEXTOUT = ,STARTLINE =,
SUBSET=, NUMLINE =, /SILENT, COMMENT= ]
Inputs
V1,V2,...V18 - Arbitary IDL vectors. If the vectors are not of
equal length then the number of rows printed will be equal
to the length of the smallest vector. Up to 18 vectors
can be supplied.
Optional Keyword Inputs
TEXTOUT - Controls print output device, defaults to !TEXTOUT
textout=1 TERMINAL using /more option if available
textout=2 TERMINAL without /more option
textout=3 file 'forprint.prt'
textout=4 file 'laser.tmp'
textout=5 user must open file
textout = filename (default extension of .prt)
textout=7 Append to <program>.prt file if it exists
COMMENT - String scalar or vector to write to the first line of output
file if TEXTOUT > 2. By default, FORPRINT will write a time
stamp on the first line. Use /NOCOMMENT if you don't want
FORPRINT to write anything in the output file. If COMMENT
is a vector then one line will be written for each element.
FORMAT - Scalar format string as in the PRINT procedure. The use
of outer parenthesis is optional. Ex. - format="(F10.3,I7)"
This program will automatically remove a leading "$" from
incoming format statements. Ex. - "$(I4)" would become "(I4)".
If omitted, then IDL default formats are used.
/NOCOMMENT - Set this keyword if you don't want any comment line
line written as the first line in a harcopy output file.
/SILENT - Normally, with a hardcopy output (TEXTOUT > 2), FORPRINT will
print an informational message. If the SILENT keyword
is set and non-zero, then this message is suppressed.
SUBSET - Index vector specifying elements to print. No error checking
is done to make sure the indicies are valid. The statement
IDL> forprint,x,y,z,subset=s
is equivalent to
IDL> for i=0,n-1 do print, x[s[i]], y[s[i]], z[s[i]]
STARTLINE - Integer scalar specifying the first line in the arrays
to print. Default is STARTLINE = 1, i.e. start at the
beginning of the arrays. (If a SUBSET keyword is supplied
then STARTLINE refers to first element in the subscript vector.)
/STDOUT - If set, the force standard output unit (=-1) if not writing
to a file. This allows the FORPINT output to be captured
in a journal file. Only needed for non-GUI terminals
WIDTH - Line width for wrapping, passed onto OPENW when using hardcopy.
Outputs
None
System Variables
If keyword TEXTOUT is not used, the default is the nonstandard
keyword !TEXTOUT. If you want to use FORPRINT to write more than
once to the same file, or use a different file name then set
TEXTOUT=5, and open and close then file yourself (see documentation
of TEXTOPEN for more info).
One way to add the non-standard system variables !TEXTOUT and !TEXTUNIT
is to use the procedure ASTROLIB
Example
Suppose W,F, and E are the wavelength, flux, and epsilon vectors for
a spectrum. Print these values to a file 'output.dat' in a nice
format.
IDL> fmt = '(F10.3,1PE12.2,I7)'
IDL> forprint, F = fmt, w, f, e, TEXT = 'output.dat'
Procedures Called
TEXTOPEN, TEXTCLOSE
Revision History
Written W. Landsman April, 1989
Keywords textout and format added, J. Isensee, July, 1990
Made use of parenthesis in FORMAT optional W. Landsman May 1992
Added STARTLINE keyword W. Landsman November 1992
Set up so can handle 18 input vectors. J. Isensee, HSTX Corp. July 1993
Handle string value of TEXTOUT W. Landsman, HSTX September 1993
Added NUMLINE keyword W. Landsman, HSTX February 1996
Added SILENT keyword W. Landsman, RSTX, April 1998
Much faster printing to a file W. Landsman, RITSS, August, 2001
Use SIZE(/TNAME) instead of DATATYPE() W. Landsman SSAI October 2001
Fix skipping of first line bug introduced Aug 2001 W. Landsman Nov2001
Added /NOCOMMENT keyword, the SILENT keyword now controls only
the display of informational messages. W. Landsman June 2002
Skip PRINTF if IDL in demo mode W. Landsman October 2004
Assume since V5.4 use BREAK instead of GOTO W. Landsman April 2006
Add SUBSET keyword, warning if different size vectors passed.
P.Broos,W.Landsman. Aug 2006
Change keyword_set() to N_elements W. Landsman Oct 2006
Added /STDOUT keyword W. Landsman Oct 2006
Fix error message for undefined variable W. Landsman April 2007
Added WIDTH keyword J. Bailin Nov 2010
Allow multiple (vector) comment lines W. Landsman April 2011