A report often maps a numeric state into a short human-readable status message.

Program

Play the program to choose a different state and print its report line.

status_code
status_report.f90
Replay: real traced execution (multi-file project)
program status_report_demo
    implicit none
    integer :: status_code
    character(len=12) :: label
    character(len=30) :: report

    status_code = 2
    select case (status_code)
        case (1)
            label = 'ready'
        case (2)
            label = 'running'
        case default
            label = 'review'
    end select
    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)
    print '(A)', trim(report)
end program status_report_demo
program status_report_demo
    implicit none
    integer :: status_code
    character(len=12) :: label
    character(len=30) :: report

    status_code = 1
    select case (status_code)
        case (1)
            label = 'ready'
        case (2)
            label = 'running'
        case default
            label = 'review'
    end select
    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)
    print '(A)', trim(report)
end program status_report_demo
program status_report_demo
    implicit none
    integer :: status_code
    character(len=12) :: label
    character(len=30) :: report

    status_code = 3
    select case (status_code)
        case (1)
            label = 'ready'
        case (2)
            label = 'running'
        case default
            label = 'review'
    end select
    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)
    print '(A)', trim(report)
end program status_report_demo
  1. status_code ← 2

    7status_code = 28select case (status_code)
    values this step2status_code
  2. select case (status_code)

    7status_code = 28select case (status_code)9    case (1)
    values this step2status_code
  3. label ← running

    11case (2)12    label = 'running'13case default
    values this steprunninglabel
  4. report ← status 2: running

    15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)
    values this stepstatus 2: runningreport2status_coderunninglabel
  5. print '(A)', trim(report)

    16    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17    print '(A)', trim(report)18end program status_report_demo
    outputstatus 2: running
    values this stepstatus 2: runningreport
  1. status_code ← 1

    7status_code = 18select case (status_code)
    values this step1status_code
  2. select case (status_code)

    7status_code = 18select case (status_code)9    case (1)
    values this step1status_code
  3. label ← ready

    9case (1)10    label = 'ready'11case (2)
    values this stepreadylabel
  4. report ← status 1: ready

    15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)
    values this stepstatus 1: readyreport1status_codereadylabel
  5. print '(A)', trim(report)

    16    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17    print '(A)', trim(report)18end program status_report_demo
    outputstatus 1: ready
    values this stepstatus 1: readyreport
  1. status_code ← 3

    7status_code = 38select case (status_code)
    values this step3status_code
  2. select case (status_code)

    7status_code = 38select case (status_code)9    case (1)
    values this step3status_code
  3. label ← review

    13    case default14        label = 'review'15end select
    values this stepreviewlabel
  4. report ← status 3: review

    15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)
    values this stepstatus 3: reviewreport3status_codereviewlabel
  5. print '(A)', trim(report)

    16    write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17    print '(A)', trim(report)18end program status_report_demo
    outputstatus 3: review
    values this stepstatus 3: reviewreport
status code `status_code` stores a compact state.
select case `select case` maps the state to a readable label.
report text The final report line combines the code and selected label.