(TranslationUnit
    [(Program
        doloop_19
        ()
        []
        []
        [(Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            []
            [(i
            []
            []
            ()
            ()
            None
            ())
            (s
            []
            []
            ()
            ()
            None
            ())]
            (TriviaNode
                []
                [(EndOfLine)
                (Comment
                    "!     (a) plain DO loop: no label on `do`, no label on `end do`."
                )]
            )
        )]
        [(Assignment
            0
            s
            0
            ()
        )
        (DoLoop
            0
            ()
            0
            i
            1
            5
            ()
            [(Assignment
                0
                s
                (+ s i)
                ()
            )]
            ()
            ()
        )
        (If
            0
            ()
            (/= s 15)
            [(ErrorStop
                0
                ()
                ()
                ()
            )]
            []
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "!     (b) Label only on `end do`. `go to 1` branches to the loop"
                )
                (Comment
                    "!     terminator, which cycles the iteration (F2018 11.1.7.5)."
                )]
            )
        )
        (Assignment
            0
            s
            0
            ()
        )
        (DoLoop
            0
            ()
            1
            i
            1
            5
            ()
            [(If
                0
                ()
                (== i 3)
                [(GoTo
                    0
                    ()
                    1
                    []
                    ()
                )]
                []
                ()
                ()
                ()
            )
            (Assignment
                0
                s
                (+ s i)
                ()
            )]
            ()
            ()
        )
        (If
            0
            ()
            (/= s 12)
            [(ErrorStop
                0
                ()
                ()
                ()
            )]
            []
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "!     (c) Labels on both `do` and `end do` (modern labelled DO)."
                )]
            )
        )
        (Assignment
            0
            s
            0
            ()
        )
        (DoLoop
            0
            ()
            2
            i
            1
            5
            ()
            [(If
                0
                ()
                (== i 3)
                [(GoTo
                    0
                    ()
                    2
                    []
                    ()
                )]
                []
                ()
                ()
                ()
            )
            (Assignment
                0
                s
                (+ s i)
                ()
            )]
            ()
            ()
        )
        (If
            0
            ()
            (/= s 12)
            [(ErrorStop
                0
                ()
                ()
                ()
            )]
            []
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)
                (Comment
                    "!     (d) Legacy `DO <label> ... <label> CONTINUE` form."
                )]
            )
        )
        (Assignment
            0
            s
            0
            ()
        )
        (DoLoop
            0
            ()
            3
            i
            1
            5
            ()
            [(If
                0
                ()
                (== i 3)
                [(GoTo
                    0
                    ()
                    3
                    []
                    ()
                )]
                []
                ()
                ()
                ()
            )
            (Assignment
                0
                s
                (+ s i)
                ()
            )]
            ()
            ()
        )
        (If
            0
            ()
            (/= s 12)
            [(ErrorStop
                0
                ()
                ()
                ()
            )]
            []
            ()
            ()
            (TriviaNode
                []
                [(EndOfLine)
                (EndOfLine)]
            )
        )]
        []
    )]
)
