source: trunk/procs/def_file_name.pro @ 205

Last change on this file since 205 was 205, checked in by pinsard, 14 years ago

homegenize THEN BEGIN ... ENDIF

  • Property svn:keywords set to Id
File size: 5.7 KB
Line 
1;+
2;
3; define file name following
4; <expid>_<timeave>_<date1>_<date2>[_<spec>]_<grid> convention
5;
6; @param CMD {in}{required}{type=structure}
7;
8; @param NCDF_DB {in}{required}{type=string}
9; <location>:<path> or just <path>
10;
11; @param FILE_NAME {out}{type=string}
12;
13; @param DELTA_T1 {out}{type=integer}
14;
15; @examples
16;
17; IDL> cmd={timave:'1m',date1:'199201',plt:'xy',spec:'-',exp:'HH1'}
18; IDL> ncdf_db = 'local:./'
19; IDL> mesh_type2=''
20; IDL> suff_domain=''
21; IDL> file_suff_var=''
22; IDL> def_file_name, cmd, ncdf_db, file_name, delta_t1
23; IDL> print,file_name,delta_t1
24;
25; @uses
26; <pro>common</pro>
27; <propost_it>com_eg</propost_it>
28;
29; @todo
30;
31; explication sur mesh_type2,  suff_domain, file_suff_var
32;
33; realistic example
34;
35; @history
36;
37; - fplod 20100114T132123Z aedon.locean-ipsl.upmc.fr (Darwin)
38;
39;   * delta_t1 is an output parameter
40;
41; - fplod 20091209T094630Z aedon.locean-ipsl.upmc.fr (Darwin)
42;
43;   * check parameters
44;
45; @version
46; $Id$
47;
48;-
49PRO def_file_name, cmd, ncdf_db, file_name, delta_t1
50;
51  compile_opt idl2, strictarrsubs
52;
53@common
54@com_eg
55;
56; Return to caller if errors
57 ON_ERROR, 2
58;
59   IF debug_w THEN BEGIN
60    info = report('enter ...')
61   ENDIF
62
63 usage='def_file_name, cmd, ncdf_db, file_name, delta_t1'
64;
65 nparam = N_PARAMS()
66 IF (nparam LT 3) THEN BEGIN
67    ras = report(['Incorrect number of arguments.' $
68          + '!C' $
69          + 'Usage : ' + usage])
70    stop
71 ENDIF
72
73 arg_type = size(cmd,/type)
74 IF (arg_type NE 8) THEN BEGIN
75   ras = report(['Incorrect arg type cmd' $
76          + '!C' $
77          + 'Usage : ' + usage])
78    stop
79 ENDIF
80
81 arg_struct_tags=TAG_NAMES(cmd)
82
83 tag=WHERE(STRMATCH(arg_struct_tags, 'TIMAVE'))
84 IF (tag EQ -1) THEN BEGIN
85   ras = report(['Incorrect arg tag TIMAVE cmd' $
86          + '!C' $
87          + 'Usage : ' + usage])
88    stop
89 ENDIF
90 arg_type = size(cmd.timave,/type)
91 IF (arg_type NE 7) THEN BEGIN
92   ras = report(['Incorrect arg type cmd.timave' $
93          + '!C' $
94          + 'Usage : ' + usage])
95    stop
96 ENDIF
97
98 tag=WHERE(STRMATCH(arg_struct_tags, 'DATE1'))
99 IF (tag EQ -1) THEN BEGIN
100   ras = report(['Incorrect arg tag DATE1 cmd' $
101          + '!C' $
102          + 'Usage : ' + usage])
103    stop
104 ENDIF
105 arg_type = size(cmd.date1,/type)
106 IF (arg_type NE 7) THEN BEGIN
107   ras = report(['Incorrect arg type cmd.date1' $
108          + '!C' $
109          + 'Usage : ' + usage])
110    stop
111 ENDIF
112 tag=WHERE(STRMATCH(arg_struct_tags, 'PLT'))
113 IF (tag EQ -1) THEN BEGIN
114   ras = report(['Incorrect arg tag PLT cmd' $
115          + '!C' $
116          + 'Usage : ' + usage])
117    stop
118 ENDIF
119
120 arg_type = size(cmd.plt,/type)
121 IF (arg_type NE 7) THEN BEGIN
122   ras = report(['Incorrect arg type cmd.plt' $
123          + '!C' $
124          + 'Usage : ' + usage])
125    stop
126 ENDIF
127
128 tag=WHERE(STRMATCH(arg_struct_tags, 'SPEC'))
129 IF (tag EQ -1) THEN BEGIN
130   ras = report(['Incorrect arg tag SPEC cmd' $
131          + '!C' $
132          + 'Usage : ' + usage])
133    stop
134 ENDIF
135 arg_type = size(cmd.spec,/type)
136 IF (arg_type NE 7) THEN BEGIN
137   ras = report(['Incorrect arg type cmd.spec' $
138          + '!C' $
139          + 'Usage : ' + usage])
140    stop
141 ENDIF
142 tag=WHERE(STRMATCH(arg_struct_tags, 'EXP'))
143 IF (tag EQ -1) THEN BEGIN
144   ras = report(['Incorrect arg tag EXP cmd' $
145          + '!C' $
146          + 'Usage : ' + usage])
147    stop
148 ENDIF
149 arg_type = size(cmd.exp,/type)
150 IF (arg_type NE 7) THEN BEGIN
151   ras = report(['Incorrect arg type cmd.exp' $
152          + '!C' $
153          + 'Usage : ' + usage])
154    stop
155 ENDIF
156 arg_type = size(ncdf_db,/type)
157 IF (arg_type NE 7) THEN BEGIN
158   ras = report(['Incorrect arg type ncdf_db' $
159          + '!C' $
160          + 'Usage : ' + usage])
161    stop
162 ENDIF
163 common_type=size(mesh_type2,/type)
164 IF (common_type NE 7) THEN BEGIN
165   ras = report(['Incorrect common type mesh_type2' $
166          + '!C' $
167          + 'Usage : ' + usage])
168   stop
169 ENDIF
170 common_type=size(suff_domain,/type)
171 IF (common_type NE 7) THEN BEGIN
172   ras = report(['Incorrect common type suff_domain' $
173          + '!C' $
174          + 'Usage : ' + usage])
175   stop
176 ENDIF
177 common_type=size(file_suff_var,/type)
178 IF (common_type NE 7) THEN BEGIN
179   ras = report(['Incorrect common type file_suff_var' $
180          + '!C' $
181          + 'Usage : ' + usage])
182   stop
183 ENDIF
184
185; define date1 and date2
186
187   timavef = cmd.timave
188   date1 = cmd.date1
189
190   suffix = '_'+mesh_type2+suff_domain+file_suff_var
191
192   base_suffix = '_'+mesh_type2
193
194   f_suffix = suffix
195
196   IF debug_w THEN BEGIN
197    print, '     suffix before search_time_file = ', suffix
198   ENDIF
199
200   CASE strmid(cmd.plt, 0, 2) OF
201      'xt': search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
202      'yt': search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
203      'zt': search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
204      't_': search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
205      ELSE: BEGIN
206         CASE strmid(cmd.plt, 0, 3) OF
207             'xyt': search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
208             ELSE: BEGIN
209                 cmdspec_b = cmd.spec
210                 cmd.spec = cmd.date1
211                 search_time_file, cmd, ncdf_db, suffix, date1, date2, delta_t1, timavef
212                 cmd.spec = cmdspec_b
213             END
214         ENDCASE
215      END
216   ENDCASE
217   IF debug_w THEN BEGIN
218    print, '     suffix after search_time_file = ', suffix
219    print, '     date1, date2 = ', date1, ' ', date2
220   ENDIF
221
222   IF date1 EQ '???' THEN BEGIN
223      print, ' *** File not found: check dates in post_it.pro line !'
224      stop
225   ENDIF
226
227   file_name = cmd.exp+'_'+timavef+'_'+date1+'_'+date2+suffix+'.nc'
228   base_file_name = cmd.exp+'_'+timavef+'_'+date1+'_'+date2
229
230   IF debug_w THEN BEGIN
231    print, '     vargrid = ', vargrid
232    print, '     file_name = ',file_name
233    info = report('leaving ...')
234   ENDIF
235
236END
Note: See TracBrowser for help on using the repository browser.