A reliability report can combine a failure count with a service-window duration before choosing a status label.

Program

Play the program to choose the failed check count and inspect the readiness report.

failed_checks
service_window_report.f90
Replay: real traced execution (multi-file project)
program service_window_report_demo
    implicit none
    integer :: failed_checks
    integer :: allowed_failures
    integer :: open_minutes
    character(len=10) :: status

    failed_checks = 1
    allowed_failures = 1
    open_minutes = 45
    if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
        status = 'ready'
    else
        status = 'blocked'
    end if
    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)
end program service_window_report_demo
program service_window_report_demo
    implicit none
    integer :: failed_checks
    integer :: allowed_failures
    integer :: open_minutes
    character(len=10) :: status

    failed_checks = 0
    allowed_failures = 1
    open_minutes = 45
    if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
        status = 'ready'
    else
        status = 'blocked'
    end if
    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)
end program service_window_report_demo
program service_window_report_demo
    implicit none
    integer :: failed_checks
    integer :: allowed_failures
    integer :: open_minutes
    character(len=10) :: status

    failed_checks = 3
    allowed_failures = 1
    open_minutes = 45
    if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
        status = 'ready'
    else
        status = 'blocked'
    end if
    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)
end program service_window_report_demo
  1. failed_checks ← 1

    8failed_checks = 19allowed_failures = 1
    values this step1failed_checks
  2. allowed_failures ← 1

    8failed_checks = 19allowed_failures = 110open_minutes = 45
    values this step1allowed_failures
  3. open_minutes ← 45

    9allowed_failures = 110open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
    values this step45open_minutes
  4. if (failed_checks <= allowed_failures .and. open_minutes >= 30) then

    10open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then12    status = 'ready'
    values this step1failed_checks1allowed_failures45open_minutes
  5. status ← ready

    11if (failed_checks <= allowed_failures .and. open_minutes >= 30) then12    status = 'ready'13else
    values this stepreadystatus
  6. print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)

    15    end if16    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)17end program service_window_report_demo
    output1 45 ready
    values this step1failed_checks45open_minutesreadystatus
  1. failed_checks ← 0

    8failed_checks = 09allowed_failures = 1
    values this step0failed_checks
  2. allowed_failures ← 1

    8failed_checks = 09allowed_failures = 110open_minutes = 45
    values this step1allowed_failures
  3. open_minutes ← 45

    9allowed_failures = 110open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
    values this step45open_minutes
  4. if (failed_checks <= allowed_failures .and. open_minutes >= 30) then

    10open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then12    status = 'ready'
    values this step0failed_checks1allowed_failures45open_minutes
  5. status ← ready

    11if (failed_checks <= allowed_failures .and. open_minutes >= 30) then12    status = 'ready'13else
    values this stepreadystatus
  6. print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)

    15    end if16    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)17end program service_window_report_demo
    output0 45 ready
    values this step0failed_checks45open_minutesreadystatus
  1. failed_checks ← 3

    8failed_checks = 39allowed_failures = 1
    values this step3failed_checks
  2. allowed_failures ← 1

    8failed_checks = 39allowed_failures = 110open_minutes = 45
    values this step1allowed_failures
  3. open_minutes ← 45

    9allowed_failures = 110open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then
    values this step45open_minutes
  4. if (failed_checks <= allowed_failures .and. open_minutes >= 30) then

    10open_minutes = 4511if (failed_checks <= allowed_failures .and. open_minutes >= 30) then12    status = 'ready'
    values this step3failed_checks1allowed_failures45open_minutes
  5. status ← blocked

    13else14    status = 'blocked'15end if
    values this stepblockedstatus
  6. print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)

    15    end if16    print '(I0, 1X, I0, 1X, A)', failed_checks, open_minutes, trim(status)17end program service_window_report_demo
    output3 45 blocked
    values this step3failed_checks45open_minutesblockedstatus
combined guard The readiness decision checks both failure count and open service-window minutes.
status label The character status stores the report outcome as ordinary program state.
report line The final print emits the selected signal, window length, and status.