GCC Code Coverage Report


Directory: ./
File: rad/posnam.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 22 0.0%
Branches: 0 17 0.0%

Line Branch Exec Source
1 SUBROUTINE POSNAM(KULNAM,CDNAML)
2
3 !**** *POSNAM* - position namelist file for reading
4
5 ! Purpose.
6 ! --------
7 ! To position namelist file at correct place for reading
8 ! namelist CDNAML. Replaces use of Cray specific ability
9 ! to skip to the correct namelist.
10
11 !** Interface.
12 ! ----------
13 ! *CALL* *POSNAM*(..)
14
15 ! Explicit arguments : KULNAM - file unit number (input)
16 ! -------------------- CDNAML - namelist name (input)
17
18 ! Implicit arguments : None
19 ! --------------------
20
21 ! Method.
22 ! -------
23 ! See documentation
24
25 ! Externals. None
26 ! ----------
27
28 ! Reference.
29 ! ----------
30 ! ECMWF Research Department documentation of the IFS
31
32 ! Author.
33 ! -------
34 ! Mats Hamrud *ECMWF*
35
36 ! Modifications.
37 ! --------------
38 ! Original : 93-06-22
39 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
40 ! M.Hamrud 01-Dec-2003 CY28R1 Cleaning
41 ! R. El Khatib 04-08-10 Apply norms + proper abort if namelist is missing
42 ! --------------------------------------------------------------
43
44 USE PARKIND1 ,ONLY : JPIM ,JPRB
45 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
46
47 IMPLICIT NONE
48
49 INTEGER(KIND=JPIM),INTENT(IN) :: KULNAM
50 CHARACTER(LEN=*) ,INTENT(IN) :: CDNAML
51
52
53 CHARACTER (LEN = 40) :: CLINE
54 CHARACTER (LEN = 1) :: CLTEST
55
56 INTEGER(KIND=JPIM) :: ILEN, IND1, ISTATUS, ISCAN
57 REAL(KIND=JPRB) :: ZHOOK_HANDLE
58
59 INTERFACE
60 SUBROUTINE ABOR1(CDTEXT)
61 CHARACTER(LEN=*) :: CDTEXT
62 END SUBROUTINE ABOR1
63 END INTERFACE
64
65 ! -----------------------------------------------------------
66
67 !* 1. POSITION FILE
68 ! -------------
69
70 IF (LHOOK) CALL DR_HOOK('POSNAM',0,ZHOOK_HANDLE)
71
72 CLINE=' '
73 REWIND(KULNAM)
74 ILEN=LEN(CDNAML)
75 ISTATUS=0
76 ISCAN=0
77 print *,'On cherche a lire:',CDNAML
78 DO WHILE (ISTATUS==0 .AND. ISCAN==0)
79 READ(KULNAM,'(A)',IOSTAT=ISTATUS) CLINE
80 ! print *,'CLINE,ISTATUS= ',CLINE,ISTATUS
81 SELECT CASE (ISTATUS)
82 CASE (:-1)
83 CLINE='POSNAM:CANNOT LOCATE '//CDNAML//' '
84 CALL ABOR1(CLINE)
85 CASE (0)
86 IF (INDEX(CLINE(1:10),'&') == 0) THEN
87 ISCAN=0
88 ELSE
89 IND1=INDEX(CLINE,'&'//CDNAML)
90 IF (IND1 == 0) THEN
91 ISCAN=0
92 ELSE
93 CLTEST=CLINE(IND1+ILEN+1:IND1+ILEN+1)
94 IF ( (LGE(CLTEST,'0').AND.LLE(CLTEST,'9')) &
95 & .OR.(LGE(CLTEST,'A').AND.LLE(CLTEST,'Z')) ) THEN
96 ISCAN=0
97 ELSE
98 ISCAN=1
99 ENDIF
100 ENDIF
101 ENDIF
102 CASE (1:)
103 CLINE='POSNAM:READ ERROR IN NAMELIST FILE'
104 CALL ABOR1(CLINE)
105 END SELECT
106 ENDDO
107 BACKSPACE(KULNAM)
108
109 ! ------------------------------------------------------------------
110
111 IF (LHOOK) CALL DR_HOOK('POSNAM',1,ZHOOK_HANDLE)
112 END SUBROUTINE POSNAM
113