Home


Aktualizováno 17.08.21 13:07:17
*************
04.04.2021
Po úpravách .if(...) se sešel názor, že uziv.jm a atp jm obsahující
samé mezery jsou prázdné. Doposud to byl pouze první případ. Takže
nadále jm:=" " je neprázdné.
*************
13.03.2021
Vzhledem k tomu, že při ladění 16 bitové wr591 porovnávám výsledky
s wr589 a bohužel musím často konstatovat, že ani wr589 není bez chyby,
rozhodl jsem se, že upravovanou wr589 povedu nadále jako wr590.
Tedy wr590 je stále osmi bitová, jen s drobnými úpravami na základě
zjištění při ladění wr591, eventuálně na základě vašich připomínek.

Bude to tak i bezpečnější vzhledem k dosavadnímu stavu WR589, který
letos nasazujete jako ostrou verzi.
*************
05.03.2021
Nicméně problém se týkal pouze použití ?. Pokud v jakékoliv verzi
místo ? použijete výraz. tj. u řetězců "" a u čísel a datumů nulu,
bude se to vyhodnocovat správně.
***************
04.03.2021
Dnes jsem napravoval v ATP problém testování relační proměnné na prázdno. Obecně
to nechodilo v žádné verzi. Např.:

_openr t test
_list t
;'t.dt%d10'
.if(!t.dt) ;ano !dt .else ;ne !dt
.if(t.dt ?) ;ano dt ? .else ;ne dt ?
.if(t.dt- ?) ;ano dt- ? .else ;ne dt- ?
.if(t.dt==0) ;ano dt==0 .else ;ne dt==0
.if(t.dt!=0) ;ano dt!=0 .else ;ne dt!=0
t.dt={1.1.2021}
;'t.dt%d10'
.if(t.dt ?) ;ano dt ? .else ;ne dt ?
.if(!t.dt) ;ano !dt .else ;ne !dt
.if(t.dt==0) ;ano dt==0 .else ;ne dt==0
.if(t.dt!=0) ;ano dt!=0 .else ;ne dt!=0
.if(t.dt- ?) ;ano dt- ? .else ;ne dt- ?
_close t

Analogicky i pro textové položky:

