PC FAND - databáze pro každého

FAQ, nebo-li často kladené otázky

Rubrika :
Otázky 1 - 10 z celkem 36 1 2 3 4
Zvětšení paměti pro SET proměnné /Windows
Problémy se sdílením dat v síti LAN /Ostatní
Omezení velikosti sdílených souborů /Ostatní
Grafický režim pod Win XP /Windows
Export dat z FANDu /Ostatní
NTVDM, zatížení CPU 99% /Windows
příkaz BACKUPM - problémy /Ostatní
Problémy s příkazem EXEC /Windows
Win XP (2000), zmizely soubory CONFIG.NT a (nebo) AUTOEXEC.NT /Windows
Hláška: NTVDM CPU obsahuje neplatnou instrukci ... /Windows
Odpovědi
Zvětšení paměti pro SET proměnné tisk
Do CONFIG.SYS resp. CONFIG.NT vložit

SHELL=C:\DOS\COMMAND.com /E: 1024/p

Případně upravit cestu k command.com.

Pozor na zadání SET parametrů s číselnou hodnotou
SET LANNODE
SET FANDOVRB
viz. Problémy se sdílením dat v síti LAN<

...zpět nahoru
Problémy se sdílením dat v síti LAN tisk
Sdílení dat v síti LAN pod FANDem je napsáno velmi "blbuvzdorně", instalační principy pro podporu LAN jsou všeobecně známy. Přesto se na konci historie DOS FANDu objevil dosud neznámý problém.

PROBLÉM S NASTAVENÍM LANNODE
Na uloze, která roky fungovala najednou přestalo fungovat sdílení dat. Jako kdyby nebylo nastaveno LANNODE, ale nastaveno bylo.

BATy pro spuštění úloh byly generovány takovým způsobem, že např. za

SET LANNODE=25

byl ještě za číslem znak mezera (20H) a pak teprve CR LF. V běžném textovém editoru ta mezera není vidět. GETENV to načte i s mezerou, pascal funkce VAL takový řetězec '25 ' nevezme jako číslo, takže interně je pak LANNODE=0, i když v uloze vám GETENV(´LANNODE´) vypíše třeba ´25 ´, tak si toho nikdo nevšimne, i když ta mezera tam je. Pokud to tak je na více stanicích, je jich pak více s lannode=0 a blokuji se. Je opravdu neuvěřitelné, že na tohle ještě nikdo nepřišel.

Podobný problém může nastat při nastavení
SET FANDOVRB=číslo

Tak pozor na to, dobrá zkušenost, ve FANDu to lze sice opravit, ale ven mezi uživatele se to jen tak nedostane.

...zpět nahoru
Omezení velikosti sdílených souborů tisk

Úvodní poznámka:
sdíleným souborem rozumíme soubor, který je v katalogu úlohy v návěští označen znakem # nebo #R

Interní mechanismus FANDu pro sdílení datových souborů využívá standardní funkce op. systému pro zamykání fyzických souborů (funkce DOSu 5cH). Interní zamykání FANDu nesmí zasáhnout do fyzického souboru .000 (zablokovaly by se všechny operace v tom místě). Realizováno je to tak, že je stanovena určitá pevná hranice hranice, za kterou se sdílení provádí. Tato hranice je znovena na 0A000501H (cca 160MB).

V důsledku toho je maximální možný prostor pro fyzickou velikost sdíleného souboru .000 rozdělen na dvě části : část pro fyzický soubor a část nad uvedenou hranicí (nyní cca 160MB) pro sdílení.

