ALIS

Software pro veřejnou správu

Vzdálená pomoc
21. 4. 2005

Export dat z FANDu

Tento příspěvek má poskytnout základní informace řadovým uživatelům aplikací i programátorům o tom, jaké jsou základní možnosti exportu dat z formátu PC FANDu (.000,.T00) do jiných datových formátů.

  • Pro "běžného" uživatele aplikace nebo neFANDovského programátora je celkem podstatné to, že data FANDu používají podobnou filosofii uložení jako známý formát DBF. To jest co tabulka to jeden soubor s příponou .000, resp. další soubor s příponou .T00 když jsou v tabulce tzv. volné texty = v DBF memo položky. Indexové soubory .X00 jsou režijní záležitost FANDu a není tedy je třeba exportovat.
  • Zásadní odlišnost od DBF je v tom, že datové soubory FANDu neobsahují deklaraci dat, ta je obsažena jen v úloze (soubory .RDB a .TTT). Úloha může být otevřená, takže do ní lze nahlédnout a deklarace zjistit. Ale u konečných uživatelů bývají častěji úlohy uzavřené, takže kromě autora úlohy do ní nikdo jiný nemá přístup.
  • Z předchozího bodu vyplývá, že neexistuje nějaký obecný převodník nebo konverzní program FANDovských dat do jiného formátu. Vždy je nutné nějak zízkat informace o struktuře uložených dat z úlohy.
  • Takže, pokud je autor úlohy známý a je ochoten spolupracovat, není export dat např. do formátu DBF žádný problém, viz. dále. Celá řada aplikací takový export nabízí. Nebo aspoň zveřejňuje deklaraci uložených dat důležitých souborů. Zde je třeba upozornit na to, že pro přístup k souboru není potřeba celá jeho deklarace (kde může být část "know how" úlohy) ale jen popis "fyzicky uložených" údajů a případně indexů (pro účely exportu nejsou naprosto nutné). Tedy, pokud je spolupráce s autorem úlohy jen trochu možná, doporučujeme tuto variantu. Bývá to nejrychlejší a nejlacinější i v případě, pokud si autor za tuto práci (pochopitelně) něco účtuje.
  • Pokud autor úlohy není známý, zemřel apod., nebo není ochoten spolupracovat, může při pokusu o přístup do úlohy nastat problém s ochranou autorských práv k úloze. To zde řešit nebudeme. Snad se lze ale shodnout na tom, že "holá" uložená data nějakého zákazníka nejsou majetkem autora aplikace ale spíše dané organizace či provozovatele aplikace. Proto naznačíme i "nestandardní metody" zízkání deklarací dat.
  • Existují i možnosti otevření "uzavřené" úlohy, avšak není zaručen výsledek. Některé takové prostředky snad mohou být k dispozici někde na WEBech. Firma ALIS takovou službu také nabízí, ovšem za těchto předpokladů:
    • Nebudou narušena autorská práva, např. jde o uzavřenou úlohu ke které autor ztratil otevřený zdrojový kod. Každý případ se posuzuje jednotlivě.
    • Není zaručen výsledek
    • Účtuje se aktuální hodinová sazba, v běžných případech jde právě o tu jednu hodinu práce.
    Pokud snad zde někoho rozčiluje, že je něco takového jako "otevření nenávratně uzavřené" úlohy možné, je třeba připomenout, že to je možné takřka u všech program. jazyků (viz. všelijaké ty DISassemblery, RE FOXy apod.) a že to vyplývá z podstaty věci. Otázka je jen, kolik prostředků (času) je tomu někdo ochoten věnovat.
  • Další konkrétní technické možnosti jsou stravitelně i pro NEfandovského programátora a může to zvládnout pokud má k dispozici kromě úlohy i programátorský runtime PC FANDu. Pokud možno stejné verze jako je úloha, není to však ve všech případech nutné. Výhodou však je pochopitelně znalost programování v PC FANDu.
  • Asi pro všechny možnosti exportu platí, že bez velkého úsilí je možno je generovat kodované v diakritice Kamenických, Latin2 a CP1250, které FAND podporuje přímo ( viz. příkaz COPYFILE(..., mode='');. Jiné kodování lze realizovat např. pomocí vhodně napsaného kodu, může však být problém s rychlostí.
  • Pokud konkrétní úloha podporuje možnost připojení externě napsané podúlohy, můžeme v připojené podúloze pracovat se všemi programovými kapitolami, (nejen se soubory), které jsou z místa volání "viditelné", aniž bychom museli znát jejich přesnou deklaraci. V takové podůloze pak stačí napsat např. export souboru do text. formátu COPYFILE( datSoubor, 'textSoubor.TXT'/VAR nebo FIX) a je hotovo. Nebo lze příkazem
    edit(datSoubor,());
    spustit implicitní datový editor (browser) na soubor, kde jsou vidět přesné názvy údajů a typy lze odhadnout. To lze často přímo v úloze z editačních formulářů nebo z navigace (F7 a varianty). Podle toho nadeklarujeme soubor DBF a prostým MERGE nebo COPYFILE provedeme export. Připoměňme jen, že implicitní MERGE nebo COPYFILE přiřazují automaticky údaje "by name" a provádí i jednoduché konverze některých typů údajů. Pro úplnost ještě zmíníme možnost zízkání popisu "viditelných" souborů z podúlohy pomocí FAND-PROLOGu.
  • PC FAND podporuje formát DBF, konkrétně DBase III, přímo. Takže případný export dat.souborů FANDu do DBF je jen technická záležitost relativně drobného zásahu do úlohy nebo triviální pomocné aplikace - při znalosti deklarace souboru. Jak již bylo zmíněno, celá řada aplikací FANDu toto standardně nabízí. Jediné formální úskalí je v tom, že v DBF není podpora údajů typu N (číselné řetězce, třeba IČ, RČ,). Téměř vždy se pro takový údaj v DBF použije typ A (znakový).
  • Textové exportní soubory
    Z FANDu lze vygenerovat asi libovolný textový formát (libovolný ve smyslu použitých oddělovačů údajů a odřádkování). Nejjednodušší je použití příkazu COPYFILE, kde jsou ale podporovány jen dva konkrétní formáty (FIX a VAR) s danými oddělovači. Složitější formáty lze realizovat pomocí vhodně deklarovaného REPORTu nebo procedurálně. Příklady viz. Generování exportních textových souborů.
  • Generování souborů HTML je ukázáno zde Generování HTML z FAND-aplikace. Formát XML by vyžadoval podobný přístup. Potřeba jsou jen znalosti těchto formátů (XML, HTML,...).
  • Přístup přes ODBC driver pro soubory PC FANDu je pro účely exportu také možný. Je však třeba si uvědomit, že ani ODBC driver pro FANDovské soubory nezajištuje universální přístup k jakémukoliv souboru FANDu bez znalosti jeho deklarace. Stále je nutno znát deklarace tabulek=souborů, které chceme zpřístupnit a zapsat je formou SQL scriptu - souboru s příponou RDA. Je třeba vytvořit tzv. datový zdroj. Potřebná dokumentace je součástí demoverze ODBC, která je k dispozici zde ODBC Lze říci, že pokud je k dispozici otevřená úloha nebo dokonce vygenerovaný RDA soubor (někteří autoři aplikací jej poskytují), je pro NE-fandistu se znalostí ODBC tento přístup nejjednodušší. Vyžaduje však investici do nákupu ODBC. Viz. ceník.
  • Celkem obecně lze konstatovat, že vzhledem k tomu, že PC FAND podporuje práci se stringy až do binární úrovně, lze při troše snahy z FANDu vygenerovat libovolný binární soubor, a tedy v podstatě libovolný datový formát. Samozřejmě, pokud je známá vnitřní struktura požadovaného formátu. Příkladem budiž generování souboru XLS, jak je naznačeno v diskuzi o PC FANDu na tomto WEBu.