anchor.diff:        Return
         End Subroutine MQC_Error
   
  -      
  +
  +!
  +!PROCEDURE mqc_get_command_argument
  +      Subroutine mqc_get_command_argument(argNum,argument)
  +!
  +!     This subroutine is used to dynamically allocate command line arguments.
  +!     <argument> should be passed as deferred length allocatable character.  
  +!     
  +!     -L. M. Thompson, 2017.
  +!
  +!
  +      implicit none
  +      character(len=:),allocatable::argument
  +      integer,intent(in)::argNum
  +      integer::argLen
  +!
  +!     Do the work...
  +!
  +      call get_command_argument(argNum,length=argLen)
  +      allocate(character(len=argLen)::argument)
  +      call get_command_argument(argNum,argument)
  +!
  +      Return
  +      End Subroutine mqc_get_command_argument
  +
  +!
  +!----------------------------------------------------------------
  +!                                                               |
  +!     Printing                                                  |
  +!                                                               |
  +!----------------------------------------------------------------
  +!
  +!
  +!PROCEDURE MQC_Print_Scalar_Integer
  +      Subroutine MQC_Print_Scalar_Integer(iOut,scalar,Header,Blank_At_Top, &
  +        Blank_At_Bottom,formatString)
  +!
  +!     This subroutine is used to print an integer scalar.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      Implicit None
  +      Integer,Intent(In)::iOut
  +      Integer,Intent(In)::scalar
  +      Character(Len=*),Intent(In),optional::Header,formatString
  +      Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      character(len=256)::lineToPrint
  +!
  +      if(PRESENT(Blank_At_Top)) then
  +        if(Blank_At_Top) write(iOut,*)
  +      endIf
  +      if(PRESENT(header)) then
  +        lineToPrint = TRIM(header)
  +      else
  +        lineToPrint = ' '
  +      endIf
  +      if(PRESENT(formatString)) then
  +        lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar,formatString))
  +      else
  +        lineToPrint = TRIM(lineToPrint)//' '//TRIM(integer2character(scalar))
  +      endIf
  +      lineToPrint = ADJUSTL(lineToPrint)
  +      write(iOut,'(A)') TRIM(lineToPrint)
  +      if(PRESENT(Blank_At_Bottom)) then
  +        if(Blank_At_Bottom) write(iOut,*)
  +      endIf
  +!
  +      return
  +      end subroutine MQC_Print_Scalar_Integer
  +
  +
  +!
  +!PROCEDURE MQC_Print_Scalar_Real
  +      Subroutine MQC_Print_Scalar_Real(iOut,scalar,Header,Blank_At_Top, &
  +        Blank_At_Bottom,formatString)
  +!
  +!     This subroutine is used to print an real scalar.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      Implicit None
  +      Integer,Intent(In)::iOut
  +      Real,Intent(In)::scalar
  +      Character(Len=*),Intent(In),optional::Header,formatString
  +      Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      character(len=256)::lineToPrint
  +!
  +      if(PRESENT(Blank_At_Top)) then
  +        if(Blank_At_Top) write(iOut,*)
  +      endIf
  +      if(PRESENT(header)) then
  +        lineToPrint = TRIM(header)
  +      else
  +        lineToPrint = ' '
  +      endIf
  +      if(PRESENT(formatString)) then
  +        lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar,formatString))
  +      else
  +        lineToPrint = TRIM(lineToPrint)//' '//TRIM(real2character(scalar))
  +      endIf
  +      lineToPrint = ADJUSTL(lineToPrint)
  +      write(iOut,'(A)') TRIM(lineToPrint)
  +      if(PRESENT(Blank_At_Bottom)) then
  +        if(Blank_At_Bottom) write(iOut,*)
  +      endIf
  +!
  +      return
  +      end subroutine MQC_Print_Scalar_Real
  +
  +
  +!
  +!PROCEDURE MQC_Print_Matrix_Array_Integer
  +      Subroutine MQC_Print_Matrix_Array_Integer(IOut,Array,Header,Blank_At_Top, &
  +        Blank_At_Bottom)
  +!
  +!     This subroutine is used to print an integer Matrix array variable.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      Implicit None
  +      Integer,Intent(In)::IOut
  +      Integer,dimension(:,:),Intent(In)::Array
  +      Character(Len=*),Intent(In),Optional::Header
  +      Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      Integer::I,J,NCols,NRows,IFirst,ILast
  +      Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  +!
  +!
  + 1000 Format(1x,A)
  + 1001 Format(5x,10(7x,I7))
  + 2001 Format(1x,I7,10I14)
  +
  +      NRows = Size(Array,1)
  +      NCols = Size(Array,2)
  +
  +      If(PRESENT(Blank_At_Top)) then
  +        If(Blank_At_Top) Write(IOut,*)
  +      EndIf
  +      Write(IOut,1000) TRIM(Header)
  +
  +      Do IFirst = 1,NCols,ColWidth
  +        ILast = Min(IFirst+ColWidth-1,NCols)
  +        Write(IOut,1001) (I,I=IFirst,ILast)
  +        Do I = 1,NRows
  +          Write(IOut,2001) I, (Array(I,J),J=IFirst,ILast)
  +        EndDo
  +      EndDo
  +
  +      If(PRESENT(Blank_At_Bottom)) then
  +        If(Blank_At_Bottom) Write(IOut,*)
  +      EndIf
  +!
  +      Return
  +    End Subroutine MQC_Print_Matrix_Array_Integer
  +
  +
  +!PROCEDURE MQC_Print_Matrix_Array_Real
  +      Subroutine MQC_Print_Matrix_Array_Real(IOut,Array,Header,Blank_At_Top, &
  +        Blank_At_Bottom)
  +!
  +!     This subroutine is used to print a real Matrix array variable.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      Implicit None
  +      Integer,Intent(In)::IOut
  +      Real,dimension(:,:),Intent(In)::Array
  +      Character(Len=*),Intent(In),Optional::Header
  +      Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      Integer::I,J,NCols,NRows,IFirst,ILast
  +      Integer,Parameter::ColWidth=10 ! Xianghai: can we make it bigger?
  +!
  + 1000 Format(1x,A)
  + 1001 Format(5x,10(7x,I7))
  + 2002 Format(1x,I7,10F14.6)
  +!
  +      NRows = Size(Array,1)
  +      NCols = Size(Array,2)
  +!
  +      If(PRESENT(Blank_At_Top)) then
  +        If(Blank_At_Top) Write(IOut,*)
  +      EndIf
  +      Write(IOut,1000) TRIM(Header)
  +
  +      Do IFirst = 1,NCols,ColWidth
  +        ILast = Min(IFirst+ColWidth-1,NCols)
  +        Write(IOut,1001) (I,I=IFirst,ILast)
  +        do I = 1,NRows
  +          Write(IOut,2002) I, (Array(I,J),J=IFirst,ILast)
  +        enddo
  +      EndDo
  +
  +      If(PRESENT(Blank_At_Bottom)) then
  +        If(Blank_At_Bottom) Write(IOut,*)
  +      EndIf
  +!
  +      Return
  +      End Subroutine MQC_Print_Matrix_Array_Real
  +
  +
  +!PROCEDURE MQC_Print_Vector_Array_Integer
  +      subroutine MQC_Print_Vector_Array_Integer(IOut,Vector,Header,Blank_At_Top, &
  +        Blank_At_Bottom)
  +!
  +!     This subroutine is used to print a Vector array type variable.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      implicit none
  +      integer,Intent(In)::IOut
  +      integer,Dimension(:),Intent(In)::Vector
  +      character(Len=*),Intent(In),Optional::Header
  +      logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      integer::I,Length
  +!
  + 1000 Format(1x,A)
  + 1001 Format(1x,I7,2x,I14)
  + 1002 Format(1x,I7,2X,F14.6)
  + 1003 Format(1x,I7,2x,A)
  +!
  +      If(PRESENT(Blank_At_Top)) then
  +        If(Blank_At_Top) Write(IOut,*)
  +      EndIf
  +      if(Present(Header)) Write(IOut,1000) TRIM(Header)
  +      Length = Size(Vector)
  +      Do I = 1, Length
  +        Write(IOut,1001) I, Vector(I)
  +      EndDo
  +      If(PRESENT(Blank_At_Bottom)) then
  +        If(Blank_At_Bottom) Write(IOut,*)
  +      EndIf
  +!
  +      Return
  +      End Subroutine MQC_Print_Vector_Array_Integer
  +
  +
  +!PROCEDURE MQC_Print_Vector_Array_Real
  +      Subroutine MQC_Print_Vector_Array_Real(IOut,Vector,Header,Blank_At_Top, &
  +        Blank_At_Bottom)
  +!
  +!     This subroutine is used to print a Vector array type variable.
  +!
  +!     L. M. Thompson, 2016.
  +!     H. P. Hratchian, 2017.
  +!
  +!
  +!     Variable Declarations.
  +      Implicit None
  +      Integer,Intent(In)::IOut
  +      Real,Dimension(:),Intent(In)::Vector
  +      Character(Len=*),Intent(In),Optional::Header
  +      Logical,Intent(In),Optional::Blank_At_Top,Blank_At_Bottom
  +      Integer::I,Length
  +!
  + 1000 Format(1x,A)
  + 1002 Format(1x,I7,2X,F14.6)
  +!
  +      If(PRESENT(Blank_At_Top)) then
  +        If(Blank_At_Top) Write(IOut,*)
  +      EndIf
  +      Write(IOut,1000) TRIM(Header)
  +      Length = Size(Vector)
  +      Do I = 1, Length
  +        Write(IOut,1002) I, Vector(I)
  +      EndDo
  +
  +      If(PRESENT(Blank_At_Bottom)) then
  +        If(Blank_At_Bottom) Write(IOut,*)
  +      EndIf
  +!
  +      Return
  +      End Subroutine MQC_Print_Vector_Array_Real
  +
  +
  +!
  +!----------------------------------------------------------------
  +!                                                               |
  +!     Character Conversion and Manipulation                     |
  +!                                                               |
  +!----------------------------------------------------------------
  +!
   !
   !PROCEDURE String_Change_Case
         Subroutine String_Change_Case(string,upperlower,stringOut)
  
positive.code: !
        CONTAINS
  !
  !PROCEDURE mqc_error
        Subroutine mqc_error(Message,IOut)
  !
  
negative.code: 
  !
  !
  !----------------------------------------------------------------
  !                                                               |
  !     Other                                                     |
  !                                                               |
  !----------------------------------------------------------------
  !
  
  !
  !
        End Module MQC_General
  