A GAMS programozási nyelv

Nyelvi elemek

Mindenekelőtt azt kell tudni a nyelvről, hogy nem tesz különbséget kis- és nagybetűk között. Az alábbiakban a különböző nyelvi elemek - azonosítók, változók, stb. - szintatktikájára vonatkozó megkötéseket ismertetem.

Azonosítók

Az angol ábécé kis- és nagybetűi, a számjegyek és az aláhúzásjel, azaz az '_' jel használhatók, első karakter csak betű lehet, maximálisan 31 karakter hosszú lehet.

Kulcsszavak

A rendszerben az alábbi szavak a kulcsszavak, illetve foglalt szavak:

alias, binary, do, else, elseif, equation, for, if, integer, loop, model, parameter, repeat, scalar, set, solve, sum, table, until, variable, while

Megjegyzés:
fentiek között van néhány, amely többesszámban is használható, ezek a későbbiekben említésre kerülnek.

Halmazok elemeinek nevei

Itt is maximálisan 31 karakter használható, azonban első helyen szerepelhet számjegy is, illetve használhatók a '+', a '-' és az '_' jelek. Megadhatók az elemek idézőjelek között is - idézőjelként használható mind a " jel, mind a ' jel -, ekkor tetszőleges speciális karakter szerepelhet a névben, még a másik fajta idézőjel is. Azaz érvényes elemnév például az 'elem "ilyen" neve' is.

Magyarázó szöveg

Opcionálisan megadható legfeljebb 255 karakter hosszú egysoros magyarázó szöveg minden egyes azonosítóhoz, amely ugyanabban a sorban kell legyen, mint maga az azonosító. Használhatók benne a szóköz és az '_' jel is, illetve ha idézőjelek között adjuk meg, akkor az előző pontban leírtaknak kell megfelelni.

Megjegyzések

GAMS-ban többféleképpen lehet megjegyzéseket a forráskódba tenni. Ebben a pontban a kommentezés szabályairól lesz szó, ahol gyakran utalunk a dollár-kifejezések fejezetben taglalt ún. dollár-parancsokra.

Egysoros megjegyzés

Egysoros megjegyzést a sor elején található '*' karakter vezet be, és a sorvége jelig tart. Ezt a karaktert lecserélhetjük tetszőleges c karakterre a '$Comment c' dollár-paranccsal.

Megjegyzés:
Egysoros megjegyzések a kimeneti fájlokban sorszámozottan jelennek meg.

Többsoros megjegyzés

Többsoros megjegyzéseket a $Ontext és a $Offtext dollár-parancsok között adhatunk meg. A két parancs közötti szövegben tetszőleges karakterek, azonosítók, parancsok, utasítások lehetnek, azokat figyelmen kívül hagyja a rendszer.

Megjegyzés:
Ezek a megjegyzések is megjelennek a kimeneti fájlokban, de sorszámozás nélkül.

Sorvégi megjegyzés

Sorvégi megjegyzést is dollár-parancsok használatával tudunk írni. Először aktiválnunk kell a $OnEolCom dollár-paranccsal, és a dupla felkiáltójel (!!) után írt szöveg lesz a komment. Ez a delimiter is lecserélhető másra a '$EolCom cc' dollár-paranccsal.

In-line megjegyzés

Az előzőekhez hasonlóan, a $OnInline dollár-parancs aktiválja ezt a fajta megjegyzést. Itt két delimiter van, egy kezdő és egy záró, amelyek alapértelmezésben a '/*' és '*/' jelek (lásd C/C++). Ezek is átdefiniálhatók a '$InlineCom begin end' dollár-paranccsal.

Megjegyzés:
Alapértelmezésben nem ágyazhatók egymásba a megjegyzések, de a $OnNestCom dollár-parancs kiadása után ez megtehető. (Veszélyes...)
Továbbá a $InlineCom használata is aktiválja ezt a fajta megjegyzést, nem szükséges a $OnInline parancsot kitenni elé.

Margó megjegyzés

GAMS-ban van lehetőség olyan kommentezésre is, amely a sorban egy adott pozíció előtt, illetve után lévő szöveget kommentként kezel. Ezt a '$minCol m maxCol x' dollár-paranccsal tudjuk aktiválni, hatása a $OffMargin dollár-parancsig tart (újra aktiválni a $OnMargin dollár-paranccsal lehet). Ekkor az m-1-edik pozícióig, illetve az x+1-edik pozíciótól kezdve minden sorban a szöveg komment, és csak a két pozíció közötti részt értelmezi a fordító.

Megjegyzés:
használható külön-külön a $minCol és a $maxCol is, alapértelmezésben előbbi 1, utóbbi pedig 32767. A kommentnek minősülő rész itt is kikerül a kimeneti fájlokba.

Rejtett megjegyzés

Ez olyan egysoros megjegyzés, amely nem kerül a kimeneti fájlokba. A $Hidden dollár-paranccsal írhatunk rejtett megjegyzéseket.