VaxNt/ProDB.PGuide.Konvence
Množina existujících příkazů. Vyčerpávající seznam všech implementovaných příkazů by byl opravdu vyčerpávající. Proto v této příručce vyjmenujeme nejprve ty, které jsou frekventované a mají vyloženě obecné použití. Existuje řada "divokých" funkcí nebo specialit, které bylo nutno implementovat díky nějakým velmi neobvyklým vlastnostem aplikace. Navíc se postupně vyvíjel názor na syntax - existuje tedy řada variant kvůli zpětné kompatibilitě. Zde si klademe za cíl dát dostatečné informace pro toho, kdo chce psát nové skripty a teprve okrajově ev. upravovat nějaké staré a třebas obsolentní skripty z minulosti. Proto příručka obsahuje nejprve bázový přehled, potom výčet frekventovaných funkcí a potom teprve taxativní výčet všech funkcí - ten navíc nutně nebude nikdy úplný. Paralelně s jazykem skriptů je nutno ještě zvládnout popisy wizardů a jejich klauzulí.
Argument list. Funkce většinou očekávají podle své povahy jako argumenty seznamy oddělené čárkami. Řada funkcí umí zpracovávat iterativně seznam argumentů, dokud není vyčerpán. Kupříkladu set nebo setv zpracovávají vždy dvojici dokud se nenarazí na situaci, kdyby jméno cílové proměnné bylo prázdné. Je potřeba s tím počítat tehdy, kdy čárka může být součástí hodnoty. K tomu účelu jsou variantní příkazy, kde oddělovačem je rovnítko a seznam argumentů nemůže být iterován. Takové příkazy, například context.set, berou jako druhý argument jednoduše "zbytek řádku po rovnítku". Pozor na to, že i nevinně vypadající příkaz: context.set !X=Nález: $(Text) může při interpretaci nabubřet na neuvěřitelné bago, to když Text je třebas hodnota MEMO položky, třebas propouštěcí zprávy pacienta. Všimněte si i toho faktu, že interpret hodnotu proměnné dekóduje na zakódované backslashe, přilepí k tomu nadpis jako konstantu a celek pěkně zakóduje a uloží do X. Obvykle by to vypadalo tak, že by to X se dosazovaly konkatenované hodnoty hned několika dalších MEMO položek (operační zpráva, ...). Zde bychom jednoduše dopsali pár dolarových proměných - A JE TO!
Resolvování hodnot proměnných v argument listu Pro všechny příkazy platí, že jejich argumenty následující za jménem funkce se resolvují substitucí podle aktuálních hodnot proměnných kontextu skriptu, ale i podle hodnot globálního kontextu (systémové proměnné). Vedle určení, jaké vlastně hodnoty se mají používat je nutno vyřešit i zapeklitou otázku bacslashů. Jsou-li v proměnných jména souborů, není záhodno backslashe interpretovat. Jsou-li v proměnné ale naopak zakódovány všechny řádky nějakého MEMO fieldu, je potřeba při výpisu takové hodnoty do databáze nebo souboru zase provést dekódování sekvencí \n na CRLF ... Proto je možno ovládat pomocí prefixů vykřičníků způsob interpretace. Některé příkazy, kupříkladu viewer, už "tuší", že argumentem bude jméno souboru a snaží se jej uchopit v syrové podobě a ponechat backslashe. U většiny jiných příkazů je ale předem úplně nejasné, zda jsou backslashe skutečnými literály nebo výsledkem zakódování řídících znaků. Pravidla jsou následující:
Resolvování - jediný průchod Argument list se prochází jenom jednou zleva doprava a hodnoty se substituují jenom jednorázově. Tedy nepoužívá se rekurze a není možno ji zde využívat.