Důsledky a poznámky:
  1. Základní fyzická struktura sdílených a nesdílených souborů je totožná. Takže sdílené soubory mohou přesáhnout uvedenou hranici, ale není pak "jen" zaručeno sdílení. Při pokusu o přístup na fyzicky uzamčené místo mohou vzniknout různé chyby
  2. To, že to někomu "chodí" tedy neznamená, že nemohou nastat problémy, jen měl dosud štěstí.
  3. Hranice pro sdílení je stanovena určitým odhadem "rozumné maxim. velikosti sdíleného souboru" a ověřena dlouhodobým provozem na všech dosavadních verzích FANDu a operačních systémech.
  4. Ve verzi FANDu 4.2 byla provedena úprava této hranice na cca 1GB. Tato úprava bude vyžadovat dlouhodobé ověření.
  5. Kdo potřebuje ověřit sdílení nad 160MB v praxi, tomu potřebné moduly FANDu zašleme, kontakt na fand@alis.cz
  6. Tato úprava ani jiné dosavadní úpravy FANDu 4.2 nevyžadují zvýšení verze FANDu. Zatím není rozhodnuto, zda bude následně vydána revize FANDu 4.2 nebo zda bude pro distribuci oprav a úprav verze zvýšena. Upravená verze se sdílením je pracovně označena jako 4.2a, jen ve výpise na obrazovku. Interně je to stále verze 4.2.
  7. Maximální velikost souboru v DOSu je 2GB. Není dost zkušeností jak fungují soubory poblíž této hranice na různých verzích (síťových)op. systémů.
...zpět nahoru
Grafický režim pod Win XP tisk
Pokud aplikace FANDu použije grafický režim, může někdy pod Windows XP dojít k problémům. Např. hláška "Podpora pro grafický režim jen 80x25 a není pro CGA"

Z diskuze k FANDu vyšel jeden námět, jak toto zkusit vyřešit. Může to být způsobeno tím, že se používá starý zástupce aplikace z Win98. Takže řešením je založit si nového zástupce pro úlohu v prostředí Win XP. Tímto způsobem se občas podaří vyřešit i jiné problémy.

