Avenue nyelv

Az Avenue egy objektum orienált script nyelv az ESRI ArcView asztali térinformatikai rendszeréhez. A nyelv nem teszi lehetővé saját osztályok létrehozását. A kis és nagybetűket nem különbözteti meg az azonosítókban. Az Avenue script nem lehet rekurziv (nem készíthetünk önmagát meghívó scriptet). Az Avenue scripteket csak az ArcView-ban lehet futtatni. Az Avenue nem szigorúan típusos nyelv, a változókat nem kell deklarálni.
Az Avenue a kifejezéseket balról jobbra értékeli ki, a műveleti jelek közötti precedenciát nem ismeri, a kiértékelési sorrendet zárójelek segítségével befolyásolhatjuk.
Például: a = 3 + 4 * 2 eredménye 14 és nem 11! A műveletek sorrendjének megváltoztatásával vagy zárójelek alkalmazásával kaphatjuk meg a 11-t eredményképpen: a = 4 * 2 + 3 vagy a = 3 + (4 * 2).
Egy utasítást több sorban is leirhatunk, nem kell a folytatósort jelölni, de több utasítást is irhatunk egy sorba.

A nyelv elemei

Szintakszis

Az objektumok metodusait, tulajdonságait háromféle módon lehet elérni.

Postfix jelöles
A legtöbb esetben a postfix jelölést használjuk.
<objektum>.<request>
Például: av.GetProject
A metodus hívásokat összeláncolhatjuk.
<objektum>.<request>.<request>.<request>
Például: theView.FindTheme ("telkek").SetVisible (true)

Infix jelölés
Ezt a formát leggyakrabban az arithmetikai kifejezésekben használjuk.
<objektum> <request> <objektum>
Például: 12 + 5, "alma"++"körte"
A posztfix jelölés is használható az arithmetikai jifejezésekben
Például: 12.Minus(5) azonos a 12 - 5 kifejezéssel

Prefix jelölés A prefix jelölést az előjel váltás (unáris minusz) és a logikai tagadás esetén használjuk.
<request><objektum>
Például: -12 vagy not theTheme.IsVisible ez utóbbit a theTheme.Isvisible.Not alakban is irhatjuk.
 
 
 
értékadó utasítás
változó = objektum
Példa: a = 12
aDokument = av.GetActiveDoc
Feltételes utasítás (három változat)
if (logikai kifejezés) then
  utasítás blokk
end
Példa:
if (a > b) then
  MsgBox.Info ("a nagyobb mint b", "eredmény")
end
if (logikai kifejezés) then
  utasítás blokk1
else
  utasítás blokk2
end
Példa:
if (a > b) then
  MsgBox.Info ("a nagyobb mint b", "eredmény")
else
  MsgBox.Info ("b nagyobb vagy egyenlo a", "eredmény")
end
if (logikai kifejezés1) then
  utasítás blokk1
elseif (logikai kifejezés2) then
  utasítás blokk2
else
  utasítás blokk3
end
Példa:
if (a > b) then
  MsgBox.Info ("a nagyobb mint b", "eredmény")
elseif (a < b) then
  MsgBox.Info ("b nagyobb mint a", "eredmény")
else
  MsgBox.Info ("b egyenlo a", "eredmeny")
end
Feltétellel vezérelt ciklus
while (logikai kifejezés)
 utasítás blokk
end

Példa:
i = 1
szumma = 0
while i < 10
 szumma = szumma + i
 i = i + 1
end

Iteráló ciklus
for each elem in gyűjtemény
 utasítás blokk
end
Példa:
szumma = 0
for each i in 1..9 by 1
 szumma = szumma + i
end
Vezérlés a ciklusokon belül
break - kilépés a while vagy for ciklusból
continue - folytatás a ciklus következő értékével
Példa:
for each v in av.GetDocs
 if v.Is(View).Not then continue end
 ablak = v.GetWin
 ablak.Open
end
Vezérlés a scriptek között
return objektum
exit

Az Avenue requestek neveit a következő konvenciók felhasználásával alakították ki:
Kezdő
szó
Művelet Példa
Add Objektum hozzáadása az objektumok egy csoportjához theView.AddTheme
As Objektum konvertálása egy másik osztályba aString.AsFileName
Can Ellenőrzi, hogy egy objektum egy műveletet végre tud-e hajtani theTheme.CanEdit
Find A megadott objektumot keresi és egy referenciát ad vissza theTheme.FindTheme ("epuletek")
Get Az objektumra vonatkozó referenciát ad vissza theTheme.GetThemes
Has Megadja, hogy az objektum egy adott allapotban van-e aScript.HasError
Is Igaz vagy hamis értéket ad vissza aButton.IsVisible
Make Egy új objektum példányt hoz létre View.Make
Return Egy új objektumot hoz létre és egy referenciát ad vissza az objektumra aFileName.ReturnDir
Set Az objektum egy tulajdonságát állítja be aButton.SetIcon

Eljárások, függvények létrehozása

Az Avenue nyelvben nincsenek a Pascal, C, Basic nyelvben megszokott eszközök az eljárások és paraméter listák létrehozására. Viszont az egyik scriptből végrehajthatunk egy másik scripttet és egy listát adhatunk át a végrehajtandó scriptnek. Ezt a listát a meghívott script a self objektumán keresztül éri el.

Az av.Run, az av.DelayedRun és a Script.DoIt metodusok használhatók egy script végrehajtására. Az av.Run-nak két paramétert adhatunk át. Az első a futtatandó script neve (elötte le kell fordítani), a második egy lista a paraméterekkel. Az Avenue nem képes a paraméterek számának és típusának ellenörzésére, azt a hívott scriptnek kell megtennie.