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 |
|
|
|