_openr t test
;prázdno
.if(t.re- ?) ;leer ano re ? .else ;ano re
.if(!t.re) ;leer ano re !
.if(t.re ?) ;leer ano re ?
.if(t.rv ?) ;leer ano rv ?
.if(!t.rv) ;leer ano rv !
.if(t.re=="") ;leer ano re ""
.if(t.rv=="") ;leer ano rv ""
t.rv:="ano"
t.re:="ano"
;ano
.if(t.rv!="") ;ano rv!="" .else ;ne rv!=""
.if(t.re!="") ;ano re!="" .else ;ne re!=""
.if(t.re ?) ;ano re ?
.if(t.rv ?) ;ano rv ?
.if(!t.rv) ;ano rv !
.if(!t.re) ;ano re !
.if(t.re=="ano") ;leer ano re "ano"
.if(t.rv=="ano") ;leer ano rv "ano"
_close t
***************
27.12.2020
Kromě řady drobných oprav, na základě upozornění uživatelů jsem dokončil
aktualizaci příručky. Pokud si aktualizaci stáhnete, pak buď dok589.*
přejmenujete na dok588.* nebo si stáhnete poslední stav wr589.
***************
25.09.2020
Čárový kód Code128 odjakživa nefungoval správně v případě, že bylo nutno přejít
z módu B do módu C nebo naopak. To jsem napravil.
***************
11.08.2020
Dost dlouho jsem se trápil s binárním přistupem k obsahu souboru. Jde o to, že
soubor může být 8 nebo 16 bitů a u 16 bitů jsou ještě na počátku dva řídící
bajty. Pokud to mělo být kompatibilní, musí wr590 rozlišovat kódování a u 16
bitů vracet polovinu délky souboru a poloviční souřadnice se musí interpretovat
jako dvojnásobné.
***************
12.07.2020
Přidán příkaz ".test $nprn" přiřazující proměnné $nprn jméno vybrané tiskárny.
***************
12.07.2020
Protože např. po ručním ".test $ver" následoval ručně příkaz ";'$ver'" pro
zviditelnění proměnné, doplnil jsem nyní pro skupinu .test ... automatický
výpis hodnot proměných - přirozeně jen při práci z terminálu.
***************
02.07.2020
Dost pracně jsem hledal důvod, proč od verze wr585 se přestalo zobrazovat logo.
opraveno ve WR589 a WR590.
***************
01.07.2020
Stále pracuji na wr590 - nyní kontroluji chody aplikací pomocí zapnutého DBG
do souboru na wr589 a wr590. Pak pomocí DIFF odstraňuji rozdíly. I ve wr589
jsem díky tomu opravil několik problémů.
***************
12.06.2020
Nyní pomocí .test $pc získáte kromě jiného v $poc2 hodnotu 32 nebo 64 ve shodě
s běžícím operačním systémem. Má smysl pouze v 32 bitovém WR. Připomínám,
že .test $ver vrací WR... pro 32 bitový WR a Wx... pro 64 bitový WR.
***************
04.06.2020
Co se týče wr590. pak ji testuji na cca 5 aplikacích. Teď jsem zahájil další kolo,
protože, bohužel, když 1-5 aplikací uchodím, tak první již neprojde atd.
***************
02.06.2020
Dnes jsem zkoumal, proč ve wr590 po ukončení editace se dlouho nic neděje. Výsledek
je tristní a poučný. V koši jsem měl cca 7000 souborů. EDI háže starou verzi do koše
a tak pokud je koš pořádně naplněný, trvá operace dlouho.
***************
30.05.2020
Co se týče WR590, tak stále narážím u různých aplikací na drobné chyby. Dnes
se snažím opět dokonale zprůchodnit DEMO.cmd. Opravil jsem cca 5 chyb, ale stále
to není dokonalé ve srovnání s wr589. Původní předpoklad byl konec roku 2019,
nyní se výhled dokončení WR590 blíží konci roku 2020.
***************
30.05.2020
Mírně jsem vyluxoval výdobytky z WR590 a do WR589 zanesl možnost kopírování

pip <kam>=<odkud>\*.*

a

pip <co>\*.*/de

kde projdou i jména, která nemají správný obraz ve Windows 1250.
***************
08.05.2020
Tak EET ve wr590 prochazí i když je zatím pozastaveno. Všem je ale jasné, že díky tomu
utečou státu minimálně stovky miliard do rozpočtu.
****************
02.05.2020
Kromě řešení různých problémů ve wr588/wr589 postupuji i ve wr590. Momentálně se
snažím protlačit EET. V rámci toho jsem řešil i problém memo položek. Pokud
memo vzejde ze souboru 8 bitů, pak _savebig by měl uložit výsledek do 8 bitového
souboru a podobně i 16 bitů. Pokud memo cpeme do položky TX musí být z pohledu
zpětné kompatibility 8 bitová. Mema v ATP jsou ale vždy 16 bitová.

Postupně jsem též uchodil různé příklady, které mně zasíláte v rámci reklamací.
Není to úplně jednoduché, protože v rámci "rukopisu" uživatele je vždy alespoň
jeden obrat, na který wr590 není nachystáno.
****************
16.04.2020
Pro zajištění kompatibility jsem do WR589 zařadil příkazy .openk a .openka. Zde sice
ekvivalentní s .open a .opena, ale ve wr590 otvírá 8 bitový soubor v KOI.
****************
13.04.2020
Když jsem se pokoušel o procpání tvorby příručky ve wr590 (utf16), díky chybě
jsem konstatoval, že odjakživa z příručky vypadly komentáře v příkladech
začínající ".;" - programátorský komentář. To jsem napravil tak, že pokud
běží instrukce NAK, tak komentáře neignorovat. Nicméně pak v následujícím
NAK v parametrech bylo cosi zakomentováno a tak to vygenerovalo chybu.
Zivot je holt vždy o něco složitější!
****************
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é.