Drivers Daily Log Program (DDL) - ddlsoftware.com - Trucker's Duty Status Log Software and more. Includes New USA 2005 & Canada 2007 Rules. to see a list of all supported rules go to Rules Supported

                       

Home  Request for Activation Code Form Buy On-Line Now Download Page 

  Drivers using DDL Software with GpsGate  Click on Map to see other DDL users locations. (click here to see how to join)

Google    
WWW Drivers Daily Log Web Site


Payments Accepted thru

PayPal will accept major credit cards, you do not need a PayPal account.

Need Information before you buy Click here


DDL Information

    Home
    Contacting Us
  Contents
    Computer System Requirement
    DDL NEWS
    Different between Versions
    Downloads
  Print Modules Downloads
  Buying DDL Information
  Frequently Asked Questions

Start here for quick answers to most questions about DDL

  Email Help
  Features
    Licensing Policy All users must read this.
  Licensing Requirements
    Request for ActivationCode
  Sample Reports (87 different reports)
    Version History
    Is DDL Legal

 

Drivers Daily Log (DDL) Data File Specification

Modification History:
30 Nov 2000 - changed vehicle numbers record - frb.
01 Dec 2000 - changed miles driving record - frb.
23 Apr 2001 - changed rules records - frb.
20 Jul 2001 - added print record, driver record, and days out record - frb.
22 Jul 2001 - added logs turned in for audit record - frb.

This specification can be used freely by any software developer who desires to import DDL data records into any software program. The most anticipated use will be by log auditing systems that would like to import driver duty status records in digital form as generated and stored by users of DDL. Perhaps an industry standard data format can be formulated based on this or similar specification.

Drivers Daily Log (DDL) stores data records as ASCII character codes in a file containing data records for a single vehicle driver for one month. The file name identifies the month and year of data stored. Example: 'Oct2000.LogData' contains the data for the month October and year 2000. Experience has shown that a month's worth of DDL data records creates a file of 30,000 bytes or less. This sized file can be conveniently sent electronically, as attachments to internet email or similar.

Records are delimited by trailing Carriage Return and Line Feed (ASCII 0x0d and 0x0a) (CR/LF) character codes, and are of variable length with no limit on record length.

The first fixed length record in the file identifies the driver by name and by assigned alpha-numeric identification text string. DDL stores data files in folders by drivers name. DDL further provides for 'groups of drivers' as necessary for possible audit type work.

