Variablen können mit einfacher Zuweisung, Tupelzuweisung, Zuweisung nach Wert oder Zuweisung nach Referenz zugewiesen werden.

Einfache Zuweisung

Nehmen Sie in PAscript mit dem Operator = Zuweisungen vor.

Target = Statement

Hierbei ist Statement eine Berechnung, Konstante oder ein Funktionsaufruf.

Beispiel

program
    section globals
        int32  integer
        real64 float
        text   t
    endsection
    t       = "Hello"
    integer = 5 * a + 1
    float   = sin(PI/2)
endprogram

Tupelzuweisung

In PAscript können Funktionen Tupel ausgeben.

[var_1, var_2, ..., var_n] = functionCall ()

Beispiel

program
    section globals
        int32  integer
        real64 float
        text   t
    endsection
    [t, integer, float] = myFunction()
endprogram
function [text a, int32 b, real64 c] = myFunction()
    a = "Hello"
    b = 2
    c = 3.1415
endfunction

Zuweisung nach Wert

Wenn Sie eine Variable nach Wert zuweisen, wird eine Kopie des Quellwerts in den Zielwert geschrieben. Wenn sich der Quellwert ändert, enthält der Zielwert immer noch den ursprünglichen Wert.

Mit dem Operator = können Sie einem Zielwert eine einfache Datentypquelle zuweisen. Einfache Datentypen sind Zahlen und Text.

Beispiel

int32 target = 1
int32 source = 123
target = source  //  target is assigned the value 123
source = 5      //  source is assigned the value 5 while the target remains 123
section globals
  text text1, text2
endsection

text1 = "Hello"  //  text1 is assigned the value "Hello"
text2 = text1    //  text2 is assigned the value "Hello"
text1 = "world"  //  text1 is assigned the value "world" while text2 remains "Hello"

Zuweisung nach Referenz

Wenn Sie eine Variable nach Referenz zuweisen, wird keine Kopie des ursprünglichen Objekts erstellt. Stattdessen zeigt die Referenz direkt auf das ursprüngliche Objekt. Änderungen an der Quelle werden sofort auf das Zielsystem übertragen.

Mit dem Operator = können Sie einem Zielwert eine komplexe Datentypquelle zuweisen. Komplexe Datentypen umfassen alle Datentypen außer Zahlen und Text.

Hinweis Globale Wertetabellen können nicht mit Zuweisung nach Referenz überschrieben werden. Mit dem :copyFrom()-Befehl können Sie globalen Wertetabellen Werte zuweisen.

Beispiel

section globals
  variant [] table1
endsection
variant [10] table2 // Definition local table table2

table2 = table1 // Assignment by reference: table2 is now a synonym for table1

table1:setText(0,"Hello") // Element 0 of table1 and table2 have the value "Hello"

table2:setText(1,"world") // Element 1 of table1 and table2 have the value "world"

Stichwort für Referenzen

Verwenden Sie das Stichwort ref, um einfache Variablen per Referenz zu deklarieren. Einfache Variablen umfassen Variablen mit numerischem oder textbasiertem Datentyp.

Verwenden Sie außerdem das Stichwort ref, um Parameter an Tasks weiterzugeben.

Das vorangestellte Stichwort ref zeigt an, dass die Variable der Zielvariablen als Referenz zugewiesen werden soll.

ref datatype variableReference [=Initialization]

Wenn Sie eine Variable mit dem Stichwort ref deklarieren, müssen Sie diese Variable mit dem Stichwort ref einer anderen Variablen zuweisen.

Nachdem Sie der Variablen zugewiesen haben, eine andere Variable zu referenzieren, können Sie die Variable im Programmcode verwenden. Sie können die Variable beispielsweise auf einen Wert setzen. In diesem Fall haben beide Variablen den Wert.

ref int32 variableReference = ref variable1
variableReference = 5  //both variableReference and variable1 have the value 5

Eine mit dem Stichwort ref deklarierte Variable kann jederzeit einer anderen Variablen zugewiesen werden. Wenn Sie eine Variable einer anderen Variablen zuweisen möchten, rufen Sie die Zuweisung erneut mit dem Stichwort ref auf.

Wertetabellen enthalten Referenzen auf Variablen, die in einer Zelle mit :getXXXReference()- und :setXXXReference()-Attributen definiert sind. Die Datentypen int32, real64 und text verfügen außerdem über Hilfsfunktionen zum Ermitteln von Referenzen.

Beispiel: ref-Stichwort

section globals
  int32 loopCount
  text fileName
endsection

int32 loopsValue
ref int32 loopReference
text fileNameValue
ref text fileNameReference

// A simple assignment is allowed for loopValue:
loopsValue = loopCount

// loopReference must be assigned to the reference of a variable before it can be used.
// Thus, the following line results in a PAscript error.
// loopsReference = loopCount => ERROR

// Assign loopsReference to the reference of a variable
loopsReference = ref loopCount
// Now a simple assignment is allowed
loopsReference = loopsValue
// loopCount and loopsReference have the value of loopsValue

// The same principle applies to the file data type
fileNameValue = fileName
fileNameReference = ref fileName