A simple report table prints one formatted row per active entry.

Program

Play the program to include more rows in the table report.

table_row_report.f90
program table_row_report_demo
    implicit none
    integer :: ids(3)
    integer :: scores(3)
    integer :: row_count
    integer :: i

    ids = [101, 102, 103]
    scores = [7, 9, 8]
    row_count = 
    do i = 1, row_count
        print '(I0, A, I0)', ids(i), ':', scores(i)
    end do
    print '(A, I0)', 'rows=', row_count
end program table_row_report_demo
program table_row_report_demo
    implicit none
    integer :: ids(3)
    integer :: scores(3)
    integer :: row_count
    integer :: i

    ids = [101, 102, 103]
    scores = [7, 9, 8]
    row_count = 
    do i = 1, row_count
        print '(I0, A, I0)', ids(i), ':', scores(i)
    end do
    print '(A, I0)', 'rows=', row_count
end program table_row_report_demo
program table_row_report_demo
    implicit none
    integer :: ids(3)
    integer :: scores(3)
    integer :: row_count
    integer :: i

    ids = [101, 102, 103]
    scores = [7, 9, 8]
    row_count = 
    do i = 1, row_count
        print '(I0, A, I0)', ids(i), ':', scores(i)
    end do
    print '(A, I0)', 'rows=', row_count
end program table_row_report_demo
row loop The loop prints one report row for each active record.
row format `I0, A, I0` prints an id, a separator, and a score.
footer A final line summarizes how many rows were printed.