Small Fortran programs often return integer status values instead of throwing exceptions. A select case block can map each code to a readable outcome.

Program

Play the program to choose a status code and map it to a label.

status
status_code.f90
Replay: real traced execution (multi-file project)
program status_code_demo
    implicit none
    integer :: status
    character(len=12) :: label

    status = 0
    select case (status)
        case (0)
            label = 'ok'
        case (1)
            label = 'retry'
        case default
            label = 'failed'
    end select
    print '(A)', trim(label)
end program status_code_demo
program status_code_demo
    implicit none
    integer :: status
    character(len=12) :: label

    status = 1
    select case (status)
        case (0)
            label = 'ok'
        case (1)
            label = 'retry'
        case default
            label = 'failed'
    end select
    print '(A)', trim(label)
end program status_code_demo
program status_code_demo
    implicit none
    integer :: status
    character(len=12) :: label

    status = 2
    select case (status)
        case (0)
            label = 'ok'
        case (1)
            label = 'retry'
        case default
            label = 'failed'
    end select
    print '(A)', trim(label)
end program status_code_demo
  1. status ← 0

    6status = 07select case (status)
    values this step0status
  2. matched ← case (0)

    6status = 07select case (status)8    case (0)
    values this stepcase (0)matched0status
  3. label ← ok

    8case (0)9    label = 'ok'10case (1)
    values this stepoklabel
  4. print '(A)', trim(label)

    14    end select15    print '(A)', trim(label)16end program status_code_demo
    outputok
    values this stepoklabel
  1. status ← 1

    6status = 17select case (status)
    values this step1status
  2. matched ← case (1)

    6status = 17select case (status)8    case (0)
    values this stepcase (1)matched1status
  3. label ← retry

    10case (1)11    label = 'retry'12case default
    values this stepretrylabel
  4. print '(A)', trim(label)

    14    end select15    print '(A)', trim(label)16end program status_code_demo
    outputretry
    values this stepretrylabel
  1. status ← 2

    6status = 27select case (status)
    values this step2status
  2. matched ← case default

    6status = 27select case (status)8    case (0)
    values this stepcase defaultmatched2status
  3. label ← failed

    12    case default13        label = 'failed'14end select
    values this stepfailedlabel
  4. print '(A)', trim(label)

    14    end select15    print '(A)', trim(label)16end program status_code_demo
    outputfailed
    values this stepfailedlabel
status code A small integer can summarize the result of an operation.
select case `select case` keeps outcome mapping explicit.
default case `case default` handles unexpected status values.