...zpět nahoru
Export dat z FANDu tisk
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ů.
  1. 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.
    .
  2. 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.
    .
  3. 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.
    .
  4. 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.
    .
  5. 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.
    .
  6. 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.
    .
  7. 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.
    .
  8. 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í.
    .
  9. 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.
    .
  10. 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ý).
    .
  11. 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ů.
    .
  12. 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,...).
    .
  13. 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. .
    .
  14. 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.
    .
    ...zpět nahoru
    NTVDM, zatížení CPU 99% tisk
    Většinou pod Win XP, ale může to být i pod jinými verzemi Windows nebo jinými oper. systémy, se ukazuje pro aplikaci FANDu (nebo i jinou DOSovou aplikaci) zatížení procesoru přes 90%. Může to vést přehřívání procesoru, neustálému chodu ventilátoru apod.

    Viz. pod Win XP kombinace Ctrl-Alt-Del, Správce úloh. DOS programy se skrývají pod položkou NTVDM.EXE, což je program pro podporu DOSu pod Win.

    Důvod není přesně znám, pravděpodobně jde o to, že aplikace DOSu často při čekání na obsluhu klávesnice čekají v nějakém cyklu. Tento cyklus za určitých okolností, zřejmě záleží na frekvenci, způsobí přetížení procesoru. Z této úvahy vychází i většina řešení této situace, která nějak zasahují do obsluhy klávesnice.

    Řešení

    (bez záruky úspěchu)
    • Pokud založíme zástupce přímo pro program FAND.EXE (nebo jinou verzi runtime), pak ve Vlastnostech zástupce, v záložce Různé, můžeme zkusit změnit polohu parametru Rozpoznání nečinnosti. V zástupci pro .BAT toto nastavení bohužel není.
    • Speciálním programem lze zasáhnout do obsluhy klávesnice. jedna z takových utilitek je ke ztažení např. zde: www.redlich.cz/resprob.htm#ZatizeniXP
      Jde o informace z WEBu http://www.redlich.cz/resprob.htm
      Návod použití:
      1. Nakopírovat soubor dpakbd.com do nějakého adresáře.
      2. Doplnit do souboru .BAT pro spuštění úlohy následující řádek těsně před (u)fand.
        DPAKBD.COM /T20 /I
    • Jiná podobná utilitka je na http://www.tamedos.com/downloads/downloads.htm
    • Není od věci se pokusit zízkat k tomu problému aktuální informace ze světa internetu a třeba na GOOGLE.CZ zadat do hledání třeba řetezec "NTVDM and CPU and DOS".
      ...zpět nahoru
      příkaz BACKUPM - problémy tisk
      Při provedení příkazu BACKUPM se objevila chyba, resp. by se to dalo nazvat i omezení. Při zálohování velkého počtu souborů mohl BACKUPM havarovat s různými hláškami, např. soubor .... nelze nalézt, apod.

      Problém je v tom, že na začátku BACKUPM se načítají odkazy na všechny zálohované soubory a adresáře do bufferu (není v paměti ale ve WORKfile). Vnitřní struktura bufferu neumožnovala libovolný počet souborů, ale jen určitou velikost, záleželo na počtu souborů a délkách adresářových cest.

      Při praktických testech s počtem souborů kolem 6.000 BACKUPM havaroval až po nějaké době. Při počtu souborů přes 8.000 BACKUPM zhavaroval ihned na začátku.

      Toto omezení již jsme opravili, ale při jeho testování se na systému adresářů s počtem souborů přes 13.000 a přes 1.000 adresářů objevily problémy s pamětí. Zkusíme ještě toto vyřešit, ale to již jistě bude o dost komlikovanější než předchozí problém.

      Zároveň byl vyřešen starší problém s tím, že BACKUPM(..., SUBDIR) ignoroval podadresáře, které měly nastaven artibut ARCHIVES.

      Po otestování a prověření problému s pamětí dáme opravený UFAND 4.2 ke ztažení na WEB a aktualizujeme distribuci sítových runtime. Předpokládám přístí týden, to jest začátkem dubna 2005.
      ...zpět nahoru
      Problémy s příkazem EXEC tisk
      Při použití příkazu EXEC v aplikaci může pod Win XP docházet k různým problémům. Stejně to může platit i pod ostatními verzemi Win 32 (NT, 2000).

      Nejčastěji se objevují problémy při volání interních příkazů DOSu. Např.

      EXEC('','COPY s1 s2',...);
      nic nezkopíruje a vypíše hlášku, že daný příkaz není ani interní ani externí příkaz.


      Poznámka:
      Pokud si nejsme jisti, o jaký problém jde, můžeme příkaz EXEC upravit na
      EXEC('','',...); a požadovaný DOS-příkaz zadat ručně.

      V příkazu EXEC('',...) FAND vždy volá program, který je nastaven v SET parametru COMSPEC. Většinou tam je
      ComSpec=C:\WINDOWS\system32\cmd.exe
      a nejsou problémy. Příčinou problémů asi může být to, že COMSPEC může být nastaveno jinak.

      Tak by se dalo vysvětlit to, že v problémových případech pomůže úprava EXECu na:
      EXEC( 'CMD','/c ...',... 
      ve výše uvedeném příkladu
      EXEC('CMD','/c COPY s1 s2',...);

      Zásah do úlohy pro konkrétní verzi op. systému je však problematický. Takže jiným, asi lepším řešením, by mohlo být na konkrétní konfiguraci zjistit, jak je SET parametr COMSPEC nastaven, proč to není CMD.EXE, případně tam CMD.EXE nastavit. Ve Win XP lze COMSPEC nastavit ve Vlastnostech ikony "Tento počítač", záložka "Upřesnit", tlačítko "Proměnné prostředí".
      ...zpět nahoru
      Win XP (2000), zmizely soubory CONFIG.NT a (nebo) AUTOEXEC.NT tisk
      Standardní umístění systémových souborů CONFIG.NT a AUTOEXEC.NT je v adresáři C:\WINDOWS\SYSTEM32.

      Může se stát, že se tyto soubory z tohoto adresáře "ztratí" a při pokusu o instalaci nebo spuštění DOS aplikace se pak objeví různé hlášky, např:
      C:\WINDOWS\System32\AUTOEXEC.NT.
      Systémový soubor nelze použít v aplikacích systému MS-DOS a Microsoft Windows.

      Většinou se tyto soubory najdou v adresáři C:\WINDOWS\REPAIR a stačí je nakopírovat zpět tam, kam patří.

      Jako možnou příčinu lze pravděpodobně označit např. nedokončenou nebo chybně provedenou automatickou aktualizaci XP, nebo servispaku apod. Podle zdrojů z WEBu může tato situace nastat i důsledku činnosti nějakého typu škodlivého software, respektive jeho (nedokonalého ?) odstranění (antivir.program).

      Někdy se také stává, že po zkopírování souborů CONFIG.NT a AUTOEXEC.NT zpět do adresáře SYSTEM32 tyto soubory opět zmizí. V tom případě je asi vhodné zkontrolovat, zda náhodou automatická aktualizace právě neprobíhá a necháme ji raději v klidu doběhnout. Nebo, pokud máme podezření, že aktualizace neproběhla řádně do konce, můžeme ji zkustit odinstalovat a případně spustit znova. Možná není od věci v takovém případě prostě jen několikrát restartovat PC a mezi tím ho nechat pár minut v klidu, aby si stihnul uložit vše potřebné.

      V jednom takovém případě údajně pomohlo až reinstalování Windows, včetně SP2 atd.

      Podle podnětu z diskuze také může proti mizení AUTOEXEC.NT resp. CONFIG.NT pomoci označení těchto souborů atributy R/O(jen pro čtení) a S(systémový). Pomohlo to v několika případech.

      Stejný problém již byl hlášen i pod Win 2000.

      ...zpět nahoru
      Hláška: NTVDM CPU obsahuje neplatnou instrukci ... tisk
      Občas se při spuštění (nejen) aplikace v PC FANDu pod Windows (NT, 2000, XP) vyskytne hláška, uvedená v záhlaví.

      NTVDM.EXE (NT Virtual DOS Machine) emuluje pod Win NT/2000/XP virtuální stroj pro 16-bit aplikace (DOS a Win16).

      Uvedená chybová hláška je sice naprosto jasná, požadovaná instrukce je neplatná, ale důvod, proč to tak je již tak jasný, resp. jednoznačný být nemusí. Obecně by se to dalo zařadit do kolonky "zpětné DOS-kompatibility ovladačů".

      Převládající názor na internetových diskuzích kolem tohoto problému je ten, že aplikace (např. FAND) přes NTVDM dá požadavek na vykonání nějaké službu op. systému, ten ho předá dál až se dojde na ovladač nějakého zařízení, který obsahuje chybu. Nepodporuje provedení určité instrukce. Nejčastěji se jedná o ovladače grafických karet, ponejvíce jde o grafiku integrovanou do základní desky. Tento názor je podpořen tím, že právě záměnou ("necertifikovaného") ovladače gr. karty za jiný se tento problém často podaří vyřešit. V některých případech se možná jedná i o "certifikace" ovladačů pro XP, což se projevovalo v problémech kolem zamrzání aplikací ve FULLSCREENu.

      Po zveřejnění SP2 pro Win XP se poněkud zvýšila četnost této chybové hlášky, ale asi nejde přímo o problém SP2, spíše zprostředkovaně přes nějaké ovladače nebo související komponenty.

      Pokud budete řešit tento problém, je celkem dobré zkusit si vyhledat na nějakém internetovém prohledávači (google.cz, seznam.cz,...) heslo NTVDM. V diskuzích se objevují konkrétní typy, co komu kde pomohlo.

      Konkrétní zkušenost:
      Problém byl "způsoben" antivirem AVASTem. Viz. http://forum.avast.com/index.php?board=2;action=display;threadid=6991;start=msg55146#msg55146 kde je též rada, jak to odstranit (ztáhnout soubor http://www2.asw.cz/~vlk/vdd2.reg, a importovat ho pomocí programu regedit).

      ...zpět nahoru