Home


Aktualizováno 05.04.20 08:35:21
****************
05.04.2020
Měl jsem na stole, že oproti WR573 trvá cyklus 10000x volání procedury z LIB cca
6x déle. Zjistil jsem, že to dělá nové kešovaní CMD - četly se úseky 65 kB a protože
jsou data v paměti šifrovaná, trvá získaní dat o něco déle. Usoudil jsem, že
65 kB je zbytečně mnoho a sundal jsem velikost na 8192 bytu. Tím jsem dosáhl
srovnatelného času s wr583. Nyní záleží na vás, zda se vám úprava neprojeví nějakým
zpomalením v konkrétní aplikaci. Nicméně původně byl cyklus 0.0001 s a narostl
na 0.0006 s (na mém nepříliš výkonném PC), což je pouze pří několikatisícových
opakování měřitelné. Po úpravě jsem znovu na cca 0.0001 s na cyklus.
****************
01.04.2020
Přidán příkaz

.startusr "<jméno procedury call>",<frekvence spouštění v 0.1 s>

který zajistí cyklické spouštění uvedené procedury. Pomocí

.startusr # spouštění ukončíte. Např.


.startusr "xyz",1
.read $key
.startusr #
/
.xyz:()
.test $prn
.setwtext "Tisknete na: '$prn[71:101]'"
.end_call
****************
30.03.2020
Zadařilo se ještě u přepínače EX v ZUZ připustit skupinu "." - tedy celou větu. Takže
příklad:

%zuz
ex,ps.
zmena
(IdNotifikace(re:32:0),ZmenaAtributu(re:50:0)) z
.
ZmenaAtributu.
.se()
.bco
.eco
%
inf z

Je nyní funkční.
***************
28.03.2020
Po značném úsilí se zadařilo. Do ZUZ jsem přidal přepínač ps (položek seznam)
a např. na odpovědi z VZP lze:

_mode di:50.
%xml
re.
zmena.xml
zmena.rda
%
%zuz
ex,ps.
zmena
(IdNotifikace(re:32:0),ZmenaAtributu(re:50:0)) z
ZmenaDpnInfo.
ZmenaDpnInfo\ZmenaAtributu.
.se()
.bco
.eco
%
inf z
%zuz
ex,ps.
zmena
(RodneCislo(re:10:0),DatumVychazkyod(re:10:0),DatumVychazkyDo(re:10:0),CasOd(re:8:0),CasDo(re:8:0)) z
ZmenaDpnInfo\Vychazky.
ZmenaDpnInfo\Vychazky\IntervalVychazek\CasOd,ZmenaDpnInfo\Vychazky\IntervalVychazek\CasDo.
.se()
.bco
.eco
%
inf z

Princip je takový, že se po každém úspěšném přepisu položky v seznamu jakoby vygumují
a tak v přístím kole se vezme další sada pokud existuje nebo se vezme další skupina
v pořadí.
***************
28.03.2020
Připustil jsem v ZUZ jako skupinu i položku, což jsme dosud odmítali. To jsem
protlačil, ale není to ještě ono. Generování násobných vět obecně záleží
na více položkách - listech. Jakýchsi virtuálních skupinách.

Zároveň jsem zkonstatoval, že při přepínači ex se sice přepisovaly položky
z dané skupiny, ale navíc chybně všechny položky od konce skupiny do konce
XML. To se mně též podařilo napravit.

Ale zatím na web nic nedávám.
***************
27.03.2020
Rýpnul jsem do ZUZ s XML a konstatuji, že kromě přepínače ex je uvnitř i
přepínač ex:2, im a ma. ex:1 se prepíše XMLRDA do RDA a pak SKUPINA do RDA,
pro im se přepíše pouze SKUPINA do RDA. MA znamená potlač význam malých
a velkých písmen a ex:2 se přepíše XMLRDA do RDA.
Ale pouze u EX se postupně vyhledávají další výskyty skupiny, které generují
další věty.
***************
17.03.2020
Práce na WR590 pokračují. Problémem je kompatibilita instrukcí. ATP je celý
UTF16, ale v RDA jsou RE a RV v KOI08 a tak je problémem rozlišit, kdy se
textový výsledek UTF16 má umístit do cílové struktury jako KOI08 a kdy jako UTF16.

