Files
context/_reports/gedlod.ll
T
2019-09-28 10:14:18 -04:00

73 lines
1.8 KiB
LLVM

/*
* @progname gedlod.ll
* @version 2000-02-15
* @author Paul B. McBride (pbmcbride@rcn.com)
* @category
* @output GEDCOM
* @description
*
* Generate a GEDCOM file of a person's descent from an ancestor.
* The GEDCOM file will contain the following:
* all descendents of the ancestor who are ancestors of descendant,
* as well as the ancestor and descendant themselves.
*
* 15 Feb 2000 Paul B. McBride (pbmcbride@rcn.com)
*/
include("prompt.li")
include("ged_write.li")
proc main ()
{
indiset(iset)
indiset(dset)
indiset(tset)
indiset(uset)
indiset(aset)
indiset(gset)
getindimsg(descendant,"Identify the descendant")
if(descendant) {
set(i, 1)
while(1) {
getindimsg(ancestor, concat("Identify ", ord(i), " ancestor"))
if(ancestor) {
set(i, add(i,1))
addtoset(iset, ancestor, 0)
}
else {
break()
}
}
}
if(and(gt(lengthset(iset), 0),ne(descendant,0))) {
set(addspouses, askyn("Include spouses"))
set(addchildren, askyn("Include children"))
/* find all the people of interest */
print("Finding Ancestors... ")
addtoset(dset, descendant, 0)
set(tset, ancestorset(dset))
print(d(lengthset(tset)), nl())
print("Finding Descendants... ")
set(uset, descendantset(iset))
print(d(lengthset(uset)), nl())
set(aset, intersect(tset, uset))
set(aset, union(aset, iset)) /* add in ancestors */
addtoset(aset, descendant, 0) /* add in descendant */
if(addspouses) {
set(tset, spouseset(aset)) /* add their spouses */
set(aset, union(aset, tset))
}
if(addchildren) {
set(tset, childset(aset)) /* find everyone's children */
set(aset, union(aset, tset))
}
call ged_write(aset) /* write out GEDCOM file */
}
}