Format wymiany danych (znany również jako „Navy DIF”, z rozszerzeniem pliku .dif) to format danych ASCII zaprojektowany na początku lat 80. XX wieku, aby umożliwić konwersję prostych arkuszy kalkulacyjnych (jedna karta) między systemami DBMS. Następnie: Lotus 1-2-3 , FileMaker Pro , DBase , Framework , Multiplan itp. Może być sprawdzony przez OpenOffice , LibreOffice , Excel , Gnumeric i StarCalc . Jego głównym ograniczeniem jest to, że nie pozwala na kodowanie wielu zakładek arkusza kalkulacyjnego w tym samym pliku.
Format DIF został opracowany przez Boba Frankston z Software Arts, Inc . dla VisiCalc na początku lat 80. Specyfikacje formatu zostały przekazane w dokumentacji VisiCalc, a nawet zostały opublikowane w magazynie Byte . Ten format DIF został opatentowany w 1981 roku przez Software Arts Products Corp. (wówczas nazwa firmy Software Arts).
Aby przezwyciężyć specyficzne cechy różnych formatów używanych przez oprogramowanie od wczesnych lat 80., DIF zapisuje dane w pliku tekstowym w formacie ASCII. Ten plik ma dwie sekcje: sekcję nagłówka i sekcję danych. W formacie DIF każda sekcja składa się z bloku 2 lub 3 linii:
Nagłówek pliku ma wiersz typu, po którym następują dwa wiersze z wartością:
Różne pola danych są oznaczone jednym z tagów:
Każda komórka jest zakodowana w dwóch wierszach:
Pierwsza liczba w pierwszym wierszu wskazuje typ, druga liczba jest ignorowana. Słowa kluczowe, które można znaleźć w następującym wierszu, to:
Niektóre implementacje (szczególnie te z wczesnego oprogramowania Microsoft) dały odwrotną interpretację formatów WEKTORY i TULE. Niektóre implementacje nawet nie uwzględniają wymiarów wskazanych w nagłówku: dekodują separatory wierszy bloku wartości i tylko to uwzględniają.
Na przykład załóżmy, że musimy przechowywać arkusz, który ma dwie kolumny, z pierwszym wierszem tytułów, dwoma wierszami nagłówków kolumn i dwoma wierszami danych:
Tekst | Dane |
---|---|
cześć | 1 |
podwójny cudzysłów "w tekście | -3 |
Kodowanie w pliku .dif dałoby:
Zakodowane | Komentarze |
---|---|
STÓŁ | |
0,1 | |
"PRZEWYŻSZAĆ" | |
WEKTORY | słowo kluczowe, po którym następuje wskazanie liczby kolumn: |
0,2 | „0” oznacza pole typu numerycznego, „2” oznacza liczbę kolumn |
„” | |
TUPLY | słowo kluczowe, po którym następuje wskazanie liczby wierszy ... |
0.3 | „0” oznacza pole typu numerycznego, „3” oznacza liczbę wierszy |
„” | |
DANE | po którym następuje konwencjonalne 0, a następnie rzeczywiste dane |
0.0 | |
„” | |
-1,0 | „-1” oznacza tag blokowy: „BOT” lub „EOD” |
NERW | znacznik początku wiersza |
1.0 | „1” wskazuje wartość typu string (następujące 0 jest milczące) |
"Tekst" | Ciąg zawarty w komórce |
1.0 | „1” oznacza wartość typu string. |
"Dane" | Ciąg zawarty w komórce |
-1,0 | Przedrostek znacznika bloku |
NERW | Kolejna linia zawierająca ciąg ((1,0) → „cześć”) i pole liczbowe ( (0,1) ) |
1.0 | |
"Cześć" | |
0,1 | pole numeryczne (0) zawierające wartość 1 |
V | Prawidłowe dane ( V oznacza „prawidłowe”)! |
-1,0 | Przedrostek znacznika bloku |
NERW | jeszcze jedna linia ... |
1.0 | |
„podwójny cudzysłów” „w tekście” | |
0, -3 | komórka numeryczna zawierająca wartość -3 |
V | |
-1,0 | Przedrostek znacznika bloku |
EOD | Koniec danych |