Např.

aij:=up(bij) - (ATP) funkce proměnnou bij v UTF16 má umístit do aij UTF16
uu.re:=uo(bij) - zde UTF16 do KOI08

%zuz
...
aij:=up(bij) - funkce proměnnou bij v KOI08 má umístit do aij KOI08

lze též

[aij]:=up(bij) - zde KOI08 do UTF16

Pokud by RDA obsahovaly pouze UTF16, byla by to procházka růžovou zahradou.
***************
20.02.2020
Z popisu vypadl globální parametr KK, který způsobí, že u všech knihovních
položek se za zkratkou objeví i kód zkratky (není třeba kontrolní blok).
Lokální přepínače kk:1 a kk:2 umožňují zadat kontrolní blok s umístěním
a eventuálními nadpisy (tiskový blok na menu není!) a v případě přepínače
kk:2 i nějakou podmínku. Pak by měly následovat obvyklé dva podmíněné
kontrolní bloky jako u normální položky. Např.

sex
kk.
{15,10,<10700>,<10700>,<06000>,<06000>,r1,10,20,"Pohlaví","Něco vyber"}
.print()
.print()
***************
18.02.2020
Práce na wr590 stále pokračují. Momentálně se snažím rozchodit
původní DEMO.CMD. Přes CPO, VSD, TBN, LST jsem se dostal k VST u kterého
momentálně řeším nápovědné menu. V 90% se jedná o formální změny a v 10%
je třeba kvůli UTF16 dělat radikálnější zásahy do kódu.
***************
07.02.2020
U XMLRDA je délka RE daná rozdílem souřadnic a může být tedy 2**31, ale v přepisu
se délka umístila do 16 bitů, takže pro délku větší jak 32767 bajtů to přeteklo
do záporna atp. To jsem opravil tak, že délku neberu ze 16 bitů.

Problém se projevil při přepisu RE z XMLRDA do mema v RDA.
***************
05.02.2020
Uvědomil jsem si, že je problém využití přejmenování vstupní RDAXML relace
a to z důvodů možné neexistence konkrétního identifikátoru v XMLRDF. Proto
je nyní neexistence identifikátoru přípustná - jakoby se ignoruje. Když není,
tak se ani nic nepřepíše.
***************
03.02.2020
Test $prn historicky vrací češtinu v codepage=6, což není správné. Nicméně
pár uživatelů místo reklamace provedlo v CMD konverzi do KOI, protože
eventuální .setprn již pracuje v KOI. Aby byla zaručena kompatibilita
mezi verzemi, nejde .test $prn opravit. Proto jsem zavedl .test $prncz,
který $prn naplní správně v KOI.

Co se týče zavedení důsledného UTF16 ve WR, to dělám v pracovní verzi WR590.
Fungují mně již stovky příkazů, nicméně lze konstatovat, že jsem netestoval
a pravděpodobně nefungují další stovky příkazů. Na první pohled se nezdálo,
že WR je po 30 letech tak košaté dílo.
***************
03.02.2020
Zaveden přepínač ZI (změna identifikátorů) v XML použitelný pouze při
výstupu dat (ne RSD nebo RDF), který změní identifikátory vybraných
položek na jiné. Např.

_mode di:30.
%xml
zi,re,po,q5:81.
dataa.xml
d
LekarVystavil\JmenoLekare/VystavilLekar,LekarRozhodl\JmenoLekare/RozhodlLekar,
LekarPotvrdil\JmenoLekare/PotvrdilLekar.
%
inf d

Tedy JmenoLekare se zmeni na VystavilLekar atp. LekarVystavil\JmenoLekare
musí být v popisu dat jednoznačné! Pokud se vzor nenajde, skočí se na
následující změnu. Obecně se některé položky v datech nemusí vyskytovat.
30.01.2020
V případě užití položky SO se v INFu místo ničeho se nyní objevuje
délka uloženého souboru v bajtech. Dosud nebylo jasné, zda tam
je něco uloženo a jak je to velké.