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ě