249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
279
280
281
282#include "implicit_f.inc"
283
284
285
286 INTEGER :: OPTION_ID,UNIT_ID,SUBMODEL_INDEX,SUBMODEL_ID,OPT_POS
287 CHARACTER*(*) :: KEYWORD1,KEYWORD2,KEYWORD3,KEYWORD4
288 CHARACTER*(*) :: OPTION_TITR
289 TYPE(SUBMODEL_DATA) :: LSUBMODEL(NSUBMOD)
290 OPTIONAL :: option_id,unit_id,submodel_index,submodel_id,keyword1,keyword2,keyword3,keyword4,option_titr,opt_pos
291
292
293
294 INTEGER OFFSET_CATEGORY,CPT,CPT1,CPT2,IOK,S_KEYWORD,,TMP_OPTION_ID,TMP_UNIT_ID,TMP_SUBMODEL_INDEX,MY_POSITION
295 CHARACTER(LEN=NCHARLINE) :: KEYWORD,TITR_TMP
296 LOGICAL SET_COLLECT_OFFSET
297
298
299
300 offset_category = 0
301 keyword=''
302 tmp_option_id = 0
303 tmp_unit_id = 0
304 tmp_submodel_index = 0
305 my_position = 0
306 IF(PRESENT(option_titr)) option_titr=''
307 IF(PRESENT(keyword1)) keyword1=''
308 IF(PRESENT(keyword2)) keyword2=''
309 IF(PRESENT(keyword3)) keyword3=''
310 IF(PRESENT(keyword4)) keyword4=''
311 IF(PRESENT(opt_pos)) my_position=opt_pos
312
313 CALL cpp_option_read(tmp_option_id,tmp_unit_id,tmp_submodel_index,keyword,s_keyword,
314 . titr_tmp,s_titr_tmp,offset_category,my_position)
315
316 IF(PRESENT(option_id)) option_id = tmp_option_id
317 IF(PRESENT(unit_id)) unit_id = tmp_unit_id
318 IF(PRESENT(submodel_index)) submodel_index = tmp_submodel_index
319 IF(PRESENT(submodel_id)) THEN
320 IF(tmp_submodel_index /= 0) THEN
321 submodel_id = lsubmodel(tmp_submodel_index)%NOSUBMOD
322 ELSE
323 submodel_id = 0
324 ENDIF
325 ENDIF
326 IF(PRESENT(option_titr)) option_titr(1:s_titr_tmp) = titr_tmp(1:s_titr_tmp)
327
328 cpt = 2
329 cpt1 = 2
330 cpt2 = 2
331 iok = 0
332
333 DO WHILE (cpt <
ncharline .AND. iok == 0)
334 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
335 cpt2 = cpt
336 iok = 1
337 ENDIF
338 cpt = cpt + 1
339 ENDDO
340 IF(
PRESENT(keyword1)) keyword1(1:cpt2-cpt1) = keyword(cpt1:
min((cpt2-1),s_keyword))
341 cpt1 = cpt2+1
342 iok = 0
343 DO WHILE (cpt <
ncharline .AND. iok == 0)
344 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
345 cpt2 = cpt
346 iok = 1
347 ENDIF
348 cpt = cpt + 1
349 ENDDO
350 IF(
PRESENT(keyword2)) keyword2(1:cpt2-cpt1) = keyword(cpt1:
min((cpt2-1),s_keyword))
351 cpt1 = cpt2+1
352 iok = 0
353 DO WHILE (cpt <
ncharline .AND. iok == 0)
354 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
355 cpt2 = cpt
356 iok = 1
357 ENDIF
358 cpt = cpt + 1
359 ENDDO
360 IF(
PRESENT(keyword3)) keyword3(1:cpt2-cpt1) = keyword(cpt1:
min((cpt2-1),s_keyword))
361 cpt1 = cpt2+1
362 iok = 0
363 DO WHILE (cpt <
ncharline .AND. iok == 0)
364 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
365 cpt2 = cpt
366 iok = 1
367 ENDIF
368 cpt = cpt + 1
369 ENDDO
370 IF(
PRESENT(keyword4)) keyword4(1:cpt2-cpt1) = keyword(cpt1:
min((cpt2-1),s_keyword))
371
372
373
374
375 set_collect_offset = .true.
376 IF(keyword(1:12) == '/SET/COLLECT') set_collect_offset = .false.
377
378 IF(PRESENT(unit_id)) THEN
379 IF(tmp_submodel_index /= 0 )THEN
380 IF(lsubmodel(tmp_submodel_index)%UID /= 0)THEN
381 unit_id = lsubmodel(tmp_submodel_index)%UID
382 ENDIF
383 ENDIF
384 ENDIF
385
386 RETURN
387
integer, parameter ncharline