Listing 6: Test driver program and output


#include <fstream.h>
#include <memory.h>
#include "Globals.h"
#include "file.h"

void main()
{
    File file;
    file.Init("data.dat");
    BOOL bStatus;
    fstream out;
    out.open("out.txt", ios::out);
    cout = out;

    sVariantRecord rec;
    memset(&rec, 0, sizeof(sVariantRecord));

    bStatus = file.GetRecord(rec);
    while (bStatus != NULL) {
        cout << "Name: " << rec.Name << '\n';
        cout << "Format: " << rec.Format << '\n';
        switch (rec.Format) {
        case FORMAT1:
            cout << "Amount: " << rec.sFormat1.Amount << '\n';
            cout << "Date: " << rec.sFormat1.Date << '\n';
            break;
        case FORMAT2:
            cout << "Date: " << rec.sFormat2.Date << '\n';
            cout << "Desc: " << rec.sFormat2.Desc << '\n';
            break;
        case FORMAT3:
            cout << "Amount: " << rec.sFormat3.Amount << '\n';
            cout << "Date: " << rec.sFormat3.Date << '\n';
            cout << "Desc: " << rec.sFormat3.Desc << '\n';
            break;
        default:
            cout << "ho hum" << '\n';
            break;
        }
        cout << '\n';
        memset(&rec, 0, sizeof(sVariantRecord));
        bStatus = file.GetRecord(rec);
    }
    out.close();
}

//output:

Name: C/C++
Format: 1
Amount: 100.99
Date: 04/03/96

Name: Users
Format: 2
Date: 05/17/96
Desc: La de da!

Name: Journal
Format: 3
Amount: 800.25
Date: 12/25/96
Desc: Hum de dum!

//End of File