Assign

Assign function, a statement (stmt) node.

Declaration

Syntax

Assign(int label, identifier variable)

Arguments

label contains statement label. variable contains integer variable.

Return values

None.

Description

assign statement assigns a statement label to a variable.

The label is the label of an executable statement or a FORMAT statement. The integer variable, once assigned a statement label, can be reassigned the same statement label, a different label, or an integer.

Types

Examples

program assign
    integer :: x
    real :: y
10  format('(i3)')
    assign 10 to x
20  assign 10 to x
    ASSIGN 10 TO x
30  ASSIGN 10 TO y ! An integer variable is required in this context.
end program

ASR:

(TranslationUnit
    (SymbolTable
        1
        {
            assign:
                (Program
                    (SymbolTable
                        2
                        {
                            x:
                                (Variable
                                    2
                                    x
                                    Local
                                    ()
                                    ()
                                    Default
                                    (Integer 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                ),
                            y:
                                (Variable
                                    2
                                    y
                                    Local
                                    ()
                                    ()
                                    Default
                                    (Real 4 [])
                                    Source
                                    Public
                                    Required
                                    .false.
                                )

                        })
                    assign
                    []
                    [(GoToTarget
                        10
                        10
                    )
                    (=
                        (Var 2 x)
                        (IntegerConstant 10 (Integer 4 []))
                        ()
                    )
                    (GoToTarget
                        20
                        20
                    )
                    (=
                        (Var 2 x)
                        (IntegerConstant 10 (Integer 4 []))
                        ()
                    )
                    (=
                        (Var 2 x)
                        (IntegerConstant 10 (Integer 4 []))
                        ()
                    )
                    (GoToTarget
                        30
                        30
                    )
                    (=
                        (Var 2 y)
                        (IntegerConstant 10 (Integer 4 []))
                        ()
                    )]
                )

        })
    []
)

See Also