;+
; Project     : SOHO - CDS     
;                   
; Name        : SHOW_EVARS
;               
; Purpose     : List current definitions of CDS environment variables.
;               
; Explanation : Collects and lists the definitions of the various environment
;               variables used by CDS.
;               
; Use         : IDL> show_evars [,/hard]
;    
; Inputs      : None
;               
; Opt. Inputs : None
;               
; Outputs     : None
;               
; Opt. Outputs: None
;               
; Keywords    : HARDCOPY  - produces a hardcopy listing.
;               QUIET     - no screen output
;               KEEP      - keeps the disk file of output (cds_evars_list) in
;                           current directory.
;
; Calls       : None
;
; Common      : None
;               
; Restrictions: None
;               
; Side effects: None
;               
; Category    : Help
;               
; Prev. Hist. : None
;
; Written     : C D Pike, RAL, 3-Nov-95
;               
; Modified    : Added CDS_CP_STMFILES(_W).     CDP, 21-Nov-95
;               Added CDS_CP_UPDATE and _ENG.  CDP, 8-Dec-95
;               Added CDS_SUMMARY_DATA         CDP, 25-Jun-96
;               Added CDS_ENG_DEMO and use GET_ENVIRON 
;                                              CDP, 09-Aug-96
;
; Version     : Version 5, 09-Aug-96
;-            
pro show_evars, hardcopy=hardcopy, quiet=quiet, keep=keep


;
;  to terminal?
;
if keyword_set(quiet) then to_screen = 0 else to_screen = 1
if to_screen then openw, screen, filepath(/terminal), /more, /get_lun


;
;  create hardcopy filename
;
vms=(!version.os eq 'VMS')
hfile = 'cds_evars_list'



;
;  open screen and hardcopy files if needed
;
if to_screen then openw,screen, filepath(/terminal), /more, /get_lun
openw,lun,hfile,/get_lun,error=err

;
;  if error opening file in current directory then try home directory
;
if err ne 0 then begin
   if vms then home='sys$login' else home=getenv('HOME')
   hfile=concat_dir(home,hfile)
   openw,lun,hfile,/get_lun,error=err
   if err ne 0 then begin
      bell
      print,'Cannot open file in current or HOME directory'
      return
   endif
endif  

;
;  current list of evars (from various login files)
;
evars = ['CDS_DATA',$
'CDS_LRG_DATA',$
'SOHO_PUB_DATA',$
'ANCIL_DATA',$
'SOHO_EAP',$
'SYNOP_DATA',$
'CDS_SUMMARY_DATA',$
'CDS_ATOMIC',$
'CDS_CP_CVTFILES',$
'CDS_CP_LTBFILES',$
'CDS_CP_MISC',$
'CDS_CP_TTCFILES',$
'CDS_CP_STMFILES',$
'CDS_CP_UPDATE',$
'CDS_CP_ENG',$
'CDS_ENG_DATA',$
'CDS_ENG_DEMO',$
'CDS_INFO',$
'CDS_PLAN_TECH',$
'CDS_NIS',$
'CDS_GIS',$
'CDS_VDS_MODEL',$
'CDS_GDS_MODEL',$
'TIME_CONV',$
'ZDBASE_CDS',$
'CDS_IAP',$
'CDS_SS_DERE',$
'CDS_GIS_RAW',$
'CDS_MEM_DUMP',$
'CDS_INFO_NOTE',$
'CDS_STM_DUMP',$
'CDS_TM_LOG',$
'CDS_VDS_CAL_INT',$
'CDS_CP_CVTFILES_W',$
'CDS_CP_LTBFILES_W',$
'CDS_CP_MISC_W',$
'CDS_CP_TTCFILES_W',$
'CDS_CP_STMFILES_W',$
'CDS_CP_UPDATE_W',$
'CDS_CP_ENG_W',$
'CDS_ENG_DATA_W',$
'CDS_GIS_RAW_W',$
'CDS_IAP_W',$
'CDS_INFO_W',$
'CDS_MEM_DUMP_W',$
'CDS_STM_DUMP_W',$
'CDS_TM_LOG_W',$
'ZDBASE_USER',$
'CDS_OPERATOR',$
'PSLASER',$
'PSCOLOR',$
'CDS_TM_DATA',$
'CDS_CAL_FITS',$
'CDS_FITS_DATA',$
'CDS_FITS_QLI',$
'CDS_EXTERNAL',$
'CDS_FITS_DATA_W',$
'CDS_FITS_QLI_W']

;
;  sort them
;
n = sort(evars)
evars = evars(n)

;
;  and output
;
for i=0,n_elements(evars)-1 do begin
   g = get_environ(evars(i))
   g = str2arr(g,':')
   if to_screen then begin
      printf,screen,strpad(evars(i),18,/after),' ---> ',g(0)
      if n_elements(g) gt 1 then begin
         for j=1,n_elements(g)-1 do begin
            printf,screen,'                        ',g(j)
         endfor
      endif
   endif 
   printf,lun,strpad(evars(i),18,/after),' ---> ',g(0)
   if n_elements(g) gt 1 then begin
      for j=1,n_elements(g)-1 do begin
         printf,lun,'                        ',g(j)
      endfor
   endif

endfor


;
;  print hard copy
;
free_lun,lun
if to_screen then free_lun,screen

if keyword_set(hardcopy) then begin
   if vms then com = 'print '+hfile else com = 'lpr '+hfile
   spawn,com
   bell                        
   print,'Hard copy sent to printer'
endif

;
;  wanna keep the output?
;
if (not keyword_set(keep)) then begin
   status = delete_file(hfile,/noconfirm)
endif

end
