00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012       subroutine psmile_print_field_info (field_id)
00013 
00014 
00015 
00016       use PRISM_constants
00017       use PSMILe, dummy_interface => PSMILe_Print_field_info
00018 
00019       implicit none
00020 
00021 
00022 
00023       integer,Intent(In)  :: field_id
00024 
00025 
00026 
00027 
00028 
00029      character(len=22), save :: name_status (PSMILe_Status_free: 
00030                                              PSMILe_Status_commited)
00031      character(len=22), save :: name_type (PRISM_Character: 
00032                                            PRISM_Double_Quad)
00033 
00034 
00035 
00036      data name_status /'PSMILe_Status_free', 'PSMILe_status_defined', &
00037                        'PSMILe_Status_commited'/
00038 
00039      data name_type / 'PRISM_Character'       , 'PRISM_Integer',        &
00040                       'PRISM_Logical'         , 'PRISM_Real',           &
00041                       'PRISM_Double_Precision', 'PRISM_Complex',        &
00042                       'PRISM_Double_Complex'  , 'PRISM_Quad_Precision', &
00043                       'PRISM_Double_Quad'/
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065    Character(len=len_cvs_string), save :: mycvs = 
00066        '$Id: psmile_print_field_info.F90 2755 2010-11-19 15:19:52Z hanke $'
00067 
00068 
00069 
00070       write (*, 9000) trim(ch_id), field_id
00071 
00072 
00073 
00074       if (field_id > Number_of_Fields_allocated .or. &
00075           field_id < 1) then
00076 
00077          write (*, 9010) 'Is an invalid field id.'
00078 
00079          call psmile_flushstd ()
00080          return
00081       endif
00082 
00083 
00084 
00085       if (Fields(field_id)%status == PSMILe_status_free) then
00086          write (*, 9010) 'Is currently free.'
00087 
00088          call psmile_flushstd ()
00089          return
00090       endif
00091 
00092       if (Fields(field_id)%status >= PSMILe_Status_free .and. &
00093           Fields(field_id)%status <= PSMILe_status_commited) then
00094           write (*, 9020) 'status             ', Fields(field_id)%status, &
00095                           name_status (Fields(field_id)%status)
00096       else
00097           write (*, 9020) 'status             ', Fields(field_id)%status
00098       endif
00099 
00100 
00101 
00102       write (*, 9020) 'global var_id      ', Fields(field_id)%global_var_id
00103 
00104 
00105 
00106       if (Fields(field_id)%dataType >= PRISM_Character .and. &
00107           Fields(field_id)%dataType <= PRISM_Double_Quad) then
00108           write (*, 9020) 'data type          ', Fields(field_id)%dataType, &
00109                           name_type (Fields(field_id)%dataType)
00110       else
00111           write (*, 9020) 'unknown data type  ', Fields(field_id)%status
00112       endif
00113 
00114 
00115 
00116       write (*, 9020) 'grid_id                ', Methods(Fields(field_id)%method_id)%grid_id
00117       write (*, 9020) 'comp_id                ', Fields(field_id)%comp_id
00118       write (*, 9020) 'method_id              ', Fields(field_id)%method_id
00119       write (*, 9020) 'mask_id                ', Fields(field_id)%mask_id
00120 
00121       write (*, 9020) 'size                   ', Fields(field_id)%size
00122 
00123       write (*, 9030) 'local name             ', trim(adjustl(Fields(field_id)%local_name))
00124 
00125 
00126 
00127       write (*, 9010)
00128 
00129       call psmile_flushstd ()
00130 
00131 
00132 
00133 
00134 
00135 9000  format (/1x, a, ': Info on field handle', i3, ':', &
00136               /1x, 40('-'))
00137 9010  format (1x, a)
00138 9020  format (1x, a30, ' = ', i7, : 1x, a)
00139 9030  format (1x, a30, 3x,    a)
00140 
00141       end subroutine PSMILe_Print_field_info