Report Generation
Status Report
Selecting a Message
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_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
status_code ← 2
7status_code = 28select case (status_code)values this step2status_codeselect case (status_code)
7status_code = 28select case (status_code)9 case (1)values this step2status_codelabel ← running
11case (2)12 label = 'running'13case defaultvalues this steprunninglabelreport ← status 2: running
15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)values this stepstatus 2: runningreport2status_coderunninglabelprint '(A)', trim(report)
16 write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17 print '(A)', trim(report)18end program status_report_demooutputstatus 2: runningvalues this stepstatus 2: runningreport
status_code ← 1
7status_code = 18select case (status_code)values this step1status_codeselect case (status_code)
7status_code = 18select case (status_code)9 case (1)values this step1status_codelabel ← ready
9case (1)10 label = 'ready'11case (2)values this stepreadylabelreport ← status 1: ready
15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)values this stepstatus 1: readyreport1status_codereadylabelprint '(A)', trim(report)
16 write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17 print '(A)', trim(report)18end program status_report_demooutputstatus 1: readyvalues this stepstatus 1: readyreport
status_code ← 3
7status_code = 38select case (status_code)values this step3status_codeselect case (status_code)
7status_code = 38select case (status_code)9 case (1)values this step3status_codelabel ← review
13 case default14 label = 'review'15end selectvalues this stepreviewlabelreport ← status 3: review
15end select16write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17print '(A)', trim(report)values this stepstatus 3: reviewreport3status_codereviewlabelprint '(A)', trim(report)
16 write(report, '(A, I0, A, A)') 'status ', status_code, ': ', trim(label)17 print '(A)', trim(report)18end program status_report_demooutputstatus 3: reviewvalues 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.