Computer-Aided Family Trees (CAFT) - CP/M

This is a discussion on Computer-Aided Family Trees (CAFT) - CP/M ; CAFT.WS4 (=Computer-Aided Family Trees) -------- "Computer-Aided Family Trees (CAFT)" by Emmanuel Roche Well... I have just finished something that, I think, should interest other members of the comp.os.cpm Newsgroup, even if it is not targeted toward CP/M itself, but is ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: Computer-Aided Family Trees (CAFT)

  1. Computer-Aided Family Trees (CAFT)

    CAFT.WS4 (=Computer-Aided Family Trees)
    --------

    "Computer-Aided Family Trees (CAFT)" by Emmanuel Roche

    Well... I have just finished something that, I think, should
    interest other members of the comp.os.cpm Newsgroup, even if it
    is not targeted toward CP/M itself, but is a demo of what can be
    done with the tools available under CP/M, in this case: WordStar
    4 and Mallard BASIC.

    It all started curiously. I was working outdoors, but was
    interrupted by rain. I started reading yet another maths book,
    but found this one boring. Wondering what to do, I happened to
    think about my family papers (don't ask me why!). Since I am the
    head of the family, I inherited a stack (10 inches high) of
    various official acts. Curiously, 98% of them are dealing with
    relatives, or branches of the family, long dead. Only 2% bear my
    family name.

    For foreigners, a little bit of explanation about the French
    "etat-civil" is in order. One of the consequences of the French
    Revolution (1789) was the creation of the "etat-civil": from
    then the mayor hall of each locality had to keep track of the
    birth, mariage, and death of its members. Before, it was the
    curate of the church who was writing the baptism (not the birth)
    of babies, as a result of a church meeting (circa 1500) that
    wanted to be sure that some people born under its mandate were
    adults, hence the need to record when everybody was born, since
    nobody knew if a given baby was going to become a member of the
    church, or worse...

    Of course, back then, the curate was often the only person in
    the village knowing to write. Some curates filled
    conscienciously books, others did not care. In some books, you
    can guess that the curate had an inspection from his superior,
    because he suddenly fills the book, then write less and less...
    It took many dozen of years before most curates were writing
    those events. In 1545, the king decided that all official acts
    should be written in French (before, it was in Latin). Toward
    1600, almost all of France had their curates filling their
    books.

    Since mariages and deaths were also important religious events,
    in those times, most curates were also recording them. The
    French Revolution established an administration that took over
    those writings. In most cases, the mayor was also the
    "instituteur", who was competing against the influence of the
    religion of the curate. (During the French Revolution itself,
    several of those old books were burned.)

    The French Republic is a kind of clerical religion. That's why,
    for instance, you mary first at the church, then at the mayor
    hall, where it becomes official. The Republic does not recognize
    a religious mariage. Since the Catholic church was present
    first, most people mary at the church first, then at the mayor
    hall. Of course, Communists, Socialists, Atheists, etc. only
    mary at the mayor hall.

    So, since circa 1789, most people can trace the births,
    mariages, and deaths of their ancestors by diving into the old
    books kept in mayor halls, and free to access, if older than one
    century. In my case, as explained, I also had a stack of papers,
    but they were mostly buying acts of unknown pieces of lands
    dating one or two centuries... I only found 4 or 5 papers signed
    by some of my ancestors. Before 1789, it all depends on what
    were the local conditions, back then: rich or poor, curate
    knowing to write or not, willing to do it or not, etc. That's
    why 98% of French people cannot trace their family history
    before 1789. Besides the family of our king, only 4 families in
    France have their history known (more or less) until the 11th
    century (800 years ago). The oldest you search, the hardest it
    is to find something relevant. End of explanations.

    In my particular case, I happen to live in the 7,000 inhabitants
    village where my family has been living for the last 3
    centuries. So, I simply went to the mayor hall, and asked to
    have a look to the old books of the etat-civil. I was told that,
    since they were so old, it was forbidden to make photocopies.
    So, I took a sheet of paper, and started rewriting everything I
    could find (I also inherited a partial list of dates, so I knew
    where to start to dig, fortunately).

    At the beginning, it was easy: the curate was only writing 4
    lines, writing always the same thing: only the first name was
    changing. The most interesting thing I saw was that some people
    signed. Seeing the signature of one of your ancestors is pretty
    strange: you see his signature, you have never heard about him,
    yet, if he had not been there 3 centuries ago, you would not be
    here today...

    At the end, it became very administrative, with a peak during
    the Revolution, where acts were often one page long... My poor
    fingers! (I suffered once from a cramp. I had not written so
    much since school...)

    2 weeks later, I finished retyping what were in the books
    (fortunately, the wheather was bad almost all the time). I spent
    the evenings retyping those pages in my computer, using WS4. I
    now had a 50-pages long file, with information about my family
    during the last 3 centuries.

    Since I only work on printed paper, I printed the file, then
    checked it. As soon as I had a doubt, I used WS4 to see if there
    were people of the same name in the file, or living circa the
    same time period. This way, thanks to the interactive nature of
    word-processing, I was able to solve a few misteries along the
    way.

    When I was finally quite sure that the file was coherent, I made
    a copy of the file, then deleted any item not being a name or a
    date. I thus got a file listing all my ancestors, with known
    dates. I also made another file, where I sorted their first
    names, since I had noticed that some first names were pretty
    common, obliging me to use numerals to understand which one was
    involved at a given time. For instance, I have 5 Jean Roche, and
    5 Antoine Roche. At the beginning, I was lost with so much first
    names to deal with.

    I finally decided to improve all those files by enabling me to
    visualise their contents. The classic way to represent the
    members of a family is known as a family tree. People born from
    the same parents are said to form a branch. So, I visualised
    that leaves were hanging from those branches. Of course, the
    oldest a tree, the taller it is, so I decided to put the oldest
    known family first names at the top, then proceed generations
    after generation (branches) downward.

    I soon ran into trouble: the 5th generation had 2 brothers, the
    first having 12 children, and the second 6! It was obvious, when
    using WS4, that putting those first names on the same line was
    going much, much farther to the right than I had ever
    experienced, during my 20 years of using WS4. In fact, I was
    thinking that WS4 would stop, at most, at the 255th column...

    But let us go back to the concept of a family tree. In my case,
    I had 11 generations to place on a sheet of paper. I wondered
    what should be written. I ended displaying only the first names
    (since they all had the same family name. The only exceptions
    were the brides, for whom I decided to add their maiden names).
    In most cimeteries, only the names and time of death are
    engraved. Sometimes, two dates are written: the date of birth,
    and the date of death. I decided to display them, to get a
    feeling of the span of the live that one person lived. (DR Graph
    has the ability of producing line graphs, where a line would be
    as long as the life of an individual. I considered producing
    such a graph, but decided to do it later.)

    So, I decided to display only the first names (with the brides)
    and the dates. They were already in the second WS4 files. I used
    one of my old BASIC program, TODATA.BAS, to add a number and a
    DATA statement in front of each line. (Since this program is
    ugly, I decided not to show it to you. It is old, and should be
    rewritten, but I only use it from time to time, so have never
    invested the time to improve it. As long as it works without
    error, that's the most important thing, before being readable or
    pretty.) I got something like:

    290 DATA "? Roche", "(1600)-????"
    300 DATA "Jean & Francoise Boyer", "(1635)-????"
    310 DATA "Francois", "????-????"
    320 DATA "Louis", "????-????"
    330 DATA "Catherine", "????-????"
    340 DATA "Marthe", "????-????"
    350 DATA "Antoine & Marthe Grabeuil", "(1707)-1746"
    360 DATA "Antoine-II & Marie Moisnard", "(1736)-????"
    370 DATA "Anne", "(1763)-1819"
    380 DATA "Antoine-III", "1768-1804"
    (...)

    I now had my list of data. Now, I needed a program to transform
    each of those free-format lines into nice leaves. I decided to
    keep it simple: just a rectangle containing the first name and
    the dates.

    Something important to notice: each leaf has a stem linking it
    to the above branch of the tree. So, we must have a character in
    the middle of the upper frame line indicating this stem. Also,
    we must display the dates in the second lines. In Europe, we use
    4 numerals to represent a year, taking from origin the death of
    Jesus-Christ. So, 2 dates = 2 * 4 = 8 chars. To display them
    nicely, it would be better if they could have at least one space
    on both sides. So, 10 chars.

    The problem is that 10 is even, and we need an odd number, since
    the upper frame line will contain one vertical character in its
    middle. So, I added a "-" to separate the dates, but another
    problem appeared: some dates are totally unknowns, or are
    estimated. After some thinking, I chose to use "????" for
    totally unknown dates, and "(date)" for estimated dates, so that
    "(date)-date" would be an odd number of figures, too.

    A quick check confirms that known dates have their separator
    just behind the stem, while estimated dates have the closing ")"
    just under it (I did not get a case where someone had 2
    estimated dates, in which case, since they would be equal in
    length, we would fall back on the previous case).

    Now, I encountered a more serious problem: since the BASIC
    program blindly reads the DATA statements, it has no idea how
    long each item is long (the only thing the program knows is that
    each line should have 2 items per line: first name and dates).

    As a consequence, from time to time, the first name has an even
    number of characters. I ended being obliged to include a flag,
    to include a space to right-justify the name line. By the way,
    let us have a look at the program:

    20 PRINT
    30 RESTORE 290
    40 READ nom$, annee$

    Those lines print an empty line (to clearly separate what is
    going to appear from what was already on the screen), then point
    to the DATA statements, at the end of the program, then read the
    2 items (first name and dates) on each line (they could be
    several per line, but I prefer one item per line).

    50 flag = 0

    The infrequently-used flag to right-justify the first name line.

    60 IF nom$ = "The" THEN PRINT : END

    290 DATA "? Roche", "(1600)-????"
    (...)
    1230 DATA "The","end"

    It is an habit of me to use "The end" at the end of DATA
    statements, to mark their ends.

    70 len1 = LEN (nom$)
    80 IF len1 MOD 2 = 0 THEN flag = 1

    We count the number of chars in the first name, and set a flag
    if it is even.

    90 len2 = LEN (annee$)

    We just count the number of chars of the dates which, by design,
    are odd.

    100 largeur = MAX (len1, len2)

    Now, we select the biggest of the 2 numbers.

    110 IF largeur MOD 2 = 0 THEN largeur = largeur + 1

    If we get a even number, we convert it to an odd number, by
    adding 1.

    120 moitie = ROUND (largeur / 2)

    Now, to display the 2 strings on both sides of the stem, we
    divide the width by 2, rounding it to the upper number. This has
    the interesting side effect of adding one space on both sides of
    the first name...

    130 PRINT "+" STRING$ (moitie, "-") "+" STRING$ (moitie, "-") "+"

    This prints the chars used to compose the upper frame line. To
    be as portable as possible, we use only ASCII characters.

    140 PRINT "|" ;
    150 PRINT STRING$ (moitie - len1 / 2, " ") ;
    160 PRINT nom$ ;
    170 PRINT STRING$ (moitie - len1 / 2, " ") ;
    180 IF flag = 1 THEN PRINT " " ;
    190 PRINT "|"

    This prints the first name, surrounded by the 2 sides, with one
    or more space on both sides, and the occasional space to right-
    justify.

    200 PRINT "|" ;
    210 PRINT STRING$ (moitie - len2 / 2, " ") ;
    220 PRINT annee$ ;
    230 PRINT STRING$ (moitie - len2 / 2, " ") ;
    240 PRINT "|"

    Same thing (minus the flag) for the dates, since dates are, by
    design, odd.

    250 PRINT "+" STRING$ (largeur + 2, "-") "+"

    This prints the bottom frame line, again using only ASCII
    characters.

    260 ' WHILE INKEY$ = "" : WEND

    This was used to debug the program. When enabled, it stops the
    program after each frame/leaf.

    270 GOTO 40

    One frame/leaf done. Loop to display another pair of items. (We
    already have seen how to end, at the beginning. It is a good
    idea to start by dealing with the exit, in any program.)

    run

    +------+------+
    | ? Roche |
    | (1600)-???? |
    +-------------+
    +------------+------------+
    | Jean & Francoise Boyer |
    | (1635)-???? |
    +-------------------------+
    +-----+-----+
    | Francois |
    | ????-???? |
    +-----------+
    +-----+-----+
    | Louis |
    | ????-???? |
    +-----------+
    +-----+-----+
    | Catherine |
    | ????-???? |
    +-----------+
    +-----+-----+
    | Marthe |
    | ????-???? |
    +-----------+
    +-------------+-------------+
    | Antoine & Marthe Grabeuil |
    | (1707)-1746 |
    +---------------------------+
    +--------------+--------------+
    | Antoine-II & Marie Moisnard |
    | (1736)-???? |
    +-----------------------------+
    +------+------+
    | Anne |
    | (1763)-1819 |
    +-------------+
    +------+------+
    | Antoine-III |
    | 1768-1804 |
    +-------------+
    (Stopped)
    Ok

    So, I now had my leaves. Using WS4, I then connected them together.

    +-------------+
    | ? Roche |
    | (1600)-???? |
    +------+------+
    |
    +-------------+------+
    | |
    +------------+------------+ +-----+-----+
    | Jean & Francoise Boyer | | Francois |
    | (1635)-???? | | ????-???? |
    +------------+------------+ +-----------+
    |
    +---------------+--------------+
    | |
    +--------------+--------------+ +-------------+-------------+
    | Francois-II & Marie Tonneau | | Antoine & Marthe Grabeuil |
    | 1698-1754 | | (1707)-1746 |
    +--------------+--------------+ +-------------+-------------+
    (etc)

    As can be seen, this program works perfectly, and is highly
    portable, since it uses only ASCII characters (which predates
    MS-DOS Plain Text and Windows Text file formats).

    However, in practice, when I printed the family tree thus
    produced, I ran into an unexpected problem: its height. It was
    taller than a standard sheet of paper. Recall that I have a 11-
    generations family tree. As can be seen, each generation needs 4
    lines, then there is a 3 lines interval representing the
    branches. It is here that lay the problem: the branches take too
    much place (in my case, 10 * 3 = 30, compared to 44 lines of
    information (3/4).

    So, the first thing to try is to get rid of the vertical
    characters, thus using only 10 lines to represent the branches,
    or 1/4 of the lines. (So, each generation now needs 5 lines.)

    +-------------+
    | ? Roche |
    | (1600)-???? |
    +------+------+
    +-------------+------+
    +------------+------------+ +-----+-----+
    | Jean & Francoise Boyer | | Francois |
    | (1635)-???? | | ????-???? |
    +------------+------------+ +-----------+
    +---------------+--------------+
    +--------------+--------------+ +-------------+-------------+
    | Francois-II & Marie Tonneau | | Antoine & Marthe Grabeuil |
    | 1698-1754 | | (1707)-1746 |
    +--------------+--------------+ +-------------+-------------+
    (etc)

    Well, it works, but it is not very clear. It would be clearer if
    we had at our disposition a "T" and an upside-down "T".
    Unfortunately, there is none in the Good Old Faithful ASCII
    standard:

    run"ascii2

    0 1 2 3 4 5 6 7 8 9 A B C D E F

    2 ! " # $ % & ' ( ) * + , - . /
    3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
    4 @ A B C D E F G H I J K L M N O
    5 P Q R S T U V W X Y Z [ \ ] ^ _
    6 ` a b c d e f g h i j k l m n o
    7 p q r s t u v w x y z { | } ~

    Ok

    So, time to play with the parameters. We are using WS4. In a
    previous message, many months ago, I showed that WS4 can now
    "embed" some characters above DEL. The table included in the WS4
    manual for MS-DOS shows a standard IBM PC character set.
    However, WS4 started as an ASCII editor, and deals with those
    "extended characters" (as it calls them) in a clumsy way: each
    one is enclosed by 2 other characters: 9BH and 1CH (155 and 28).
    So, each time you use a char above ASCII, the file grows by 3
    chars. Not very attractive!

    So, I investigated using another word-processor, however, I
    first needed to convert the ASCII characters used by WS4 into
    something that could easily be automatically replaced. That
    means that I had to take into account the characters used: Upper
    and lower case letters, all the digits, "(", ")", "|", "-", "?",
    ".":

    0 1 2 3 4 5 6 7 8 9 A B C D E F

    2 ! " # $ % & ' * , /
    3 : ; < = > ?
    4
    5 [ \ ] ^ _
    6 `
    7 { } ~

    That's all that remains from ASCII after removing the chars used
    by the program. We need 4 chars for the corners of the frame,
    one for "cross", one for "T", and one for "inverted T", one for
    "horizontal line", one for "vertical line". Total: 9 chars.

    One problem is "horizontal line", since I also use "-" to
    separate the dates. If we simply use "+" for cross, "|" for
    vertical line, and "-" for horizontal line, we are down to 6
    chars. As I hope is clear, there happens to have 3 pairs of
    brackets available, or 6 chars. Using them, we get:

    run"caft

    [------<------]
    | ? Roche |
    | (1600)-???? |
    {-------------}
    [------------<------------]
    | Jean & Francoise Boyer |
    | (1635)-???? |
    {-------------------------}
    [-----<-----]
    | Francois |
    | ????-???? |
    {-----------}
    [-----<-----]
    | Louis |
    | ????-???? |
    {-----------}
    [-----<-----]
    | Catherine |
    | ????-???? |
    {-----------}
    [-----<-----]
    | Marthe |
    | ????-???? |
    {-----------}
    [-------------<-------------]
    | Antoine & Marthe Grabeuil |
    | (1707)-1746 |
    {---------------------------}
    [--------------<--------------]
    | Antoine-II & Marie Moisnard |
    | (1736)-???? |
    {-----------------------------}

    140 PRINT "[" STRING$ (moitie, "-") "<" STRING$ (moitie, "-") "]"
    150 PRINT "|" ;
    160 PRINT STRING$ (moitie - len1 / 2, " ") ;
    170 PRINT nom$ ;
    180 PRINT STRING$ (moitie - len1 / 2, " ") ;
    190 IF flag = 1 THEN PRINT " " ;
    200 PRINT "|"
    210 PRINT "|" ;
    220 PRINT STRING$ (moitie - len2 / 2, " ") ;
    230 PRINT annee$ ;
    240 PRINT STRING$ (moitie - len2 / 2, " ") ;
    250 PRINT "|"
    260 PRINT "{" STRING$ (largeur + 2, "-") "}"

    It works. Using an MS-DOS word-processor, I could easily
    exchange the brackets for extended characters. However, yet
    another problem: The 5th generation has 12 children on one side,
    and 6 children on the other side... Total: 342 chars and that
    MS-DOS word-processor refused to deal with such long lines...

    I was wondering what to do. 342 chars = 4.5 pages wide. You sure
    don't print very often such wide data. I checked my copies of
    MultiPlan and SuperCalc: both simply say that, if the
    spreadsheet is wider than 80 columns, it is printed on another
    page. I even had a look at my old WS4 manual, but found nothing
    dealing with extra-wide documents, and how to print them. I was
    wondering if I was going to create a family tree using a spread-
    sheet program.

    So, time to play, again (as you can see, programmers, are very
    serious!). I started Good Old WS4, inserted a ".RM 255"
    statement on the first line, and started tinkering in "column
    mode", wondering how to create such a wide graph using 5 pages.
    After a while, I suddenly noticed that WS4 displayed "C272"!
    That is to say: it was already after the 255th column, and was
    not complaining! I was in shock: discovering yet another useful
    feature in a program that I have used during those last 20
    years!!! Incredible!

    I quickly joined the 2 extra-long lines: total: 342 columns, and
    nothing happened! WS4 is really an amazing program! All that in
    8-bits...

    My morale boosted so much by knowing that WS4 was able to deal
    with such extra-wide matter, I rushed to investigate how to
    incorporate those "extended characters" in the program. Since
    each char is now 3 chars, I could no longer use STRING$, so I
    replaced it by FOR-NEXT loops. I also added a count of the
    number of leaves in the family tree, automatic spacing from the
    other leaf, and a downward stem only in the case of a couple (I
    did not take into account the fact that a couple could die
    before having children).

    10 REM CAFT.BAS by Emmanuel ROCHE
    20 '
    30 PRINT
    40 leaves = 0
    50 RESTORE 560
    60 READ nom$, annee$
    70 IF nom$ = "The" THEN PRINT : PRINT "This family tree has"
    leaves "leaves." : PRINT : END
    80 leaves = leaves + 1
    90 flag = 0
    100 len1 = LEN (nom$)
    110 IF len1 MOD 2 = 0 THEN flag = 1
    120 parents = INSTR (nom$, "&")
    130 len2 = LEN (annee$)
    140 largeur = MAX (len1, len2)
    150 IF largeur MOD 2 = 0 THEN largeur = largeur + 1
    160 moitie = ROUND (largeur / 2)
    170 ' Upper frame line
    180 PRINT CHR$ (155) CHR$ (218) CHR$ (28) ;
    190 FOR i = 1 TO moitie
    200 PRINT CHR$ (155) CHR$ (196) CHR$ (28) ;
    210 NEXT i
    220 PRINT CHR$ (155) CHR$ (193) CHR$ (28) ;
    230 FOR i = 1 TO moitie
    240 PRINT CHR$ (155) CHR$ (196) CHR$ (28) ;
    250 NEXT i
    260 PRINT CHR$ (155) CHR$ (191) CHR$ (28) " "
    270 ' First name line
    280 PRINT CHR$ (155) CHR$ (179) CHR$ (28) ;
    290 PRINT STRING$ (moitie - len1 / 2, " ") ;
    300 PRINT nom$ ;
    310 PRINT STRING$ (moitie - len1 / 2, " ") ;
    320 IF flag = 1 THEN PRINT " " ;
    330 PRINT CHR$ (155) CHR$ (179) CHR$ (28) " "
    340 ' Dates line
    350 PRINT CHR$ (155) CHR$ (179) CHR$ (28) ;
    360 PRINT STRING$ (moitie - len2 / 2, " ") ;
    370 PRINT annee$ ;
    380 PRINT STRING$ (moitie - len2 / 2, " ") ;
    390 PRINT CHR$ (155) CHR$ (179) CHR$ (28) " "
    400 ' Lower frame line
    410 PRINT CHR$ (155) CHR$ (192) CHR$ (28) ;
    420 FOR i = 1 TO moitie
    430 PRINT CHR$ (155) CHR$ (196) CHR$ (28) ;
    440 NEXT i
    450 IF parents <> 0 THEN GOTO 480
    460 PRINT CHR$ (155) CHR$ (196) CHR$ (28) ;
    470 GOTO 490
    480 PRINT CHR$ (155) CHR$ (194) CHR$ (28) ;
    490 FOR i = 1 TO moitie
    500 PRINT CHR$ (155) CHR$ (196) CHR$ (28) ;
    510 NEXT i
    520 PRINT CHR$ (155) CHR$ (217) CHR$ (28) " "
    530 ' WHILE INKEY$ = "" : WEND
    540 GOTO 60
    550 :
    560 DATA "? Roche", "(1600)-????"
    570 DATA "Jean & Francoise Boyer", "(1635)-????"
    580 DATA "Francois", "????-????"
    590 DATA "Louis", "????-????"
    600 DATA "Catherine", "????-????"
    610 DATA "Marthe", "????-????"
    620 DATA "Antoine & Marthe Grabeuil", "(1707)-1746"
    630 DATA "Antoine-II & Marie Moisnard", "(1736)-????"
    640 DATA "Anne", "(1763)-1819"
    650 DATA "Antoine-III", "1768-1804"
    660 DATA "Marie-Suzanne", "1770-????"
    670 DATA "Marthe-II", "1771-1772"
    680 DATA "Genevieve-II", "1772-????"
    690 DATA "Rose", "(1775)-1807"
    700 DATA "Francois-II & Marie Tonneau", "1698-1754"
    710 DATA "Marie", "1728-1803"
    720 DATA "Jeanne", "1729-????"
    730 DATA "Francois-III", "1730-????"
    740 DATA "Pierre-Francois", "1732-????"
    750 DATA "Marthe-III", "1735-1736"
    760 DATA "Marie-Jeanne", "1736-1739"
    770 DATA "Marthe-IV", "1736-1736"
    780 DATA "Marie-Magdelaine", "1737-????"
    790 DATA "Leon", "1739-????"
    800 DATA "Alexandre", "1740-????"
    810 DATA "Jean-II", "1743-1743"
    820 DATA "Antoine-IV & Genevieve Millet", "1733-1794"
    830 DATA "Genevieve", "1761-1819"
    840 DATA "Madeleine", "1763-1815"
    850 DATA "Jeanne-II", "1765-????"
    860 DATA "Marie-II", "1766-1773"
    870 DATA "Marie-Madelaine", "(1768)-1773"
    880 DATA "Marie-Adelaide", "1769-????"
    890 DATA "Pierre", "1771-????"
    900 DATA "Jacques", "1773-1778"
    910 DATA "Charles-Borromee", "1775-1780"
    920 DATA "Jean-III & Victoire Lafarge", "1777-1846"
    930 DATA "Genevieve-IV", "1805-????"
    940 DATA "Eugenie", "1807-????"
    950 DATA "Justine, Josephine", "1808-????"
    960 DATA "Marguerite, Virginie", "1813-????"
    970 DATA "Jean-IV", "1814-????"
    980 DATA "Elizabeth", "1815-????"
    990 DATA "Antoine-Francois & Anne Gaborit", "1767-????"
    1000 DATA "Genevieve-III", "1790-????"
    1010 DATA "Magdelaine", "1791-????"
    1020 DATA "Ustelle", "1793-1793"
    1030 DATA "Antoine-V", "1795-????"
    1040 DATA "Guillaume & Marie Fedeau", "1770-1834"
    1050 DATA "Francois-Guillaume & Marie-Clotilde Grassiot", "1806-1891"
    1060 DATA "Nancy", "1834-????"
    1070 DATA "Noemie", "1836-????"
    1080 DATA "Aline", "1838-????"
    1090 DATA "Theophile", "1840-1870"
    1100 DATA "Guillaume-(Emile) & Aline Damigny", "1833-1921"
    1110 DATA "Marie¬ Aline¬ Yvonne", "1873-1965"
    1120 DATA "Aline-II", "1876-1959"
    1130 DATA "Andre & Philiberte Martin", "1877-1969"
    1140 DATA "Jean-V & Alix Person", "1880-1969"
    1150 DATA "Jane", "1907-1995"
    1160 DATA "Anne-Marie", "1908-2001"
    1170 DATA "Madeleine-II", "1910-1910"
    1180 DATA "Marguerite", "1912-1995"
    1190 DATA "Germaine", "1917-1989"
    1200 DATA "Michel & Ghislaine Paynaut", "1924-...."
    1210 DATA "Brigitte", "????-...."
    1220 DATA "Christian", "????-...."
    1230 DATA "Marcel & Alice Prevotiere", "1871-1952"
    1240 DATA "Georges & Yvonne Gorchs-Chacou", "1902-1991"
    1250 DATA "Marie-Marcelle", "1906-2004"
    1260 DATA "Elizabeth-II", "1910-...."
    1270 DATA "Helene", "????-...."
    1280 DATA "Odette", "????-...."
    1290 DATA "Andre-II & Genevieve Lalague", "1929-1985"
    1300 DATA "Emmanuel", "????-...."
    1310 DATA "Isabelle", "????-...."
    1320 DATA "Anne-II", "????-...."
    1330 DATA "The","end"

    Using this program, I got the leaves fully enclosed in extended
    chars. After editing the leaves so has to create a 5-pages wide
    family tree (the "column mode" of WS4 was a revelation!), I was
    able to cut it into 5 pages that I put vertically in a file, one
    after the other. Now, all I have to do is print those 5 pages
    (which, by the way, now fit vertically inside one standard page,
    since this 11-generations family tree is 54-lines tall), cut the
    left margin of the second, etc, page, tape them horizontally,
    and I was finally able to see, for the time in my life (nobody
    had done a family tree of my family before), a family tree of my
    family. Thanks, WS4!

    Page 1














    +---------------------------------------
    +-----------+ +-----------+ +---------------+
    | Marie | | Jeanne | | Francois-III |
    | 1728-1803 | | 1729-???? | | 1730-???? |
    +-----------+ +-----------+ +---------------+
    +--------------------------------------------------------------------
    +-----------+ +-----------+ +-----------+ +-----------+ +------------------
    | Genevieve | | Madeleine | | Jeanne-II | | Marie-II | | Antoine-Francois
    | 1761-1819 | | 1763-1815 | | 1765-???? | | 1766-1773 | | 1767-?
    +-----------+ +-----------+ +-----------+ +-----------+ +------------------
    +--------------------------
    +---------------+ +-------------+ +
    | Genevieve-III | | Magdelaine | |
    | 1790-???? | | 1791-???? | |
    +---------------+ +-------------+ +





    +----------------
    +---------------------------+ +
    | Marcel & Alice Prevotiere | |
    | 1871-1952 | |
    +---------------------------+ +
    +---------------------------+----------------
    +---------------------------------+ +-----------------+ +-----
    | Georges & Yvonne Gorchs-Chacou | | Marie-Marcelle | | Eliz
    | 1902-1991 | | 1906-2004 | | 19
    +---------------------------------+ +-----------------+ +-----
    +-------------+-----------------------+
    +-----------+ +-----------+ +-------------------------------+
    | Helene | | Odette | | Andre-II & Genevieve Lalague |
    | ????-.... | | ????-.... | | 1929-1985 |
    +-----------+ +-----------+ +-------------------------------+
    +-------------+-------------+
    +-----------+ +-----------+ +-----------+
    | Emmanuel | | Isabelle | | Anne-II |
    | ????-.... | | ????-.... | | ????-.... |
    +-----------+ +-----------+ +-----------+
    Page 2









    +-----
    +--------------------
    | Francois-II & Marie
    | 1698-1754
    +--------------------
    ---------------------------------------------------------------------------
    +-----------------+ +-------------------------------+ +-------------+ +----
    | Pierre-Francois | | Antoine-IV & Genevieve Millet | | Marthe-III | | Mar
    | 1732-???? | | 1733-1794 | | 1735-1736 | | 1
    +-----------------+ +-------------------------------+ +-------------+ +----
    ---------------------------------------------------------------------------
    ---------------+ +-----------------+ +-----------------+ +-----------------
    & Anne Gaborit | | Marie-Madelaine | | Marie-Adelaide | | Guillaume & Mari
    ??? | | (1768)-1773 | | 1769-???? | | 1770-183
    ---------------+ +-----------------+ +-----------------+ +-----------------
    -------------------+ |
    -----------+ +-----------+ +---------------------------
    Ustelle | | Antoine-V | | Francois-Guillaume & Marie
    1793-1793 | | 1795-???? | | 1806-189
    -----------+ +-----------+ +---------------------------
    +---------------------------------------+---
    +-----------------------------------+ +-----------+ +---------
    | Guillaume-(Emile) & Aline Damigny | | Nancy | | Noemie
    | 1833-1921 | | 1834-???? | | 1836-???
    +-----------------------------------+ +-----------+ +---------
    -------------------------------+-------------------------------------------
    -----------------------+ +-----------+ +---------------------------+ +-----
    Marie, Aline, Yvonne | | Aline-II | | Andre & Philiberte Martin | | Jean
    1873-1965 | | 1876-1959 | | 1877-1969 | |
    -----------------------+ +-----------+ +---------------------------+ +-----
    --+ +----------------------------------
    ----------+ +-----------+ +-------------+ +----------
    abeth-II | | Jane | | Anne-Marie | | Madeleine
    10-.... | | 1907-1995 | | 1908-2001 | | 1910-19
    ----------+ +-----------+ +-------------+ +----------
    Page 3





    +-----------
    | Jean & Fra
    | (163
    +-----------
    --------------------------------------------------------------------
    ---------+
    Tonneau |
    |
    ---------+
    --------------------------------------------------------------------
    -----------+ +-----------+ +-------------------+ +-----------+ +----
    ie-Jeanne | | Marthe-IV | | Marie-Magdelaine | | Leon | | Ale
    736-1739 | | 1736-1736 | | 1737-???? | | 1739-???? | | 174
    -----------+ +-----------+ +-------------------+ +-----------+ +----
    --------------------------------------------------------------------
    ----------+ +-----------+ +-----------+ +-------------------+ +-----
    e Fedeau | | Pierre | | Jacques | | Charles-Borromee | | Jean
    4 | | 1771-???? | | 1773-1778 | | 1775-1780 | |
    ----------+ +-----------+ +-----------+ +-------------------+ +-----
    +-------------------------------------
    --------------------+ +---------------+ +-----------+ +-------------
    -Clotilde Grassiot | | Genevieve-IV | | Eugenie | | Justine, Jos
    1 | | 1805-???? | | 1807-???? | | 1808-??
    --------------------+ +---------------+ +-----------+ +-------------
    ------------------------+
    --+ +-----------+ +-----------+
    | | Aline | | Theophile |
    ? | | 1838-???? | | 1840-1870 |
    --+ +-----------+ +-----------+
    ------+
    -----------------+
    -V & Alix Person |
    1880-1969 |
    -----------------+
    ----------------------------------------------------+
    -----+ +-------------+ +-----------+ +-----------------------------+
    -II | | Marguerite | | Germaine | | Michel & Ghislaine Paynaut |
    10 | | 1912-1995 | | 1917-1989 | | 1924-.... |
    -----+ +-------------+ +-----------+ +-----------------------------+
    +-------------+
    +-----------+ +-----------+
    | Brigitte | | Christian |
    | ????-.... | | ????-.... |
    +-----------+ +-----------+
    Page 4
    +-------------+
    | ? Roche |
    | (1600)-???? |
    +-------------+
    +--------------------+
    --------------+ +-----------+
    ncoise Boyer | | Francois |
    5)-???? | | ????-???? |
    --------------+ +-----------+
    ---------------------------------------------------------------
    +-----------+ +-----------+ +-----------+ +-
    | Louis | | Catherine | | Marthe | |
    | ????-???? | | ????-???? | | ????-???? | |
    +-----------+ +-----------+ +-----------+ +-
    ---------------+
    -------+ +-----------+ +--
    xandre | | Jean-II | | A
    0-???? | | 1743-1743 | |
    -------+ +-----------+ +--
    ---------+ +-----------------------------
    ------------------------+ +-------------+ +-------------+ +----
    -III & Victoire Lafarge | | Anne | | Antoine-III | | Mar
    1777-1846 | | (1763)-1819 | | 1768-1804 | | 1
    ------------------------+ +-------------+ +-------------+ +----
    --------------------------------------------------------+
    --------+ +-----------------------+ +-----------+ +-----------+
    ephine | | Marguerite, Virginie | | Jean-IV | | Elizabeth |
    ?? | | 1813-???? | | 1814-???? | | 1815-???? |
    --------+ +-----------------------+ +-----------+ +-----------+
    Page 5









    ------------+
    --------------------------+
    Antoine & Marthe Grabeuil |
    (1707)-1746 |
    --------------------------+
    |
    ---------------------------+
    ntoine-II & Marie Moisnard |
    (1736)-???? |
    ---------------------------+
    ----------------------------------------------------+
    -----------+ +-----------+ +---------------+ +-------------+
    ie-Suzanne | | Marthe-II | | Genevieve-II | | Rose |
    770-???? | | 1771-1772 | | 1772-???? | | (1775)-1807 |
    -----------+ +-----------+ +---------------+ +-------------+

    (Of course, for portability reasons, the above family tree was
    output with the ASCII driver of WS4, not the ASC256 driver which
    keeps the extended characters used for the leaves and french
    accented characters.)

    That's all, folks!

    Yours Sincerely,
    "French Luser"


    EOF



  2. Re: Computer-Aided Family Trees (CAFT)

    Wow what a long and detailed account.
    Very interesting - I especially liked your quote....

    ".....(I did not take into account the fact that a couple could die
    before having children)......"

    That would be quite a shock for the children I imagine.
    Alan


    "French Luser" wrote in message
    news:440ed98d$0$6671$8fcfb975@news.wanadoo.fr...
    > CAFT.WS4 (=Computer-Aided Family Trees)
    > --------
    >




  3. Re: Computer-Aided Family Trees (CAFT)


    I enjoyed reading your lengthy article. Must've taken almost as much
    work to write all that as it did to do the project. However, at the
    end, I was left wondering, why not just draw the damn thing by hand.
    :-D


+ Reply to Thread