SURFEX v7.3
General documentation of Surfex
|
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