---
name: "Datebook"
section: "3pm"
platform: "linux"
package: "libpalm-perl"
version: "1:1.012-1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Datebook"
---

# Datebook(3pm)

Handler for Palm DateBook and Calendar databases.

## NAME

Palm::Datebook - Handler for Palm DateBook and Calendar databases.

## SYNOPSIS

```
    use Palm::Datebook;
```

## DESCRIPTION

The Datebook PDB handler is a helper class for the Palm::PDB package. It parses DateBook and Calendar databases.

### AppInfo block

The AppInfo block begins with standard category support. See Palm::StdAppInfo for details.

### Sort block

```
    $pdb->{sort}
```

This is a scalar, the raw data of the sort block.

### Records

```
    $record = $pdb->{records}[N]
    $record->{day}
    $record->{month}
    $record->{year}
```

The day, month and year of the event. The day and month start at 1 (*i.e.*, for January, `"$record->{month}"` is set to 1). The year is a four-digit number (for dates in 2001, `"$record->{year}"` is "2001").

For repeating events, these fields specify the first date at which the event occurs.

```
    $record->{start_hour}
    $record->{start_minute}
    $record->{end_hour}
    $record->{end_minute}
```

The start and end times of the event. For untimed events, all of these are 0xff.

```
    $record->{when_changed}
```

This is defined and true iff the "when info" for the record has changed. I don't know what this means.

```
    $record->{alarm}{advance}
    $record->{alarm}{unit}
```

If the record has an alarm associated with it, the %{$record-\>{alarm}} hash exists. The "unit" subfield is an integer: 0 for minutes, 1 for hours, 2 for days. The "advance" subfield specifies how many units before the event the alarm should ring. *e.g.*, if "unit" is 1 and "advance" is 5, then the alarm will sound 5 hours before the event.

If `"advance"` is -1, then there is no alarm associated with this event. New records created via `"new_Record"` have a 10 minute alarm set by default. `"undef $record->{alarm}"` to remove this alarm before writing. An alarm icon will still show up in the Datebook if the `"alarm"` field exists, even with `"advance"` set to -1.

```
    %{$record->{repeat}}
```

This exists iff this is a repeating event.

```
    $record->{repeat}{type}
```

An integer which specifies the type of repeat:

- 0

  no repeat.

- 1

  a daily event, one that occurs every day.

- 2

  a weekly event, one that occurs every week on the same day(s). An event may occur on several days every week, *e.g.*, every Monday, Wednesday and Friday.

  For weekly events, the following fields are defined:

  ```
      @{$record->{repeat}{repeat_days}}
  ```

  This is an array of 7 elements; each element is true iff the event occurs on the corresponding day. Element 0 is Sunday, element 1 is Monday, and so forth.

  ```
      $record->{repeat}{start_of_week}
  ```

  Day the week starts on (0 for Sunday, 1 for Monday). This affects the phase of events that repeat every 2nd (or more) Sunday.

- 3

  a "monthly by day" event, *e.g.*, one that occurs on the second Friday of every month.

  For "monthly by day" events, the following fields are defined:

  ```
      $record->{repeat}{weeknum}
  ```

  The number of the week on which the event occurs. 0 means the first week of the month, 1 means the second week of the month, and so forth. A value of 5 means that the event occurs on the last week of the month.

  ```
      $record->{repeat}{daynum}
  ```

  An integer, the day of the week on which the event occurs. 0 means Sunday, 1 means Monday, and so forth.

- 4

  a "monthly by date" event, *e.g.*, one that occurs on the 12th of every month.

- 5

  a yearly event, *e.g.*, one that occurs every year on December 25th.

  ```
      $record->{repeat}{frequency}
  ```

  Specifies the frequency of the repeat. For instance, if the event is a daily one, and `$record`-\>{repeat}{frequency} is 3, then the event occurs every 3 days.

```
    $record->{repeat}{unknown}
```

I don't know what this is.

```
    $record->{repeat}{end_day}
    $record->{repeat}{end_month}
    $record->{repeat}{end_year}
```

The last day, month and year on which the event occurs.

```
    @{$record->{exceptions}}
    $day   = $record->{exceptions}[N][0]
    $month = $record->{exceptions}[N][1]
    $year  = $record->{exceptions}[N][2]
```

If there are any exceptions to a repeating event, *e.g.* a weekly meeting that was cancelled one time, then the @{$record-\>{exceptions}} array is defined.

Each element in this array is a reference to an anonymous array with three elements: the day, month, and year of the exception.

```
    $record->{description}
```

A text string, the description of the event.

```
    $record->{location}
```

A text string, the location (if any) of the event (Calendar database only).

```
    $record->{note}
```

A text string, the note (if any) attached to the event.

```
    %{$record->{timezone}}
```

This exists iff a time zone has been set for the event.

```
    $record->{timezone}{name}
```

The time zone name, *e.g.*, "London" or "San Francisco".

```
    $record->{timezone}{country}
```

The country the time zone is in. This is an integer defined in Core/System/PalmLocale.h.

```
    $record->{timezone}{offset}
```

This gives the offset from UTC, in minutes, of the time zone.

```
    $record->{timezone}{dst_adjustment}
```

This gives the additional offset while daylight savings time is in effect. The offset from UTC is `$record`-\>{timezone}{offset} + `$record`-\>{timezone}{dst\_adjustment} (actually only 0 or 60 are used).

```
    $record->{timezone}{custom}
```

Should indicate whether this location was created by the user, though this always seems to be true.

```
    $record->{timezone}{flags}
```

Reserved flags.

```
    $record->{timezone}{start_hour}
    $record->{timezone}{start_daynum}
    $record->{timezone}{start_weeknum}
    $record->{timezone}{start_month}
    $record->{timezone}{end_hour}
    $record->{timezone}{end_daynum}
    $record->{timezone}{end_weeknum}
    $record->{timezone}{end_month}
```

These define the period during which daylight savings time is in effect if `$record`-\>{timezone}{dst\_adjustment} is non-zero. daynum specifies the day of week (0=Sunday, 6=Saturday) and weeknum specifies the week of month (0=1st, 3=4th, 4=last), analagously to the "monthly by day" repeating event. *e.g.*, The "London" time zone has DST starting on the last Sunday of March, which is indicated with start\_daynum=0 (Sunday), start\_weeknum=4 (last week of the month), and start\_month=3 (March).

## METHODS

### new

```
  $pdb = new Palm::Datebook;
  $pdb = new Palm::Datebook({app => 'Calendar'});
```

Create a new PDB, initialized with the various Palm::Datebook fields and an empty record list. Creates a Datebook PDB by default. Specify the app parameter as 'Calendar' to create a Calendar PDB.

### new\_Record

```
  $record = $pdb->new_Record;
```

Creates a new Datebook record, with blank values for all of the fields.

`"new_Record"` does **not** add the new record to `$pdb`. For that, you want `"$pdb->append_Record"`.

## SOURCE CONTROL

The source is in Github:

```
        http://github.com/briandfoy/p5-Palm/tree/master
```

## AUTHOR

Alessandro Zummo, `"<a.zummo@towertech.it>"`

Currently maintained by brian d foy, `"<bdfoy@cpan.org>"`

## SEE ALSO

*Palm::PDB*(3)

*Palm::StdAppInfo*(3)
