Převody obsahu souborů nesourodých struktur
Struktury souborů
Nejčastěji
se vyskytující struktury souborů dostaly ve FoxPro své pojmenování, které
umožňuje jejich vzájemný převod. Převod se provádí přes databázovou
strukturu, která je v tomto případě standardem. Jde o struktury:
│JMÉNO STRUKTURA POZNÁMKA
---------------------------------------------------------
│ SDF StanDard Běžný textový soubor,
│ File Použity jsou ASCII konvence
│ záznamy jsou odděleny CR=chr(13)
│ LF=chr(10). Koncovka - TXT.
---------------------------------------------------------
│ PDOX Paradox Databázový systém Paradox (Borland).
│ verze 3.5 Standardní přípona DB.
---------------------------------------------------------
│ WK1 Lotus 1-2-3 Tabulkový procesor, revise 2.x,
│ WK3 Lotus 1-2-3 Tabulkový procesor, revise 3.x.
│ WKS Lotus 1-2-3 Tabulkový procesor, revise 1-a.
---------------------------------------------------------
│ WR1 Lotus Tabulkový procesor, verse 1.1 a 1.2
│ Symphony
│ WRK Lotus Tabulkový procesor, version 1.0.
│ Symphony
---------------------------------------------------------
│ XLS Excel Microsoft, verse 2.0.
---------------------------------------------------------
│ FW2 Framework II Tabulkový procesor.
---------------------------------------------------------
│ MOD MultiPlan Microsoft, verse 4.01.
---------------------------------------------------------
│ SYLK SYmbolic LinK Formát používaný v MultiPlan.
---------------------------------------------------------
│ RPD RapidFile Verse 1.2.
---------------------------------------------------------
│ DIF Data Inter-
│ change Format VisiCalcem.
Převod souboru odlišné struktury
do databáze
Do
databázového souboru se standardně nekopíruje (již existuje, byť prázdný),
ale připojuje. Proto se používá příkazu:
APPEND FROM <soubor>|? [FIELDS<seznam položek>][FOR
<expL>] [DELIMITED
[WITH TAB | WITH <omezovač> |
WITH BLANK] [TYPE] SDF | DIF | FW2 |
MOD | PDOX | RPD | SYLK | WK1 | WK3
| WKS | WR1 | WRK | XLS ]
který připojí nové věty
a naplní vyjmenované položky aktuálního databázového souboru daty ze
zadaného souboru. Klauzule TYPE je nepovinná, uvádí se před specifikací
typu připojovaného souboru. Pro ASCII soubor se oddělovače vět definují
klausulí DELIMITED (záznamy jsou odděleny CR a LF, položky jsou odděleny čárkami(implicitně).
Pro položky oddělené tabulátorem uvedeme navíc frázi WITH TAB, pro oddělovač
mezeru frázi WITH BLANK. Omezovače řetězcových položek jsou implicitně
uvozovky, frází WITH <omezovač> lze zadat jiný prvek. Předpokládaná
přípona souboru je TXT. Nejsou-li uvedeny fráze specifikující typ souboru
(v syntaxi uvedené za [TYPE]), předpokládá se databázový soubor DBF.
APPEND FROM ukoly.602 TYPE DELIMITED
Totéž lze dosáhnout příkazem,
který založí databázový soubor:
IMPORT FROM <soubor>
[TYPE] FW2 | MOD | PDOX | RPD | SYLK
| WK1 | WK3 | WKS |
WR1 | WRK | XLS
IMPORT FROM data MOD
Převod databázového souboru do
souboru odlišné struktury
Používá
se běžného příkazu pro kopírování:
COPY TO <soubor> [FIELDS <seznam položek>][<rozsah>]
[FOR <expL1>] [WHILE
<expL2>] [NOOPTIMIZE]
[[WITH] CDX | PRODUCTION]
[TYPE] SDF | DIF | MOD | SYLK | WK1
|
WKS | WR1 | WRK | XLS]
[DELIMITED [WITH <omezovač> |
WITH BLANK | WITH TAB]]
Příkaz kopíruje data z
aktuálního databázového souboru do nového souboru. Klausule [WITH] CDX nebo
PRODUCTION vytvoří k novému databázovému souboru stejný indexový soubor
typu CDX, jako má původní soubor.
COPY TO vypis_evid REST TYPE DELIMITED WITH BLANK
Obdobné služby lze dosáhnout
pomocí příkazu:
EXPORT TO <soubor>
[FIELDS <seznam položek>
[<rozsah>]
[FOR <expL1>] [WHILE
<expL2>] [NOOPTIMIZE]
[TYPE] DIF | MOD | SYLK | WK1 | WKS
| WR1 | WRK | XLS
Který kopíruje data z aktuálního
databázového souboru do souboru. zadaného typu.
Cvičení
Napište
program pro uložení textu napsaného v T602 do databázového souboru , ve
kterém bude text uložen po řádcích (s vynecháním povelových řádků), v
položce radek. Maximální délka řádku stejně jako jména souboru jsou
parametry programu. Výsledek vždy zobrazte.
* Příklad volání programu DO PR209_1 WITH 'POKUS','KURS209.TXT',112
PARAMETERS soubor_dbf,soubor_txt,delka_radku
&&
Musí být jako první řádek programu
CREATE DBF &soubor_dbf (radek C(delka_radku))
&&
Vytvoření databázového souboru
APPEND FROM &soubor_TXT sdf FOR !('@' $
radek)
&&
Naplnění s vynecháním povelových řádků
DISPLAY ALL
&& Zobrazení výsledků
Napište program pro uložení
obsahu položky radek do textového souboru. Do souboru se nepřenáší prázdné
řádky. Řádky Jsou setříděné podle položky zadané spolu se jmény
souboru jako parametry volání. Třídící položka se zadává ve tvaru pořadového
čísla položky. Výsledek zobrazte v editačním okně.
* Příklad volání programu DO PR209_2 WITH 'POKUS','POKUS.TXT',1
PARAMETERS soubor_dbf, soubor_txt,trideni
&& Formální parametry programu
SELECT 0
&& Volba první volné pracovní oblasti
USE &soubor_dbf
&&
Otevření databázového souboru
pol=FIELD(trideni)
&& Zjištění jména třídící položky
INDEX on &pol TO
TMP.TMP
&& Indexování třídící položkou
COPY TO &soubor_TXT FIELD radek SDF FOR !EMPTY(radek)
&&
Vytvoření textového souboru
CLOSE ALL
&& Uzavření všech souborů
DELETE FILE TMP.TMP
&& Zrušení dočasného (třídícího) indexu
MODIFY FILE (soubor_txt)
&& Zobrazení výsledků v editačním okně