DBPRINT
Name
   
     DBPRINT
Purpose
   
     Procedure to print specified items from a list of database entries
Calling Sequence
   
     dbprint, list, [items, FORMS= , TEXTOUT= , /AdjustFormat, /NoHeader]  
Inputs
   
     list  - list of entry numbers to be printed, vector or scalar 
              
               if list = -1, then all entries will be printed.
              
               An error message is returned if any entry number is larger
              
               than the number of entries in the database
  
 OPTIONAL INPUT-OUTPUT:
    
     items - items to be printed, specified in any of the following ways:
              
               form 1  scalar string giving item(s) as list of names
                    
 
                       separated by commas
              
               form 2  string array giving list of item names
              
               form 3  string of form '$filename' giving name
                    
 
                       of text file containing items (one item per
                    
 
                       line)
              
               form 4  integer scalar giving single item number or
                    
   
                         integer vector list of item numbers
              
               form 5  Null string specifying interactive selection.   This
                    
 
                       is the default if 'items' is not supplied
              
               form 6  '*'     select all items, printout will be in
                    
 
                       table format. 
            
            If items was undefined or a null string on input, then
            
            on output it will contain the items interactively selected.
Optional Input Keywords
     
       /ADJUSTFORMAT -  If set, then the format length for string items will
              
               be adjusted to the maximum length for the entries to be printed.
              
               This option will slow down DBPRINT because it requires the 
              
               string items be extracted and their maximum length determined 
              
               prior to any printing.   However, it enables the display of
              
               string items without any truncation or wasted space. 
      
       FORMS - The number of printed lines per page. If forms is not 
              
               present, output assumed to be in PORTRAIT form, and 
              
               a heading and 47 lines are printed on each page, with
              
               a page eject between each page.  For LANDSCAPE form with
              
               headings on each page, and a page eject between pages, set 
              
               forms = 34.  For a heading only on the first page, and no
              
               page eject, set forms = 0.   This is the default for output
              
               to the terminal.
      
       TEXTOUT - Integer (0-7) or string used to determine output device (see 
              
               TEXTOPEN for more info).  If not present, the !TEXTOUT system 
              
               variable is used.
              
               textout=0       Nowhere
              
               textout=1       if a TTY then TERMINAL using /more option
                    
             
                                   otherwise standard (Unit=-1) output
              
               textout=2       if a TTY then TERMINAL without /more option
                    
             
                                   otherwise standard (Unit=-1) output
              
               textout=3       dbprint.prt (file)
              
               textout=4       laser.tmp
              
               textout=5       user must open file
              
               textout=7      same as 3 but text is appended to <program>.prt
              
               textout = filename   (default extension of .prt)
      
       /NOHEADER - If this keyword is set, then the column headers will not
              
               be printed
Example
     
       The following example shows how a multiple valued item DATAMAX can be 
      
       printed as separate columns.   In the WFPC2 target database, DATAMAX
      
       is an item with 4 values, one for each of the 4 chips
      
       IDL> dbopen,'wflog'
      
       IDL> dbprint,list,'entry,datamax(0),datamax(1),datamax(2),datamax(3)'
System Variables
     
       Output device controlled by non-standard system varaible !TEXTOUT, if 
      
       TEXTOUT keyword is not used.    
Notes
     
       Users may want to adjust the default lines_per_page value given at
      
       the beginning of the program for their own particular printer.
Procedure Calls
     
       db_info(), db_item_info(), dbtitle(), dbxval(), textopen, textclose
      
       zparcheck
History
     
       version 2  D. Lindler  Nov. 1987 (new db format)
      
       Test if user pressed 'Q' in response to /MORE W. Landsman  Sep 1991
      
       Apply STRTRIM to free form (table) output    W. Landsman   Dec 1992
      
       Test for string value of TEXTOUT         W. Landsman   Feb 1994
      
       William Thompson, GSFC, 3 November 1994
                    
 
                       Modified to allow ZDBASE to be a path string.
      
       W. Landsman, GSFC, July, 1997, Use CATCH to catch errors
      
       Removed STRTRIM in table format output to handle byte values April 1999
      
       Fixed occasional problem when /NOHEADER is supplied   Sep. 1999
      
       Only byteswap when necessary for improved performance  Feb. 2000
      
       Change loop index for table listing to type LONG  W. Landsman Aug 2000
      
       Entry vector can be any integer type   W. Landsman Aug. 2001
      
       Replace DATATYPE() with size(/TNAME)   W. Landsman  Nov. 2001
      
       No page eject for TEXTOUT =5           W. Landsman  Nov. 2001
      
       No initial page eject                  W. Landsman  Jan. 2002
      
       Added AdjustFormat keyword             W. Landsman  Sep. 2002
      
       Assume since V5.3 (STRJOIN)            W. Landsman Feb. 2004
      
       Fix display on GUI terminals           W. Landsman March 2006
      
       Remove VMS statements                  W. Landsman Sep 2006
      
       Remove EXECUTE statement               W. Landsman Jan 2007
      
       Fix display of multi element items     W. Landsman  Aug 2010
      
       Fix problem with linked databases      W. Landsman Dec 2011