Report Generation
Summary Line Report
Composing Text
A report line can combine labels and numeric summaries before it is printed.
Program
Play the program to change the item count and rebuild the summary line.
summary_line_report.f90
Replay: real traced execution (multi-file project)
program summary_line_report_demo
implicit none
integer :: item_count
integer :: passed_count
character(len=40) :: line
item_count = 5
passed_count = item_count - 1
write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
print '(A)', trim(line)
end program summary_line_report_demo
program summary_line_report_demo
implicit none
integer :: item_count
integer :: passed_count
character(len=40) :: line
item_count = 3
passed_count = item_count - 1
write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
print '(A)', trim(line)
end program summary_line_report_demo
program summary_line_report_demo
implicit none
integer :: item_count
integer :: passed_count
character(len=40) :: line
item_count = 8
passed_count = item_count - 1
write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
print '(A)', trim(line)
end program summary_line_report_demo
item_count ← 5
7item_count = 58passed_count = item_count - 1values this step5item_countpassed_count ← 4
7item_count = 58passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_countvalues this step4passed_count5item_countline ← passed 4 of 5
8passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10print '(A)', trim(line)values this steppassed 4 of 5line4passed_count5item_countprint '(A)', trim(line)
9 write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10 print '(A)', trim(line)11end program summary_line_report_demooutputpassed 4 of 5values this steppassed 4 of 5line
item_count ← 3
7item_count = 38passed_count = item_count - 1values this step3item_countpassed_count ← 2
7item_count = 38passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_countvalues this step2passed_count3item_countline ← passed 2 of 3
8passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10print '(A)', trim(line)values this steppassed 2 of 3line2passed_count3item_countprint '(A)', trim(line)
9 write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10 print '(A)', trim(line)11end program summary_line_report_demooutputpassed 2 of 3values this steppassed 2 of 3line
item_count ← 8
7item_count = 88passed_count = item_count - 1values this step8item_countpassed_count ← 7
7item_count = 88passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_countvalues this step7passed_count8item_countline ← passed 7 of 8
8passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10print '(A)', trim(line)values this steppassed 7 of 8line7passed_count8item_countprint '(A)', trim(line)
9 write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count10 print '(A)', trim(line)11end program summary_line_report_demooutputpassed 7 of 8values this steppassed 7 of 8line
internal write
`write(line, ...)` formats text into a character variable.
trim
`trim(line)` removes trailing blanks before printing.
summary line
The report combines fixed labels and calculated counts.