Download from here and extract into a directory of your choice using your favorite ZIP program. e.g. [Off Site]WINZIP or PKZIP.

The ZIP file contains all the source, an executable compiled for Windows and this documentation file.

See Family Tree Maker for Windows use of GEDCOM Version 1.2.1 (48K)

© Copyright 2000-16 Rick Parsons


i.e. You are free to use and pass on the program or any part of its source (including this copyright notice) but not for gain or reward beyond the retail cost of the media.

I am prepared to make an exception. If Broderbünd, Banner Blue, Parsons Technology, The Learning Company, Mattel,, or whatever they call themselves at the moment, want to incorporate these changes into any future version of Family Tree Maker for Windows, then they are quite welcome to as this would save everyone a lot of effort.

This program has only been tested with [Off Site]Family Tree Maker Version 7.0–8.0. There is very little error checking so it relies on unmolested source data.

It was mostly done to assist the passing of the GEDCOM to [Off Site]GED2HTML 3.6, a program by Gene Stark to generate web pages from GEDCOM data.

How to run it

Create an output GEDCOM file from Family Tree Maker for Windows (FTW). Use the default options “Abbreviate tags”, “GEDCOM 5.5”, and Destination “FTW”. The others you can choose at will.

Specify an output file name of 8 characters or less (this is a DOS program)

It is easiest if you copy the program into the directory containing the GEDCOM data to be fixed.

Start the program by double clicking on it. This will give you a control shell. Enter the command

        <source.ged >output.ged

where “source.ged” is the file created by FTW and “output.ged” is the output file. Both the open and close angle brackets "<" and ">" and the space are required exactly as stated. No other spaces should be entered. Both file names should be 8 characters or less.

When the “PROGRAM ENDED” message is displayed, the shell window can be closed.

For the adventurous you can specify path names relative to the program location (using ..\ as needed) and the DOS form of windows long file names can be used.

What it does

The program takes a raw FTW output GEDCOM file and “tweeks” it a little closer to the GEDCOM 5.5 standard.

  1. Blank lines are ignored and removed
  2.         1 _MILT         ==>     1 EVEN
                                    2 TYPE Military service
  3.         1 _DEG          ==>     1 EVEN
                                    2 TYPE Degree
  4.         1 _MDCL <text>    ==>   1 EVEN
                                    2 TYPE Medical
                                    2 PLAC <text>

    I welcome suggestions for a better alternative here

  5.         1 REPO          ==>     1 REPO @R1@
                                    0 @R1@ REPO

    This fixes the letter of the GEDCOM standard. To fix the spirit of it as well, I would have to move the location (FTW uses NOTE) to the level 0 REPO as well, perhaps as a NAME tag or left as NOTE.

  6.         1 SEX <sex>       ==>     2 NICK <name with / removed>
            1 ALIA <name>             1 SEX <sex>

    This interprets ALIA as I use it, for nick-names. Alternate spellings use multiple NAME tags in version 7. I am open to requests for a stricter interpretation of this which would come out as

            1 ALIA <name>     ==>     1 ALIA @xref@
                                      0 @xref@ INDI
                                      1 NAME <name>
  7.         n DATE <date string>

    The date string is corrected to

    1. BEF. ==> BEF
    2. AFT. ==> AFT
    3. ABT. ==> ABT
      All removal of spurious dot.
    4. UNKNOWN ==> (Unknown)
    5. PRIVATE ==> (Private)
      These are done despite the fact that GED2HTML 3.6 does not support this legal construction - please Gene <g>.
    6. BET. <date1> - <date2> ==> BET <date1> AND <date2>
      or FROM <date1> TO <date2>
      The latter form is used if the previous tag was OCCU, RESI or _MILT.

Other known GEDCOM errors not addressed

  1.         1 ADDR          should be       1 ADDR
            2 PHON                          1 PHON

    and in any case, should not be in the INDI records in the first place.

  2.         1 OCCU          should be       1 OCCU <data>
            2 PLAC <data>

    Not using the PLAC for general data. Similarly for other attribute tags such as RESI, SSN etc. I have not tested this with GED2HTML so I don't know what it would do.

  3.         2 CAUS <text>
            3 SOUR @xref@

    GEDCOM 5.5 does not call for SOUR at this point. We could change it to 2 SOUR to associate it with the containing event.

  4. Date ranges are incorrectly abbreviated i.e. 1 Mar 1887 - 30 Apr 1887 is incorrectly output as 1 Mar - 30 Apr 1887
  5. FAM _FA1 tags. These would be quite hard. The meaning of each is contained in the _MEND tag later in the file (Divorce, Separation etc.). It needs to be translated to a generic EVEN (or better still, in some cases, to DIV). p.s. I am sure that I have seen DIV tags generated by FTW but they don't seem to be there now.
  6. The source quality in FTW is coded as a NOTE rather as QUAY and in the wrong logical position. This would be hard to fix because of the problem of distinguishing it from the comments NOTE and also because it is structurally incorrect in the first place (it should be part of the citation).
  7.         1 _MSTAT 

    “Marriage” start status. There doesn't seem to be a standard structure for this so a generic EVEN tag could be invented.

  8. Double dates use the first date rather than the second. GED2HTML is at fault here as it stops at the “/”. i.e. 1 Feb 1741/42 is interpreted as 1741. This is correct for the calendar in use at the time but confuses some people. I have discussed this with Gene and he suggested that I use the text form of the date, which remains as it was input, rather than the interpreted form. I have done this but it is not entirely satisfactory (it doesn't look pleasing as it is now all in capitals). It may be necessary for FTWGEDfx to output invalid GEDCOM (with lower case) to solve this problem.
  9. Translate _ELEC to something else as I have just discovered that I use it (Elected).

There is plenty of room for expansion in this program, so far I have only written parts to solve the particular problems that I have. If anyone has any suggestions that fit within the original brief, then I will seriously consider them.

P.S. I cannot alter the user interface, this is a limitation of the compiler that I have. However I will gladly supply the (trivial) source if someone wants to use a different compiler—or discover the mysteries of C++ GUI.