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