/* gedcom.li @(#)gedcom.li 1.3 10/13/95 by Scott McGee (smcgee@microware.com) This is a library of functions and proc to output GEDCOM. It is most useful to output source records and potentially some info from custom tags. The proc outsources() will take and indi set and output all the source structures that are referenced. */ proc outsources (s){ table(t) list(q) forindiset (s, i, a, n) { traverse(root(i), m, l) { if (nestr("SOUR", tag(m))) { continue() } if (not(reference(value(m)))) { continue() } if (eq(1, lookup(t, value(m)))) { continue() } set(v, save(value(m))) insert(t, v, 1) enqueue(q, v) } } if(q){ forlist(q, k, n) { set(r, dereference(k)) call outrecord(r) } } } proc outrecord(r){ /* good general purpose procedure that outputs any LifeLines record in its pure GEDCOM form */ traverse(r, s, l) { d(l) if (xref(s)) { " " xref(s) } " " tag(s) if (value(s)) { " " value(s) } "\n" } }