Med LifeLines programmeringssystem kan du skapa rapporter i valfri stil och layout. Du kan generera filer i troff, Postscript, TeX, SGML, eller annat valfritt ASCII-baserat format för ytterligare textbehandling och utskrifter. Du kommer åt rapportgeneratorn genom att välja kommandot r från huvudmenyn. Du kan också använda programmeringssystemet för att skapa förfrågningsprogram och andra behandlande program, vars resultat skrivs ut direkt till skärmen. Det finns till exempel ett LifeLinesprogram som beräknar relationen mellan vilka två personer som helst i en databas.
Alla LifeLinesprogram är skrivna i LifeLines programmeringsspråk, och programmen sparas i vanliga filer. När du begär att LifeLines ska köra ett program, så frågar LifeLines dig efter namnet på programfilen, frågar var du vill att utmatningen från programmet ska skrivas, och kör därefter programmet.
Anta till exempel att du vill att LifeLines ska skapa en antavla. En sådan rapport skulle kunna se ut så här:
Exempel 1-1. Exempel på antavelrapport
1. Thomas Trask WETMORE IV
b. 18 December 1949, New London, Connecticut
2. Thomas Trask WETMORE III
b. 15 October 1925, New London, Connecticut
3. Joan Marie HANCOCK
b. 6 June 1928, New London, Connecticut
4. Thomas Trask WETMORE Jr
b. 5 May 1896, New London, Connecticut
d. 8 November 1970, New London, Connecticut
5. Vivian Genevieve BROWN
b. 5 April 1896, Mondovi, Wisconsin
6. Richard James HANCOCK
b. 18 August 1904, New London, Connecticut
d. 24 December 1976, Waterford, Connecticut
7. Muriel Armstrong SMITH
b. 28 October 1905, New Haven, Connecticut
8. Thomas Trask WETMORE Sr
b. 13 March 1866, St. Mary's Bay, Nova Scotia
d. 17 February 1947, New London, Connecticut
9. Margaret Ellen KANEEN
b. 27 October 1859, Liverpool, England
d. 10 May 1900, New London, Connecticut
... och mycket mer
Här är ett LifeLinesprogram som genererar en sådan rappport:
Exempel 1-2. Exempel på rapportskript för en antavelrapport
proc main () { getindi(indi) list(ilist) list(alist) enqueue(ilist, indi) enqueue(alist, 1) while(indi, dequeue(ilist)) { set(ahnen, dequeue(alist)) d(ahnen) ". " name(indi) nl() if (e, birth(indi)) { " b. " long(e) nl() } if (e, death(indi)) { " d. " long(e) nl() } if (par, father(indi)) { enqueue(ilist, par) enqueue(alist, mul(2,ahnen)) } if (par,mother(indi)) { enqueue(ilist, par) enqueue(alist, add(1,mul(2,ahnen))) } } }
Anta att det här programmet finns i filen anor.ll. När du väljer kommandot r från huvudmenyn, så frågar LifeLines:
Vad är namnet på programmet? Förvald sökväg: . skriv in filnamn (*.ll)
Du skriver in anor. Eftersom programmet genererar en rapport, så frågar LifeLines var det ska skriva rapporten:
Vad är namnet på utmatningsfilen? skriv in filnamn:
Du skriver in ett filnamn, till exempel mina.anor. LifeLines läser in programmet anor.ll, kör programmet, och skriver ut rapporten till mina.anor. LifeLines rapporterar alla syntax- eller körningsfel som hittas medan programmet körs.
Ett LifeLinesprogram består av procedurer och funktioner; alla program måste innehålla minst en procedur benämnd main. Proceduren main körs först; det kan anropa andra procedurer, funktioner och inbyggda funktioner. I exemplet med antavlan finns det bara en procedur.
En procedurkropp består av en följd av deklarationer. I exempelprogrammet är de fem första deklarationerna följande:
getindi(indi) list(ilist) list(alist) enqueue(ilist, indi) enqueue(alist, 1)
Den första deklarationen anropar den
inbyggda funktionen getindi
(get individual - hämta person), vilken får
LifeLines att be dig identifiera en
person i den kortfattade stilen för identifiering.
Skriv in sträng för program skriv in namn, nyckel, refn eller lista:
Efter att du har identifierat en person, så tilldelas han
eller hon variabeln indi
. De följande två
deklarationerna anger två
listvariabler, ilist
och
alist
. Listor innehåller
sekvenser av saker; det finns operationer för att placera
saker i listor, plocka bort saker därifrån, och för att
iterera genom listelementen. I exemplet innehåller
ilist
en lista med anor i antavelordning
som ännu inte rapporterats, och alist
innehåller deras respektive annummer.
De följande två deklarationerna anropar
funktionen enqueue
, varvid de första
medlemmarna läggs till i båda listorna. Personen som
identifierats av funktionen getindi
blir
den första medlemmen i ilist
, och numret
ett, denna persons antavelnummer, blir den första medlemmen i
alist
.
Den återstående delen av programmet är:
while(indi, dequeue(ilist)) { set(ahnen, dequeue(alist)) d(ahnen) ". " name(indi) nl() if (e, birth(indi)) { " b. " long(e) nl() } if (e, death(indi)) { " d. " long(e) nl() } if (par, father(indi)) { enqueue(ilist, par) enqueue(alist, mul(2,ahnen)) } if (par, mother(indi)) { enqueue(ilist, par) enqueue(alist, add(1,mul(2,ahnen))) } }
Detta är en loop som iterativt tar bort personer och deras antavelnummer från de två listorna, och därefter skriver ut deras namn och födelse- och dödsdata. Om personerna har föräldrar i databasen, så placeras föräldrarna och föräldrarnas antavelnummer på slutet av respektive lista. Loopen itererar till dess listan är tom.
Loopen är en loopdeklaration av typen while. Raden:
while(indi, dequeue(ilist)) {tar (via
dequeue
) en person från
ilist
, och tilldelar personen till
variabeln indi
. Så länge som det finns
personer i ilist
, så följer ytterligare en
iteration av loopen.
Deklarationen:
set(ahnen, dequeue(alist))är en deklaration av typen tilldelning. Det andra argumentet utvärderas; Dess värde tilldelas till det första argumentet, som måste vara en variabel. Här tas nästa nummer i
alist
bort, och tilldelas till variabeln
ahnen
. Detta är antavelnumret på personen
som just togs bort från ilist
.
Raden:
d(ahnen) ". " name(indi) nl()innehåller fyra deklarationer av typen uttryck; när uttryck används som deklarationer, så behandlas deras värden, om något, som strängar och skrivs direkt till rapportfilen. Funktionen
d
konverterar
dess heltalsargument till en numerisk sträng. ". " är ett
bokstavligt (konstant) strängvärde. Funktionen
name
returnerar den förvalda formen av en
persons namn. Funktionen nl
returnerar en
sträng som innehåller tecknet för ny rad.
De nästa två raderna:
if(e, birth(indi)) { " b. " long(e) nl() } if(e, death(indi)) { " d. " long(e) nl() }skriver ut grundläggande födelse- och dödsdata för en person. Dessa rader är if-deklarationer. Det andra argumentet i villkorssatsen utvärderas och tilldelas till det första argumentet, vilket måste vara en variabel. Den första if-deklarationen anropar födelsefunktionen , varvid den första födelseposten i en personpost returneras. Om födelseposten finns så tilldelas den variabeln
e
, och kroppen (det som finns
mellan klammerparenteserna) för if-deklarationen
exekveras. Kroppen består av tre deklarationer av
typen uttryck: en ordagrann, samt anrop till
funktionerna long
och
nl
. Long
tar en
händelse och skickar tillbaka värdet på den
första DATE
-raden och
PLAC
-raden i
händelsen.
Den sista delen av programmet är:
if (par, father(indi)) { enqueue(ilist,par) enqueue(alist,mul(2,ahnen)) } if (par,mother(indi)) { enqueue(ilist,par) enqueue(alist,add(1,mul(2,ahnen))) }
De här raderna lägger till fadern och modern till den aktuella
personen, om endera av dem, eller båda, finns i databasen, i
ilist
. De beräknar också och lägger till
föräldrarnas antavelnummer i alist
. En fars
annummer är det dubbla jämfört med sitt barns. En mors
annummer är det dubbla jämfört med sitt barns plus ett. Dessa
värden beräknas med funktionerna mul
och
add
.
LifeLinesprogram lagras i filer som
du redigerar med textredigeraren. Man redigerar dem inte från
LifeLines, istället redigerar du
dem som vilken textfil som helst. Programmen kan sparas i
vilken katalog som helst; de behöver inte sparas i eller
anknytas till LifeLinesdatabaser.
Du kan sätta skalvariabeln LLPROGRAMS
till att
innehålla ett antal kataloger som
LifeLines automatiskt kommer att
söka i efter program när du begär att ett program ska köras.
Ett LifeLinesprogram består av en eller flera procedurer och funktioner. En procedur har formatet:
proc namn(parametrar) { deklarationer }
Namn
är namnet på proceduren,
parametrar
är en (icke-obligatorisk)
kommaseparerad lista över parametrar, och
deklarationer
är en lista över deklarationer
som utgör procedurkroppen. Rapportgenereringen
börjar med den första deklarationen i
proceduren som benämns main.
Procedurer får anropa andra
procedurer och funktioner.
Procedurer anropas med deklarationen
call som beskrivs nedan. När en
procedur anropas, exekveras de
deklarationer som utgör dess kropp.
En funktion har formatet:
func namn(parametrar) { deklarationer }
Namn
, parametrar
och
deklarationer
definieras som i
procedurer. Funktioner får anropa
andra procedurer och funktioner. När
en funktion anropas, exekveras de
deklarationer som den utgörs av. En
funktion skiljer sig från en
procedur genom att den returnerar ett
värde till proceduren eller
funktionen som anropar den. Värden returneras av
deklarationen return, som beskrivs
nedan. Rekursiva funktioner är tillåtna. En
funktion anropas genom att anropa det i ett
uttryck.
Funktions- och procedurparametrar skickas via värde, utom för list-, set- och tabletyperna vilka skickas via referens. Vid återdeklaration av en parameter instantieras en ny variabel av den angivna eller underförstådda typen. Den föregående instansen fortsätter att existera inom räckviden för anroparen.
Du kan lägga in kommentarer i dina LifeLinesprogram genom att använda följande skrivsätt:
/*...kommentartext innehållande vilka tecken som helst utom */... */
Kommentarer inleds med /* och avslutas med */. Kommentarer får förekomma på rader för sig själva, eller på rader där det finns programkod. Kommentarer får sträcka sig över flera rader. Man får inte nästla kommentarer (ha en kommentar i en annan kommentar).
Det finns ett antal typer av deklarationer. De enklaste är av typen uttryck, ett uttryck som inte är en del av någon annan deklaration eller annat uttryck. En mer fullständig definition av uttryck återfinns nedan. En uttrycksdeklaration utvärderas, och om dess värde är icke-noll, antas det vara en sträng, och skrivs till den skapade rapportfilen. Om dess värde är noll, så skrivs ingenting ut till rapportfilen. Uttrycket
name(indi)exempelvis, där
indi
är en person, returnerar personens namn
och skriver ut det till rapportfilen. Uttrycket
set(n,nspouses(indi))å andra sidan tilldelar variabeln
n
det antal makar som
personen indi
har haft, men eftersom
set
returnerar
noll, så skrivs ingenting till
rapportfilen.
Programmeringsspråket inbegriper if-deklarationer, while-deklarationer och proceduranropsdeklarationer, med följande format:
if ([varb,] uttr) { deklarationer } [ elsif ([varb], uttr) { deklarationer } ]* [ else { deklarationer } ]
while ([varb,] uttr ) { deklarationer }
call namn(argt)
Hakparenteserna anger vilka delar av syntaxen för deklarationer som är valfria att ha med. En if-deklaration exekveras genom att det första villkorsuttrycket i if-satsen utvärderas. Om det är icke-noll, så utvärderas deklarationerna i if-satsen, och den övriga delen av if-deklarationen, om den finns, hoppas över. Om värdet är noll, och en elsif-sats följer, så utvärderas villkorssatsen i elsif-satsen, och om den är icke-noll, så exekveras deklarationerna i den satsen. Villkorssatser utvärderas till dess en av dem är icke-noll, eller till dess det inte finns några fler. Om inga villkorssatser är icke-noll, och om if-satsen slutar med en else-sats, så exekveras deklarationerna i else-satsen. Det finns två typer av villkorliga uttryck. Om Villkorssatsen är ett enda uttryck, så utvärderas det bara. Om villkorssatsen är en variabel följd av ett uttryck, så utvärderas uttrycket och dess värde tilldelas till variabeln.
Lägg märke till att if behandlar noll-strängar som falska, men tomma strängar som sanna. Fördelen med detta är att
if(birth(indi))
returnerar sant om det finns en BIRT-post, till och med om den är tom, men returnerar falskt om det inte finns någon BIRT-post överhuvudtaget.
While-deklarationen tillhandahåller en loopmekanism. Villkorssatsen utvärderas, och om den är icke-noll, så exekveras loopkroppen. Efter varje iterering återutvärderas uttrycket; så länge som det är icke-noll, så upprepas loopen.
Call-deklarationen tillhandahåller proceduranrop.
Namn
måste matcha en av de
procedurer som definieras i rapportprogrammet.
Argt
är en kommaseparerad lista över
argumentuttryck. Rekursion är
tillåten. När ett call exekveras, så blir värdena
för dess argument utvärderade och använda för att
initiera procedurens parametrar.
Proceduren exekveras därefter. När
proceduren är avslutad, så börjar exekveringen om
vid den punkt som följer närmast efter anropet.
Följande rapportspråksuttryck påträffas vanligen endast nära början av en rapport:
char_encoding(sträng)
require(sträng)
option(sträng)
include(sträng)
global(varb)
Deklarationen char_encoding anger vilken teckenkodning som används i rapporten, så att rapportprocessorn kan korrekt tolka bytes som inte finns i ASCII (t. ex. åäö, bokstäver med accent). Ett exempel, som anger en teckenkodning som är vanlig i Västeuropa:
char_encoding("ISO-8859-1")Deklarationen option tillåter rapportförfattaren att ange valbara inställningar. Den enda valbara inställningen som finns tillgänglig för närvarande är "explicitvars", vilken får all användning av variabler som inte tidigare deklarerats eller angivits att rapporteras som parsningsfel. Deklarationen require tillåter rapportförfattaren att ange att rapporten ifråga kräver en version av rapporttolken som inte är äldre än den angivna. Deklarationen include lägger till innehållet i en annan fil i den aktuella filen; dess
sträng
uttryck är namnet på en annan
LifeLinesprogramfil. Det beskrivs
mer i detalj nedan. Deklarationen global måste
användas utanför alla procedurer och
funktion; den deklarerar att en
variabel
gäller globalt.
Rapportspråket inbegriper också följande typer av deklarationer, vilka härmar några vanliga programmeringsspråk:
set(varb, uttr)
continue()
break()
return([uttr])
Deklarationen set är tilldelningsvariabeln;
uttrycket
utvärderas, och dess värde tilldelas till
variabeln
. Deklarationen
continue hoppar till slutet av den aktuella
loopen, men lämnar inte loopen. Deklarationen
break bryter ut från den närmast nästlade loopen.
Deklarationen return återgår från den aktuella
proceduren eller
funktionen. Procedurer har
return-deklarationer utan uttryck; funktioner har
return-deklarationer med uttryck. Ingen av dessa deklarationer
returnerar ett värde, så ingen har någon direkt effekt på
programmets utdata.
Förutom dessa konventionella deklarationer tillhandahåller rapportgeneratorn andra itereringsdeklarationer för att loopa igenom genealogiska och andra typer av data. Deklarationen children exempelvis, itererar igenom barnen i en familj, deklarationen spouses itererar igenom de makar en person haft, och deklarationen families itererar igenom de familjer som en person är maka/make eller förälder i. Ett antal argument till iteratorn sätts med värden för varje iterering. När itereringen slutförts, har dessa variabler värdet "null". Dessa itereringstyper och andra typer beskrivs mer i detalj längre fram under respektive datatyp.
Det finns fyra typer av uttryck: bokstavliga, heltal, variabler och inbyggda eller användardefinierade funktionsanrop.
En bokstavlig är vilken sträng som helst som är innesluten i citationstecken; den är sitt eget värde. Ett heltal är vilken heltals- eller flyttalskonstant som helst; den är sitt eget värde. En variabel är en namnad plats som kan tilldelas olika värden under programkörningen. Värdet för en variabel är det senaste värdet som det tilldelats. Variabler har inte någon fast typ; vid olika tidpunkter i ett program kan samma variabel tilldelas data av helt olika typer. En identifierare följd av en kommaseparerad lista av uttryck omgivna av parenteser, är antingen ett anrop till en inbyggd funktion eller ett anrop till en användardefinierad funktion.
Programmeringsspråket i LifeLines tillhandahåller en inkluderingsfunktion. Med den kan ett LifeLinesprogram hänvisa till andra LifeLinesprogram. Funktionen tillhandahålls genom deklarationen include:
include(sträng)där
sträng
är en sträng inom citationstecken som
är namnet på en annan
LifeLinesprogramfil. När en
include-deklaration påträffas, så läses det program som
hänvisas till in, som om innehållet i filen som hänvisas till
hade funnits i originalfilen just då. Detta gör det möjligt
för dig att skapa biblioteksfiler för
LifeLinesprogram, som kan användas
av många program. Inkluderade filer kan i sin tur innehålla
include-deklarationer, och så vidare.
LifeLines använder skalvariabeln
LLPROGRAMS
, om den är inställd, för att söka
efter inkluderade filer. De filer som inkluderats med en
include-deklaration läses bara in en gång. Om
flera include-deklarationer påträffas där samma
fil är inkluderad, så har endast den första deklarationen
någon effekt.
Den enda main-proceduren som faktiskt körs är den i den rapport som användaren valt. Main-procedurer i andra rapporter som inkluderas körs inte. Detta möjliggör att en modul avsedd att inkluderas i andra program kan ha en main-procedur for testsyften. Om flerfaldiga funktioner eller procedurer med samma namn inkluderas (förutom med namnet main), så genereras ett körningsfel och programmet körs inte.
Det finns en lång rad med inbyggda funktioner, och den kommer att fortsätta att växa en tid framöver. I den första underavdelningen nedan beskrivs de typer av värden som används i LifeLinesprogram; det är de olika typerna av variabler, funktionsparametrar och returneringsvärden för funktioner. I de återstående avdelningarna delas de inbyggda funktionerna in i logiska kategorier och beskrivs.
union av alla typer
boolesk (0 representerar falskt; allt annat representerar sant)
händelse; referens till understruktur av noder i en GEDCOM-post (referens)
familj; referens till en FAM-post i GEDCOM (referens)
flyttalsnummer (får användas överallt där ett HELTAL får användas)
person; referens till en INDI-post i GEDCOM (referens)
heltal (på de flesta system ett 32-bitars signerat värde)
lista av godtycklig längd, med vilka värden som helst (referens)
GEDCOM-nod; referens till en rad i ett GEDCOM-träd/post (referens)
union av alla aritmetiska typer (HELTAL och FLYTTAL)
personuppsättning av godtycklig längd (referens)
textsträng
söktabell med nyckelvärden (referens)
typ med inga värden
I summeringarna av de inbyggda funktionerna
nedan, visas varje funktion tillsammans med dess
argumenttyper och dess
returneringstyp. Typerna kommer från den
föregående listan. Ibland måste ett argument till
en inbyggd funktion vara en
variabel; när detta är fallet anges dess typ med
XXX_V
, där XXX
är en av
typerna ovan. De inbyggda funktionerna
kontrollerar inte vilka typer av argument de har.
Variabler kan innehålla värden av alla typer, men
vid varje tidpunkt kommer de att innehålla värden av endast en
typ. Lägg märke till att HÄNDELSE är en undertyp
till NOD, och att BOOL är en
undertyp till HELTAL. Inbyggda funktioner av
typen TOM returnerar faktiskt
nollvärden.
Referenstyper (angivna ovan inom parentes) följer "pekarsemantik", med vilket avses att tilldelning av en variabel till en annan resulterar i att båda variablerna pekar på samma data (ingen kopia görs). Därför, om du skickar en sträng till en funktion som förändrar strängen, så ser inte anroparen förändringen, eftersom en sträng inte är en referenstyp. Om du å andra sidan skickar en tabell till en funktion som förändrar tabellen, så ser inte anroparen förändringen, eftersom en tabell är en referenstyp.
addition - två till 32 argument
subtraktion
multiplikation - två till 32 argument
division
modulus (rest)
exponentiering
negering
konvertera heltal till flyttal
konvertera flyttal till heltal
addera ett till variabel
subtrahera ett från variabel
logiskt och - från två till 32 argument
logiskt eller - från två till 32 argument
logiskt inte
likhet (ej strängar)
olikhet
mindre än
större än
mindre än eller lika med
större än eller lika med
Add
, sub
,
mul
och div
gör
vanlig aritmetik på hel- eller flyttalsvärden. Om någon av
operanderna är ett flyttal, så blir resultatet ett flyttal.
Funktionerna add
och
mul
kan ha två till 32 argument; summan
eller produkten av den fullständiga uppsättningen argument
beräknas. Funktionerna sub
och
div
har två argument vardera;
sub
subtraherar sitt andra argument från
sitt första, och div
dividerar sitt
första argument med sitt andra. Funktionen
mod
returnerar resten till divisionen av
den första parametern med den andra. Om det andra argumentet
till div
eller mod
är noll, så returnerar dessa funktioner 0 och genererar ett
körningsfel. Exp
utför
heltalsexponentiering. Neg
negerar sitt
argument. Funktionerna float
och
int
kan användas för att explicit
konvertera ett värde till flyttal eller heltal vid behov.
Incr
och decr
ökar
respektive minskar värdet av en variabel med ett. Argumentet
till båda funktionerna måste vara en variabel.
And
och or
utför
logiska operationer. Båda funktionerna tar från två till 32
argument. Alla argument "och"-as respektive "eller"-as ihop.
Argumenten utvärderas från vänster till höger, men endast fram
till den punkt där slutvärdet av funktionen blir känt.
Not
utför den logiska inte-operationen.
Eq
, ne
,
lt
, le
,
gt
och ge
utvärderar
de sex ordningsrelationerna mellan två heltal.
förvald namntyp för
många namnformer för
efternamn för
förnamn för
förkortat namn för
första födelsehändelse för
första dödshändelse för
första dophändelse för
första begravningshändelse för
första fader till
första moder till
nästa (yngre) syskon till
föregående (äldre) syskon till
kön för
sant om argumentet är man, falskt annars
sant om argumentet är kvinna, falskt annars
pronomen hänvisande till
antal makar till
antal familjer (som maka/make/förälder) för
första föräldrarnas familj för
första titel för
intern nyckel för (fungerar också för familjer)
SOUNDEX-kod för
GEDCOM-rotnod för
GEDCOM-rotnod för
finn person med nyckelvärde
första personen i databasen i nyckelordning
sista personen i databasen i nyckelordning
nästa person i databasen i nyckelordning
föregående person i databasen i nyckelordning
spouses (INDI, INDI, FAM, HELTAL) { kommandon }
loopa igenom alla makar till
families (INDI, FAM, INDI, HELTAL) { kommandon }
loopa igenom alla familjer (som maka/make) för
forindi (INDI, HELTAL) { kommandon }
loopa igenom alla personer i databasen
mothers (INDI, INDI_V, FAM_V, HELTAL) { kommandon }
loopa igenom alla kvinnliga föräldrar till en person
fathers (INDI, INDI_V, FAM_V, HELTAL) { kommandon }
loopa igenom alla manliga föräldrar till en person
Parents (INDI, FAM, HELTAL) { kommandon }
loopa igenom alla familjer en person är ett barn i
Dessa funktioner tar en person som parameter och returnerar information om honom eller henne.
Name
returnerar det förvalda namnet för
en person; detta är det namn som återfinns på den första
1 NAME
-raden i personens post;
snedstrecken tas bort och efternamnet sätts i versaler;
name
kan ha en eventuell andra parameter
- om den är sann så beter sig
funktionen som beskrivits ovan; om den är
falsk, så bibehålls efternamnet som
exakt så som det ser ut i posten.
Fullname
returnerar namnet för en person
i ett antal olika format. Om den andra parametern är
sann, så visas efternamnet med
versaler; om inte så visas efternamnet som det skrivs i
posten. Om den tredje parametern är
sann, så visas delarna i namnet i
den ordning som de återfinns i posten; om inte så skrivs
efternamnet först, följt av ett komma, och därefter de övriga
namndelarna. Den fjärde parametern anger den maximala
längden på fältet som kan användas för att visa namnet;
diverse konverteringar sker om det är nödvändigt att korta
namnet för att passa in det i denna längd.
Surname
returnerar efternamnet för
personen, som det ser ut på den första 1
NAME
-raden; snedstrecken tas
bort. Givens
returnerar förnamnen för
personen i samma ordning och format som det står skrivet i den
första 1 NAME
-raden i
posten. Trimname
returnerar det förvalda
namnet för personen förkortat till det maximala antalet tecken
som angivits i den andra variabeln.
Birth
, death
,
baptism
och burial
returnerar den första födelse- respektive döds-, dop- och
begravningshändelsen i personposten. En händelse är en
GEDCOM-nod på nivå 1. Om det inte finns någon matchande
händelse så returnerar dessa funktioner
noll.
Father
, mother
,
nextsib
och prevsib
returnerar fader respektive moder, nästa yngre syskon och
nästa äldre syskon till personen. Om personen har fler än en
fader (moder) så returnerar funktionen
father
(mother
) den
första av dem. Dessa funktioner returnerar
noll om det inte finns någon person
i rollen.
Sex
returnerar värdet för personens kön
som strängen M om personen är en
man, F om personen är en kvinna,
eller U om könet för personen är
okänt. Male
och
female
returnerar
sant om personen är man respektive
kvinna, eller falskt om inte.
Pn
genererar pronomen, användbart för att
generera text; den andra parametern väljer typ av pronomen:
Nspouses
returnerar antalet makar
personen har i databasen, och nfamilies
returnerar antalet familjer som personen är förälder/maka/make i;
dessa två värden är inte nödvändigtvis identiska.
Parents
returnerar den första familjen
som personen är barn i.
Title
returnerar värdet på den första
1 TITL
-raden i posten.
Key
returnerar nyckelvärdet för en person
eller familj; om det finns en andra parameter och den är
icke-noll, så tas det inledande I:et eller
F:et bort. Soundex
returnerar soundex-koden för personen.
Root
och Inode
returnerar rotnoden i personens
GEDCOM-nodträd. Lägg märke till att ett
INDI-värde inte är ett NOD-värde. Om
du vill behandla noderna inom en persons nodträd, så måste du
först använda root
- eller
inode
-funktionen för att få fram rotnoden
i personens nodträd. Root
och
inode
är synonyma.
Indi
returnerar den person vars nyckel
skickats som argument; om ingen person har nyckeln, så
returnerar indi
noll.
Firstindi
, nextindi
och previndi
låter dig iterera genom
samtliga personer i databasen. Firstindi
returnerar den första personen i databasen efter
nyckelordning. Nextindi
returnerar nästa
person efter personen i argumentet i nyckelordning.
Previndi
returnerar den föregående
personen innan argumentpersonen i nyckelordning.
Spouses
är en iterator som loopar igenom
varje maka/make till en person. Det första argumentet är en
person. Det andra argumentet är en personvariabel som itererar
igenom den första personens makar. Det tredje argumentet är en
familjevariabel som itererar igenom de familjer som personen
och varje maka/make finns i. Det fjärde argumentet är en
heltalsvariabel som räknar itereringarna.
Families
är en iterator som loopar igenom
de familjer som en person var maka/make/förälder i. Det första
argumentet är en person. Det andra argumentet är en
familjevariabel som itererar igenom familjerna som den första
personen var maka/make/förälder i. Det tredje argumentet
itererar igenom makarna från familjerna; om det inte finns
någon maka/make i en viss familj, så sätts variabeln till noll
för den itereringen. Det fjärde argumentet är en
heltalsvariabel som räknar antalet itereringar.
Forindi
är en iterator som loopar igenom
varje person i databasen i ökande nyckelordning. Dess första
parameter är en variabel som itererar igenom personerna; dess
andra parameter är en heltalsräknarvariabel som räknar
personerna med början på ett.
Parents
är en iterator som loopar igenom
alla familjer som en person är barn i. OBS: Denna iterators
namn börjar med stort P. Det finns en annan funktion med samma
namn som börjar med litet p. Dess första parameter är en
person; dess andra parameter är en familjevariabel som
itererar igenom de familjer som personen är barn i; och den
tredje parametern är en variabel som räknar familjerna med
början på ett.
Forindi
är en iterator som loopar igenom
alla personer i databasen i stigande nyckelordning. Dess
första parameter är en variabel som itererar igenom
personerna; dess andra variabel är en heltalsräknare som
räknar personerna med början på ett.
första giftermålshändelse för
första make/fader till
första maka/moder till
antal barn i
första barn till
sista barn till
internt nyckelvärde för (fungerar också för personer)
GEDCOM-rotnod för
GEDCOM-rotnod för
finn familj via nyckel
första familjen i databasen i nyckelordning
sista familjen i databasen i nyckelordning
nästa familj i databasen i nyckelordning
föregående familj i databasen i nyckelordning
children (FAM, INDI_V, HELTAL_V) { kommandon }
loopa igenom barn i familj
forfam (FAM_V, HELTAL_V) { kommandon }
loopa igenom alla familjer i databasen
Dessa funktioner tar en familj som ett argument och returnerar information om den.
Marriage
returnerar den första
giftermålshändelsen som hittas i familjeposten, om någon;
den returnerar noll om det inte
finns någon giftermålshändelse.
Husband
returnerar den första
maken/fadern i familjen, om någon; wife
returnerar den första makan/modern i familjen, om någon. Båda
returnerar noll om den efterfrågade
personen inte finns i familjen.
Nchildren
returnerar antalet barn i
familjen.
Firstchild
och
lastchild
returnerar det första
respektive sista barnet i en familj.
Key
beskrevs i avsnittet om
personfunktioner.
Root
och fnode
returnerar rotnoden i GEDCOM-nodträdet för
en familj. Lägg märke till att ett FAM-värde inte
är ett NOD-värde. Om du vill behandla noderna
inom nodträdet för en familj, måste du först använda
funktionerna root
eller
fnode
för att få fram roten i
nodträdet för familjen. Root
och
fnode
är synonyma.
Fam
returnerar den familj vars nyckel
skickats som argument; om ingen familj har nyckeln så
returnerar fam
noll.
Firstfam
, nextfam
och prevfam
låter dig iterera igenom alla
familjer i databasen. Firstfam
returnerar
den första familjen i databasen i nyckelordning.
Nextfam
returnerar den familj som är
närmast efterföljande i nyckelordning från familjen i
argumentet. Prevfam
returnerar den familj
som är närmast föregående i nyckelordning från familjen i
argumentet.
Children
är en iterator som loopar igenom
barnen i en familj. Dess första parameter är ett
familjeuttryck; dess andra parameter är en variabel som
itererar igenom varje barn; dess tredje parameter är ett
heltalsräknarvariabel som räknar barnen, med början på ett.
Dessa två variabler får användas inom inom loopkroppen.
Forfam
är en iterator som loopar igenom
varje familj i databasen i stigande nyckelordning. Dess första
parameter är en variabel som itererar igenom familjerna; dess
andra parameter är en heltalsräknarvariabel som räknar igenom
familjerna med början på ett.
forsour (NOD_V, HELTAL) { kommandon }
loopa igenom alla källor i databasen
foreven (NOD_V, HELTAL) { kommandon }
loopa igenom alla EVEN-noder in databasen
forothr (NOD_V, HELTAL) { kommandon }
loopa igenom alla övriga (notiser, etc.) noder i databasen
Forsour
är en iterator som loopar igenom
alla källnoder i databasen. Dess första argument är
SOUR-posten och dess andra argument är en
heltalsräknarvariabel som räknar källelementen med början på
ett. Foreven
är en iterator som loopar
igenom alla händelsenoder i databasen. Dess första argument är
EVEN-posten och dess andra argument är en
heltalsräknarvariabel som räknar händelseelementen med början
på ett. Forothr
är en iterator som loopar
igenom alla övriga noder i databasen. Dess första argument är
posten (NOTE, etc.) och dess andra argument är en
heltalsräknarvariabel som räknar noderna med början på ett.
deklarera en lista
kontrollera om listan är tom
listans längd
köa element i lista
avköa och returnera element från listan
återköa ett element i lista
lägg på element i lista
ta bort och returnera element från lista
vektorelementstilldelning
välj vektorelement
är andra argumentet i listan
sortera listelement
sortera listelement i omvänd ordning
duplicera en lista
forlist (LISTA, VALFRI_V, HELTAL_V) { kommandon }
loopa igenom alla element i lista
LifeLines tillhandahåller listor
för allmänna syften som kan åtkommas som köer, stackar eller
vektorer. En lista måste deklareras med funktionen
list
innan den kan användas. Att
återdeklarera en befintlig variabel med
list
tömmer den och återställer den till
att vara en tom lista. Om argumentet till list() är namnet på
en parameter till den aktuella rutinen, så tas referensen till
de anropande rutinerna bort, och en ny lista skapas.
En lista kan ha valfritt antal element.
Empty
returnerar
sant om listan inte har några
element och falskt i annat fall.
Length
returnerar längden på listan. Den
enda parametern för båda är en lista. Följande diagram
anger hur de olika åtkomstfunktionerna för en lista
påverkar varandra:
Enqueue
, dequeue
och
requeue
tillhandahåller köåtkomst till en
lista. Enqueue
lägger till ett element
längst bak i en kö, dequeue
tar bort och
returnerar elementet från längst fram i en kö, och
requeue
lägger till ett element längst
fram i en kö. Den första parametern till alla tre är en lista,
och den andra parametern till enqueue
och
requeue
är värdet som ska läggas till i
kön och kan vara vilket värde som helst.
Push
och pop
tillhandahåller stackåtkomst till en lista.
Push
lägger på element på stacken, och
pop
tar bort och returnerar det senast
pålagda elementet från stacken. Den första parametern för båda
är en lista, och den andra parametern för
push
är värdet som ska läggas på stacken
och kan vara av vilken typ som helst.
Setel
och getel
tillhandahåller vektoråtkomst till en lista.
Setel
anger ett värde för ett
vektorelement, och getel
returnerar
värdet för ett vektorelement. Den första parametern för båda
är en lista; den andra parametern för båda är en
heltalsposition i vektorn; och den tredje parametern för
setel
är värdet att tilldela till
vektorelementet och kan vara av vilken typ som helst.
Vektorelement numreras med början på ett. Otilldelade
element antas vara noll
(0). Vektorer växer automatiskt i
storlek för att anpassas till den största använda
positionsangivelsen. Att ange 0 refererar till det sista
elementet i andra änden från 1, -1 den före det, o. s. v.
Inlist
jämför det andra argumentet med
varje element i listan. Om det finner ett matchande element,
så returnerar inlist
sant.
sort
och rsort
sorterar en lista, och använder elemententen i den andra
vektorn för att bestämma den nya ordningen. Båda listorna
ordnas om, så i grunden sorteras båda med användning av
sorteringsordningen i det andra argumentet. (Om bara ett
argument anges, så sorteras det mot sina egna element.) rsort
sorterar i omvänd ordning mot sort.
Den ordning som sort skapar placerar det minsta elementet på
position 1, och det största elementet på slutet av listan, på
så sätt att dequeue
kommer att ta bort
det minsta elementet.
dup
skapar en kopia av en
lista. Om b är en lista, så gör
funktionen set
(a,b) variabeln a till en
referens till listan b. Om du vill skapa en ny
lista, måste du använda
set
(a,dup(b)).
Forlist
är en iterator som loopar igenom
elementet i en lista. Dess första parameter är ett
LIST-uttryck; dess andra parameter är en variabel
som itererar igenom listelementen; och dess tredje parameter
är en heltalsräknarvariabel som räknar listelementen med
början på ett.
deklarera en tabell
lägg in objekt i en tabell
leta upp och returnera objekt från tabell
Dessa funktioner tillhandahåller tabeller med nycklar för
allmänna syften. En tabell måste deklareras med funktionen
table
innan den kan användas.
Insert
lägger in ett objekt och dess
nyckel i en tabell. Dess första parameter är en tabell; dess
andra parameter är objektets nyckel; och den tredje parametern
är objektet självt. Nyckeln måste vara en sträng och objektet
kan vara vilket värde som helst. Om det redan finns ett objekt
i tabellen med denna nyckel, så ersätts det gamla objektet med
det nya.
Lookup
hämtar ett objekt från en tabell.
Dess första parameter är en tabell, och den andra parametern
är objektets nyckel. Funktionen returnerar objektet som har
den nyckeln från tabellen; om det inte finns något sådant
objekt, returneras noll.
korsreferensvärde för
etikett för
värde för
föräldranod för
första barnnod till
nästa syskonnod till
kopiera en nodstruktur
nivå för en nod
fornodes (NOD, NOD_V) { kommandon }
loopa igenom barnnoder
fornotes (VALFRI, STRÄNG) { kommandon }
loopa igenom notiser i en nod
traverse (NOD, NOD_V, HELTAL_V) { kommandon }
loopa igenom alla ättlinganoder
Dessa funktioner ger tillgång till komponenterna i en GEDCOM-nod. Alla tar en GEDCOM-nod som enda parameter, och alla returnerar ett annat värde med anknytning till noden.
Xref
returnerar korsreferensvärdet för
noden, om det finns; tag
returnerar
etiketten för noden; och value
returnerar
värdet för noden, om det finns. Om det inte finns någon
korsreferens, så returnerar xref
noll; om det inte finns något
värde, så returnerar value noll.
Parent
returnerar föräldranoden till
noden, om den finns; child
returnerar den
första barnnoden till noden, om den finns; och
syskon
returnerar den nästa syskonnoden
till noden, om den finns. När det inte finns någon nod som är
relaterad på sättet ifråga, så returnerar dessa funktioner
noll. Dessa tre funktioner
möjliggör enkel navigation genom ett
GEDCOM-nodträd.
Savenode
gör en kopia av noden, och
understrukturen i noder under noden, som delats ut till den.
Varning: Minnet som används för att göra kopian lämnas aldrig
tillbaka till systemet.
Funktionen level
returnerar nivån för
noden.
Fornodes
är en iterator som loopar igenom
barnnoderna i en GEDCOM-nod. Dess första
argument är ett noduttryck, och dess andra parameter är en
variabel som itererar igenom varje direkt barnnod till den
första noden.
Fornotes
är en iterator som loopar igenom
NOTE-noderna i en GEDCOM-nod. Dess första
argument är ett noduttryck, och dess andra argument är en
variabel som returnerar värdet för NOTE-noden. Värdet
inkluderar behandlade underliggande CONC- och CONT-poster.
Traverse
är en iterator som tillhandahåller
en allmän metod för att gå igenom
GEDCOM-träd. Dess första parameter är ett
noduttryck; dess andra parameter är en variabel som itererar
genom alla noder under den valda noden, i riktning uppifrån
och ned och från vänster till höger; och dess tredje parameter
är en variabel som är satt till nivån för den aktuella noden i
itereringen.
datum för, värde för den första DATE
-raden
plats för, värde för den första PLAC
-raden
år, eller första sträng med 3-4 siffror i första
DATE
-raden
datum och plats, värden för första DATE
-
och PLAC
-raderna
datum och plats för, förkortad form
returnerar "händelsen" dagens datum
ställ in dagformat för anrop till stddate
ställ in månadsformat för anrop till stddate
ställ in årsformat för anrop till stddate
ställ in eraformat för anrop till stddate
ställ in datumformat för anrop till stddate
ställ in anpassat datumformat för anrop till stddate
datum för, i aktuellt format
set complex date format
ställ in anpassad komplex datumbildssträng
datum för, i aktuellt komplext format
Dessa funktioner extraherar information om datum och plats för händelser.
Date
returnerar värdet för den första
DATE
-raden i en händelse, en nod i
trädet för en GEDCOM-post.
Date
letar upp den första
DATE
-raden som ligger en nivå
djupare än händelsenoden. Place
returnerar värdet för den första
PLAC
-raden i en händelse.
Year
returnerar det första tre- eller
fyrsiffriga numret i värdet för den första
DATE
-raden i en händelse; detta
nummer antas vara året för händelsen.
Long
returnerar det bokstavliga värdet på
de första DATE
- och
PLAC
-raderna i en händelse,
sammanlänkade, avdelade med ett komma.
Short
förkortar information från de
första DATE
- och
PLAC
raderna, sammanlänkar den
förkortade informationen, avdelad med ett komma, och
returnerar den. Ett förkortat datum är dess år; en förkortad
plats är den sista komponenten i dess värde, ytterligare
förkortat om komponenten finns med i
platsförkortningstabellen.
Gettoday
skapar en händelse som har
dagens datum i DATE
-raden.
De nästa sju funktionerna används för att formatera datum på
ett antal olika sätt. Med Dayformat
,
monthformat
,
yearformat
,
eraformat
, och
dateformat
väljer man stil för dag,
månad, år, era och datumstrukturen som helhet;
stddate
returnerar datum i den valda
stilen. Datepic
möjliggör specifikation
av ett anpassat mönster som upphäver datumformatet som valts
med dateformat
. Den angivna strängen
anger placeringen av dag, månad och år i strängen med %d, %m
och %y. Ett nollargument avaktiverar det upphävda formatet.
Argumentet till stddate
är normalt en
händelse och datumet extraheras från händelsen och formateras.
Om argumentet är en datumsträng konverteras den med användning
av aktuellt datumformat.
De nästa tre funktionerna möjliggör mer komplex formatering av
datum, med bestämningarna ABT, EST, CAL, BEF, AFT, FROM för
GEDCOM-datum i åtanke. Complexformat
väljer formatet att använda. Formatet påverkar endast den
komplexa bilden, inte formatet på datumet i sig självt.
Funktionen complexpic
kan användas för
att ange en anpassad bildsträng för någon av eller alla de nio
anpassade formatsträngarna. Den anpassade strängen kan
avbrytas genom att skicka noll för strängen. När en anpassad
bildsträng anges upphäver den både de förkortade och den
fullständiga bildsträngarna. Complexdate
formaterar datumet på samma sätt som
stddate
, men med tillägg av den valda
komplexa datumformatsträngen.
De dagformatkoder som skickas till
dayformat
är:
0 | sätt in blanksteg före ensiffriga dagar |
1 | sätt in 0 före ensiffriga dagar |
2 | varken blanksteg eller 0 före ensiffriga dagar |
De månadsformateringskoder som skickas till
monthformat
är:
0 | numrera med blanksteg före ensiffriga månader |
1 | numrera med nolla före ensiffriga månader |
2 | numrera utan varken blanksteg eller 0 före ensiffriga månader |
3 | förkortning med versaler (t. ex. JAN, FEB) (lokaliserad) |
4 | förkortning med inledande versal (t, ex. Jan, Feb) (lokaliserad) |
5 | hela ordet i versaler (tex., JANUARI, FEBRUARI) (lokaliserad) |
6 | hela ordet med inledande stor bokstav (tex., Januari, Februari) (lokaliserad) |
7 | förkortning med gemener (t. ex. jan, feb) (lokaliserad) |
8 | hela ordet med gemener (t. ex. januari, februari) (lokaliserad) |
9 | förkortning med versaler på engelska som i GEDCOM (t. ex. JAN, FEB) |
10 | romerska siffror med gemener (t. ex. i, ii) |
11 | romerska siffror med versaler (t. ex. I, II) |
Årformatskoderna som skickas till yearformat
är:
0 | använd inledande blanksteg före år med mindre än fyra siffror |
1 | använd inledande 0 före år med mindre än fyra siffror |
2 | varken blanksteg eller inledande 0 före år |
De eraformatskoder som skickas till eraformat
är:
0 | inga markörer för f. kr./e. kr. |
1 | efterföljande e. kr. där det passar |
2 | efterföljande e. kr. eller f. kr. |
11 | efterföljande f. kr. där det passar |
12 | efterföljande e. kr. eller f. kr. |
21 | efterföljande B. C. E (before common era) om det passar |
22 | efterföljande C. E. eller B. C. E. |
31 | efterföljande BC om det passar |
32 | efterföljande CE eller BCE |
De fullständiga datumformaten som skickas till
stddate
är:
0 | da må år |
1 | må da, år |
2 | må/da/år |
3 | da/må/år |
4 | må-da-år |
5 | da-må-år |
6 | mådaår |
7 | damåår |
8 | år må da |
9 | år/må/da |
10 | år-må-da |
11 | årmåda |
12 | år (endast år, utelämnar allt annat) |
13 | da/må år |
14 | (Som i GEDCOM) |
De komplexa datumformat som väljs av
complexformat
och används av
complexdate
är:
Typ | Exempel | |
3 | använd förkortningar med versaler | UNG 1 JAN 2002 |
4 | använd förkortningar med inledande versal | Ung 1 JAN 2002 |
5 | använd fullständiga ord med versaler | UNGEFÄR 1 JAN 2002 |
6 | använd fullständiga ord med inledande versal | Ungefär 1 JAN 2002 |
7 | använd förkortningar med gemener | ung 1 JAN 2002 |
8 | använd fullständiga ord med gemener | ungefär 1 JAN 2002 |
De komplexa datumsträngsbilderna som kan upphävas med
complexpic
är:
extrahera ett datum
extrahera ett namn
extrahera en plats
extrahera objekt
extrahera datum från sträng
Funktionerna för värdeextrahering läser värdena för vissa rader och returnerar dessa värden i extraherad form.
Extractdate
extraherar datumvärden från
antingen en händelse- eller en
DATE
-nod. Den första parametern
måste vara en nod; om dess etikett är
DATE
, så extraheras datumet från
värdet på noden; om dess etikett inte är
DATE
, så extraheras datumet från
den första DATE
-raden en nivå
nedanför argumentnoden. De återstående tre argumenten är
variabler. Den första tilldelas heltalsvärdet för den
extraherade dagen; den andra tilldelas heltalsvärdet för den
extraherade månaden; och den tredje tilldelas heltalsvärdet
för det extraherade året.
Extractnames
extraherar namnkomponenter
från en NAME
-rad. Dess första
argument är antingen en INDI
- eller
en NAME
-nod. Om det är en
NAME
-rad, så extraheras
komponenterna från värdet av den noden; om det är en
INDI
-rad, så extraheras
komponenterna från värdet av den första
NAME
-raden i personposten. Det
andra argumentet är en lista som kommer att innehålla de
extraherade komponenterna. Det tredje argumentet är en
heltalsvariabel som sätts till antalet extraherade
komponenter. Det fjärde argumentet är en variabel som är satt
till positionen (med början på ett) i efternamnskomponenten;
de omgivande /-tecknen tas bort från
efternamnskomponenten. Om det inte finns något efternamn så
sätts denna variabel till noll.
Extractplaces
extraherar platskomponenter
från en PLAC
-nod. Det första
argumentet är en nod; om dess etikett är
PLAC
, så extraheras dessa från
nodens värde; om dess etikett inte är
PLAC
, så extraheras platser från
den första PLAC
-raden en nivå
nedanför noden för argumentet. Den andra parametern är en
lista som ska innehålla de extraherade komponenterna. Det
tredje argumentet är en heltalsvariabel som sätts till antalet
extraherade komponenter. Platskomponenter definieras av de
komma-separerade bitarna av värdet för
PLAC
; inledande och efterföljande
blanksteg tas bort från komponenterna, medan alla blanksteg
inom etiketten bibehålls.
Extracttokens
extraherar objekt från en
sträng och placerar dem i en lista. Det första argumentet är
den sträng som objekten ska extraheras från. Det andra
argumentet är listan som ska innehålla objekten. Det tredje
argumentet är en heltalsvariabel som sätts till det antal
objekt som extraherats. Den fjärde parametern är den sträng
av avgränsande tecken som extracttokens
använder för att dela upp strängen med indata i objekt.
identifiera person via användargränssnitt
identifiera uppsättning med personer via användargränssnitt
identifiera familj via användargränssnitt
hämta heltal via användargränssnitt
hämta sträng via användargränssnitt
välj barn till person/i familj via användargränssnitt
välj familj som person finns i som maka/make
välj person från uppsättning med personer
välj maka/make till person
välj en delmängd av en uppsättning med personer
gör ett val från en lista
Dessa funktioner interagerar med användaren för att hämta den information som behövs för programmet.
Getindi
ber användaren att identifiera en
person. Det första argumentet är en variabel som sätts till
den valda personen. Det andra (inte obligatoriskt) är en
sträng att använda som fråga. Getindiset
ber användaren att identifiera en uppsättning med personer.
Getfam
ber användaren att identifiera en
familj. Getint
och
getstr
ber användaren skriva in ett
heltal respektive en sträng.
Choosechild
ber användaren att välja ett
barn i en familj eller till en person; dess enda argument är
en person eller en familj; den returnerar barnet.
Choosefam
ber användaren att välja en
familj som en person finns i som maka/make; dess argument är
en person; den returnerar familjen.
Chooseindi
ber användaren att välja en
person ur en uppsättning med personer; dess argument är en
uppsättning med personer; den returnerar den valda personen.
Choosespouse
ber användaren att välja en
maka/make till en person; dess argument är en person; den
returnerar den valda maka/maken.
Choosesubset
ber användaren att välja en
delmängd personer ur en uppsättning med personer; dess
argument är den valda delmängden.
Menuchoose
låter användaren göra val ur
en godtycklig meny. Dess första argument är en lista med
strängar som utgör alternativen i menyn; det andra (inte
obligatoriska) argumentet är en frågesträng för menyn;
menuchoose
returnerar heltalsindexet för
det menyalternativ som användaren valt; om användaren inte
väljer något alternativ, returneras
noll.
konvertera till gemener
konvertera till versaler
sätt inledande versal
sätt inledande versal på varje ord
korta av till viss längd
högerjustera i fält
sammanlänka två strängar
sammanlänka två strängar
antal tecken i sträng
delsträngsfunktion
positionsfunktion
tal som heltalssträng
tal som flyttalssträng
tal i grundtalsform (en, två, ...)
tal i ordningstalsform (första, andra, ...)
konvertera tal till latinsk bokstav (a, b, ...)
tal i romersk form (i, ii, ...)
finn SOUNDEX-värde för godtycklig sträng
konvertera talsträng till heltal
konvertera talsträng till heltal
allmän jämförelse av strängar
jämför om likhet mellan strängar
jämför om olikhet mellan strängar
Dessa funktioner tillhandahåller stränghantering. I versionerna före 3.0.6 använde många av dem en metod för minneshantering som var vald för absolut minimal minnesanvändning. En funktion som använder denna metod konstruerade sin utmatningssträng i sin egen strängbuffert, och återanvände denna buffert varje gång den anropades. När ett funktion som använde denna metod returnerade ett strängvärde returnerade det sin buffert. Som en konsekvens av detta måste de strängar som returnerades av dessa funktioner antingen användas eller sparas innan funktionen anropades igen.
Lower
och upper
konverterar bokstäverna i sina argument till gemener
respektive versaler. Capitalize
konverterar den första bokstaven i argumentet, om det är en
bokstav, till en versal. Lower
och
upper
använde historiskt
buffertreturneringsmetoden; capitalize
opererar på och returnerar sitt argument.
Titlecase
konverterar den första
bokstaven på varje ord, om det är en bokstav, till versaler,
och alla andra bokstäver till gemener.
Trim
kortar av en sträng till den längd
som specificerats i den andra parametern. Om strängen redan
har den längden eller kortare så ändras inte strängen.
Rjustify
högerjusterar en sträng till en
annan sträng av den längd som specificerats i den andra
parametern. Om den ursprungliga strängen är kortare än den
högerjusterade strängen är kortare än den högerjusterade
strängen, så sätts blanksteg in till vänster om den
ursprungliga strängen; om strängen är längre än den justerade
strängen, så kapas strängen på högra sidan.
Trim
använde historiskt
buffertreturneringsmetoden; rjustify
skapar och returnerar en ny sträng.
Concat
och strconcat
slår samman strängar och returnerar resultatet. De är
identiska funktioner. De får ta från två till 32
strängargument; nollargument är tillåtna. Argumenten slås
samman till en enda, nyskapad sträng, som returneras.
Strlen
returnerar längden av
strängargumentet.
Substring
returnerar en delsträng av
strängen i det första argumentet. De andra och tredje
argumenten är positionerna för de första och sista tecknen i
argumentsträngen som ska användas för att skapa delsträngen.
Positionerna räknas från ett. Substring
använde historiskt buffertreturneringsmetoden.
Index
returnerar teckenpositionen för det
n-te uppträdandet av en delsträng i en sträng. Positionen är
räknad från ett från början av delsträngen. Det första
argumentet är strängen; det andra argumentet är delsträngen;
och det tredje argumentet är numret för den gång i ordningen
som delsträngen uppträder.
D
, card
,
ord
, alpha
och
roman
konverterar heltal till strängar.
D
konverterar ett heltal till en numerisk
sträng; card
konverterar ett heltal till
en grundtalssträng (t. ex. en, två, tre);
ord
konverterar ett heltal till ett
ordningstal (t. ex. första, andra, tredje);
alpha
konverterar ett heltal till en
bokstav (t. ex. a, b, c); och
roman
konverterar ett heltal till en
romersk siffra (tex., i, ii, iii).
Funktionen f
konverterar ett flyttal
till en sträng. Det andra argumentet (inte obligatoriskt)
anger precisionen för utdata. Den förinställda precisionen är
2.
Strsoundex
konverterar en godtycklig
sträng till ett SOUNDEX-värde. Tecken som inte ingår i
teckenkodningen ASCII hoppas över.
Strtoint
konverterar en numerisk sträng
till ett heltal. Atoi
är identisk med
strtoint
.
Strcmp
jämför två strängar och returnerar
ett heltal som är mindre än noll, lika med noll, eller större
än noll, om den första strängen är lexikografiskt mindre än,
respektive lika med, eller större än den andra
strängen. Eqstr
och
nestr
returnerar huruvida två strängar är
lika respektive olika. Strcmp
,
eqstr
och nestr
behandlar alla tre nollsträngar som tomma strängar, det vill
säga att de låtsas att en nollsträng faktiskt är "". Detta
betyder att alla nollsträngar och tomma strängar kommer att
räknas som lika.
använd radutmatningsläge
använd sidutmatningsläge med angiven sidstorlek
positionera till kolumn i utmatning
hämta aktuell position på aktuell rad i utmatning
positionera till rad i utmatning
positionera till (rad, kol)-koordinat i utmatning
mata ut sidbuffert
nyradstecken
blankstegstecken
citationstecken
skicka programutmatning till denna fil
returnera namnet på aktuell programutmatningsfil
kopiera filinnehållet till programutmatningsfilen
skriv ut sträng till standardutmatningsfönstret
Rapporter kan genereras i två lägen, radläge och sidläge.
Linemode
väljer radläge och
pagemode
väljer sidläge; radläge är det
förvalda. Den första parametern till
pagemode
är antal rader per sida; den
andra parametern är antal tecken för radlängd. I radläget
skrivs rapportutdata direkt till utmatningsfilen medan
programmet körs, rad för rad. I sidläget buffras utdata till
sidor som skrivs till utmatningsfilen när
pageout
anropas. Sidläget är användbart
för att generera tex. an- eller stamtavelträd, eller tabeller
med rutor, där det är praktiskt att kunna beräkna den
två-dimensionella positionen för utdata.
Col
positionerar utdata till den angivna
positionen på en rad. Om den angivna positionen är större än
argumentet, så positionerar col utdata på den angivna
positionen på nästa rad. Col
fungerar i
båda lägena. Getcol
returnerar aktuell
position på aktuell rad i utmatningen.
Row
positionerar utdata vid det första
tecknet i den angivna raden; row
kan bara
användas i sidläget.
Pos
positionerar utdata till en angiven
rad- och radpositionskoordinat; det första argumentet anger
vilken rad, och den andra anger vilken position på rad.
Pos
kan bara användas i sidläget.
Nl
skriver ut ett nyradstecken till
utmatningsfilen; sp
skriver ut ett
blanksteg till utmatningsfilen; och qt
skriver ut ett citationstecken till utmatningsfilen. Lägg
märke till att \n och \"
kan användas inom strängvärden för att representera
radmatningar respektive citationstecken.
Newfile
anger namnet på utmatningsfilen
för rapporten. Dess första argument är filens namn; dess andra
argument är en flagga för inläggning i filen - om dess värde
är icke-noll så läggs rapporttexten till i filen; om dess
värde är noll så skrivs innehållet i filen över.
Newfile
kan anropas många gånger; detta
gör det möjligt att låta ett enda rapportprogram generera
många filer med utdata från rapporten under en körning. Det är
inte obligatoriskt för program att använda
newfile
; om den inte används så ber
LifeLines automatiskt om ett namn
för utmatningsfilen från rapporten.
Outfile
returnerar namnet på den aktuella
utmatningsfilen från rapporten.
Copyfile
kopierar innehållet i en fil
till utmatningsfilen för rapporten; dess argument är en sträng
vars värde är namnet på en fil; om filnamnet inte är angivet
med vare sig absolut eller relativ sökväg, så används
miljövariabeln LLPROGRAMS
, om den är inställd,
för att söka efter filen; filen öppnas och dess innehåll
kopieras till utmatningsfilen för rapporten.
Print
skriver ut sin argumentsträng till
standardutmatningsfönstret; print
kan ha
från ett till 32 argument.
deklarera en uppsättningsvariabel
lägg till en person till en uppsättning
ta bort en person från en uppsättning
storlek på en uppsättning
union av två uppsättningar
skärningspunkter mellan två uppsättningar
skillnad mellan två uppsättningar
uppsättning med alla föräldrar
uppsättning med alla barn
uppsättning med alla makar
uppsättning med alla syskon
uppsättning med alla anor
uppsättning av alla ättlingar
samma som descendentset; stavning
ta bort dubbletter från uppsättning
sortera indiset efter namn
sortera indiset efter nyckelvärden
sortera indiset efter hjälpvärden
skapa indiset från namnsträng i GEDCOM-form
Sant om personen finns i uppsättningen.
forindiset (SET, INDI_V, VALFRI_V, HELTAL_V) { kommandon }
loopa igenom alla personer i uppsättning med personer
Dessa funktioner låter dig manipulera uppsättningar med
personer. En uppsättning med personer är potentiellt ett stort
antal personer; varje person kan ha ett godtyckligt värde
associerat med sig. En uppsättning med personer måste
deklareras med funktionen indiset
innan
den kan användas.
Addtoset
lägger till en person till en
uppsättning. Det första argumentet är uppsättningen; det andra
argumentet är personen; och det tredje argumentet kan vara
vilket värde som helst. Samma person kan läggas till i en
uppsättning mer än en gång, med olika värden varje
gång. Deletefromset
tar bort en person
från en personuppsättning. Det första argumentet är
uppsättningen; det andra argumentet är personen; om den tredje
parametern är sann, tas personen
bort från uppsättningen på alla ställen där han/hon finns med;
om den är falsk så tas han/hon bara
bort på det första stället som han/hon finns
med. Lengthset
returnerar antalet
personer i en personuppsättning.
Union
, intersect
och
difference
returnerar uppsättningarna med
unionerna respektive skärningarna och skillnaderna mellan två
personuppsättningar. Var och en av funktionerna tar två
personuppsättningar som argument, och returnerar en tredje
personuppsättning. Funktionerna modifierar faktiskt sina
argumentuppsättningar, genom att ordna om den i nyckelordning
och ta bort alla dubletter (dessa operationer är nödvändiga
för att enkelt kunna implementera dessa typer av
uppsättningsfunktioner).
Parentset
, childset
,
spouseset
och
siblingset
returnerar uppsättningen med
alla föräldrar, respektive alla barn, alla makar och alla
syskon, till uppsättningen av personer i sina argument. I
inget av fallen sker någon förändring av personuppsättningen i
argumentet.
Ancestorset
returnerar uppsättningen med
alla anor till alla personer i personuppsättningen i
argumentet. Descendentset
returnerar
uppsättningen med alla ättlingar till alla personer i
personuppsättningen i argumentet.
Descendantset
är samma som
descendentset
; det tillåter en alternativ
stavning.
Uniqueset
sorterar en personuppsättning
efter nyckelvärde och tar sedan bort alla poster där nycklarna
är dubblerade; den ursprungliga uppsättningen modifieras och
returneras.
Namesort
, keysort
och valuesort
sorterar en
personuppsättning efter namn respektive efter nyckel och efter
associerat värde.
Varje person i en personuppsättning har ett associerat värde.
När en person läggs till till en personuppsättning med
addtoset
, så tilldelas värdet explicit.
När nya uppsättningar skapas av andra funktioner, så används
ett antal regler för att associera värden med personer allt
eftersom de läggs till i de nya uppsättningarna. För
parentset
, childset
och spouseset
kopieras värdena från den
första personen i en första uppsättning som får den nya
personen att läggas till i uppsättningen. För
union
, intersect
och
difference
kopieras värdena från värdena
i den första uppsättningen, utom för
union
, där personerna tas enbart från den
andra uppsättningen, och där värdena kommer därifrån. För
ancestorset
och
descendantset
sätts värdet till det antal
generationer bort som den nya personen är från den
första personen i den första
uppsättningen som den nya personen är släkt med. Om den nya
personen är släkt med mer än en person i den första
uppsättningen, sätts värdet till det närmaste släktskapet; d.
v. s. värdet blir så lågt som möjligt.
Valuesort
sorterar en personuppsättning
efter värdet på dessa hjälpvärden.
Genindiset
genererar den
personuppsättning som matchar en sträng vars värde är ett namn
i GEDCOM-format.
Genindiset
använder samma algoritm som
matchar namn som skrivits in vid bläddringsprompten eller av
funktionen för användarinteraktion
getindiset
.
Inset
returnerar
sant om den angivna personen finns
i uppsättningen.
Forindiset
är en iterator som loopar
igenom varje person i en personuppsättning. Den första
parametern är en personuppsättning. Den andra parametern är en
variabel som itererar genom varje person i uppsättningen. Den
tredje parametern itererar genom de värden som är associerade
med personerna. Den fjärde parametern är en heltalsvariabel
som räknar itereringarna.
skapa en GEDCOM-nod
lägg till en nod till ett GEDCOM-träd
ta bort en nod från ett GEDCOM-träd
skriv en person tillbaka till databasen
skriv en familj tillbaka till databasen
Dessa funktioner låter dig modifiera ett internt GEDCOM-nodträd.
Createnode
skapar en
GEDCOM-nod; de två argumenten är etikett-
respektive värdesträngar; värdesträngen kan vara
noll. Addnode
lägger till en nod till ett nodträd. Det första argumentet är
den nya noden; den andra är den nod i trädet som blir förälder
till den nya noden; den tredje är den nod i trädet som blir
föregående syskon till den nya noden; detta argument är
noll om den nya noden ska bli
första barn till föräldern. Deletenode
tar bort en nod från ett nodträd.
Writeindi
skriver en person tillbaka till
databasen, och writefam
skriver en
familjepost tillbaka till databasen, vilket möjliggör för
rapporten att göra permanenta ändringar i databasen.
Nodfunktionerna ändrar endast data i minnet; det har ingen
effekt på databasen förrän och endast om
writeindi
eller
writefam
anropas. Dessa funktioner kan
komma att ändras eller utökas i framtiden för att tillåta
att ändringar görs i databasen.
avgör om en sträng är en korsreferens
referera korsreferens eller nyckel till nodträd
samma som dereference
Dessa funktioner möjliggör för dig att känna igen värden som
är korsreferenser och att läsa de poster som de hänvisar till.
Reference
returnerar
sant om dess strängargument är ett
korsreferensvärde, d. v. s. det interna nyckelvärdet för en av
posterna i databasen. Dereference
returnerar nodträdet för posten som hänvisas till av dess
strängargument för korsreferensen.
Getrecord
är en synonym för
dereference
.
lås en person eller familj i minnet
lås upp en person eller familj från minnet
returnera namnet på den aktuella databasen
returnera namnet på det aktuella programmet
returnera version av LifeLines
exekvera sträng som ett skalkommando i UNIX
storlek på "heap" använd för windows
extrahera system- eller användaregenskaper. Funktion tillgänglig efter v3.0.5.
ställ in lokal
koda en sträng i en teckenkodning
konvertera sträng från en teckenkodning till en annan
ställ in avbuggningsläge för tolk
visa information om en pvalue
fritt utrymme associerat med en variabel
Lock
och unlock
används för att låsa en person eller family i
RAM-minnet, respektive för att låsa upp en
person eller familj från RAM-minnet.
Database
returnerar namnet på den
aktuella databasen; användbart för rubriksättning av
rapporter. Version
returnerar vilken
version av LifeLines som körs, t.
ex. 3.0.36.
System
exekverar sitt strängargument som
ett skalkommando i UNIX (eller
MS-Windows, om så är aktuellt), genom att
invokera systemskalet. Detta händer inte om användaren har
valt att inte tillåta systemanrop från rapporter (via
användarinställningen DenySystemCalls).
Funktionen heapused
returnerar storleken
på system-"heap" vid användning vid aktuell tidpunkt. Detta är
endast implementerat i windows.
Funktionen getproperty
extraherar system-
eller användaregenskaper. Egenskaperna benämns
grupp.undergrupp.egenskap eller grupp.egenskap eller till och
med enbart egenskap. De nycklar som finns tillgängliga för
närvarande återfinns i ll-userguide under system- och
användaregenskaper.
Funktionen setlocale
ställer in lokalen
och returnerar den tidigare inställningen för lokalen.
Funktionen bytecode
konverterar den givna
strängen med kontrollkoder för den aktuella kodningen, eller
för kodningen som angivits i den andra parametern (ej
obligatorisk), om angiven. En kontrollkod är ett dollartecken
($) följt av två hex-tecken, t. ex. $C1.
Funktionen convertcode
konverterar en
sträng till en annan kodning. I tvåargumentsformen är det
andra argumentet målkodningen, och källkodningen är den
interna kodningen. I treargumentsformen är det andra
argumentet källkodningen och det tredje argument målkodningen.
Funktionen debug
slår på eller stänger
av programmfelsökning. När påslaget, så skrivs klumpar av
information ut allteftersom ett
LifeLinesprogram körs. Detta kan
vara användbart för att komma på varför ett program inte
uppträder som förväntat.
Funktionen pvalue
returnerar en sträng
som representerar innehållet i en variabel i tolken. Detta
finns tillgängligt för felsökningssyften.
Funktionen free
avallokerar utrymme
associerat med variabeln som angivits i argument 1.
Försiktighet krävs när free används i en funktion på en
variabel som är en parameter till funktionen. Free påverkar
inte variabeln i det anropande programmet.
Funktionaliteten i de följande tre funktionerna,
getindimsg
,
getintmsg
och
getstrmsg
finns nu tillgänglig genom att
använda den valbara parametern i getindi
,
getint
och getstr
.
Dessa funktioner bör inte längre användas, eftersom de kommer
att tas bort från en framtida version av
Lifelines.
identifiera person genom användargränssnitt
hämta heltal genom användargränssnitt
hämta sträng genom användargränssnitt
Tre funktioner finns tillgängliga för att generera utdata i GEDCOM-format till rapportutmatningsfilen över alla personer i personuppsättningen i argumentet. Dessa funktioner genererar i de flesta fall inte konsistent och användbar utdata. Detta kan göras med ett program, men antagligen är dessa rutiner inte vad du egentligen ville ha.
Utdata från gengedcom
innehåller en
personpost för varje person i uppsättningen, och alla
familjeposter som länkar samman minst två personer i
uppsättningen. Denna funktion tillhandahålls för
bakåtkompatibilitet. Länkar till käll-, händelse- och övriga
(X) poster utmatas oförändrade, men inga av deras poster
utmatas - detta ger inkonsistent utdata.
Utdata från gengedcomweak
innehåller inte
länkar till käll-, händelse- eller övriga (X) poster, eller
deras poster. Gengedcomstrong
inkluderar
länkar till käll-, händelse- och övriga (X) poster och alla
toppnivånoder som hänvisas till av dem.
generera GEDCOM-fil från personuppsättning
generera GEDCOM-fil från personuppsättning
generera GEDCOM-fil från personuppsättning
Från och med version 3.0.6 är alla strängvärden lokala kopior,
och därmed bör inte funktionerna save
och strsave
längre behöva användas.
Save
finns tillgänglig endast av
kompatibilitetsskäl. Tidigare duplicerade det sitt argument
(för att förhindra strängar från att bli gamla; det är inte
längre nödvändigt (och denna funktion gör inte längre
någonting)). Strsave
är samma funktion som
save
.
spara och returnera kopia av sträng
samma som funktionen save
Använd detachnode
istället för
deletenode
.