ALIS

Software pro veřejnou správu

Vzdálená pomoc
21. 3. 2003

Změna kódování úlohy (Kamen-Latin2,...)

PC FAND podporuje kód Kamenických nebo Latin 2. Z toho je odvozena i podpora národního prostředí (češtiny) v aplikacích. V současnosti se provádějí především převody z Kamenických do Latin 2. Proto uvádíme příklady pro tuto variantu. Obrácený převod z Latin 2 do Kamenických by se provedl analogicky.

Překódování úlohy je pouze technická záležitost. PC FAND překódování podporuje.

Fáze překódování úlohy:

Nastavení nové abecedy ve FANDu Spustíme program FANDINST, z hlavního menu zvolíme Abeceda a vybereme požadované kódování. Tímto nastavením se změní kódování všech textů FANDu = hlášky, nápověda. Toto nastavení nemá žádný vliv na změnu kódování úlohy.
Překódování úlohy Jedná se o překódování textů úlohy a nápovědy úlohy. Provádí se podobně jako překódování datových souborů. Úloha musí být otevřená.
Překódování datových souborů Převádějí se jen ty soubory, které obsahují položky typu A a T, a navíc jen tehdy, pokud tyto položky obsahují data s diakritikou.

Konkrétní postupy, příklady, poznámky :

(Platí pro verze FANDu 3.0 a vyšší.)

  • Na pořadí provedení jednotlivých fází nezáleží.
     
  • Překódování datového souboru
    Jednotlivý datový soubor se překóduje trojnásobným použitím příkazu COPYFILE. Příklad procedury.
        P prekod_data begin
                      { 1. prevod datovy soubor na textovy }
                      copyfile(datSoubor,'pomKAM.txt'/VAR);
                      { 2. prekodovani textoveho souboru }
                      copyfile('pomKAM.txt','pomLAT.txt', mode='KL');
                      { 3. navrat z textoveho formatu do datoveho }
                      copyfile('pomLAT.txt'/VAR,datSoubor);
                      end;
        
  • Popis jednotlivých variant použití příkazu COPYFILE je v dokumentaci nebo nápovědě. FAND nepodporuje převod datového formátu, proto ten převod do textu. POZOR na 2. krok, překódování text. souboru nesmí být "inplace".
     
  • Proceduru "prekod_data" např. vložíme do otevřené úlohy a postupně ji spustíme pro jednotlivé datové soubory úlohy (které obsahují nějaké údaje s diakritikou).
     
  • Pokud je převedený soubor indexový (.X) a v klíčích jsou použity údaje s diakritikou, je nutno po překodování provést obnovu indexů. Nejjednodušší je prostě zrušit soubory .X00.
     
  • Nápověda úlohy (soubor.HLP) je v podstatě jen jedním z datových souborů úlohy. Proto k jejímu převodu použijeme postup z procedury "prekoduj".
     
  • K překódování vlastní úlohy (soubory RDB a TTT) využijeme faktu, že úloha je jen speciálním případem datového souboru, viz. např. nápověda FANDu, heslo "projektový soubor". Takže k překódování úlohy (nebo úloh) si založíme pomocnou úlohu, ve které si (otevřenou) úlohu k převodu nadeklarujeme jako soubor typu .RDB.
    - Základem převodu je opět postup procedury "prekod_data"
    - Od verze FANDu 3.2 se v údaji "StText" ukládá přeložený tvar kapitoly typu F (resp. D). Obsah tohoto údaje je překódováním znehodnocen. Aby překlad úlohy po jejím překódování proběhl korektně, musí se tedy údaj "StText" vynulovat. Z podobných důvodů se nastaví údaj "Overit" na hodnotu TRUE.
  • Příklad překódování úlohy
        P uloha.RDB 
        P prekod_ulohy var i : real;
                       begin
                       forall i in uloha do begin
                         uloha[i].StText:=''; 
                         uloha[i].Overit:=TRUE;
                         end;
                       copyfile(uloha,'pomKAM.txt'/VAR);
                       copyfile('pomKAM.txt','pomLAT.txt', mode='KL');
                       copyfile('pomLAT.txt'/VAR,uloha);
                       end;
        
  • Varianta procedury prekod_data
    Pro překodování souboru lze napsat obecnou proceduru s parametrem typu FILE.
        P obecna    ( catalog : FILE )
                    begin
                    copyfile(catalog,'pomKAM.txt'/VAR);
                    copyfile('pomKAM.txt','pomLAT.txt', mode='KL');
                    copyfile('pomLAT.txt'/VAR,catalog);
                    end;
        P go_obecna begin
                    proc(prekod,(@datSoubor1));
                    proc(prekod,(@datSoubor2));
                    ...
                    end;
        
  • Při překódován souboru s datumovými údaji ve formátu '...YY' (rok na 2 místa) - to jest třeba standardní formát typu D - pozor na převod datumu z datového formátu do textového a zpět. Viz. problém roku 2000, FANDINST - konstanty - parametr " Posun implicitního století".
    Pokud máme v souborech datumy z různých století (běžně např. data narození)použijeme raději (alespoň pro převod) plný tvar masky datumu 'DD.MM.YYYY'
     
  • Příklad - úloha s uvedenými procedurami - je zde ke ztažení.