A nyelvben nincsenek konkrét típusok. Minden érték egy adattípusban tárolódik el, melynek neve cella. Változót a new kulcsszóval hozhatunk létre, melyet további láthatósági annotációval láthatunk el. Változó létrehozásakor, ha nem kap értéket (nincs ott az = [valami]), a nulla értékkel inicializálódik
Deklarációs kulcsszavak
Változó létrehozásának kulcsszava ( new valtozo1 = 1 )
Osztályszintű változó vagy metódus létrehozásának kulcsszava ( static valtozo2 = 2 )
Publikus változó vagy metódus ( public valtozo3 = 3 )
Ha a kódban nincs használatban az ezen kulcszóval ellátott globális változó, akkor a fordító kihagyja a fordított állományból, nem veszi figyelembe ( stock valtozo4 = 4 )
Konstans változó, mely csak az inicializációs értékadást követően nem módosítható ( stock valtozo5 = 5 )
Példák
Alap esetben a host program nem látja a scriptbe foglalt new-val létrehozott változókat. A public kulcsszóval a host alkalmazás írni/olvasni tudja. Ezeket speciális célokra szokás használni, mint például hibaszám tárolásához, stb. Ezek csak globális változók lehetnek.
A tömbök a diszkrét indexeken (0, 1, ...) kívül használhat szimbolikus indexeket is, melyekkel struktúrákat is reprezentálhatunk. Az utóbbi azért hasznos, mert a nyelv struktúrákat nem kezel, de a többdimenziós tömbök kezelését támogatja.
Példakód a létrehozáshoz
Ekkor az msg tömbnek két indexe van, egy text néven elérhető karaktersorozat (40 karakter hosszú lehet), illetve egy priority néven futó változó. Ekkor az alábbi módon férhetünk hozzá a kívánt adatokhoz.
A karakterláncok tárolása tömb segítségével történik. Kétféle tárolási módot különböztetünk meg; packed és unpacked. Lényeges különbség a méretben van. A packed string annyi cellát foglal ahány betűből áll, míg az unpacket annyi karakter rak egy cellába amennyi belefér. Egy cellába általában 4 karakter fér, de ez implementációfüggő.
Létrehozás:
Különbség az index-zárójelben van. Ebből adódóan az egyes típusú string objektum adaott karakterének hozáférésekor a deklarációban megadott típusú zárójelet kell haszálni. Nem megfelelő zárójel és stringhatárolókarakter páros esetén warning üzenetet ad, de megfelelő hivatkozássa úgy működhet, ahogy elvárjuk tőle.
Adott karakterre (indexre) hivatkozás. A kétféle indexelés és kétféle karakterlánc reprezentáció miatt többféle működés is elérhető. Alábbi példakód az össze variációra megadja az eredményt.
Felváltva vettük az adott karakter (%c) és karakterlác (%s) kiírását. Az utóbbi esetben a megadott indextől írja ki az eredményt, míg nem csomagolt inicializáció után csomagoldként hivatkozunk, az eredmény üres.
A tag-ek segítségével a változók osztályozhatóak, így "típusok" is bevonhatók a nyelvbe. Megadásuk nem kötelező, de segítségükkel fordítás időben szűrhetőek a hibák.
Egy tag lehet erős vagy gyenge, a különbség mindössze annyi, hogy a gyenge tag-ek néhány esetben implicit használhatóak. Ha egy bináris operátor operandusai különböző tagekkel rendelkeznek, vagy csak az egyik van tagelve, akkor “tag mismatch” warningot dob, de a kód fordul.
Idáig csak egy adattípusról beszéltünk: cell, amiben csak szám tárolódik. A PAWN toolkitek tartalmaznak egy modult, amivel kezelhetünk lebegőpontos és fixpontos számokat is. Ezek eléréséhez Tag-elni kell a változókat.
Hasonlóképpen bevonható a logikai típus (true, false).