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.

item_count
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
  1. item_count ← 5

    7item_count = 58passed_count = item_count - 1
    values this step5item_count
  2. passed_count ← 4

    7item_count = 58passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
    values this step4passed_count5item_count
  3. line ← 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_count
  4. print '(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_demo
    outputpassed 4 of 5
    values this steppassed 4 of 5line
  1. item_count ← 3

    7item_count = 38passed_count = item_count - 1
    values this step3item_count
  2. passed_count ← 2

    7item_count = 38passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
    values this step2passed_count3item_count
  3. line ← 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_count
  4. print '(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_demo
    outputpassed 2 of 3
    values this steppassed 2 of 3line
  1. item_count ← 8

    7item_count = 88passed_count = item_count - 1
    values this step8item_count
  2. passed_count ← 7

    7item_count = 88passed_count = item_count - 19write(line, '(A, I0, A, I0)') 'passed ', passed_count, ' of ', item_count
    values this step7passed_count8item_count
  3. line ← 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_count
  4. print '(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_demo
    outputpassed 7 of 8
    values 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.