57 CHARACTER(LEN=*),
INTENT(IN) :: message
58 INTEGER,
INTENT(IN) :: output_unit
59 INTEGER,
INTENT(IN),
OPTIONAL :: declev, before, after
61 CHARACTER(LEN=1),
PARAMETER :: decoration_char =
"*"
63 INTEGER :: blank_lines_after, blank_lines_before, &
64 decoration_level, i, ibreak, ipos1, &
65 ipos2, maxrowlen, msglen, nrow, rowlen
67 IF (
PRESENT(after))
THEN
68 blank_lines_after = max(after, 0)
73 IF (
PRESENT(before))
THEN
74 blank_lines_before = max(before, 0)
76 blank_lines_before = 1
79 IF (
PRESENT(declev))
THEN
80 decoration_level = max(declev, 0)
85 IF (decoration_level == 0)
THEN
91 msglen = len_trim(message)
95 nrow = msglen/(rowlen + 1) + 1
99 rowlen = min(msglen, rowlen)
103 DO i = 1, blank_lines_before
104 WRITE (unit=output_unit, fmt=
"(A)")
""
114 IF (ipos2 < msglen)
THEN
115 i = index(message(ipos1:ipos2),
" ", back=.true.)
119 ibreak = ipos1 + i - 2
125 maxrowlen = max(maxrowlen, ibreak - ipos1 + 1)
128 ipos2 = min(msglen, ipos1 + rowlen - 1)
132 IF (ipos1 > msglen)
EXIT
138 IF (decoration_level > 1)
THEN
139 DO i = 1, decoration_level - 1
140 WRITE (unit=output_unit, fmt=
"(T2,A)") &
141 repeat(decoration_char, maxrowlen + 8)
151 IF (ipos2 < msglen)
THEN
152 i = index(message(ipos1:ipos2),
" ", back=.true.)
156 ibreak = ipos1 + i - 2
162 IF (decoration_level == 0)
THEN
163 WRITE (unit=output_unit, fmt=
"(T2,A)") message(ipos1:ibreak)
164 ELSE IF (decoration_level > 0)
THEN
165 WRITE (unit=output_unit, fmt=
"(T2,A)") &
166 repeat(decoration_char, 3)//
" "//message(ipos1:ibreak)// &
167 repeat(
" ", ipos1 + maxrowlen - ibreak)// &
168 repeat(decoration_char, 3)
172 ipos2 = min(msglen, ipos1 + rowlen - 1)
176 IF (ipos1 > msglen)
EXIT
181 IF (decoration_level > 1)
THEN
182 DO i = 1, decoration_level - 1
183 WRITE (unit=output_unit, fmt=
"(T2,A)") &
184 repeat(decoration_char, maxrowlen + 8)
190 DO i = 1, blank_lines_after
191 WRITE (unit=output_unit, fmt=
"(A)")
""
subroutine, public print_message(message, output_unit, declev, before, after)
Perform a basic blocking of the text in message and print it optionally decorated with a frame of sta...