The following characters are illegal in a DDL data record field:  " ' / | \ ` 
DDL uses ' ' (blank), '/' and ''' as data field delimiters.

Example of records DDL generates and stores: The fields are described below examples.
Data example is extracted from the log files of an actual (busy over the road) user of DDL.

0100/'JSMITH'/'John Smith'/...................................................
20001005 00:00 02 X /VEHICLE NUMBERS/'869'/'T-83'/''/''/
20001005 00:00 14 X JSMITH
20001005 00:00 05 X ABC Trucking Inc.
20001005 00:00 06 X 123 Chestnut St, Sioux City, IA 51108
20001005 00:00 08 X 123 Chestnut St, Sioux City, IA 51108
20001005 00:00 07 X None
20001005 00:00 04 X /MILES DRIVING/565290/0/0/0/0/0/0/565685/395/0/
20001005 00:00 03 X 395
20001005 00:00 20 X 26 27 30 31 32 33 38 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 /DEFECTS/''//TRACTOR/'869'//TRAILER/'T83'/
20001005 08:00 18 X Being Loaded- Carlisle, PA
20001005 08:00 09 X LC 9564
20001005 08:00 19 X Start of LC 9564/ODOMETER/565290.0/'PA'/'9564'/'869'/''/1/0/
20001005 08:00 23 X /REVENUE/'Net Revenue'/3/950.00/72.0000/''/'9564'/'869'/'PA'/565290.0/''/''/''/
20001005 08:00 23 X /REVENUE/'Trip Advance'/5/947.90/28.8000/''/'9564'/'869'/'PA'/565290.0/''/''/''/
20001005 08:00 23 X /REVENUE/'Maintenance'/5/950.00/13.6800/''/'9564'/'869'/'PA'/565290.0/''/''/''/
20001005 08:00 23 X /REVENUE/'Flexible'/5/950.00/13.6800/''/'9564'/'869'/'PA'/565290.0/''/''/''/
20001005 08:45 01 N Securing Load- Carlisle, PA
20001005 09:00 01 D
20001005 09:15 01 N Fueling & Pre-Trip Inspection- Carlisle, PA
20001005 09:15 21 X /FUEL/'Carlisle-PA-AmBest '/'9564'/565313.0/83.590/137.00/''/'00'/'PA'/'869'/1/
20001005 09:30 01 O Coffee Break- Carlisle, PA
20001005 11:30 01 D
20001005 12:30 19 X Entered Maryland/ODOMETER/565366.0/'MD'/'9564'/'869'/''/1/0/
20001005 12:45 01 O Being Loaded- Williamsport, MD
20001005 12:45 09 X LC 9563
20001005 14:00 01 N Securing Load- Williamsport, MD
20001005 14:00 23 X /REVENUE/'Net Revenue'/3/375.00/72.0000/''/'9563'/'869'/'MD'/565382.0/''/''/''/
20001005 14:00 23 X /REVENUE/'Trip Advance'/5/347.23/28.8000/''/'9563'/'869'/'MD'/565382.0/''/''/''/
20001005 14:00 23 X /REVENUE/'Maintenance'/5/375.00/13.6800/''/'9563'/'869'/'MD'/565382.0/''/''/''/
20001005 14:00 23 X /REVENUE/'Flexible'/5/375.00/13.6800/''/'9563'/'869'/'MD'/565382.0/''/''/''/
20001005 14:15 01 D
20001005 16:00 19 X Entered West Virginia/ODOMETER/565486.0/'WV'/'9564'/'869'/''/1/0/
20001005 16:45 01 O Coffee Break- Mount Morris, PA
20001005 16:45 19 X Entered Pennsylvania/ODOMETER/565530.0/'PA'/'9564'/'869'/''/1/0/
20001005 18:30 01 D
20001005 19:45 19 X Entered West Virginia/ODOMETER/565585.0/'WV'/'9564'/'869'/''/1/0/
20001005 20:00 19 X Entered Ohio/ODOMETER/565598.0/'OH'/'9564'/'869'/''/1/0/
20001005 20:30 01 O Meal Break- Old Washington, OH
20001005 22:00 01 D
20001005 23:00 01 S Parral, OH

Data Fields:

Date:
A fixed length (8 character) data field that identifies the year, month, and day of the record.
Example: 20001005 = year 2000, month 10 (October), and day 5.

Separator: 1 blank character.

Time:
The time assigned to the data record in military format - hours and minutes where 00:00 is midnight and 12:00 is noon and 23:59 is one minute before midnight.
Example: 19:45 = 7:45 PM

Separator: 1 blank character.

DataType:
Two numeric characters which define the different data types that DLL uses:
DDL uses the following definitions as of 28 Nov 2000. Others might be added as needed.

CHANGE_OF_DUTY_STATUS = 1, // The primary duty status changed to
VEHICLE_NUMBERS = 2,
TOTAL_MILES_VEHICLE_TODAY = 3,
TOTAL_MILES_DRIVING_TODAY = 4,
NAME_OF_CARRIER = 5,
MAIN_OFFICE_ADDRESS = 6,
NAME_OF_CO_DRIVER = 7,
HOME_TERMINAL_ADDRESS = 8,
MANIFEST_NUMBER = 9,
HAZARDOUS_LOAD = 10,
COMMENT = 11,
DATA_RECORD_VIOLATION_PRESENT = 12,
DATA_RECORD_VIOLATION_FUTURE = 13,
DRIVER_ID_NUMBER = 14,
BRAKE_CHECK = 15, // v1.33 - 13 Nov 1999 - Canada
LOAD_CHECK = 16, // v2.00 - 18 Dec 1999
//
// Rules changed 'on the fly'. (OBSOLETE as of 23 Apr 2001 - see new records below)
//
RULES_SWITCH_ON_THE_FLY = 17, // v2.00 - USA to CANADA or CANADA to USA
COMMENT_WITH_TICK = 18, // v2.00 - 13 Feb 2000
//
// A general odometer/state/trip/spare record
//
ODOMETER_RECORD = 19, //v2.00 - 20 Feb 2000
//
// DDVIR1 data record - drivers daily vehicle inspection report
//
DDVIR1_RECORD = 20, //v2.00 - 27 Feb 2000
//
// Fuel record
//
FUEL_RECORD = 21, // v2.02 - 14 Apr 2000
//
// Expense record
//
EXPENSE_RECORD = 22, // v2.02 - 14 Apr 2000
//
// Revenue record
//
REVENUE_RECORD = 23 // v2.05 - 26 May 2000

//
// New improved rules switch - v2.32 - 23 Apr 2001
//
RULES_RECORD = 24 // on the fly, and default
// DutyStatus
// 'F' - users rule switch 'on the fly'
// 'W' - default brought fwd from prev month
// 'R' - user changed default rule.

//
// Record to keep track of printed log days.
//
PRINT_RECORD = 25,

//
// Drivers Info Record - 18 May 2001.
// Used for new data file header replacement - TBD.
//
DRIVER_RECORD = 26,

//
// Days Out i.e. not at home record - 04 Jul 2001.
// Used for per-diem calculations.
//
DAYS_OUT_RECORD = 27,


//
// Audit feature - a record that records the log sheets turned in
// by a driver - first and last days inclusive.
// Used to detect 'missing logs' for violation report.
//
LOGS_AUDIT_RECORD = 28


Separator: 1 blank character.

DutyStatus:
'X'
not needed or not used for DataType.

if DataType = CHANGE_OF_DUTY_STATUS (1)
'O' = OFF_DUTY.
'S' = SLEEPER_BERTH.
'D' = DRIVING.
'N' = ON_DUTY_NOT_DRIVING.

//
// Obsolete as of 23 Apr 2001 - see new definitions below
if DataType = RULES_SWITCH_ON_THE_FLY (17)
'C' = CHANGE_RULES_TO_CANADA:
'U' = CHANGE_RULES_TO_USA:
'I' = CHANGE_RULES_TO_USA_INTRASTATE:
'P' = CHANGE_RULES_TO_CANADA_INTRAPROVINCE:

if DataType = RULES_RECORD (24)
// DutyStatus
'F' - users rule switch 'on the fly'
'W' - default brought fwd from prev month
'R' - user changed default rule.

Separator:1 blank character.

MemoField
:
A variable length (no limit) field which ends in the CR/LF which defines the end of the whole data record.

If DataType = CHANGE_OF_DUTY_STATUS (1) this describes duty status changed location (city and state/province).
If DataType = RULES_SWITCH_ON_THE_FLY (17) this describes border crossing where rules changed (city and state/province).

Other DataTypes require other information and may require SubFields

SubFields (to MemoField):
SubFields are generally defined as data between '/' separators.
Examples:
/'Carlise PA'/ A text string subfield.
/869.0/ A numeric string subfield.

SubFields are required for DataTypes:

VEHICLE_NUMBERS
Example: 20001005 00:00 02 X /VEHICLE NUMBERS/'869'/'T-83'/''/''/
    VehicleNumbers1;
    VehicleNumbers2;
    VehicleNumbers3;
    VehicleNumbers4;

TOTAL_MILES_VEHICLE_TODAY
Example: 20001005 00:00 03 X 395
    VehicleMiles;

TOTAL_MILES_DRIVING_TODAY
Example: 20001005 00:00 04 X /MILES DRIVING/565290/0/0/0/0/0/0/565685/395/0/
    DDL allows for the following combinations of data in this record.
    1. Miles Driving alone i.e. no odometer readings.
    2. Miles Driving combined with odometer readings for start and end of log day.
    3. No. 2 with start and stop 'splits' during log day.
    DDL further derives miles driving from ODOMETER_RECORD records if user elects.

    Odometer Start of Day;        Optional
    Odometer End first split;    Optional
    Odometer Start second split; Optional
    Odometer End   second split; Optional
    Odometer Start third  split; Optional
    Odometer End   third  split; Optional
    Odometer Start last   split; Optional
    Odometer End of Day;          Optional
    Miles Driving Log Day;       Direct input, or derived from 'splits', or derived from ODOMETER_RECORD records.
    bUseOdometerRecords           Displays and uses ODOMETER_RECORDS if any for Miles Driving Log Day.

ODOMETER_RECORD
Example: 20001005 16:45 19 X Entered Pennsylvania/ODOMETER/565530.0/'PA'/'9564'/'869'/''/1/0/
    Memo
    Odometer Signature "/ODOMETER/".
    OdometerReading
    StateOrProvince;
    TripNumber;
    TruckId;
    Custom; // Custom field
    nMilesOrKilometers
        // 0 undefined
        // 1 Miles
        // 2 Kilometers
    bDoNOTUsePreviousOdometerRecord;

DDVIR1_RECORD - Drivers Daily Vehicle Inspection Report
This SubField needs to redesigned to more meaningful format.  Currently it indicates the DDL internal 'ids' of the safety times that have 'checks' as entered by the user. 22 Safety items are provided in the DDL DDVIR.  DDL's DDVIR is the minimum required by FMCSR 396.11 - Driver Vehicle Inspection Reports
20001005 00:00 20 X 26 27 30 31 32 33 38 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 /DEFECTS/''//TRACTOR/'869'//TRAILER/'T83'/
    Defects Signature  "/DEFECTS/"
    Defects;
    Tractor Signature  "/TRACTOR/"
    TractorId;
    Trailer Signature  "/TRAILER/"
    TrailerIds;

FUEL_RECORD
Example: 20001005 09:15 21 X /FUEL/'Carlisle-PA-AmBest'/'9564'/565313.0/83.590/137.00/''/'00'/'PA'/'869'/1/
    Fuel Signature "/FUEL/"
    TruckStop;
    TripNumber;
    HubReading and HubReadingPrevious;
        // Check for a 'forced hub reading and format
        // /121000.0P120000.0/
    UnitsFuel;
    CostTotal;
    FuelComment;
    bKilometersFuelRecord and bLitersFuelRecord);
    StateOrProvinceFuel;
    TruckIdFuel;
    bFuelTaxable;

EXPENSE_RECORD
Example: 20001005 14:00 22 X /EXPENSE/'Tolls'/3/375.00/72.0000/''/'9563'/'869'/'MD'/565382.0/''/1/''/
    Expense Signature "/EXPENSE/";
    ExpenseCatagory;        // User defined.
    Amount;
    Notes;
    TripNumber;
    TruckId;
    StateOrProvince;
    OdometerReading;
    Custom; // Custom field
    bReimbursable;         // For settlement sheet
    Spare2; // Future

REVENUE_RECORD
Example: 20001005 14:00 23 X /REVENUE/'Net Revenue'/3/375.00/72.0000/''/'9563'/'869'/'MD'/565382.0/''/''/''/
    Revenue Signature  "/REVENUE/";
    RevenueCatagory;             // User defined.
    RevenueType;
        REVENUE_TYPE_NOT_DEFINED = 0,
        REVENUE_TYPE_FIXED_AMOUNT = 1, // Load/Unload pay, Tarp pay
        REVENUE_TYPE_RATE_PER_MILE = 2, // Requires miles as input
        REVENUE_TYPE_PERCENT_GROSS = 3, // Requires gross freight charge
        REVENUE_TYPE_ADVANCE = 4, // Not a revenue per se but needed.
        REVENUE_TYPE_ADVANCE_PERCENT_GROSS = 5 // Advance as a percent of gross
    MilesOrGross;sBuffer += s;
    Factor;  // Used for percent revenue types.
    Notes;
    TripNumber;
    TruckId;
    StateOrProvince;
    OdometerReading;
    Custom; // Custom field
    Spare1; // Future
    Spare2; // Future

RULES_RECORD   new 23 Apr 2001 replaces RULES_SWITCH_ON_THE_FLY
'DutyStatus' fields:
'F' - users rule switch 'on the fly'
'W' - default brought fwd from prev month
'R' - user changed default rule.

Example: 20001005 14:00 24 F /USA/10.0/0.0/15.0/70.0/8.0/0/
         20001005 14:00 24 F /AK/15.0/0.0/20.0/80.0/8.0/
         20001005 14:00 24 F /CAN/13.0/0.0/15.0/60.0/7.0/70.0/8.0/120.0/14.0/0/

USA and States AK, CA, FL, TX, WA
   Signature;            //"/USA/" Identifies the rule
   Hours Driving Rule;  // The number hours for driving hours rule
   Hours Adverse Rule;  // Additional hours for adverse conditions if activated
                        // 0.0 if adverse rule is not activated
                        // usually 2.0 hours  - AK is unlimited
   Hours On Duty Rule;  // The number hours for on duty hours rule
   Hours for Hours of Service Rule;    // Usually 60 or 70
   Days for Hours of Service Rule;     // Always either 6 or 7 days
   Rule Specific;      // USA is flag for resetting HOS hours with 24 hours off duty
                       // AK  is flag for resetting HOS hours with 24 hours off duty
                       // CA  is flag to indicate 'Agricultural' rule - 112hrs/8days

CAN and Provinces AB, SK, YT, NT
   Signature;            //"/CAN/" Identifies the rule  also "/AB/" "/SK/" "/YT/" "/NT"
   Hours Driving Rule;  // The number hours for driving hours rule
   Hours Adverse Rule;  // Additional hours for adverse conditions if activated
                        // 0.0 if adverse rule is not activated
                        // 2.0 hours if activated
   Hours On Duty Rule;  // The number hours for on duty hours rule
   Hours for Hours of 7 Day Rule;    // Always 60 or 70 hours
   Days for Hours of 7 Day Rule;     // either 7 if activated or 0 if not activated
   Hours for Hours of 8 Day Rule;    // Always 70 or 80 hours
   Days for Hours of 8 Day Rule;     // either 8 if activated or 0 if not activated
   Hours for Hours of 14 Day Rule;   // Always 120 hours
   Days for Hours of 14 Day Rule;    // either 14 if activated or 0 if not activated
   Rule Specific;      // Indicates 120hr/14day rule 'interpretation of 24 hours off duty
                       // requirement. 0,1,2,3

Some notes on the 120 Hour 14 Day rule:

There are different interpretations of a requirement on this rule that states:

"A driver using the 120Hr/14Day rule may not, during the period of 14 days, accumulate more than 75 hours of on-duty time without taking a minimum of 24 consecutive hours of off-duty time."

DDL implements four interpretations on this rule:

0. "24 hrs Off Duty after some hrs worked but before 75 hrs worked."

This interpretation requires that some hours of work is required to be accumulated before taking the 24+ Hours Off duty but before 75 hours of work is accumulated. Example: work 8 hours and take 24+ hours off duty and then work the remainder of the 120 hours in 14 days.

1. "24hrs Off Duty required between 50 to 70hrs worked - Quebec"

This is the most stringent and requires that the 24+ hours Off Duty must fall between 50 and 70 accumulated hours of work. DDL interprets that the 24 hours Off Duty must start when accumulated hours worked falls between 50 and 70 hours. Quebec and some other provinces use this interpretation. Check with your DOT inspector for guidance.

2. "Any 24 hrs Off Duty before 75 hrs worked."

This interpretation requires that any 24+ hours off duty before the 75 hours of work accumulated is sufficient. This covers the case where a driver has 24 or more hours Off Duty at the start of a 14 day ‘window’, i.e. before the first hour is worked during the 14 day ‘window’.

3. "Require 24 hrs Off Duty before each 75 hrs worked."

This interpretation requires a period of 24+ consecutive hours off-duty must be taken before the driver reaches EACH 75th hour of on-duty time. Stated another way: A driver may not accumulate more than 75 hours of on-duty time without taking 24+ hours of off duty time. This interpretation is used in Western Canada.

PRINT_RECORD   Record to keep track of printed log days.

Example: 20010601 00:00 25 X /PRINT/'20020612 12:55'/1/0/

    Print Record Signature  "/PRINT/";
    Date and Time last printed;
    Print Count;       // Number times log sheet has been printed.
    Changed since last print;   // If log sheet has been changed since printed.

DRIVER_RECORD   First Record in each log file to identify vehicle driver.

Example: 20010601 00:00 26 X /DRIVER/'I. M. Sample Driver'/'99998'/

    Driver Record Signature  "/DRIVER/";
    Driver Name;
    Driver ID;

DAYS_OUT_RECORD   A Record to record leave/arrive home for 'days out' calculations.

Example: 20010601 00:00 27 X /DAYS OUT/1/'Leave on Trip'/

    Days Out Record Signature  "/DAYS OUT/";
    Leave or Arrive Code;          // 1 = Leave Home   2 = Arrive Home
    Notes;

LOGS_AUDIT_RECORD A Record to record logs turned in for audit.

Example:20000725 00:00 28 X /LOGS AUDIT/'20000704 00:00'/'20000725 00:00'/'Test Note'/

    Logs Audit Record Signature "/LOGS AUDIT/";
    Date First Log;
    Date Last Log;
    Notes;

Back to Top

 

Customer Support Web Site

What's New

DDL Customer Support Web Site Main Page
CSA * 2010 pdf file (Download) Aug 2010 Updated
CSA2010 PSP Drivers Report Card
Motor Carriers SMS Report Card
New 2010 USA Proposed Rules Information
Canada new  2007 Hours of Service Rules Information

Canada new DDVIR Schedule Information

Sample Reports
DDL On-Line Help System
DOT & FMCSA Information
Commercial DDL
DDL Logs Audit Features
Truck Companies that accept DDL Logs
Installing Ascertia Root Certificate
GPS add on Information
Intra-States Rules (Information)

Other Information

About the Author
Canada Notes
Days Out Information
List of Email Servers that will block DDL email.
DDL in Hand Held Devices
DDL Data Files and Data Records Specifications
FAQ:
Future DDL Features
Introduction
Links to other Web Sites for Truckers
Looking for a Laptop for DDL
National Traffic and Road Closure Information 
Road Conditions Information
Six Days on the Road
Users Wish List
Truck Load

DDL is a trademark of DDL Software. All other products mentioned are registered trademarks or trademarks of their respective companies.
Questions or problems regarding this web site should be directed to  "Fritz" at  frbjorklund@driversdailylog.com
or "Bruce" at bruce@driversdailylog.com

Use of the Drivers Daily Log Software and this Web site constitutes acceptance of our License Policy, License Requirements, and Privacy Policy.

Copyright © 1998-2011 Drivers Daily Log - Fritz Roland Bjorklund & Bruce A. Luebke.  All rights reserved.
Last modified: Wednesday April 13, 2011.