 > I need to know how %@fileage and %@makeage date/time thingys are
 > created.

For FILEAGE, 4DOS puts the file date in the high word of a LONG, and the
file time in the low word:

 #if _DOS
            lVal = dir.fd.wr_date;
            lVal = (ram << 16) + dir.ft.wr_time;
 #elif _OS2
            lVal = dir.fdLW.fdLWrite;
            lVal = (ram << 16) + dir.ftLW.ftLWrite;
 #elif _NT
            FILETIME LocalTime;

            FileTimeToLocalFileTime(&(dir.ftimeLastWrite),&LocalTime);
            FileTimeToDosDateTime(&LocalTime, (LPWORD)&i, (LPWORD)&n);
            lVal = ( i << 16) + n;
 #endif
            sprintf( var, "%uld", lVal );


For MAKEAGE, it just reverses the process.  First it gets the start value:

        if (year > 1900 )
                year -= 1900;
        if (year >= 80 )
                year -= 80;
        lVal = (day + (month << 5) + (year << 9));
        lVal <<= 16;

Then it offsets the string you pass:

        day = month = year = 0;
        sscanf( szArg, "%u%*c%u%*c%u", &day, &month, &year );
        if ((day > 24) || (month > 60 ) || (year > 60 ))
                return ERROR_4DOS_INVALID_TIME;

        lVal += (ULONG)((year / 2) + (month << 5) + (day << 11));
        sprintf( szReturn, FMT_ULONG, lVal );

Hope this helps.

        - Rex

