SUBROUTINE POSKEY(KULNAM,KLUOUT,HKEYWD1,HKEYWD2)
!! ################################################
!!
!!*** *POSKEY*
!!
!! PURPOSE
!! -------
! To position namelist file at correct place after reading
! keyword HKEYWD
!!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENT
!! -----------------
!!
!! REFERENCE
!! ----------
!!
!! AUTHOR
!! -------
!! I. Mallet *Meteo-France*
!!
!! MODIFICATIONS
!! --------------
!! Original : 15/10/01
!------------------------------------------------------------------------------
!
IMPLICIT NONE
!
!* 0. DECLARATIONS
! ------------
!
!* 0.1 Declarations of arguments
!
INTEGER, INTENT(IN) :: KULNAM
INTEGER, INTENT(IN) :: KLUOUT
CHARACTER(LEN=*), INTENT(IN) :: HKEYWD1
CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: HKEYWD2
!
!* 0.2 Declarations of local variables
!
CHARACTER(LEN=120) :: YLINE
INTEGER :: ILEN1,ILEN2,IRET
REAL(KIND=JPRB) :: ZHOOK_HANDLE
!
!* 1. POSITION FILE
! -------------
!
IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSKEY',0,ZHOOK_HANDLE)
REWIND(KULNAM)
ILEN1=LEN(HKEYWD1)
IF (PRESENT(HKEYWD2)) ILEN2=LEN(HKEYWD2)
!
search_key : DO
YLINE=' '
READ(UNIT=KULNAM,FMT='(A)',IOSTAT=IRET,END=100) YLINE
IF (IRET /=0 ) THEN
WRITE(KLUOUT,FMT=*) '-> error when reading line from unit ',KULNAM
ELSE
YLINE=ADJUSTL(YLINE)
IF (YLINE(1:ILEN1) .EQ. HKEYWD1(1:ILEN1)) EXIT search_key
ENDIF
ENDDO search_key
!
WRITE(KLUOUT,FMT=*) '-- keyword ',HKEYWD1,' found'
!
IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSKEY',1,ZHOOK_HANDLE)
RETURN
!
! end of file: keyword not found
100 CONTINUE
IF (.NOT.PRESENT(HKEYWD2)) THEN
CALL ABOR1_SFX('MODE_POS_SURF: KEYWORD NOT FOUND: '//HKEYWD1)
ELSE
!
!* 2. SECOND KEYWORD: POSITION FILE
! -----------------------------
!
REWIND(KULNAM)
search_key2 : DO
YLINE=' '
READ(UNIT=KULNAM,FMT='(A)',IOSTAT=IRET,END=101) YLINE
IF (IRET /=0 ) THEN
WRITE(KLUOUT,FMT=*) '-> error when reading line from unit ',KULNAM
ELSE
YLINE=ADJUSTL(YLINE)
IF (YLINE(1:ILEN2) .EQ. HKEYWD2(1:ILEN2)) EXIT search_key2
ENDIF
ENDDO search_key2
WRITE(KLUOUT,FMT=*) '-- keyword ',HKEYWD2,' found'
IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSKEY',1,ZHOOK_HANDLE)
RETURN
END IF
! end of file: scd keyword not found
101 CONTINUE
CALL ABOR1_SFX('MODE_POS_SURF: KEYWORD NOT FOUND: '//HKEYWD2)
IF (LHOOK) CALL DR_HOOK('MODE_POS_SURF:POSKEY',1,ZHOOK_HANDLE)
!------------------------------------------------------------------
END SUBROUTINE POSKEY