The main documentation of the Status Class contains additional explanation of this code listing.
! ! Author: Michael L. Hall ! P.O. Box 1663, MS-D413, LANL ! Los Alamos, NM 87545 ! ph: 505-665-4312 ! email: Hall@LANL.gov ! ! Created on: 03/23/99 ! CVS Info: $Id: status.F90,v 7.7 2007/01/23 19:30:53 hall Exp $ module Caesar_Status_Class ! Global use associations - none. ! Start up with everything untyped and private. implicit none private ! Public procedures. public :: Initialize, Finalize, Valid_State public :: Assignment (=), Operator (==), Operator (/=), Consolidate, & Equal, Error, Get, Normal, Not_Equal, Set, Warning interface Initialize module procedure Initialize_Status module procedure Initialize_Status_Vector end interface interface Finalize module procedure Finalize_Status module procedure Finalize_Status_Vector end interface interface Valid_State module procedure Valid_State_Status module procedure Valid_State_Status_Vector end interface interface Assignment (=) module procedure Set_Status module procedure Get_Status_Output module procedure Consolidate_Status end interface interface Operator (==) module procedure Status_Equal_Status module procedure Status_Equal_Character module procedure Character_Equal_Status end interface interface Operator (/=) module procedure Status_Not_Equal_Status module procedure Status_Not_Equal_Character module procedure Character_Not_Equal_Status end interface interface Consolidate module procedure Consolidate_Status end interface interface Equal module procedure Status_Equal_Status module procedure Status_Equal_Character module procedure Character_Equal_Status end interface interface Error module procedure Error_Status end interface interface Get module procedure Get_Status_Output end interface interface Normal module procedure Normal_Status end interface interface Not_Equal module procedure Status_Not_Equal_Status module procedure Status_Not_Equal_Character module procedure Character_Not_Equal_Status end interface interface Set module procedure Set_Status end interface interface Warning module procedure Warning_Status end interface ! Public type definitions. public :: Status_type type Status_type private type(integer) :: status end type Status_type ! Global class variables. type(integer), parameter :: & NFlags=10, & ! Number of Flag types. output_length = 35, & ! Length of the output string. selector_length = 16, & ! Length of the selector string. severity_length = 7 ! Length of the severity string. type Flag ! Status flag derived type. type(character,selector_length) :: selector type(character,output_length) :: output_string type(character,severity_length) :: severity end type Flag !--------------------------------------------------------------------------- ! This is the main list of possible flags (or values for a status variable). ! ! Note: when adding a new flag below, remember to: ! ! - update NFlags above, and ! - add the new selector to the list in the ! Set_Status routine comments. ! ! Flag order is unimportant. type(Flag), dimension(1:NFlags), parameter :: & status_flag = (/ & ! Selector Output String Severity Flag('Unset ', 'Status Initialized But Unset ', 'Normal '), & Flag('Success ', 'Successful Procedure Execution ', 'Normal '), & Flag('Multiple Error ', 'Multiple Error Types in Procedure ', 'Error '), & Flag('Multiple Warning', 'Multiple Warning Types in Procedure', 'Warning'), & Flag('Memory Warning ', 'Memory Allocation Warning ', 'Warning'), & Flag('Memory Error ', 'Memory Allocation Error ', 'Error '), & Flag('File Error ', 'File Access Error ', 'Error '), & Flag('CGNS Error ', 'CGNS Error ', 'Error '), & Flag('CGNS No Node ', 'CGNS NODE_NOT_FOUND Error ', 'Error '), & Flag('CGNS Bad Path ', 'CGNS INCORRECT_PATH Error ', 'Error ') & /) !--------------------------------------------------------------------------- contains
The Status Class contains the following routines which are listed in separate sections:
end module Caesar_Status_Class