SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ch_open_inputb.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE CH_OPEN_INPUTB(HKEYWORD,KCHANNEL,KLUOUT)
00003 !!    #########################################################################
00004 !!
00005 !!*** *CH_OPEN_INPUTB*
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !       Open the general purpose chemical input file and position the
00010 !     file pointer after the indicated keyword.
00011 !!
00012 !!**  METHOD
00013 !!    ------
00014 !!      An unused input channel is selected using OPEN_ll.
00015 !!    The file will be rewinded
00016 !!    at each call and data will be read in using (A8)-format until the
00017 !!    given keyword is found. The following comment line will then
00018 !!    be read and printed and the input channel number will be returned.
00019 !!    After reading the needed data, the user must assure that the file
00020 !!    will be closed and that the unit will be freed using CLOSE_ll.
00021 !!
00022 !!    REFERENCE
00023 !!    ---------
00024 !!    MesoNH book 2
00025 !!
00026 !!    AUTHOR
00027 !!    ------
00028 !!    K. Suhre   *Laboratoire d'Aerologie*
00029 !!
00030 !!    MODIFICATIONS
00031 !!    -------------
00032 !!    Original 03/11/95
00033 !!    05/08/96 (K. Suhre) restructured
00034 !!    11/08/98 (N. Asencio) add parallel code
00035 !!
00036 !!    EXTERNAL
00037 !!    --------
00038 !!
00039 !!
00040 !!    IMPLICIT ARGUMENTS
00041 !!    ------------------
00042 !!    none
00043 !!
00044 !
00045 !-------------------------------------------------------------------------------
00046 !
00047 !*       0.     DECLARATIONS
00048 !               ------------
00049 !
00050 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00051 USE PARKIND1  ,ONLY : JPRB
00052 !
00053 USE MODI_ABOR1_SFX
00054 !
00055 IMPLICIT NONE
00056 !
00057 !*      0.1    declarations of arguments
00058 !
00059  CHARACTER(LEN=*), INTENT(IN) :: HKEYWORD         ! keyword for positioning
00060 INTEGER         , INTENT(IN) :: KCHANNEL         ! I/O channel to choose
00061 INTEGER,          INTENT(IN) :: KLUOUT           ! output listing logical unit
00062 !
00063 !*      0.2    declarations of local variables
00064 !
00065  CHARACTER(LEN=79) :: YIN ! character string for line-by-line read
00066 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00067 !
00068 !-------------------------------------------------------------------------------
00069 !
00070 !*       1.    READ INPUT DATA UNTIL KEYWORD IS FOUND
00071 !              --------------------------------------
00072 !
00073 IF (LHOOK) CALL DR_HOOK('CH_OPEN_INPUTB',0,ZHOOK_HANDLE)
00074 REWIND(KCHANNEL)
00075 !
00076 ! open the input file
00077 !
00078 ! read general comment line and print it
00079 READ(KCHANNEL,"(A)") YIN
00080 WRITE(KLUOUT, *) YIN
00081 !
00082 search_key : DO
00083   READ(KCHANNEL,"(A8)", END=100) YIN
00084   IF (HKEYWORD(1:8) .EQ. YIN(1:8)) EXIT search_key
00085 ENDDO search_key
00086 !
00087 ! read specific comment line and print it
00088 WRITE(KLUOUT,*) &
00089      "Keyword ", HKEYWORD(1:8), " has been found in chemistry data file, the specific comment is:"  
00090 READ(KCHANNEL,"(A)") YIN
00091 WRITE(KLUOUT, *) YIN
00092 !
00093 IF (LHOOK) CALL DR_HOOK('CH_OPEN_INPUTB',1,ZHOOK_HANDLE)
00094 RETURN
00095 !
00096 !-------------------------------------------------------------------------------
00097 !
00098 !*       2.    IF THE KEYWORD HAS NOT BEEN FOUND, ABORT
00099 !              ---------------------------------------
00100 !
00101 100 CONTINUE
00102 WRITE(KLUOUT,*) "CH_OPEN_INPUTB-Error: Keyword ", HKEYWORD(1:8), " not found."
00103  CALL ABOR1_SFX('CH_OPEN_INPUTB: KEYWORD '//HKEYWORD(1:8)//' NOT FOUND')
00104 IF (LHOOK) CALL DR_HOOK('CH_OPEN_INPUTB',1,ZHOOK_HANDLE)
00105 !
00106 END SUBROUTINE CH_OPEN_INPUTB