371
372
373
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401#include "implicit_f.inc"
402
403
404
405#include "units_c.inc"
406#include "comlock.inc"
407
408
409
410 INTEGER MSGID,ANMODE,MSGTYPE
411 integer
412 . i1,i2,i3,i4,
413 . i5,i6,i7,i8,i9
415 . r1,r2,r3,r4,
416 . r5,r6,r7,r8,r9
417 CHARACTER(*)
418 . C1,C2,C3,C4,
419 . C5,C6,C7,C8,
420 OPTIONAL ::
421 . msgtype,
422 .
423 . i1,i2,i3,i4,
424 . i5,i6,i7,i8,i9,
425 . r1,r2,r3,r4,
426 . r5,r6,r7,r8,r9,
427 . c1,c2,c3,c4,
428 . c5,c6,c7,c8,c9
429
430
431
432 INTEGER IBUF(10)
434 CHARACTER(LEN=NCHARLINE100):: CBUF(10)
435
436 CHARACTER(LEN=NCHARLINE100):: TMPLINE,MYFMT,TMPBUF
437 CHARACTER(LEN=NCHAROUT) :: TMPOUT
438 INTEGER ITYPE,ILINE,I,I0,J,J0,SBUFMSG(2),IFILE,IOLD,
439 . INDXI,INDXR,INDXC,INDXTMPOUT,BUFLEN,
440 . STMP
441 CHARACTER(LEN=NCHARLINE100):: BUFMSG(2,100),BUFFMT(2,100)
442
443 WRITE(istdo,'(/A,I10)')'MESSAGE ID : ',msgid
444 IF (iout/=0) THEN
445 WRITE(iout,'(/A,I10)')'MESSAGE ID : ',msgid
446 END IF
447 ibuf=0
448 rbuf=zero
449 cbuf=' '
450
451 indxi=0
452 indxr=0
453 indxc=0
454
455 tmpout=' '
456 indxtmpout=0
457 tmpbuf=' '
458
459 IF (PRESENT(i1)) THEN
460 ibuf(1)=i1
461 IF (PRESENT(i2)) THEN
462 ibuf(2)=i2
463 IF (PRESENT(i3)) THEN
464 ibuf(3)=i3
465 IF (PRESENT(i4)) THEN
466 ibuf(4)=i4
467 IF (PRESENT(i5)) THEN
468 ibuf(5)=i5
469 IF (PRESENT(i6)) THEN
470 ibuf(6)=i6
471 IF (PRESENT(i7)) THEN
472 ibuf(7)=i7
473 IF (PRESENT(i8)) THEN
474 ibuf(8)=i8
475 IF (PRESENT(i9)) THEN
476 ibuf(9)=i9
477 END IF
478 END IF
479 END IF
480 END IF
481 END IF
482 END IF
483 END IF
484 END IF
485 END IF
486
487 IF (PRESENT(r1)) THEN
488 rbuf(1)=r1
489 IF (PRESENT(r2)) THEN
490 rbuf(2)=r2
491 IF (PRESENT(r3)) THEN
492 rbuf(3)=r3
493 IF (PRESENT(r4)) THEN
494 rbuf(4)=r4
495 IF (PRESENT(r5)) THEN
496 rbuf(5)=r5
497 IF (PRESENT(r6)) THEN
498 rbuf(6)=r6
499 IF (PRESENT(r7)) THEN
500 rbuf(7)=r7
501 IF (PRESENT(r8)) THEN
502 rbuf(8)=r8
503 IF (PRESENT(r9)) THEN
504 rbuf(9)=r9
505 END IF
506 END IF
507 END IF
508 END IF
509 END IF
510 END IF
511 END IF
512 END IF
513 END IF
514
515 IF (PRESENT(c1)) THEN
516 cbuf(1)=c1
517 IF (PRESENT(c2)) THEN
518 cbuf(2)=c2
519 IF (PRESENT(c3)) THEN
520 cbuf(3)=c3
521 IF (PRESENT(c4)) THEN
522 cbuf(4)=c4
523 IF (PRESENT(c5)) THEN
524 cbuf(5)=c5
525 IF (PRESENT(c6)) THEN
526 cbuf(6)=c6
527 IF (PRESENT(c7)) THEN
528 cbuf(7)=c7
529 IF (PRESENT(c8)) THEN
530 cbuf(8)=c8
531 IF (PRESENT(c9)) THEN
532 cbuf(9)=c9
533 END IF
534 END IF
535 END IF
536 END IF
537 END IF
538 END IF
539 END IF
540 END IF
541 END IF
542
543 DO itype=1,2
544 IF (
ALLOCATED(
messages(itype,msgid)%MESSAGE))
THEN
545 DO iline=1,
messages(itype,msgid)%SMESSAGE
546 tmpout=' '
547 tmpbuf=' '
548 tmpline=
messages(itype,msgid)%MESSAGE(iline)
549 buflen=0
550 indxtmpout=0
551 i=1
552 iold=1
553
554
555
556
557
558 DO WHILE (i+1<=len_trim(tmpline))
559 IF (tmpline(i:i)==achar(92)) then
560 i=i+1
561 IF (i-2>=1) THEN
562 WRITE(tmpbuf,'(A,A)')tmpline(iold:i-2),tmpline(i:i)
563 buflen=i-2-iold+1+1
564 ELSE
565 WRITE(tmpbuf,'(A)')tmpline
566 buflen=1
567 END IF
568 i=i+1
569 iold=i
570 ELSE IF (tmpline(i:i)=='%') THEN
571 i=i+1
572 IF (i-2>=1) THEN
573 WRITE(tmpbuf,'(A)')tmpline(iold:i-2)
574 buflen=i-2-iold+1
575 IF (buflen>0) THEN
576 tmpout=tmpout(1:indxtmpout)//tmpbuf
577 indxtmpout=indxtmpout+buflen
578 buflen=0
579 END IF
580 END IF
581 IF (tmpline(i:i)=='d') THEN
582 i=i+1
583 iold=i
584 myfmt='(I10)'
585 IF (indxi<10) indxi=indxi+1
586 WRITE(tmpbuf,myfmt)ibuf(indxi)
587 tmpbuf=adjustl(tmpbuf)
588 buflen=len_trim(tmpbuf)
589 ELSE IF (tmpline(i:i)=='f') THEN
590 i=i+1
591 iold=i
592 myfmt='(1PG20.13)'
593 IF (indxr<10) indxr=indxr+1
594 WRITE(tmpbuf,myfmt)rbuf(indxr)
595 tmpbuf=adjustl(tmpbuf)
596 buflen=len_trim(tmpbuf)
597 ELSE IF (tmpline(i:i)=='s') THEN
598 i=i+1
599 iold=i
600 myfmt='(A)'
601 IF (indxc<10) indxc=indxc+1
602 WRITE(tmpbuf,myfmt)cbuf(indxc)
603 tmpbuf=adjustl(tmpbuf)
604 buflen=len_trim(tmpbuf)
605 END IF
606 ELSE
607 i=i+1
608 END IF
609 IF (buflen>0) THEN
610 tmpout=tmpout(1:indxtmpout)//tmpbuf(1:buflen)
611 indxtmpout=indxtmpout+buflen
612 buflen=0
613 END IF
614 END DO
615 IF (iold<=i) THEN
616 WRITE(tmpbuf,'(A)')
617 . tmpline(iold:len_trim(tmpline))
618 buflen=len_trim(tmpline)-iold+1
619 IF (buflen>0) THEN
620 tmpout=tmpout(1:indxtmpout)//tmpbuf(1:buflen)
621 indxtmpout=indxtmpout+buflen
622 buflen=0
623 END IF
624 END IF
625
626 IF (indxtmpout>0) THEN
627
629 WRITE(istdo,'(A)')tmpout(1:indxtmpout)
630 END IF
631 IF (iout/=0) THEN
632 WRITE(iout,'(A)')tmpout(1:indxtmpout)
633 END IF
634 END IF
635
636 END DO
637 END IF
638 END DO
639 RETURN
type(tmessage), dimension(:,:), allocatable messages
integer, parameter ncharline100