<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="22" zv="Cache for Windows (x86-64) 2009.1.3 (Build 704U)" ts="2013-02-16 17:01:35">
<Class name="User.UtilConv">
<Description><![CDATA[
<pre>

Spolocna trieda pre rozne konverzne programy a globalne
vymeny (symboliky). Sem patria aj jednoucelove programy,
ak je aspon aka taka pravdepodobnost za sa budu dat vyuzit aspon
ako vzor.

12.10.12 mk; globalka na harminizaciu hesiel NA podla autorit NK cez Z39.50
28.07.11 jj; zmena zpusobu zpracovani isoUNtoMarcSPU
02.06.11 lp; do gw/set pridane volitelne zpracovani opakovatelnych tagu
19.08.10 mk; nova konverzia z UN ISO2709 do riadkoveho formatu pre SPU
08.07.10 lp; globalka pro naplneni tiskove fronty ^ChangeLog("print-RD") daty z otevrenych trx RD
12.02.10 mk; nova konverzia US citatelia z xls riadkoveho formatu,
             zo suboru do suboru
11.02.10 lp; pridane zapocitani Txx tagu podle nadrazeneho parametru "eval_txx"
10.02.10 mj; oprava formatu vystupu a pocetni chyby v listTagCount
09.02.10 mj; pridana funkce listTagCount/spocita pocet vyskytu tagu a subtagu / pridane i do helpu 
21.12.09 mk; do exportu do PDA pridane triedenie podla signatury
19.11.09 mk; pridany export do PDA v 3 variantach
29.05.09 mk; pridane generovanie vydavatelov SNG
14.05.09 mk; pridana konverzia SNG
22.01.09 lp; zruseny 1 nekorektni radek kodu v symDeleteClaim
06.01.09 jr; pridany symbolik 'tagval' - selekt podle podpoli daneho tagu
16.12.08 jk; oprava log. chyby kdy se pro tridu IctxTrxQ vynechal index "uk"
15.12.08 jk; do convTrxDebts2Euro doplnen prevod zustatku na fin. konte na euro
09.12.08 jk; nova metoda na konverzy dluhu na euro convTrxDebts2Euro
02.12.08 pb; InventuraHolRuz: globalka na import ciarovych kodov holdingov pre dislokaciu 01=Mileticova
13.11.07 lp; symDeleteClaim: odkazovane trx s pausalni platbou za upominku
             ulozit do savelistu "upo" pro pozdejsi vymazani
05.11.07 pb; XGenAuth6xx: pridany parameter nazov indexu v autoritach
18.09.07 pb; XGenAuth6xx: rozsirenie generovania o tagy 600,601,605,606,607,608
09.08.07 pb; XGenAuth6xx: oprava chyby swapovania linku v celom multitagu
07.08.07 pb; nova metoda XGenAuth6xx: generovanie autorit na zaklade 6XX z katalogu
17.07.07 mk; globalka na doplnenie ocakavanych cisiel v kalendari zzo suboru z RL
03.04.07 pb; listTagValues: upravy pre vypis tagu 001 aj ked nie je v datach v riadku MARC
02.04.07 pb; listTagValues: pridany parameter "-case-" s hodnotami 'u/l/a/o', par3 nahradeny s -itemlen-
31.03.07 pb; listTagValues: osetreny pripad '200a,4xx/200a' v tags_to_display a '200' v tag_to_select;
             doplnena moznost mat aj v zozname "tagView" cele tagy bez subtagov
29.03.07 pb; listTagValues: uprava pre vlozeny tag 001
28.03.07 pb; listTagValues: doplnenie parametrov "filter" a "pagelen", zmena poradia
             parametrov "tagSel" s "tagView", zmena vystupu
27.03.07 pb; listTagValues: rozsirena moznost pouzitia par1 ak je par2 prazdne,
             algoritmus na pouzivanie skratenej formy zapisu tagov v par1,2, oprava drobnych chyb
26.03.07 pb; listTagValues: prerobene na verziu bez pov.par1 (class)a par4(savelist),
             ostali 3 parametre, metoda pracuje s aktivnym select listom, popisky
26.03.07 pb; listTagValues: osetrena max.dlzka 1 uzlu, a max.dlzka 1 polozky (subtagu),
             pridany par5, popisky
25.03.07 pb; listTagValues: upravy v par3 pre zlozeny vs. jednoduchy tag podla obsahu par2 
24.03.07 pb; listTagValues: doladenie logiky, kodu, nastavenie 'eval_txx', ucesanie vystupu
22.03.07 pb; metoda viewTagContent premenovana na listTagValues, vyvolanie prikazom "ltv",
             zmena parametrov na "par", rozsirenie moznosti, zmena logiky, popisky
13.03.07 pb; convertRoleCodeVFtoUnimarc: nova verzia podla js
10.03.07 pb; nova metoda viewTagContent: prehlad vyskytov tagu/tagu+subtagu a ich pocetnosti;
             nova metoda viewRoleContent: prehlad vyskytov kodovanych a nekodovanych roli
               autorov vo VF a ich pocetnosti;
             nova metoda convertRoleCodeVFtoUnimarc: prekodovanie kodovanych roli autorov VF
               do kodovanych roli Unimarc;
             nova metoda genCat200fg: generovanie XxUnCat 200fg v nekodovanom tvare:
             - z nekodovanych roli Vymenneho formatu ulozenych v pomocnom Unimarc tagu 70xu
             - alebo z kodovanych roli Unimarc tagu 70x4
27.07.06 mk; inventarizacia zo suboru<br>
14.07.06 pb; konverzia dat z excelu pre pocet uzivatelov pripojenych pocas dna zo statistiky pstat
04.05.06 mk; urobena globalka na generovanie holdingov pre databazu IZPE
04.05.06 mk; dokoncena globalka na spajanie viacerych opakovani 200 tagu
04.05.06 mk; nova konverzia z UN ISO2709 do riadkoveho formatu 
             zo suboru do suboru pre konverziu IZPE IPVZ
28.02.06 jr; 2 globalky na upravu roku vyd.v 463 (sym463,sym463rok)
             globalka na doplneni $3 do 70x (symGen7xx3)
31.01.06 pb; ostra konverzia UHKT - UhktConv verzia 3
27.01.06 pb; ostra konverzia UHKT - UhktConv verzia 2
24.01.06 mk; oprava volania symboliku s sy="##class(SPIndexT).symGenVisit(.handle,"_dt1_","_dt2_")"
20.12.05 lp; symbolik na vyber holdingu, ktere byly presunuty
             pohybovou transakci ze zadane lokace_dislokace
15.12.05 pb; konverzia UHKT - UhktConv; import z csv suboru vyexportovaneho z dbf v RL
07.12.05 lp; oprava symboliku 'tagcnt' (chybelo tam $c(10))
25.10.05 pb: globalka InventuraHolRuz na import ciarovych kodov holdingov zo
             vstupneho suboru vytvoreneho trackerom podla indexu "prirastkove cislo"
20.10.05 ja; symbolik na invetarizovanie exemplarov podla prirastkoveho cisla
12.08.05 jj; symbolik na zjisteni duplicit v indexu
11.08.05 jj; prenos convProjectCAVToMarc() do CavUnAuth,
             genAutProjektVfToUn() do CavUnEpca
11.08.05 jj; genAutProjektVfToUn() - oprava zprac. IF
11.08.05 mk; konverzia clankov CavUnEpca prenesene do CavVf
11.08.05 mk; uprava konverzie do UnEpca pre CAV
03.08.05 jj; convProjectCAVToMarc(), genAutProjektVfToUn()
07.06.05 mk; globalka na usporiadanie opakovani podpoli C05
07.06.05 mk; globalka na gen 928 upravena zmena indexu aucp
02.06.05 mk; globalka na gen 928 upravena, kvoli predtym upravenym 210 tagom
01.06.05 mk; novy symbolik pre generovanie 400c a d holdingu z 010 bib zaznamu
01.06.05 mk; globalka na usporiadanie opakovani podpoli 210 tagu po konverzii z RL
19.05.05 rs; symDelSubtag3Bodka: nerobit zmenu ak sa nic nemeni - toto zjednodusi select
             t.j. select zmenenych zaznamov je potom d ^X("s XxxYyy @"_sy)
20.04.05 mk; globalka na generovanie autority vydavatelov 210p z 210 a gen 928
19.04.05 mk; globalka na generovanie autority edicie 230e z 225 a gen 410
14.04.05 jj; XgWizard() - doplneni symboliku na zjisteni poctu opak tagu
07.04.05 mk; pridane ku generovaniu autorit z C20 aj z C20b 410a
01.04.05 mk; v generovani autorit swap znakov podla spindex
31.03.05 mk; riesenie upravy vyhl. kriteria spolocne pre 200 a 210
31.03.05 mk; riesenie tagu C20 do C16
24.03.05 mk; vlozit c06 tag y krajina ak je
23.03.05 mk; upravy konverzia z ISO2709 CAV do UNIMARCu
19.03.05 mk; doplnene generovanie autorit aj z C20
19.03.05 mk; generovanie C99e z citatalov CAV podla bc 100b
18.03.05 mk; konverzia citatelov riadkovy format z WORDU s pevnou dlzkou do UN
18.03.05 mk; konverzia z ISO2709 CAV autority do UNIMARCu
17.03.05 mk; konverzia z ISO2709 CAV do UNIMARCu dopracovanie
19.02.05 mk; pridana metoda na generovanie CavUnCat clanky z CavVf
17.02.05 mk; nova konverzia z VF ISO2709 do riadkoveho formatu 
17.02.05 mk; nova konverzia na odstranenie znakov 13 a 10 zo zaznamu 
07.02.05 jj; symFill463() - oprava situace pri pridavani sT200
26.01.05 rs; doplnenie symboliku na generovanie navstev
13.01.05 mk; novy symbolik pre generovanie kategorie citatelov do transakcii
12.01.05 pb; program na konverziu dat SCD - dodavatelia ScdConvVendor
11.01.05 pb; program na konverziu dat SCD z katalog.listkov ScdConvCatl
16.12.04 lp; presunuto nekolik glob. symboliku z SPBorrow sem
10.12.04 jj; glob. symMov606To610 - presun hesel z 606 do 610
09.12.04 jj; glob. symRepSign (doplneni signatury), symFillSigla (oprava sigly)
01.12.04 ja; pripojenie globalky XGenAuth generovanie autorit z 7xx
24.11.04 mk; pridana globalka na doplnenie 100c oddelenia do TRX opodla T04a z holdingu
23.11.04 pb; ntmConv:oprava drobnych chyb pri kontrole dat v klientovi
12.11.04 pb; ntmConv:konverzia NTM - Narodne Technicke Muzeum
28.10.04 rs; formalna uprava ParEV5, aby sla zobrazit dok.triedy
21.10.04 pb; pridane wizard symboliky updHist a del$3
14.10.04 rs; oprava neplatnych faktur, obj, predpl v holdingu
             a presun do 400$u poznamka k dodavatelovi
11.10.04 mk; konverzia Claviusa generovanie 999 parameter kniznica
11.10.04 mk; pridana metoda na generovanie holdingov zo zaznamu Clavius
05.10.04 rs; presunutie "gw" sem
             vyhodenie niektoreho nepotrebneho kodu a doplnenie
             zopar komentarov 
04.10.04 mk; nova konverzia riadkoveho formatu clavius do nasho
             riadkoveho formatu, zo suboru do suboru  
16.09.04 jj; symFill463() - symbolik na doplneni podpoli $h,$i pole 463 200 dle 463 001
27.07.04 jj; symFillIndex() - symbolik na nasypani obsahu UNA_610a z szp do indexu a250s
...</pre>
]]></Description>
<ClassType/>
<IncludeCode>Common</IncludeCode>
<ProcedureBlock>0</ProcedureBlock>
<TimeChanged>62742,39962.593468</TimeChanged>
<TimeCreated>59143,55625</TimeCreated>

<Method name="XgWizard">
<Description><![CDATA[
<pre>
prikaz "gw" - vstupny interface pre generovanie symbolikov

02.06.11 lp; do gw/set pridane volitelne zpracovani opakovatelnych tagu
06.01.09 jr; pridany symbolik 'tagval'
07.12.05 lp; oprava symboliku 'tagcnt' (chybelo tam $c(10))
14.04.05 jj; XgWizard() - doplneni symboliku na zjisteni poctu opak tagu
26.01.05 rs; doplnenie symboliku na generovanie navstev
21.10.04 pb; pridane wizard symboliky updHist a del$3
21.04.04 rs; oprava chyby v symboliku na delete; strcnt
16.04.04 rs; "blank" added
20.02.04 rs; opravena chybka ak subtag bol literal a value bola expression
27.11.03 rs; prva verzia jednoducheho wizardu na symboliky globaliek

---</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>cmd:%String</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<PublicList>sy</PublicList>
<Implementation><![CDATA[
 w !,!,"Global change/Select symbolic wizard",
     !,"------------------------------------"

 if cmd="" 
 {
   w !,"  Specialne symboliky:"
   w !,"    upo      - (trx) vymaz nagenerovanych upomienok"
   w !,"    hlock    - (trx) konverzia blokovania v holdingu 1/2/4/.. -> V/R/Z"
   w !,"    druhd    - (trx) dogenerovania druhu d. do 100$d v transakciach"
   w !,"    hold1    - (hold) presun neplatnych odkazov na fakturu, obj., predpl. do"
   w !,"               poznamky, blizsie info viz. komentar k symboliku v UtilConv"
   w !,"    updHist  - aktualizacia UnCatHist datami z UnCat (ak existuju)"
   w !,"    del$3    - vymaz $3 ak obsahuje iba bodku, ak nie je ani $a, vymaze tag"
   w !,"    oddelenie- (trx) dogenerovanie oddelenia 100$c v transakciach podla T04a"
   w !,"               z holdingu"
   w !,"    genAuth  - generuje autority z 7xx, ak exisute doplni iba kod do 7xx$3"
   w !,"    kategoria- (trx) generuje kategorie 100k do transakcii z citatela 100k,"
   w !,"               pozor spustit len ak nie je kategoria v transakcii !"
   w !,"    genvisit - generovanie transakcii navstev"
   w !,"    selectL  - (trx) vyber zaznamov obsahujucich platby za dany den (volitelne"
   w !,"               len nesystemove)"
   w !,"    selectH  - (hold) vyber holdingov, ktore boli presunute pohybovou"
   w !,"               transakciou zo zadanej lokacie_dislokacie"
   w !
   w !,"  Zakladne symboliky:"
   w !,"    d      - delete whole tag"
   w !,"    s      - swap one string with another string"
   w !,"    set    - setup subtag with value (blank value will delete the subtag)"
   w !,"    fix    - fix not acceptable characters"
   w !,"    strcnt - select records with given tag containing repetitions of values"
   w !,"    tagcnt - select records containing repetitions of given tag"
   w !,"    tagval - select records containing subtags values of given tag"
   w !,"    blank  - no action (read/write record - may be used to touch records)"
   w !
   w !,"Your selection: "
   
   read cmd
   w !
 }
 
 s sy=""
 ;n s1,s2,sLim
 if (cmd="swap") || (cmd="s")
 {
   w !,!,!,"String swap"
   w !,"-----------"
   w !,"Note: if the entered value contains '""' character - will be interpreted as Cache Object script expression (example '$c(31)_""s""')."
   w !,"  String1: " read s1
   w !,"  String2: " read s2
   w !,"  (Swap s1='"_s1_"' with s2='"_s2_"')"
   w !,"  Taglimit (may be blank or have form 71* or 7**): " read sLim
   s sy="##class(MARC).strswapX(.handle,"
   s sy=sy_..XgwApostr(s1)_","
   s sy=sy_..XgwApostr(s2)
   if sLim'="" s sy=sy_","_..XgwApostr(sLim)
   s sy=sy_")"
 }

 if (cmd="d") || (cmd="del")
 {
   w !,!,!,"Delete whole tag"
   w !,"-----------"
   w !,"Note: may use wildcars 71* or 7**"
   w !,"  Tagno: " read s1
   s sy="##class(MARC).delTagX(.handle,"
   ; 21.04.04 rs; oprava chyby
   s sy=sy_..XgwApostr(s1)
   s sy=sy_")"
 }


 if cmd="set"
 {
   w !,!,!,"Setup subtag or delete subtag"
   w !,"-----------"
   w !,"Note: may use wildcars 71* or 7**"
   w !,"  Tagno (3 characters): " read s1
   if $l(s1)'=3 w !,"ERROR: tagnumber must be 3 characters long" q
   w !,"  Subtag (one character): " read s2
   if $l(s2)'=1 w !,"ERROR: subtag must be 1 character long" q
   
   ;n sVal 
   w !,"  Value (enter blank to delete the subtag; may be expression): " read sVal
   ;n sInd 
   w !,"  Indicators (for newly created tags only - may be blank): " read sInd
   if sInd="" s sInd="  "
   if $l(sInd)'=2 w !,"ERROR: indicators must be 2 characters long" q

   ; 02.06.11 lp; pridane volitelne zpracovani opakovatelnych tagu - defaultne se
   ; zmena podpole udela pouze v prvnim opakovani zvoleneho tagu, lze vybrat moznost
   ; zmeny podpole ve vsech opakovanich zvoleneho tagu.
   ; Pred upravou byla funkcnost chybna - zmena se provedla v prvnim opakovani,
   ; vsechny ostatni opakovani tagu se ztratily.
   w !,"  If tag "_s1_" is repeated, do you want apply changes to all lines of tag (Y/N)?"
   w !,"  default is N (only first line of "_s1_" will be changed): " read sAllReps
   if sAllReps'="",$f("yY",sAllReps) {s sAllReps=1} else {s sAllReps=0}
   
   ;n s
   if sVal=""
   {
     w !,"Warning: you entered blank value, which means delete the subtag."
     w !,"Symbolic will fail, if removing of the subtag would cause removing of whole tag."
     w !,"In such case you need to use 'delete of whole tag' symbolic."
     w !,"(if the record would contain something like '"_s1_"    $"_s2_"XXX')"
     w !,"Symbolic will also fail if the record doesn't contain tag '"_s1_"'."
     w !,"Press Enter to accept.." read s
   }
   s s=s1 if sInd'="" s s=s_" "_sInd_" "
   
   ; 20.02.04 rs; opravena chybka ak subtag bol literal a value bola expression
   s sy1="##class(MARC).getTagX(.handle,"_..XgwApostr(s1)_",-1)"
   s sy="##class(MARC).setTagX(.handle,##class(MARC).setSubTagStr("
   if 'sAllReps {s sy=sy_"$p("_sy1_",$c(10),1)"}
   else {s sy=sy_sy1}
   s sy=sy_",$c(31)_"_..XgwApostr(s2)_"_"_..XgwApostr(sVal)_","_..XgwApostr(s)_")"
   if 'sAllReps
   { s sy=sy_"_$select($l("_sy1_",$c(10))>1:$c(10)_$p("_sy1_",$c(10),2,9999),1:"""")" }
   s sy=sy_")"
 }


 if cmd="fix" s sy="##class(MARC).fixupDATAX(.handle)"
 if cmd="blank" s sy="##class(MARC).recordSetupModifiedX(.handle,1)"


 if (cmd="strcnt")
 {
   w !,"info: symbolik select zaznamov, kde dany tag obsahuje dany pocet",
       "opakovani nejakeho sub-stringu - napr. dany pocet opakovani podpola"

   w !,"tag to check: " read tag
   s:tag="" tag="xxx"
   w !,"value to check (f.e. $c(31) or $c(31)_""a""): " read val
   w !,"expression and value (f.e. =2,'=1,>2,<14)"
   w !,": " read exp s:exp="" exp="=1"
  
   s val=..XgwApostr(val)
   s sy="ret1=(##class(MARC).symSubStrCnt(##class(MARC).getTagX(.handle,"""_tag_"""),"_val_")"_exp_")"
 }   

 ; 07.12.05 lp; oprava symboliku (chybelo tam $c(10))
 ; 14.04.05 jj; symbolik na zjisteni poctu opak. daneho tagu
 if (cmd="tagcnt")
 {
   w !,"info: symbolik na zjisteni poctu opak. tagu."
   
   w !,"tag to check: " read tag
   s:tag="" tag="xxx"
   w !,"expression and value (f.e. =2,'=1,>2,<14)"
   w !,": " read exp s:exp="" exp="=1"
  
   s sy="ret1=($l(##class(MARC).getTagX(.handle,"""_tag_""",-1),$c(10))"_exp_")"
 }
 
 ;jr.06.01.09
 if (cmd="tagval")
 {
   w !,"  Symbolik vyhledá záznamy, mající v jednom opakování tágu souèasnì"
   w !,"  v uvedených podpolích a indikátorech uvedené hodnoty."
   w !,"  Napø. (i1 = 1) && (a [] ekonomie) && (2 '= eurovoc) "
   w !,"  Jako oddìlovaè seznamu podpolí,operátorù a hodnot uvádìj #"
   w !,"  Mono pouít jen operátory ],[],[,= a jejich negace, tedy '],'[],'[,'="
   w !,"  Pro testování i ind.pouij oznaèení i1,i2" 
   w !,""
   w !,"--------------------------------------------------------------------"
   w !,"  Tág  (napø.  650)    : " read a q:a="" 
   w !,"  Seznam testovaných podpolí èi ind. (napø. i1#a#2)    : " read b q:b=""  
   w !,"  Seznam operátorù     (napø. =#[]#'=)                 : " read c q:c=""  
   w !,"  Seznam hodnot testovaných podpolí(napø. 1#lidé#mesh) : " read d q:d="" 
 
   ; testovani parametru
      
   if $l(a)'= 3 w !, "chybná délka tágu !!!" q
 
   ;pocet hodnot v b,c,d musi byt shodny
   s cntb = $l(b,"#"),cntc = $l(c,"#"),cntd = $l(d,"#")
   if (cntb '= cntc) || (cntc '= cntd) w !, "Rùzný poèet hodnot v seznamech !!!" q
 
   ;kontrola uzitych operatoru
   s notO=0
   f h=1:1:cntc
   {
	 s o1=$p(c,"#",h) 
     if (o1 '= "[")&&(o1 '= "]")&&(o1 '= "[]")&&(o1 '= "=")&&(o1 '= "'[")&&(o1 '= "']")&&(o1 '= "'[]")&&(o1 '= "'=") 
     {
       s notO=1
       s h=cntc
     }
   } 
   if notO=1 w !, "Nepovolený operátor !!!" q
   
   s sy="ret1=##class(UtilConv).symSelTagValue(.handle,"""_a_""","""_b_""","""_c_""","""_d_""")=1"   

 }
 
 
 ; 30.09.04 rs; zapojenie globalky na vymaz upomienok     
 if (cmd="upo")
 {
	w !,"info: symbolik na globalnu vymenu na vymaz cerstvo nagenerovanych",
	  !,"upomienok (ak sa napr. pri prvom spusteni nevytvorili spravne).",
	  !,"Ak existuju odkazovane trx pausalnych platieb za upomienky ($4),",
	  !,"budu ulozene v pomenovanom saveliste 'upo'. Po ukonceni symboliku",
	  !,"je potrebne nacitat savelist 'gl upo', skontrolovat transakcie",
	  !,"a vymazat ich prikazom 'delete'."
	  
	w !,"Datum generovania upomienok (Enter=dnesny datum): " read sDate
	if sDate="" s sDate=##class(Util).date()
	s sy="##class(UtilConv).symDeleteClaim(.handle,"""_sDate_""")"
 } 
      
 ; 30.09.04 rs; zapojenie globalky konverziu stareho sposobu blokovania 'lock'
 if (cmd="hlock")
 {
	w !,"info: symbolik na globalnu vymenu stareho sposobu blokovania holdingu (RL)",
	  !,"na novy sposob (aRL). Arl pouziva pismena V/R/Z v RL boli cisla 1,2,3.."
	
	s sy="##class(UtilConv).symHoldingLockFixup(.handle)"
 } 
 
 ; 30.09.04 rs; zapojenie
 if (cmd="selectL")
 {
	w !,"Info: symbolik sluzi na vyber vsetkych zaznamov transakcii, ktore",
	  !,"boli vytvorene dany den s volitelnym vypustenim systemom generovanych",
	  !,"platieb. Da sa vyhodne pouzit napr. po nagenerovani upomienok na vyber",
	  !,"zaznamov, kde uz bola rucne spravena platba."
	   
	w !,"Datum pre select platieb (Enter=dnesny datum): " read sDate
	
	w !,"1-vypustit platby generovane systemom, 0-vsetky platby (dflt=1): " 
	read nFiltSyst 
	
	if sDate="" s sDate=##class(Util).date()
	s nFiltSyst=+nFiltSyst
	
	s sy="##class(UtilConv).symSelectL(.handle,"""_sDate_""","_nFiltSyst_")"
 }

 ; 20.12.05 lp; zapojeni
 if (cmd="selectH")
 {
	w !,"Info: symbolik sluzi na vyber vsetkych zaznamov holdingov, ktore",
	  !,"boli presunute pohybovou transakciou zo zadanej lokacie_dislokacie",
	  !,"na sucasnu lokaciu_dislokaciu, napr. vymenny fond.",
	  !,"Pripadne je mozne aj obmedzenie na datum pohybovej trx."
	   
	w !,"Povodna lokacia: " read sLoc
	w !,"Povodna dislokacia: " read sDisloc

	w !,"Datum pre select platieb (Enter=bez obmedzenia datumom): " read sDate

	s sy="##class(UtilConv).symSelHoldFromLoc(.handle,"""_sLoc_""","""_sDisloc_""","""_sDate_""")"
 }

 if (cmd="druhd")
 {
   w !,"info: symbolik na globalku na transakciami, ktore neobsahuju podpole 100$d",
       "dogeneruje sa dotiahnutim z titulu. Pozor - ak uz zaznam obsahuje 100$d",
       "nebude zmeneny (aj ak by titul mal iny obsah v 90$b ako je v 100$d)"
   s sy="##class(UtilConv).symTrxFixDruhDok(.handle)"
 }
 
 ; 24.11.04 mk doplnene volanie globalky na oddelenie v transakciach
 if (cmd="oddelenie")
 {
   w !,"info: symbolik na globalku na transakciami, ktore neobsahuju podpole 100$c",
       " dogeneruje sa dotiahnutim z titulu T04a. Pozor - ak uz zaznam obsahuje 100$c",
       " nesmie byt globalka spustana, 100c sa pridava ako dalsi subtag , nemeni obsah",
       " stavajuceho 100c"
   s sy="##class(UtilConv).symGenBranchTrx(.handle)"
 }

 if (cmd="hold1")
 { 
   w !,"info: symbolik na opravu neplatnych faktur, obj, predpl",
     !, "v holdingu a presun do 400$u poznamka k dodavatelovi"
   w !,"jazyk instalacie pre prefixy textov do poznamky",
     !,"1-slovencina,2-cestina  (dflt=1):" read lang
   s:lang="" lang=1
   s sy="##class(UtilConv).symFixBadInvoiceInfo(.handle,"_lang_")"
 }
 
 if (cmd="updHist")
 { 
   w !,"info: aktualizacia UnCatHist datami z UnCat (ak existuju)",
     !, "v UnCatHist ostanu bez zmeny tagy 005,HIS a 999,",
     !, "vsetky ostatne tagy sa prevezmu z UnCat",
     !, "selekcne kriterium: s XxUnCatHist @ALLOWSAVE"
     
   s sy="##class(UtilConv).symMergeUnCattoUnCatHist(.handle)"
 }

 if (cmd="del$3")
 { 
   w !,"info: vymaz podpola '3' ak obsahuje iba bodku; ak nie je ani podpole 'a', vymaze cely tag"
 
   w !,"V ktorych tagoch mazat(oddelit ciarkou)? : " read sTag
   if sTag="" w !,"input tag '"_sTag_"' is invalid" q

   s sy="##class(UtilConv).symDelSubtag3Bodka(.handle,"""_sTag_""")"
 }
 if (cmd="genAuth")
 {
    w !,"info: symbolik na generovanie autorit z poli 7xx, treba pre kazdu 7stovku ",
	  !,"spustat zvlast. Po vygenerovani autority do pola 7xx $3 doplni jej kod.",
	  !,"Overuje ci uz taka autorita exisutje ak ano, tak doplni iba link do katalogu",!!	
 	  
	w !,"Tag z ktoreho sa ma generovat autorita (700,701,702,710,711,712): " read tag
	if '((tag="700")||(tag="701")||(tag="702")||(tag="710")||(tag="711")||(tag="712")) w !,"input tag '"_tag_"' is invalid" q
	w !,"Prefix institucie (Pr.Umb) :" read ictx
	if ictx="" w !,"blank value" q
	w !,"Prefix l name (Pr.l alebo Umb ak je to hosting) :" read lname
	if lname="" w !,"blank value" q
	w !,"Katalogizujucia organizacia (naplna 801$b):" read katorg
	w !!,"!!! POZOR !!!  Uz pri zadani prikazu ls sa generuju autority. ",!!
	s sy="##class(UtilConv).XGenAuth(.handle,"""_tag_""","""_ictx_""","""_lname_""","""_katorg_""")"
 } 
 ; 13.01.05 mk doplnene volanie globalky na kategoriu v transakciach
 if (cmd="kategoria")
 {
   w !,"info: symbolik na globalku na transakcie, ktore neobsahuju podpole 100$k",
       " dogeneruje sa dotiahnutim z citatela 100k. Pozor - ak uz zaznam obsahuje 100$k",
       " nesmie byt globalka spustana, 100k sa pridava ako dalsi subtag , nemeni obsah",
       " stavajuceho 100k"
   s sy="##class(UtilConv).symGenKatTrx(.handle)"
 }
 
 ; 26.01.05 rs; doplnenie symboliku na generovanie navstev
 if (cmd="genvisit")
 {
   w !,"info: symbolik na globalku na generovanie navstevnostnych transakcii",
     !,"(typ S). Trx sa generuje pri: vypozicke/navrate/prolong./rez./ziad. alebo ",
     !,"platbe (generovana systemom (username<>sys))",
	 !,"(neratame drzane rez.)",
	 !,"Pred globalkou je treba spustit select a podla indexu dtt vybrat zaznamy,",
	 !,"ktore maju aspon jednu operaciu v zadanom casovom intervale, pre kt.",
	 !,"chceme generovat navstevy.",
	 !,"Na triede trx je potreba povolit generovanie indexu 'udos' aspon tolko dni",
	 !,"dozadu, aky interval spat od aktualneho datumu chceme pouzit (nastavuje",
	 !,"sa modifikatorom udoidx - viz. dokuemntacia indexov).",
	 !,"Pozor symbolik generuje trx uz pri prikaze 'ls' (podobne",
	 !,"ako pri generovani autorit)"
	 
   w !,"Datum zaciatku: " read dt1
   w !,"Datum konca:    " read dt2
       
   s sy="##class(SPIndexT).symGenVisit(.handle,"_dt1_","_dt2_")"
 }

 if cmd="q" q    
 if cmd="" q    
 if sy="" w !,"invalid keyword: '"_cmd_"'" q
 
 w !,"Your new symbolic is:",!,!,sy,!
 w !,"Enter d ^X(""ls"") to test it first and d ^X(""g"") to run the change."
 
 if '$random(3) w !,"Harry Potter wishes good luck.",!

 q
]]></Implementation>
</Method>

<Method name="XgwApostr">
<Description>
pomocna metoda pre"gw"
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>s</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; pokial zadany string obsahuje znak " potom sa prepoklada
 ; ze je to Cache objectscript expression
 if s'="",$f(s,"""") q s ;s s=##class(Util).strswap(s,"""","""""") q s
 ; aj ak obsahuje $c(
 if s'="",$f(s,"$c(") q s ;s s=##class(Util).strswap(s,"""","""""") q s

 s s=""""_s_""""
 q s
]]></Implementation>
</Method>

<Method name="SfuConv2">
<Description>
15.06.04 pb; konverzia SFU - spravodajske a dokum.filmy,

faza 1: import z csv suborov vyexportovanych z MS Accessu,
oddelovac stlpcov je ~, zaciatok a konec textu oznaceny s \
 
d ##class(Konverzie).SfuConv2() vyvolanie programu
</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 ;----------------------------------------------
 
 n ofn,sOLDIO s sOLDIO=$io,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"konverzia SFU - spravodajske a dokum.filmy ***************  ",$zdt($h,4)
 ;d SetPDefIO^%NLS("UTF8",3)
 ;n sListFiles s sListFiles="d:\1\sfu\9\2\data\sfu_files0"
 n sListFiles s sListFiles="d:\1\sfu\9\2\data\sfu_files"
 n sCesta s sCesta="d:\1\sfu\9\2\data\"
 w !,"otvaram subor: "_sListFiles
 open sListFiles:(/READ):0
 n te s te=$test
 if te=1 d  w "  ok"
 else  w "  not ok"

 kill ^TMP  ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
 if te=1  d
 . s ofi="d:\1\4\Sfu_Imp"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 . 
 . s ofiprot="d:\1\4\sfu_Imp_prot"_$r(999)_".txt"
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe SFU                          ",$zdt($h,4),!
 . 
 . use sListFiles:/POSITION=0
 . s sFileNum=0
 . d $ZU(68,40,1)
 . n brk,c,pg,sFileName s brk=0,c=0,pg=0,sFileName=""
 . for  q:brk  d
 . . if sFileNum=8 s sFileNum=0
 . . s sFileNum=sFileNum+1
 . . use sListFiles
 . . read sFileName if $zeof'=0 s brk=1
 . . if sFileName="" q
 . . s c=c+1,pg=pg+1 
 . . ;use sOLDIO w !,sFileName
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . s sFileName0=sFileName
 . . s sFileName=sCesta_sFileName
 . . use sOLDIO w !,"otvaram subor: "_sFileName
 . . use ofiprot 
 . . w !,"          ======================================"
 . . w !,"          Otvaram subor: "_sFileName
 . . w !,"          ======================================"
 . . open sFileName:(/READ):0
 . . s te=$test
 . . if te=1 d  w "  ok"
 . . else  d  w "  not ok" q
 . . 
 . . use sFileName:/POSITION=0
 . . n brk2,c2,li s brk2=0,c2=0,li="",pg=pg+1 
 . . n NodeNum,DBName s DBName=""
 . . ;use ofiprot w !,"a.",$e(sFileName0,1,7),"."
 . . d
 . . . if $e(sFileName0,1,7)="vyrobne" s DBName="VL"  q   ;vyrobne_listy
 . . . if $e(sFileName0,1,7)="detaily" s DBName="DF"  q  ;detaily_filmu 
 . . . if $e(sFileName0,1,16)="autori_vyrobnych" s DBName="AVL"  q ; autori_vyrobnych_listov
 . . . if $e(sFileName0,1,6)="autori" s DBName="AUTH"  q ;autori
 . . for  q:brk2  d
 . . . use sFileName
 . . . read li if $zeof'=0 s brk2=1
 . . . ;use ofiprot w !,"dbname=",DBName,". c2=",c2
 . . . if (DBName="DF") && (c2>0)  d
 . . . . ;use ofiprot w !,"c2=",c2,". fc=",$l(li,"\")
 . . . . if $l(li,"\")<9  d
 . . . . . if $l(li,"~")=8 q  ;pocet hlavnych oddelovacov suhlasi
 . . . . . n brk4,li0 s brk4="",li0=""
 . . . . . for  q:brk4  d
 . . . . . . s li0=li
 . . . . . . ;use ofiprot w !,li
 . . . . . . use sFileName
 . . . . . . read li if $zeof'=0 s brk2=1
 . . . . . . ;use ofiprot w !,li
 . . . . . . s li=li0_li
 . . . . . . if $l(li,"\")=9 s brk4=1
 . . . . . . if brk2=1 s brk4=1
 . . . if li="" q
 . . . s c2=c2+1,pg=pg+1
 . . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . . ;use sOLDIO w !,c2,"====",li
 . . . ;use ofiprot w !,li
 . . . n sTag s sTag=li
 . . . n brk3 s brk3=""
 . . . if c2=1 s brk3=1 ;1.veta je hlavicka
 . . . s NodeNum=0
 . . . for  q:brk3  d
 . . . . ;use ofiprot w !,"b.",li,"."
 . . . . s NodeNum=NodeNum+1
 . . . . s sTag=$p(li,"~",NodeNum)
 . . . . s li=##class(User.Util).strswap(li,"\","")
 . . . . s sTag=##class(Util).trim(sTag)
 . . . . ;if DBName="DF" use ofiprot w !,"c.",$p(li,"~",NodeNum),"."
 . . . . if sTag'="" d
 . . . . . s DBKey=""
 . . . . . if DBName="VL"    s DBKey=$p(li,"~",1)
 . . . . . if DBName="DF" d  s DBKey=$p(li,"~",2) if DBKey'="" s sDBKey=sFileNum*1000+sTag
 . . . . . if DBName="AVL"   s DBKey=$p(li,"~",2)
 . . . . . if DBName="AUTH"  s DBKey=$p(li,"~",1)
 . . . . . s DBKeyMy=$p(li,"~",1)
 . . . . . 
 . . . . . if DBKey'="" d 
 . . . . . . s DBKey=sFileNum*1000+DBKey
 . . . . . . if DBName="AUTH" d
 . . . . . . . s ^TMP("AUTH",DBKey,DBName,NodeNum)=sTag
 . . . . . . else  s ^TMP("VL",DBKey,DBName,DBKeyMy,NodeNum)=sTag
 . . . . 
 . . . . if NodeNum>100 s brk3=1
 . . 
 . . close sFileName
 . . ;use sOLDIO 
 . . use ofiprot 
 . . w !,c2_" record processed - ok"
 . 
 . close sListFiles
 . ; enable <ENDOFFILE> error
 . d $ZU(68,40,0)
 . use sOLDIO w !,c_" record processed - ok                ",$zdt($h,4)
 . close ofi
 .  
 . use ofiprot w !,"          ======================================"
 . w !!,c_" record processed - ok "
 . w !!,"Import SFU ukonceny                             ",$zdt($h,4)
 . close ofiprot
 q
]]></Implementation>
</Method>

<Method name="SfuConv2Cat">
<Description>
15.06.04 pb; konverzia SFU - spravodajske a dokum.filmy, faza 2: export z ^TMP


d ##class(Konverzie).Conv2Cat() vyvolanie programu
</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 ;----------------------------------------------
 
 w !,"konverzia SFU - spravodajske a dokum.filmy - faza 2 ***********  ",$zdt($h,4)
 n sOLDIO s sOLDIO=$io
  
 s ofiprot="d:\1\4\SFU_Prot"_$r(999)_".txt"
 open ofiprot:("NWS":/CREATE):0
 w !,"Protokol o zapise do SFU - spravodajske a dokum.filmy - faza 2  ",$zdt($h,4)
 w !
 
 s ofi="d:\1\4\SFU_Exp"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
  
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000         ngm  2200289   450 "
 s sT100="100    "_$c(31)_"a"_sDatAkt_"csloa0103    ba"
 s sT102="102    "_$c(31)_"a"_"SK"
 s sT150="150    "_$c(31)_"a"_"y"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"BAC002"_$c(31)_"c"_sDatAkt
 s sT970="970    "_$c(31)_"b"_"J"
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SFU"_$c(31)_"c"_"SFU"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0,cSum=0
 s idMSAT001=""
 for  set idMSAT001=$o(^TMP("VL",idMSAT001)) quit:idMSAT001=""  do
 . ;for  set idMSAT001=$o(^TMP("VL",idMSAT001)) quit:idMSAT001=1007  do
 . 
 . s sT101="",sT110="",sT210="",sT215="",sT330="",sT423="",sT600="",sT606="",sT607="",sT702=""
 . s sTU01="",sTC99=""
 . 
 . s sTC99="C99    "_$c(31)_"aMSA"_idMSAT001
 . 
 . s c=c+1,cSum=cSum+1
 . if c=10  d  use sOLDIO w "." s c=0 use ofi
 . s idMSAT001ori=$e(idMSAT001,2,999)+0
 . s sT200a=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,4))
 . s sT200h=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,5))
 . s sT200d=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,7))
 . s sT200e=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,8))
 . 
 . s sT200="200 1  "
 . if sT200a'="" s sT200=sT200_$c(31)_"a"_sT200a
 . if sT200h'="" s sT200=sT200_$c(31)_"h"_sT200h_"/"_$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,6))
 . if sT200d'="" s sT200=sT200_$c(31)_"d"_sT200e
 . if sT200e'="" s sT200=sT200_$c(31)_"e"_sT200e
 . 
 . s sT977="977    "
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,9)) ;cislo kopie (docasne)
 . if sX'="" s sT977=sT977_$c(31)_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,10)) ;pov.cislo kopie (docasne)
 . if sX'="" s sT977=sT977_"#"_sX
 . if sT977="977    " s sT977=""
 .  
 . s sT210a=$p($g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,2)),"*",2) ;miesto bude vo vyrobcovi za *
 . s sT210c=$p($g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,2)),"*",1)
 . s sT210c=sT210c_" "_$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,3)) ;studio pride za medzeru do 210c
 . s sT210c=##class(Util).trim(sT210c)
 . s sX=##class(Util).trim($p(sT210c,",",2)) ;este skusim: "vyrobca, miesto"
 . if $p(sX," ",2)="" d
 . . s sT210a=sX
 . . s sT210c=##class(Util).trim($p(sT210c,",",1))
 . 
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,25)) ;vyrobna skupina; nie je casto, oddelim to jasne
 . if sX'="" s sT210c=sT210c_"#"_sX
 . s sT210d=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,6))
 .
 . s sT210="210    "
 . if sT210a'="" s sT210=sT210_$c(31)_"a"_sT210a
 . if sT210c'="" s sT210=sT210_$c(31)_"c"_sT210c
 . if sT210d'="" s sT210=sT210_$c(31)_"d"_sT210d
 . if sT210="210    " s sT210=""
 .
 . 
 . s sT215c=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,11))
 . if sT215c=1 s sT215c="f"
 . if sT215c="0" s sT215c="èb"
 . 
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,17)) ;scenar schvaleny dna
 . if sX'="" s sTU01=sTU01_$c(31)_"a"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,18)) ;1.filmovaci den
 . if sX'="" s sTU01=sTU01_$c(31)_"b"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,19)) ;posl.filmovaci den
 . if sX'="" s sTU01=sTU01_$c(31)_"c"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,20)) ;serviska schval.dna
 . if sX'="" s sTU01=sTU01_$c(31)_"d"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,21)) ;1.kombinovana kopia vytvorena dna
 . if sX'="" s sTU01=sTU01_$c(31)_"e"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,22)) ;1.kombinovana kopia schvalena dna
 . if sX'="" s sTU01=sTU01_$c(31)_"f"_sX
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,23)) ;odovzdanie diela
 . if sX'="" s sTU01=sTU01_$c(31)_"g"_sX
 . if sTU01'="" s sTU01="U01    "_sTU01
 . 
 . 
 . s sT330=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,24)) ;kratka charakteristika ;I1 treba dat=0
 . if sT330'="" s sT330="330 0  "_sT330
 . 
 . s sT606=""
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,26)) ;rod
 . s sX3=##class(Util).leadingZero(sX+10100,7)
 . if sX'="" s sX=$zstrip(##class(Util).sXlate("SFU_RODY",sX),"<>W")
 . if sX'="" d
 . . s sX=$zcvt(sX,"l")
 . . s sT606="606 1  "_$c(31)_"a"_sX_$c(31)_"3sfu_un_auth*"_sX3
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,27)) ;druh
 . s sX3=##class(Util).leadingZero(sX+10200,7)
 . if sX'="" s sX=$zstrip(##class(Util).sXlate("SFU_DRUHY",sX),"<>W")
 . if sX'="" d
 . . s sX=$zcvt(sX,"l")
 . . if sT606'="" s sT606=sT606_"~"
 . . s sT606=sT606_"606 1  "_$c(31)_"a"_sX_$c(31)_"3sfu_un_auth*"_sX3
 .
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,28)) ;zaner
 . s sX3=##class(Util).leadingZero(sX+10300,7)
 . if sX'="" s sX=$zstrip(##class(Util).sXlate("SFU_ZANRE",sX),"<>W")
 . if sX'="" d
 . . s sX=$zcvt(sX,"l")
 . . if sT606'="" s sT606=sT606_"~"
 . . s sT606=sT606_"606 1  "_$c(31)_"a"_sX_$c(31)_"3sfu_un_auth*"_sX3
 
 
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,29)) ;nosic
 . s sT215a="",sT215d=""
 . if sX'="" d
 . . if $p(sX,"-",2)="" s sX=sX_"-KK"
 . . s sT215d=$p(sX,"-",1) s sT215d=##class(Util).trim(sT215d)
 . . s sT215a=$p(sX,"-",2) s sT215a=##class(Util).trim(sT215a)
 . . s sT215a=##class(User.Util).strswap(sT215a,"KK","kombinovaná kópia")
 . . s sT215a=##class(User.Util).strswap(sT215a,"KO","kópia obrazu")
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,30)) ;obraz.format
 . if sX'="" d
 . . if sT215d'="" s sT215d=sT215d_"; " ;dam ; lebo , je v obsahu obraz.formatu
 . . s sT215d=sT215d_sX
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,12)) ;pov.metraz 
 . s sX1=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,13)) ;cista metraz niekedy je; nezadefinovali, ktoru chcu, dam tam aj aj
 . s sY=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,14)) ;pov.minutaz 
 . s sY1=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,15)) ;cista minutaz niekedy je; nezadefinovali, ktoru chcu, dam tam aj aj
 . 
 . if (sX'="") || (sX1'="") || (sY'="") || (sY1'="") d
 . . if sT215a'="" s sT215a=sT215a_", "
 . . s sT215a=sT215a_"("_sX_"/"_sX1_","_sY_"/"_sY1_")"
 . 
 . s sT101a="",sT101j=""
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,31)) ;jaz.verzia "nemá","slovenská", a rozne ine
 . s sY=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,32)) ;titulky "slovenské", "maïarské", a rozne ine
 . d
 . . if sX="nemá" d
 . . . if sT215c'="" s sT215c=sT215c_", "
 . . . s sT215c=sT215c_"bez zvuku"
 . . . if sY="slovenské" s sT101j="slo" q
 . . . if sY="èeské" s sT101j="cze"     q
 . . . if sY="nemecké" s sT101j="ger"   q
 . . . if sY="maïarské" s sT101j="hun"  q
 . . . if sY="anglické" s sT101j="eng"  q
 . . . s sT101j=sY
 . . . q
 . . else  d 
 . . . if sX'="" d
 . . . . if sT215c'="" s sT215c=sT215c_", "
 . . . . s sT215c=sT215c_"zvukový záznam"
 . . . . if sX="slovenská" s sT101a="slo" q
 . . . . if sX="èeská" s sT101a="cze"     q
 . . . . if sX="nemecká" s sT101a="ger"   q
 . . . . if sX="maïarská" s sT101a="hun"  q
 . . . . if sX="anglická" s sT101a="eng"  q
 . . . . s sT101a=sX
 . 
 . s sT101=""
 . if (sT101a'="") || (sT101j'="") d
 . s sT101="101 0  "
 . if sT101a'="" s sT101=sT101_$c(31)_"a"_sT101a
 . if sT101j'="" s sT101=sT101_$c(31)_"j"_sT101j
 . if sT101="101 0  " s sT101=""
 .  
 .  
 . s sT215="215    "
 . if sT215a'="" s sT215=sT215_$c(31)_"a"_sT215a
 . if sT215c'="" s sT215=sT215_$c(31)_"c"_sT215c
 . if sT215d'="" s sT215=sT215_$c(31)_"d"_sT215d
 . if sT215="215    " s sT215=""
 . 
 . 
 . s sX=$g(^TMP("VL",idMSAT001,"VL",idMSAT001ori,34)) ;periodicita
 . s sT110=""
 . d 
 . . if sX=1 s sT110=" c" q
 . . if sX=2 s sT110=" f" q
 . . if sX=3 s sT110=" u" q
 . if sT110'="" s sT110="110    "_$c(31)_"a"_sT110
 . 
 . ; AUTORI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . s idMSAAuth="",sT702=""
 . for  set idMSAAuth=$o(^TMP("VL",idMSAT001,"AVL",idMSAAuth)) quit:idMSAAuth=""  do
 . . s idMSAAuth4=$g(^TMP("VL",idMSAT001,"AVL",idMSAAuth,3)) ;kod id autora
 . . s idMSAAuth4=idMSAAuth4+($e(idMSAT001,1,1)*1000)
 . . s sT702a=$g(^TMP("AUTH",idMSAAuth4,"AUTH",3)) ;priezvisko
 . . s sT702b=$g(^TMP("AUTH",idMSAAuth4,"AUTH",2)) ;krstne
 . . s sT7023=##class(Util).leadingZero(idMSAAuth4+10000,7)
 . . 
 . . s idMSAFunkcia4=$g(^TMP("VL",idMSAT001,"AVL",idMSAAuth,4)) ;fcia autora
 . . s idMSAFunkcia4=idMSAFunkcia4+($e(idMSAT001,1,1)*1000)
 . . if sT702'="" s sT702=sT702_"~"
 . . s sT702=sT702_"702  1 "_$c(31)_"a"_sT702a_$c(31)_"b"_sT702b
 . . s sT702=sT702_$c(31)_"3sfu_un_auth*"_sT7023_$c(31)_"4"_idMSAFunkcia4
 . 
 .
 . ; DEATILY FILMU ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . s sT423="",iT423=0
 . kill sT423G
 . s sT607=""
 . s idMSADF=""
 . for  set idMSADF=$o(^TMP("VL",idMSAT001,"DF",idMSADF)) quit:idMSADF=""  do
 . . s sSotNaz=$g(^TMP("VL",idMSAT001,"DF",idMSADF,4)) ;sot nazov
 . . s sSotObs=$g(^TMP("VL",idMSAT001,"DF",idMSADF,5)) ;sot obsah
 . . s sSotKom=$g(^TMP("VL",idMSAT001,"DF",idMSADF,6)) ;sot komentar
 . . s sSotObr=$g(^TMP("VL",idMSAT001,"DF",idMSADF,7)) ;sot obraz
 . . 
 . . s sSotObsLackova=$p(sSotObs,"*****",1)
 . . s sSotObsLackova=##class(Util).trim(sSotObsLackova)
 . . s sSotObsIni=$p(sSotObs,"*****",2)
 . . s sSotObsIni=##class(Util).trim(sSotObsIni)
 . . if sSotObsIni="" d  ;ak nie su ***** su to ini
 . . . s sSotObsIni=sSotObsLackova s sSotObsLackova=""
 . .
 . . s sSotCislo=""
 . . if $e($p(sSotObsLackova," ",$l(sSotObsLackova," ")),1,1)="(" d  ;odd.zatvorka
 . . . s sSotCislo=$p(sSotObsLackova," ",$l(sSotObsLackova," ")) ;posledny field
 . . . s sSotObsLackova=$p(sSotObsLackova," ",1,$l(sSotObsLackova," ")-1) ;po posledny field
 . . if $e($p(sSotObsLackova," ",$l(sSotObsLackova," ")),1,1)="/" d  ;odd lomitko
 . . . s sSotCislo=$p(sSotObsLackova," ",$l(sSotObsLackova," ")) ;posledny field
 . . . s sSotObsLackova=$p(sSotObsLackova," ",1,$l(sSotObsLackova," ")-1) ;po posledny field
 . . 
 . . ;463  1 $12001 $aEkonom$vRoè. 37, è. 46 (1993), s. 25
 . . if (sSotNaz'="") || (sSotCislo'="") || (sSotObs'="") || (sSotKom'="") || (sSotObr'="")  d
 . . . s sT423=sT423_"423    "
 . . . s sT423=sT423_$c(31)_"1" ;tag001
 . . . if (sSotNaz'="") || (sSotCislo'="") d
 . . . . s sT423=sT423_"2001 " ;tag200
 . . . . if sSotNaz'="" s sT423=sT423_$c(31)_"a"_sSotNaz
 . . . . if sSotCislo'="" s sT423=sT423_$c(31)_"h"_sSotCislo
 . . . if (sSotObs'="") || (sSotKom'="") || (sSotObr'="")  d
 . . . . if sSotObsLackova'="" s sT423=sT423_$c(31)_"1C2311"_$c(31)_"a"_sSotObsLackova
 . . . . if sSotObsIni'="" s sT423=sT423_$c(31)_"1C2310"_$c(31)_"a"_sSotObsIni
 . . . . if sSotKom'="" s sT423=sT423_$c(31)_"1C232 "_$c(31)_"a"_sSotKom
 . . . . if sSotObr'="" s sT423=sT423_$c(31)_"1C233 "_$c(31)_"a"_sSotObr
 . . . s iT423=iT423+1
 . . . s sT423G(iT423)=sT423
 . . . s sT423=""
 . . 
 . . if sSotObs'="" d
 . . . ;***** O problémoch a novinkách turistického ruchu u nás hovorí riadite¾ n.p. Turista, vedúci Zochovej chaty, lyiari v teréne a mnohí ïalí.
 . . . ;Kde: Poprad - stanica. Nízke Tatry - Chopok. Tále. Zochova chata. Vrátna. Martinské hole. Bumbálka. Horský hotel Bezovec. Vysoké Tatry - trbské Pleso. diar. 
 . . . ;Kto: Lyiari. Riadite¾ TURISTU. Ivièiè - vedúci Zochovej chaty.   
 . . . ;Kedy: Zima.
 . . . ;Èo: Problémy a epizódy z oblasti turistického ruchu. 
 . . .
 . . . s sSotKde=$p(sSotObsIni,"Kde:",2) ;za "kde" pred kto
 . . . s sSotKde=$p(sSotKde,"Kto:",1)
 . . . 
 . . . s sSotKto=$p(sSotObsIni,"Kto:",2)
 . . . s sSotKto=$p(sSotKto,"Kedy:",1)
 . . . 
 . . . s sSotKedy=$p(sSotObsIni,"Kedy:",2)
 . . . s sSotKedy=$p(sSotKedy,"Èo:",1)
 . . . 
 . . . s sSotCo=$p(sSotObsIni,"Èo:",2)
 . . . 
 . . . n j
 . . . for j=1:1:..fc(sSotKto,".")-1  d  
 . . . .;"kto" nebol v poziadavkach na konverziu,ale su tan zaujimave data. Ak,da sa zmazat.
 . . . . s sX=$zstrip($p(sSotKto,".",j),"<>W")
 . . . . if sX'="" d
 . . . . . if sT600'="" s sT600=sT600_"~"
 . . . . . s sT600=sT600_"600 1  "_$c(31)_"a"_sX
 . . .  
 . . . for j=1:1:..fc(sSotCo,".")-1  d
 . . . . s sX=$zstrip($p(sSotCo,".",j),"<>W")
 . . . . if sX'="" d
 . . . . . if sT606'="" s sT606=sT606_"~"
 . . . . . s sT606=sT606_"606 1  "_$c(31)_"a"_sX
 . . .  
 . . . s sMax=..fc(sSotKde,".")
 . . . if ..fc(sSotKedy,".")>sMax s sMax=..fc(sSotKedy,".")
 . . . for j=1:1:sMax-1 d
 . . . . s sX=$zstrip($p(sSotKde,".",j),"<>W")
 . . . . if sX'="" d
 . . . . . if sT607'="" s sT607=sT607_"~"
 . . . . . s sT607=sT607_"607 1  "_$c(31)_"a"_sX
 . . . . s sX=$zstrip($p(sSotKedy,".",j),"<>W")
 . . . . if sX'="" d
 . . . . . s sT607=sT607_$c(31)_"z"_sX
 .
 .
 . ; ZAPIS DO SUBORU CAT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . 
 . if sT200a="" s cSum=cSum-1 q
 . 
 . use ofi
 . w "# @id SfuUnCat new"
 . w !,"001    new"
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . if sT101'="" w !,sT101
 . w !,sT102
 . if sT110'=""  w !,sT110
 . w !,sT150
 . w !,sT152
 . w !,sT200
 . if sT210'=""  w !,sT210
 . if sT215'=""  w !,sT215
 . if sT330'=""  w !,sT330
 .
 . if iT423>0  d
 . . s sX=""
 . . for  set sX=$o(sT423G(sX)) quit:sX=""  do
 . . . w !,$g(sT423G(sX))
 . 
 . if sT600'=""  d
 . . for jj=1:1:..fc(sT600,"~") w !,$p(sT600,"~",jj)
 .
 . if sT606'=""  d
 . . for jj=1:1:..fc(sT606,"~") w !,$p(sT606,"~",jj)
 . 
 . if sT607'=""  d
 . . for jj=1:1:..fc(sT607,"~") w !,$p(sT607,"~",jj)
 . 
 . if sT702'=""  d
 . . for jj=1:1:..fc(sT702,"~") w !,$p(sT702,"~",jj)
 . w !,sT801
 . w !,sT970
 . if sTU01'=""  w !,sTU01
 . if sT977'=""  w !,sT977
 . w !,sTC99
 . w !,sT999
 . w !,"###",!
 
 close ofi

 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov SfuUnCat = ",cSum
 w !,"------------------------------------------------------------------------"

 ; AUTORITY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 s ofi="d:\1\4\SFU_Exp"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
  
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000    00198nx   22000973  450"
 s sT100="100    "_$c(31)_"a"_sDatAkt_"asloy0103    ba"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"BAC002"_$c(31)_"c"_sDatAkt
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SFU"_$c(31)_"c"_"SFU"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0,cSum=0
 s idMSAAT001=""
 for  set idMSAAT001=$o(^TMP("AUTH",idMSAAT001)) quit:idMSAAT001=""  do
 . ;for  set idMSAAT001=$o(^TMP("AUTH",idMSAAT001)) quit:idMSAAT001="1002"  do
 . 
 . s idARLT001=##class(Util).leadingZero(idMSAAT001+10000,7)
 .
 . s c=c+1,cSum=cSum+1
 .
 . s sT200b=$g(^TMP("AUTH",idMSAAT001,"AUTH",2))
 . s sT200a=$g(^TMP("AUTH",idMSAAT001,"AUTH",3))
 . s sT200=""
 . if (sT200a'="") || (sT200b'="") d
 . . s sT200="200  1 "
 . . if sT200a'="" s sT200=sT200_$c(31)_"a"_sT200a
 . . if sT200b'="" s sT200=sT200_$c(31)_"b"_sT200b
 . 
 . s sTC99="C99    "_$c(31)_"aMSA"_idMSAAT001
 . 
 . 
 . ; ZAPIS DO SUBORU AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . use ofi
 . w "# @id SfuUnAuth "_idARLT001
 . w !,"001    "_idARLT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT200
 . w !,sT801
 . w !,sTC99
 . w !,sT999
 . w !,"###",!
 
 close ofi

 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov SfuUnAuth = ",cSum
 w !,"------------------------------------------------------------------------"
 
 
 ; HESLA: RODY, DRUHY, ZANRE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 s ofi="d:\1\4\SFU_Exp"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
  
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000    00198nx   22000973  450"
 s sT100="100    "_$c(31)_"a"_sDatAkt_"asloy0103    ba"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"BAC002"_$c(31)_"c"_sDatAkt
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SFU"_$c(31)_"c"_"SFU"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0,cSum=0
 
 s sFileName="d:\1\sfu\9\2\ciselniky\rody.txt"
 ;w !,"otvaram subor: "_sFileName
 use ofiprot 
 w !,"          ======================================"
 w !,"          Otvaram subor: "_sFileName
 w !,"          ======================================"
 open sFileName:(/READ):0
 s te=$test
 if te=1 d  w "  ok"
 else  d  w "  not ok" q
 
 use sFileName:/POSITION=0
 d $ZU(68,40,1)
 n brk2,c2,li s brk2=0,c2=0,li="",id250T001=""
 for  q:brk2  d
 . use sFileName
 . read li if $zeof'=0 s brk2=1
 . if li="" q
 . s c=c+1,cSum=cSum+1
 . if c>1 d  ;1.riadok je hlavicka
 . . s sT250a=$zcvt($p(li,"~",2),"l")
 . . s sT250a=##class(Util).trim(sT250a)
 . . s sT250="250    "_$c(31)_"a"_sT250a
 . . s sT980="980    "_$c(31)_"xR"
 . . s id250T001=##class(Util).leadingZero($p(li,"~",1)+10100,7)
 . . s sTC99="C99    "_$c(31)_"aMSA-RODY"_##class(Util).leadingZero(c-1,4)
 . .
 . . ; ZAPIS DO SUBORU AUTH RODY   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . . use ofi
 . . w "# @id SfuUnAuth "_id250T001
 . . w !,"001    "_id250T001
 . . w !,sT000
 . . w !,##class(MARC).genT005(1)
 . . w !,sT100
 . . w !,sT152
 . . w !,sT250
 . . w !,sT801
 . . w !,sT980
 . . w !,sTC99
 . . w !,sT999
 . . w !,"###",!
 
 close ofi
 close sFileName
 
 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov SfuUnAuth RODY = ",cSum-1
 w !,"------------------------------------------------------------------------"
 
 
 
 s ofi="d:\1\4\SFU_Exp"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
  
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000    00198nx   22000973  450"
 s sT100="100    "_$c(31)_"a"_sDatAkt_"asloy0103    ba"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"BAC002"_$c(31)_"c"_sDatAkt
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SFU"_$c(31)_"c"_"SFU"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0,cSum=0
 
 s sFileName="d:\1\sfu\9\2\ciselniky\druhy.txt"
 ;w !,"otvaram subor: "_sFileName
 use ofiprot 
 w !,"          ======================================"
 w !,"          Otvaram subor: "_sFileName
 w !,"          ======================================"
 open sFileName:(/READ):0
 s te=$test
 if te=1 d  w "  ok"
 else  d  w "  not ok" q
 
 use sFileName:/POSITION=0
 d $ZU(68,40,1)
 n brk2,c2,li s brk2=0,c2=0,li="",id250T001=""
 for  q:brk2  d
 . use sFileName
 . read li if $zeof'=0 s brk2=1
 . if li="" q
 . s c=c+1,cSum=cSum+1
 . if c>1 d  ;1.riadok je hlavicka
 . . s sT250a=$zcvt($p(li,"~",2),"l")
 . . s sT250a=##class(Util).trim(sT250a)
 . . s sT250="250    "_$c(31)_"a"_sT250a
 . . s sT980="980    "_$c(31)_"xK"
 . . s id250T001=##class(Util).leadingZero($p(li,"~",1)+10200,7)
 . . s sTC99="C99    "_$c(31)_"aMSA-DRUHY"_##class(Util).leadingZero(c-1,4)
 . .
 . . ; ZAPIS DO SUBORU AUTH DRUHY   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . . use ofi
 . . w "# @id SfuUnAuth "_id250T001
 . . w !,"001    "_id250T001
 . . w !,sT000
 . . w !,##class(MARC).genT005(1)
 . . w !,sT100
 . . w !,sT152
 . . w !,sT250
 . . w !,sT801
 . . w !,sT980
 . . w !,sTC99
 . . w !,sT999
 . . w !,"###",!
 
 close ofi
 close sFileName
 
 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov SfuUnAuth DRUHY = ",cSum-1
 w !,"------------------------------------------------------------------------"
  
 
 
 s ofi="d:\1\4\SFU_Exp"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
  
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000    00198nx   22000973  450"
 s sT100="100    "_$c(31)_"a"_sDatAkt_"asloy0103    ba"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"BAC002"_$c(31)_"c"_sDatAkt
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SFU"_$c(31)_"c"_"SFU"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0,cSum=0
 
 s sFileName="d:\1\sfu\9\2\ciselniky\zanre.txt"
 ;w !,"otvaram subor: "_sFileName
 use ofiprot 
 w !,"          ======================================"
 w !,"          Otvaram subor: "_sFileName
 w !,"          ======================================"
 open sFileName:(/READ):0
 s te=$test
 if te=1 d  w "  ok"
 else  d  w "  not ok" q
 
 use sFileName:/POSITION=0
 d $ZU(68,40,1)
 n brk2,c2,li s brk2=0,c2=0,li="",id250T001=""
 for  q:brk2  d
 . use sFileName
 . read li if $zeof'=0 s brk2=1
 . if li="" q
 . s c=c+1,cSum=cSum+1
 . if c>1 d  ;1.riadok je hlavicka
 . . s sT250a=$zcvt($p(li,"~",2),"l")
 . . s sT250a=##class(Util).trim(sT250a)
 . . s sT250="250    "_$c(31)_"a"_sT250a
 . . s sT980="980    "_$c(31)_"xH"
 . . s id250T001=##class(Util).leadingZero($p(li,"~",1)+10300,7)
 . . s sTC99="C99    "_$c(31)_"aMSA-ZANRE"_##class(Util).leadingZero(c-1,4)
 . .
 . . ; ZAPIS DO SUBORU AUTH ZANRE   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . . use ofi
 . . w "# @id SfuUnAuth "_id250T001
 . . w !,"001    "_id250T001
 . . w !,sT000
 . . w !,##class(MARC).genT005(1)
 . . w !,sT100
 . . w !,sT152
 . . w !,sT250
 . . w !,sT801
 . . w !,sT980
 . . w !,sTC99
 . . w !,sT999
 . . w !,"###",!
 
 close ofi
 close sFileName
 
 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov SfuUnAuth ZANRE = ",cSum-1
 w !,"------------------------------------------------------------------------"
 
 
 
 w !!,"Koniec protokolu               ", $zdt($h,4)
 close ofiprot
 
 use sOLDIO w !,"Fáza 2: ukonèená OK"
  
 q
]]></Implementation>
</Method>

<Method name="IpvzConvCatl">
<Description>
---------------------------------------------
d ##class(UtilConv).IpvzConvCatl() vyvolanie programu

11.05.04 pb; program na konverziu dat IPVZ</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 
 n ofn,sOLDIO s sOLDIO=$io,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"program na konverziu dat IPVZ ***************  ",$zdt($h,4)
 ;??d SetPDefIO^%NLS("UTF8",3)
 ;n sListFiles s sListFiles="d:\1\ipvz\1\ipvz_files0"
 n sListFiles s sListFiles="d:\1\ipvz\1\ipvz_files"
 n sCesta s sCesta="d:\1\ipvz\1\"
 w !,"otvaram subor: "_sListFiles
 open sListFiles:(/READ):0
 n te s te=$test
 if te=1 d  w "  ok"
 else  w "  not ok"
  
 if te=1  d
 . s ofi="d:\1\3\IPVZ_Imp"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 . 
 . s ofiprot="d:\1\3\IPVZ_Imp_prot"_$r(999)_".txt"
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe IPVZ                          ",$zdt($h,4),!
 . 
 . use sListFiles:/POSITION=0
 . d $ZU(68,40,1)
 . n brk,c,pg,sFileName s brk=0,c=0,pg=0,sFileName=""
 . for  q:brk  d
 . . use sListFiles
 . . read sFileName if $zeof'=0 s brk=1
 . . if sFileName="" q
 . . s c=c+1,pg=pg+1 
 . . ;use sOLDIO w !,sFileName
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . s sFileName0=sFileName
 . . s sFileName=sCesta_sFileName
 . . ;w !,"otvaram subor: "_sFileName
 . . use ofiprot 
 . . w !,"          ======================================"
 . . w !,"          Otvaram subor: "_sFileName
 . . w !,"          ======================================"
 . . open sFileName:(/READ):0
 . . s te=$test
 . . if te=1 d  w "  ok"
 . . else  d  w "  not ok" q
 . . 
 . . use ofi
 . . w "# @id IpvzUnMcat new"
 . . w !,"001    new"
 . . w !,##class(MARC).genT005(1)
 . . 
 . . use sFileName:/POSITION=0
 . . n brk2,c2,li s brk2=0,c2=0,li=""
 . . for  q:brk2  d
 . . . use sFileName
 . . . read li if $zeof'=0 s brk2=1
 . . . if li="" q
 . . . s c2=c2+1
 . . . ;use sOLDIO w !,c2,"====",li
 . . . use ofiprot w !,li
 . . . 
 . . . use ofi
 . . . w !,"390    ",$c(31),"a",li
 . . 
 . . use ofi
 . . w !,"801  0 ",$c(31),"aCZ",$c(31),"bIPVZ",$c(31),"c",$e(##class(MARC).genT005(),1,8),$c(31),"gAACR2"
 . . w !,"856    ",$c(31),"u",$p(sFileName0,".",1),".tif"
 . . w !,"970    ",$c(31),"bA"
 . . w !,"999    ",$c(31),"a1",$c(31),"bIPVZ",$c(31),"cIPVZ",$c(31),"daRLconv-",$e(##class(MARC).genT005(),1,8)
 . . w !,"###",!
 . . close sFileName
 . . ;use sOLDIO 
 . . ;w !,c2_" record processed - ok"
 . 
 . close sListFiles
 . ; enable <ENDOFFILE> error
 . d $ZU(68,40,0)
 . use sOLDIO w !,c_" record processed - ok                ",$zdt($h,4)
 . close ofi
 .  
 . use ofiprot w !,"          ======================================"
 . w !!,c_" record processed - ok "
 . w !!,"Import IPVZ ukonceny                             ",$zdt($h,4)
 . close ofiprot
 q
]]></Implementation>
</Method>

<Method name="ParEV">
<Description>
Triedy pre konverziu Par Eurovoc - tu je to len na ukazku
posledna verzia programov je v triede ParSEurovoc - viz.
C:\Delphi\cache\cdl\par\ParSEurovoc.rar 

##class(xx).EV() vyvolanie programu
17.12.03 pb; program na import dat Eurovocu a manipulaciu s TestUnAuth</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 
 ;n sOLDIO s sOLDIO=$io
 n ofn,sOLDIO s sOLDIO=$io,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"EV - program na import dat Eurovocu a manipulaciu s TestUnAuth *********"
 ;w !," volby: 1=import z xml, 2=dogenerovanie vazieb ,3=mostik hesiel z xml,  4=mostik hesiel z TestUnAuth"
 ;n Xcmd s Xcmd=##class(Util).trim1(EuroVoc)
 ;w !,"Napi èíslo volby: "  read Xcmd s Xcmd=##class(Util).trim1(Xcmd)
 ;w !,Xcmd
 n sFile s sFile="desc_,thes_,desc_thes,relation_bt,relation_rt,sn_,uf_"
   ;**pre nazvy konciace s '_' znamena, ze sa pouzije subor s jazyk.mutaciou
 n sLang s sLang="cz,en,fr,de"
 s sVersion=""
 
 s Xcmd=""
 s Xcmd=1
 ;if 'Xcmd q
 if Xcmd=1 d xCommand1(Xcmd) 
 s Xcmd=2
 if Xcmd=2 d xCommand2(Xcmd) 
 s Xcmd=3
 if Xcmd=3 d xCommand3(Xcmd) 
 s Xcmd=4
 if Xcmd=4  d ..ParEV4()
 ;w !,"Nespravne cislo volby: ", Xcmd
 
 q

 ;------------------------------------------------
xCommand1(Xcmd)	
 kill ^tmpEurovoc
 ;n sCesta s sCesta="d:\1\par\v3\1\"
 n sCesta s sCesta="d:\1\par\v4\2\"
 
 
 ;n sCesta s sCesta="d:\arl\_tmp\peter\1702\v4\"    ;* CESTA PRE XML EUROVOC 4 =====================
 
 
 
 ;w !,"Napi cestu vstupných xml súborov: " read sCesta s sCesta=##class(Util).trim1(sCesta)
 ;w !, sCesta
 w !!,"Faza 1: import dat Eurovocu z formatu XML do aRL"

 ;*** Konverzny program z EUROVOCu z formatu XML do aRL
 
 ;*** Konvertuju sa rozne subory (podrobnejsie v programe).
 ;***   Z nich sa inymi nastrojmi poskladaju vety do UN_AUTH_250.
 ;*** princip formatu vstupnych dat:

 ;<?xml version="1.0" encoding="UTF-8" ?>
 ;<!DOCTYPE DESCRIPTEUR SYSTEM "descripteur.dtd">
 ;<DESCRIPTEUR LNG="CZ" VERSION="3_0">
 ;<RECORD>
 ;<DESCRIPTEUR_ID>1</DESCRIPTEUR_ID>
 ;<LIBELLE>Aarhus</LIBELLE>
 ;</RECORD>
 ;<RECORD>
 ;<DESCRIPTEUR_ID>5075</DESCRIPTEUR_ID>
 ;<LIBELLE>Abruzzi</LIBELLE>
 ;</RECORD>

 ;w !,sFile
 ;w !,sLang
 d SetPDefIO^%NLS("UTF8",3)
         
 ;n nCi,nCj,ii,jj,bDataStatus
 s nCi=$l(sFile,",")
 s nCj=$l(sLang,",")
 ;w !,nCi,!,nCj
 f ii=1:1:nCi  d
 . ;w nCi_".."_nCj_"  ..."_ii
 . s sFileCurr=$p(sFile,",",ii)
 . ;w !,ii,"##",sFileCurr    w !,$e(sFileCurr,$l(sFileCurr),$l(sFileCurr))
 . if $e(sFileCurr,$l(sFileCurr),$l(sFileCurr))="_"  d
 . . f jj=1:1:nCj d
 . . . ;w nCi_".."_nCj_"  2..."_ii_",,,"_jj
 . . . s sOsFile=sCesta_sFileCurr_$p(sLang,",",jj)_".xml"
 . . . s bDataStatus=""
 . . . d lProcess1(sOsFile)
 . else  d 
 . . s sOsFile=sCesta_sFileCurr_".xml"
 . . s jj=0
 . . s bDataStatus=""
 . . d lProcess1(sOsFile)
 w !,"Faza 1: ukoncena OK"
 q

lProcess1(sOsFile)
 w !,"otvaram subor: "_sOsFile
 d ImportOpenFile
 ;w "ss",$test,"ss  "
 q
 
ImportOpenFile
 ;if 'bUnicode { open sOsFile:(/READ):0 } else {  open ifi:("RK\SAME\":/READ):0}
 ;w !,"otvaram2 subor: "_sOsFile
 open sOsFile:(/READ):0
 n te s te=$test
 ;use sOLDIO w "  ",te,"==",ii,"===",jj,"  "
 if te=1 d  w "  ok"
 else  w "  not ok"
 ;if ii=1,jj=1,te=0  ztrap "failed to open file 'desc_cz.xml'",sOsFile
 if te=1  d
 . use sOLDIO
 . ;n time1 s time1=$ztimestamp  w !,$ztimestamp w "  ??"
 . ;w "  ",sOsFile
 . use sOsFile
 . use sOsFile:/POSITION=0
 . ;use sOLDIO w "  !!"
 . d $ZU(68,40,1)
 . ;use sOLDIO w ":",!
 . n brk,c,pg,li s brk=0,c=0,pg=0,li=""
 
 . for  q:brk  d
 . . use sOsFile
 . . read li if $zeof'=0 s brk=1
 . . 
 . . s li=##class(Util).diaTREscape(li)  
 . . 
 . . s c=c+1,pg=pg+1 
 . . ;use sOLDIO w !,li
 . . if c=1  d 
 . . .; use sOLDIO w !,li
 . . . if $f(li,"UTF-8")>0 d
 . . . . s bDataStatus=1, sRow="", sRowOld=""
 . . . . use sOLDIO w !
 . . . else  s brk=1
 . . if sVersion="" d
 . . . if $f(li,"DESCRIPTEUR LNG")>0 d  ; <DESCRIPTEUR LNG="EN" VERSION="4_0">
 . . . . s li=##class(User.Util).strswap(li,$c(34),"")
 . . . . if $f(li,"VERSION=3")>0 s sVersion=3
 . . . . if $f(li,"VERSION=4")>0 s sVersion=4
 . . . . use sOLDIO w "Eurovoc Version=",sVersion,!
 . . 
 . . if bDataStatus=1  d
 . . . d lProcess1Row
 . . .;use sOLDIO w !,li
 . . . if pg'<500  d  use sOLDIO w "." s pg=0 q
      
 .  use sOLDIO close sOsFile
 .  ; enable <ENDOFFILE> error
 .  d $ZU(68,40,0)
 .  w !,c_" record processed - ok "
 q

lProcess1Row  
 /*<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE DESCRIPTEUR SYSTEM "de
scripteur.dtd"><DESCRIPTEUR	LNG="CZ"     VERSION="4_0"><RECORD><DESCRIPTEUR_ID>1</DE
SCRIPTEUR_ID><LIBELLE>Aarhus</LIBELLE></RECORD>
 */
 s sRow=sRow_li
 if $e(li,1,8)="</RECORD" d                  ;koniec "vety"
 . s sRow=##class(Util).trim(sRow)
 . s sRow=$tr(sRow,">")
 . d lProces1Init
 . n brk,i,j,nCi,nCj s nCi=$l(sRow,"<")
 . for i=1:1:nCi  d
 . . s brk=0, nCj=0
 . . for j=1:1:999  q:brk  d
 . . . ;use sOLDIO w !,j,"..",  $e($p(sRow,"<",i),1,$l(sParm(j))),"....",sParm(j)
 . . . if $e($p(sRow,"<",i),1,$l(sParm(j)))=sParm(j) d
 . . . . if $d(sParm(j,2))=1 s sParm(j,2)=sParm(j,2)_"**" d
 . . . . else  s sParm(j,2)=""
 . . . . s nCj=nCj+1, sParm(j,2)=sParm(j,2)_##class(Util).trim($e($p(sRow,"<",i),$l(sParm(j))+1,9999))
 . . . ;w "###",$d(sParm(j+1))
 . . . 
 . . . if ($d(sParm(j+1))=0) || ($d(sParm(j+1))=10)  s brk=1
 . s sRowOld=sRow
 . s sRow="", sId=""

 . if ii=1 d
 . . s sId=$g(sParm(1,2))
 . . ;if sId=""  q
 . . s ^tmpEurovoc(sDbName,sId,11+0+(jj*3)-3)=$g(sParm(2,2)) ;*desc, poz.11 + 3 pre jazykovu mutaciu
 . if ii=2  d
 . . s sId=$g(sParm(1,2))
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,jj)=$g(sParm(2,2))        ;*thes
 . if ii=3  d 
 . . s sId=$g(sParm(2,2))
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,1)=$g(sParm(1,2))
 . . s ^tmpEurovoc(sDbName,sId,2)=$g(sParm(3,2))         ;*desc_thes
 . if ii=4  d 
 . . s sId=$g(sParm(1,2))
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,4)=$g(sParm(2,2))         ;*relation_bt
 . if ii=5 d 
 . . s sId=$g(sParm(1,2))
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,5)=$g(sParm(2,2))         ;*relation_rt
 . if ii=6  d 
 . .  s sId=$g(sParm(1,2)) 
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,11+1+(jj*3)-3)=$g(sParm(2,2))   ;*sn,poz.12 + 3 pre jazykovu mutaciu
 . if ii=7  d
 . .  s sId=$g(sParm(1,2)) 
 . . ;if sId="" q
 . . s ^tmpEurovoc(sDbName,sId,11+2+(jj*3)-3)=$g(sParm(2,2))   ;*uf, poz.13 + 3 pre jazykovu mutaciu

 q

lProces1Init
 if ii=2 d  s sDbName="THES" 
 else  s sDbName="DESCR"
 
 kill sParm
 if ii=1 s sParm(1)="DESCRIPTEUR_ID", sParm(2)="LIBELLE"     ; desc
 if ii=2 s sParm(1)="THESAURUS_ID",   sParm(2)="LIBELLE"     ; thes
 if ii=3 s sParm(1)="THESAURUS_ID",   sParm(2)="DESCRIPTEUR_ID",  sParm(3)="TOPTERM"    ;* desc_thes
 if ii=4 s sParm(1)="SOURCE_ID",      sParm(2)="CIBLE_ID"          ;* relation_bt
 if ii=5 s sParm(1)="DESCRIPTEUR1_ID",sParm(2)="DESCRIPTEUR2_ID"   ;* relation_rt
 if ii=6 s sParm(1)="DESCRIPTEUR_ID", sParm(2)="SN"         ; sn
 if ii=7 s sParm(1)="DESCRIPTEUR_ID", sParm(2)="UF_EL"      ; uf
 q

xCommand2(Xcmd)	
 w !,"Faza 2: tvorba vertikalnych a horizontalnych vazieb, tvorba prepojovacieho mostiku hesiel z Eurovocu"
 s brk=""
 s sId=$o(^tmpEurovoc("DESCR","")), sPos=""
 for  q:brk  d
 . use sOLDIO
 . if $d(^tmpEurovoc("DESCR",sId,4))=1 d
 . . for j=1:1:..fc(^tmpEurovoc("DESCR",sId,4),"**") d
 . . . s sIdCross=$p(^tmpEurovoc("DESCR",sId,4),"**",j)
 . . . ;w ".4.",sIdCross,",,"
 . . . if $d(^tmpEurovoc("DESCR",sIdCross,3))=1 d
 . . . . if ##class(Util).locate(sId,^tmpEurovoc("DESCR",sIdCross,3),"**")=0 d
 . . . . . s ^tmpEurovoc("DESCR",sIdCross,3)=^tmpEurovoc("DESCR",sIdCross,3)_"**"
 . . . else  s ^tmpEurovoc("DESCR",sIdCross,3)=""
 . . . if ##class(Util).locate(sId,^tmpEurovoc("DESCR",sIdCross,3),"**")=0 d
 . . . . s ^tmpEurovoc("DESCR",sIdCross,3)=^tmpEurovoc("DESCR",sIdCross,3)_sId
 . 
 . if $d(^tmpEurovoc("DESCR",sId,5))=1 d
 . . for j=1:1:..fc(^tmpEurovoc("DESCR",sId,5),"**") d
 . . . s sIdCross=$p(^tmpEurovoc("DESCR",sId,5),"**",j)
 . . . ;w ".5.",sIdCross,",,"
 . . . if $d(^tmpEurovoc("DESCR",sIdCross,5))=1 d
 . . . . if ##class(Util).locate(sId,^tmpEurovoc("DESCR",sIdCross,5),"**")=0 d
 . . . . . s ^tmpEurovoc("DESCR",sIdCross,5)=^tmpEurovoc("DESCR",sIdCross,5)_"**"
 . . . else  s ^tmpEurovoc("DESCR",sIdCross,5)=""
 . . . if ##class(Util).locate(sId,^tmpEurovoc("DESCR",sIdCross,5),"**")=0 d
 . . . . s ^tmpEurovoc("DESCR",sIdCross,5)=^tmpEurovoc("DESCR",sIdCross,5)_sId
 .
 . for jj=1:1:5 d
 . . if $d(^tmpEurovoc("DESCR",sId,11+0+(jj*3)-3))=1 d
 . . . s sTitle=$g(^tmpEurovoc("DESCR",sId,11+0+(jj*3)-3))_"_"_$p(sLang,",",jj)
 . . . s sTitle=$zcvt(sTitle,"u")
 . . . s ^tmpEurovoc("MOSTT",sTitle,2)=sId
 . 
 . ;* premostenie do mikrotezauru
 . if $g(^tmpEurovoc("DESCR",sId,2))="O" d
 . . s sIdCross=$g(^tmpEurovoc("DESCR",sId,1))
 . . s sX=$g(^tmpEurovoc("DESCR",sId,4))
 . . if sX'="" s sX=sX_"**"
 . . s sX=sX_sIdCross
 . . s ^tmpEurovoc("DESCR",sId,4)=sX
 . . s sIdCrossDole=$g(^tmpEurovoc("THES",sIdCross,13))
 . . if ##class(Util).locate(sId,sIdCrossDole,"**")=0 d
 . . . if sIdCrossDole'="" s sIdCrossDole=sIdCrossDole_"**"
 . . . s sIdCrossDole=sIdCrossDole_sId
 . . . s ^tmpEurovoc("THES",sIdCross,13)=sIdCrossDole
 . 
 . s sId=$o(^tmpEurovoc("DESCR",sId))
 . if sId="" s brk=1
 w !,"Faza 2: ukoncena OK"
 q
 
xCommand3(Xcmd)
 w !,"Faza 3: tvorba prepojovacieho mostiku hesiel z TestUnAuth, zapis id Eurovoc do TestUnAuth (iba pre import Eurovoc 3)"
 d ##class(Util).XselIndex("TestUnAuth T001 < 0030000")    
 n id s id=""
 w !
 s c=0,cr=0
 for  set id=$o(^Lists("tmp",$j,id)) quit:id=""  do  
 . s idArlT001=##class(MARC).getT001(id)
 . if '##class(MARC).getDATAX(.handle,id) w !,"Error reading record by id="_id ztrap "EV1" q
 . s sT250=##class(MARC).getTagX(.handle,"250")
 . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . s sTC99=##class(MARC).getTagX(.handle,"C99")
 . s sTC99a=##class(MARC).getSubTagStr(sTC99,"a")
 . ;if sT250a'="", id=5332126 d
 . if sT250a'="" d
 . . ;w !,sT250a,!,sT250y
 . . s nMikroTez=$e(sT250a,1,4)
 . . ;w !,##class(Util).isInteger(nMikroTez)
 . . if '(nMikroTez?4N) d   ;* bez mikrotezaura 
 . . . if sT250y'="ID"  d   ;* bez lokalnych hesiel 10.02.04 pb;
 . . . if (sT250y'="ID") && (sT250y'="NE") && (sT250y'="QU") d   ;* bez lokalnych hesiel
 . . . . s c=c+1,cr=cr+1
 . . . . if c=200 d  w "." s c=0
 . . . . s sTitle=sT250a_"_cz"
 . . . . s sTitle=$zcvt(sTitle,"u")
 . . . . s ^tmpEurovoc("MOSTT",sTitle,1)=id
 . . . . ;if $g(^tmpEurovoc("MOSTT",sTitle,2))'="" s ^tmpEurovoc("MOSTT",sTitle,3)=id_" nasiel"
 . . . . 
 . . . . if (sVersion=3) && (sT250'="") d
 . . . . . s sTC99a=$g(^tmpEurovoc("MOSTT",sTitle,2))
 . . . . . if sTC99a'="" d
 . . . . . . if sTC99="" d
 . . . . . . . s sTC99="C99    "_$c(31)_"a"_sTC99a
 . . . . . . else 
 . . . . . . . s sTC99=##class(MARC).setSubTagStr(sTC99,$c(31)_"a") ;vymaz, ak uz je
 . . . . . . . s sTC99=##class(MARC).setSubTagStr(sTC99,$c(31)_"a"_sTC99a)
 . . . . . . d ##class(MARC).setTagX(.handle,sTC99)
 . . . . . . d ##class(MARC).sortLinesX(.handle)
 . . . . . . d ##class(MARC).writeX(.handle)
 . . . .
 . . . . if sVersion=4 d 
 . . . . . if sTC99a'="" d  ;ak existuje kluc v TestUnAuth
 . . . . . . s ^tmpEurovoc("DESCR",sTC99a,99)=sTC99a
 . . . . . . s ^tmpEurovoc("DESCR",sTC99a,98)=id
 . . . . . . s ^tmpEurovoc("DESCR",sTC99a,97)=idArlT001
 . . . . . . 
 . . . . . . s ^tmpEurovoc("MOSTI","ID",id)=sTC99a
 . . . . . . s ^tmpEurovoc("MOSTI","T001",idArlT001)=sTC99a
 . . . . 
 . . . . s sT450=##class(MARC).getTagX(.handle,"450",-1) ;deskriptory cudzojazycne
 . . . . s sLangEN="",sLangFR="",sLangDE=""
 . . . . for i=1:1:..fc(sT450,$c(10)) d
 . . . . . s sT450a=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"a")
 . . . . . s sT450y=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"y")
 . . . . . s sLangX=sT450y
 . . . . . ;w !,sLangX
 . . . . . if sLangX="EN"  if sLangEN="" d
 . . . . . . s sLangEN="EN"
 . . . . . . s sDescrX=sT450a_"_en"
 . . . . . . s sDescrX=$zcvt(sDescrX,"u")
 . . . . . . s ^tmpEurovoc("MOSTT",sDescrX,1)=id q
 . . . . . if sLangX="FR"  if sLangFR="" d
 . . . . . . . s sLangFR="FR"
 . . . . . . s sDescrX=sT450a_"_fr"
 . . . . . . s sDescrX=$zcvt(sDescrX,"u")
 . . . . . . s ^tmpEurovoc("MOSTT",sDescrX,1)=id q
 . . . . . if sLangX="DE"  if sLangDE="" d
 . . . . . . . s sLangDE="DE"
 . . . . . . s sDescrX=sT450a_"_de"
 . . . . . . s sDescrX=$zcvt(sDescrX,"u")
 . . . . . . s ^tmpEurovoc("MOSTT",sDescrX,1)=id q
 
 if cr>0 d  w !,cr," spracovanych viet obsahujucich hesla",!,"Faza 3: ukoncena OK"
 else  w !,"Faza 3: ukoncena NOT OK"
 q
]]></Implementation>
</Method>

<Method name="ParEV4">
<Description>
Triedy pre konverziu Par Eurovoc - tu je to len na ukazku
posledna verzia programov je v triede ParSEurovoc - viz.
C:\Delphi\cache\cdl\par\ParSEurovoc.rar </Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 ; xCommand4(Xcmd)	
 ;if sVersion=3 q
 w !!,"Faza 4: tvorba protokolu o zmenach novej verzie voci starej verzii Eurovocu.TestUnAuth sa neaktualizuje, iba sa vytvara protokol."
 
 
 n sOLDIO s sOLDIO=$io
 s ofi="d:\EV_Imp"_$r(999)_".txt"
 ;s ofi="d:\EV_Imp.txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 d xCommand41b
 d xCommand41a
 
 s nErrEvG=0, nErrEvH=0, nErrEvZ=0
 s nErrArlG=0, nErrArlH=0, nErrArlZ=0
 
 d xCommand42b
 d xCommand42a
 d xCommand4Sum
 
 q
 
xCommand41a
 use sOLDIO w ! ,"DESCR HESLA"
 use ofi w !
 
 w !,"Protokol o zmenách novej verzie oproti starej verzii Eurovocu    ",$zdt($h,4)
 w !,"     legenda: nová verzia=Eurovoc, stará verzia=TestUnAuth"
 w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM HESLA z Eurovocu v TestUnAuth"
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0,cNew99=0
 for  set id=$o(^tmpEurovoc("DESCR",id)) quit:id=""  do
 . ;if id '=5718 q
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . if $g(^tmpEurovoc("DESCR",id,99))=""  d
 . . w !,"NOVY deskriptor Eurovoc id="_id_" "_$c(34)_^tmpEurovoc("DESCR",id,11)_$c(34)
 . . s cNew99=cNew99+1 
 . else  d
 . .
 . . s idArl=$g(^tmpEurovoc("DESCR",id,98))
 . . s idArlT001=##class(MARC).getT001(idArl)
 . . if '##class(MARC).getDATAX(.handle,idArl) w !,"Error reading record by id="_id ztrap "EV2" q
 . . s sT250=##class(MARC).getTagX(.handle,"250")
 . . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . . s sDescrX=sT250a
 . . s sLangX=sT250y
 . . s sPos=11,sTyp="  ",cErr=""
 . . d xCommand4Protokol1

 . . s sT450=##class(MARC).getTagX(.handle,"450",-1) ;deskriptory cudzojazycne, nedeskriptory ceske
 . . s sLangEN="",sLangFR="",sLangDE=""
 . . s sDescrEN="",sDescrFR="",sDescrDE=""
 . . s sNeDescrEN="",sNeDescrFR="",sNeDescrDE="",sNeDescrCZ=""
 . . for i=1:1:..fc(sT450,$c(10)) d
 . . . s sT450a=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"a")
 . . . s sT450y=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"y")
 . . . s sDescrX=$zcvt(sT450a,"l")
 . . . s sLangX=sT450y
 . . . if sLangX="EN" d
 . . . . if sLangEN="" d
 . . . . . s sLangEN="EN",sDescrEN=sDescrX
 . . . . else  d
 . . . . . s sNeDescrEN=sNeDescrEN_"**"_sDescrX
 . . . if sLangX="FR" d
 . . . . if sLangFR="" d
 . . . . . s sLangFR="FR",sDescrFR=sDescrX
 . . . . else  d
 . . . . . s sNeDescrFR=sNeDescrFR_"**"_sDescrX
 . . . if sLangX="DE" d
 . . . . if sLangDE="" d
 . . . . . s sLangDE="DE",sDescrDE=sDescrX
 . . . . else  d
 . . . . . s sNeDescrDE=sNeDescrDE_"**"_sDescrX
 . . . if sLangX="CZ" d 
 . . . . s sNeDescrCZ=sNeDescrCZ_"**"_sDescrX

 . . s sPos=14,sTyp="  ",sLangX="EN", sDescrX=sDescrEN  d xCommand4Protokol1
 . . s sPos=17,sTyp="  ",sLangX="FR", sDescrX=sDescrFR  d xCommand4Protokol1
 . . s sPos=20,sTyp="  ",sLangX="DE", sDescrX=sDescrDE  d xCommand4Protokol1

 . . s sPos=13,sTyp="ne",sLangX="CZ", sDescrX=sNeDescrCZ  d xCommand4Protokol1
 . . s sPos=16,sTyp="ne",sLangX="EN", sDescrX=sNeDescrEN  d xCommand4Protokol1
 . . s sPos=19,sTyp="ne",sLangX="FR", sDescrX=sNeDescrFR  d xCommand4Protokol1
 . . s sPos=22,sTyp="ne",sLangX="DE", sDescrX=sNeDescrDE  d xCommand4Protokol1

 q
 
xCommand41b
 use sOLDIO w ! ,"TestUnAuth HESLA"
 use ofi w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM HESLA z TestUnAuth v Eurovocu" 
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0, cErr99=0, bIsiel=0
 for  set id=$o(^Lists("tmp",$j,id)) quit:id=""  do  
 . s bIsiel=1
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . s idArlT001=##class(MARC).getT001(id)
 . if '##class(MARC).getDATAX(.handle,id) w !,"Error reading record by id="_id ztrap "EV3" q
 . s sT250=##class(MARC).getTagX(.handle,"250")
 . s sTC99=##class(MARC).getTagX(.handle,"C99")
 . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . s sTC99a=##class(MARC).getSubTagStr(sTC99,"a")
 . ;if sTC99a'="" d  ;10.02.04 pb:
 . if (sTC99a'="") && (sT250y'="ID") && (sT250y'="NE") && (sT250y'="QU") d   ;* bez lokalnych hesiel
 . . if $g(^tmpEurovoc("DESCR",sTC99a,11))="" d 
 . . . w !,"VYMAZANY deskriptor Eurovoc id ",sTC99a,"=",$c(34),sT250a,$c(34),!,"       ","TestUnAuth id=",idArlT001
 . . . s cErr99=cErr99+1
 . . . 
 . . else  d
 . . . s sDescrX=sT250a
 . . . s sLangX=sT250y
 . . . s sPos=11,sTyp="  ",cErr=""
 . . . d xCommand4Protokol2
 . . . 
 . . . s sT450=##class(MARC).getTagX(.handle,"450",-1) ;deskriptory cudzojazycne, nedeskriptory ceske
 . . . s sLangEN="",sLangFR="",sLangDE=""
 . . . for i=1:1:..fc(sT450,$c(10)) d
 . . . . s sT450a=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"a")
 . . . . s sT450y=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"y")
 . . . . s sDescrX=sT450a
 . . . . s sLangX=sT450y
 . . . . s sPos=13,sTyp="  "
 . . . . ;w !,sLangX
 . . . . if sLangX="EN" d
 . . . . . if sLangEN="" d
 . . . . . . s sLangEN="EN"
 . . . . . . s sPos=14,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=16,sTyp="ne"
 . . . . if sLangX="FR" d
 . . . . . if sLangFR="" d
 . . . . . . s sLangFR="FR"
 . . . . . . s sPos=17,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=19,sTyp="ne"
 . . . . if sLangX="DE" d
 . . . . . if sLangDE="" d
 . . . . . . s sLangDE="DE"
 . . . . . . s sPos=20,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=22,sTyp="ne"
 . . . . if sLangX="CZ" d 
 . . . . . s sTyp="ne"
 . . . . .
 . . . . if sT450a'="" d xCommand4Protokol2
 if bIsiel=0 d 
 . use sOLDIO
 . w !,"Nemam data. Pred spustenim tejto etapy musis spustit od etapy 1 (pre 'terminal session')" 
 . ztrap "NODATA"

 q

xCommand42a
 ;10.02.04 pb; ***********************doplneny cely blok "HLADANIE VAZIEB" **********START***********
 use sOLDIO w ! ,"DESCR VAZBY "
 use ofi w !
 w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM VAZBY z Eurovocu do TestUnAuth"
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0
 for  set id=$o(^tmpEurovoc("DESCR",id)) quit:id=""  do
 .; if id '=1106 q
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . if $g(^tmpEurovoc("DESCR",id,99))'=""  d
 . . s idArl=$g(^tmpEurovoc("DESCR",id,98))
 . . s idArlT001=$g(^tmpEurovoc("DESCR",id,97))
 . . if '##class(MARC).getDATAX(.handle,idArl) w !,"Error reading record by id="_id ztrap "EV4" q
 . . 
 . . s sT550=##class(MARC).getTagX(.handle,"550",-1) ;vertikalne a horiz.vazby
 . . s sHore=$g(^tmpEurovoc("DESCR",id,4))
 . . s sDole=$g(^tmpEurovoc("DESCR",id,3))
 . . s sVedla=$g(^tmpEurovoc("DESCR",id,5))
 . . s sDescrEV=$g(^tmpEurovoc("DESCR",id,11))
 . . 
 . . s cErr=""
 . . for ix=1:1:..fc(sHore,"**") d  ;***************************vazby hore******************
 . . . s sPointerEV=$p(sHore,"**",ix)
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "g"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . if bNasiel="" d
 . . . . s nErrEvG=nErrEvG+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova BT vazba do ",sPointerEV," (",$c(34),$g(^tmpEurovoc("DESCR",sPointerEV,11)),$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . 
 . . 
 . . for ix=1:1:..fc(sDole,"**") d  ;***************************vazby dole******************
 . . . s sPointerEV=$p(sDole,"**",ix)
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "h"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . if bNasiel="" d
 . . . . s nErrEvH=nErrEvH+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova NT vazba do ",sPointerEV," (",$c(34),$g(^tmpEurovoc("DESCR",sPointerEV,11)),$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . 
 . . for ix=1:1:..fc(sVedla,"**") d  ;***************************vazby horizontalne******************
 . . . s sPointerEV=$p(sVedla,"**",ix)
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "z"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . if bNasiel="" d
 . . . . s nErrEvZ=nErrEvZ+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova RT vazba do ",sPointerEV," (",$c(34),$g(^tmpEurovoc("DESCR",sPointerEV,11)),$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",$g(^tmpEurovoc("DESCR",sPointerEV,97))

 q
 
xCommand42b
 use sOLDIO w ! ,"TestUnAuth VAZBY "
 use ofi w !
 w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM VAZBY z TestUnAuth do Eurovocu" 
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0, bIsiel=0
 for  set id=$o(^Lists("tmp",$j,id)) quit:id=""  do  
 . s bIsiel=1
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . s idArlT001=##class(MARC).getT001(id)
 . if '##class(MARC).getDATAX(.handle,id) w !,"Error reading record by id="_id ztrap "EV5" q
 . 
 . s sT250=##class(MARC).getTagX(.handle,"250")
 . s sTC99=##class(MARC).getTagX(.handle,"C99")
 . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . s sTC99a=##class(MARC).getSubTagStr(sTC99,"a")
 . 
 . s sT550=##class(MARC).getTagX(.handle,"550",-1) ;vertikalne a horiz.vazby
 . 
 . ;if sTC99a'="" d ;10.02.04 pb;
 . if (sTC99a'="") && (sT250y'="ID") && (sT250y'="NE") && (sT250y'="QU") d   ;* bez lokalnych hesiel
 . . if $g(^tmpEurovoc("DESCR",sTC99a,99))'="" d ;???
 . . . s sHore=$g(^tmpEurovoc("DESCR",sTC99a,4))
 . . . s sDole=$g(^tmpEurovoc("DESCR",sTC99a,3))
 . . . s sVedla=$g(^tmpEurovoc("DESCR",sTC99a,5))
 . . . s sDescrEV=$g(^tmpEurovoc("DESCR",sTC99a,11))
 
 . . . s cErr=""
 . . . for i=1:1:..fc(sT550,$c(10)) do
 . . . . if $l(sT550,$c(10))="" q
 . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . s sPointerARL=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . if "g"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sHore="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sHore,"**") q:bNasiel=1  do          ;***************************vazby hore**
 . . . . . . s sPointerEV=$p(sHore,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlG=nErrArlG+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena BT vazba do ",sPointerARL," (",$c(34),sDescrARL,$c(34),")"
 
 
 . . . . if "h"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sDole="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sDole,"**") q:bNasiel=1  do          ;***************************vazby dole**
 . . . . . . s sPointerEV=$p(sDole,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlH=nErrArlH+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena NT vazba do ",sPointerARL," (",$c(34),sDescrARL,$c(34),")"
 . . . . if "z"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sVedla="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sVedla,"**") q:bNasiel=1  do          ;***************************vazby horiz**
 . . . . . . s sPointerEV=$p(sVedla,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL))=sPointerEV  s bNasiel=1
 . . . . . . s sDescrARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlZ=nErrArlZ+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena RT vazba do ",sPointerARL," (",$c(34),sDescrARL,$c(34),")"
 if bIsiel=0 d 
 . use sOLDIO
 . w !,"Nemam data. Pred spustenim tejto etapy musis spustit od etapy 1 (pre 'terminal session')" 
 . ztrap "NODATA"
 ;10.02.04 pb; ***********************doplneny cely blok "HLADANIE VAZIEB" *******KONIEC***************

 q

xCommand4Sum
 w !!
 w !,"------------------------------------------------------------------------"
 w !,"Poèet NOVÝCH DESKRIPTOROV pod¾a novej verzie Eurovocu=",cNew99
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet VYMAZANÝCH DESKRIPTOROV pod¾a novej verzie Eurovocu=",cErr99
 w !
 w !,"------------------------------------------------------------------------"
 w !,"------------------------------------------------------------------------"
 w !,"Poèet NOVÝCH VAZIEB pod¾a novej verzie Eurovocu:"
 w !,"              BT (Broader Term - nadradeny termin) =",nErrEvG
 w !,"              NT (Narrow  Term - podradeny termin) =",nErrEvH
 w !,"              RT (Related Term - pribuzny termin)  =",nErrEvZ
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet VYMAZANÝCH VAZIEB pod¾a novej verzie Eurovocu:"
 w !,"              BT (Broader Term - nadradeny termin) =",nErrArlG
 w !,"              NT (Narrow  Term - podradeny termin) =",nErrArlH
 w !,"              RT (Related Term - pribuzny termin)  =",nErrArlZ
 w !
 w !,"------------------------------------------------------------------------"
 w !
 
 w !!,"Koniec protokolu               ", $zdt($h,4)
 close ofi
 
 use sOLDIO w !,"Fáza 4: ukonèená OK, protokol sa nachádza v súbore ",ofi
 
 q
 
 
xCommand4Protokol1
 if sDescrX="" q
 ;if $j>0 d
 ;w !,id,sPos,$g(^tmpEurovoc("DESCR",id,sPos)),!
 if $g(^tmpEurovoc("DESCR",id,sPos))'="" d
 . s sDescrEV=$g(^tmpEurovoc("DESCR",id,sPos))
 . s sDescrEV=$zcvt(sDescrEV,"L")
 .; w sDescrX,","
 . s sDescrX=$zcvt(sDescrX,"L")
 . ;w !,sDescrX,".=="
 . ;w sDescrEV,".",sDescrX,";",$l(sDescrEV,"**"),"%"
 . for i=1:1:..fc(sDescrEV,"**") d
 . . s sDescrEV1=$p(sDescrEV,"**",i)
 . . ;w "#",sDescrEV1,"#"
 . . if ##class(Util).locate(sDescrEV1,sDescrX,"**")=0 d
 . . . s cErr=cErr+1
 . . . if cErr=1 d 
 . . . . w !
 . . . else  w !,"   "
 . . . w "Eurovoc id=",id,": nenajdeny ",sLangX," ",sTyp,"deskriptor=",$c(34),sDescrEV1,$c(34)
 . . . if sTyp="  " d  w "  (",$c(34),sDescrX,$c(34),")","=OLD"
 . . . if cErr=1 w ";   TestUnAuth id=",idArlT001
 q

 
xCommand4Protokol2
 ;if $j>0 d
 if $g(^tmpEurovoc("DESCR",sTC99a,sPos))'="" d
 . s sDescrEV=$g(^tmpEurovoc("DESCR",sTC99a,sPos))
 . s sDescrEV=$zcvt(sDescrEV,"l")
 . s sDescrX=$zcvt(sDescrX,"l")
 . if ##class(Util).locate(sDescrX,sDescrEV,"**")=0 d
 . . s cErr=cErr+1
 . . if cErr=1 d 
 . . . w !
 . . else  w !,"   "
 . . w "TestUnAuth id=",idArlT001,": nenajdeny ",sLangX," ",sTyp,"deskriptor=",$c(34),sDescrX,$c(34)
 . . if sTyp="  " d  w "  (",$c(34),sDescrEV,$c(34),")","=NEW"
 q
]]></Implementation>
</Method>

<Method name="ParEV5">
<Description><![CDATA[
Triedy pre konverziu Par Eurovoc - tu je to len na ukazku
posledna verzia programov je v triede ParSEurovoc - viz.
C:\Delphi\cache\cdl\par\ParSEurovoc.rar 

28.10.04 rs; tato metoda je len ako vzor; zakomentovanie obsahu
             inak nejde zobrazit dokumentacia triedy - metoda
             je prilis dlha<br>]]></Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
	
	/*
 ; xCommand5(Xcmd)	
 w !!,"Faza 5: priprava dat TestUnAuth podla dat z Eurovocu a tvorba protokolu o zmenach novej verzie voci starej verzii Eurovocu. Aktualizuju sa iba pracovne databazy."
 n sOLDIO s sOLDIO=$io
  
 kill ^tmpEurovoc("REC") ;* kvoli opakovaniu konverzie v tom istom obdobi
 
 s ofi="d:\EV_Imp"_$r(999)_".txt"
 ;s ofi="d:\EV_Imp.txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 w !,"Protokol o zmenách novej verzie oproti starej verzii Eurovocu    ",$zdt($h,4)
 w !,"   Faza 5: priprava dat TestUnAuth podla dat z Eurovocu"
 w !,"     legenda: nová verzia=Eurovoc, stará verzia=TestUnAuth"
 w !
 
 s cNew99=0, cErr99=0, cNewPozn=0
  
 d xCommand51a
 d xCommand51b
 
 s nErrEvG=0, nErrEvH=0, nErrEvZ=0
 s nErrArlG=0, nErrArlH=0, nErrArlZ=0
 
 d xCommand52a
 d xCommand52b
 d xCommand53 ;* premostenie s mikrotezaurom
 d xCommand5Sum
 
 q
 
xCommand51a
 use sOLDIO w ! ,"DESCR HESLA (REC) "
 use ofi w !
 
  
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM HESLA z Eurovocu v TestUnAuth"
 w !,"------------------------------------------------------------------------"
 w !
 
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 
 s id="",c=0
 s sX=""
 for  set id=$o(^tmpEurovoc("DESCR",id)) quit:id=""  do
 . ;if id '=6892 q
 . ;if (id '=12) && (id '=3871) && (id '=406) q
 . ;if (id '=406) q
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . if $g(^tmpEurovoc("DESCR",id,99))=""  d
 . . w !,"NOVY deskriptor Eurovoc id="_id_" "_$c(34)_^tmpEurovoc("DESCR",id,11)_$c(34)
 . . s cNew99=cNew99+1 
 . . 
 . . ;**** ziskam nove t001
 . . s idArlT001=##class(MARC).PRIVATEassignNewT001("TestUnAuth","new")
 . . s ^tmpEurovoc("DESCR",id,87)=idArlT001
 . . 
 . . ;**** vytvorim tag U01. Nie az vo faze 6, teraz iba flag
 . . s ^tmpEurovoc("REC",idArlT001,"FLAG")="NEW"  ;*****  zaznam je novy
 . . ;s sX=$c(31)_"a"_sDatAkt_$c(31)_"d"_sDatAkt_$c(31)_"e"_"N"_$c(31)_"s"_"N"
 . . ;s ^tmpEurovoc("REC",idArlT001,"U01")=sX
 . . 
 . . ;* vytvorim nove DESKRIPTORY
 . . s sX="250    "_$c(31)_"a"_^tmpEurovoc("DESCR",id,11)
 . . if $g(^tmpEurovoc("DESCR",id,12))'="" s sX=sX_$c(31)_"x"_^tmpEurovoc("DESCR",id,12)
 . . s sX=sX_$c(31)_"y"_"CZ"_$c(31)_"9"_"D"
 . . s ^tmpEurovoc("REC",idArlT001,"250")=sX
 . . 
 . . s sX=""
 . . if $g(^tmpEurovoc("DESCR",id,14))'="" d  ;* EN deskriptor
 . . . s sX=          "450    "_$c(31)_"a"_$g(^tmpEurovoc("DESCR",id,14))
 . . . if $g(^tmpEurovoc("DESCR",id,15))'="" s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,15))
 . . . s sX=sX_$c(31)_"y"_"EN"_$c(31)_"9"_"D"
  . . 
 . . if $g(^tmpEurovoc("DESCR",id,17))'="" d  ;* FR deskriptor
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$g(^tmpEurovoc("DESCR",id,17))
 . . . if $g(^tmpEurovoc("DESCR",id,18))'="" s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,18))
 . . . s sX=sX_$c(31)_"y"_"FR"_$c(31)_"9"_"D"
 . . 
 . . if $g(^tmpEurovoc("DESCR",id,20))'="" d  ;* DE deskriptor
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$g(^tmpEurovoc("DESCR",id,20))
 . . . if $g(^tmpEurovoc("DESCR",id,21))'="" s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,21))
 . . . s sX=sX_$c(31)_"y"_"DE"_$c(31)_"9"_"D"
 . . 
 . . ;* vytvorim nove NEDESKRIPTORY
 . . for ix=1:1:..fc($g(^tmpEurovoc("DESCR",id,13)),"**") d
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$zcvt($p($g(^tmpEurovoc("DESCR",id,13)),"**",ix),"u")_$c(31)_"y"_"CZ"_$c(31)_"9"_"N"
 . .   
 . . for ix=1:1:..fc($g(^tmpEurovoc("DESCR",id,16)),"**") d
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$zcvt($p($g(^tmpEurovoc("DESCR",id,16)),"**",ix),"u")_$c(31)_"y"_"EN"_$c(31)_"9"_"N"
 . . 
 . . for ix=1:1:..fc($g(^tmpEurovoc("DESCR",id,19)),"**") d
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$zcvt($p($g(^tmpEurovoc("DESCR",id,19)),"**",ix),"u")_$c(31)_"y"_"FR"_$c(31)_"9"_"N"
 . . 
 . . for ix=1:1:..fc($g(^tmpEurovoc("DESCR",id,22)),"**") d
 . . . s sX=sX_$c(10)_"450    "_$c(31)_"a"_$zcvt($p($g(^tmpEurovoc("DESCR",id,22)),"**",ix),"u")_$c(31)_"y"_"DE"_$c(31)_"9"_"N"
 . . 
 . . if $e(sX,1,1)=$c(10) s sX=$e(sX,2,99999)
 . . s ^tmpEurovoc("REC",idArlT001,"450")=sX
 . . 
 . . s sX="C99    "_$c(31)_"a"_id
 . . s ^tmpEurovoc("REC",idArlT001,"C99")=sX
 . . 
 . else  d
 . .
 . . ;s sT450New="" ;* osetrene cez indiv.zapis pri kazdom vyskyte
 . . s idArl=$g(^tmpEurovoc("DESCR",id,98))
 . . s idArlT001=##class(MARC).getT001(idArl)
 . . 
 . . if '##class(MARC).getDATAX(.handle,idArl) w !,"Error reading record by id="_id ztrap "EV2" q
 . . s sT250=##class(MARC).getTagX(.handle,"250")
 . . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . . s sT250x=##class(MARC).getSubTagStr(sT250,"x") ;* stara hodnota sa ulozi do U02
 . . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . . s sDescrX=sT250a
 . . s sLangX=sT250y
 . . s sPos=11,sTyp="  ",cErr=""
 . . d xCommand5Protokol1
 . . 
 . . 
 . . s sT450=##class(MARC).getTagX(.handle,"450",-1) ;deskriptory cudzojazycne, nedeskriptory ceske
 . . s sLangEN="",sLangFR="",sLangDE=""
 . . s sDescrEN="",sDescrFR="",sDescrDE=""
 . . s sNeDescrEN="",sNeDescrFR="",sNeDescrDE="",sNeDescrCZ=""
 . . for i=1:1:..fc(sT450,$c(10)) d  ;* v cykle naplnit pracovne retazce z arl
 . . . s sT450a=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"a")
 . . . s sT450x=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"x")  ;* stara hodnota sa ulozi do U03
 . . . s sT450y=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"y")
 . . . s sDescrX=$zcvt(sT450a,"l")
 . . . s sLangX=sT450y
 . . . if sLangX="EN" d
 . . . . if sLangEN="" d
 . . . . . s sLangEN="EN",sDescrEN=sDescrX
 . . . . else  d
 . . . . . s sNeDescrEN=sNeDescrEN_"**"_sDescrX
 . . . if sLangX="FR" d
 . . . . if sLangFR="" d
 . . . . . s sLangFR="FR",sDescrFR=sDescrX
 . . . . else  d
 . . . . . s sNeDescrFR=sNeDescrFR_"**"_sDescrX
 . . . if sLangX="DE" d
 . . . . if sLangDE="" d
 . . . . . s sLangDE="DE",sDescrDE=sDescrX
 . . . . else  d
 . . . . . s sNeDescrDE=sNeDescrDE_"**"_sDescrX
 . . . if sLangX="CZ" d 
 . . . . s sNeDescrCZ=sNeDescrCZ_"**"_sDescrX
 . . ;* TESTY
 . . s sPos=14,sTyp="  ",sLangX="EN", sDescrX=sDescrEN  d xCommand5Protokol1
 . . s sPos=17,sTyp="  ",sLangX="FR", sDescrX=sDescrFR  d xCommand5Protokol1
 . . s sPos=20,sTyp="  ",sLangX="DE", sDescrX=sDescrDE  d xCommand5Protokol1
 . . s sPos=13,sTyp="ne",sLangX="CZ", sDescrX=sNeDescrCZ  d xCommand5Protokol1
 . . s sPos=16,sTyp="ne",sLangX="EN", sDescrX=sNeDescrEN  d xCommand5Protokol1
 . . s sPos=19,sTyp="ne",sLangX="FR", sDescrX=sNeDescrFR  d xCommand5Protokol1
 . . s sPos=22,sTyp="ne",sLangX="DE", sDescrX=sNeDescrDE  d xCommand5Protokol1
 . . 
 . .;if $e(sT450New,1,1)=$c(10) s sT450New=$e(sT450New,2,9999) ;* osetrene cez indiv.zapis pri kazdom vyskyte
 . .;s ^tmpEurovoc("REC",idArlT001,"450")=sT450New
 
 q
  
xCommand51b
 use sOLDIO w ! ,"TestUnAuth HESLA (REC) "
 use ofi w !
 
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM HESLA z TestUnAuth v Eurovocu" 
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0, bIsiel=0
 for  set id=$o(^Lists("tmp",$j,id)) quit:id=""  do
 . s bIsiel=1
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . s idArlT001=##class(MARC).getT001(id)
 . if '##class(MARC).getDATAX(.handle,id) w !,"Error reading record by id="_id ztrap "EV3" q
 . 
 . ;if (id '=5350305) && (id '=5346402) && (id '=5346396) q
 . ;if (id '=5346396) q
 . 
 . s sT250=##class(MARC).getTagX(.handle,"250")
 . s sTC99=##class(MARC).getTagX(.handle,"C99")
 .
 . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . s sT250x=##class(MARC).getSubTagStr(sT250,"x")
 . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . s sTC99a=##class(MARC).getSubTagStr(sTC99,"a")
 . 
 . ;if sTC99a'="" d  ;10.02.04 pb:
 . if (sTC99a'="") && (sT250y'="ID") && (sT250y'="NE") && (sT250y'="QU") d   ;* bez lokalnych hesiel
 . . s sT100=##class(MARC).getTagX(.handle,"100",-1)
 . . s sT150=##class(MARC).getTagX(.handle,"150",-1)
 . . s sT152=##class(MARC).getTagX(.handle,"152",-1)
 . . s sT300=##class(MARC).getTagX(.handle,"300",-1)
 . . s sT301=##class(MARC).getTagX(.handle,"301",-1)
 . . s sT801=##class(MARC).getTagX(.handle,"801",-1)
 . . s sT999=##class(MARC).getTagX(.handle,"999",-1)
 . .
 . . s ^tmpEurovoc("REC",idArlT001,"100")=sT100
 . . s ^tmpEurovoc("REC",idArlT001,"150")=sT150
 . . s ^tmpEurovoc("REC",idArlT001,"152")=sT152
 . . if sT300'="" s ^tmpEurovoc("REC",idArlT001,"300")=sT300
 . . if sT301'="" s ^tmpEurovoc("REC",idArlT001,"300")=sT301
 . . s ^tmpEurovoc("REC",idArlT001,"801")=sT801
 . . s ^tmpEurovoc("REC",idArlT001,"999")=sT999
 . . s ^tmpEurovoc("REC",idArlT001,"C99")=sTC99
 . . 
 . . if $g(^tmpEurovoc("DESCR",sTC99a,11))="" d 
 . . . w !,"VYMAZANY deskriptor Eurovoc id ",sTC99a,"=",$c(34),sT250a,$c(34),!,"       ","TestUnAuth id=",idArlT001
 . . . s cErr99=cErr99+1
 . . . ; zapisem flag. Dokoncim vo faze 6 tak, ze presuniem 250,450,550 do U05,U06,U07
 . . . s ^tmpEurovoc("REC",idArlT001,"FLAG")="DEL"  ;*****  zaznam je vymazany
 . . . s sT450=##class(MARC).getTagX(.handle,"450",-1)
 . . . s sT550=##class(MARC).getTagX(.handle,"550",-1)
 . . . 
 . . . 
 . . . s sT250=##class(User.Util).strswap(sT250,"250    ","U05    ")
 . . . s sT450=##class(User.Util).strswap(sT450,"450    ","U06    ")
 . . . s sT550=##class(User.Util).strswap(sT550,"550    ","U07    ")
 . . . 
 . . . 
 . . . ;* tagy U05 az U07 nebudu
 . . . ;s ^tmpEurovoc("REC",idArlT001,"U05")=sT250
 . . . ;s ^tmpEurovoc("REC",idArlT001,"U06")=sT450
 . . . ;s ^tmpEurovoc("REC",idArlT001,"U07")=sT550
 . . . 
 . . else  d
 . . . s sDescrX=sT250a
 . . . s sLangX=sT250y
 . . . s sPos=11,sTyp="  ",cErr=""
 . . . d xCommand5Protokol2
 . . . 
 . . . s sT450=##class(MARC).getTagX(.handle,"450",-1) ;deskriptory cudzojazycne, nedeskriptory ceske
 . . . s sLangEN="",sLangFR="",sLangDE=""
 . . . for i=1:1:..fc(sT450,$c(10)) d
 . . . . s sT450a=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"a")
 . . . . s sT450x=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"x")
 . . . . s sT450y=##class(MARC).getSubTagStr($p(sT450,$c(10),i),"y")
 . . . . s sDescrX=sT450a
 . . . . s sLangX=sT450y
 . . . . s sPos=13,sTyp="  "
 . . . . ;w !,sLangX
 . . . . if sLangX="EN" d
 . . . . . if sLangEN="" d
 . . . . . . s sLangEN="EN"
 . . . . . . s sPos=14,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=16,sTyp="ne"
 . . . . if sLangX="FR" d
 . . . . . if sLangFR="" d
 . . . . . . s sLangFR="FR"
 . . . . . . s sPos=17,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=19,sTyp="ne"
 . . . . if sLangX="DE" d
 . . . . . if sLangDE="" d
 . . . . . . s sLangDE="DE"
 . . . . . . s sPos=20,sTyp="  "
 . . . . . else  d
 . . . . . . s sPos=22,sTyp="ne"
 . . . . if sLangX="CZ" d 
 . . . . . s sTyp="ne"
 . . . . if sT450a'="" d xCommand5Protokol2

 if bIsiel=0 d
 .  use sOLDIO
 . w !,"Nemam data. Pred spustenim tejto etapy musis spustit od etapy 1 (pre 'terminal session')" 
 . ztrap "NODATA"

 q
 */
]]></Implementation>
</Method>

<Method name="ParEV5xCommand52a">
<Description><![CDATA[
28.10.04 rs; tato metoda je len ako vzor; zakomentovanie obsahu
             inak nejde zobrazit dokumentacia triedy - metoda
             je prilis dlha<br>
[Previously private]]]></Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
	/*
 ;10.02.04 pb; ***********************doplneny cely blok "HLADANIE VAZIEB" **********START***********
 use sOLDIO w ! ,"DESCR VAZBY (REC) "
 use ofi w !
 
 w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM VAZBY z Eurovocu do TestUnAuth"
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0

 for  set id=$o(^tmpEurovoc("DESCR",id)) quit:id=""  do
 . ; if id '=1106 q
 . ;if (id '=12) && (id '=3871) && (id '=406) q
 . ;if (id '=406) q
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi
 
 . if $g(^tmpEurovoc("DESCR",id,99))'=""  d
 . . s idArl=$g(^tmpEurovoc("DESCR",id,98))
 . . s idArlT001=$g(^tmpEurovoc("DESCR",id,97))
 . . if '##class(MARC).getDATAX(.handle,idArl) w !,"Error reading record by id="_id ztrap "EV4" q
 . . s sT550=##class(MARC).getTagX(.handle,"550",-1) ;vertikalne a horiz.vazby
 . else  d
 . . s idArlT001=$g(^tmpEurovoc("DESCR",id,87))
 . . s sT550=""
 . d 
 . . s sHore=$g(^tmpEurovoc("DESCR",id,4))
 . . s sDole=$g(^tmpEurovoc("DESCR",id,3))
 . . s sVedla=$g(^tmpEurovoc("DESCR",id,5))
 . . s sDescrEV=$g(^tmpEurovoc("DESCR",id,11))
 . . 
 . . s cErr="", sStatus="N", sVazba="BT"
 . . for ix=1:1:..fc(sHore,"**") d  ;***************************vazby hore******************
 . . . s sPointerEV=$p(sHore,"**",ix)
 . . . s sDescrX=$g(^tmpEurovoc("DESCR",sPointerEV,11))
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "g"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL0=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . if bNasiel="" d
 . . . . s nErrEvG=nErrEvG+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . . . if sPointerARL0="" s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,87)) ;* novy record
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova BT vazba do ",sPointerEV," (",$c(34),sDescrX,$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",sPointerARL0
 . . . . d xCommand5Upd550
 . . . else  d xCommand5Put550
 . . 
 . . s sVazba="NT"
 . . for ix=1:1:..fc(sDole,"**") d  ;***************************vazby dole******************
 . . . s sPointerEV=$p(sDole,"**",ix)
 . . . s sDescrX=$g(^tmpEurovoc("DESCR",sPointerEV,11))
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "h"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL0=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . if bNasiel="" d
 . . . . s nErrEvH=nErrEvH+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . . . if sPointerARL0="" s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,87)) ;* novy record
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova NT vazba do ",sPointerEV," (",$c(34),sDescrX,$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",sPointerARL0
 . . . . d xCommand5Upd550
 . . . else  d xCommand5Put550
 
 . . 
 . . s sVazba="RT"
 . . for ix=1:1:..fc(sVedla,"**") d  ;***************************vazby horizontalne******************
 . . . s sPointerEV=$p(sVedla,"**",ix)
 . . . s sDescrX=$g(^tmpEurovoc("DESCR",sPointerEV,11))
 . . . s bNasiel="", sPointerARL=""
 . . . for i=1:1:..fc(sT550,$c(10)) q:bNasiel=1  do
 . . . . if "z"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . . s sPointerARL0=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . if bNasiel="" d
 . . . . s nErrEvZ=nErrEvZ+1, cErr=cErr+1
 . . . . if cErr=1 d  w !
 . . . . else  w !,"   "
 . . . . s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . . . if sPointerARL0="" s sPointerARL0=$g(^tmpEurovoc("DESCR",sPointerEV,87)) ;* novy record
 . . . . w "Eurovoc id=",id," (",$c(34),sDescrEV,$c(34),")",": nova RT vazba do ",sPointerEV," (",$c(34),sDescrX,$c(34),")"
 . . . . w "; v ARL z ",idArlT001," do ",sPointerARL0
 . . . . d xCommand5Upd550
 . . . else  d xCommand5Put550
 
 q
 
xCommand52b 
 use sOLDIO w ! ,"TestUnAuth VAZBY (REC) "
 use ofi w !
 
 w !
 w !,"------------------------------------------------------------------------"
 w !,"HLADAM VAZBY z TestUnAuth do Eurovocu" 
 w !,"------------------------------------------------------------------------"
 w !
 
 s id="",c=0, bIsiel=0
 
 for  set id=$o(^Lists("tmp",$j,id)) quit:id=""  do  
 . s bIsiel=1
 . s c=c+1
 . if c=200 d  use sOLDIO w "." s c=0 use ofi

 . s idArlT001=##class(MARC).getT001(id)
 . if '##class(MARC).getDATAX(.handle,id) w !,"Error reading record by id="_id ztrap "EV5" q
 . 
 . ;if (id '=5350305) && (id '=5346402) && (id '=5346396) q
 . ;if (id '=5346396) q
 . 
 . s sT250=##class(MARC).getTagX(.handle,"250")
 . s sTC99=##class(MARC).getTagX(.handle,"C99")
 . s sT250a=##class(MARC).getSubTagStr(sT250,"a")
 . s sT250y=##class(MARC).getSubTagStr(sT250,"y")
 . s sTC99a=##class(MARC).getSubTagStr(sTC99,"a")
 . 
 . s sT550=##class(MARC).getTagX(.handle,"550",-1) ;vertikalne a horiz.vazby
 . 
 . ;if sTC99a'="" d ;10.02.04 pb;
 . if (sTC99a'="") && (sT250y'="ID") && (sT250y'="NE") && (sT250y'="QU") d   ;* bez lokalnych hesiel
 . . if $g(^tmpEurovoc("DESCR",sTC99a,99))'="" d ;???
 . . . s sHore=$g(^tmpEurovoc("DESCR",sTC99a,4))
 . . . s sDole=$g(^tmpEurovoc("DESCR",sTC99a,3))
 . . . s sVedla=$g(^tmpEurovoc("DESCR",sTC99a,5))
 . . . s sDescrEV=$g(^tmpEurovoc("DESCR",sTC99a,11))
 
 . . . s cErr="", sStatus="D", sVazba="BT"
 . . . for i=1:1:..fc(sT550,$c(10)) do
 . . . . s sDescrX=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"a")
 . . . . s sPointerARL=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"3")
 . . . . s sPointerARL0=$p(sPointerARL,"*",2)  ; l_uc_entry*0123456
 . . . . if "g"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sHore="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sHore,"**") q:bNasiel=1  do          ;***************************vazby hore**
 . . . . . . s sPointerEV=$p(sHore,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlG=nErrArlG+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena BT vazba do ",sPointerARL0," (",$c(34),sDescrX,$c(34),")"
 . . . . . . d xCommand5DelU04

 . . . . s sVazba="NT"
 . . . . if "h"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sDole="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sDole,"**") q:bNasiel=1  do          ;***************************vazby dole**
 . . . . . . s sPointerEV=$p(sDole,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlH=nErrArlH+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena NT vazba do ",sPointerARL0," (",$c(34),sDescrX,$c(34),")"
 . . . . . . d xCommand5DelU04
  
 . . . . s sVazba="RT"
 . . . . if "z"=##class(MARC).getSubTagStr($p(sT550,$c(10),i),"5") d  ;*zhodny smer
 . . . . . if sVedla="" q
 . . . . . s bNasiel=""
 . . . . . for ix=1:1:..fc(sVedla,"**") q:bNasiel=1  do          ;***************************vazby horiz**
 . . . . . . s sPointerEV=$p(sVedla,"**",ix)
 . . . . . . if $g(^tmpEurovoc("MOSTI","T001",sPointerARL0))=sPointerEV  s bNasiel=1
 . . . . .
 . . . . . if bNasiel="" d
 . . . . . . s nErrArlZ=nErrArlZ+1, cErr=cErr+1
 . . . . . . if cErr=1 d  w !
 . . . . . . else  w !,"   "
 . . . . . . w "TestUnAuth id=",idArlT001," (",$c(34),sT250a,$c(34),")",": zrusena RT vazba do ",sPointerARL0," (",$c(34),sDescrX,$c(34),")"
 . . . . . . d xCommand5DelU04
 if bIsiel=0 d  
 . use sOLDIO
 . w !,"Nemam data. Pred spustenim tejto etapy musis spustit od etapy 1 (pre 'terminal session')" 
 . ztrap "NODATA"
  
 

 ;10.02.04 pb; ***********************doplneny cely blok "HLADANIE VAZIEB" *******KONIEC***************
 
 q
 
xCommand53 ;* premostenie s mikrotezaurom
 use sOLDIO w ! ,"Premostenie s mikrotezaurom (REC) "
 use ofi w !
 
 s id=""
 for  set id=$o(^tmpEurovoc("THES",id)) quit:id=""  do
 . s sT250="", sT450="", sT550=""
 . if ^tmpEurovoc("THES",id,1)'="" d
 . . if sT250'="" s sT250=sT250_$c(10)
 . . s sT250=sT250_"250    "_$c(31)_"a"_$g(^tmpEurovoc("THES",id,1))_$c(31)_"y"_"CZ"_$c(31)_"9"_"D"
 . 
 . if ^tmpEurovoc("THES",id,2)'="" d
 . . if sT450'="" s sT450=sT450_$c(10)
 . . s sT450=sT450_"450    "_$c(31)_"a"_$g(^tmpEurovoc("THES",id,2))_$c(31)_"y"_"EN"_$c(31)_"9"_"D"
 .
 . if ^tmpEurovoc("THES",id,3)'="" d
 . . if sT450'="" s sT450=sT450_$c(10)
 . . s sT450=sT450_"450    "_$c(31)_"a"_$g(^tmpEurovoc("THES",id,3))_$c(31)_"y"_"FR"_$c(31)_"9"_"D"
 .
 . if ^tmpEurovoc("THES",id,4)'="" d
 . . if sT450'="" s sT450=sT450_$c(10)
 . . s sT450=sT450_"450    "_$c(31)_"a"_$g(^tmpEurovoc("THES",id,4))_$c(31)_"y"_"DE"_$c(31)_"9"_"D"
 .
 . s sDole=$g(^tmpEurovoc("THES",id,13))
 . for ix=1:1:..fc(sDole,"**") d  ;***************************vazby dole z mikro THES******************
 . . s sPointerEV=$p(sDole,"**",ix)
 . . if sT550'="" s sT550=sT550_$c(10)
 . . s sT550=sT550_"550    "_$c(31)_"a"_$g(^tmpEurovoc("DESCR",sPointerEV,11))_$c(31)_"y"_"CZ"
 . . if $g(^tmpEurovoc("DESCR",sPointerEV,97))'="" d
 . . . s sPointerDole=$g(^tmpEurovoc("DESCR",sPointerEV,97))
 . . else  s sPointerDole=$g(^tmpEurovoc("DESCR",sPointerEV,87))
 . . s sT550=sT550_$c(31)_"3"_"l_un_entry*"_sPointerDole
 . . s sT550=sT550_$c(31)_"5"_"h"
 . .
 . s idArlT001=##class(MARC).PRIVATEassignNewT001("TestUnAuth","new") 
 . s ^tmpEurovoc("REC",idArlT001,"250")=sT250
 . s ^tmpEurovoc("REC",idArlT001,"450")=sT450
 . s ^tmpEurovoc("REC",idArlT001,"550")=sT550
 . s ^tmpEurovoc("REC",idArlT001,"C99")="C99    "_$c(31)_"a"_id
 . s ^tmpEurovoc("REC",idArlT001,"FLAG")="NEW"
 . 
 . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U01"))  ;* aby neprepisal z minulych konverzii
 . if sUzol'="" d
 . . s sUzol=##class(MARC).setSubTagStr(sUzol,$c(31)_"t") ;vymaz, ak uz je
 . . s sUzol=##class(MARC).setSubTagStr(sUzol,$c(31)_"t"_"TOP")
 . else  s sUzol="U01    "_$c(31)_"t"_"TOP"
 . s ^tmpEurovoc("REC",idArlT001,"U01")=sUzol
 . 
 . 
 q
 
xCommand5Sum 
 w !!
 w !,"------------------------------------------------------------------------"
 w !,"Poèet NOVÝCH DESKRIPTOROV pod¾a novej verzie Eurovocu =",cNew99
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet VYMAZANÝCH DESKRIPTOROV pod¾a novej verzie Eurovocu =",cErr99
 w !
 w !,"------------------------------------------------------------------------------------------------"
 w !,"Poèet AKTUALIZOVANÝCH POZNÁMOK pod¾a novej verzie Eurovocu pre vetky jazykové verzie =",cNewPozn
 w !
 w !,"------------------------------------------------------------------------------------------------"
 w !,"------------------------------------------------------------------------------------------------"
 w !,"Poèet NOVÝCH VAZIEB pod¾a novej verzie Eurovocu:"
 w !,"              BT (Broader Term - nadradeny termin) =",nErrEvG
 w !,"              NT (Narrow  Term - podradeny termin) =",nErrEvH
 w !,"              RT (Related Term - pribuzny termin)  =",nErrEvZ
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet VYMAZANÝCH VAZIEB pod¾a novej verzie Eurovocu:"
 w !,"              BT (Broader Term - nadradeny termin) =",nErrArlG
 w !,"              NT (Narrow  Term - podradeny termin) =",nErrArlH
 w !,"              RT (Related Term - pribuzny termin)  =",nErrArlZ
 w !
 w !,"------------------------------------------------------------------------"
 w !
 
 w !!,"Koniec protokolu               ", $zdt($h,4)
 close ofi
 
 use sOLDIO w !,"Fáza 5: ukonèená OK, protokol sa nachádza v súbore ",ofi
 
 q
 
 
xCommand5Protokol1
 if sDescrX="" q
 ;if $j>0 d
 ;w !,id,sPos,$g(^tmpEurovoc("DESCR",id,sPos)),!
 if $g(^tmpEurovoc("DESCR",id,sPos))'="" d
 . s sDescrEVOri=$g(^tmpEurovoc("DESCR",id,sPos))
 . s sDescrEV=$zcvt(sDescrEVOri,"L")
 .; w sDescrX,","
 . s sDescrX=$zcvt(sDescrX,"L")
 . ;w !,sDescrX,".=="
 . ;w sDescrEV,".",sDescrX,";",$l(sDescrEV,"**"),"%"
 . for i=1:1:..fc(sDescrEV,"**") d
 . . s sDescrEV1=$p(sDescrEV,"**",i)
 . . s sDescrEV1Ori=$p(sDescrEVOri,"**",i)
 . . ;w "#",sDescrEV1,"#"
 . . 
 . . if sPos=11 d 
 . . . s sTx50x=sT250x
 . . else  s sTx50x=sT450x
 . . s sPoznEV=$g(^tmpEurovoc("DESCR",id,sPos+1))
 . . s bSN=""
 . . if (sTx50x'=sPoznEV) && (sTyp="  ") s bSN=1
 . . s bNewDescr=""
 . . if ##class(Util).locate(sDescrEV1,sDescrX,"**")=0  s bNewDescr=1
 . . 
 . . if (bNewDescr=1) || (bSN=1)  d
 . . . ;* nenasiel= novy descr/nedescr alebo zmena poznamky = status UPD
 . . .
 . . . s cErr=cErr+1
 . . . if cErr=1 d 
 . . . . w !
 . . . else  w !,"   "
 . . . if bNewDescr=1 d
 . . . . w "Eurovoc id=",id,": nenajdeny ",sLangX," ",sTyp,"deskriptor=",$c(34),sDescrEV1Ori,$c(34)
 . . . . if sTyp="  " d  w "  (",$c(34),sDescrX,$c(34),")","=OLD"
 . . . . if cErr=1 w ";   TestUnAuth id=",idArlT001
 . . . if bSN=1 d
 . . . . w "Eurovoc id=",id,": nenajdena ",sLangX," ","poznamka=",$c(34),sPoznEV,$c(34)
 . . . . if sTyp="  " d  w "  (",$c(34),sTx50x,$c(34),")","=OLD"
 . . . . if cErr=1 w ";   TestUnAuth id=",idArlT001
 . . . . s cNewPozn=cNewPozn+1
 . . . d xCommand5Upd   ;*  novy retazec descr/nedescr; aktualizovat Uxx tagy, vytvorit nanovo t250,450
 . . else  d xCommand5Put ;*  nezmeneny retazec descr/nedescr; vytvorit nanovo t250,450
 q

 
xCommand5Protokol2
 ;if $j>0 d
 if $g(^tmpEurovoc("DESCR",sTC99a,sPos))'="" d
 . s sDescrEV=$g(^tmpEurovoc("DESCR",sTC99a,sPos))
 . s sDescrEV=$zcvt(sDescrEV,"l")
 . s sDescrXOri=sDescrX
 . s sDescrX=$zcvt(sDescrX,"l")
 . . 
 . ;w !!,sDescrX,"==",sDescrEV,";"
 . 
 . if ##class(Util).locate(sDescrX,sDescrEV,"**")=0 d
 . . s cErr=cErr+1
 . . if cErr=1 d 
 . . . w !
 . . else  w !,"   "
 . . w "TestUnAuth id=",idArlT001,": nenajdeny ",sLangX," ",sTyp,"deskriptor=",$c(34),sDescrX,$c(34)
 . . if sTyp="  " d  w "  (",$c(34),sDescrEVOri,$c(34),")","=NEW"
 . . 
 . . ;* ak je to deskriptor, je to uz vyriesene z porovnania EV do ARL
 . . ;* treba osetrit iba nenajdeny NEdeskriptor = vymazany NEdeskriptor
 . . d xCommand5DelU03       ;*  aktualizovat Uxx tagy zapis vymazu do U03
 . . ;d xCommand5Upd neuspesny pokus otocit poradie vypisu
 . ;else  d xCommand5Put neuspesny pokus otocit poradie vypisu
 q
  
 
xCommand5Upd
 ;w !!,"***********xCommand5Upd***********"
 s ^tmpEurovoc("REC",idArlT001,"FLAG")="UPD"  ;*****  zaznam bol aktualizovany
 
 n sX
 if sTyp="  " d ;* DESKRIPTOR
 . s sX="U02    "_$c(31)_"a"_sDescrX_$c(31)_"d"_sDatAkt_$c(31)_"s"_"U" ;* UPDATED
 . if sT250x'="" s sX=sX_$c(31)_"x"_sT250x ;* stara hodnota poznamky
 . s sX=sX_$c(31)_"y"_sLangX
 
 . ;* U02 nebude
 . ;s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U02"))  ;* aby neprepisal z minulych konverzii
 . ;if sUzol'="" s sUzol=sUzol_$c(10)
 . ;s sUzol=sUzol_sX
 . ;s ^tmpEurovoc("REC",idArlT001,"U02")=sUzol
 
 . s sX=""
 . if sLangX="CZ" d  s sX="250    "
 . else  s sX="450    "
 . s sX=sX_$c(31)_"a"_sDescrEV1Ori
 . if $g(^tmpEurovoc("DESCR",id,sPos+1))'="" s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,sPos+1)) ;*sn(poznamky)
 . s sX=sX_$c(31)_"y"_sLangX_$c(31)_"9"_"D"
 . if $e(sX,1,3)="250" s ^tmpEurovoc("REC",idArlT001,"250")=sX
 . 
 . ;if $e(sX,1,3)="450" s sT450New=sT450New_$c(10)_sX
 . if $e(sX,1,3)="450" d
 . . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"450"))
 . . if sUzol'="" s sUzol=sUzol_$c(10)
 . . s sUzol=sUzol_sX
 . . s ^tmpEurovoc("REC",idArlT001,"450")=sUzol
 . 
 . q

 if sTyp="ne" d ;* NEDESKRIPTOR
 . s sX="U03    "_$c(31)_"a"_sDescrEV1Ori_$c(31)_"d"_sDatAkt_$c(31)_"s"_"N" ;* NEW
 . if sT450x'="" s sX=sX_$c(31)_"x"_sT450x  ;* stara hodnota poznamky
 . s sX=sX_$c(31)_"y"_sLangX
 
 . ;* U03 nebude
 . ;s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U03"))  ;* aby neprepisal z minulych konverzii
 . ;if sUzol'="" s sUzol=sUzol_$c(10)
 . ;s sUzol=sUzol_sX
 . ;s ^tmpEurovoc("REC",idArlT001,"U03")=sUzol
 
 . s sX="450    "
 . s sX=sX_$c(31)_"a"_$zcvt(sDescrEV1Ori,"u")
 . s sX=sX_$c(31)_"y"_sLangX_$c(31)_"9"_"N"
 . 
 . ;s sT450New=sT450New_$c(10)_sX 
 . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"450"))
 . if sUzol'="" s sUzol=sUzol_$c(10)
 . s sUzol=sUzol_sX
 . s ^tmpEurovoc("REC",idArlT001,"450")=sUzol
 
 q
 
xCommand5Put
 ;w !!,"***********xCommand5Put***********","sTyp=",sTyp,"...",sLangX,",,,","sDescrEV1Ori=",sDescrEV1Ori,";;;"
 
 s sUzol=$g(^tmpEurovoc("REC",idArlT001,"FLAG"))
 if sUzol="" s ^tmpEurovoc("REC",idArlT001,"FLAG")="READ"  ;**** ak este nie je oznaceny, bude oznaceny
 
 if sTyp="  " d ;* DESKRIPTOR
 . s sX=""
 . if sLangX="CZ" d  s sX="250    "
 . else  s sX="450    "
 . s sX=sX_$c(31)_"a"_sDescrEV1Ori
 . if $g(^tmpEurovoc("DESCR",id,sPos+1)) s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,sPos+1)) ;*sn(poznamky)
 . s sX=sX_$c(31)_"y"_sLangX_$c(31)_"9"_"D"
 . ;w !,$e(sX,1,3)
 . if $e(sX,1,3)="250" s ^tmpEurovoc("REC",idArlT001,"250")=sX
 . 
 . ;if $e(sX,1,3)="450" s sT450New=sT450New_$c(10)_sX
 . if $e(sX,1,3)="450" d
 . . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"450"))
 . . if sUzol'="" s sUzol=sUzol_$c(10)
 . . s sUzol=sUzol_sX
 . . s ^tmpEurovoc("REC",idArlT001,"450")=sUzol
 . q

 if sTyp="ne" d ;* NEDESKRIPTOR
 . s sX="450    "
 . s sX=sX_$c(31)_"a"_$zcvt(sDescrEV1Ori,"u")
 . if $g(^tmpEurovoc("DESCR",id,sPos+1)) s sX=sX_$c(31)_"x"_$g(^tmpEurovoc("DESCR",id,sPos+1)) ;*sn(poznamky)
 . s sX=sX_$c(31)_"y"_sLangX_$c(31)_"9"_"N"
 . 
 . ;s sT450New=sT450New_$c(10)_sX 
 . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"450"))
 . if sUzol'="" s sUzol=sUzol_$c(10)
 . s sUzol=sUzol_sX
 . s ^tmpEurovoc("REC",idArlT001,"450")=sUzol

 q
  
xCommand5DelU03
 s ^tmpEurovoc("REC",idArlT001,"FLAG")="UPD"  ;*******  zaznam bol aktualizovany
 
 if sTyp="ne" d
 . s sX="U03    "_$c(31)_"a"_sDescrXOri_$c(31)_"d"_sDatAkt_$c(31)_"s"_"D" ;* DELETED
 . s sX=sX_$c(31)_"y"_sLangX
 
 . ;* U03 nebude
 . ;s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U03"))  ;* aby neprepisal z minulych konverzii
 . ;if sUzol'="" s sUzol=sUzol_$c(10)
 . ;s sUzol=sUzol_sX
 . ;s ^tmpEurovoc("REC",idArlT001,"U03")=sUzol
 q
 
xCommand5Upd550
 d
 . if sVazba="BT" s sT5505="g" q
 . if sVazba="NT" s sT5505="h" q
 . if sVazba="RT" s sT5505="z" q
 . s sT5505="" q
 
 if $g(^tmpEurovoc("DESCR",id,87))="" d  ;* nie je to novy zaznam (ten nema U04 ani status UPD)
 . s ^tmpEurovoc("REC",idArlT001,"FLAG")="UPD"  ;****  zaznam bol aktualizovany
 
 .;w !!,"***********xCommand5Upd550***********",idArlT001,"''",sPointerARL0,"....",sDescrX,",,,,",sVazba,";;;;",sStatus
 . s sX="U04    "_$c(31)_"a"_sDescrX_$c(31)_"d"_sDatAkt_$c(31)_"s"_sStatus ;* NEW/DELETE
 . s sX=sX_$c(31)_"v"_sVazba
 . s sX=sX_$c(31)_"y"_"CZ"
 . s sX=sX_$c(31)_"3"_"l_un_entry*"_sPointerARL0
 . s sX=sX_$c(31)_"5"_sT5505
  
 . ;* U04 nebude
 . ;s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U04"))  ;* aby neprepisal z minulych konverzii
 . ;if sUzol'="" s sUzol=sUzol_$c(10)
 . ;s sUzol=sUzol_sX
 . ;s ^tmpEurovoc("REC",idArlT001,"U04")=sUzol
 
 
 if sStatus="N" d
 . s sX="550    "
 . s sX=sX_$c(31)_"a"_sDescrX
 . s sX=sX_$c(31)_"y"_"CZ"
 . s sX=sX_$c(31)_"3"_"l_un_entry*"_sPointerARL0
 . s sX=sX_$c(31)_"5"_sT5505
  
 . s sUzol=$g(^tmpEurovoc("REC",idArlT001,"550"))  ;* aby neprepisal z minulych konverzii
 . if sUzol'="" s sUzol=sUzol_$c(10)
 . s sUzol=sUzol_sX
 . s ^tmpEurovoc("REC",idArlT001,"550")=sUzol
 . ;w !,"Uzol=",sUzol 
 q

xCommand5Put550
 s sUzol=$g(^tmpEurovoc("REC",idArlT001,"FLAG"))
 if sUzol="" s ^tmpEurovoc("REC",idArlT001,"FLAG")="READ"  ;**** ak este nie je oznaceny, oznacit ako precitany
 
 ;w !!,"***********xCommand5Put550***********",idArlT001,"''",sPointerARL0,"....",sDescrX,",,,,",sVazba,";;;;",sStatus
 s sX="550    "
 s sX=sX_$c(31)_"a"_sDescrX
 s sX=sX_$c(31)_"y"_"CZ"
 s sX=sX_$c(31)_"3"_"l_un_entry*"_sPointerARL0
 if sVazba="BT" s sX=sX_$c(31)_"5"_"g"
 if sVazba="NT" s sX=sX_$c(31)_"5"_"h"
 if sVazba="RT" s sX=sX_$c(31)_"5"_"z"
 
 s sUzol=$g(^tmpEurovoc("REC",idArlT001,"550"))  ;* aby neprepisal z minulych konverzii
 if sUzol'="" s sUzol=sUzol_$c(10)
 s sUzol=sUzol_sX
 s ^tmpEurovoc("REC",idArlT001,"550")=sUzol
 ;w !,"Uzol=",sUzol 
 q

xCommand5DelU04
 s ^tmpEurovoc("REC",idArlT001,"FLAG")="UPD"  ;****  zaznam bol aktualizovany
 
 ;w !!,"***********xCommand5DelU04***********",idArlT001,"''",sPointerARL0,"....",sDescrX,",,,,",sVazba,";;;;",sStatus
 s sX="U04    "_$c(31)_"a"_sDescrX_$c(31)_"d"_sDatAkt_$c(31)_"s"_sStatus ;* NEW/DELETE
 s sX=sX_$c(31)_"v"_sVazba
 s sX=sX_$c(31)_"y"_"CZ"
 s sX=sX_$c(31)_"3"_"l_un_entry*"_sPointerARL0
 d
 . if sVazba="BT" s sT5505="g" q
 . if sVazba="NT" s sT5505="h" q
 . if sVazba="RT" s sT5505="z" q
 . s sT5505="" q
 s sX=sX_$c(31)_"5"_sT5505
 
 ;* U04 nebude
 ;s sUzol=$g(^tmpEurovoc("REC",idArlT001,"U04"))  ;* aby neprepisal z minulych konverzii
 ;if sUzol'="" s sUzol=sUzol_$c(10)
 ;s sUzol=sUzol_sX
 ;s ^tmpEurovoc("REC",idArlT001,"U04")=sUzol
 ;w !,"Uzol=",sUzol 
 q
 */
]]></Implementation>
</Method>

<Method name="ParEV6">
<Description>
Triedy pre konverziu Par Eurovoc - tu je to len na ukazku
posledna verzia programov je v triede ParSEurovoc - viz.
C:\Delphi\cache\cdl\par\ParSEurovoc.rar </Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
 ; xCommand6(Xcmd)	
 w !,"Faza 6: zapis do TestUnAuth podla dat z Eurovocu z pracovnych databaz pripravenych vo faze 5."
 n sOLDIO s sOLDIO=$io
  
 s ofi="d:\EV_Imp"_$r(999)_".txt"
 ;s ofi="d:\EV_Imp.txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 w !,"Protokol o zapise do TestUnAuth podla dat z Eurovocu        ",$zdt($h,4)
 w !,"   Faza 6: zapis do TestUnAuth podla dat z Eurovocu z pracovnych databaz pripravenych vo faze 5."
 w !
 
 s cRead=0, cUpd=0, cNew=0, cDel=0
   
 d xCommand61
 d xCommand6Sum
 
 q
 
xCommand61
 use sOLDIO w ! ,"TestUnAuth (WRITE) "
 use ofi w !
  
  
 w !,"------------------------------------------------------------------------"
 w !,"Zápis do TestUnAuth"
 
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000         nxm  2200289   450 "
 s sT100="100    "_$c(31)_"a"_sDatAkt_"cczea0103    ba"
 s sT150="150    "_$c(31)_"a"_"y"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801    "_$c(31)_"a"_"CZ"_$c(31)_"b"_"ABA011"_$c(31)_"c"_sDatAkt
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"ABA011"_$c(31)_"c"_"ABA011"_$c(31)_"d"_"aRLU-"_sDatAkt

 s c=0 
 s idArlT001="", sClass="TestUnAuth"
 for  set idArlT001=$o(^tmpEurovoc("REC",idArlT001)) quit:idArlT001=""  do
 . s bT000="", bT100="", bT150="", bT152="", bT801="", bT999=""
 . 
 . s c=c+1
 . if c=200  d  use sOLDIO w "." s c=0 use ofi
 . 
 . ; precitat zaznam. Ak sa nenajde -> vytvorit prazdny
 . if '##class(MARC).readX(.handle,sClass,idArlT001) d
 . . d ##class(MARC).newX(.handle,sClass,idArlT001)
 .  
 . d ##class(MARC).recordSetupT001X(.handle,3_$e(idArlT001,2,7)) ;* zapis od 3000001
 . 
 . s sTag=""
 . for  set sTag=$o(^tmpEurovoc("REC",idArlT001,sTag)) quit:sTag=""  do
 . . 
 . . if sTag="000" s bT000=1
 . . if sTag="100" s bT100=1
 . . if sTag="150" s bT150=1
 . . if sTag="152" s bT152=1
 . . if sTag="801" s bT801=1
 . . if sTag="999" s bT999=1
 . . 
 . . s sValue=$g(^tmpEurovoc("REC",idArlT001,sTag))
 . . if sTag="FLAG"  d 
 . . . s sFlag=sValue
 . . else  d
 . . . if sTag="999" d 
 . . . . s sX999=sValue_"#aRLU-"_sDatAkt
 . . . else  d
 . . . . d ##class(MARC).setTagX(.handle,sValue)
 . . . . ;use sOLDIO w !,sTag w "===",sValue use ofi
 .
 . if bT000="" d ##class(MARC).setTagX(.handle,sT000)
 . if bT100="" d ##class(MARC).setTagX(.handle,sT100)
 . if bT150="" d ##class(MARC).setTagX(.handle,sT150)
 . if bT152="" d ##class(MARC).setTagX(.handle,sT152)
 . if bT801="" d ##class(MARC).setTagX(.handle,sT801)
 . if bT999="" d 
 . . d ##class(MARC).setTagX(.handle,sT999)
 . else  d ##class(MARC).setTagX(.handle,sX999)
 . 
 . s sTU01=##class(MARC).getTagX(.handle,"U01",-1) 
 . s sTU01New="U01    "_$c(31)_"a"_sDatAkt
 . s sTU01New=sTU01New_$c(31)_"d"_sDatAkt
 . s sTU01New=sTU01New_$c(31)_"e"_$e(sFlag,1,1) 
 . s sTU01New=sTU01New_$c(31)_"s"_$e(sFlag,1,1)
 . s sX=##class(MARC).getSubTagStr(sTU01,"t")
 . if sX'="" s sTU01New=sTU01New_$c(31)_"t"_sX
 . for i=1:1:..fc(sTU01,$c(10)) d
 . . s sTU01d=##class(MARC).getSubTagStr($p(sTU01,$c(10),i),"d")
 . . s sTU01e=##class(MARC).getSubTagStr($p(sTU01,$c(10),i),"e")
 . . if (sTU01d'="") || (sTU01e'="") d
 . . . s sTU01New=sTU01New_"U01    "_$c(31)_"d"_sTU01d_$c(31)_"e"_sTU01e
 . d ##class(MARC).setTagX(.handle,sTU01New)
 . 
 . if sFlag'="READ"  d ##class(MARC).setTagX(.handle,"005    "_##class(MARC).genT005())
 . 
 . if sFlag="READ" s cRead=cRead+1
 . if sFlag="UPD" s cUpd=cUpd+1
 . if sFlag="NEW" s cNew=cNew+1
 . if sFlag="DEL" s cDel=cDel+1
 . 
 .  
 . d ##class(MARC).sortLinesX(.handle)
 . n sc s sc=##class(MARC).writeX(.handle,1)
 . if sc '=1 w !,"write err id=",idArlT001
   
 q	

xCommand6Sum 

 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov =",cNew
 w !,"Poèet vymazanych zaznamov =",cDel
 w !,"Poèet aktualizovanych zaznamov =",cUpd
 w !,"Poèet neaktualizovanych zaznamov =",cRead
 w !
 w !,"Poèet zaznamov deskriptorov v TestUnAuth=",cNew+cUpd+cRead
 w !,"------------------------------------------------------------------------"

 w !!,"Koniec protokolu               ", $zdt($h,4)
 close ofi
 
 use sOLDIO w !,"Fáza 6: ukonèená OK, protokol sa nachádza v súbore ",ofi
  
 q
]]></Implementation>
</Method>

<Method name="convClaviusToMarc">
<Description><![CDATA[
11.10.04 mk pridany novy parameter kniznica do 999 tagu<br>
04.10.04 mk nova konverzia riadkoveho formatu clavius do nasho<br>
            riadkoveho formatu, zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",kniznica:%String,trieda:%String</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; sigla institucie pre 999b a c
 ; nazov triedy	
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,kod,kodold
 
 s brk=0,nkrec="",nkid="",nkid2="",li="",odd="",begin="1",hlavicka="",kod="",kodold=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok
 . s li=##class(Util).strswap(li,"$",$c(31))
 . ;uprava jedneho riadku
 . if (li'="") d
 . . ; kontrola hlavicky 000 
 . . if $e(li,2,4)="LAB" d
 . . . s hlavicka = ""
 . . . ;if begin = "" s hlavicka=odd_"###"
 . . . if begin = "" d
 . . . . s hlavicka=odd_"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_"arl-"_##class(Util).date()_odd_"###"
 . . . ;
 . . . ;"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_spracovatel_"-"_##class(Util).date()
 . . . s hlavicka=hlavicka_odd_"# @id "_trieda_" new"
 . . . if (begin="1") s hlavicka=hlavicka_$c(10)
 . . . s li=##class(Util).strswap(li,"-"," ")
 . . . s li=##class(Util).strswap(li," LAB","000")
 . . . s hlavicka=hlavicka_odd_li,li=""
 . . ; je nacteny jeden zaznam, zpracovat
 . . if ($e(li,2,4)="001") d   ;kod zaznamu
 . . . s kod = $e(li,10,$l(li))
 . . . s kodold=kod
 . . . s kod=$zcvt(##class(Util).strswap(kod," ",""),"L")
 . . . s li=##class(Util).strswap(li,kodold,kod)
 . . . s hlavicka=##class(Util).strswap(hlavicka,"new",kod)
 . . . use outf w hlavicka use OU
 . . . s kod=""
 . . ; pokracuje dalsimi zaznamami
 . . ; 
 . . ;  
 . . s li=$e(li,2,$l(li))
 . . ; riesenie zle zalomeneho riadku
 . . s odd=$c(10)
 . . if '##class(Util).isInteger($e(li,1,1)) s odd=""
 . . ; odseparovat stvrty znak ak nie  je medzera
 . . if $e(li,4,4)'="" s li=$e(li,1,3)_$e(li,5,$l(li))
 . . ; odseparovat spatne indikatory # za medzery
 . . if $e(li,5,5)="#" s li=$e(li,1,4)_" "_$e(li,6,$l(li))
 . . if $e(li,6,6)="#" s li=$e(li,1,5)_" "_$e(li,7,$l(li))
 . . ;
 . . if li'="" use outf w odd_li use OU
 . . s li=""
 . . s begin=""
 . q:$zeof'=0
 .
 . ; zpracovat jeden radek
 . s li=$e(li,11,9999) s $e(li,7,8)=""
 . s li=##class(Util).strswap(li,"   "," ") if li="" q

 use outf w odd_"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_"arl-"_##class(Util).date()_odd_"###" use OU
 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="lg">
<Description>
lg=ListGlobal</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>string:%Library.String,separator:%Library.String</FormalSpec>
<ReturnType>%Library.Integer</ReturnType>
<Implementation><![CDATA[
 n id,c,c2,s
 s id="",c=0,c2=0
 ;for  set id=$o(^TMP("VL",id)) quit:id=""  do
 for  set id=$o(^TMP("VL",id)) quit:((c2=99999) || (id=""))  do
 . s c=c+1
 . s s=$g(^TMP("VL",id,"VL",id-($e(id,1,1)*1000),4))
 . ;if ..fc(s,"*")=1 s s=""
 . if s="" d
 . . s c2=c2+1
 . . w !,"#"_c_" "_c2_" "_id_" "_s
 q
]]></Implementation>
</Method>

<Method name="fc">
<Description>
fc=FieldCount</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>string:%Library.String,separator:%Library.String</FormalSpec>
<ReturnType>%Library.Integer</ReturnType>
<Implementation><![CDATA[
 n ret s ret=$l(string,separator)
 if string="" s ret=0
 q ret
]]></Implementation>
</Method>

<Method name="symFillIndex">
<Description>
27.07.04 jj - symbolik na nasypani obsahu UNA_610a z szp 
do indexu a250s


   d ^X("s LiUnCat dk = xszp")
   s sy="##class(UtilConv).symFillIndex(.handle,""Li"",""a250s"",""S"",""LIA001"")"
   d ^X("ls")
   d ^X("gs")
   </Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,ictx:%Library.String,index:%Library.String,kodSpec:%Library.String,katAgent:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s sT610=##class(MARC).getTagX(.handle,"610",-1) 
 s c=$l(sT610,$c(10))
 
 w !,!,"c="_c
 f n=1:1:c d
 . s sT610a=$p(sT610,$c(10),n)
 . s sTerm=##class(MARC).getSubTagStr(sT610a,"a")
 . if sTerm="" q
 . w !,n_". "_sTerm
 . 
 . 
 . if '$d(^ooDataTableI(ictx_"UnAuth","a250s"," "_sTerm)) d  q
 . . w "-writting record"
 . . d ##class(MARC).newX(.handlea,"LiUnAuth","new")
 . . d ##class(MARC).setTagX(.handlea,"000    00240nx   22001213  450")
 . . d ##class(MARC).setTagX(.handlea,"100    "_$c(31)_"a"_##class(Util).date()_"aczey0103    ba")
 . . d ##class(MARC).setTagX(.handlea,"152    "_$c(31)_"aAACR2")
 . . d ##class(MARC).setTagX(.handlea,"250    "_$c(31)_"a"_sTerm)
 . . d ##class(MARC).setTagX(.handlea,"801    "_$c(31)_"aCZ"_$c(31)_"b"_katAgent_$c(31)_"c"_##class(Util).date())
 . . d ##class(MARC).setTagX(.handlea,"980    "_$c(31)_"x"_kodSpec)
 . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"b"_katAgent_$c(31)_"d"_"arl-"_##class(Util).date())
 . . d ##class(MARC).setTagX(.handlea,"c99    "_$c(31)_"dDFLT_UN_AUTH_USER_S")
 . . d ##class(MARC).writeX(.handlea,1,,1)
 . 
 . w "-already exist"
]]></Implementation>
</Method>

<Method name="sym463">
<Description><![CDATA[
28.02.06 jr globalka na opravu v 463 200v rok <br> 
in  463 200v  2004, roè. 4, è. 12, s. 45
out 463 200v  Roè. 4, è. 12 (2004), s. 45    ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t001=##class(MARC).recordT001X(.handle)
 w !,"T001= "_t001
 s t463=##class(MARC).getTagX(.handle,"463")
 if t463="" q
 s t463new=t463
  
 s t200v= ##class(MARC).getTag4xx(t463,"200v")
 s t200vo = t200v
 s rok=$p(t200v,",",1)
 ;w !,"rok= "_rok
 if $l(rok) '= 4 q
 s t200v =##class(Util).trim($e(t200v,6,999)) 
 w !,"zbytek 200v= "_t200v
 s t200v = ##class(Util).strswap(t200v," s."," ("_rok_"), s.")
 w !,"presunuti roku= "_t200v
 s t200v = ##class(Util).strswap(t200v,", ("," (")
 s t200v = ##class(Util).strswap(t200v,",  ("," (")
 s t200v = ##class(Util).strswap(t200v,"vol","Vol")
 s t200v = ##class(Util).strswap(t200v,"ro","Ro")
 w !,"prefix rocniku= "_t200v
 ;if t200v = ""
 ;{ 
 ;  s t463new=##class(Util).strswap(t463new,$c(31)_"v"_t200vo,t200v)
 ;}
 ;else
 ;{
 s t463new=##class(Util).strswap(t463new,t200vo,t200v)
 ;}
 w !,"463 po vymene200v "_t463new
  
  
 ;s t210="" 
 ;s t210d=""
 ;s t210= ##class(MARC).getTag4xx(t463,"210")
 ;if t210=""
 ;{
 ;  s t463new = t463new_$c(31)_"1210  "_$c(31)_"d"_rok
 ;}	 
 ;else
 ;{
 ;  s t210d = ##class(MARC).getSubTagStr(t210,"d")
 ;  if t210d = ""
 ;  {
 ;   s t210o = $c(31)_"1210  "_$e(t210,8,999)
 ;   s t210 =  t210o_$c(31)_"d"_rok
 ;   w !,"210old = "_t210o
 ;   w !,"novy 210 = "_t210
 ;   s t463new=##class(Util).strswap(t463new,t210o,t210)
 ;  } 
 ;}
 ;;w !,"463 po doplneni210 "_t463new	 
 
 d:t463'=t463new ##class(MARC).setTagX(.handle,t463new)
]]></Implementation>
</Method>

<Method name="sym463rok">
<Description><![CDATA[
28.02.06 jr globalka na opravu roku z 463 210d do 210v <br> 
in  463 200v  roè. 4, è. 12, s. 45
    463 210d  2004
out 463 200v  Roè. 4, è. 12 (2004), s. 45         ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s rok = ""	
 s t001=##class(MARC).recordT001X(.handle)
 if t001="0001839" q
 w !,"T001= "_t001
 s t463=##class(MARC).getTagX(.handle,"463")
 if t463="" q
 s t463new=t463
  
 s t200v= ##class(MARC).getTag4xx(t463,"200v")
 s t200vo = t200v
 s t210= ##class(MARC).getTag4xx(t463,"210")
 s rok = ##class(MARC).getSubTagStr(t210,"d")
 ;s rok=##class(MARC).getTag4xx(t463,"210d")
 if rok = "" q
 
 s t210o = $c(31)_"1210  "_$c(31)_"d"_rok
 s t463new=##class(Util).strswap(t463new,t210o,"")
 
 
 s t200v = ##class(Util).strswap(t200v," s."," ("_rok_"), s.")
 w !,"presunuti roku= "_t200v
 s t200v = ##class(Util).strswap(t200v,", ("," (")
 s t200v = ##class(Util).strswap(t200v,",  ("," (")
 ;if t200v = ""
 ;{ 
 ;  s t463new=##class(Util).strswap(t463new,$c(31)_"v"_t200vo,t200v)
 ;}
 ;else
 ;{
 s t463new=##class(Util).strswap(t463new,t200vo,t200v)
 ;}
 w !,"463 po vymene200v "_t463new
  
  
 ;s t210="" 
 ;s t210d=""
 ;s t210= ##class(MARC).getTag4xx(t463,"210")
 ;if t210=""
 ;{
 ;  s t463new = t463new_$c(31)_"1210  "_$c(31)_"d"_rok
 ;}	 
 ;else
 ;{
 ;  s t210d = ##class(MARC).getSubTagStr(t210,"d")
 ;  if t210d = ""
 ;  {
 ;   s t210o = $c(31)_"1210  "_$e(t210,8,999)
 ;   s t210 =  t210o_$c(31)_"d"_rok
 ;   w !,"210old = "_t210o
 ;   w !,"novy 210 = "_t210
 ;   s t463new=##class(Util).strswap(t463new,t210o,t210)
 ;  } 
 ;}
 ;;w !,"463 po doplneni210 "_t463new	 
 
 d:t463'=t463new ##class(MARC).setTagX(.handle,t463new)
]]></Implementation>
</Method>

<Method name="symGen7xx3">
<Description><![CDATA[
28.02.06 jr globalka na doplneni kodu autoriry v 70x<br>
in  700  ^aNovotny ^bJan
out 700  ^aNovotny ^bJan ^3uhkt_un_auth*0000255     ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t70Xb="", t70X3=""
 s t001=##class(MARC).recordT001X(.handle)
 w !,"ID= "_t001
 s t70X = ##class(MARC).getTagX(.handle,"70*",-1)
 if t70X = "" q
 s t70Xo = t70X
 s cnt70X = $l(t70X,$c(10))
 f j=1:1:cnt70X
 {
   s line1=$p(t70X,$c(10),j)
   s line1o = line1
   s t70X3 = ##class(MARC).getSubTagStr(.line1,"3")
   ;if t70X3 '="" q
   s t70Xa = ##class(MARC).getSubTagStr(.line1,"a")
   s t70Xb = ##class(MARC).getSubTagStr(.line1,"b")
   if t70Xb '="" s t70Xa = $zcvt(t70Xa_" "_t70Xb,"L")
   w !,"jmeno= "_t70Xa
   if $d(^ooDataTableI("FnoUnAuth","aup"," "_t70Xa)) 
   {
	 w !,"mam zaznam auth "  
	 s idauth=""
     s idauth=$o(^ooDataTableI("FnoUnAuth","aup"," "_t70Xa,""))
     s t001=""
     if idauth'="" 
     {  
       s t001=##class(MARC).getT001(idauth)
       s t70Xo=##class(Util).strswap(t70Xo,line1o,line1o_$c(31)_"3fno_un_auth*"_t001)
     }
   }
 d ##class(MARC).setTagX(.handle,t70Xo)  
   
 }
]]></Implementation>
</Method>

<Method name="symFill463">
<Description>
14.09.04 jj; symFill463() - symbolik na doplneni podpoli $h,$i pole 463 200 dle 463 001
07.02.05 jj; oprava situace pri pridavani sT200
09.02.05 jj; doplneni "1"
</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 /// Postup:
 /// nacist 463, odlozit si 463v; z ni 001; zde cely tag 200;
 /// nahradit jim stavajici 463 200; doplnit na konec 463v

 s sT463=##class(MARC).getTagX(.handle,"463")
 if sT463="" q
 s sT463old=sT463
 
 s sT200=""
 s sT001=##class(MARC).getTag4xx(sT463,"001")
 if $e(sT001,1,3)="001" d 
 . s key=$e(sT001,6,999)
 . if key '= "" d  
 . . if ##class(MARC).readLX(.handles,key) d 
 . . . ; nacteni 200
 . . . s sT200=##class(MARC).getTagX(.handles,"200") 
 if sT200'="" d
 . ; odlozeni 463 200v
 . s sT463200v=##class(MARC).getTag4xx(sT463,"200v")
 . ; prilepeni 463 200v
 . if sT463200v'="" s sT200=sT200_$c(31)_"v"_sT463200v
 . ; nacteni 463 200
 . s sT463200=##class(MARC).getTag4xx(sT463,"200")
 . ; nastaveni sT200 a sT463200 na format v 463
 . if $e(sT200,1,7)="200 1  "  d 
 . . s sT200="2001 "_$e(sT200,8,999)
 . if $e(sT463200,1,7)="200 1  "  d 
 . . s sT463200="2001 "_$e(sT463200,8,999)
 . ; nahrazeni 463 200
 . ;w !,"sT463:"_sT463
 . ;w !,"sT463200:"_sT463200
 . ;w !,"sT200:"_sT200
 . ;s sT463=##class(Util).strswap(sT463,sT463200,sT200)
 . if sT463200'="" d  s sT463=##class(Util).strswap(sT463,sT463200,sT200)
 . else  d  s sT463=sT463_$c(31)_"1"_sT200

 if sT463'=sT463old d ##class(MARC).setTagX(.handle,sT463)

 q
]]></Implementation>
</Method>

<Method name="genClaviusHoldings">
<Description><![CDATA[
11.10.04 mk; pridana metoda na generovanie holdingov zo zaznamu Clavius<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,kniznica:%Library.String]]></FormalSpec>
<Implementation><![CDATA[
 ;parametre
 ;.handle aktualneho zaznamu katalogu
 ;kniznica do 999b a c	
	
 ; postupuje sa podla tituloveho zaznamu a podla tagu 980. Podla poctu
 ; opakovani sa v holdingovej databaze generuju holdingy.
 ; podpolia:
 ; c - prirastkove cislo
 ; 1 - ciarovy kod 
 ; g - zvazkova signatura
 ; l - lokacia/umiestnenie
 ; n - sposob nadobudnutia K-kupa/D-dar/J-iny sposob
 ; z - spracovatel (2 pismena)
 ; i - dodavatel
 ; j - cislo dodacieho listu
 ; h - cena zvazku v tvare 99999.99
 ; a - nakladova cena zvazku v tvare 99999.99
 ; d - daum vlozenia zvazku tvar RRRRMMDD
 ; u - ubytkove cislo zvazku
 ; s - datum vzradenia zvazku tvar RRRRMMDD
 ; k - skladova skupina
 ; t - tematicka skupina
 ; v - druh vazby (dve pismena)
 ; p - zvazkova poznamka
 ; 
 ;n kniznica s kniznica="HC603"
 n class,t001,thandle,t980,lsST,subtag
 s class=##class(MARC).recordClassX(.handle)
 s t001=##class(MARC).recordT001X(.handle)
 s t980=##class(MARC).getTagX(.handle,"980",-1)  ;z titulu precita vsetky opakovania
 s t100="",t300="",t400=""
 n spracovatel s spracovatel="arl"
 n t005 s t005=##class(MARC).genT005()
 
 n i,lsLine,pocet,j,HoldKod,t100,t300,t400
 s i=0,lsLine="",pocet=0,i=0,HoldKod=""
 
 for i=1:1:$l(t980,$c(10)) d   ;podla poctu opakovania 980 tagu
 . s lsLine=$p(t980,$c(10),i)  ;vybrat 1 tag980 
 . s lsLine=$e(lsLine,7,$l(lsLine)) ;ciste len subtagy
 . s pocet=$l(lsLine,$c(31))   ;pocet subtagov
 . ;s HoldKod=t001_"_000"_i        ;kod noveho holdingu, zatial natvrdo  
 . s HoldKod=t001_"_"_##class(Util).leadingZero(i,4)
 . s t100="",t300="",t400=""
 . for j=1:1:$l(t980,$c(31)) d 
 . . s lsST=$p(lsLine,$c(31),j)  ;jeden subtag
 . . s subtag=$zcvt($e(lsST,1,1),"L")    ;kod subtagu
 . . s lsST=$e(lsST,2,$l(lsST))
 . . if subtag="c" s t100=t100_$c(31)_"t"_lsST   ;prirastkove cislo
 . . if subtag="1" s t100=t100_$c(31)_"b"_lsST   ;ciarovy kod
 . . if subtag="t" s t100=t100_$c(31)_"i"_lsST   ;interny kod
 . . if subtag="g" s t100=t100_$c(31)_"s"_lsST   ;signatura
 . . if subtag="l" s t100=t100_$c(31)_"l"_lsST   ;lokacia
 . . if subtag="p" s t300=t300_$c(31)_"n"_lsST   ;poznamka
 . . if subtag="n" s t400=t400_$c(31)_"k"_lsST   ;sposob nadobudnutia
 . . if subtag="i" s t400=t400_$c(31)_"b"_lsST   ;dodavatel
 . . if subtag="j" s t400=t400_$c(31)_"g"_lsST   ;cislo dodacieho listu
 . . if subtag="h" s t400=t400_$c(31)_"h"_lsST   ;cena1
 . . if subtag="a" s t400=t400_$c(31)_"a"_lsST   ;cena2
 . . if subtag="z" s spracovatel=lsST   ;spracovatel 
 . . if subtag="d" d
 . . . if lsST'="" s t005=lsST_"000000.0"   ;datum zapisu 
 . . ;tagy zaradene do 300 uzivatelske polia ak sa vyskytnu
 . . if subtag="u" s t300=t300_$c(31)_"a"_lsST   ;ubytkove cislo
 . . if subtag="s" s t300=t300_$c(31)_"b"_lsST   ;datum vyradenia
 . . if subtag="k" s t300=t300_$c(31)_"c"_lsST   ;skladova signatura
 . . if subtag="v" s t300=t300_$c(31)_"d"_lsST   ;druh vazby
 . ;zapis zaznamu
 . d ##class(MARC).newX(.handleh,class_"H",HoldKod)
 . d ##class(MARC).setTagX(.handleh,"000    00000     2200109   450")
 . d ##class(MARC).setTagX(.handleh,"005    "_t005)
 . if t100'="" d ##class(MARC).setTagX(.handleh,"100    "_t100)
 . d ##class(MARC).setTagX(.handleh,"200    "_$c(31)_"d30")
 . if t300'="" d ##class(MARC).setTagX(.handleh,"300    "_t300)
 . if t400'="" d ##class(MARC).setTagX(.handleh,"300    "_t300)
 . d ##class(MARC).setTagX(.handleh,"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_spracovatel_"-"_##class(Util).date())
 . d ##class(MARC).writeX(.handleh,1,,1)

 q
]]></Implementation>
</Method>

<Method name="symFixBadInvoiceInfo">
<Description><![CDATA[
Oprava neplatnych faktur, obj, predpl v holdingu
a presun do 400$u poznamka k dodavatelovi<br>

14.10.04 rs;

Symbolik skontroluje, ci sa v zazname holdingu nachadza
objednavka, faktura alebo predplatne
s neplatnym odkazom. Ak ano toto bude presunute do
pola 400u - poznamka k dodavatelovi s tym, ze ak pole
pozn. uz nejake info predtym obsahovalo, nova info
bude pripojena na koniec s oddelovacom ciarka.
Priklad po vymene:
"povodna pozn., faktura: XX, objednavka: YYY, predplatne: ZZZ"
texty sa daju zvoli CZE (lang=2) alebo SLO (lang=1 default).<br>
Symbolik spustime na zaznamoch holdingov, kt. obsahuju neplatne
udaje v holdingu - volitelne obmedzime datumom prijmu
podla dohovoru so zakaznikom.<br>
]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle,lang=1]]></FormalSpec>
<Implementation><![CDATA[
  s class=$$$HandleClass(handle)
  s lname=##class(Util).objectName2lname(class)
  s lpref=$p(lname,"_",1) if lpref="" ztrap "ER1"
  
  
  d ..symFixBadInvoiceInfoOne(.handle,"400i","objednávka",lang,lpref_"_order")
  d ..symFixBadInvoiceInfoOne(.handle,"400h","faktúra#faktura",lang,lpref_"_invoice")
  d ..symFixBadInvoiceInfoOne(.handle,"400j","predplatné#pøedplatné",lang,lpref_"_subscription")
]]></Implementation>
</Method>

<Method name="symFixBadInvoiceInfoOne">
<Description>
(private)
toto je len pomocna metoda pre symFixBadInvoiceInfo
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle,tag,text,lang,lname]]></FormalSpec>
<Implementation><![CDATA[
  ; nas tag - ak neni - nic sa nedeje
  s sTag=##class(MARC).getTagX(.handle,tag)	q:sTag=""
  ; prefix textu - ak by bol prazdny je to chyba
  s text=##class(Util).languageSelect(text,"#",lang) if text="" ztrap "ER2"
  
  ; je to OK (t.j. ma spravny prefix - nebudeme presuvat)
  if $p(sTag,"*",1)=lname q ; je OK
  
  
  s sTagP=##class(MARC).getTagX(.handle,"400")
  s sTagPu=##class(MARC).getSubTagStr(sTagP,"u")
  if sTagPu'="" s sTagPu=sTagPu_", "
  s sTagPu=sTagPu_text_" "_sTag
  
  ; nastavit poznamku
  s sTagP=##class(MARC).setSubTagStr(sTagP,$c(31)_"u"_sTagPu)
  ; odmazat povodne podpole
  s sTagP=##class(MARC).setSubTagStr(sTagP,$c(31)_$e(tag,4,4))
  
  d ##class(MARC).setTagX(.handle,sTagP)
]]></Implementation>
</Method>

<Method name="symDelSubtag3Bodka">
<Description><![CDATA[
19.05.05 rs; nerobit zmenu ak sa nic nemeni - toto zjednodusi select
             t.j. select zmenenych zaznamov je potom d ^X("s XxxYyy @"_sy)<br>
15.10.04 pb;globalka vymaz $3 ak obsahuje iba bodku, ak nie je ani $a, vymaze tag<br>
---]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.Binary,sTagList:%Library.String="6**,7**"]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
 ; select podla potreby
 ; s sy="##class(UtilConv).symDelSubtag3Bodka(.handle)"
 
 s nPocet=$l(sTagList,",")
 for i=1,1,nPocet d
 . s sTagx=$p(sTagList,",",i)
 . ;w !,sTagx
 . if $l(sTagx)'=3 q
 .
 . s sTag=##class(MARC).getTagX(.handle,sTagx,-1)
 . s c=$l(sTag,$c(10)), sRiadokNew=""
 . for j=1:1:c d
 . . s sRiadok=$p(sTag,$c(10),j),sRiadokO=sRiadok
 . . s sRiadok=##class(Util).strswap(sRiadok,$c(31)_"3.","") 
 . .
 . . if $e(sTag)="7",'$f(sRiadok,$c(31)_"a") s sRiadok="" w !,"WARNING: deleting line:"_sRiadokO
 . .
 . . ; '123.56.'
 . . if $l(sRiadok)>8 d
 . . . if sRiadokNew'="" s sRiadokNew=sRiadokNew_$c(10)
 . . . 
 . . . s sRiadokNew=sRiadokNew_sRiadok
 . 
 . ; 19.05.05 rs; nerobit zmenu ak sa nic nemeni - toto zjednodusi select
 . ;              t.j. select zmenenych zaznamov je potom d ^X("s XxxYyy @"_sy)
 . if sTag=sRiadokNew q
 . 
 . if sRiadokNew'="" d
 . . d ##class(MARC).setTagX(.handle,sRiadokNew)
 . else  d ##class(MARC).delTagX(.handle,sTagx)
]]></Implementation>
</Method>

<Method name="symMergeUnCattoUnCatHist">
<Description><![CDATA[
19.10.04 pb; globalka aktualizacia UnCatHist datami z UnCat (ak existuju)<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.Binary]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
 ; selekt s KlUnCatHist @ALLOWSAVE
 ; s sy="##class(UtilConv).symMergeUnCattoUnCatHist(.handle)"
 
 s sT005=##class(MARC).getTagX(.handle,"005")
 s sTHis=##class(MARC).getTagX(.handle,"HIS")
 s sT999=##class(MARC).getTagX(.handle,"999")
 s sClassHist=$$$HandleClass(handle)
 s sIdHist=$$$HandleId(handle)
 s sT001Hist=$$$HandleT001(handle)
  
 s skeyCat=##class(MARC).getTagX(.handle,"HISk")
 s xkeyCat="l_un_cat*"_skeyCat
 if ##class(MARC).readLX(.handlec,xkeyCat) d 
 . if sT005'="" d ##class(MARC).setTagX(.handlec,sT005)
 . if sTHis'="" d ##class(MARC).setTagX(.handlec,sTHis)
 . if sT999'="" d ##class(MARC).setTagX(.handlec,sT999)
 . 
 . d ##class(MARC).recordSetupClassX(.handlec,sClassHist)
 . d ##class(MARC).recordSetupT001X(.handlec,sT001Hist)
 . s handlec("id")=sIdHist
 . 
 . d ##class(MARC).mergeX(.handle,.handlec) ;presun handlec do handle
]]></Implementation>
</Method>

<Method name="NtmConv">
<Description><![CDATA[
23.11.04 pb; oprava drobnych chyb pri kontrole dat v klientovi:
doplneny export "druhu", oprava hesiel, preklepy a posuny v datach<br>
11.11.04 pb; konverzia NTM - Narodne Technicke Muzeum<br>

import z csv suboru vyexportovaneho z MS Excelu, oddelovac stlpcov 
 je ";". <br>
 Jednym behom sa exportuje pre Uncat, vytvaraju sa pracovne globaly
 ^TMP, dalej sa exportuje pre UnCatH (ak je skartovane tak do
 UnCatHistH), a dalej exporty pre UnAuth - autority personalne,
 dodavatelia, vyrobcovia a hesla<br>
 
d ##class(UtilConv).NtmConv() vyvolanie programu<br>
]]></Description>
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s sSigla="NTM001"
 s sTrieda="Ntm"
 
 s sTriedaU=$zcvt(sTrieda,"u")
 s sTriedaL=$zcvt(sTrieda,"l")
 
 kill ^TMP  ;!!!!!!!!!!
 
 s sOLDIO=$io ;,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"konverzia NTM - Narodne technicke muzeum ***************  ",$zdt($h,4)
 
 s ifi="D:\1\muzeum\1\Ciselniky.csv"
 s ofiprot="D:\1\muzeum\1\o\"_sTrieda_"Imp"_$r(999)_".txt"
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi
 if te=1 d  w "  ok"
 else  w "  not ok"
 d $ZU(68,40,1)
   
 if te=1  d
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe "_sTrieda_"                          ",$zdt($h,4),!
 . w !,"          ======================================"
 . w !,"          Otvaram subor: "_ifi
 . 
 . s brk=0,c=0,pg=0
 . for  q:c=4  d ;zaciname az 5.riadkom
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1
 
 . for  q:brk  d
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1,pg=pg+1 
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . s sNode=$p(li,";",13)
 . . s sNode=##class(Util).strswap(sNode,",","")
 . . s sVal=$p(li,";",14)
 . . if sNode'=""  s ^TMP("DRUH",sNode)=sVal
 . 
 . close ifi
 . use sOLDIO w !,c_" records processed - ok                ",$zdt($h,4)
 . use ofiprot
 . w !!,c_" records processed - ok "
 . use ofiprot w !,"          ======================================"
   
 ; CATALOG ;;;;;;;;;;;;;;;;;;;;;;
 s ifi="D:\1\muzeum\1\Sbirky2.csv"
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi_"   Tvorba db Cat"
 if te=1 d  w "  ok"
 else  w "  not ok"
   
 use ofiprot
 w !!
 w !,"          ======================================"
 w !,"          Otvaram subor: "_ifi_"   Tvorba db Cat"
 
 if te=1  d 
 . s ofi="d:\1\muzeum\1\o\"_sTrieda_"_Cat"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 .
 . s cGeo=0,cMade=0,cHeslo=90000,cPers=0 ;id pocitadla auth.zaznamov
 . 
 . s sDatAkt=$e(##class(MARC).genT005(),1,8)
 . s sT000="000         nrc  2200289   450 " ;3-rozmerne predmety,umela zbierka
 . s sT100="100    "_$c(31)_"a"_sDatAkt_"cczea0103    ba"
 . s sT101="101 0  "_$c(31)_"a"_"cze"
 . s sT102="102    "_$c(31)_"a"_"CZ"
 . s sT801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt
 . s sT970="970    "_$c(31)_"b"_"T"
 . s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLU-"_sDatAkt
 .
 . s brk=0,c=0,pg=0
 . for  q:c=1  d ;zaciname az 2.riadkom
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1
 
 . for  q:brk  d
 . . s sT200="",sT300="",sT330="",sT606="",sT607="",sT972=""
 . . s sM01="",sM02="",sM03="",sM04="",sM05="",sM06="",sM07="",sM08=""
 . . s sHis="",sC99=""
 . . 
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . if brk=1 q
 . . s c=c+1,pg=pg+1 
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . s sT200a=$p(li,";",3) ;nazev1
 . . if $p(li,";",4)'="" s sT200a=sT200a_" +("_$p(li,";",4)_")" ;nazev2
 . . s sT200="200 1  "_$c(31)_"a"_sT200a
 . . 
 . . s sX=$p(li,";",10) ;popis
 . . if sX'="" s sT300="300    "_$c(31)_"aPopis="_sX
 . . s sX=$p(li,";",27) ;UL1
 . . if sX'="" s sT300="300    "_$c(31)_"aUL1="_sX
 . . s sX=$p(li,";",37) ;NEGCISLO
 . . if sX'="" s sT300="300    "_$c(31)_"aNEGCISLO="_sX
 . . s sX=$p(li,";",69) ;DalsiUdaje
 . . if sX'="" s sT300="300    "_$c(31)_"aDalsiUdaje="_sX
 . . 
 . . s sX=$p(li,";",2) ;Ex
 . . if sX'="" s sT330="330    "_$c(31)_"aEx="_sX
 . . s sX=$p(li,";",5) ;Ks
 . . if sX'="" s sT330="330    "_$c(31)_"aKs="_sX
 . . 
 . . s sX=$p(li,";",31) ;Skupina-natvrdo, je iba 1 hodnota, nie je ciselnik
 . . if sX'="" d
 . . . if sT606'="" s sT606=sT606_$c(10)
 . . . s sT606=sT606_"606 1  "_$c(31)_"3ntm_un_auth*h000001"_$c(31)_"a"_sX
 . . 
 . . s sX=$p(li,";",15) ;Podskupina-natvrdo, je iba 1 hodnota, nie je ciselnik
 . . if sX'="" d
 . . . if sT606'="" s sT606=sT606_$c(10)
 . . . s sT606=sT606_"606 1  "_$c(31)_"3ntm_un_auth*h000100"_$c(31)_"a"_sX
 . . 
 . . s sX=$p(li,";",18) ;Druh
 . . if sX'="" d
 . . . if sT606'="" s sT606=sT606_$c(10)
 . . . s sX=##class(Util).strswap(sX,",","")
 . . . s sX1=$g(^TMP("DRUH",sX)) ;text
 . . . s sX=1000000+sX
 . . . s sX=$e(sX,2,7)
 . . . s sT606=sT606_"606 1  "_$c(31)_"3ntm_un_auth*h"_sX_$c(31)_"a"_sX1
 . . 
 . . s sX=$p(li,";",35) ;Lokalita1
 . . s sX1=$p(li,";",36) ;Lokalita2
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("GEO",sX_"+"_sX1))
 . . . if sKluc="" d 
 . . . . s cGeo=cGeo+1
 . . . . s sKluc=cGeo+1000000
 . . . s sKluc="g"_$e(sKluc,2,7)
 . . . s ^TMP("GEO",sX_"+"_sX1)=sKluc
 . . . s sT607="607    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . . . if sX1'="" d
 . . . . s sT607=sT607_$c(31)_"x"_sX1
 . . 
 . . s sX=$p(li,";",1) ;Inventarne c.
 . . s sX=##class(Util).strswap(sX," ","")
 . . if sX'="" s sT972="972    "_$c(31)_"a"_sX
 . . 
 . . s sX=$p(li,";",6) ;Vyrobca
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("MADE",sX))
 . . . if sKluc="" d 
 . . . . s cMade=cMade+1
 . . . . s sKluc=cMade+1000000
 . . . s sKluc="m"_$e(sKluc,2,7)
 . . . s ^TMP("MADE",sX)=sKluc
 . . . s sX=##class(Util).strswap(sX,", ",$c(31)_"m")
 . . . s sX=##class(Util).strswap(sX,",",$c(31)_"m")
 . . . s sM01="M01    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . . 
 . . s sX=$p(li,";",41) ;ROKVYR1
 . . if sX'="" d
 . . . if sM01="" s sM01="M01    "
 . . . s sM01=sM01_$c(31)_"r"_sX
 . . 
 . . s sX=$p(li,";",42) ;ROKVYR2
 . . if sX'="" d
 . . . if sM01="" s sM01="M01    "
 . . . s sM01=sM01_$c(31)_"d"_sX
 . . 
 . . s sX=$p(li,";",52) ;ROZM
 . . if sX'="" d
 . . . s sM02="M02    "_$c(31)_"a"_sX
 . . . 
 . . . s sX=$p(li,";",46) ;ROZM1
 . . . s sM02=sM02_$c(31)_"b"_sX
 . . . s sX=$p(li,";",48) ;ROZM2
 . . . s sM02=sM02_$c(31)_"b"_sX
 . . . s sX=$p(li,";",50) ;ROZM3
 . . . s sM02=sM02_$c(31)_"b"_sX
 . . . 
 . . . s sX=$p(li,";",47) ;ROZMER1
 . . . s sM02=sM02_$c(31)_"c"_sX
 . . . s sX=$p(li,";",49) ;ROZMER2
 . . . s sM02=sM02_$c(31)_"c"_sX
 . . . s sX=$p(li,";",51) ;ROZMER3
 . . . s sM02=sM02_$c(31)_"c"_sX
 . . 
 . . s sX=$p(li,";",54) ;HMROZM
 . . if sX'="" d
 . . . s sM03="M03    "_$c(31)_"a"_sX
 . . . ;s sX=$p(li,";",??) ;HMOTNOST-nie je v datach
 . . . ;s sM03=sM03_$c(31)_"b"_sX
 . . . s sX=$p(li,";",53) ;HMOTNOST
 . . . s sM03=sM03_$c(31)_"c"_sX
 . .
 . . s sX=$p(li,";",45) ;Material
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("HESLO",sX))
 . . . if sKluc="" d 
 . . . . s cHeslo=cHeslo+1
 . . . . s sKluc=cHeslo+1000000
 . . . s sKluc="h"_$e(sKluc,2,7)
 . . . s ^TMP("HESLO",sX)=sKluc
 . . . s sM04="M04    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . . 
 . . ;s sX=$p(li,";",??) ;Technika-nie je v datach
 . . ;if sX'="" d
 . . . ;s sKluc=$g(^TMP("HESLO",sX))
 . . . ;if sKluc="" d 
 . . . . ;s cHeslo=cHeslo+1
 . . . . ;s sKluc=cHeslo+1000000
 . . . ;s sKluc="h"_$e(sKluc,2,7)
 . . . ;s ^TMP("HESLO",sX)=sKluc
 . . . ;s sM05="M05    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . . 
 . . s sX=$p(li,";",55) ;Material
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("HESLO",sX))
 . . . if sKluc="" d 
 . . . . s cHeslo=cHeslo+1
 . . . . s sKluc=cHeslo+1000000
 . . . s sKluc="h"_$e(sKluc,2,7)
 . . . s ^TMP("HESLO",sX)=sKluc
 . . . s sM06="M06    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . .
 . . s sX=$p(li,";",65) ;PopiskaNazev
 . . if sX'="" d
 . . . s sM07="M07    "_$c(31)_"a"_sX
 . . . s sX=$p(li,";",66) ;PopiskaRok
 . . . if sX'="" s sM07=sM07_$c(31)_"r"_sX
 . . . s sX=$p(li,";",67) ;PopiskaVyrobca
 . . . if sX'="" s sM07=sM07_$c(31)_"v"_sX
 . . . s sX=$p(li,";",68) ;PopiskaPopis
 . . . if sX'="" s sM07=sM07_$c(31)_"p"_sX
 . . . s sX=$p(li,";",58) ;STAVPREDM
 . . . if sX'="" s sM07=sM07_$c(31)_"b"_sX
 . . . s sM07=sM07_$c(31)_"ccze"
 . .
 . . s sX=$p(li,";",39) ;URCIL
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("PERS",sX))
 . . . if sKluc="" d 
 . . . . s cPers=cPers+1
 . . . . s sKluc=cPers+1000000
 . . . s sKluc="p"_$e(sKluc,2,7)
 . . . s ^TMP("PERS",sX)=sKluc
 . . . s sM08="M08    "_$c(31)_"3ntm_un_auth*"_sKluc_$c(31)_"a"_sX
 . . . s sX=$p(li,";",40) ;DATURC
 . . . s sXDate=$p(sX,".",3)
 . . . s sXDate=sXDate_$e($p(sX,".",2)+100,2,3)
 . . . s sXDate=sXDate_$e($p(sX,".",1)+100,2,3)
 . . . if sX'="" s sM08=sM08_$c(31)_"d"_sXDate
 . . 
 . . s sT300w=$p(li,";",11) ;Sk=Skartacia
 . . 
 . . s sC99="C99    "_$c(31)_"aSbirky/row#"_c_$c(31)_"dDFLT_UN_CAT21"
 . . s sT001=10000000+c
 . . s sT001=$e(sT001,2,8)
 . . use ofi
 
 . . if (sT300w="A")||(sT300w="AA")||(sT300w="D")||(sT300w="J") d
 . . . w "# @id "_sTrieda_"UnCatHist "_sT001
 . . . s sHis="HIS    "_$c(31)_"a"_sDatAkt_"000000.0"
 . . . s sHis=sHis_$c(31)_"d"_sTriedaL_"_un_cat"_$c(31)_"k"_sT001
 . . else  w "# @id "_sTrieda_"UnCat "_sT001
 . . w !,"001    "_sT001
 . . w !,sT000
 . . w !,##class(MARC).genT005(1)
 . . w !,sT100
 . . w !,sT101
 . . w !,sT102
 . . if sT200'="" w !,sT200
 . . if sT300'="" w !,sT300
 . . if sT330'="" w !,sT330
 . . if sT606'="" w !,sT606
 . . if sT607'="" w !,sT607
 . . w !,sT801
 . . w !,sT970
 . . if sM01'=""  w !,sM01
 . . if sM02'=""  w !,sM02
 . . if sM03'=""  w !,sM03
 . . if sM04'=""  w !,sM04
 . . if sM05'=""  w !,sM05
 . . if sM06'=""  w !,sM06
 . . if sM07'=""  w !,sM07
 . . if sM08'=""  w !,sM08
 . . if sT972'=""  w !,sT972
 . . if sHis'=""  w !,sHis
 . . w !,sC99
 . . w !,sT999
 . . w !,"###",!
 . 
 . close ifi
 . use sOLDIO w !,c_" records processed - ok                ",$zdt($h,4)
 . use ofiprot
 . w !!,c_" records processed - ok "
 . use ofiprot w !,"          ======================================"
 
 ; HOLDINGY ;;;;;;;;;;;;;;;;;;;;;;
 s ifi="D:\1\muzeum\1\Sbirky2.csv"
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi_"   Tvorba db Hold"
 if te=1 d  w "  ok"
 else  w "  not ok"
   
 use ofiprot
 w !!
 w !,"          ======================================"
 w !,"          Otvaram subor: "_ifi_"   Tvorba db Hold"
 
 if te=1  d 
 . s ofi="d:\1\muzeum\1\o\"_sTrieda_"_Hold"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 . 
 . s cVendor=0
 .
 . s sT000="000    00148     2200073   450"
 . s sDatAkt=$e(##class(MARC).genT005(),1,8)
 . s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLU-"_sDatAkt
 .
 . s brk=0,c=0,pg=0,c2=0
 . for  q:c=1  d ;zaciname az 2.riadkom
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1
 
 . for  q:brk  d
 . . s sT100="",sT200="",sT300="",sT400="",sHis=""
 . . 
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . if brk=1 q
 . . s c=c+1,pg=pg+1 
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . s sT100s=$p(li,";",1) ;I.c.
 . . s sT400y=$p(li,";",7) ;V.c. = nove 400y
 . . s sT100l=$p(li,";",8) ;Lokace
 . . s sT300w=$p(li,";",11) ;Sk=po nasom "dovod vyradenia"
 . . s sT100t=$p(li,";",12) ;P.c=Trackno
 . . 
 . . s sT400a=""
 . . s sX=$p(li,";",13)     ;Dat.=Datum prijmu, ale ? co je DATNAB
 . . s sXDate=$p(sX,".",3)
 . . s sXDate=sXDate_$e($p(sX,".",2)+100,2,3)
 . . s sXDate=sXDate_$e($p(sX,".",1)+100,2,3)
 . . if sX'="" s sT400a=sXDate
 . . 
 . . s sT300a=$p(li,";",20) ;Inv.
 . . s sT400k=$p(li,";",22) ;NABYTI=ACQM
 . . s sT400d=$p(li,";",23) ;CENA
 . . 
 . . s sX=$p(li,";",25) ;Dodavatel
 . . if sX'="" d
 . . . s sKluc=$g(^TMP("VENDOR",sX))
 . . . if sKluc="" d 
 . . . . s cVendor=cVendor+1
 . . . . s sKluc=cVendor+1000000
 . . . s sKluc="v"_$e(sKluc,2,7)
 . . . s ^TMP("VENDOR",sX)=sKluc
 . . . s sT400b="ntm_un_auth*"_sKluc
 . .
 . . s sT400r=$p(li,";",26) ;DOKLAD(kde je=v zapise,v inv.knihe,v 52.nákup.komisie)
 . . s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLU-"_sDatAkt
 . . 
 . . for i=1:1:$p(li,";",5) d  
 . . . s c2=c2+1
 . . . s sT001=10000000+c
 . . . s sT001=$e(sT001,2,8)
 . . . s sT001b=10000+i
 . . . s sT001b=$e(sT001b,2,5)
 . . . s sT001=sT001_"_"_sT001b
 . . . 
 . . . if (sT100l'="") || (sT100s'="") || (sT100t'="") d
 . . . . s sT100="100    "
 . . . . if sT100l'="" s sT100=sT100_$c(31)_"l"_sT100l
 . . . . if sT100s'="" s sT100=sT100_$c(31)_"s"_sT100s
 . . . . if sT100t'="" s sT100=sT100_$c(31)_"t"_sT100t
 . . . 
 . . . if (sT300a'="") || (sT300w'="")  d
 . . . . s sT300="300    "
 . . . . if sT300a'="" s sT300=sT300_$c(31)_"a"_sT300a
 . . . . if sT300w'="" s sT300=sT300_$c(31)_"w"_sT300w
 . . . 
 . . . if (sT400a'="") || (sT400b'="")||(sT400d'="") || (sT400k'="") || (sT400r'="")||(sT400y'="") d
 . . . . s sT400="400    "
 . . . . if sT400a'="" s sT400=sT400_$c(31)_"a"_sT400a
 . . . . if sT400b'="" s sT400=sT400_$c(31)_"b"_sT400b
 . . . . if sT400d'="" s sT400=sT400_$c(31)_"d"_sT400d
 . . . . if sT400k'="" s sT400=sT400_$c(31)_"k"_sT400k
 . . . . if sT400r'="" s sT400=sT400_$c(31)_"r"_sT400r
 . . . . if sT400y'="" s sT400=sT400_$c(31)_"y"_sT400y
 . . . 
 . . . use ofi
 . . . if (sT300w="A")||(sT300w="AA")||(sT300w="D")||(sT300w="J") d
 . . . . w "# @id "_sTrieda_"UnCatHistH "_sT001
 . . . . s sHis="HIS    "_$c(31)_"a"_sDatAkt_"000000.0"
 . . . . s sHis=sHis_$c(31)_"d"_sTriedaL_"_un_cat"_$c(31)_"k"_sT001
 . . . else  w "# @id "_sTrieda_"UnCatH "_sT001
 . . . w !,"001    "_sT001
 . . . w !,sT000
 . . . w !,##class(MARC).genT005(1)
 . . . if sT100'="" w !,sT100
 . . . if sT200'="" w !,sT200
 . . . if sT300'="" w !,sT300
 . . . if sT400'="" w !,sT400
 . . . if sHis'="" w !,sHis
 . . . w !,sT999
 . . . w !,"###",!
 . 
 . close ifi
 . use sOLDIO
 . w !,c_" records processed - ok"
 . w !,c2_" records writen                                   ",$zdt($h,4)
 . use ofiprot
 . w !!,c_" records processed - ok "
 . w !,c2_" records writen                                   ",$zdt($h,4)
 . use ofiprot w !,"          ======================================"


 ; AUTORITY ;;;;;;;;;;;;;;;;;;;;;;
 s ofi="d:\1\muzeum\1\o\"_sTrieda_"_Auth"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 s sT200="",sT210="",sT215="",sT250="",sT550="",sT980=""
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s sT000="000    00198nx   22000973  450"
 s sT100="100    "_$c(31)_"a"_sDatAkt_"aczey0103    ba"
 s sT152="152    "_$c(31)_"a"_"AACR2"
 s sT801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_200"
 s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLU-"_sDatAkt
 
 s c=0,cSum=0
 s sText=""
 for  set sText=$o(^TMP("PERS",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s sT001=$g(^TMP("PERS",sText))
 .
 . s sT200a=sText
 . if sT200a'="" d
 . . s sT200="200  0 "
 . . s sT200=sT200_$c(31)_"a"_sT200a
 . 
 . ; ZAPIS DO SUBORU AUTH PERS ;;;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT200
 . w !,sT801
 . w !,sC99
 . w !,sT999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" PERS records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" PERS records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"

  
 s c=0
 s sText=""
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_215"
 for  set sText=$o(^TMP("GEO",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s sT001=$g(^TMP("GEO",sText))
 .
 . s sT215a=$p(sText,"+",1)
 . s sT215x=$p(sText,"+",2)
 . if (sT215a'="") || (sT215x'="") d
 . . s sT215="215    "
 . . if sT215a'="" s sT215=sT215_$c(31)_"a"_sT215a
 . . if sT215x'="" s sT215=sT215_$c(31)_"x"_sT215x
 . 
 . ; ZAPIS DO SUBORU AUTH GEO ;;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT215
 . w !,sT801
 . w !,sT999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" GEO records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" GEO records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"

 
 s c=0
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_210_V"
 s sText=""
 for  set sText=$o(^TMP("VENDOR",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s sT001=$g(^TMP("VENDOR",sText))
 .
 . s sT210a=sText
 . if sT210a'="" d
 . . s sT210="210 02 "
 . . s sT210=sT210_$c(31)_"a"_sT210a
 . . s sT980="980    "
 . . s sT980=sT980_$c(31)_"xV"
 . 
 . ; ZAPIS DO SUBORU AUTH VENDOR ;;;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT210
 . w !,sT801
 . w !,sT980
 . w !,sC99
 . w !,sT999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" VENDOR records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" VENDOR records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"

 
 s c=0
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_210_M"
 s sText=""
 for  set sText=$o(^TMP("MADE",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s sT001=$g(^TMP("MADE",sText))
 .
 . s sT210a=sText
 . if sT210a'="" d
 . . s sT210="210 02 "
 . . s sT210=sT210_$c(31)_"a"_sT210a
 . . s sT980="980    "
 . . s sT980=sT980_$c(31)_"xM"
 . 
 . ; ZAPIS DO SUBORU AUTH MADE (vyrobca) ;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT210
 . w !,sT801
 . w !,sT980
 . w !,sC99
 . w !,sT999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" MADE records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" MADE records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"


 s sT001="h000001"
 s sT250a="Elektro"
 if sT250a'="" d
 . s sT250="250    "
 . s sT250=sT250_$c(31)_"a"_sT250a
 . s sT550=""
 . s sT980="980    "
 . s sT980=sT980_$c(31)_"xK"
 
  
 ; ZAPIS DO SUBORU AUTH HESLO (SKUPINA)- TOP ;;;;;;;;
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_250"
 use ofi
 w "# @id "_sTrieda_"UnAuth "_sT001
 w !,"001    "_sT001
 w !,sT000
 w !,##class(MARC).genT005(1)
 w !,sT100
 w !,sT152
 w !,sT250
 w !,sT801
 w !,sT980
 w !,sC99
 w !,sT999
 w !,"###",!


 s sT001="h000100"
 s sT250a="Rozvod el. energie"
 if sT250a'="" d
 . s sT250="250    "
 . s sT250=sT250_$c(31)_"a"_sT250a
 . s sT550="550    "
 . s sT550=sT550_$c(31)_"aElektro"_$c(31)_"y"_"CZ"
 . s sT550=sT550_$c(31)_"3ntm_un_auth*h000001"_$c(31)_"5"_"g" ;*vazba hore
 . s sT980="980    "
 . s sT980=sT980_$c(31)_"xK"
  
 ; ZAPIS DO SUBORU AUTH HESLO (PODSKUPINA)- o 1 uroven od TOP nizsie;;;;
 use ofi
 w "# @id "_sTrieda_"UnAuth "_sT001
 w !,"001    "_sT001
 w !,sT000
 w !,##class(MARC).genT005(1)
 w !,sT100
 w !,sT152
 w !,sT250
 w !,sT550
 w !,sT801
 w !,sT980
 w !,sC99
 w !,sT999
 w !,"###",!

 
 s c=2 ;(za skupinu a poskupinu)
 s sDruh=""
 for  set sDruh=$o(^TMP("DRUH",sDruh)) quit:sDruh=""  do
 . ;use sOLDIO w !,sDruh
 . s c=c+1,cSum=cSum+1 
 . s sText=$g(^TMP("DRUH",sDruh))
 . s sT675a=sDruh/100
 . s sT001=1000000+sDruh
 . s sT001=$e(sT001,2,7)
 . s sT001="h"_sT001
 .
 . s sT250a=sText
 . if sT250a'="" d
 . . s sT250="250    "
 . . s sT250=sT250_$c(31)_"a"_sT250a
 . . s sT550="550    "
 . . s sT550=sT550_$c(31)_"aRozvod el. energie"_$c(31)_"y"_"CZ"
 . . s sT550=sT550_$c(31)_"3ntm_un_auth*h000100"_$c(31)_"5"_"g" ;*vazba hore
 . . s sT675="675    "
 . . s sT675=sT675_$c(31)_"a"_sT675a
 . . s sT980="980    "
 . . s sT980=sT980_$c(31)_"xK"
 
 . 
 . ; ZAPIS DO SUBORU AUTH HESLO (DRUH) ;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT250
 . w !,sT550
 . w !,sT675
 . w !,sT801
 . w !,sT980
 . w !,sC99
 . w !,sT999
 . w !,"###",!

 use sOLDIO
 w !,c_" DRUH records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" DRUH records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"


 s c=0
 s sText=""
 for  set sText=$o(^TMP("HESLO",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s sT001=$g(^TMP("HESLO",sText))
 .
 . s sT250a=sText
 . if sT250a'="" d
 . . s sT250="250    "
 . . s sT250=sT250_$c(31)_"a"_sT250a
 . . s sT980="980    "
 . . s sT980=sT980_$c(31)_"xG"
 
 . ; ZAPIS DO SUBORU AUTH HESLO (DRUH) ;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_sT001
 . w !,"001    "_sT001
 . w !,sT000
 . w !,##class(MARC).genT005(1)
 . w !,sT100
 . w !,sT152
 . w !,sT250
 . ;w !,sT550
 . w !,sT801
 . w !,sT980
 . w !,sC99
 . w !,sT999
 . w !,"###",!
 
 
 use sOLDIO
 w !,c_" HESLO records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" HESLO records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"
 
 
 close ofi

 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov "_sTrieda_"UnAuth = ",cSum
 w !,"------------------------------------------------------------------------"
 
 
 use sOLDIO
 w !!,"Import "_sTrieda_" ukonceny                             ",$zdt($h,4)
 use ofiprot
 w !!,"Import "_sTrieda_" ukonceny                             ",$zdt($h,4)
 close ofiprot
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
]]></Implementation>
</Method>

<Method name="symGenBranchTrx">
<Description><![CDATA[
24.11.04 mk; pridana globalka na doplnenie 100c oddelenia do TRX opodla T04 z holdingu<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t=##class(MARC).getTagX(.handle,"100")
 ;n sItemLname001, handleh, sHVal, sItemClass
 s sHVal=""
 
 ;; dotiahnut kod holdingu
 s sItemLname001=##class(MARC).getSubTagStr(t,"b") ;kod exemplara
 if sItemLname001'="",##class(MARC).readLX(.handleh,sItemLname001,"T") d
 . s sItemClass=$$$HandleClass(handleh)
 . if $e(sItemClass,$l(sItemClass))="H" d
 . . s sHVal=##class(MARC).getTagX(.handleh,"T04a")
  
 if sHVal'="" s t=t_$c(31)_"c"_sHVal

 d ##class(MARC).setTagX(.handle,t)
 q
]]></Implementation>
</Method>

<Method name="XGenAuth">
<Description><![CDATA[
07.04.05 mk; pridane ku generovaniu z C20 aj z C20b 410a<br>
31.03.05 mk; riesenie upravy vyhl. kriteria spolocne pre 200 a 210<br>
31.03.05 mk; riesenie tagu C20 do C16<br>
14.03.05 mk; vlozit c06 tag y krajina ak je<br>
19.03.05 mk; doplnene generovanie aj z C20<br>
01.12.04 ja; pripojenie globalky XGenAuth]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,untag:%Library.String,ictx:%Library.String,lname:%Library.String,katAgent:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 s dbg=""
 w:dbg !,"T001: "_$$$HandleT001(handle)
 // tato globalka generuje autority na zaklade 7XX z katalogu, treba ju pre kazdu 7stovku spustat zvlast
 // po vygenerovani autority zapise link do $3, kontroluje ci uz taka autorita exisutje ak ano tak doplni iba kod do katalogu
 // popis prametrov  untag= tag z katalogu na  zaklade ktoreho je generovana autorita
 //                  ictx= institucia , 
 //                  lname = prefix mena ktore sa zapisuje do 7xx$3
 //                  katAgent= doplna sa do 801
 // s sy="##class(UtilConv).XGenAuth(.handle,""702"",""Umb"",""l"",""BB301"")"
 // s untag="702",ictx="Umb",lname="l",katAgent="BB301"
 
 ; 19.03.05 mk generovanie aj podla C20 do 210 autority
 if (untag="700")||(untag="701")||(untag="702") s unatag="200"
 if (untag="710")||(untag="711")||(untag="712")||(untag="C20") s unatag="210"
 s T700=##class(MARC).getTagX(.handle,untag,-1) 
 s c=$l(T700,$c(10))
 w:dbg !

 f n=1:1:c d
 . w:dbg untag_" o:"_n_" " 
 . 
 . s T700o=$p(T700,$c(10),n)
 . s T700a=##class(MARC).getSubTagStr(T700o,"a")
 . s T700b=##class(MARC).getSubTagStr(T700o,"b")
 . s T700c=##class(MARC).getSubTagStr(T700o,"c")
 . s T700d=##class(MARC).getSubTagStr(T700o,"d")
 . s T700e=##class(MARC).getSubTagStr(T700o,"e")
 . s T700f=##class(MARC).getSubTagStr(T700o,"f")
 . s T700g=##class(MARC).getSubTagStr(T700o,"g")
 . s T700h=##class(MARC).getSubTagStr(T700o,"h")
 . s T700p=##class(MARC).getSubTagStr(T700o,"p") ; u C20 vynimka
 . s T7003=##class(MARC).getSubTagStr(T700o,"3")
 . ; 24.03.05 mk krajina do C06y
 . s T700y=##class(MARC).getSubTagStr(T700o,"y")
 . ; 31.03.05 mk pre C20 z bib do C16 CAV 
 . s T700l=##class(MARC).getSubTagStr(T700o,"l") 
 . s T700m=##class(MARC).getSubTagStr(T700o,"m") 
 . s T700n=##class(MARC).getSubTagStr(T700o,"n") 
 . ; 
 . if T700a="" q
 . 
 . if ((T700a="") && (T700b="")) || (T7003'="") q
 .  
 . 
 . d  
 . . ; w T700a_" "_T700b
 . . ; mk 31.03.05 riesenie spravneho terminu na vyhladavanie abcdf
 . . ; u C20 bez b subtagu 
 . . s hladaj=T700a_" "_T700b_" "_T700c_" "_T700d_" "_T700f
 . . if (untag="C20") s hladaj=T700a_" "_T700c_" "_T700d_" "_T700f ;bez b
 . . s hladaj=" "_##class(Util).trim(hladaj) 
 . . s s1="[]'"_$c(34)  
 . . s hladaj=$tr(hladaj,s1)
 . . s hladaj=$zcvt(hladaj,"l")
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . 
 . . 
 . . // ak existuje uz taky autor tak ho nezapisuj 
 . . ; mk 31.03.05 
 . . ;if '$d(^ooDataTableI(ictx_"UnAuth","au",$ZCVT((" "_T700a_" "_T700b),"L"))) d 
 . . if '$d(^ooDataTableI(ictx_"UnAuth","au",hladaj)) d
 . . . // ak nie je v indexe tak ho zapis do autorit
 . . . w:dbg " !!generujem autoritu!! "
 . . . d ##class(MARC).newX(.handlea,ictx_"UnAuth","new")
 . . . d ##class(MARC).setTagX(.handlea,"000    00542nx   22001813  45")
 . . . d ##class(MARC).setTagX(.handlea,"100    "_$c(31)_"a"_##class(Util).date()_"asloy0103    ba")
 . . . d ##class(MARC).setTagX(.handlea,"152    "_$c(31)_"aAACR2")
 . . . 
 . . . if '$e(T700o,4,7)="   " d
 . . . . s T200=unatag_$e(T700o,4,7) // doplnim indikatory
 . . . else  d  
 . . . . // AK NIE SU DEF INDIKATORY  DEFINUJEM PREDVOLENE
 . . . . if unatag="200" s T200=unatag_"  1 "
 . . . . if unatag="210" s T200=unatag_" 12 "
 . . . 
 . . . if T700a'="" s T200=T200_$c(31)_"a"_T700a
 . . . ; 07.04.05 mk 
 . . . if (untag'="C20") d 
 . . . . if T700b'="" s T200=T200_$c(31)_"b"_T700b
 . . . if T700c'="" s T200=T200_$c(31)_"c"_T700c
 . . . if T700d'="" s T200=T200_$c(31)_"d"_T700d
 . . . if T700e'="" s T200=T200_$c(31)_"e"_T700e  /// korporacie 71X
 . . . if T700f'="" s T200=T200_$c(31)_"f"_T700f
 . . . if T700g'="" s T200=T200_$c(31)_"g"_T700g
 . . . if T700h'="" s T200=T200_$c(31)_"h"_T700h  /// korporacie 71X
 . . . ; mk 31.03.05 
 . . . if (untag'="C20") d 
 . . . . if T700p'="" s T200=T200_$c(31)_"p"_T700p
 . . . 
 . . . d ##class(MARC).setTagX(.handlea,T200)
 . . . ; 14.03.05 mk vlozit c06 tag y krajina ak je
 . . . if T700y'="" d ##class(MARC).setTagX(.handlea,"C06    "_$c(31)_"y"_T700y)
 . . . 
 . . . ; 31.03.05 mk riesenie tagu C16 pre C20
 . . . if (untag="C20") d  ; ak je tag C20 riesit ako vynimku
 . . . . ; 07.04.05 mk pridany tag 410 z 700b preklad nazvu
 . . . . s T400 = ""
 . . . . if T700b'="" s T400="400 12 "_$c(31)_"a"_T700b_$c(31)_"8eng"
 . . . . if T400'="" d ##class(MARC).setTagX(.handlea,T400)
 . . . . s C16=""
 . . . . if T700l'="" s C16=C16_$c(31)_"a"_T700l
 . . . . if T700m'="" s C16=C16_$c(31)_"b"_T700m
 . . . . if T700n'="" s C16=C16_$c(31)_"c"_T700n
 . . . . if T700p'="" s C16=C16_$c(31)_"g"_T700p
 . . . . if C16'="" s C16="C16    "_C16
 . . . . if C16'="" d ##class(MARC).setTagX(.handlea,C16)
 . . . ;
 . . . d ##class(MARC).setTagX(.handlea,"801    "_$c(31)_"aSK"_$c(31)_"b"_katAgent_$c(31)_"c"_##class(Util).date())
 . . . // d ##class(MARC).setTagX(.handlea,"980    "_$c(31)_"x"_kodSpec)
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"b"_katAgent_$c(31)_"d"_"arl-"_##class(Util).date())
 . . . // osobna autorita
 . . . if unatag="200" d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_UN_AUTH_200") 
 . . . if unatag="210" d 
 . . . . // akcia alebo konferencia
 . . . . if ($e(T700o,5,5)="1")  d
 . . . . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_UN_AUTH_210_A")
 . . . . else  d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_UN_AUTH_210_C")
 . . . 
 . . . // w !,"  	write-"_$$$HandleT001(handle)
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . . 
 . . . // testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . // w !,"  	after write-"_$$$HandleT001(handle)
 . . . 
 . . . // dopln do 700$3 kod autority
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . s T700=##class(Util).strswap(T700,T700o,T700o_$c(31)_"3"_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . d ##class(MARC).setTagX(.handle,T700)
 . . . w:dbg t001,!
 . . . 
 . . else  d  
 . . . // doplnim aspon link, ked uz existuje autorita
 . . . s idauth=""
 . . . ; mk 31.03.05 
 . . . ;s idauth=$o(^ooDataTableI(ictx_"UnAuth","au",$ZCVT((" "_T700a_" "_T700b),"L"),""))
 . . . 
 . . . s idauth=$o(^ooDataTableI(ictx_"UnAuth","au",hladaj,""))
 . . . s t001=""
 . . . if idauth'="" d  
 . . . . s t001=##class(MARC).getT001(idauth)
 . . . . s T700=##class(Util).strswap(T700,T700o,T700o_$c(31)_"3"_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . . w:dbg "  !!doplnam iba link!! "_t001,!
 . . . . w:dbg T700,!
 . . . . d ##class(MARC).setTagX(.handle,T700)
]]></Implementation>
</Method>

<Method name="XGenAuth6xx">
<Description><![CDATA[
<pre>

05.11.07 pb; pridany parameter nazov indexu v autoritach
18.09.09 pb; rozsirenie generovania o tagy 600,601,605,606,607,608
09.08.09 pb; oprava chyby swapovania linku v celom multitagu
07.08.07 pb; generovanie autorit na zaklade 6XX z katalogu, treba ju pre kazdu 6xx spustat zvlast
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,untag:%Library.String="",ictx:%Library.String="",lname:%Library.String="",katAgent:%Library.String="",unaidx:%Library.String=""]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 s dbg=""
 w:dbg !,"T001: "_$$$HandleT001(handle)
 // tato globalka generuje autority na zaklade 6XX z katalogu, treba ju pre kazdu 6XX spustat zvlast
 // po vygenerovani autority zapise link do $3, kontroluje ci uz taka autorita existuje, ak ano, tak doplni iba kod do katalogu
 // popis prametrov  untag= tag z katalogu na  zaklade ktoreho je generovana autorita
 //                  ictx= institucia pre objectName
 //                  lname = prefix mena ktore sa zapisuje do 7xx$3 (lname)
 //                  katAgent= doplna sa do 801
 //                  unaidx= index v autoritach, podla ktoreho sa bude vyhladavat autorita, ci uz existuje napr.a210a, a280a
 //
 // s sy="##class(UtilConv).XGenAuth6xx(.handle,""608"",""Sfu"",""sfu"",""SFU"",""a280a"")"
 // s untag="610",ictx="Spu",lname="spu",katAgent="75"
 
 if (untag="")||(ictx="")||(lname="")||(katAgent="") q "UNDEFINED 'untag' or 'ictx' or 'lname' or 'katAgent':   QUIT"
 if unaidx="" s unaidx="au"  ; 05.11.07 pb; novy parameter, dflt je "au"
 
 s s980x="", C99d=""
 if (untag="600") s unatag="200", C99d="DFLT_UN_AUTH_200"              ; osobna autorita
 if (untag="601") s unatag="210", C99d="DFLT_UN_AUTH_210"              ; neskor spresnim, ak ma 601 indikatory
 if (untag="605") s unatag="230", C99d="DFLT_UN_AUTH_230_F"            ; unifikovany nazov - film
 if (untag="606") s unatag="250", C99d="DFLT_UN_AUTH_250"              ; vseobecne predmetove heslo
 if (untag="607") s unatag="215", C99d="DFLT_UN_AUTH_215"              ; unifikovany nazov - miesto
 if (untag="608") s unatag="280", C99d="DFLT_UN_AUTH_280"              ; unifikovany nazov - forma
 if (untag="610") s unatag="250", C99d="dflt_un_auth_250", s980x="K"   ; hesla
 
 if C99d="" q "INVALID tag: "_untag  ; ak nepriradil formular, dany tag nie je osetreny
 
 s unSubTagLink=3
 if untag="610" s unSubTagLink=9
 
 s T6xx=##class(MARC).getTagX(.handle,untag,-1) 
 s c=$l(T6xx,$c(10))
 w:dbg !

 f n=1:1:c d
 . w:dbg untag_" o:"_n_" " 
 . 
 . s T6xxo=$p(T6xx,$c(10),n)
 . s T6xxa=##class(MARC).getSubTagStr(T6xxo,"a")
 . s T6xxb=##class(MARC).getSubTagStr(T6xxo,"b")
 . s T6xxc=##class(MARC).getSubTagStr(T6xxo,"c")
 . s T6xxd=##class(MARC).getSubTagStr(T6xxo,"d")
 . s T6xxe=##class(MARC).getSubTagStr(T6xxo,"e")
 . s T6xxf=##class(MARC).getSubTagStr(T6xxo,"f")
 . s T6xxg=##class(MARC).getSubTagStr(T6xxo,"g")
 . s T6xxh=##class(MARC).getSubTagStr(T6xxo,"h")
 . s T6xx3=##class(MARC).getSubTagStr(T6xxo,"3")
 . if T6xx3="" s T6xx3=##class(MARC).getSubTagStr(T6xxo,"9")  ; pre tag 610
 . ; 
 . if T6xxa="" q
 . 
 . if ((T6xxa="") && (T6xxb="")) || (T6xx3'="") q
 .  
 . 
 . d  
 . . ; riesenie spravneho terminu na vyhladavanie
 . . s hladaj=T6xxa_" "_T6xxb_" "_T6xxc_" "_T6xxd_" "_T6xxe_" "_T6xxf
 . . s hladaj=" "_##class(Util).trim(hladaj) 
 . . s s1="[]'"_$c(34)  ; []"
 . . s hladaj=$tr(hladaj,s1)
 . . s hladaj=$zcvt(hladaj,"l")
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . w:dbg "hladaj=",hladaj,!
 . . 
 . . 
 . . // ak existuje uz taka autorita, tak ju nezapisuj 
 . . ; 05.11.07 pb; nazov indexu ako parameter
 . . ;if '$d(^ooDataTableI(ictx_"UnAuth","au",hladaj)) d
 . . if '$d(^ooDataTableI(ictx_"UnAuth",unaidx,hladaj)) d
 . . . // ak nie je v indexe tak ho zapis do autorit
 . . . w:dbg " !!generujem autoritu!! "
 . . . d ##class(MARC).newX(.handlea,ictx_"UnAuth","new2")   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; cez pocitadlo NEW2 
 . . . d ##class(MARC).setTagX(.handlea,"000    00542nx   22001813  45")
 . . . d ##class(MARC).setTagX(.handlea,"100    "_$c(31)_"a"_##class(Util).date()_"asloy0103    ba")
 . . . d ##class(MARC).setTagX(.handlea,"152    "_$c(31)_"aAACR2")
 . . . 
 . . . 
 . . . // doplnim indikatory a formular pre 210
 . . . if (untag="600") s T2xx=unatag_ "  1 "  
 . . . if (untag="601"),($e(T6xxo,4,7)=" 02 ") s T2xx=unatag_" 02 ", C99d="DFLT_UN_AUTH_210_C"  ; korporacia
 . . . if (untag="601"),($e(T6xxo,4,7)=" 12 ") s T2xx=unatag_" 12 ", C99d="DFLT_UN_AUTH_210_A"  ; akcia
 . . . if (untag="605") s T2xx=unatag_"    "
 . . . if (untag="606") s T2xx=unatag_"    "
 . . . if (untag="607") s T2xx=unatag_"    "
 . . . if (untag="608") s T2xx=unatag_"    "
 . . . if (untag="610") s T2xx=unatag_"    "
 . . . 
 . . . 
 . . . if T6xxa'="" s T2xx=T2xx_$c(31)_"a"_T6xxa
 . . . if T6xxb'="" s T2xx=T2xx_$c(31)_"b"_T6xxb
 . . . if T6xxc'="" s T2xx=T2xx_$c(31)_"c"_T6xxc
 . . . if T6xxd'="" s T2xx=T2xx_$c(31)_"d"_T6xxd
 . . . if T6xxe'="" s T2xx=T2xx_$c(31)_"e"_T6xxe
 . . . if T6xxf'="" s T2xx=T2xx_$c(31)_"f"_T6xxf
 . . . if T6xxg'="" s T2xx=T2xx_$c(31)_"g"_T6xxg
 . . . if T6xxh'="" s T2xx=T2xx_$c(31)_"h"_T6xxh
 . . . 
 . . . 
 . . . d ##class(MARC).setTagX(.handlea,T2xx)
 . . . 
 . . . d ##class(MARC).setTagX(.handlea,"801    "_$c(31)_"aSK"_$c(31)_"b"_katAgent_$c(31)_"c"_##class(Util).date())
 . . . 
 . . . if s980x'="" d
 . . . . d ##class(MARC).setTagX(.handlea,"980    "_$c(31)_"x"_s980x)
 . . . 
 . . . if C99d'="" d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"d"_C99d)
 . . . 
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"b"_katAgent_$c(31)_"d"_"arl-"_##class(Util).date())
 . . . 
 . . . 
 . . . // w !,"  	write-"_$$$HandleT001(handle)
 . . . s st=1
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  cvicne NO WRITE ????????????????????????????
 . . . 
 . . . 
 . . . // testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . // w !,"  	after write-"_$$$HandleT001(handle)
 . . . 
 . . . // dopln do 700$3 kod autority
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . /// 09.08.09 pb; oprava chyby swapovania linku v celom multitagu
 . . . ;s T6xx=##class(Util).strswap(T6xx,T6xxo,T6xxo_$c(31)_"3"_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . s T6xxo=##class(Util).strswap(T6xxo,T6xxo,T6xxo_$c(31)_unSubTagLink_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . s $p(T6xx,$c(10),n)=T6xxo
 . . . 
 . . . d ##class(MARC).setTagX(.handle,T6xx)
 . . . w:dbg t001,!
 . . . 
 . . else  d  
 . . . // doplnim link, ked uz existuje autorita
 . . . s idauth=""
 . . . ; 05.11.07 pb; nazov indexu ako parameter
 . . . ;s idauth=$o(^ooDataTableI(ictx_"UnAuth","au",hladaj,""))
 . . . s idauth=$o(^ooDataTableI(ictx_"UnAuth",unaidx,hladaj,""))
 . . . s t001=""
 . . . if idauth'="" d  
 . . . . s t001=##class(MARC).getT001(idauth)
 . . . . /// 09.08.09 pb; oprava chyby swapovania linku v celom multitagu
 . . . . ;s T6xx=##class(Util).strswap(T6xx,T6xxo,T6xxo_$c(31)_"3"_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . . s T6xxo=##class(Util).strswap(T6xxo,T6xxo,T6xxo_$c(31)_unSubTagLink_$ZCVT(lname,"L")_"_un_auth*"_t001)
 . . . . s $p(T6xx,$c(10),n)=T6xxo
 . . . . 
 . . . . w:dbg "  !!doplnam iba link!! "_t001,!
 . . . . w:dbg T6xx,!
 . . . . d ##class(MARC).setTagX(.handle,T6xx)
]]></Implementation>
</Method>

<Method name="symRepSign">
<Description>
09.12.04 jj; globalecka na opravu sigly na PNP (vyloucit z ni znak ':')
  s sy="##class(UtilConv).symRepSign(.handle)"
  d ^X("s PnpUnCatH 100s [] :")
  d ^X("la")
  d ^X("ls")
  d ^X("gs")</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t100=##class(MARC).getTagX(.handle,"100")
 if t100="" q
 s sig=##class(MARC).getSubTagStr(.t100,"s")
 if sig="" q
 if $f(sig,":") d
 . s sig=##class(Util).strswap(sig,":","")
 . s t100=t100_$c(31)_"s"_sig
 . d ##class(MARC).setTagX(.handle,t100)
 q
]]></Implementation>
</Method>

<Method name="symFillSigla">
<Description>
09.12.04 jj; a jeste jedna na doplneni sigly na ZHL
  s sy="##class(UtilConv).symFillSigla(.handle)"
  d ^X("s ZhlUnCat")
  d ^X("la")
  d ^X("ls")
  d ^X("gs")</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t801=##class(MARC).getTagX(.handle,"801")
 if t801'="" d 
 . s sigla=##class(MARC).getSubTagStr(t801,"b")
 . if sigla="" s t801=t801_$c(31)_"bHC603"
 else  d
 . s t801="801  0 "_$c(31)_"aSK"_$c(31)_"bHC603"_$c(31)_"gAACR2"
 d ##class(MARC).setTagX(.handle,t801)
 q
]]></Implementation>
</Method>

<Method name="symMov606To610">
<Description>
10.12.04 jj; glob. symMov606To610 - presun hesel z 606 do 610
             vcetne hodnot ind.
  s sy="##class(UtilConv).symMov606To610(.handle)"
  d ^X("s PnpUnCat 606")
  d ^X("la")
  d ^X("ls")
  d ^X("gs")
</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s brk=0
 f  q:brk  d
 . s t606=##class(MARC).getTagX(.handle,"606",.c)
 . if 'c s brk=1
 . ; ted odebrat podpole $x,$y,$z
 . s t610="610"_$e(t606,4,7)
 . s tSub=##class(MARC).getSubTagStr(.t606,"3")
 . if tSub'="" s t610=t610_$c(31)_"3"_tSub
 . s tSub=##class(MARC).getSubTagStr(.t606,"a")
 . if tSub'="" s t610=t610_$c(31)_"a"_tSub
 . ;
 . d ##class(MARC).appendTagX(.handle,610)
 
 ;d ##class(MARC).setTagX(.handle,t801)
 q
]]></Implementation>
</Method>

<Method name="symDeleteClaim">
<Description><![CDATA[
<pre>
toto je symbolik na vymaz chybne vygenerovanych upomienok

pouzitie:
1, vymaz upomienok generovanych "dnes"
  s sy="##class(UtilConv).symDeleteClaim(.handle)"
2, vymaz upomienok generovanych v zadany datum
  s sy="##class(UtilConv).symDeleteClaim(.handle,20040228)"

22.01.09 lp; zruseny 1 nekorektni radek kodu v cyklu for
13.11.07 lp; odkazovane trx s pausalni platbou za upominku
             ulozit do savelistu "upo" pro pozdejsi vymazani
18.03.04 rs; dorobena dalsia poistka
28.02.04 rs; vylepsene a spresnene
18.09.03 rs; prva verzia
---</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%String,pnDateDel=""]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 // default je dnesny datum
 if pnDateDel="" s pnDateDel=##class(Util).date()
 
 s c=##class(MARC).recordLineCountX(.handle)

 s R=""
 s bWasSkip=0        ; ci bol aspon jeden riadok oznaceny na vymaz
 s bStopChanges=0    ; ci nastal pripad, kedy sa nesmie nic menit
                     ; toto nastane ak najde riadky na vylucenie
                     ; a za nimi este najde nejaku ne-systemovu
                     ; platbu - sluzi ako dalsia poistka
 
 
 ;w !,"  mod="_$$$HandleModified(handle)
 f i=1:1:c d
 . s lsLine=##class(MARC).getLineX(.handle,i),lsTag=$e(lsLine,1,3)
 . ;w !,"  i="_i_" mod="_$$$HandleModified(handle)
 . if lsLine="" q
 . s skip=0
 . if lsTag="200" d
 . . ; typ operacie Z/R/V/U*/...
 . . s sA=##class(MARC).getSubTagStr(lsLine,"a")
 . . 
 . . ; vybrat operacie vykonane serverom v dany datum
 . . ; datum operacie
 . . s sB=##class(MARC).getSubTagStr(lsLine,"b") q:$e(sB,1,$l(pnDateDel))'=pnDateDel
 . . ; uzivatel
 . . s sC=##class(MARC).getSubTagStr(lsLine,"c")
 . . ; IP-cka
 . . s sE=##class(MARC).getSubTagStr(lsLine,"e") 
 . . if (sC'="sys") || (sE'="server") q
 . . 
 . . ; zmazat ak je to upomienka
 . . if ($e(sA)="U") d  q
 . . . s skip=1
 . . . ; 13.11.07 lp; doplnene vymazani odkazovanych trx
 . . . ;              s pausalni platbou za upominku
 . . . s s4=##class(MARC).getSubTagStr(lsLine,"4")
 . . . if s4'="" s fldUpo(s4)=""
 . . 
 . . ; alebo platba za upomienku
 . . s sL=##class(MARC).getSubTagStr(lsLine,"l")
 . . if ($e(sA)="L") && ($e(sL)="U") s skip=1 q
 . 
 . ; preskocime riadok a nastavime priznak, ze sa tak stalo
 . if skip s bWasSkip=1 q
 . 
 . ; t.j. ak za riadkom, ktory by sa podla predpisu mal
 . ; preskocit je este nejaky iny riadok 200 kt. by
 . ; sa nepreskocil (napr. nejaka platba)
 . ; potom zaznam nebudeme modifikovat
 . if bWasSkip,lsTag="200" s bStopChanges=1
 . 
 . if R'="" s R=R_$c(10)
 . s R=R_lsLine 

 ;w !,"  2/mod="_$$$HandleModified(handle)
 
 if bStopChanges q

 if R'="",bWasSkip d ##class(MARC).setTagX(.handle,R)
 ;w !,"  3/mod="_$$$HandleModified(handle)
 
 ; 13.11.07 lp; odkazovane trx s pausalni platbou za upominku
 ;              ulozit do savelistu "upo" pro pozdejsi vymazani
 s sLink=""
 for
 {
   s sLink=$o(fldUpo(sLink))
   q:sLink=""
   s trxID=##class(MARC).existsT001(##class(Util).lname2objectName($p(sLink,"*",1)),$p(sLink,"*",2))
   q:'trxID
   s ^$$$ListsG($$$ListsLists,"upo",trxID)=""	
 }
]]></Implementation>
</Method>

<Method name="symHoldingLockFixup">
<Description>
vymena stareho blokovania (RL) za format aRL
19.09.03 rs; prva verzia</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Binary]]></FormalSpec>
<Implementation><![CDATA[
 d ##class(MARC).strswapX(.handle,$c(31)_"l1",$c(31)_"lV","200")
 d ##class(MARC).strswapX(.handle,$c(31)_"l2",$c(31)_"lU","200")
 d ##class(MARC).strswapX(.handle,$c(31)_"l3",$c(31)_"lR","200")
 d ##class(MARC).strswapX(.handle,$c(31)_"l4",$c(31)_"lZ","200")
 d ##class(MARC).strswapX(.handle,$c(31)_"l5",$c(31)_"lI","200")
]]></Implementation>
</Method>

<Method name="symSelectL">
<Description><![CDATA[
vyber zaznamov, kt. obsahuju platby negenerovane serverom
(pripadne vsetky)
pomerne jednoucely symbolik, ale da sa podla potreby upravit
na inu podmienku a tak vybrat specificke zaznam, kt.
je normalnym selectom problematicke najst<br><br>

druhy parameter je volitelna podmienka na datum<br>

18.03.04 rs; dorobena moznost vybrat vsetky (vcetne systemovych)<br>
28.02.04 rs<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Binary,pnDateSel:%String="",pbNonSysOnly=1]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s c=##class(MARC).recordLineCountX(.handle)

 s brk=0
 f i=1:1:c  q:brk  d
 . s lsLine=##class(MARC).getLineX(.handle,i),lsTag=$e(lsLine,1,3)
 . if lsLine="" q
 . s skip=0
 . if lsTag="200" d
 . . ; typ operacie Z/R/V/U*/...
 . . s sA=##class(MARC).getSubTagStr(lsLine,"a")
 . . 
 . . ; vybrat operacie vykonane serverom v dany datum
 . . ; datum operacie
 . . s sB=##class(MARC).getSubTagStr(lsLine,"b")
 . . ; podmienka aj datumom
 . . if pnDateSel'="",$e(sB,1,8)'=pnDateSel q
 . . ; uzivatel
 . . if pbNonSysOnly s sC=##class(MARC).getSubTagStr(lsLine,"c") q:sC="sys"
 . . ; IP-cka
 . . if pbNonSysOnly s sE=##class(MARC).getSubTagStr(lsLine,"e") q:sE="server"
 . . 
 . . s sL=##class(MARC).getSubTagStr(lsLine,"l")
 . . if $e(sA)="L" s brk=1 q
  
 s:brk handle("modified")=1
]]></Implementation>
</Method>

<Method name="symSelHoldFromLoc">
<Description><![CDATA[
Vyber holdingu, ktere byly presunuty pohybovou transakci
ze zadane lokace_dislokace,
tzn. vyberou se takove holdingy, ktere maji trx typu E, ve ktere je
v tagu 210 stejna lokace, dislokace jako v holdingu a soucasne
v tagu 220 je zadana lokace, dislokace (ze ktere se na tu soucasnou
presunul)

Priklad pouziti: inventura vymenneho fondu na VY - hledaji se vsechny
holdingy presunute z VF (2_10V) na pobocky v obcich.

posledni parameter je volitelna podminka na datum<br>

19.12.05 lp<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Binary,pLoc:%String="",pDisloc:%String="",pnDateSel:%String=""]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s lsClass=$$$HandleClass(handle)	
 s t001=$$$HandleT001(handle)
 s lname=##class(Util).objectName2lname(lsClass) if lname="" ztrap "ER1"
 s sTerm=lname_"*"_t001_"*e"
 s iprefix=##class(Util).getClassPrefixParam(lsClass) if iprefix="" ztrap "ER2"
 s sTrxClass=iprefix_"Trx"

 ; hledat pohybove trx podle indexu itt - termin " lname*t001*e"
 if '$d(^$$$MarcIndexG(sTrxClass,"itt"," "_sTerm)) q
 
 s sH100=##class(MARC).getTagX(.handle,"100")
 s sHLoc=##class(MARC).getSubTagStr(sH100,"l")
 s sHDisloc=##class(MARC).getSubTagStr(sH100,"d")
 
 s idTrx="",brk=0
 f {
   s idTrx=$o(^$$$MarcIndexG(sTrxClass,"itt"," "_sTerm,idTrx))
   q:((idTrx="")||brk)
   
   ; nacist zaznam trx E a porovnat lokace, dislokace
   if '##class(MARC).getDATAX(.thandle,idTrx) ztrap "ER3"
   ; podminka s datumem
   s trxDate=##class(MARC).getTagX(.thandle,"200b")
   if pnDateSel'="",$e(trxDate,1,8)'=pnDateSel continue
   ; porovnani soucasne lokace, dislokace
   s sT210=##class(MARC).getTagX(.thandle,"210")
   s sTrxLoc=##class(MARC).getSubTagStr(sT210,"c")
   s sTrxDisloc=##class(MARC).getSubTagStr(sT210,"d")
   if (sHLoc'=sTrxLoc)||(sHDisloc'=sTrxDisloc) continue
   ; porovnani predchozi lokace, dislokace
   s sT220=##class(MARC).getTagX(.thandle,"220")
   s sTrxLoc=##class(MARC).getSubTagStr(sT220,"c")
   s sTrxDisloc=##class(MARC).getSubTagStr(sT220,"d")
   if (pLoc'=sTrxLoc)||(pDisloc'=sTrxDisloc) continue
   
   ; holding vyhovuje vsem podminkam, nastavit priznak
   s brk=1
 }

 s:brk handle("modified")=1
]]></Implementation>
</Method>

<Method name="symTrxFixDruhDok">
<Description>
symbolik na doplnenie druhu dok.do transakcie
19.08.04 rs</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; len ak chyba
 s t970b=##class(MARC).getTagX(.handle,"100d")
 if t970b'="" q

 ; precitaj titul
 s tit=##class(MARC).getTagX(.handle,"100b")
 ; ak mame v item holding preved na titul
 if $f(tit,"_h*",tit) s tit=##class(MARC).convHoldT001toTitle(tit,.err) if err'="" q
 if tit="" q
 if '##class(MARC).readLX(.h,tit) q

 s t970b=##class(MARC).getTagX(.h,"970b") 
 if t970b="" q

 ; nastav do zaznamu
 s t100=##class(MARC).getTagX(.handle,"100")
 s t100=##class(MARC).setSubTagStr(t100,$c(31)_"d"_$zcvt(t970b,"L"))
 d ##class(MARC).setTagX(.handle,t100)
]]></Implementation>
</Method>

<Method name="ScdConvCatl">
<Description>
---------------------------------------------
d ##class(UtilConv).ScdConvCatl() vyvolanie programu

11.01.05 pb; program na konverziu dat SCD</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
  /* tvar katalog.listka (1 z podob). Predtym konverzia z Kamnickych do W pomocou cmn_convertcharset
 -------------------------------------------------------

    2.3                             
                                    A 2.3/KAV
                                       (tu je 39x space)
KAVAN, Jßn - TRNKUS, Filip
Urbanistickø priestor : grafickÚ sp¢soby zobrazovania / 

Jßn Kavan, Filip Trnkus. - 1. vyd. - Bratislava : Alfa, 
1988. - 180 s. : 133 obr. - BibliografickÚ odkazy  - (
EdÝcia stavebnej literatÿry).
41.00 Sk. (viaz.)


priestor urbanistickø - zobrazovanie - uÀebnice 
vysokoÜkolskÚ
                              (tu je 30x space)
1        akviz     K          



-------------------------------------------------------
 */
 n ofn,sOLDIO s sOLDIO=$io,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"program na konverziu dat SCD ***************  ",$zdt($h,4)
 
 n sListFiles s sListFiles="d:\1\SCD\1\SCD_files"
 n sCesta s sCesta="d:\1\SCD\1\"
 w !,"otvaram subor: "_sListFiles
 open sListFiles:(/READ):0
 n te s te=$test
 if te=1 d  w "  ok",!
 else  w "  not ok"
  
 if te=1  d
 . s ofi="d:\1\3\SCD_Imp"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 . 
 . s ofiprot="d:\1\3\SCD_Imp_prot"_$r(999)_".txt"
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe SCD                          ",$zdt($h,4),!
 . 
 . s ofidelcat="d:\1\3\SCD_Del_cat"_$r(999)_".txt"
 . open ofidelcat:("NWS":/CREATE):0
 . s ofidelhold="d:\1\3\SCD_Del_hold"_$r(999)_".txt"
 . open ofidelhold:("NWS":/CREATE):0
 
 . 
 . use sListFiles:/POSITION=0
 . d $ZU(68,40,1)
 . n brk,c,c3,pg,sFileName s brk=0,c=0,pg=0,sFileName=""
 . for  q:brk  d
 . . use sListFiles
 . . read sFileName if $zeof'=0 s brk=1
 . . if sFileName="" q
 . . s c=c+1
 . . 
 . . s sFileName0=sFileName
 . . s sFileName=sCesta_sFileName
 . . ;w !,"otvaram subor: "_sFileName
 . . use ofiprot 
 . . w !,"          ======================================"
 . . w !,"          Otvaram subor: "_sFileName
 . . w !,"          ======================================"
 . . open sFileName:(/READ):0
 . . s te=$test
 . . if te=1 d  w "  ok"
 . . else  d  w "  not ok" q
 . . 
 . . use sFileName:/POSITION=0
 . . n brk3,idNew s brk3=0,c3=0
 . . s prcAll=""
 . . for  q:brk3  d
 . . . n brk2,c2,li,lii s brk2=0,c2=0,li="",lii=""
 . . . s pg=pg+1 
 . . . if pg=1  d  use sOLDIO w "." s pg=0
 . . .
 . . . s c3=c3+1
 . . . s idNew=$e(c3+10000000,2,8)
 . . . use ofi
 . . . w "# @id ScdUnCat "_idNew
 . . . w !,"001    "_idNew
 . . . w !,##class(MARC).genT005(1)
 . . . for  q:brk2  d
 . . . . use sFileName
 . . . . read li if $zeof'=0 s brk3=1
 . . . . if brk3 s brk2=1 q
 . . . . if $e(li,1,10)="----------" s brk2=1
 . . . . ;if brk2 q
 . . . . s c2=c2+1
 . . . . ;use sOLDIO w !,c2,"====",li
 . . . . use ofiprot w !,li
 . . . . 
 . . . . use ofi
 . . . . if $e(li,1,10)'="----------" w !,"390    ",$c(31),"a",li
 . . . . if lii'="" s lii=lii_$c(10)
 . . . . if (..fc(li,"ISBN")>1) || (..fc(li," Sk. ")>1) s lii=lii_"#T010="
 . . . . s lii=lii_li
 . . . ;use ofi
 . . . ;w !,lii
 . . . s ^lii(c3_"o")=lii
 . . . 
 . . . s lii=##class(User.Util).strswap(lii,$c(10)_"                                       "_$c(10,10),"#T200=")
 . . . s lii=##class(User.Util).strswap(lii,$c(10)_"                                       "_$c(10),   "#ZAHL=")
 . . . s lii=##class(User.Util).strswap(lii,$c(10)_"                              "_$c(10),"#PRC=")
 . . . s lii=##class(User.Util).strswap(lii,$c(10,10)_"----------","#END=")
 . . . s lii=##class(User.Util).strswap(lii,$c(10,10,10),"#T610=")
 . . . s lii=##class(User.Util).strswap(lii," / ","#T7xx=")
 . . . s lii=##class(User.Util).strswap(lii,". - ","#T2xx=")
 . . . s lii=##class(User.Util).strswap(lii,"  - ","#T3xx=")
 . . . s lii=##class(User.Util).strswap(lii,$c(10,10),$c(10))
 . . . 
 . . . s ^lii(c3_"x")=lii
 . . . 
 . . . n sig,prc,acqm,b215,b610 s sig="",prc="",acqm="",b215="",b610=""
 . . . n sTag,sAuth s sAuth=""
 . . . for i=1:1:..fc(lii,"#") d
 . . . . s sX=$p(lii,"#",i)
 . . . . s sTag="",sT712=""
 . . . . if i=1 s sig=##class(Util).trim($p(sX,$c(10),..fc(sX,$c(10)))) q
 . . . . 
 . . . . if $e(sX,1,$l("ZAHL="))="ZAHL=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"ZAHL=","")
 . . . . . if (..fc($p(sX,$c(10),1),":")>1) || (..fc($p(sX,$c(10),1),"(")>1) d ; v zahlavi je nazov akcie
 . . . . . . ;nazov akcie je v 1. az n-tom riadku 
 . . . . . . for j=1:1:999 d
 . . . . . . . if ..fc($p(sX,$c(10),j),")")>1 d  ;posledny riadok
 . . . . . . . . s sT712=sT712_$p(sX,$c(10),j)
 . . . . . . . . s sTag=$p(sX,$c(10),j+1,999)
 . . . . . . . . s j=1000
 . . . . . . . else  d
 . . . . . . . . s sT712=sT712_$p(sX,$c(10),j)   ;bezny riadok
 . . . . . .
 . . . . . else  d  ;bezne zahlavie s autormi od 2.riadku
 . . . . . . s sTag=$p(sX,$c(10),2,999)
 . . . . . 
 . . . . . s sTag=##class(User.Util).strswap(sTag,$c(10)," ")
 . . . . . s sTag=##class(User.Util).trim(sTag)
 . . . . . if sTag'="" d
 . . . . . . s sTag=##class(User.Util).strswap(sTag," = ",$c(31)_"d") ; subezny nazov
 . . . . . . use ofi w !,"200 1  ",$c(31),"a"_sTag
 . . . . 
 . . . . if $e(sX,1,$l("T200="))="T200=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"T200=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . s sX=##class(User.Util).strswap(sX," = ",$c(31)_"d") ; subezny nazov
 . . . . . use ofi w !,"200 1  ",$c(31),"a"_sX
 . . . . 
 . . . . if sT712'="" d
 . . . . . use ofi w !,"712 12 ",$c(31),"a"_sT712
 . . . .
 . . . . if $e(sX,1,$l("T7xx="))="T7xx=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"T7xx=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . s haut=1
 . . . . . for j=1:1:..fc(sX,", ") d
 . . . . . . s sAuth=$p(sX,", ",j)
 . . . . . . if ..fc(sAuth," ")=2 d
 . . . . . . . s sTag=$c(31)_"a"_$p(sAuth," ",2)_$c(31)_"b"_$p(sAuth," ",1)
 . . . . . . . if haut=1 s sTag=sTag_$c(31)_"4"_"070"
 . . . . . . else  d
 . . . . . . . s haut=0
 . . . . . . . s sTag=$c(31)_"a"_sAuth  ;davam cely retazec ako je, lebo sa to da tazko agoritmizovat
 . . . . . . use ofi
 . . . . . . if j=1 d
 . . . . . . . w !,"700  1 ",sTag
 . . . . . . else  w !,"701  1 ",sTag
 . . . . 
 . . . . if $e(sX,1,$l("T2xx="))="T2xx=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"T2xx=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . if ..fc(sX," vyd")>1 d
 . . . . . . use ofi w !,"205    ",$c(31),"a"_sX
 . . . . . . if $e(sX,$l(sX)-2,$l(sX))="vyd" w "."
 . . . . .
 . . . . . if (..fc(sX," : ")>1) && (..fc(sX,", ")>1) d
 . . . . . . s sTag=$c(31)_"a"_$p(sX," : ",1)_$c(31)_"c"_$p($p(sX," : ",2),", ",1)_$c(31)_"d"_$p(sX,", ",2)
 . . . . . . use ofi w !,"210    ",sTag
 . . . . . 
 . . . . . if b215=1 d  ;ak uz bol T215, ostatne davam do poznamky
 . . . . . . if b610=""  use ofi w !,"300    ",$c(31),"a"_sX
 . . . . . 
 . . . . . if b610=1 d  ;ak uz bol T610, dam do T610 (mala chyba pri swape - napr."stor. 20. - " ==> treba vratit bodku)
 . . . . . . use ofi w ".",!,"610 1  ",$c(31),"a"_sX
 . . . . .
 . . . . . if ..fc(sX," :  obr")>1 d
 . . . . . . s b215=1
 . . . . . . s sX=##class(User.Util).strswap(sX," :  obr",$c(31)_"c"_"obr")
 . . . . . . use ofi w !,"215    ",$c(31),"a"_sX
 . . . . . . if $e(sX,$l(sX)-2,$l(sX))="obr" w "."
 . . . . . 
 . . . . if $e(sX,1,$l("T3xx="))="T3xx=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"T3xx=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . use ofi w !,"300    ",$c(31),"a"_sX
 . . . .
 . . . . if $e(sX,1,$l("T610="))="T610=" d
 . . . . . s b610=1
 . . . . . s sX=##class(User.Util).strswap(sX,"T610=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . for j=1:1:..fc(sX," - ") d
 . . . . . . use ofi w !,"610 1  ",$c(31),"a"_$p(sX," - ",j)
 . . . . 
 . . . . if $e(sX,1,$l("T010="))="T010=" d
 . . . . . s b610=1
 . . . . . s sX=##class(User.Util).strswap(sX,"T010=","")
 . . . . . s sX=##class(User.Util).strswap(sX,$c(10),"")
 . . . . . use ofi w !,"010    ",$c(31),"a"_sX
 . . . . 
 . . . . if $e(sX,1,$l("PRC="))="PRC=" d
 . . . . . s sX=##class(User.Util).strswap(sX,"PRC=","")
 . . . . . for j=1:1:..fc(sX,$c(10)) d
 . . . . . . s sTag=$p(sX,$c(10),j)
 . . . . . . s sTag=##class(User.Util).trim(sTag)
 . . . . . . if ..fc(sTag," ")=3 d
 . . . . . . . if prc'="" s prc=prc_$c(10)
 . . . . . . . if acqm'="" s acqm=acqm_$c(10)
 . . . . . . . s prc=prc_$p(sTag," ",1)
 . . . . . . . s acqm=acqm_$p(sTag," ",3)
 . . . 
 . . . 
 . . . use ofi
 . . . w !,"801  0 ",$c(31),"aSK",$c(31),"bSCD",$c(31),"c",$e(##class(MARC).genT005(),1,8),$c(31),"gAACR2"
 . . . w !,"970    ",$c(31),"bA"
 . . . w !,"999    ",$c(31),"a1",$c(31),"bSCD",$c(31),"cSCD",$c(31),"daRLconv-",$e(##class(MARC).genT005(),1,8)
 . . . w !,"###",!
 . . . 
 . . . ; zapis do ScdUnCatH  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 . . . s nExp=0 ;pocet nezelanych exportov 
 . . . s holdNum=..fc(prc,$c(10))
 . . . if (holdNum=0) && (sig'="") s holdNum=1
 . . . for i=1:1:holdNum d
 . . . . s holdNumNew=$e(i+10000,2,5)
 . . . . if ..fc(prc,$c(10))>0 d
 . . . . . s prc1=$p(prc,$c(10),i)
 . . . . . if ..fc(prcAll,$c(10)_prc1_$c(10))>1 d  ;toto prc uz bolo exportovane
 . . . . . . s nExp=nExp+1
 . . . . . . use ofidelhold w idNew_"_"_holdNumNew_" "_"ScdUnCatH",!
 . . . . . else  d
 . . . . . . s prcAll=prcAll_$c(10)_prc1_$c(10)
 . . . .
 . . . . use ofi
 . . . . w "# @id ScdUnCatH "_idNew_"_"_holdNumNew
 . . . . w !,"001    "_idNew_"_"_holdNumNew
 . . . . w !,##class(MARC).genT005(1)
 . . . . w !,"100    "
 . . . . if $p(prc,$c(10),i)'="" w $c(31)_"t"_$p(prc,$c(10),i)
 . . . . if $p(prc,$c(10),i)'="" w $c(31)_"b"_$p(prc,$c(10),i)  ;poziadavka od Nadi
 . . . . if sig'="" w $c(31)_"s"_sig
 . . . . w $c(31)_"r"_"SCD"
 . . . . w $c(31)_"l"_"SCD"
 . . . . 
 . . . . w !,"200    "_$c(31)_"d"_"30"
 . . . . 
 . . . . if $p(acqm,$c(10),i)'="" w !,"400    "_$c(31)_"k"_$p(acqm,$c(10),i)
 . . . . 
 . . . . w !,"999    ",$c(31),"a1",$c(31),"bSCD",$c(31),"cSCD",$c(31),"daRLconv-",$e(##class(MARC).genT005(),1,8)
 . . . . w !,"###",!
 . . .
 . . . if ..fc(prc,$c(10))>0 d
 . . . . if nExp=..fc(prc,$c(10)) d  ;vsetky holdingy su nezelane exporty
 . . . . . use ofidelcat w idNew_" "_"ScdUnCat",!
 . . 
 . . 
 . . close sFileName
 . . ;use sOLDIO 
 . . ;w !,c2_" record processed - ok"
 . . close ofidelcat
 . . close ofidelhold
 . 
 . close sListFiles
 . ; enable <ENDOFFILE> error
 . d $ZU(68,40,0)
 . use sOLDIO w !,c3_" record processed - ok                ",$zdt($h,4)
 . close ofi
 .  
 . use ofiprot w !,"          ======================================"
 . w !!,c3_" record processed - ok "
 . w !!,"Import SCD ukonceny                             ",$zdt($h,4)
 . close ofiprot
 q
]]></Implementation>
</Method>

<Method name="ScdConvVendor">
<Description>
---------------------------------------------
d ##class(UtilConv).ScdConvVendor() vyvolanie programu

12.01.05 pb; program na konverziu dat SCD - dodavatelia</Description>
<ClassMethod>1</ClassMethod>
<Implementation><![CDATA[
  /* tvar vendor suboru - cast. Znaky v 1.stlpci som si rucne doplnil, je to oznacenie
  /podpola, do ktoreho sa ma konvertovat. Predtym konverzia z Kamnickych do W
  /pomocou cmn_convertcharset

\    ACADEMIA/MATEJOVIC
1a    Mgr. Milos Matejovic
a    turova 9
b    Bratislava
d    811 02
    
    
\    Agentura Carolina
a    Albertov 7/3a
1b    P. O. Box 45
b    Praha
d    128 01
    
    
\    ALEMBIC s.r.o.
1b    Kníhkupectvo LaRedut
a    Palackého 2
b    Bratislava
d    811 01
    
    
\    Architekturni Muzej Ljubljana
    
    
\    Art & interior
b    Praha

 */
 n ofn,sOLDIO s sOLDIO=$io,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"program na konverziu dat SCD Vendor**********  ",$zdt($h,4)
 
 n sListFiles s sListFiles="d:\1\SCD\1\SCD_vendor_files"
 n sCesta s sCesta="d:\1\SCD\1\"
 w !,"otvaram subor: "_sListFiles
 open sListFiles:(/READ):0
 n te s te=$test
 if te=1 d  w "  ok",!
 else  w "  not ok"
  
 if te=1  d
 . s ofi="d:\1\3\SCD_Imp"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 . 
 . s ofiprot="d:\1\3\SCD_Imp_prot"_$r(999)_".txt"
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe SCD Vendor                   ",$zdt($h,4),!
 . 
 . use sListFiles:/POSITION=0
 . d $ZU(68,40,1)
 . n brk,c,c3,pg,sFileName s brk=0,c=0,pg=0,sFileName=""
 . for  q:brk  d
 . . use sListFiles
 . . read sFileName if $zeof'=0 s brk=1
 . . if sFileName="" q
 . . s c=c+1
 . . 
 . . s sFileName0=sFileName
 . . s sFileName=sCesta_sFileName
 . . ;w !,"otvaram subor: "_sFileName
 . . use ofiprot 
 . . w !,"          ======================================"
 . . w !,"          Otvaram subor: "_sFileName
 . . w !,"          ======================================"
 . . open sFileName:(/READ):0
 . . s te=$test
 . . if te=1 d  w "  ok"
 . . else  d  w "  not ok" q
 . . 
 . . s sDatAkt=$e(##class(MARC).genT005(),1,8)
 . . s sT000="000    00198nx   22000973  450"
 . . s sT100="100    "_$c(31)_"a"_sDatAkt_"aczey0103    ba"
 . . s sT152="152    "_$c(31)_"a"_"AACR2"
 . . s sT801="801  0 "_$c(31)_"a"_"SK"_$c(31)_"b"_"SCD"_$c(31)_"c"_sDatAkt
 . . s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_210_V"
 . . s sT999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_"SCD"_$c(31)_"c"_"SCD"_$c(31)_"d"_"aRLU-"_sDatAkt

 . . 
 . . use sFileName:/POSITION=0
 . . n brk3,idNew s brk3=0,c3=0
 . . for  q:brk3  d
 . . . n brk2,c2,li s brk2=0,c2=0,li=""
 . . . s pg=pg+1 
 . . . if pg=1  d  use sOLDIO w "." s pg=0
 . . .
 . . . s sT210a=""
 . . . s sT980a="",sT980b="",sT980c="",sT980d="",sT980e="",sT980f="",sT981a="",sT981b=""
 . . . s b980="", b981=""
 . . . for  q:brk2  d
 . . . . use sFileName
 . . . . read li if $zeof'=0 s brk3=1
 . . . . if brk3 s brk2=1 q
 . . . . if $e(li,1,4)="    " s brk2=1
 . . . . if brk2 q
 . . . . s c2=c2+1
 . . . . ;use sOLDIO w !,c2,"====",li
 . . . . use ofiprot w !,li
 . . . . 
 . . . . s li=##class(User.Util).trim(li)
 . . . . if $e(li,1,1)="\" s sT210a=$p(li," ",2,999)
 . . . . if $e(li,1,1)="a" s sT980a=$p(li," ",2,999)
 . . . . if $e(li,1,1)="b" s sT980b=$p(li," ",2,999)
 . . . . if $e(li,1,1)="c" s sT980c=$p(li," ",2,999)
 . . . . if $e(li,1,1)="d" s sT980d=$p(li," ",2,999)
 . . . . if $e(li,1,1)="e" s sT980e=$p(li," ",2,999)
 . . . . if $e(li,1,2)="1a" s sT981a=$p(li," ",2,999)
 . . . . if $e(li,1,2)="1b" s sT981b=$p(li," ",2,999)
 . . .
 . . . if sT210a'="" d
 . . . . s sT210="210 02 "
 . . . . s sT210=sT210_$c(31)_"a"_sT210a
 . . . . s sT980="980    "
 . . . . s sT981="981    "
 . . . . 
 . . . . if sT980a'="" s sT980=sT980_$c(31)_"a"_sT980a s b980=1
 . . . . if sT980b'="" s sT980=sT980_$c(31)_"b"_sT980b s b980=1
 . . . . if sT980c'="" s sT980=sT980_$c(31)_"c"_sT980c s b980=1
 . . . . if sT980d'="" s sT980=sT980_$c(31)_"d"_sT980d s b980=1
 . . . . if sT980e'="" s sT980=sT980_$c(31)_"e"_sT980e s b980=1
 . . . . s sT980=sT980_$c(31)_"xV"
 . . . . 
 . . . . if sT981a'="" s sT981=sT981_$c(31)_"a"_sT981a s b981=1
 . . . . if sT981b'="" s sT981=sT981_$c(31)_"b"_sT981b s b981=1
 . . . . 
 . . . . s c3=c3+1
 . . . . s idNew="v"_$e(c3+10000000,3,8)
 . . . . 
 . . . . use ofi
 . . . . w "# @id ScdUnAuth "_idNew
 . . . . w !,"001    "_idNew
 . . . . w !,##class(MARC).genT005(1)
 . . . . w !,sT100
 . . . . w !,sT152
 . . . . w !,sT210
 . . . . w !,sT801
 . . . . if b980=1 w !,sT980
 . . . . if b981=1 w !,sT981
 . . . . w !,sC99
 . . . . w !,sT999
 . . . . w !,"###",!
 . . 
 . . 
 . . 
 . . close sFileName
 . . ;use sOLDIO 
 . . ;w !,c2_" record processed - ok"
 . 
 . close sListFiles
 . ; enable <ENDOFFILE> error
 . d $ZU(68,40,0)
 . use sOLDIO w !,c3_" VENDOR records writen                ",$zdt($h,4)
 . close ofi
 .  
 . use ofiprot w !,"          ======================================"
 . w !!,c3_" VENDOR records writen"
 . w !!,"Import SCD vendor ukonceny                             ",$zdt($h,4)
 . close ofiprot
 q
]]></Implementation>
</Method>

<Method name="symGenKatTrx">
<Description><![CDATA[
13.01.05 mk; novy symbolik pre generovanie kategorie citatelov do transakcii<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t=##class(MARC).getTagX(.handle,"100")
 s sUVal=""
 
 ;; dotiahnut kod citatela
 s sU001=##class(MARC).getSubTagStr(t,"a") ;kod citatela
 if sU001'="",##class(MARC).readLX(.handlec,sU001) d
 . s sUVal=##class(MARC).getTagX(.handlec,"100k")
  
 if sUVal'="" s t=t_$c(31)_"k"_sUVal

 d ##class(MARC).setTagX(.handle,t)
 q
]]></Implementation>
</Method>

<Method name="swapNL">
<Description><![CDATA[
17.02.05 mk nova konverzia na odstranenie znakov 13 a 10 zo zaznamu<br>
            zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk
 
 s brk=0,li=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . s li=##class(Util).strswap(li,$c(13)_$c(10),"")
 . if li'="" use outf w li use OU
 . s li=""
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="isoVFtoMarc">
<Description><![CDATA[
17.02.05 mk nova konverzia z VF ISO2709 do riadkoveho formatu <br>
            zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="CavVf",odTag:%String="#",odSubTag:%String="^"</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; trieda standartne CavVf
 ; oddelovac tagov standartne #
 ; oddelovac subtagov standartne ^ 94
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,tag,od,kolko,pocet
 n ciselna,datova,riadok
 
 s brk=0,li="",odd=$c(13)_$c(10)
 n poz,dlzka,j,zac
 s poz=0 ; pozicia na ktoru sa ma nastavit
 s dlzka=0  ;urcenie dlzky kazdeho zaznamu
 s j = 0, zac=1 
  
 for nLine=1:1 q:brk  d
 . ; nacitam dlzku nasledujuceho zaznamu
 . use inf:poz read dlzka#5 if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . if (dlzka'="") && (poz'="") d
 . . ; podla dlzky zaznamu precitat jeden zaznam
 . . use inf:(poz+24) read li#(dlzka-24) if $zeof'=0 s brk=1
 . . s poz = poz + dlzka  ; posunutie pocitadla o cely predchadzajuci zaznam
 . . ; nacitany 1 zaznam
 . . if (li'="") d     ; ak existuje zaznam rozdelime na casti
 . . . ; na zaciatku zapiseme zaciatok zaznamu
 . . . use outf w "# @id "_trieda_" new"_odd use OU
 . . . s ciselna = $p(li,odTag,1) ; prva ciselna cast  
 . . . s datova = $e(li,$l(ciselna)+1,99999) ; datova cast nasleduje za ciselnou
 . . . s pocet=$l(ciselna)/12     ; pocet tagov
 . . . for j=1:1:pocet d
 . . . . s rada = $e(ciselna,zac,j*12)
 . . . . s zac = zac + 12
 . . . . s tag=$e(rada,1,3)  ; cislo tagu
 . . . . s kolko=$e(rada,4,7) ; kolko znakov nacitat
 . . . . s od=$e(rada,8,12)  ; od ktoreho znaku citat
 . . . . ; vyber hodnot z datovej premennej
 . . . . s riadok=$e(datova,od+2,od+kolko)
 . . . . s riadok=##class(Util).strswap(riadok,odSubTag,$c(31))
 . . . . ; mk 16.03.05 riesenie nepovoleneho znaku 32 neviditelna medzera
 . . . . s riadok=##class(Util).strswap(riadok,$c(32)," ")
 . . . . ; mk 16.03.05 ak nema tag ziadny subtag  dat subtag x
 . . . . ; u tagu 002 nepridavat u tagu 001, 006 a 008 doplnit X01,X06 a X08
 . . . . if tag'="002" d  ; s tagom 002 sa nebude robit nic
 . . . . . if ($e(tag,1,2)="00") s tag=##class(Util).strswap(tag,"00","X0")
 . . . . . if $e(riadok,1,1)'=$c(31) s riadok=$c(31)_"x"_riadok
 . . . . if tag'="" use outf w tag_"    "_riadok_odd use OU
 . . . ; na konci zapiseme ukoncenie zaznamu
 . . . use outf w "###"_odd use OU
 . . s li="",zac=1
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="isoUNtoMarc">
<Description><![CDATA[
11.03.05 mk nova konverzia z UN ISO2709 do riadkoveho formatu <br>
            zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="ZhlUnCat"</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; trieda standartne ZhlUnCat
 ; oddelovac tagov standartne $c(30)
 ; oddelovac subtagov standartne $c(31)
 n odTag, odSubTag
 s odTag = $c(30)	
 s odSubTag = $c(31)	
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,tag,od,kolko,pocet
 n ciselna,datova,riadok
 
 s brk=0,li="",odd=$c(13)_$c(10)
 n poz,dlzka,j,zac
 s poz=0 ; pozicia na ktoru sa ma nastavit
 s dlzka=0  ;urcenie dlzky kazdeho zaznamu
 s j = 0, zac=1 
  
 for nLine=1:1 q:brk  d
 . ; nacitam dlzku nasledujuceho zaznamu
 . use inf:poz read dlzka#5 if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . if (dlzka'="") && (poz'="") d
 . . ; podla dlzky zaznamu precitat jeden zaznam
 . . use inf:(poz+24) read li#(dlzka-24) if $zeof'=0 s brk=1
 . . s poz = poz + dlzka  ; posunutie pocitadla o cely predchadzajuci zaznam
 . . ; nacitany 1 zaznam
 . . if (li'="") d     ; ak existuje zaznam rozdelime na casti
 . . . ; na zaciatku zapiseme zaciatok zaznamu
 . . . use outf w "# @id "_trieda_" new"_odd use OU
 . . . s ciselna = $p(li,odTag,1) ; prva ciselna cast  
 . . . s datova = $e(li,$l(ciselna)+1,99999) ; datova cast nasleduje za ciselnou
 . . . s pocet=$l(ciselna)/12     ; pocet tagov
 . . . for j=1:1:pocet d
 . . . . s rada = $e(ciselna,zac,j*12)
 . . . . s zac = zac + 12
 . . . . s tag=$e(rada,1,3)  ; cislo tagu
 . . . . s kolko=$e(rada,4,7) ; kolko znakov nacitat
 . . . . s od=$e(rada,8,12)  ; od ktoreho znaku citat
 . . . . ; vyber hodnot z datovej premennej
 . . . . s riadok=$e(datova,od+2,od+kolko)
 . . . . s riadok=##class(Util).strswap(riadok,odSubTag,$c(31))
 . . . . if tag'="" d
 . . . . . if $e(tag,1,2)="00" d  use outf w tag_"    "_riadok_odd use OU
 . . . . . if $e(tag,1,2)'="00" d 
 . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . use outf w tag_" "_riadok_odd use OU
 . . . ; na konci zapiseme ukoncenie zaznamu
 . . . use outf w "###"_odd use OU
 . . s li="",zac=1
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="genAutVfToUn">
<Description><![CDATA[
18.03.05 mk konverzia autorit riadkovy format VF do UN<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,riadok
 s riadok = ""
 n sub1,sub2,sub3,sub4,sub5,sub6,sub7
 s sub1="",sub2="",sub3="",sub4="",sub5="",sub6="",sub7=""
 n synonyma,all
 s synonyma="",all=""
 
 s brk=0,li=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1   ;precita 1. riadok
 . ; v li vsetky data
 . if $e(li,1,3)="# @" d 
 . . s li=##class(Util).strswap(li,"# @id CavVf","# @id CavUnAuth")
 . . s li=li_$c(13)_$c(10)_"000    00000nx   22        450"
 . . s li=li_$c(13)_$c(10)_"005    20050318000000.0"
 . . s li=li_$c(13)_$c(10)_"100    "_$c(31)_"a20050318cczea103    ba"
 . . s li=li_$c(13)_$c(10)_"150    "_$c(31)_"ay"
 . . s li=li_$c(13)_$c(10)_"152    "_$c(31)_"aAACR2"
 . if $e(li,1,3)="961" d ; pracovisko
 . . s li=##class(Util).strswap(li,"961    "_$c(31)_"x","") 
 . . s sub1 = li, li = ""
 . if $e(li,1,3)="906" s li = "" ; vymazat 
 . if $e(li,1,3)="960" d ; rodne cislo
 . . s li=##class(Util).strswap(li,"960    "_$c(31)_"x","") 
 . . s sub2 = li, li = ""
 . if $e(li,1,3)="903" d ; priezvisko a meno
 . . s li=##class(Util).strswap(li,"903    "_$c(31)_"x","") 
 . . s li=$p(li,":",1)
 . . s sub3="",sub4=""
 . . s sub3=$zstrip($p(li,",",1),"<>W")  ; priezvisko
 . . s sub4=$zstrip($p(li,",",2),"<>W")  ; meno
 . . s li=""
 . . if sub3'="" s li=$c(31)_"a"_sub3
 . . if sub4'="" s li=li_$c(31)_"b"_sub4
 . . if li'="" s li="200  1 "_li
 . ; 
 . if $e(li,1,3)="962" d ; priezvisko a meno
 . . s li=##class(Util).strswap(li,"962    "_$c(31)_"x","") 
 . . s li=$p(li,":",1)
 . . s sub5="",sub6=""
 . . s sub5=$zstrip($p(li,",",1),"<>W")  ; priezvisko
 . . s sub6=$zstrip($p(li,",",2),"<>W")  ; meno
 . . s li="",synonyma=""
 . . if sub5'="" s synonyma=$c(31)_"a"_sub5
 . . if sub6'="" s synonyma=synonyma_$c(31)_"b"_sub6
 . . if synonyma'="" d
 . . . if all'="" s all=all_$c(13)_$c(10)_"400  1 "_synonyma
 . . . if all="" s all="400  1 "_synonyma
 . ; 
 . if $e(li,1,3)="###" d
 . . ; zapracovat 400 tagy z all
 . . s riadok = all
 . . if riadok'="" d
 . . . s sub7=""
 . . . if sub1'="" s sub7=$c(31)_"d"_sub1
 . . . if sub2'="" s sub7=sub7_$c(31)_"e"_sub2
 . . . if sub7'="" s sub7="C06    "_sub7
 . . . s riadok=riadok_$c(13)_$c(10)_sub7
 . . if riadok="" d
 . . . if sub1'="" s riadok=$c(31)_"d"_sub1
 . . . if sub2'="" s riadok=riadok_$c(31)_"e"_sub2
 . . . if riadok'="" s riadok="C06    "_riadok
 . . if riadok'="" s riadok=riadok_$c(13)_$c(10)_"C99    "_$c(31)_"dDFLT_UN_AUTH_200"
 . . if riadok="" s riadok="C99    "_$c(31)_"dDFLT_UN_AUTH_200"
 . . if riadok'="" s riadok=riadok_$c(13)_$c(10)_"999    "_$c(31)_"a1"_$c(31)_"bCAV"_$c(31)_"cCAV"
 . . if riadok="" s riadok="999    "_$c(31)_"a1"_$c(31)_"bCAV"_$c(31)_"cCAV"
 . . s sub1="",sub2="",sub5="",sub6="",all="",synonyma="",sub7=""
 . . s li=riadok_$c(13)_$c(10)_li
 . . ;
 . if li'="" use outf w li_$c(13)_$c(10) use OU
 . s li=""
 . s prva = "1"
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="genCitWToUn">
<Description><![CDATA[
18.03.05 mk konverzia citatelov riadkovy format z WORDU s pevnou dlzkou do UN<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,meno,barcod,heslo,t100,t400
 s meno="",barcod="",heslo="",t100="",t400=""
 
 s brk=0,li=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1   ;precita 1. riadok
 . ; v li vsetky data jeden riadok 1 zaznam
 . if li'="" d 
 . . s meno=$zstrip($e(li,1,52),"<>W")  ; nazov institucie
 . . s barcod=$zstrip($e(li,53,76),"<>W")  ; skratka 
 . . s heslo=$zstrip($e(li,77,79),"<>W")  ; heslo
 . . s li=""
 . . s li="# @id CavIsUser new"
 . . s li=li_$c(13)_$c(10)_"005    20050318000000.0"
 . . s t100="100    "
 . . if meno'="" s t100=t100_$c(31)_"a"_meno
 . . if barcod'="" s t100=t100_$c(31)_"b"_barcod
 . . s t100=t100_$c(31)_"k1"
 . . s t100=t100_$c(31)_"tB"
 . . if t100'="" s li=li_$c(13)_$c(10)_t100
 . . ;
 . . s t400="400    "
 . . s t400=t400_$c(31)_"d20050318"
 . . s t400=t400_$c(31)_"c9999"
 . . if heslo'="" s t400=t400_$c(31)_"w"_heslo
 . . s t400=t400_$c(31)_"z20050318"
 . . if t400'="" s li=li_$c(13)_$c(10)_t400
 . . ;
 . . s li=li_$c(13)_$c(10)_"C99    "_$c(31)_"dDFLT_ISUSER"
 . . s li=li_$c(13)_$c(10)_"999    "_$c(31)_"a1"_$c(31)_"bCAV"_$c(31)_"cCAV"
 . . s li=li_$c(13)_$c(10)_"###"
 . if li'="" use outf w li_$c(13)_$c(10) use OU
 . s li=""
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="genLinkUserCav">
<Description><![CDATA[
19.03.05 mk; generovanie C99e z citatalov CAV podla bc 100b<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 // tato globalka generuje vazbu v bib zazname C26e, podla citatela bc 100b
 // do 999e v tvare cav_is_user*0000001
 
 s tC26e=##class(MARC).getTagX(.handle,"C26e") 
 
 if tC26e="" q  ; ak nie je tak skoncit
 s tC26e=$zcvt(tC26e,"l")
 ;w !,"tC26e ",tC26e

 if $d(^ooDataTableI("CavIsUser","bc"," "_tC26e)) d  ;ak existuje citatel
 . ; doplni sa link do bib zaznamu 
 . s idcit=""
 . s idcit=$o(^ooDataTableI("CavIsUser","bc"," "_tC26e,""))
 . ;w !,"idcit ",idcit
 . s t001=""
 . if idcit'="" d  ; ak existuje citatel
 . . s t001=##class(MARC).getT001(idcit)  ; dotiahne kod citatela
 . . ;w !,"kod ",t001
 . . s t999=""
 . . s t999=##class(MARC).getTagX(.handle,"999") ; dotiahnutie tagu 999
 . . s t999=t999_$c(31)_"e"_"cav_is_user*"_t001  ; doplni tag 999e
 . . d ##class(MARC).setTagX(.handle,t999) ; urobi zapis tagu 999
 q
]]></Implementation>
</Method>

<Method name="genAuthEdition">
<Description><![CDATA[
19.04.05 mk; globalka na generovanie autority edicie 230e z 225 a gen 410<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,ictx:%Library.String,lname:%Library.String,katAgent:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; tato globalka generuje autority na zaklade 225 katalogu
 ; po vygenerovani autority zapise link do $3, kontroluje ci uz taka autorita exisutje ak ano tak doplni iba kod do katalogu
 ; s sy="##class(UtilConv).genAuthEdition(.handle,""Vsvu"",""vsvu"",""BA308"")"
 ; select len na tie zaznamy, ktore nemaju 410

 s T225=##class(MARC).getTagX(.handle,"225",-1) 
 s c=$l(T225,$c(10))

 f n=1:1:c d
 . s T225o=$p(T225,$c(10),n)
 . s T225a=##class(MARC).getSubTagStr(T225o,"a")  ; nazov edicie
 . s T225h=##class(MARC).getSubTagStr(T225o,"h")  ; cislo podedicie
 . s T225i=##class(MARC).getSubTagStr(T225o,"i")  ; nazov podedicie
 . if T225a="" q
 . s hladaj=T225a_" "_T225h_" "_T225i
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]'"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . ;
 . ; ak existuje uz taky autor tak ho nezapisuj 
 . if '$d(^ooDataTableI(ictx_"UnAuth","au",hladaj)) d
 . . ; ak nie je v indexe tak ho zapis do autorit
 . . d ##class(MARC).newX(.handlea,ictx_"UnAuth","new")
 . . d ##class(MARC).setTagX(.handlea,"000    00000nx   22001813  450")
 . . d ##class(MARC).setTagX(.handlea,"100    "_$c(31)_"a"_##class(Util).date()_"asloy0103    ba")
 . . d ##class(MARC).setTagX(.handlea,"150    "_$c(31)_"ay")
 . . d ##class(MARC).setTagX(.handlea,"152    "_$c(31)_"aAACR2")
 . . ; tag 230
 . . s T230="230"_"    "
 . . if T225a'="" s T230=T230_$c(31)_"a"_T225a
 . . if T225h'="" s T230=T230_$c(31)_"h"_T225h
 . . if T225i'="" s T230=T230_$c(31)_"i"_T225i
 . . d ##class(MARC).setTagX(.handlea,T230)
 . . d ##class(MARC).setTagX(.handlea,"801    "_$c(31)_"aSK"_$c(31)_"b"_katAgent_$c(31)_"c"_##class(Util).date())
 . . d ##class(MARC).setTagX(.handlea,"980    "_$c(31)_"xE")
 . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"b"_katAgent_$c(31)_"d"_"arl-"_##class(Util).date())
 . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_UN_AUTH_230E") 
 . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . ; dopln do 410 kod autority
 . . s t001="" s t001=$$$HandleT001(handlea)
 . . s T410="410  0 "_$c(31)_"1001  "_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"150010"_$c(31)_"a"_T225a
 . . d ##class(MARC).setTagX(.handle,T410)
 . else  d  
 . . ; doplnim aspon link, ked uz existuje autorita
 . . s idauth=""
 . . s idauth=$o(^ooDataTableI(ictx_"UnAuth","au",hladaj,""))
 . . s t001=""
 . . if idauth'="" d  
 . . . s t001=##class(MARC).getT001(idauth)
 . . . s T410="410  0 "_$c(31)_"1001  "_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"150010"_$c(31)_"a"_T225a
 . . . d ##class(MARC).setTagX(.handle,T410)
]]></Implementation>
</Method>

<Method name="genAuthPub">
<Description><![CDATA[
20.04.05 mk; globalka na generovanie autority vydavatelov 210p z 210 a gen 928<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,ictx:%Library.String,lname:%Library.String,katAgent:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; tato globalka generuje autority na zaklade 210 katalogu
 ; po vygenerovani autority zapise link do $3, kontroluje ci uz taka autorita exisutje ak ano tak doplni iba kod do katalogu
 ; s sy="##class(UtilConv).genAuthPub(.handle,""Vsvu"",""vsvu"",""BA308"")"
 ; select len na tie zaznamy, ktore nemaju 928

 s T210=##class(MARC).getTagX(.handle,"210") 
 s T210cA=##class(MARC).getSubTagStr(T210,"c",-1)  ; nazov vydavatela
 s T210aA=##class(MARC).getSubTagStr(T210,"a",-1)  ; miesto vydania
 s c=$l(T210cA,$c(10))
 ;w !,"tag 210c ",T210cA
 s T928=""

 f n=1:1:c d
 . s T210a=$p(T210aA,$c(10),n)
 . s T210c=$p(T210cA,$c(10),n)
 . ;w !,"xxx ",T210c," ",T210a
 . ;s T210a=##class(MARC).getSubTagStr(T210o,"a")  ; miesto vydania
 . ;s T210c=##class(MARC).getSubTagStr(T210o,"c")  ; nazov vydavatela
 . if T210c="" q  ; ak je nazov vydavatela prazdny preskoc
 . s hladaj=T210c    ; kontrolovat len meno vydavatela a miesto az po najdeni zaznamu
 . s hladaj=hladaj_" "_T210a
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]'"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . ;
 . ; ak existuje uz taky autor tak ho nezapisuj 
 . if '$d(^ooDataTableI(ictx_"UnAuth","aucp",hladaj)) d
 . . ; ak nie je v indexe tak ho zapis do autorit
 . . d ##class(MARC).newX(.handlea,ictx_"UnAuth","new")
 . . d ##class(MARC).setTagX(.handlea,"000    00000nx   22001813  450")
 . . d ##class(MARC).setTagX(.handlea,"100    "_$c(31)_"a"_##class(Util).date()_"asloy0103    ba")
 . . d ##class(MARC).setTagX(.handlea,"152    "_$c(31)_"aAACR2")
 . . ; tag 210 autority
 . . s A210="210"_" 02 "
 . . if T210c'="" s A210=A210_$c(31)_"a"_T210c
 . . ;if T210h'="" s A210=A210_$c(31)_"c"_T210c
 . . d ##class(MARC).setTagX(.handlea,A210)
 . . d ##class(MARC).setTagX(.handlea,"801    "_$c(31)_"aSK"_$c(31)_"b"_katAgent_$c(31)_"c"_##class(Util).date())
 . . s A980="980    "
 . . if T210a'="" s A980=A980_$c(31)_"b"_T210a
 . . s A980=A980_$c(31)_"xP"
 . . d ##class(MARC).setTagX(.handlea,A980)
 . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"b"_katAgent_$c(31)_"d"_"arl-"_##class(Util).date())
 . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_UN_AUTH_210_P") 
 . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . ; dopln do 928 kod autority
 . . s t001="" s t001=$$$HandleT001(handlea)
 . . if T928'="" s T928=T928_$c(10)_"928    "_$c(31)_"3"_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"a"_T210c
 . . if T928="" s T928="928    "_$c(31)_"3"_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"a"_T210c
 . . ;d ##class(MARC).setTagX(.handle,T928)
 . else  d  
 . . ; doplnim aspon link, ked uz existuje autorita
 . . s idauth=""
 . . s idauth=$o(^ooDataTableI(ictx_"UnAuth","aucp",hladaj,""))
 . . s t001=""
 . . if idauth'="" d  
 . . . s t001=##class(MARC).getT001(idauth)
 . . . ; kontrola na zhodu miest 980b autority
 . . . s A980b = "" 
 . . . if ##class(MARC).readLX(.handlea,$zcvt(lname,"L")_"_un_auth*"_t001) s A980b=##class(MARC).getTagX(.handlea,"980b") 
 . . . ; ak nie je mesto prazdne a nezhoduje sa s autoritou zalozit novu autoritu
 . . . if T928'="" s T928=T928_$c(10)_"928    "_$c(31)_"3"_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"a"_T210c
 . . . if T928="" s T928="928    "_$c(31)_"3"_$zcvt(lname,"L")_"_un_auth*"_t001_$c(31)_"a"_T210c
 
 if T928'="" d ##class(MARC).setTagX(.handle,T928)
 q
]]></Implementation>
</Method>

<Method name="genSort210">
<Description><![CDATA[
01.06.05 mk; globalka na usporiadanie opakovani podpoli 210 tagu po konverzii z RL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; globalka sluzi k usporiadaniu subtagov tagu 210 abcd

 s T210=##class(MARC).getTagX(.handle,"210") ;single subtagy su opakovatelne
 s c=$l(T210,$c(31))   ;pocet opakovani subtagov
 s subtag = ""
 s suba="",subb="",subc="",subd="",sube="",subf="",subg="",subh=""
 s znak=""
 s T210new=""
 s n=0
 ; d sa dava vzdy k poslednemu 

 ; cyklus na rozdelenie samotnych subtagov do skupin
 f n=1:1:c d
 . s subtag=$p(T210,$c(31),n)
 . ; prvy znak je kod subtagu
 . s znak=$e(subtag,1,1)  
 . s subtag=$e(subtag,2,9999) 
 . ; rozskatulkovanie podla druhu subtagu
 . if znak="a" s suba=suba_$c(31)_subtag 
 . if znak="b" s subb=subb_$c(31)_subtag 
 . if znak="c" s subc=subc_$c(31)_subtag 
 . if znak="d" d
 . . if subtag'="" d  s subd=subd_$c(31)_subtag 
 . if znak="e" s sube=sube_$c(31)_subtag 
 . if znak="f" s subf=subf_$c(31)_subtag 
 . if znak="g" s subg=subg_$c(31)_subtag 
 . if znak="h" s subh=subh_$c(31)_subtag 
 ;w !,"znak ",znak," suba ",suba
 ;orezat
 if $e(suba,1,1)=$c(31) d  s suba=$e(suba,2,9999)
 if $e(subb,1,1)=$c(31) d  s subb=$e(subb,2,9999)
 if $e(subc,1,1)=$c(31) d  s subc=$e(subc,2,9999)
 if $e(subd,1,1)=$c(31) d  s subd=$e(subd,2,9999)
 if $e(sube,1,1)=$c(31) d  s sube=$e(sube,2,9999)
 if $e(subf,1,1)=$c(31) d  s subf=$e(subf,2,9999)
 if $e(subg,1,1)=$c(31) d  s subg=$e(subg,2,9999)
 if $e(subh,1,1)=$c(31) d  s subh=$e(subh,2,9999)
 
 
 s nPocet=0
 s nPocetmax=0
 s nPocetmax2=0
 s nPocetmax=$l(suba,$c(31))
 s nPocetmax2=$l(suba,$c(31))
 ;w !,"ok1"
 s nPocet=$l(subb,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 if nPocet>nPocetmax2 s nPocetmax2=nPocet
 ;w !,"ok2"
 s nPocet=$l(subc,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 if nPocet>nPocetmax2 s nPocetmax2=nPocet
 s nPocet=$l(subd,$c(31))
 ;w !,"ok3"
 if nPocet>nPocetmax s nPocetmax=nPocet
 s nPocet=$l(sube,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 s nPocet=$l(subf,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 s nPocet=$l(subg,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 s nPocet=$l(subh,$c(31))
 if nPocet>nPocetmax s nPocetmax=nPocet
 
 ;w !,"pocet ",nPocetmax," pocet2 ",nPocetmax2
  
 s sa="",sb="",sc="",sd="",se="",sf="",sg="",sh=""
 ; uz nacitanie samotneho noveho tagu 210
 f n=1:1:nPocetmax d    ; podla max poctu opakovani jedneho zo subtagov
 . s sa=$p(suba,$c(31),n)
 . s sb=$p(subb,$c(31),n)
 . s sc=$p(subc,$c(31),n)
 . s sd=$p(subd,$c(31),n)
 . s se=$p(sube,$c(31),n)
 . s sf=$p(subf,$c(31),n)
 . s sg=$p(subg,$c(31),n)
 . s sh=$p(subh,$c(31),n)
 . ;w !, "o.k. ",sa,sc,sd
 . if sa'="" s T210new=T210new_$c(31)_"a"_sa
 . if sb'="" s T210new=T210new_$c(31)_"b"_sb
 . ;;;;;;
 . if $l(subc,$c(31))=1 d    ; ak je len 1 vyskyt c 
 . . if nPocetmax2=n s T210new=T210new_$c(31)_"c"_subc 
 . if $l(subc,$c(31))>1 d
 . . if sc'="" s T210new=T210new_$c(31)_"c"_sc
 . ;if sc'="" s T210new=T210new_$c(31)_"c"_sc
 . ;w !,"210 ",T210new
 . ; vzdy az po poslednom vyskyte (abc)
 . if $l(subd,$c(31))=1 d    ; ak je len 1 vyskyt
 . . if nPocetmax2=n s T210new=T210new_$c(31)_"d"_subd 
 . if $l(subd,$c(31))>1 d
 . . if sd'="" s T210new=T210new_$c(31)_"d"_sd
 . if se'="" s T210new=T210new_$c(31)_"e"_se
 . if sf'="" s T210new=T210new_$c(31)_"f"_sf
 . if sg'="" s T210new=T210new_$c(31)_"g"_sg
 . if sh'="" s T210new=T210new_$c(31)_"h"_sh
  
 if T210new'="" s T210new="210    "_T210new
 
 d ##class(MARC).setTagX(.handle,T210new)
]]></Implementation>
</Method>

<Method name="symGenCenaH">
<Description><![CDATA[
01.06.05 mk; novy symbolik pre generovanie 400c a d holdingu z 010 bib zaznamu<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; nesmie uz existovat v tagu 400 c a d subtag	
 s t400=##class(MARC).getTagX(.handle,"400")
 ; tu sa doplni c a d cena 
 s lsClass=##class(MARC).recordClassX(.handle)
 s t001=##class(MARC).recordT001X(.handle)
 
 s la=""
 if ##class(MARC).readLX(.handlet,"scd_un_cat*"_$p(t001,"_",1)) d 
 . s la=##class(MARC).getTagX(.handlet,"010a")
 . s pocet=$l(la,":")
 . if $l(la," Sk")>0 d   ; len ak je v texte Sk ako cena
 . . ; 
 . . if pocet > 0 d   ; ak je v tvare isbn : cena
 . . . s la=$p(la,":",2) ; zobrat druhu cast
 . . . s la=$p(la," Sk",1) ; prva cast pred cenou
 . . . s la=##class(Util).trim(la) ; odseparovanie medzier
 . . if pocet < 1 d   ; ak je v tvare cena
 . . . s la=$p(la," Sk",1) ; prva cast pred cenou
 . . . s la=##class(Util).trim(la) ; odseparovanie medzier
	
 
 if (la'="") d
 . if t400'="" s t400=t400_$c(31)_"c"_la_$c(31)_"d"_la
 . if t400="" s t400="400    "_$c(31)_"c"_la_$c(31)_"d"_la
 
 if t400'="" d ##class(MARC).setTagX(.handle,t400)
 q
]]></Implementation>
</Method>

<Method name="genSortC05">
<Description><![CDATA[
07.06.05 mk; globalka na usporiadanie opakovani podpoli C05<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; globalka sluzi k usporiadaniu subtagov tagov C05 podla poradia 3,u,4,x,y,z
 s TC05=##class(MARC).getTagX(.handle,"C05",-1) ;tag je opakovatelny, subtagy neopakovatelne 
 s c=$l(TC05,$c(10))   ;pocet opakovani tagu
 s sub3="",subu="",sub4="",subx="",suby="",subz=""
 s TC05new="", TC05s="",n=0,tag=""
  
 f n=1:1:c d
 . s tag=$p(TC05,$c(10),n)  ; nacitanie jedneho tagu 
 . s TC05s=$e(tag,1,7)   
 . s sub3=##class(MARC).getSubTagStr(tag,"3")
 . s subu=##class(MARC).getSubTagStr(tag,"u")
 . s sub4=##class(MARC).getSubTagStr(tag,"4")
 . s subx=##class(MARC).getSubTagStr(tag,"x")
 . s suby=##class(MARC).getSubTagStr(tag,"y")
 . s subz=##class(MARC).getSubTagStr(tag,"z")
 . if sub3'="" s TC05s=TC05s_$c(31)_"3"_sub3
 . if subu'="" s TC05s=TC05s_$c(31)_"u"_subu
 . if sub4'="" s TC05s=TC05s_$c(31)_"4"_sub4
 . if subx'="" s TC05s=TC05s_$c(31)_"x"_subx
 . if suby'="" s TC05s=TC05s_$c(31)_"y"_suby
 . if subz'="" s TC05s=TC05s_$c(31)_"z"_subz
 . if TC05s'="" d
 . . if TC05new'="" d  s TC05new=TC05new_$c(10)_TC05s
 . . if TC05new="" d  s TC05new=TC05s
 
 if TC05new'="" d ##class(MARC).setTagX(.handle,TC05new)
 q
]]></Implementation>
</Method>

<Method name="symDuplIdx">
<Description><![CDATA[
12.08.05 jj; symbolik na zjisteni duplicit v indexu<br>
]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>handle:%Library.Binary</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s trida="CavUnAuth", index="proj"
 s id=##class(MARC).getIdxValX(.handle,index)
 if id="" q 0
 s idx="",num=0,flag=0
 ;s id=$o(^ooDataTableI(trida,index,id))
 f   
 {
   s idx=$o(^ooDataTableI(trida,index,id,idx))  q:idx=""
   s num=num+1
   s sT001=##class(MARC).getT001(idx)
   if ##class(MARC).readX(.handle,trida,sT001)
   { 
     s s230a=##class(MARC).getTagX(.handle,"230a")
	 if s230a="-" s flag=1
   }
 }  
 if ((num>1) && (flag=1)) q 1
 q 0
 /*
 ; varianta pro vypis poctu duplicit programem
 s trida="CavUnAuth", index="proj", poc=0
 s id=""
 f   
 {
   s id=$o(^ooDataTableI(trida,index,id)) q:id=""
   s idx="",num=0,flag=0
   if id'=""
   {
     f   
     {
	   s idx=$o(^ooDataTableI(trida,index,id,idx))  q:idx=""
       s num=num+1
       s sT001=##class(MARC).getT001(idx)
       if ##class(MARC).readX(.handle,trida,sT001)
       {
	     s s230a=##class(MARC).getTagX(.handle,"230a")
	     if s230a="-" s flag=1,idK=idx
	   }
     }
     if num>1,flag s poc=poc+1
   }   
 }
 w !,"POCET: "_poc
 */
]]></Implementation>
</Method>

<UDLText name="T">
<Content><![CDATA[
//20.10.05 ja symbolik na invetarizovanie exemplarov podla prirastkoveho cisla 

]]></Content>
</UDLText>

<UDLText name="T">
<Content><![CDATA[
//do exemplaru sa zapisuje novy ciarovy kod a 500 o zinventarizovani

]]></Content>
</UDLText>

<Method name="InventuraHOLUMB">
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s dislokacia="UK10"
 s OU=$IO
 // subor ma strukturu signatura,novy ciarovy kod
 s imp="c:\inventura\vstup.txt"
 s outf="c:\inventura\vytup.txt"
 ; otevrit vstupni soubor
 open imp:(/READ):0
 s te=$test
 if 'te w "failed to open the input file ('"_imp_"')!!" q
 use imp:/POSITION=0 use OU
 d $ZU(68,40,1)
 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te w "failed to open the output file ('"_outf_"')!!" q
 
 s brk=0,li=""
 s index="xd1",class="UmbUnCatH"
 for nLine=1:1 q:brk  d
 . use imp read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok do li
 . if (li'="") d  
 . . s barcode=$p(li,",",1)
 . . s signatura=$p(li,",",2)
 . . // vycisti si data z textaku
 . . if $e(barcode,1)="*" s barcode=$e(barcode,2,$l(barcode)-1)
 . . if $e(signatura,1,4)="0101" s signatura=$e(signatura,5,$l(signatura))
 . . if ((barcode="")||(signatura="")||($l(barcode)<12)) use outf w li_" - CHYBA - citania suboru",!
 . . else  d
 . . . use outf w barcode_","_signatura
 . . . // vyhladaj podla indexu taky holding a ked je prave jeden tak dopln ciarovy kod a udaje do 500
 . . . s id=$o(^ooDataTableI(class,index," uk10_"_signatura,""))
 . . . if id'="" d 
 . . . . // mam holding doplnam ciarovy kod
 . . . . s t001=##class(MARC).getT001(id)
 . . . . d ##class(MARC).readX(.rechol,class,t001) 
 . . . . s t100b=##class(MARC).getTagX(.rechol,"100b")
 . . . . s t100=##class(MARC).getTagX(.rechol,"100")
 . . . . s t500=##class(MARC).getTagX(.rechol,"500")
 . . . . // 
 . . . . if t500="" s t500="500    "
 . . . . if t100b'="" d 
 . . . . . if t100b=barcode d 
 . . . . . . use outf w " - OK ",!
 . . . . . . s newt100=""
 . . . . . . s newt500=t500_$c(31)_"b1"_$c(31)_"c20050613"_$c(31)_"dUK10"
 . . . . . . d ##class(MARC).setTagX(.rechol,newt500)
 . . . . . else  d
 . . . . . . // prepis existujuceho ciar kodu
 . . . . . . s newt100=##class(Util).strswap(t100,$c(31)_"b"_t100b,$c(31)_"b"_barcode)
 . . . . . . w " - OK - prepis novym ciar.kodom stary :"_t100b,!
 . . . . . . d ##class(MARC).setTagX(.rechol,newt100) 
 . . . . . . // zapis do 500
 . . . . . . s newt500=t500_$c(31)_"b1"_$c(31)_"c20050613"_$c(31)_"dUK10"
 . . . . . . d ##class(MARC).setTagX(.rechol,newt500) 
 . . . . else  d
 . . . . . // dopln novy ciarovy kod
 . . . . . s newt100=##class(Util).strswap(t100,"100    ","100    "_$c(31)_"b"_barcode)
 . . . . . w " - OK - novy ciar.kod",!
 . . . . . d ##class(MARC).setTagX(.rechol,newt100) 
 . . . . . // zapis do 500
 . . . . . s newt500=t500_$c(31)_"b1"_$c(31)_"c20050613"_$c(31)_"dUK10"
 . . . . . d ##class(MARC).setTagX(.rechol,newt500) 
 . . . . //b // nasiel
 . . . . w t001,!,t100,!,newt100,!,t500,!,newt500,!,!
 . . . . s ret=##class(MARC).writeX(.rechol,,,,2_$c(10)_"sys")
 . . . . if '$$$ISOK(ret) s ret="ERRW write holding :"_t001_"!!!" w !,ret,! 
 . . . else  d
 . . . . // chyba nemasiel som taku signaturu
 . . . . // b // nenasiel
 . . . . use outf w " - CHYBA - nenasiel som taku signaturu",!
  
  
 use outf w "koniec" use OU
 close imp close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="InventuraHolRuz">
<Description><![CDATA[

02.12.08 pb; globalka na import ciarovych kodov holdingov pre dislokaciu 01=Mileticova
25.10.05 pb: globalka na import ciarovych kodov holdingov zo vstupneho suboru
             vytvoreneho trackerom podla indexu "prirastkove cislo";
             sluzi aj pre potreby inventarizacie<br>
             cita sa vstupny subor, podla prir.cisla sa vyhlada holding, do neho sa doplni barcode
             zo vstupneho suboru, do 500-ky sa zapise status, lok, dislok<br>
             tag 500 nemusi byt nainicializovany cez "inicializaciu inventarizacie" v zclientovi<br>
]]></Description>
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 /// d ##class(UtilConv).InventuraHolRuz()
 
 ;s dislokacia="03" ;dislok=Tomasikova ul.
 s dislokacia="01" ;dislok=Mileticova ul.
 s OU=$IO
 ;s imp="h:\_tmp\peter\1\inventura_vstup.txt"
 ;s outf="h:\_tmp\peter\1\inventura_vystup.txt"
 s imp="s:\home\transfer\peter\RUZ\081202\zhrate.txt"
 s outf="s:\home\transfer\peter\RUZ\081202\log\inventura_vystup"_$random(1000)_".txt"
 ; otevrit vstupni soubor
 open imp:(/READ):0
 s te=$test
 if 'te w "failed to open the input file ('"_imp_"')!!" q
 use imp:/POSITION=0 use OU
 d $ZU(68,40,1)
 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te w "failed to open the output file ('"_outf_"')!!" q
 use outf w !,"Start inventury KR, dislokacia=",dislokacia,"   ",$$$ShowDTime,!!
 
 s brk=0,li=""
 s index="tr",class="RuzUnCatH"
 for nLine=1:1 q:brk  d
 . use imp read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok do li
 . if (li'="") d  
 . . s barcode=$p(li,",",1)
 . . s trackno=$p(li,",",2)
 . . //  zamena bodky nacitanej trackerom za lomitko (realna hodnota v zazname)
 . . s trackno=##class(Util).strswap(trackno,".","/")
 . . // vycisti data z textaku
 . . if $e(barcode,1)="*" s barcode=$e(barcode,2,$l(barcode)-1)
 . . if ((barcode="")||(trackno="")||(($l(barcode)'=12))&&($l(barcode)'=6)) use outf w li_" - CHYBA - citanie suboru",!
 . . else  d
 . . . use outf w barcode_","_trackno
 . . . // vyhladaj podla indexu taky holding a ked je prave jeden tak dopln ciarovy kod a udaje do 500
 . . . s id=$o(^ooDataTableI(class,index," "_trackno,""))
 . . . if id'="" d 
 . . . . // mam holding, doplnam ciarovy kod
 . . . . s t001=##class(MARC).getT001(id)
 . . . . use outf w "  (t001=",t001,") "
 . . . . d ##class(MARC).readX(.rechol,class,t001) 
 . . . . s t100b=##class(MARC).getTagX(.rechol,"100b")
 . . . . s t100l=##class(MARC).getTagX(.rechol,"100l")
 . . . . s t100d=##class(MARC).getTagX(.rechol,"100d")
 . . . . s t100=##class(MARC).getTagX(.rechol,"100")
 . . . . s t500=##class(MARC).getTagX(.rechol,"500")
 . . . . // 
 . . . . // 
 . . . . if t100d=dislokacia  s sInvZoz="inv 09/2008" ; ak je ina dislok, dam do inej inventury
 . . . . else  s sInvZoz="inv 99/2008"
 . . . . 
 . . . . ;s newt500="500    "_$c(31)_"ainv 999/2008"_$c(31)_"b1"_$c(31)_"c20051025222222.2"_$c(31)_"earl"_$c(31)_"d03"_$c(31)_"lKR"
 . . . . ;s newt500="500    "_$c(31)_"a"_sInvZoz_$c(31)_"b1"_$c(31)_"c20081202222222.2"_$c(31)_"earl"_$c(31)_"d"_t100d_$c(31)_"l"_t100l
 . . . . s newt500="500    "_$c(31)_"a"_sInvZoz_$c(31)_"c20081202222222.2"_$c(31)_"earl"_$c(31)_"d"_t100d_$c(31)_"l"_t100l
 . . . . if t500="" s t500=newt500
 . . . . if t100b'="" d 
 . . . . . if t100b=barcode d 
 . . . . . . use outf w " - OK ",!
 . . . . . . s newt100=""
 . . . . . . s newt500=t500_$c(31)_"b1"
 . . . . . . d ##class(MARC).setTagX(.rechol,newt500)
 . . . . . else  d
 . . . . . . // prepis existujuceho ciar kodu
 . . . . . . s newt100=##class(Util).strswap(t100,$c(31)_"b"_t100b,$c(31)_"b"_barcode)
 . . . . . . w " - OK - prepis novym ciar.kodom stary :"_t100b,!
 . . . . . . //////w !,newt100
 . . . . . . d ##class(MARC).setTagX(.rechol,newt100) 
 . . . . . . /////w !,"aa"
 . . . . . . // zapis do 500
 . . . . . . s newt500=t500_$c(31)_"b1"
 . . . . . . d ##class(MARC).setTagX(.rechol,newt500) 
 . . . . else  d
 . . . . . // dopln novy ciarovy kod
 . . . . . s newt100=##class(Util).strswap(t100,"100    ","100    "_$c(31)_"b"_barcode)
 . . . . . w " - OK - novy ciar.kod",!
 . . . . . d ##class(MARC).setTagX(.rechol,newt100) 
 . . . . . // zapis do 500
 . . . . . s newt500=t500_$c(31)_"b1"
 . . . . . d ##class(MARC).setTagX(.rechol,newt500) 
 . . . . // b // nasiel
 . . . . 
 . . . . //w t001,!,t100,!,newt100,!,t500,!,newt500,!,!
 . . . . s ret=1
 . . . . d ##class(MARC).recordSetupMarcSkipAllowSaveX(.rechol,"1")  ;;;;;;;;;;;;;
 . . . . s ret=##class(MARC).writeX(.rechol,,,,2_$c(10)_"sys")       ;;;;;;;;;;;;;
 . . . . if '$$$ISOK(ret) s ret="ERRW write holding :"_t001_"!!!" w !,ret,! 
 . . . else  d
 . . . . // chyba nenasiel take prir.cislo
 . . . . // b // nenasiel
 . . . . 
 . . . . use outf w " - CHYBA - nenasiel take prir.cislo"
 . . . . s id1=$o(^ooDataTableI(class,"tr"," "_trackno,""))
 . . . . if id1'="" d 
 . . . . . use outf w "  !existuje!",!
 . . . . else  d
 . . . . . use outf w " ---",!
  
  
 use outf w !!!,"Koniec inventury KR","  ",$$$ShowDTime
 use OU w "koniec"
 close imp close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="UhktConv">
<Description><![CDATA[

<pre>
31.01.06 pb; ostra konverzia verzia 3 - drobne upravy podla mailu p.Jilemnickej
27.01.06 pb; ostra konverzia verzia 2; uplne zmenena logika: SZP dodali z UHKT (v exceli, export s 
             oddelovacom "ciarka", exportuje sa ale s bodkociarkou, co je fajn), treba naimportovat
             a pripojit do 463 cez ISSN;
             vela drobnych uprav
15.12.05 pb; konverzia UHKT - UhktConv; import z csv suboru vyexportovaneho z dbf v RL
08.12.05 pb; zalozene
import z csv suboru vyexportovaneho z dbf v RL symbolikom s_export_csv,
 oddelovac stlpcov je "|".
 Jednym behom sa exportuje pre Uncat, vytvaraju sa pracovne globaly
 ^TMP, dalej sa exportuje pre UnAuth - autority personalne
 
d ##class(UtilConv).UhktConv() vyvolanie programu

/// </pre>]]></Description>
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s sSigla="ABC011"
 s sTrieda="Uhkt"
 
 s sTriedaU=$zcvt(sTrieda,"u")
 s sTriedaL=$zcvt(sTrieda,"l")
 
 kill ^TMP($j)  ;!!!!!!!!!!
 
 s sOLDIO=$io ;,ofn=##class(Util).XPDiskOpenRedirect()   
 w !,"konverzia Uhkt - Ustav hematologie a krevni transfuze ****  ",$zdt($h,4)
 
 
 s ofiprot="D:\aRL\_tmp\peter\uhkt\prot\"_sTrieda_"Imp"_$r(999)_".txt"
 
 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 s ifi="D:\aRL\_tmp\peter\uhkt\import\zkr_caso3_ciarka.csv"
 ; SZP z Excelu ;;;;;;;;;;;;;;;;;;;;;;
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi_"   Tvorba SZP"
 if te=1 d  w "  ok"
 else  w "  not ok"
 w !,"$j="_$j,!
 
 
 if te=1  d
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe "_sTrieda_"                          ",$zdt($h,4),!
 . w !,"          ======================================"
 
   
 use ofiprot
 w !!
 w !,"          ======================================"
 w !,"          Otvaram subor: "_ifi_"   Tvorba SZP"
 
 
 if te=1  d 
 . s ofi="D:\aRL\_tmp\peter\uhkt\import\"_sTrieda_"_SZP"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 .
 . s cSzp=3000  ;id pocitadla SZP zaznamov
 
 . d $ZU(68,40,1)
 . 
 . s s200=""
 . s sDatAkt=$e(##class(MARC).genT005(),1,8)
 . s s000="000    00240nx   22001213  450"
 . s s100="100    "_$c(31)_"a"_sDatAkt_"aczey0103    ba"
 . s s110="110    "_$c(31)_"aa"
 . s s801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt 
 . s s970="970    "_$c(31)_"b"_"BCA"
 . s s999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLConv-"_sDatAkt
 . s sC99 ="C99    "_$c(31)_"dDFLT_EPCA_SZP"
 . 
 . s s200="",s011="",s102="",s517="",s330="",s978=""
 . 
 . s brk=0,c=0,pg=0
 . for  q:c=2  d ;zaciname az 3.riadkom
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1
 
 . for  q:((brk)||(c=99999))  d
 . . 
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . if brk=1 q
 . . s c=c+1,pg=pg+1 
 . . ;if pg'<100  d  use sOLDIO w "." s pg=0
 . . use sOLDIO w ".",c
 . . 
 . . s s001=10000000+cSzp+c-2
 . . s s001=$e(s001,2,8)
 . . 
 . . s s517=""
 . . s s011=""
 . . s s200=""
 . . s s102=""
 . . s s330=""
 . . s s978=""
 . . 
 . . s s517a=$p(li,";",1) ;tag 517a
 . . s s011a=$p(li,";",2) ;ISSN
 . . s s200a=$p(li,";",3) ;tag 200a
 . . s s102a=$p(li,";",4) ;tag 102a-krajina
 . . s s330a=$p(li,";",5) ;tag 330a
 . . s sIF2004=$p(li,";",6) ;impact faktor za rok 2004
 . . 
 . . s s517a=##class(Util).trim(s517a)
 . . s s011a=##class(Util).trim(s011a)
 . . s s200a=##class(Util).trim(s200a)
 . . s s102a=##class(Util).trim(s102a)
 . . s s330a=##class(Util).trim(s330a)
 . . s sIF2004=##class(Util).trim(sIF2004)
 . . 
 . . ;s ^TMP($j,"SZP_flds",c)=$l(li,";")
 . . s sText=s011a ;kluc bude ISSN
 . . ;s sText=c
 . . s ^TMP($j,"SZP",sText)=s011a
 . . s ^TMP($j,"SZP_001",sText)=s001
 . . s ^TMP($j,"SZP_517a",sText)=s517a
 . . s ^TMP($j,"SZP_200a",sText)=s200a
 . . s ^TMP($j,"SZP_102a",sText)=s102a
 . . s ^TMP($j,"SZP_330a",sText)=s330a
 . . s ^TMP($j,"SZP_IF2004",sText)=sIF2004
 . . 
 . . 
 . . if s200a'="" d
 . . . s s200="200 1  "
 . . . s s200=s200_$c(31)_"a"_s200a
 . . 
 . . if s011a'="" d
 . . . s s011="011    "
 . . . s s011=s011_$c(31)_"a"_s011a
 . . 
 . . if s102a'="" d
 . . . s s102="102    "
 . . . s s102=s102_$c(31)_"a"_s102a
 . . 
 . . if s517a'="" d
 . . . s s517="517    "
 . . . s s517=s517_$c(31)_"a"_s517a
 . . 
 . . if s330a'="" d
 . . . s s330="330    "
 . . . s s330=s330_$c(31)_"a"_s330a
 . . 
 . . if sIF2004'="" d
 . . . s s978="978    "
 . . . s s978=s978_$c(31)_"a"_"2004"
 . . . s s978=s978_$c(31)_"c"_sIF2004


 . . ; ZAPIS DO SUBORU SZP ;;;;;;;;;;
 . . use ofi
 . . w "# @id "_sTrieda_"UnEpca "_s001
 . . w !,"001    "_s001
 . . w !,s000
 . . w !,##class(MARC).genT005(1)
 . . if s011'="" w !,s011
 . . w !,s100
 . . if s102'="" w !,s102
 . . w !,s110
 . . if s200'="" w !,s200
 . . if s330'="" w !,s330
 . . if s517'="" w !,s517
 . . w !,s801
 . . w !,s970
 . . if s978'="" w !,s978
 . . w !,sC99
 . . w !,s999
 . . w !,"###",!
 
 use sOLDIO
 w !,c_" SZP records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" SZP records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"
 
 
 close ifi
 close ofi
 
 ; KONIEC SZP ;;;;;;;;;;;;;;;;;;;;;;

 
 ;close ofiprot
 ;d $ZU(68,40,0)
 ;quit
 
 
 ;---------------------------------------------------------------------
 
 s ifi="D:\aRL\_tmp\peter\uhkt\import\epca_all.txt"  
 ; CATALOG ;;;;;;;;;;;;;;;;;;;;;;
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi_"   Tvorba db Cat"
 if te=1 d  w "  ok"
 else  w "  not ok"
 
 
 ;if te=1  d
 ;. open ofiprot:("NWS":/CREATE):0
 ;. use ofiprot
 ;. w "Protokol o importe "_sTrieda_"                          ",$zdt($h,4),!
 ;. w !,"          ======================================"
 
   
 use ofiprot
 w !!
 w !,"          ======================================"
 w !,"          Otvaram subor: "_ifi_"   Tvorba db Cat"
 
 if te=1  d 
 . s ofi="D:\aRL\_tmp\peter\uhkt\import\"_sTrieda_"_Cat"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 .
 . s cPers=0 ;id pocitadla auth.zaznamov
 . s cSzp=3000  ;id pocitadla SZP zaznamov
 . 
 . 
 .; >>
 .;000    00616nam$$2200169$$$450$
 .;005    20041229155258.6
 .;100    $a20041229d2003³³³³m  y slo$03  $$$$ba
 .;101    $aslo$aeng
 .;102    $aSK
 .;200 1  $aPodnikate¾ské prostredie - problém stavu ekonomiky èi intutucionálneho
 .; sysému?$fJaroslav Nìmec
 .;463  1 $1001  l_un_epca*045311$1011  $a0013-3035$12001 $aEkonomický èasopis$vRoè
 .;. 51, è. 2 (2003), s. 137-167$1210  $aBratislava$cVydavate¾stvo Slovenskej akadé
 .;mie vied$d1953-
 .;700  1 $aNìmec$bJaroslav$pSAVEKON$4070
 .;801  0 $aSK$bSAV$c20041229$gAACR2
 .;850    $aBA104
 .;970    $aADD$bRBX
 .;985    $r2004
 .;999    $a1$bSAVEKON$cSAVEKON$dekon-20041229
 .;C99    $dDFLT_EPCA3
 .;<
 . 
 . 
 . s sDatAkt=$e(##class(MARC).genT005(),1,8)
 . s s000="000         nam  22        450 "
 . s s100="100    "_$c(31)_"a"_sDatAkt_"         m  y czec0103    ba"
 . ;s s101="101 0  "_$c(31)_"a"_"cze"
 . ;s s102="102    "_$c(31)_"a"_"CZ"
 . s s101=""
 . s s102=""
 . s s801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt
 . s s850="850    "_$c(31)_"a"_sSigla
 . s s970=""
 . s s999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLConv-"_sDatAkt
 .
 . 
 . s brk=0,c=0,pg=0
 . for  q:c=1  d ;zaciname az 2.riadkom
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . s c=c+1
 
 . for  q:((brk)||(c=99999))  d
 . . 
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . if brk=1 q
 . . s c=c+1,pg=pg+1 
 . . if pg'<100  d  use sOLDIO w "." s pg=0
 . . 
 . . 
 . . s s001=10000000+c-1
 . . s s001=$e(s001,2,8)
 . . 
 . . s s010=""
 . . s s200=""
 . . s s210=""
 . . s s215=""
 . . s s461=""
 . . s s463=""
 . . s s700=""
 . . s s701=""
 . . s s856=""
 . . s s970=""
 . . s s985=""
 . . s sC11=""
 . . s sC99=""
 . . 
 . . s sC99a=$p(li,"|",1) ;povodne id zaznamu
 . . s sRokVykaz=$p(li,"|",102) ;rok vykazovania
 . . s s985="985    "_$c(31)_"r"_sRokVykaz
 . . s sC99a=sC99a+1000
 . . s sC99a=sRokVykaz_"_"_$e(sC99a,2,4)
 . . 
 . . s sAbstrakt=$p(li,"|",2) ;priznak abstraktu
 . . s s970j=sAbstrakt ;uzivat.pole 1
 . . s s970b=$p(li,"|",3) ;druh vysledku
 . . s s970b=$zcvt(s970b,"u") ;vykytuju sa kody B,C,D,J,L,M,N,P
 . . 
 . . ;s sC99="C99    "_$c(31)_"a"_sC99a_$c(31)_"d"_"DFLT_EPCA4"
 . . ;s sC99="C99    "_$c(31)_"a"_sC99a_$c(31)_"d"_"DFLT_EPCA_"_s970b
 . . 
 . . s s200a=$p(li,"|",4) ;nazov1
 . . ;if $p(li,"|",5)'="" s s200a=s200a_" +("_$p(li,"|",5)_")" ;nazov2
 . . if $p(li,"|",5)'="" s s200a=s200a_""_$p(li,"|",5)_"" ;nazov2
 . . ;Banka pupeèníkové krve : www stránky projektu [online]. I. Fales, administrace
 . . ;200a=Banka pupeèníkové krve : www stránky projektu
 . . ;200b=online
 . . ;200f=I. Fales, administrace
 . . s sX=s200a
 . . s s200a=$p(sX,"[",1)
 . . s s200a=##class(Util).trim(s200a)
 . . 
 . . s s200b=$p(sX,"[",2)
 . . s s200b=$p(s200b,"]",1)
 . . s s200b=##class(Util).trim(s200b)
 . . 
 . . s s200fWeb=$p(sX,"]",2)
 . . if $e(s200fWeb,1,1)="." d
 . . . s s200fWeb=$e(s200fWeb,2,9999)
 . . . s s200fWeb=##class(Util).trim(s200fWeb)
 . . 
 . . s s200="200 1  "_$c(31)_"a"_s200a
 . . if s200b'="" s s200=s200_$c(31)_"b"_s200b
 . . 
 . . 
 . . s sIn=$p(li,"|",6) ;nazov zdroja - In
 . . s sIn=##class(Util).trim(sIn)
 . . 
 . . s s856u=$p(li,"|",7) ;Web adresa
 . . s s856e=$p(li,"|",8) ;citacia na Webe
 . . s s856=""
 . . if ((s856u'="")||(s856e'="")) d
 . . . s s856="856    "
 . . . if s856e'="" s s856=s856_$c(31)_"e"_s856e
 . . . if s856u'="" s s856=s856_$c(31)_"u"_s856u
 . . 
 . . 
 . . s sPriznakRecCas=$p(li,"|",9) ;priznak rep recenzovany casopis
 . . ;To bys mohl dat do 970a spolecne s oznacenim Druhu vysledku. Tedy v 970a bude napr. J, nebo JN, nebo JA.
 . . ;27.01.06: podla pripomienok ku konverzii (Jitka) dat do 970x
 . . ;s s970a=s970b_sPriznakRecCas_sAbstrakt
 . . s s970x=sPriznakRecCas
 . . 
 . . 
 . . s sSzp011a=""
 . . s sSzp001=""
 . . s sSzp517a=""
 . . s sSzp200a=""
 . . s sSzp102a=""
 . . s sSzp330a=""
 . . 
 . . s sIssn=$p(li,"|",10) ;ISSN
 . . s sText=sIssn ;kluc je ISSN
 . . if sText'="" d
 . . . s sSzp011a=$g(^TMP($j,"SZP",sText))
 . . . s sSzp001=$g(^TMP($j,"SZP_001",sText))
 . . . s sSzp517a=$g(^TMP($j,"SZP_517a",sText))
 . . . s sSzp200a=$g(^TMP($j,"SZP_200a",sText))
 . . . s sSzp102a=$g(^TMP($j,"SZP_102a",sText))
 . . . s sSzp330a=$g(^TMP($j,"SZP_330a",sText))
 . . 
 . . 
 . . s s517a=$p(li,"|",11) ;skratka nazvu casopisu
 . . s s517a=##class(Util).trim(s517a)
 . . 
 . . s sVol=$p(li,"|",12) ;volume
 . . s sNum=$p(li,"|",13) ;cislo
 . . s sPage=$p(li,"|",14) ;strany
 . . if $e(sPage,$l(sPage),$l(sPage))="s" s sPage=sPage_"." ;vo vst.subore na konci chyba bodka
 . . s s200v=""
 . . if ((sVol'="")||(sNum'="")||(sPage'="")) d
 . . . ;$vVol. 154, (1999), p. 89-94
 . . . ;27.01.06 pb; texty si doplnili do vstupneho suboru aj s ohladom na jazyk
 . . . ;if sVol'="" s s200v=s200v_"Vol. "
 . . . s sVol=$zcvt($e(sVol,1,1),"u")_$e(sVol,2,999)
 . . . s s200v=s200v_sVol
 . . . 
 . . . if sNum'="" d
 . . . .;27.01.06 pb; texty si doplnili do vstupneho suboru aj s ohladom na jazyk
 . . . . ;if s200v'="" s s200v=s200v_", num."
 . . . . if s200v'="" s s200v=s200v_", " 
 . . . . s s200v=s200v_sNum
 . . . 
 . . . if sPage'="" d
 . . . .;27.01.06 pb; texty si doplnili do vstupneho suboru aj s ohladom na jazyk
 . . . . ;if s200v'="" s s200v=s200v_", p."
 . . . . if s200v'="" s s200v=s200v_", "
 . . . . s s200v=s200v_sPage
 . . 
 . . 
 . . s sIf=$p(li,"|",16) ;impact faktor
 . . if $e(sIf,1,1)="." s sIf="0"_sIf
 . . s s978=""
 . . if sIf'="" s s978="978    "_$c(31)_"a"_sRokVykaz_$c(31)_"c"_sIf
 . . 
 . . s s010=""
 . . s sIsbn=$p(li,"|",17) ;ISBN
 . . if sIsbn'="" s s010="010    "_$c(31)_"a"_sIsbn
 . . 
 . . s s210a=$p(li,"|",18) ;210a
 . . s s210c=$p(li,"|",19) ;210c
 . . s s210d=$p(li,"|",20) ;210d
 . . s s210=""
 . . if ((s210a'="")||(s210c'="")||(s210d'="")) d
 . . . s s210="210    "
 . . . if s210a'="" s s210=s210_$c(31)_"a"_s210a
 . . . if s210c'="" s s210=s210_$c(31)_"c"_s210c
 . . . if s210d'="" s s210=s210_$c(31)_"d"_s210d
 . . 
 . . 
 . . s s700="", s701="", s200f="", s200g="", c70xz=""
 . . for ix=1:1:27 d
 . . . s s70xa=$p(li,"|",21+((ix-1)*3)+0)
 . . . s s70xb=$p(li,"|",21+((ix-1)*3)+1)
 . . . s s70xp=$p(li,"|",21+((ix-1)*3)+2)
 . . . if s70xp="A" d
 . . . . s s70xp="UHKT"
 . . . . s c70xz=c70xz+1
 . . . else  s s70xp=""
 . . . s s700z="", s701z=""
 . . . 
 . . . 
 . . . ;pracovne globaly pre generovanie autorit
 . . . s sX=s70xa_"*"_s70xb
 . . . if sX'="*" d
 . . . . s sKluc=$g(^TMP($j,"PERS",sX))
 . . . . if sKluc="" d 
 . . . . . s cPers=cPers+1
 . . . . . s sKluc=cPers+10000000
 . . . . . s sKluc=$e(sKluc,2,8)
 . . . . s ^TMP($j,"PERS",sX)=sKluc
 . . . .
 . . . . 
 . . . . if s700= "" d
 . . . . . if c70xz=1 s s700z="G",c70xz=c70xz+1
 . . . . . ;s s700=s700_"700  1 "_$c(31)_"3uhkt_un_auth*"_sKluc_$c(31)_"a"_s70xa_$c(31)_"b"_s70xb
 . . . . . s s700=s700_"700  1 "_$c(31)_"a"_s70xa_$c(31)_"b"_s70xb
 . . . . . if s70xp'="" s s700=s700_$c(31)_"p"_s70xp
 . . . . . if s700z'="" s s700=s700_$c(31)_"z"_s700z
 . . . . . s s700=s700_$c(31)_"4"_"070"
 . . . . . 
 . . . . . s s200f="aut. "_s70xa_", "_s70xb
 . . . . . 
 . . . . else  d
 . . . . . if s701'="" s s701=s701_$c(10)
 . . . . . if c70xz=1 s s701z="G",c70xz=c70xz+1
 . . . . . ;s s701=s701_"701  1 "_$c(31)_"3uhkt_un_auth*"_sKluc_$c(31)_"a"_s70xa_$c(31)_"b"_s70xb
 . . . . . s s701=s701_"701  1 "_$c(31)_"a"_s70xa_$c(31)_"b"_s70xb
 . . . . . if s70xp'="" s s701=s701_$c(31)_"p"_s70xp
 . . . . . if s701z'="" s s701=s701_$c(31)_"z"_s701z
 . . . . . s s701=s701_$c(31)_"4"_"070"
 . . . . . 
 . . . . . if s200g'="" s s200g=s200g_"; "
 . . . . . s s200g=s200g_s70xa_", "_s70xb
 . . . 
 . . . 
 . . 
 . . if s200f="" s s200f=s200fWeb
 . . if s200f'="" s s200=s200_$c(31)_"f"_s200f
 . . if s200g'="" s s200=s200_$c(31)_"g"_s200g
 . . 
 . . 
 . . s s461="", s463=""
 . . 
 . . ;27.01.06 pb; B inak ako S a D
 . . ;if ((s970b="B")||(s970b="C")||(s970b="D")) d
 . . 
 . . if s970b="B" d
 . . . s s200v=""
 . . . if s200v'="" d
 . . . . s s200=s200_$c(31)_"v"_s200v
 . . . 
 . . . if sPage'="" s s215="215    "_$c(31)_"a"_sPage
 . . . 
 . . 
 . . if ((s970b="C")||(s970b="D")) d
 . . . ;463  1 $1011  $a0013-3035$12001 $aEkonomický èasopis$vRoè
 . . . ;. 51, è. 2 (2003), s. 137-167$1210  $aBratislava$cVydavate¾stvo Slovenskej akadé
 . . . ;mie vied$d1953-
 . . . 
 . . . s s010="" ;ak je, bude v 463
 . . . s s210="" ;ak je, bude v 463
 . . . 
 . . . s s463="463  1 "
 . . . 
 . . . if sIsbn'="" d
 . . . . s s463=s463_$c(31)_"1010  "_$c(31)_"a"_sIsbn
 . . . 
 . . . if sIssn'="" d
 . . . . s s463=s463_$c(31)_"1011  "_$c(31)_"a"_sIssn
 . . . 
 . . . if ((sIn'="")||(s200v'="")) d
 . . . . s s463=s463_$c(31)_"12001 "
 . . . . if sIn'="" s s463=s463_$c(31)_"a"_sIn
 . . . . if s200v'="" s s463=s463_$c(31)_"v"_s200v
 . . . 
 . . . if ((s210a'="")||(s210c'="")||(s210d'="")) d
 . . . . s s463=s463_$c(31)_"1210  "
 . . . . if s210a'="" s s463=s463_$c(31)_"a"_s210a
 . . . . if s210c'="" s s463=s463_$c(31)_"c"_s210c
 . . . . if s210d'="" s s463=s463_$c(31)_"d"_s210d
 . . 
 . . 
 . . if s970b="J" d  ;vygenerovat SZP
 . . . ;463  1 $1001  l_un_epca*045311$1011  $a0013-3035$12001 $aEkonomický èasopis$vRoè
 . . . ;. 51, è. 2 (2003), s. 137-167$1210  $aBratislava$cVydavate¾stvo Slovenskej akadé
 . . . ;mie vied$d1953-
 . . . 
 . . . ;;pracovne globaly pre generovanie SZP
 . . . ;if sIssn'="" s sX= "*"_sIssn
 . . . ;else  s sX=s517a_"*"
 . . . ;;;;s sX=s517a_"*"_sIssn
 . . . ;if sX'="*" d
 . . . . ;s sKluc=$g(^TMP($j,"SZP",sX))
 . . . . ;if sKluc="" d 
 . . . . . ;s cSzp=cSzp+1
 . . . . . ;s sKluc=cSzp+10000000
 . . . . . ;s sKluc=$e(sKluc,2,8)
 . . . . ;s ^TMP($j,"SZP",sX)=sKluc
 . . . . ;s ^TMP($j,"SZP_200a",sX)=s517a
 . . . . ;
 . . . . ;s sImpFakt=$g(^TMP($j,"SZP_IF",sX))
 . . . . ;if ($l(sIf)>0)&&($l(sImpFakt,s978)<=1) d
 . . . . . ;if sImpFakt'="" s sImpFakt=sImpFakt_";"
 . . . . . ;s sImpFakt=sImpFakt_s978
 . . . . . ;s ^TMP($j,"SZP_IF",sX)=sImpFakt
 . . . . ;
 . . . ;else  d
 . . . . ;use ofiprot
 . . . . ;w !,sC99a_" ISSN a Skratka nazvu casopisu su prazdne"
 . . . . ;s sKluc="???????"
 . . . 
 . . . 
 . . . 
 . . . s s010="" ;ak je, bude v 463
 . . . s s210="" ;ak je, bude v 463
 . . . 
 . . . s s463="463  1 "
 . . . 
 . . . if sSzp001'="" s s463=s463_$c(31)_"1001  "_"uhkt_un_epca*"_sSzp001
 . . . 
 . . . if sIsbn'="" s s463=s463_$c(31)_"1010  "_$c(31)_"a"_sIsbn
 . . . 
 . . . if sSzp011a'="" d
 . . . . s s463=s463_$c(31)_"1011  "_$c(31)_"a"_sSzp011a
 . . . . if sSzp102a'="" s s463=s463_$c(31)_"1102  "_$c(31)_"a"_sSzp102a
 . . . . if sSzp200a'="" s s463=s463_$c(31)_"12001 "_$c(31)_"a"_sSzp200a
 . . . . if s200v'="" s s463=s463_$c(31)_"v"_s200v
 . . . . s s463=s463_$c(31)_"1517  "_$c(31)_"a"_sSzp517a
 . . . . 
 . . . else  d
 . . . . if sIssn'="" s s463=s463_$c(31)_"1011  "_$c(31)_"a"_sIssn
 . . . .
 . . . . if ((s517a'="")||(s200v'="")) d
 . . . . . s s463=s463_$c(31)_"12001 "
 . . . . . if s517a'="" s s463=s463_$c(31)_"a"_s517a
 . . . . . if s200v'="" s s463=s463_$c(31)_"v"_s200v
 . . . .
 . . . if ((s210a'="")||(s210c'="")||(s210d'="")) d
 . . . . s s463=s463_$c(31)_"1210  "
 . . . . if s210a'="" s s463=s463_$c(31)_"a"_s210a
 . . . . if s210c'="" s s463=s463_$c(31)_"c"_s210c
 . . . . if s210d'="" s s463=s463_$c(31)_"d"_s210d
 . . . 
 . . 
 . . ;27.01.06 pb; nove
 . . if s970b="P" d
 . . . s s210="" ;ak je, bude v C11
 . . . if sPage'="" s s215="215    "_$c(31)_"a"_sPage
 . . . if ((sIn'="")||(s856e'="")||(s210c'="")||(s210a'="")) d
 . . . . s sC11="C11    "
 . . . . if sIn'="" s sC11=sC11_$c(31)_"a"_sIn
 . . . . if s856e'="" s sC11=sC11_$c(31)_"b"_s856e
 . . . . if s210c'="" s sC11=sC11_$c(31)_"e"_s210c
 . . . . if s210a'="" s sC11=sC11_$c(31)_"f"_s210a
 . . . 
 . . . s s856="", s856e=""
 . . . if s856u'="" d
 . . . . s s856="856    "
 . . . . if s856u'="" s s856=s856_$c(31)_"u"_s856u
 . . 
 . . 
 . . ;Druh vysledku:
 . . ; N => SXO (online sluzby)
 . . ; L,M => negeneruj nic (to jsou zombi)
 . . ; J => RBX   (clanky z casopisu)
 . . ; D => RZB  (clanky ze zborniky)
 . . ; C => RZA (kapitoly a knih)
 . . ; B => AMG (monografie)
 . . ; V,P,T,A,W,E > negeneruj nic
 . . ; 
 . . ; tieto podmienky sa zmenili (icq s Jitkou 09.12.05)-netreba, a 970a dame do 970b
 . . ;if s970b="N" s s970b="SXO"
 . . ;if s970b="L" s s970b=""
 . . ;if s970b="M" s s970b=""
 . . ;if s970b="J" s s970b="RBX"
 . . ;if s970b="D" s s970b="RZB"
 . . ;if s970b="C" s s970b="RZA"
 . . ;if s970b="B" s s970b="AMG"
 . . ;if $l(s970b)=1 s s970b=""  ;to su pripady V,P,T,A,W,E
 . . 
 . . ;27.01.06 pb; novy prevod
 . . ;31.01.06 pb; este uprava
 . . s s970a=s970b
 . . s s970b=""
 . . ; v 970b v konverzii sa vykytuju kody B,C,D,J,L,M,N,P
 . . if s970a="D" s s970b="C" ;prevod do 970a podla Jitky
 . . if s970a="J" s s970b="J"
 . . if s970a="B" s s970b="B"
 . . if s970a="N" s s970b="E"
 . . if s970a="C" s s970b="M"
 . . if s970a="L" s s970b="C"
 . . if s970a="M" s s970b="U"
 . . if s970a="P" s s970b="P"
 . . 
 . . s sC99d="DFLT_EPCA_"_s970b
 . . if s970a="L" s sC99d="DFLT_EPCA_"_s970a
 . . 
 . . if ((s970a="D")&&(s970j="A")) d
 . . . s s970b="A"
 . . . s sC99d="DFLT_EPCA_"_"A2"
 . . . 
 . . if ((s970a="J")&&(s970j="A")) d
 . . . s s970b="A"
 . . . s sC99d="DFLT_EPCA_"_"A1"
 . . s s970j=""
 . . 
 . . 
 . . s sC99="C99    "_$c(31)_"a"_sC99a_$c(31)_"d"_sC99d
 . . 
 . . if ((s970a'="")||(s970b'="")||(s970j'="")||(s970x'="")) d
 . . . s s970="970    "
 . . . if s970a'="" s s970=s970_$c(31)_"a"_s970a
 . . . if s970b'="" s s970=s970_$c(31)_"b"_s970b
 . . . if s970j'="" s s970=s970_$c(31)_"j"_s970j
 . . . if s970x'="" s s970=s970_$c(31)_"x"_s970x
 . . 
 . . 
 . . 
 . . use ofi
 . . 
 . . w "# @id "_sTrieda_"UnEpca "_s001
 . . w !,"001    "_s001
 . . w !,s000
 . . w !,##class(MARC).genT005(1)
 . . if s010'="" w !,s010
 . . w !,s100
 . . ;w !,s101
 . . ;w !,s102
 . . if s200'="" w !,s200
 . . if s210'="" w !,s210
 . . if s215'="" w !,s215
 . . if s461'="" w !,s461
 . . if s463'="" w !,s463
 . . if s700'="" w !,s700
 . . if s701'="" w !,s701
 . . w !,s801
 . . if s850'="" w !,s850
 . . if s856'="" w !,s856
 . . w !,s970
 . . ;27.01.06 pb; netreba, postup je opacny, dodali SZP aj z imp.faktorom za 2004, viac robit netreba
 . . ;if s978'="" w !,s978  ;tu je to zatial iba pre istotu, spravne sa zapisuje do 978 sub.zaznamu
 . . if s985'="" w !,s985
 . . if sC11'="" w !,sC11
 . . w !,sC99
 . . w !,s999
 . . w !,"###",!
 . 
 
  
 close ifi
 use sOLDIO w !,c_" records processed - ok                ",$zdt($h,4)
 use ofiprot
 w !!,c_" records processed - ok "
 use ofiprot w !,"          ======================================"
 
 close ofi
 
 
 close ofiprot
 d $ZU(68,40,0)
 
 quit
 
 
 ; KONIEC UnEpca ;;;;;;;;;;;;;;;;;;;;;;
 
 ; nic dalsie netreba:
 ; - autority dodali zvlast (vo verzii 01/2006), vazby do EPCA budu robit rucne
 ; - SZP - suborne zaznamy dodali zvlast (vo verzii 01/2006 v Exceli),
 ;      tie su naimportovane na zaciatku konverzie
 
 

 ; AUTORITY ;;;;;;;;;;;;;;;;;;;;;;
 s ofi="D:\aRL\_tmp\peter\uhkt\import\"_sTrieda_"_Auth"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 s s200=""
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s s000="000    00198nx   22000973  450"
 s s100="100    "_$c(31)_"a"_sDatAkt_"aczey0103    ba"
 s s152="152    "_$c(31)_"a"_"AACR2"
 s s801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt
 s sC99 ="C99    "_$c(31)_"dDFLT_UN_AUTH_200"
 s s999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLConv-"_sDatAkt
 
 s c=0,cSum=0
 s sText=""
 for  set sText=$o(^TMP($j,"PERS",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s s001=$g(^TMP($j,"PERS",sText))
 .
 . s s200a=$p(sText,"*",1)
 . s s200b=$p(sText,"*",2)
 . if s200a'="" d
 . . s s200="200  1 "
 . . s s200=s200_$c(31)_"a"_s200a
 . 
 . if s200b'="" d
 . . s s200=s200_$c(31)_"b"_s200b
 . 
 . ; ZAPIS DO SUBORU AUTH PERS ;;;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnAuth "_s001
 . w !,"001    "_s001
 . w !,s000
 . w !,##class(MARC).genT005(1)
 . w !,s100
 . w !,s152
 . w !,s200
 . w !,s801
 . w !,sC99
 . w !,s999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" PERS records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" PERS records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"


 
 close ofi

 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov "_sTrieda_"UnAuth = ",cSum
 w !,"------------------------------------------------------------------------"
 
 
 

 ; SZP - Suborne zaznamy periodika ;;;;;;;;;;;;;;;;;;;;;;
 s ofi="D:\aRL\_tmp\peter\uhkt\import\"_sTrieda_"_SZP"_$r(999)_".txt"
 open ofi:("NWS":/CREATE):0
 use ofi
 
 
 ;; zapis do zaznamu (pomocka pre zapis suborneho zaznamu)
 ;d ##class(MARC).newX(.handleSZP,trida,"new2")
 ;d ##class(MARC).setTagX(.handleSZP,"000    00240nx   22001213  450")
 ;if ISBN'="" d ##class(MARC).setTagX(.handleSZP,"010    "_$c(31)_"a"_ISBN)
 ;if ISSN'="" d ##class(MARC).setTagX(.handleSZP,"011    "_$c(31)_"a"_ISSN)
 ;d ##class(MARC).setTagX(.handleSZP,"100    "_$c(31)_"a"_##class(Util).date()_"aczey0103    ba")
 ;d ##class(MARC).setTagX(.handleSZP,"110    "_$c(31)_"aa")
 ;if Zeme'="" d ##class(MARC).setTagX(.handleSZP,"102    "_$c(31)_"a"_Zeme)
 ;d ##class(MARC).setTagX(.handleSZP,"200 1  "_$c(31)_"a"_Nazev)
 ;d ##class(MARC).setTagX(.handleSZP,"801    "_$c(31)_"aCZ"_$c(31)_"b"_knihovna_$c(31)_"c"_##class(Util).date())
 ;d ##class(MARC).setTagX(.handleSZP,"970    "_$c(31)_"b"_"BXX")
 ;d ##class(MARC).setTagX(.handleSZP,"999    "_$c(31)_"a1"_$c(31)_"b"_knihovna_$c(31)_"d"_"arl-"_##class(Util).date())
 ;d ##class(MARC).setTagX(.handleSZP,"c99    "_$c(31)_"dDFLT_EPCA3")
 ;s sc=##class(MARC).writeX(.handleSZP)
  
 
 s s200=""
 s sDatAkt=$e(##class(MARC).genT005(),1,8)
 s s000="000    00240nx   22001213  450"
 s s100="100    "_$c(31)_"a"_sDatAkt_"aczey0103    ba"
 s s110="110    "_$c(31)_"aa"
 s s801="801  0 "_$c(31)_"a"_"CZ"_$c(31)_"b"_sSigla_$c(31)_"c"_sDatAkt 
 s s970="970    "_$c(31)_"b"_"BCA"
 s s999="999    "_$c(31)_"a"_"1"_$c(31)_"b"_sTriedaU_$c(31)_"c"_sTriedaU_$c(31)_"d"_"aRLConv-"_sDatAkt
 s sC99 ="C99    "_$c(31)_"dDFLT_EPCA3"
  
 s c=0,cSum=0
 s sText=""
 for  set sText=$o(^TMP($j,"SZP",sText)) quit:sText=""  do
 . ;use sOLDIO w !,sText
 . s c=c+1,cSum=cSum+1 
 . s s001=$g(^TMP($j,"SZP",sText))
 .
 . s s011a=$p(sText,"*",2)
 . s s200a=$g(^TMP($j,"SZP_200a",sText))
 . 
 . s s978=$g(^TMP($j,"SZP_IF",sText))
 . s s978=##class(User.Util).strswap(s978,";",$c(10))
 . use ofiprot w !,"s978=",s978
 . 
 . if s200a'="" d
 . . s s200="200 1  "
 . . s s200=s200_$c(31)_"a"_s200a
 . 
 . if s011a'="" d
 . . s s011="011    "
 . . s s011=s011_$c(31)_"a"_s011a
 . 
 . ; ZAPIS DO SUBORU SZP ;;;;;;;;;;
 . use ofi
 . w "# @id "_sTrieda_"UnEpca "_s001
 . w !,"001    "_s001
 . w !,s000
 . w !,##class(MARC).genT005(1)
 . if s011'="" w !,s011
 . w !,s100
 . w !,s110
 . if s200'="" w !,s200
 . w !,s801
 . w !,s970
 . if s978'="" w !,s978
 . w !,sC99
 . w !,s999
 . w !,"###",!
 
 use sOLDIO
 w !,c_" SZP records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" SZP records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"


 
 close ofi

 use ofiprot
 w !
 w !,"------------------------------------------------------------------------"
 w !,"Poèet novych zaznamov "_sTrieda_"UnEpca = ",cSum
 w !,"------------------------------------------------------------------------"
 
 
 
 
 use sOLDIO
 w !!,"Import "_sTrieda_" ukonceny                             ",$zdt($h,4)
 use ofiprot
 w !!,"Import "_sTrieda_" ukonceny                             ",$zdt($h,4)
 close ofiprot
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
]]></Implementation>
</Method>

<Method name="isoUNtoMarcIZPE">
<Description><![CDATA[
03.05.06 mk nova konverzia z UN ISO2709 do riadkoveho formatu <br>
            zo suboru do suboru pre konverziu IZPE IPVZ<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="IpvzUnCat"</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; trieda standartne IpvzUnCat
 ; oddelovac tagov standartne $c(30)
 ; oddelovac subtagov standartne $c(31)
 n odTag, odSubTag
 s odTag = $c(30)	
 s odSubTag = $c(31)	
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,tag,od,kolko,pocet
 n ciselna,datova,riadok
 
 s brk=0,li="",odd=$c(13)_$c(10)
 n poz,dlzka,j,zac, ttt, t200, tt2, prvy, posledny
 s poz=0 ; pozicia na ktoru sa ma nastavit
 s dlzka=0  ;urcenie dlzky kazdeho zaznamu
 s j = 0, zac=1, ttt=0, t200="", ttt2=0, prvy="",posledny="", posledny2=""
  
 for nLine=1:1 q:brk  d
 . ; nacitam dlzku nasledujuceho zaznamu
 . use inf:poz read dlzka#5 if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . if (dlzka'="") && (poz'="") d
 . . ; podla dlzky zaznamu precitat jeden zaznam
 . . use inf:(poz+24) read li#(dlzka-24) if $zeof'=0 s brk=1
 . . s poz = poz + dlzka  ; posunutie pocitadla o cely predchadzajuci zaznam
 . . ; nacitany 1 zaznam
 . . if (li'="") d     ; ak existuje zaznam rozdelime na casti
 . . . s ttt=0, t200 = ""
 . . . ; na zaciatku zapiseme zaciatok zaznamu
 . . . s prvy="",posledny="", posledny2=""
 . . . use outf w "# @id "_trieda_" new"_odd_"000    00000nam  22        450"_odd use OU
 . . . s ciselna = $p(li,odTag,1) ; prva ciselna cast  
 . . . s datova = $e(li,$l(ciselna)+1,99999) ; datova cast nasleduje za ciselnou
 . . . s pocet=$l(ciselna)/12     ; pocet tagov
 . . . for j=1:1:pocet d
 . . . . s rada = $e(ciselna,zac,j*12)
 . . . . s zac = zac + 12
 . . . . s tag=$e(rada,1,3)  ; cislo tagu
 . . . . s kolko=$e(rada,4,7) ; kolko znakov nacitat
 . . . . s od=$e(rada,8,12)  ; od ktoreho znaku citat
 . . . . ; vyber hodnot z datovej premennej
 . . . . s riadok=$e(datova,od+2,od+kolko)
 . . . . s riadok=##class(Util).strswap(riadok,odSubTag,$c(31))
 . . . . if tag'="" d
 . . . . . if tag="001" d
 . . . . . . s tag="C99"
 . . . . . . s riadok="  "_$c(31)_"a"_riadok
 . . . . . if tag="933" d
 . . . . . . s prvy=prvy+1
 . . . . . . s ttt=ttt+1
 . . . . . . s posledny2=""
 . . . . . . if ttt=1 d
 . . . . . . . s odd=""
 . . . . . . . s riadok="  "_$c(31)_"a"_$e(riadok,3,9999)
 . . . . . . if ttt=2 d
 . . . . . . . ;s ttt=0
 . . . . . . . s riadok="  "_$c(31)_"b"_$e(riadok,3,9999)
 . . . . . . . s odd=$c(13)_$c(10) 
 . . . . . . . s ttt2=1  ; skoncil pracu na 933
 . . . . . . 
 . . . . . if tag="000" d  ; ak je ttt>0 tak predtym 
 . . . . . . s tag="934"   
 . . . . . . ; rozdelenie na subtagy 
 . . . . . . ; datumova - dve bodky a posledna cast je 4 cisla
 . . . . . . s ret=$e(riadok,3,9999)  ; skutocna hodnota subtagu
 . . . . . . s zsub="e"
 . . . . . . s tretia=$p(ret,".",3)
 . . . . . . if ($l(tretia)=4) d   ; datum prijmu
 . . . . . . . if ($e(tretia,1,2)="19") || ($e(tretia,1,2)="20") s zsub="d"
 . . . . . . 
 . . . . . . s druha=$p(ret,".",2)
 . . . . . . if ($l(druha)=2) && (tretia="")  s zsub="c"
 . . . . . . 
 . . . . . . if (ret="A") || (ret="P") s zsub="a"
 . . . . . . if (ret="K") || (ret="D") s zsub="b"
 . . . . . . 
 . . . . . . s riadok="  "_$c(31)_zsub_$e(riadok,3,9999)
 . . . . . . ;treba zlucit vsetky tagy 934 do jedneho v ramci jedneho opakovania
 . . . . . . s posledny=posledny+1
 . . . . . . s posledny2=posledny2+1
 . . . . . . s odd=""
 . . . . . . ;s riadok="***"_tretia_"*#"_ret_"#"
 . . . . . . 
 . . . . . . 
 . . . . . . 
 . . . . . if tag="955" d
 . . . . . . s tag="610"
 . . . . . . s riadok="1 "_$e(riadok,3,9999)
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"k",$c(31)_"a")
 . . . . . if tag="964" d 
 . . . . . . s tag="610"
 . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"n",$c(31)_"a")
 . . . . . if (tag="910") && ($l(riadok)=4) s tag = ""
 . . . . . if tag'="" d
 . . . . . . if $e(tag,1,2)="00" d  use outf w tag_"    "_riadok_odd use OU
 . . . . . . if $e(tag,1,2)'="00" d 
 . . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . . s zapis=tag_" "_riadok_odd
 . . . . . . . if (tag="933") && (ttt=2) s zapis=##class(Util).strswap(zapis,"933    ",""),ttt=0
 . . . . . . . if (tag="933") && (ttt=1) d
 . . . . . . . . if (prvy>1) s zapis=$c(13)_$c(10)_zapis
 . . . . . . . if (tag="801") && (posledny) s zapis=$c(13)_$c(10)_zapis
 . . . . . . . 
 . . . . . . . if (tag="934") && (posledny2>1) s zapis=##class(Util).strswap(zapis,"934    ","")
 . . . . . . . use outf w zapis use OU
 . . . . s odd=$c(13)_$c(10) 
 . . . ; na konci zapiseme ukoncenie zaznamu
 . . . use outf w "###"_odd use OU
 . . s li="",zac=1
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="symadd200">
<Description><![CDATA[
03.05.06 mk; globalka na spojenie 200 tagov viacero opakovani<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t200=##class(MARC).getTagX(.handle,"200",-1) 
 s c=$l(t200,$c(10))   ;pocet opakovani tagu
 s t200new="",n=0,tag=""
  
 f n=1:1:c d
 . s tag=$p(t200,$c(10),n)  ; nacitanie jedneho tagu 
 . if tag'="" d
 . . if t200new'="" d  
 . . . s tag=##class(User.Util).strswap(tag,"200    ","")
 . . . s t200new=t200new_tag
 . . if t200new="" d  s t200new=tag
 
 if t200new'="" d ##class(MARC).setTagX(.handle,t200new)
 q
]]></Implementation>
</Method>

<Method name="genIZPEHoldings">
<Description><![CDATA[
03.05.06 mk; pridana metoda na generovanie holdingov zo zaznamu IZPE<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ;parametre
 ;.handle aktualneho zaznamu katalogu
 ;kniznica do 999b a c	
	
 ; postupuje sa podla tituloveho zaznamu a podla tagu 933. Podla poctu
 ; opakovani sa v holdingovej databaze generuju holdingy.
 ; podpolia:
 ; 933
 ; a - prirastkove cislo
 ; b - signatura  
 ; 934
 ; a - kategoria
 ; b - sposob nadobudnutia
 ; c - cena
 ; d - datum prijmu
 ; e - cislo dodacieho listu
 s kniznica = "IPVZ"
 ; 
 s class=##class(MARC).recordClassX(.handle)
 s t001=##class(MARC).recordT001X(.handle)
 s t933=##class(MARC).getTagX(.handle,"933",-1)  
 s t934=##class(MARC).getTagX(.handle,"934",-1)  
 if t933 = "" q
 s t100="",t300="",t400=""
 s spracovatel="arl"
 s t005=##class(MARC).genT005()
 

 s i=0,lsLine="",pocet=0,i=0,HoldKod="",lsLine2=""
  
 for i=1:1:$l(t933,$c(10)) d   ;podla poctu opakovania 933 tagu
 . s lsLine=$p(t933,$c(10),i)  ;vybrat 1 tag933
 . s lsLine2=$p(t934,$c(10),i)  ;vybrat 1 tag934 
 . s lsLine=$e(lsLine,7,$l(lsLine)) ;ciste len subtagy
 . s lsLine2=$e(lsLine2,7,$l(lsLine2)) ;ciste len subtagy
 . s pocet=$l(lsLine,$c(31))   ;pocet subtagov
 . ;s HoldKod=t001_"_000"_i        ;kod noveho holdingu, zatial natvrdo  
 . s HoldKod=t001_"_"_##class(Util).leadingZero(i,4)
 . w !, "i= "_i_" kod= "_HoldKod_" t001= "_t001
 . s t100="",t300="",t400=""
 . ; najpr spracovanie 933 tagu
 . for j=1:1:$l(t933,$c(31)) d 
 . . s lsST=$p(lsLine,$c(31),j)  ;jeden subtag
 . . s subtag=$zcvt($e(lsST,1,1),"L")    ;kod subtagu
 . . s lsST=$e(lsST,2,$l(lsST))
 . . if subtag="a" s t100=t100_$c(31)_"t"_lsST   ;prirastkove cislo
 . . if subtag="b" d
 . . . s t100=t100_$c(31)_"s"_"IZPE "_lsST   ;signatura
 . . . s t100=t100_$c(31)_"lIZPE"   ;lokacia
 . for j=1:1:$l(t934,$c(31)) d
 . . s lsST=$p(lsLine2,$c(31),j)  ;jeden subtag
 . . s subtag=$zcvt($e(lsST,1,1),"L")    ;kod subtagu
 . . s lsST=$e(lsST,2,$l(lsST))
 . . if subtag="a" s t100=t100_$c(31)_"i"_lsST   ;interny kod
 . . s spracovatel="arl"
 . .    ;spracovatel 
 . . if subtag="d" d  ; datum zapisu + datum prijmu
 . . . s datum=$p(lsST,".",3)_$p(lsST,".",2)_$p(lsST,".",1)
 . . . if lsST'="" s t005=datum_"000000.0"   ;datum zapisu 
 . . . s t400=t400_$c(31)_"a"_datum
 . . if subtag="c" s t400=t400_$c(31)_"c"_lsST   ;cena1
 . . if subtag="c" s t400=t400_$c(31)_"d"_lsST   ;cena2
 . . if subtag="b" s t400=t400_$c(31)_"k"_lsST   ;sposob nadobudnutia
 . . if subtag="e" s t400=t400_$c(31)_"q"_lsST   ;cislo faktury
 . ;zapis zaznamu
 . d ##class(MARC).newX(.handleh,class_"H",HoldKod)
 . d ##class(MARC).setTagX(.handleh,"000    00000     2200109   450")
 . d ##class(MARC).setTagX(.handleh,"005    "_t005)
 . if t100'="" d ##class(MARC).setTagX(.handleh,"100    "_t100)
 . d ##class(MARC).setTagX(.handleh,"200    "_$c(31)_"d35")
 . if t400'="" d ##class(MARC).setTagX(.handleh,"400    "_t400)
 . d ##class(MARC).setTagX(.handleh,"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_spracovatel_"-"_##class(Util).date())
 . d ##class(MARC).writeX(.handleh,1,,1)

 q
]]></Implementation>
</Method>

<Method name="arlStatUser">
<Description><![CDATA[

<pre>
14.07.06 pb; konverzia dat z excelu pre pocet uzivatelov pripojenych pocas dna zo statistiky pstat,
             podrobny popis je v programe, Crep si treba vytvorit podla potreby
 
d ##class(UtilConv).arlStatUser() vyvolanie programu

/// </pre>]]></Description>
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 
 s sOLDIO=$io 
 w !,"Statistika poctu prihlasenych uzivatelov v aRL pocas dna ****  ",$zdt($h,4)
 
 
 s ofiprot="D:\aRL\_tmp\peter\arl\Imp"_$r(999)_".txt"
 
 s ifi="D:\aRL\_tmp\peter\arl\arlstat2006.csv"
 ; data z Excelu 
 open ifi:(/READ):0
 s te=$test
 use sOLDIO w !,"otvaram subor: "_ifi_"   Tvorba txt pre Crep"
 if te=1 d  w "  ok"
 else  w "  not ok"
 w !,"$j="_$j,!
 
 
 if te=1  d
 . open ofiprot:("NWS":/CREATE):0
 . use ofiprot
 . w "Protokol o importe arlStat"_"                          ",$zdt($h,4),!
 . w !,"          ======================================"
 
   
 use ofiprot
 w !!
 w !,"          ======================================"
 w !,"          Otvaram subor: "_ifi_"   Tvorba txt pre Crep"
 
 
 if te=1  d 
 . s ofi="D:\aRL\_tmp\peter\arl\arlStat"_$r(999)_".txt"
 . open ofi:("NWS":/CREATE):0
 .
 . d $ZU(68,40,1)
 . 
 . ;/HCLASS:VARCHAR,H001:VARCHAR,C001_b:FLOAT
 . ;?%DATASET:VARCHAR="UNH"
 . ;"RuzUnCatH","c013286_0003",""
 . 
 . s uvo=""""               ;uvodzovka
 . s uvoCuvo=""""_","_""""  ;uvodzovka, ciarka a uvodzovka
 . 
 . ; ZAPIS hlaviciek DO SUBORU txt ;;;;;;;;;;
 . use ofi
 . w "/CLASS:VARCHAR,ID:VARCHAR,Dt:VARCHAR,DtMM:VARCHAR,DtOdbc:DATE,User:VARCHAR,UserCnt:FLOAT"
 . w !,"?%DATASET:VARCHAR="_uvo_"U"_uvo
 
 . 
 . ;vstupny subor:
 . ;4;1.1.2006;00:38:12*;ipac_cav:1;ipac_kkt:1;ipac_pim:1;ipac_sav:2;ipac_spu:1;ipac_umb:1;ipac_vsvu:2;ipac_vy:2;_total:4;;;;;;;;;;;;;;;;;
 . 
 . s brk=0,c=0,c2=0,pg=0
 . for  q:((brk)||(c=99999))  d
 . . 
 . . use ifi
 . . read li if $zeof'=0 s brk=1
 . . if brk=1 q
 . . s c=c+1,pg=pg+1 
 . . ;if pg'<100  d  use sOLDIO w "." s pg=0
 . . use sOLDIO w ".",c
 . . 
 . . s sId=$p(li,";",1) ;id
 . . s sDat=$p(li,";",2) ;datum
 . . s sDatDD=$e($p(sDat,".",1)+100,2,3) ;den na 2 znaky
 . . s sDatMM=$e($p(sDat,".",2)+100,2,3) ;mesiac na 2 znaky
 . . s sDatRR=$p(sDat,".",3)             ;rok je na 4 2 znaky
 . . s sDt=sDatDD_"."_sDatMM_"."_sDatRR
 . . s sDtOdbc=sDatRR_"-"_sDatMM_"-"_sDatDD
 . . s sDtMM=sDatRR_"-"_sDatMM
 . . 
 . . s brk2=""
 . . for j=4:1:9999  q:brk2  d
 . . . s sX=$p(li,";",j) 
 . . . if sX="" s brk2=1 q
 . . . s sUsr=$p(sX,":",1)     ;id uzivatela
 . . . s sUsrCnt=$p(sX,":",2)  ;pocet uzivatelov
 . . . 
 . . . if $f(sUsr,"sav")>1  d
 . . . . ; ZAPIS DO SUBORU txt ;;;;;;;;;;
 . . . . use ofi
 . . . . w !,uvo_"arlStat"_uvoCuvo_sId_uvoCuvo_sDt_uvoCuvo_sDtMM_uvoCuvo_sDtOdbc_uvoCuvo_sUsr_uvoCuvo_sUsrCnt_uvo
 . . . . s c2=c2+1
 
 use sOLDIO
 w !,c_" records read"
 w !,c2_" records writen                                   ",$zdt($h,4)
 use ofiprot
 w !,c_" records read"
 w !,c2_" records writen                                   ",$zdt($h,4)
 use ofiprot w !,"          ======================================"
 
 
 close ifi
 close ofi
 close ofiprot
]]></Implementation>
</Method>

<Method name="inv">
<Description><![CDATA[
27.07.06 mk inventarizacia zo suboru<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="",trieda2:%String="",nazov:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; d ##class(UtilConv).inv("d:\arl\_tmp\milan\inv.txt","d:\arl\_tmp\milan\inv2log.txt","PimUnCatH","pim_un_cat_h","invdet2006")	
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; trieda holdingov
 ; trieda2 nazov triedy v _ formate
 ; nazov inv. zoznamu
 ; berie do uvahy posledne opakovanie tagu 500
 
 ; spracuje subor vo formate 100b,100t

 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 s brk=0,li="",odd=$c(13)_$c(10)

 s poc = 1  ; pocitadlo kodov zaznamov
 f nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . if li="" s li="99999999999,999999"
 . ; nacitany 1 riadok v li
 . s bar=##class(Util).trim($p(li,",",1))
 . s prc=##class(Util).trim($p(li,",",2)) 
 . s hladaj=bar     
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]'"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . ;
 . if $d(^ooDataTableI(trieda,"bc",hladaj)) d  ; vyhlada podla ciaroveho kodu
 . . s idhol=$o(^ooDataTableI(trieda,"bc",hladaj,""))
 . . if idhol'="" d  
 . . . s t001=##class(MARC).getT001(idhol)
 . . . ; nacitat zaznam holdingu 
 . . . s t500 = "" 
 . . . s t100t=""
 . . . s t500sinnew=""
 . . . if ##class(MARC).readLX(.handleh,trieda2_"*"_t001) s t500=##class(MARC).getTagX(.handleh,"500",-1),t100t=##class(MARC).getTagX(.handleh,"100t") 
 . . . if t500'="" d  ; pozor vsetky opakovanie tagu 500
 . . . . s pocet = $l(t500,$c(10)) ; pocet opakovani tagu 500
 . . . . s t500sin = $p(t500,$c(10),pocet) ; zoberie posledne opakovanie tagu 500
 . . . . s sb=##class(MARC).getSubTagStr(t500sin,"b")
 . . . . if sb="" d  ; ak este subtag b neexistuje
 . . . . . ; len doplnime 
 . . . . . s status="1"
 . . . . . if t100t'=prc d  ; zhoda aj v pr. cisle
 . . . . . . use outf
 . . . . . . w odd_"nezhoduje sa prirastkove cislo - status 4 "_li
 . . . . . . s status="4"
 . . . . . s t500sinnew=t500sin 
 . . . . . s t500sinnew=t500sinnew_$c(31)_"b"_status
 . . . . . s t500=##class(Util).strswap(t500,t500sin,t500sinnew)
 . . . . . d ##class(MARC).setTagX(.handleh,t500) 
 . . . . . d ##class(MARC).writeX(.handleh,1,,1)
 . . . . else  d  ; 
 . . . . . s status="1"
 . . . . . if t100t'=prc d  ; zhoda aj v pr. cisle
 . . . . . . use outf
 . . . . . . w odd_"nezhoduje sa prirastkove cislo - status 4 "_li
 . . . . . . s status="4"
 . . . . . s t500sinnew=t500sin 
 . . . . . s t500sinnew=##class(Util).strswap(t500sinnew,$c(31)_"b"_sb,$c(31)_"b"_status)
 . . . . . s t500=##class(Util).strswap(t500,t500sin,t500sinnew)
 . . . . . d ##class(MARC).setTagX(.handleh,t500) 
 . . . . . d ##class(MARC).writeX(.handleh,1,,1)
 . . . else  d  ; ak nie je ziadna 500
 . . . . ;doplnime standatny tag 500
 . . . . ; este kontrola prc
 . . . . s status="1" 
 . . . . if t100t'=prc d  
 . . . . . use outf
 . . . . . w odd_"nezhoduje sa prirastkove cislo - status 4 "_li
 . . . . . s status="4"
 . . . . . s datum=##class(Util).date()_"000000.0"
 . . . . . s t500sinnew="500    "_$c(31)_"a"_nazov_$c(31)_"b"_status_$c(31)_"c"_datum_$c(31)_"esys"
 . . . . . d ##class(MARC).setTagX(.handleh,t500sinnew) 
 . . . . . d ##class(MARC).writeX(.handleh,1,,1)
 . else  d ; ak nenajde ciarovy kod
 . . use outf
 . . w odd_"nenajdeny ciarovy kod "_li
 . 
 . 
 . 
 . q:$zeof'=0
 
 
   
 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q
]]></Implementation>
</Method>

<Method name="convAdresare">
<Description><![CDATA[
27.02.07 mk konvezia adresarov z csv<br>
            do riadkoveho formatu autority<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; nazov triedy	

 ;d ##class(UtilConv).convAdresare("c:\adresare\adresare2.csv","c:\adresare\adr.txt")
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd
 s odd=$c(13)_$c(10)
 
 s brk=0,li=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . if (li'="") d  ; nacitany jeden zaznam = jeden riadok
 . . use outf
 . . ; zapisa hlavicky
 . . s kod=$p(li,";",1) ; 001
 . . s nazov=$p(li,";",2) ; 210a
 . . s ulica=$p(li,";",3) ; 980a
 . . s pobox=$p(li,";",4) ;980a druhe opakovanie
 . . s psc=$p(li,";",5)  ; 980d
 . . s mesto=$p(li,";",6) ; 980b
 . . s tel=$p(li,";",7) ; 981c
 . . s tel2=$p(li,";",8) ; 981c
 . . s fax=$p(li,";",9) ; 981d
 . . s email=$p(li,";",10) ; 981e
 . . s www=$p(li,";",11) ; 981f
 . . s typ=$p(li,";",12) ;982f 
 . . s idtyp=$p(li,";",13) ; 
 . . s idautor=$p(li,";",14) ; neprevadzat len 2 a 0
 . . ;
 . . w odd_"# @id CsUnAuth a"_kod
 . . w odd_"100    "_"20070228csloa0103    ba"
 . . if nazov'="" w odd_"210 02 "_$c(31)_"a"_nazov
 . . s t980=""
 . . ; na konci ulice je cislo to treba do 980y (ak posledne slovo je cislo tak ho tam preniest
 . . s cislo=$p(ulica," ",$l(ulica," ")) ; posledne slovo
 . . s test=""
 . . f j=0:1:9 d
 . . . if $e(cislo,1,1)=j s j=9,test="1"
 . . if test="1" d
 . . . s ulica=##class(User.Util).strswap(ulica," "_cislo,"")
 . . . if ulica'="" s t980=t980_$c(31)_"a"_ulica
 . . . if cislo'="" s t980=t980_$c(31)_"y"_cislo
 . . else  d
 . . . if ulica'="" s t980=t980_$c(31)_"a"_ulica
 . . if pobox'="" s t980=t980_$c(31)_"a"_pobox
 . . if mesto'="" s t980=t980_$c(31)_"b"_mesto
 . . if psc'="" s t980=t980_$c(31)_"d"_psc
 . . if t980'="" w odd_"980    "_t980_$c(31)_"xO"
 . . s t981=""
 . . if tel'="" s t981=t981_$c(31)_"c"_tel
 . . if tel2'="" s t981=t981_$c(31)_"c"_tel2
 . . if fax'="" s t981=t981_$c(31)_"d"_fax
 . . if email'="" s t981=t981_$c(31)_"e"_email
 . . if www'="" s t981=t981_$c(31)_"f"_www
 . . if t981'="" w odd_"981    "_t981
 . . if typ'="" w odd_"982    "_$c(31)_"f"_typ
 . . ;s t983=""
 . . ;if idtyp'="" s t983=t983_$c(31)_"a"_idtyp
 . . ;if t983'="" w odd_"983    "_t983
 . . 
 . . w odd_"999    "_$c(31)_"a1"_$c(31)_"bCS001"_$c(31)_"cCS001"_$c(31)_"d"_"arl-"_##class(Util).date()
 . . w odd_"###"
 . . ;if li'="" use outf w odd_li use OU
 . q:$zeof'=0

 ;use outf w odd_"999    "_$c(31)_"a1"_$c(31)_"bCS"_$c(31)_"cCS"_$c(31)_"d"_"arl-"_##class(Util).date()_odd_"###" use OU
 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="listTagValues">
<Description><![CDATA[
<pre>

03.04.07 pb; upravy pre vypis tagu 001 aj ked nie je v datach v riadku MARC
02.04.07 pb; pridany parameter "-case-" s hodnotami 'u/l/a/o', par3 nahradeny s -itemlen-
31.03.07 pb; osetreny pripad '200a,4xx/200a' v tags_to_display a '200' v tag_to_select;
             doplnena moznost mat aj v zozname "tagView" cele tagy bez subtagov
29.03.07 pb; uprava pre vlozeny tag 001
28.03.07 pb; doplnenie parametrov "filter" a "pagelen", zmena poradia
             parametrov "tagSel" s "tagView", zmena vystupu
27.03.07 pb; rozsirena moznost pouzitia par1 ak je par2 prazdne, algoritmus na 
             pouzivanie skratenej formy zapisu tagov v par1,2, oprava drobnych chyb
26.03.07 pb; prerobene na verziu bez pov.par1 (class)a par4(savelist),
             ostali 3 parametre, metoda pracuje s aktivnym select listom, popisky
26.03.07 pb; osetrena max.dlzka 1 uzlu, a max.dlzka 1 polozky (subtagu),
             pridany par5, popisky
25.03.07 pb; upravy v par3 pre zlozeny vs. jednoduchy tag podla obsahu par2 
24.03.07 pb; doladenie logiky, kodu, nastavenie 'eval_txx', ucesanie vystupu
22.03.07 pb; metoda viewTagContent premenovana na listTagValues, vyvolanie prikazom "ltv",
             zmena parametrov na "par", rozsirenie moznosti, zmena logiky, popisky
10.03.07 pb; prehlad vyskytov obsahu tagu s pocetnostou vyskytov - kumulativny vypis
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>par=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 /// Parametre a ich popis:
 /// 
 /// par1,par2:
 /// Tato metoda vypise obsah tagov uvedenych v "par1".
 /// Ak su obsahy tagov pre jednotlivy tag+subtag v "par1" zhodne, skumuluje ich a vypise ich pocetnost.
 ///
 /// Tagy v "par1" mozu mat aj tvar zlozeneho tagu 4xx/tag, prip. tagu s *-ckovou konvenciou,
 /// napr. 70*, 70*a prip. Txx tagu.
 ///
 /// V "par1" mozu byt tagy zapisane v "uplnom tvare" alebo v "skratenom tvare".
 /// - uplny tvar sa zapisuje v tvare tag+subtag napr. 700a,700b,T004 alebo 463/200a,463/200v alebo T00a,T00c
 /// - v skratenom tvare je analogicky zapis napr. 700a,b,4 alebo 463/200a,v alebo T00a,c
 /// Mnozstvo tagov v par1 nie je obmedzene.
 ///
 /// Pocetnost vyskytov sa zistuje zo vsetkych opakovani prveho tagu+subtagov v "par1".
 /// Ak treba pocetnost vyskytov zistit nie z prveho tagu, treba do "par2" zapisat tag,
 /// z ktoreho treba zistit pocetnost vyskytov, napr. par1="463/210a,70*a,b,4" par2="70*"
 ///
 /// Ak je v "par1" uvedeny tag bez subtagu a nie je uvedeny "par2", zistuje sa kumulativny obsah a ich
 /// pocetnost z celeho "par1"
 /// 
 /// 
 /// Metoda pracuje s aktivnym select listom. 
 
 ; uplny format prikazu (pozri aj help; help sa vypise prikazom "ltv" bez parametrov):
 ; "ltv [-filter-chars] [-pagelen-20] [-itemlen-120] [-case-'u/l/a/o']" tags_to_display [tag_to_count]"
 
 ;d ##class(UtilConv).listTagValues(70*a,b,200a")
 
 s prog="listTagValues: "
 ;w !," prg ",prog," started at ",$$$ShowDTime
 
 ;s par=$$$trim(par) ; generuje sa ako fcia zstrip
 s par=##class(Util).trim(par)
 
 s par1=$p(par," ",1)
 s lsErorr=""
 s lsFilter="", lnPageLen="20", maxItemLen="", sCase="L"
 if $p(par1,"-",1)="",$p(par1,"-",2)="filter"  s lsFilter=$p(par1,"-",3),par=$p(par," ",2,999),par1=$p(par," ",1)
 if $p(par1,"-",1)="",$p(par1,"-",2)="pagelen" s lnPageLen=$p(par1,"-",3),par=$p(par," ",2,999),par1=$p(par," ",1)
 if $p(par1,"-",1)="",$p(par1,"-",2)="itemlen" s maxItemLen=$p(par1,"-",3),par=$p(par," ",2,999),par1=$p(par," ",1)
 if $p(par1,"-",1)="",$p(par1,"-",2)="case"    s sCase=$p(par1,"-",3),par=$p(par," ",2,999),par1=$p(par," ",1)
 
 s lsFilter=$zcvt(lsFilter,"L")
 
 s sCase=$zcvt(sCase,"L")
 if sCase="o" s sCase=""
 s cSCase=$l(sCase)
 if (sCase="")||($f(sCase,"u"))||($f(sCase,"l"))||($f(sCase,"a"))||($f(sCase,"o"))  d   ; povolene hodnoty
 . 
 else  s lsErorr=1
 
 
 
 s tagSel= $p(par," ",1)
 s tagView=$p(par," ",2)
 ; 02.04.07 pb; par3 nahradeny s -itemlen-
 ;s maxItemLen=$p(par," ",3)
 
 if (tagSel'=""),(tagView'="") d  ; vymenim tagSel s tagView navzajom, lebo je zmenene poradie parametrov prikazu
 . s sX=tagSel
 . s tagSel=tagView
 . s tagView=sX
  
 if (tagSel="")||(lsErorr=1) w !,"no tag or bad parameter - quit" d
 . w !,"ltv [-filter-chars] [-pagelen-20] [-itemlen-120] [-case-'u/l/a/o']"
 . w !,"                              tags_to_display [tag_to_count]"
 . w !,"                           -- list tag values and counts for active select"
 . w !,"                              filter - display only beginning with given chars"
 . w !,"                              pagelen - display page len (999999=unlimited)"
 . w !,"                              itemlen - max length of every tag+subtag, dflt=120"
 . w !,"                              case - translate to 'up/low/ascii/orig', dflt='l'"
 . w !,"                              tags_to_display - 70*a,b,4,200a,T00a"
 . w !,"                              tag_to_count - only if tag to count (multi) should"
 . w !,"                                 be not the first tag from tags_to_display"
 . w !,"                        e.g.: ltv -case-al 011a,200a,f,915c,463/210a"

 if tagSel="" q
 
 
 if tagView="." s tagView=""
   
 if maxItemLen="." s maxItemLen=""
 if maxItemLen="" s maxItemLen=120  ; max.dlzka 1 polozky, kvoli max.dlzke 1 uzlu
 s maxNodeLen=242                   ; 242 je max.dlzka 1 uzlu

 
 
 ; PRISPOSOBENIE VSTUPNYCH PARAMETROV LOGIKE PROGRAMU
 s tagSelTag=""      ; tag bez subtagov
 if $l($e(tagSel,1,7),"/")>1 d    ; pre zlozeny tag
 . s tagSelTag=$e(tagSel,1,7)
 else  d                  ; pre jednoduchy tag
 . s tagSelTag=$e(tagSel,1,3)
 
 
 if (tagView="") d
 . if (($l(tagSel)=3)||(($l(tagSel)=7)&&($l(tagSel,"/")>1)))  d  ; existuje iba tagSel, tagView je prazdny
 . . s tagView0=tagView
 . . s tagView=tagSel  ; tag na 3 alebo 7 znakov - vypis celeho tagu
 . else  d
 . . ; znormalizovanie tagSel, kazdy prvok zoznamu musi byt na 4 alebo 8 znakov
 . . s tagView=$$toFullTag(tagSel)
 . . s tagView0=tagView  ; tagView0 bude tagView po tejto uprave
 . . s tagSel=tagSelTag  ; tag na 3 alebo 7 znakov, povodne mal inu dlzku
 . . 
 else  d
 . s tagSel=tagSelTag  ; tag na 3 alebo 7 znakov, povodne mohol mat inu dlzku
 . ; znormalizovanie tagView, kazdy prvok zoznamu musi byt na 4 alebo 8 znakov
 . s tagView=$$toFullTag(tagView)
 . s tagView0=tagView
 
 s cTagView=..fc(tagView,",")
 
 
 ; AKTIVOVANIE/DEAKTIVOVANIE txx PODLA ZADANYCH PARAMETROV
 s Txx="0"
 if $l(tagSel, "T")>1 s Txx="1"
 if $l(tagView,"T")>1 s Txx="1"
 s sEvalTempTags=##class(Util).getParamQ("eval_txx")  ; aktualna hodnota txx
 if sEvalTempTags="" s sEvalTempTags="0"
 if sEvalTempTags'=Txx w !! d ##class(Util).X("txx "_Txx)  ; nastavim Txx na hodnotu potrebnu v tomto prg
 if Txx="1" d  s Txx="T"
 
 
 
 ; SPRACOVANIE ZAZNAMOV
 s sClasses=""
 if ##class(Util).XcheckActiveList(0) d  ; 26.03.07 pb; pouzijem aktivny select list
 . s idCnt=$i(^$$$MarcTempG)  ; pracovny uzol
 . s id="",point=0,brk="",cntRecAll=0,cntCurrAll=0
 . w !
 . for  s id=$o(^Lists("tmp",$j,id)) q:((id="") || brk)  d
 . . 
 . . s point=point+1, sX=$e(point,$l(point)-2,$l(point))  if sX="000" d  w "."
 . .                s sX=$e(point,$l(point)-4,$l(point))  if sX="00000" d  w !
 . . s idx=id if $f(idx,"*") s idx=$p(idx,"*",2)  ; test na triedeny zoznam
 . . s sClass=##class(MARC).getCLASS(idx)
 . . s sT001=##class(MARC).getT001(idx)
 . . if $l(sClasses,sClass)<=1  d
 . . . if sClasses'="" s sClasses=sClasses_","
 . . . s sClasses=sClasses_sClass
 . . 
 . . if '##class(MARC).readX(.handle,sClass,sT001,Txx) s brk=1,err="ERRCLM002#"_class_"*"_t001 w !,prog_"record "_class_"*"_t001_" not FOUND!" q
 . . s cntRecAll=cntRecAll+1
 . . s row=##class(MARC).getTagX(.handle,tagSel,-1)  ; vsetky vyskyty tag_to_select
 . . 
 . . s cnt = ..fc(row,$c(10))
 . . for ix=1:1:cnt d
 . . . s rowDet=$p(row,$c(10),ix)
 . . . s subtagDet=""
 . . . 
 . . . if tagView0 '="" d    ; pre existujuci tags_to_display
 . . . . for iy=1:1:cTagView  d     ; spracovat cely zoznam zobrazovanych tagov
 . . . . . s tagViewCurr=$p(tagView,",",iy)
 . . . . . s tagViewCurr0=tagViewCurr
 . . . . . 
 . . . . . if ($e(tagViewCurr,1,3)=$e(tagSel,1,3)),($l(tagViewCurr,"/")>1) d  ; pre zlozeny tag v tagView zozname
 . . . . . . s tagViewCurr=$p(tagViewCurr,"/",2)
 . . . . . 
 . . . . . if subtagDet'="" s subtagDet=subtagDet_"#"
 . . . . . 
 . . . . . ; 31.03.07 pb; osetreny pripad '200a,4xx/200a' v tags_to_display a '200' v tag_to_select,
 . . . . . ;          lebo '200' naslo v oboch pripadoch; + nova premenna tagSelIf
 . . . . . s tagSelIf=tagSel
 . . . . . if ($l(tagViewCurr0,"/")>1),($l(tagSel,"/")<=1) s tagSelIf="/"_tagSel
 . . . . . 
 . . . . . if $l(tagViewCurr,"/")>1 d
 . . . . . . s subtag=$e(tagViewCurr,8,8)
 . . . . . else  d
 . . . . . . s subtag=$e(tagViewCurr,4,4)
 . . . . . if $e(tagViewCurr0,$l(tagViewCurr0)-$l(tagSelIf),$l(tagSelIf)) = tagSelIf  d    ; pre tags_to_display obsiahnute v tag_to_select; hladam zhodu v poslednych znakoch
 . . . . . . 
 . . . . . . if subtag="" d  ; pre cely tag
 . . . . . . . if $l(tagSel,"/001")>1 d   ; vynimka pre vlozeny tag 001, ten uz mam kompletny
 . . . . . . . . s sX=rowDet
 . . . . . . . else  s sX=$e(rowDet,8,9999)
 . . . . . . . s sX=##class(Util).strswap(sX,$c(31)," $") ; pred znakmi subtagu bude $
 . . . . . . 
 . . . . . . else  d
 . . . . . . . s sX=##class(MARC).getSubTagStr(rowDet,subtag)  ;  1 subtag
 . . . . . . 
 . . . . . . if $l(sX)>maxItemLen s sX=$e(sX,1,maxItemLen)_".."  ; max.dlzka 1 subtagu, kvoli max.dlzke 1 uzlu
 . . . . . . 
 . . . . . . if sX="" s sX="."
 . . . . . . s sX=$$ltvConvertString(sX)
 . . . . . .
 . . . . . else  d     ; pre tags_to_display NEobsiahnute v tag_to_select 
 . . . . . . s sX=##class(MARC).getTagX(.handle,tagViewCurr0)  ; iba 1.vyskyt, hodnota je pomocna pre vypis
 . . . . . . 
 . . . . . . if subtag="" d
 . . . . . . . if $l(tagSel,"/001")>1 d   ; vynimka pre vlozeny tag 001, ten uz mam kompletny
 . . . . . . . else  s sX=$e(sX,8,9999)
 . . . . . . . s sX=##class(Util).strswap(sX,$c(31)," $") ; pred znakmi subtagu bude $
 . . . . . . 
 . . . . . . if $l(sX)>maxItemLen s sX=$e(sX,1,maxItemLen-2)_".."  ; max.dlzka 1 subtagu, kvoli max.dlzke 1 uzlu
 . . . . . . 
 . . . . . . if sX="" s sX="."
 . . . . . . s sX=$$ltvConvertString(sX)
 . . . . 
 . . . .
 . . . else  d     ; pre NEexistujuci tags_to_display zoberiem 1 kompletny tag
 . . . . if $l(tagSel,"/001")>1 d   ; vynimka pre vlozeny tag 001, ten uz mam kompletny
 . . . . . s sX=rowDet
 . . . . else  s sX=$e(rowDet,8,9999)
 . . . . if $l(sX)>maxItemLen s sX=$e(sX,1,maxNodeLen)  ; max.dlzka 1 subtagu=max.dlzke 1 uzlu, lebo ine v uzle uz nebude
 . . . . s sX=##class(Util).strswap(sX,$c(31)," $") ; pred znakmi subtagu bude $
 . . . . 
 . . . . if sX="" s sX="."
 . . . . s sX=$$ltvConvertString(sX)
 . . . 
 . . . if (subtagDet'="") d
 . . . . s sX=$g(^$$$MarcTempG(idCnt,sClass,tagView,subtagDet))
 . . . . s sX=sX+1, cntCurrAll=cntCurrAll+1
 . . . . s ^$$$MarcTempG(idCnt,sClass,tagView,subtagDet)=sX
 . . . . 
 
 
 . ; VYPIS PARAMETROV
 . w !,"list tag values and counts for class: '",sClasses,"'"
 . w !," tags to display='",tagView,"',  tag to count='",tagSel,"'"
 . 
 . w !," filter='",lsFilter,"', "
 . w "pagelen='",lnPageLen,"', "
 . w "itemlen='"
 . if maxItemLen<=maxNodeLen d
 . . w maxItemLen
 . else  w maxNodeLen
 . w "', "
 . w "case='",sCase,"'" 

 
 . ; VYPIS VYSLEDKOV
 . w !!,"RESULT tag values and counts:"
 . w !
 . s id="", ix=-1, brk=""
 . for  s id=$o(^$$$MarcTempG(idCnt,sClass,tagView,id)) q:(id="")||(brk=1)  d
 . . s sX=$g(^$$$MarcTempG(idCnt,sClass,tagView,id))
 . . if ix=-1 d
 . . . s ix=0
 . . . for iy=1:1:40 w "+" ; hlavicka
 . . 
 . . if lsFilter'="",$zcvt($e(id,1,$l(lsFilter)),"L")'=lsFilter q
 . . 
 . . s ix=ix+1
 . . 
 . . ; zapis s poctom vyskytov s '()'
 . . w !,"  #",id,"# (",sX,")"   ; tento sposob vypisu sa hodi napr. pre import do Excelu, oddelovac stlpcov je #
 . . 
 . . if ix= lnPageLen  d
 . . . w !,"--more press Enter, q to quit)--" read sMore if $e($zcvt(sMore,"L"),1)="q" s brk=1 q
 . . . s ix=0
 . w !
 . for iy=1:1:40 w "-"   ; paticka
 . 
 . w !!," all occurences: ",cntCurrAll, " in ",cntRecAll," rows","            ",$$$ShowDTime
 . 
 . if Txx="T" d  s Txx="1"
 . if sEvalTempTags'=Txx w !! d ##class(Util).X("txx "_sEvalTempTags)  ; nastavim Txx na povodnu hodnotu
 . 
 . k ^$$$MarcTempG(idCnt)
 .
 
  
 else  d
 . w !!,"no active select detected"
 
 
 q
 
 
toFullTag(ret)
 s tagViewPrev=""
 for i=1:1:..fc(ret,",") d
 . s sX=$p(ret,",",i)
 . if ($l(sX)=4) d  s tagViewPrev=$e(sX,1,3)
 . if ($l(sX)=8)&&($l(sX,"/")>1) d  s tagViewPrev=$e(sX,1,7)
 . if (($l(sX)=4)||(($l(sX)=8)&&($l(sX,"/")>1)))  d
 . else  d
 . . if ($l(sX)=3)||($l(sX)=7) d  ; pre cely tag
 . . else  d
 . . . s sX=tagViewPrev_sX
 . . s $p(ret,",",i)=sX
 
 q ret
 
ltvConvertString(ret)
 if tagViewCurr0="001" s ret=sT001 q $$testMaxNodeLen(ret)
 
 for iz=1:1:cSCase  d
 . s sCaseRow=$e(sCase,iz,iz)
 . if sCaseRow'="" d
 . . if sCaseRow="a" d
 . . . s ret=##class(Util).diaTR(ret)  ; do ascii
 . . else  d
 . . . s ret=$zcvt(ret,sCaseRow)  ; do up/low
 
 if ret="." d 
 . s ret="N/A"
 else  s ret=##class(Util).strswap(ret,"#","~")  ; ak tag obsahuje #, zamenit za ~
 
 q $$testMaxNodeLen(ret)
 
testMaxNodeLen(ret)
 s subtagDet=subtagDet_$e(ret,1,maxNodeLen) ; 242 je max.dlzka 1 uzlu
 if $l(subtagDet)>=maxNodeLen s subtagDet=$e(subtagDet,1,maxNodeLen-2)_"=>"

 q ret
]]></Implementation>
</Method>

<Method name="viewRoleContent">
<Description><![CDATA[
<pre>

10.03.07 pb; prehlad vyskytov kodovanych a nekodovanych roli autorov vo VF a ich pocetnosti
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>class="SpuVfCat"</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 
 /// Popis parametrov:
 ///    trieda
 
 ;d ##class(SpuVfCat).viewRoleContent("SpuVfCat")
 
 s prog="viewRoleContent: "
 w !,"##class(Util).X(si "_class_" )"
 d ##class(Util).X("si "_class_" ")
 
 if ##class(Util).XcheckActiveList(0) d
 . s idCnt=$i(^$$$MarcTempG)
 . s id="",point=0,brk=""
 . w !
 . for  s id=$o(^Lists("tmp",$j,id)) q:((id="") || brk)  d
 . . 
 . . s point=point+1, sX=$e(point,$l(point)-2,$l(point))  if sX="000" d  w "."
 . . ;w " ",point,"=",sX
 . . s t001=##class(MARC).getT001(id)
 . . ;w !,"id="_id,"T001=",t001
 . . if '##class(MARC).readX(.recVF,class,t001) s brk=1,err="ERRCLM002#"_class_"*"_t001 w !,prog_"record "_class_"*"_t001_" not FOUND!" q
 . . 
 . . ;20.01.06 pb; inicializacia
 . . s X06=##class(MARC).getTagX(.recVF,"X06",-1)
 
 . . s cnt = $l(X06,$c(10))
 . . for ix=1:1:cnt d
 . . . s tag=$p(X06,$c(10),ix)
 . . . s sA=##class(MARC).getSubTagStr(tag,"a")  ;    kodovana rola
 . . . s sB=##class(MARC).getSubTagStr(tag,"b")  ;  nekodovana rola
 . . . if (sA'=""),(sB'="") d
 . . . . s ^$$$MarcTempG(idCnt,class,"rola",sA,sB)=""
 . . . . s sX=$g(^$$$MarcTempG(idCnt,class,"rola",sA))
 . . . . s sX=sX+1
 . . . . s ^$$$MarcTempG(idCnt,class,"rola",sA)=sX
 
 . . s X07=##class(MARC).getTagX(.recVF,"X07",-1)
 . . s cnt = $l(X07,$c(10))
 . . for ix=1:1:cnt d
 . . . s tag=$p(X07,$c(10),ix)
 . . . s sA=##class(MARC).getSubTagStr(tag,"a")  ;    kodovana rola
 . . . s sB=##class(MARC).getSubTagStr(tag,"b")  ;  nekodovana rola
 . . . if (sA'=""),(sB'="") d
 . . . . s ^$$$MarcTempG(idCnt,class,"rola",sA,sB)=""
 . . . . s sX=$g(^$$$MarcTempG(idCnt,class,"rola",sA))
 . . . . s sX=sX+1
 . . . . s ^$$$MarcTempG(idCnt,class,"rola",sA)=sX
 
 . ; vypisem vysledok
 . w !!,"result all:"
 . s id=""
 . for  s id=$o(^$$$MarcTempG(idCnt,class,"rola",id)) q:(id="")  d
 . . s idB=""
 . . w !
 . . for  s idB=$o(^$$$MarcTempG(idCnt,class,"rola",id,idB)) q:(idB="")  d
 . . . ; 10.03.07 pb; radsej vypisem vsetko resp. vypis sa da znovu obmedzit 
 . . . ;if id '="PRK" w !,id,"=",idB   ; verzii PRK (preklad) je strasne moc (do vsetkych jazykov) - nevypisovat
 . . . w !,id,"=",idB
 
 . w !!,"result codes:"
 . w !
 . s id=""
 . for  s id=$o(^$$$MarcTempG(idCnt,class,"rola",id)) q:(id="")  d
 . . s sX=$g(^$$$MarcTempG(idCnt,class,"rola",id))
 . . w !,id,"=",sX
 . 
 . k ^$$$MarcTempG(idCnt)
 
 q
]]></Implementation>
</Method>

<Method name="convertRoleCodeVFtoUnimarc">
<Description><![CDATA[
<pre>

13.04.07 pb; nova verzia podla js
10.03.07 pb; prekodovanie kodovanych roli autorov VF do kodovanych roli Unimarc
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>class="",sCode:%Library.String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 if class="" s class="SpuVfCat"
 
 ; 12.03.07 pb; netreba rozlisovat podla triedy
 ;if class="SpuVfCat"
 ;{
    ; kody "kodovanych roli" som zistil pomocou metody 'viewRoleContent' v dodanej databaze na konverziu SpuVfCat:
    ;ADO ;AKM  ;AUT ;ED ;EDI ;FOT ;HAU ;ILU ;PKR ;PRK ;RED ;SKO ;SKOP ;SPR ;VIR ;VRE ;ZOS ;ZRE
    ; pre inu instalaciu treba upravit/doplnit
    
    ; 13.04.07 pb; nova verzia podla js
    ;s sCode=$zcvt(sCode,"u")
    ;s ret=$case(sCode,"ADO":"080",
    ;"AKM":"210",
    ;"AUT":"070",
    ;"ED":"340",
    ;"EDI":"340",
    ;"FOT":"600",
    ;"HAU":"070",
    ;"ILU":"440",
    ;"PKR":"730",
    ;"PRK":"730",
    ;"RED":"500",
    ;"SKO":"570",
    ;"SKOP":"570",
    ;"SPR":"570",
    ;"VIR":"500",
    ;"VRE":"500",
    ;"ZOS":"220",
    ;"ZRE":"500",
    ;:"")
    
    s sCode=$zcvt(sCode,"u")
    s ret=$case(sCode,"AAU":"570",
    "ADO":"075",
    "AKM":"212",
    "AUT":"070",
    "AUTORI":"070",
    "ED":"340",
    "EDI":"340",
    "FOT":"600",
    "HAU":"070",
    "ILU":"440",
    "PKR":"730",
    "PRK":"730",
    "RED":"500",
    "SKO":"727",
    "SKOP":"727",
    "SPR":"340",
    "VIR":"651",
    "VRE":"340",
    "ZOS":"220",
    "ZRE":"500",
    "(PRK)":"730",
    :"")
    
 ;}
 
 q ret
]]></Implementation>
</Method>

<Method name="genCat200fg">
<Description><![CDATA[
<pre>

10.03.07 pb; generovanie XxUnCat 200fg v nekodovanom tvare:
             - z nekodovanych roli Vymenneho formatu ulozenych v pomocnom Unimarc tagu 70xu
             - alebo z kodovanych roli Unimarc tagu 70x4
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>sFormat:%Library.String="VF",t700:%Library.Binary="",t701:%Library.Binary="",t702:%Library.Binary="",tablesd:%Library.String="",sEvalLanguage:%Library.String="",aKol:%Library.String="",subtag:%Library.String="u"</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
   s dbg=""
   /// Tato funkcia generuje tagy 200f a 200g zo vstupnych tagov 70*
   /// Funkcia vracia retazec v tvare:
   /// $c(31)_"f"_text200f_$c(31)_"g"_text200g1_$c(31)_"g"_text200g2_...
   ///
   /// text200f:  [rola1 v nekódovanom tvare] Meno1 Priezvisko1, údaj za menom1,
   ///            Meno2 Priezvisko2, údaj za menom2, Meno3 Priezvisko3, údaj za menom3
   /// text200g1: [rola2 v nekódovanom tvare] Meno1 Priezvisko1, údaj za menom1,
   ///            Meno2 Priezvisko2, údaj za menom2, Meno3 Priezvisko3, údaj za menom3
   /// text200g2: [rola3 v nekódovanom tvare] Meno1 Priezvisko1, údaj za menom1,
   ///            Meno2 Priezvisko2, údaj za menom2, Meno3 Priezvisko3, údaj za menom3
   /// ...
   /// Popis parametrov:
   ///   sFormat - format VF alebo UNIMARC
   ///   t700, t701, t702 - tagy 700, 701 a 702
   ///   tablesd - tabulka kde sa nachadza "UT_RELATOR_CODE_SHORT_DESCR" pre preklad kodov
   ///             roli do nekodovaneho tvaru Unimarc
   ///   sEvalLanguage - jazyk pre preklad "UT_RELATOR_CODE_SHORT_DESCR" kodov
   ///             roli do nekodovaneho tvaru Unimarc
   ///   aKol - text, ktory sa prida na koniec 200f napr. "a kol.", obycajne je v nekodovanom
   //           tvare v tagu 006$b vo VF
   ///   subtag - z ktoreho subtagu brat nekodovanu rolu formatu VF v 70x (pomocny subtag),
   ///            dflt pre VF je "u", pre UNIMARC je dflt "4"
   ///   
   
   ; testovacie data+testovaci vypis
   ;s t700=$c(10)
   ;s t700=t700_$c(10)_"700  1 "_$c(31)_"aKyse¾"_$c(31)_"bAdam"_$c(31)_$c(31)_"cIX."_$c(31)_"ua kol."
   ;s t700=t700_$c(10)_"702  1 "_$c(31)_"aKyse¾2"_$c(31)_"bAdam2"_$c(31)_"uPrelozil"
   ;s t700=t700_$c(10)_"702  1 "_$c(31)_"aKyse¾3"_$c(31)_"bAdam3"_$c(31)_"uPrelozil"
   ;s t700=t700_$c(10)_"702  1 "_$c(31)_"aKyse¾4"_$c(31)_"bAdam4"_$c(31)_"uilustroval"
   ;d ##class(SpuVfCat).genCat200fg("VF", "t700", "t701", "t702", "SpuUnTablesd", "1", "a kol.","u")
   
   if (t700=""),(t701=""),(t702="") q
   s t200f="", t200g=""
   if tablesd="" s tablesd="SpuUnTablesd"
   if sEvalLanguage="" s sEvalLanguage=1  ;slovencina je dflt
   
   ; spravne nacitanie textu:
   ; ##class(Util).sXlate("UT_RELATOR_CODE_SHORT_DESCR","340",,"SpuUnTablesd",,sEvalLanguage)
   
   s t70x=t700_$c(10)_t701_$c(10)_t702
   s t70x=##class(Util).strswap(t70x,"701","700")  ;pre tento ucel rozlisujem iba typ 700 a 702
   s rowTagPrev="", row4Prev=""
   s cnt=$l(t70x,$c(10))
   for i=1:1:cnt  
   {
      s row=$p(t70x,$c(10),i)
      w:dbg !,"row=",i,"-",row
      s sA=##class(MARC).getSubTagStr(row,"a")
      
      if sA="" continue
      
      s sB=##class(MARC).getSubTagStr(row,"b")
      s sC=##class(MARC).getSubTagStr(row,"c")
      s rowTag=$e(row,1,3)
      if rowTagPrev="" s rowTagPrev=rowTag  ;1.cyklus

      s row4Text=""
      if sFormat="VF"   ; citanie z tagu definovaneho parametrom
      {
	     s row4=##class(MARC).getSubTagStr(row,subtag)
      }
      else
      {
	     s row4=##class(MARC).getSubTagStr(row,"4")
      }
      
      w:dbg !,"row4=",i,"-",row4
      if row4=""  
      {
	     if row4Prev'=row4
	     {
		    s row4Curr="endOfTag"  ;prazdna rola, predtym neprazdna - zapis do noveho/dalsieho 200fg
	     }
	     else {s row4Curr=""}      ;prazdna rola teraz aj predtym
      }
      else  
      {
         if sFormat="VF"  
         {
	        s row4Text=row4
         }
	     else   
         {
            s row4Text=##class(Util).sXlate("UT_RELATOR_CODE_SHORT_DESCR",row4,,tablesd,,sEvalLanguage)
            if row4Text="" s row4Text="?descr_"_row4  ; toto je chyba, ze nie je popis k existujucemu kodu role
         }
         
         w:dbg !,"row4Prev,?=row4:",row4Prev,"%",row4,"%"
         w:dbg !,"rowTagPrev,?=rowTag:",rowTagPrev,"%",rowTag,"%"
         if (row4Prev=row4),(rowTagPrev=rowTag)
         {
	        s row4Curr=""
         }
         else
         {
	        s row4Curr=row4Text
         }
      }
      w:dbg !,"row4Text=",i,"-",row4Text
      w:dbg !,"row4Curr=",i,"-",row4Curr
      
      ; zapis do 200fg; pracovne zapisujem do t200g, na konci oddelim f a g
      w:dbg !,"rowTagPrev,rowTag=",rowTagPrev,"%",rowTag,"%"
      w:dbg !,"",t200g,"%"
      if (rowTagPrev'=rowTag)||(row4Curr'="")||(t200g="")
      {
         ; zapis noveho/dalsieho 200fg
         if t200g=""
         {
	        s t200g=t200g_$c(31)_"f"  ;zaciatok retazca
         }
         else
         {
	        s t200g=t200g_$c(10)_$c(31)_"g"  ;pokracovanie retazca
         }
         
         if row4Curr="endOfTag" s row4Curr=""
      }
      else
      {
	     if t200g'="" s t200g=t200g_", "
      }
      s t200g=t200g_row4Curr       ;text role
      if sB'="" s t200g=t200g_" "_sB   ;prievisko
      if sA'="" s t200g=t200g_" "_sA   ;krstne
      if sC'="" s t200g=t200g_" "_sC   ;udaj za menom
      w:dbg !,"t200g=",t200g,"%"
      
      s row4Prev=row4
      s rowTagPrev=rowTag
      w:dbg !,"################"
   }
   
   s t200g=##class(Util).trim(t200g) 
   s t200g=##class(Util).strswap(t200g,$c(31)_"f ",$c(31)_"f")
   s t200g=##class(Util).strswap(t200g,$c(31)_"g ",$c(31)_"g")
   
   s t200f=$p(t200g,$c(10),1,1)
   if (aKol'=""),(t200f'="") 
   {
      s t200f=##class(Util).strswap(t200f,aKol,"")
      s t200f=t200f_" "_aKol   ;pripona "a kolektiv" do 200f v dodanom tvare
      s t200f=##class(Util).strswap(t200f,$c(31)_"f ",$c(31)_"f")
   }
   s t200g=$p(t200g,$c(10),2,9999)
   s t200g=##class(Util).strswap(t200g,$c(10)_$c(31)_"g",$c(31)_"g")
   
   w:dbg !,t200f_t200g
   q t200f_t200g
]]></Implementation>
</Method>

<Method name="jcp0">
<Description><![CDATA[
16.07.07 mk ocakavane cisla z RL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,trieda:%String="",rok:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; trieda - sllk_un_cat
 ; rok - 2007 
  ; subor vo formate:  sg000002_2007_007_003#s003168#185#04.07.2007
 ; kod sg#kod serialu#porad. cislo datumu ocakavania v roku#datum ocakavania
 ;d ##class(UtilConv).jcp0("d:\arl\_tmp\milan\ser2.txt","sllk_un_cat","2007")
  
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 s brk=0,li="",odd=$c(13)_$c(10)
 
 s C02new=""

 s poc = 1  ; pocitadlo kodov zaznamov
 f nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . s kods=##class(Util).trim($p(li,"#",2)) ; kod suborneho zaznamu 
 . s pc=##class(Util).trim($p(li,"#",3)) ; poradove cislo dna
 . if ##class(MARC).readLX(.handle,trieda_"*"_kods) d 
 . . s C02=##class(MARC).getTagX(.handle,"C02",-1) ; vsetky kalendare
 . . s pocet=$l(C02,$c(10)) ; pocet opakovani tagu C02
 . . s C02new=""
 . . f j=1:1:pocet d
 . . . s C02s=$p(C02,$c(10),j) ; jedno opakovanie kalendara 
 . . . s sa=##class(MARC).getSubTagStr(C02s,"a")    ; obsah subtagu a
 . . . s sanew=sa
 . . . if $e(sanew,1,4)=rok d
 . . . . if $e(sanew,pc+5,pc+5)="0" s sanew=rok_"#"_$e(sanew,6,pc+4)_"1"_$e(sanew,pc+6,9999)
 . . . . s C02s=##class(User.Util).strswap(C02s,$c(31)_"a"_sa,$c(31)_"a"_sanew) 
 . . . if C02new'="" s C02new=C02new_$c(10)_C02s 
 . . . if C02new="" s C02new=C02s 
 . . if C02new'="" d
 . . . d ##class(MARC).setTagX(.handle,C02new) 
 . . . d ##class(MARC).writeX(.handle,1,,1)  ; zapis
 . 
 . q:$zeof'=0
 
 
   
 close inf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q
]]></Implementation>
</Method>

<Method name="c02">
<Description><![CDATA[
17.07.07 mk doplnene C02v a i<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,trieda:%String="",rok:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; trieda - sllk_un_cat
 ; rok - 2007 
  ; subor vo formate:  sg000002_2007_007_003#s003168#185#04.07.2007
 ; kod sg#kod serialu#porad. cislo datumu ocakavania v roku#datum ocakavania
 ;d ##class(UtilConv).c02("d:\arl\_tmp\milan\cisla3.txt","sllk_un_cat","2007")
  
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 s brk=0,li="",odd=$c(13)_$c(10)
 
 s C02new=""

 s poc = 1  ; pocitadlo kodov zaznamov
 f nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . s kods=##class(Util).trim($p(li,"#",1)) ; kod suborneho zaznamu 
 . s pc=##class(Util).trim($p(li,"#",2)) ; hodnota
 . if ##class(MARC).readLX(.handle,trieda_"*"_kods) d 
 . . s C02=##class(MARC).getTagX(.handle,"C02",-1) ; vsetky kalendare
 . . if ($f(C02,$c(31)_"v")<1) && ($f(C02,$c(31)_"i")<1) d
 . . . s pocet=$l(C02,$c(10)) ; pocet opakovani tagu C02
 . . . s C02new=""
 . . . f j=1:1:pocet d
 . . . . s C02s=$p(C02,$c(10),j) ; jedno opakovanie kalendara 
 . . . . s sa=##class(MARC).getSubTagStr(C02s,"a")    ; obsah subtagu a
 . . . . if $e(sa,1,4)=rok d
 . . . . . if pc'="" s C02s=C02s_pc
 . . . . if C02new'="" s C02new=C02new_$c(10)_C02s 
 . . . . if C02new="" s C02new=C02s 
 . . . if C02new'="" d
 . . . . d ##class(MARC).setTagX(.handle,C02new) 
 . . . . d ##class(MARC).writeX(.handle,1,,1)  ; zapis
 . 
 . q:$zeof'=0
 
 
   
 close inf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q
]]></Implementation>
</Method>

<Method name="vym606">
<Description><![CDATA[
17.07.07 mk; globalka na vymaz 606 ak ma len subtag 3<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

    s status=0
 
    s t606new=""
    
    s t606all=##class(MARC).getTagX(.handle,606,-1) ; vsetky opakovania tagu 
    s pocet2=$l(t606all,$c(10))
    f j=1:1:pocet2
    {
	  s t606s=$p(t606all,$c(10),j)  
	  s ta=##class(MARC).getSubTagStr(t606s,"a")
	  s t3=##class(MARC).getSubTagStr(t606s,"3")
      if ta="" s t606s=""
      if t606s'=""  
      {  
        if t606new'="" s t606new=t606new_$c(10)_t606s
        if t606new="" s t606new=t606s
      }
    }
 
    if t606new'="" d ##class(MARC).setTagX(.handle,t606new) ; zapis noveho tagu
    if t606new="" d ##class(MARC).delTagX(.handle,606)   ; vymaz povodneho tagu
  
 q
]]></Implementation>
</Method>

<Method name="sel606">
<Description><![CDATA[
17.07.07 mk; globalka na vymaz 606 ak ma len subtag 3<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

    s status=0
 
    s t606new=""
    
    s t606all=##class(MARC).getTagX(.handle,606,-1) ; vsetky opakovania tagu 
    s pocet2=$l(t606all,$c(10))
    f j=1:1:pocet2
    {
	  s t606s=$p(t606all,$c(10),j)  
	  s ta=##class(MARC).getSubTagStr(t606s,"a")
	  s t3=##class(MARC).getSubTagStr(t606s,"3")
      if ta="" s status=1
    }
 
  
 q status
]]></Implementation>
</Method>

<Method name="t305b">
<Description><![CDATA[
18.07.07 mk doplnenie <br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,trieda:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ;d ##class(UtilConv).t305b("d:\arl\_tmp\milan\t2.txt","sllk_un_auth)
  
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 s brk=0,li="",odd=$c(13)_$c(10)
 
 s C02new=""

 s poc = 1  ; pocitadlo kodov zaznamov
 f nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . s kod=##class(Util).trim($p(li,"#",1)) ; kod aut zaznamu 
 . s pc=##class(Util).trim($p(li,"#",2)) ; hodnota
 . if ##class(MARC).readLX(.handle,trieda_"*"_kod) d 
 . . if pc'="" d
 . . . s t305="305    "_$c(31)_"b"_pc
 . . . d ##class(MARC).setTagX(.handle,t305) 
 . . . d ##class(MARC).writeX(.handle,1,,1)  ; zapis
 . 
 . q:$zeof'=0
 
 
   
 close inf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q
]]></Implementation>
</Method>

<Method name="sym463Count">
<Description><![CDATA[
<pre>
24.11.08 jj; symbolik na spocitani 463/200v
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; kontrola parametru
 
 ; nejdrive budeme v T01 hledat, jestli existuje dluh za "U"
 s sT463=##class(User.MARC).getTagX(.handle,"463") ; odkazovy zaznam
 if (sT463="") q 0
 s sT463200v=##class(User.MARC).getTag4xx(sT463,"200v") 
 if (sT463200v="s.") q 1
 q 0
]]></Implementation>
</Method>

<Method name="convTrxDebts2Euro">
<Description>
Prevod dluhu a financniho konta ctenaru na novou menu podle kurzu.
Parametry:
Ictx      - ictx instituce (napr. Cbvk)
outFName  - vystupni log soubor, soubor nebo cesta+soubor
exRate    - menovy kurz, default 30.1260
bLogOnly  - 0/1 zmena se provede/neprovede, 
            pro 1 se pouze vypise log co by se zmenilo
            default=0
bSortByUserName - 0/1 nesortovat/sortovat podle jmena a prijmeni ctenare,
                  1 je narocnejsi na cas
                  default=0

16.12.08 jk; oprava log. chyby kdy se pro tridu IctxTrxQ vynechal index "uk"
09.12.08 jk; zalozeno</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>Ictx:%String,outFName:%String,exRate:%Float=30.1260,bLogOnly:%Boolean=0,bSortByUserName:%Boolean=0</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
    ; ALGORITMUS pro dluhy:
    ; select na ctenare s dluhem "s IctxIsUser T01e"
    ; po kazdeho ctenare prochazet db IctxTrx a IctxTrxQ pro indexy uk a ukp
    ; v kazdem indexu je jedna transakce pro kterou se:
    ;  - ctou opakovani T01, v $b je celkovy dluh pro danou operaci
    ;  - kazda T01 se uzavre novou operaci typu L - vklad, tim se stornuje dluh
    ;  - napocitava se soucet dluhu pro ctenare podle druhu T01 zvlast a celkovy dluh
    ; po projiti vsech transakci se vytvori nova transakce, ve ktere se vytvori novy celkovy dluh v eurech
    ;  - do poznamky 100$n rozepsat puvodni dluhy a za co na uroven druhu operaci
    
    ; ALGORITMUS pro financni konto:
    ; select na ctenare "s IctxIsUser T01k", v T01k je zustatek na financnim konte
    ; pro kazdeho takoveho ctenare zavolat User.SPBorrowPay.CreateAccStorno()
    ; - vyskladat environment, predat T001 ctenare a cenu
    ; novy vklad na konto pres User.SPBorrowPay.CreatePayment()
    ; - castku vlozit prepocitanou v euru
    ; - pKindPay="ZAL"
    ; - pTypePay=3
    ; - pTRX001, nechat prazdne
    ; - pNote, vyplnit poznamku
    ; - pSection, oddeleni nechat prazdne
   
    
    ; format struktury debts:
    ; debts(T001_ctenare) = prijmenijmeno_char31_celkovydluh
    ; debts(T001_ctenare,"DP",druh_platby)   z ciselniku IS_KINDPAY nebo IS_KINDOP
    ; debts(T001_ctenare,"DP",druh_platby,T001_transakce) = dluh_char31_datum_char31_nazevknihy
    ; debts(T001_ctenare,"TRX",T001_transakce)
    ; debts(T001_ctenare,"TRX",T001_transakce,druh_platby) = dluh_char31_datum_char31_nazevknihy
    ;
    ; popis uzlu struktury debts:
    ; "DP" - sortovano podle druhu platby, pro napocitavani dluhu podle druhu platby v nove transakci
    ; "TRX" - sortovano podle T001 transakci, pro vytvoreni poznamky 100n v nove transakci
    ; celkovydluh - subtag T01e zaznamu ctenare
    ; dluh - ze subtagu T02b zaznamu transakce, celkovy dluh druhu platby v jedne transakci
    ; datum - ze subtagu T01c zaznamu transakce ve formatu YYYYMMDD, datum posledni zmeny u druhu platby
    ; nazevknihy - ze subtagu T02b zaznamu transakce
    
    
    ; vystupni soubor 
    s file=##class(%File).%New(outFName)
    s sc=file.Open("WNS")
    if $System.Status.IsError(sc) w "ERROR: "_$System.Status.GetErrorText(sc)  q

    ; kurz meny
    s sc=##class(%Library.Float).IsValid(exRate)
    if $System.Status.IsError(sc) d file.WriteLine("ERROR: "_$System.Status.GetErrorText(sc)) q
    
    ; db ctenaru
    s sDbUser=Ictx_"IsUser"
    s sLnameUser=##class(User.Util).objectName2lname(sDbUser)
    if (sLnameUser="") d file.WriteLine("ERROR: do not exist lname for:"_sDbUser)  q
    
    ; transakce, pokud se nenajde IctxTrx, nekonci se,
    ; v indexu nic nebude a prejde se na IctxTrxQ (transakce vypujcek zarizeni)
    s sDbTrx=Ictx_"Trx"
    s sLnameTrx=##class(User.Util).objectName2lname(sDbTrx) ; jen pro test, jinde se nepouziva
    if (sLnameTrx="") d file.WriteLine("INFO: do not exist lname for:"_sDbTrx)
        
    
    ; DLUHY
    
    d file.WriteLine("CTENARI S DLUHY")
    d ##class(Util).X("txx ")                               ; zapnuty txx tagu
    d ##class(Util).X("s "_sDbUser_" T01e")                 ; select na dluhy ctenaru, muze trvat dlouho
    if bSortByUserName d ##class(Util).X("sort 100a")       ; sort podle prijmeni a jmeno
    if '##class(Util).XcheckActiveList(0) d file.WriteLine("INFO: no active list for users with debts, exists anyone in "_sDbUser_"?") 
    d file.WriteLine("")    
    ; projdeme vsechny ctenare ze selektu
    s sNode=""
    f  
    {
        s sNode=$o(^$$$ListsG($$$ListsActiveSel,$j,sNode))
        if sNode="" q
        if bSortByUserName { s sIdUser=$p(sNode,"*",2) }    ; po sortu je nazev uzlu ve tvaru "00000001*27171*Bouchal Petr"_$c(31,31,31))
        else { s sIdUser=sNode }
        
        ; nacteme handle ctenare pro vystup info do log souboru
        if '##class(User.MARC).getDATAX(.handle,sIdUser,"T") d file.WriteLine("ERROR: getting record id="_sIdUser_" from db="_sDbUser)  continue
        s sT001User=##class(User.MARC).getT001(sIdUser)
        s s100=##class(User.MARC).getTagX(.handle,100)
        s s100a=##class(User.MARC).getSubTagStr(.s100,"a")                  ; jmeno a prijmeni
        s sT01=##class(User.MARC).getTagX(.handle,"T01")
        s sT01e=##class(User.MARC).getSubTagStr(.sT01,"e")                  ; celkovy dluh
        d file.WriteLine("Uzivatel s dluhem: "_s100a_" ("_sT001User_") celkovy dluh: "_sT01e)
        
        s debts(sT001User)=s100a_$c(31)_sT01e                               ; T001 a prijmenijmeno ctenare
        
        ; zjisti se vsechny transakce ctenare v db IctxTrx z indexu "uk" a "ukp"
        ; a v db IctxTrxQ z indexu "uk" a "ukp"
        s sUserNode=" "_sLnameUser_"*"_sT001User
        s sTrxClass=sDbTrx
        s sIndex="uk"
        s sIdTrx=""
        f  
        {
            s sIdTrx=$o(^$$$MarcIndexG(sTrxClass,sIndex,sUserNode,sIdTrx))
            if (sIdTrx="") && (sIndex="uk") s sIndex="ukp" continue                 			; zacne se prochazet index "ukp"
            ; 16.12.08 jk; oprava log. chyby kdy se pro tridu IctxTrxQ vynechal index "uk"
            if (sIdTrx="") && (sTrxClass=sDbTrx) s sIndex="uk", sTrxClass=sDbTrx_"Q"  continue	; zacne se prochazet uzel IctxTrxQ pro index "uk"
            if sIdTrx="" q                                                         				; konec
            ; zpracovani jedne transakce
            d ..convTrxDebts2EuroTrx(sIdTrx,.debts,.file,sTrxClass,bLogOnly,sT001User) 
        }
        ; vytvoreni nove transakce s dluhem v euru
        d ..convTrxDebts2EuroNewTrx(.debts,.file,exRate,sDbTrx,sLnameUser,bLogOnly)
        
        d file.WriteLine("")
        d file.WriteLine("-------------------------------------------------------------------------")
        d file.WriteLine("")
    } 
    
    
    ; FINANCNI KONTO
    
    d file.WriteLine("CTENARI SE ZUSTATKEM NA FIN. KONTE")
    d ##class(Util).X("txx ")                            	; zapnuty txx tagy
    d ##class(Util).X("s "_sDbUser_" T01k")                 ; select na financni konto ctenaru
    if bSortByUserName d ##class(Util).X("sort 100a")       ; sort podle prijmeni a jmena
    if '##class(Util).XcheckActiveList(0) d file.WriteLine("INFO: no active list for users with account balance, exists anyone in "_sDbUser_"?")
	; tvorba prostredi
	s pEnvironment=""
	s pEnvironment("log_level")=1
	s pEnvironment("user_name")="sys"
	s pEnvironment("ip")="127.0.0.1"
    f  
    {
        s sNode=$o(^$$$ListsG($$$ListsActiveSel,$j,sNode))
        if sNode="" q
        if bSortByUserName { s sIdUser=$p(sNode,"*",2) }    ; po sortu je nazev uzlu ve tvaru "00000001*27171*Bouchal Petr"_$c(31,31,31))
        else { s sIdUser=sNode }
        
        ; nacteme handle ctenare pro vystup info do log souboru
        if '##class(User.MARC).getDATAX(.handle,sIdUser,"T") d file.WriteLine("ERROR: getting record id="_sIdUser_" from db="_sDbUser)  continue
		s sT001User=##class(User.MARC).getT001(sIdUser)
        s s100a=##class(User.MARC).getTagX(.handle,"100a")		; jmeno a prijmeni
        s sT01k=##class(User.MARC).getTagX(.handle,"T01k")		; zustatek na konte
        s sClass=$g(handle("class"))							; trida
        s sIpref=##class(User.Util).getClassPrefixParam(sClass) ; zkratka instituce
        s pEnvironment("install_prefix")=sIpref
		s pEnvironment("install_prefixB")=sIpref
        
        d file.WriteLine(" Uzivatel se zustatkem na financnim konte: "_s100a_" ("_sT001User_") zustatek: "_sT01k)
        
		if bLogOnly
		{
			d file.WriteLine("  zustatek "_sT01k_"")
			d file.WriteLine("  zmeny neprovedeny")
		}
		else
		{
			; storno zustatku na konte
			s st=##class(User.SPBorrowPay).CreateAccStorno(.pEnvironment,sLnameUser_"*"_sT001User,+sT01k)
			if $e(st,1,2)="OK" { d file.WriteLine("  zustatek "_sT01k_" stornovan")}
			else { d file.WriteLine("ERROR:  zustatek "_sT01k_" se nepodarilo stornovat, "_st)  q }
			
			; vklad zustatku na konto v euru
			s nPriceEuro=##class(User.ReportCommon).swapFmtNum(+sT01k/exRate,2)
			s sNote=" Zustatek na konte="_sT01k_", konverzni kurz="_exRate_", po konverzi="_nPriceEuro_" Eur"
			s st=##class(User.SPBorrowPay).CreatePayment(.pEnvironment,sLnameUser_"*"_sT001User,nPriceEuro,"ZAL",3,,sNote)
			if $e(st,1,2)="OK" { d file.WriteLine("  zustatek po konverzi "_nPriceEuro_" Eur pripsan na konto") }
			else { d file.WriteLine("ERROR:  vklad na konto "_nPriceEuro_" se nepodarilo zapsat, "_st) }			
		}
		
    }
    
    s sc=file.%Close()
    if $System.Status.IsError(sc) w $System.Status.GetErrorText(sc)  q
]]></Implementation>
</Method>

<Method name="convTrxDebts2EuroTrx">
<Description>
Pomocna metoda pro convTrxDebts2Euro, zpracovava jednu transakci
Parametry:
sIdTrx   - id transakce
debts    - promenna pro napocitavani dluhu
file     - vystupni log soubor
dbTrx    - databaze transakci (napr. CbvkTrx)
bLogOnly - 0/1 zmena se provede/neprovede, pro 1 se pouze vypise log
t001User - T001 ctenare na ktereho je transakce zapsana

09.12.08 jk; zalozeno
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[sIdTrx:%String,&debts:%Binary,file:%Library.File,dbTrx:%String,bLogOnly:%Boolean,t001User:%String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
    ; nacteme transakci
    if '##class(User.MARC).getDATAX(.handle,sIdTrx,"T") d file.WriteLine("ERROR: record id="_sIdTrx_" from db="_dbTrx)  q
    s sT001=##class(User.MARC).getT001(sIdTrx)              ; T001 transakce
    s sIpref=##class(User.Util).getClassPrefixParam(dbTrx)  ; zkratka instituce
    
    ; ctou se opakovani T01 transakce
    ; pro kazde opakovani T01 se vytvori novy druh platby L jako storno dluhu
    ; nakonec se transakce ulozi
    s c=0
    s sT01=##class(User.MARC).getTagX(.handle,"T01",.c)
    if sT01="" q                                            ; transakce nema celkovy dluh, nezpracuje se
    s sT02=##class(User.MARC).getTagX(.handle,"T02")
    s sT02b=##class(User.MARC).getSubTagStr(.sT02,"b")      ; popis (nazev knihy...)
    d file.WriteLine("")
    d file.WriteLine("transakce T001="_dbTrx_"/"_sT001_", "_sT02b)
    f i=1:1
    {
        s sT01a=##class(User.MARC).getSubTagStr(.sT01,"a")  ; druh platby
        s sT01b=##class(User.MARC).getSubTagStr(.sT01,"b")  ; dluh
        s sT01c=##class(User.MARC).getSubTagStr(.sT01,"c")  ; datum
        
        s debts(t001User,"DP",sT01a,sT001)=sT01b_$c(31)_sT01c_$c(31)_sT02b
        s debts(t001User,"TRX",sT001,sT01a)=sT01b_$c(31)_sT01c_$c(31)_sT02b
        
        ; vytvori se novy druh platby L, kterou se uzavre dluh
        ;  format "200     $aL $b20090101000000.1 $i20.00 $j1 $kJ $lU $csys $e."
        ;   - pro jednu T01 bude jeden novy tag 200
        ;   - $i celkovy dluh z T01$b
        ;   - $l druh platby z T01$a
        s s200new="200    "_$c(31)_"aL"_$c(31)_"b"_##class(User.Util).date005()_$c(31)_"i"_sT01b
        s s200new=s200new_$c(31)_"j1"_$c(31)_"kJ"_$c(31)_"l"_sT01a_$c(31)_"csys"_$c(31)_"e."
        
        d ##class(User.MARC).appendTagX(.handle,s200new)    ; pridat tag do handle
        d file.WriteLine("  druh platby="_..convTrxDebts2EuroOpType(sT01a,sIpref)_" datum="_$e(sT01c,1,8)_" dluh="_sT01b_" stornovan")
        
        ; dalsi opakovani
        if c=0 q
        s sT01=##class(User.MARC).getTagX(.handle,"T01",.c)
    }
    
    ; ulozit celou transakci nebo jen informovat
    if 'bLogOnly
    {
        s sc=##class(User.MARC).writeX(.handle)
        if (sc) {  d file.WriteLine("  zapis storna dluhu do db byl uspesny, dluhy jsou stornovany" ) }
        else { d file.WriteLine("ERROR: chyba zapisu zmen v transakci do db" ) }
    }
    else
    { 
        d file.WriteLine("  zmeny nebyly zapsany do db, spusteno v rezimu ""pouze zapis do logu""" )
    }
]]></Implementation>
</Method>

<Method name="convTrxDebts2EuroNewTrx">
<Description>
Pomocna metoda pro convTrxDebts2Euro, vytvori novou transakci
na celkovy dluh prepocitany na euro. Do poznamky 100n se ulozi
ze kterych stornovanych dluhu byl celkovy dluh vytvoren.
Parametry:
debts      - promenna pro napocitavani dluhu
file       - vystupni log soubor
exRate     - menovy kurz (Sk-Eur)
dbTrx      - databaze transakci (napr. CbvkTrx)
sLnameUser - lname db ctenaru
bLogOnly   - 0/1 zmena se provede/neprovede, pro 1 se pouze vypise log

09.12.08 jk; zalozeno
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&debts:%Binary,file:%Library.File,exRate:%Float,dbTrx:%String,sLnameUser:%String,bLogOnly:%Boolean]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
    s sCurrOld="SKK"    ; znacka meny pred konverzi
    s sCurrNew="EUR"    ; znacka meny po konvezri
        
    ; ziskani udaju z debts
    ; - napocitaji se dluhy podle druhu platby a dluh celkem
    ; - napocitany dluh celkem by mel sedet s dluhem ze zaznamu ctenare T01e
    s sT001User=$o(debts(""))               ; t001 ctenare  
    s nSumDebt=0                            ; celkovy dluh ctenare
    s sDebtByOp=""                          ; string pro vystup do logu, informace o celkovem dluhu podle typu operaci
    s sIpref=##class(User.Util).getClassPrefixParam(dbTrx)  ; zkratka instituce
    
    ; cyklus pres typy operaci, pro log soubor a vytvoreni dluhu, strukturovane podle typu operaci
    s sTrxOp=$o(debts(sT001User,"DP",""))   ; druh platby z IS_KINDPAY nebo IS_KINDOP   
    f i=1:1
    {
        if sTrxOp="" q
        s nSumDebtOp=0                                              ; celkovy dluh pro jeden druh platby
        
        ; cyklus pres vsechny dluhy pro jeden druh platby
        s sT001Trx=$o(debts(sT001User,"DP",sTrxOp,""))
        f j=1:1
        {
            if sT001Trx="" q
            s sDebtsOp=$g(debts(sT001User,"DP",sTrxOp,sT001Trx))    ; format "dluh_char31_datum_char31_nazev"
            s sT02b=$p(sDebtsOp,$c(31),1)                           ; dluh jednoho druh platby
            s nSumDebtOp=nSumDebtOp+sT02b                           ; napocitavani dluhu pro druh platby
            
            s sT001Trx=$o(debts(sT001User,"DP",sTrxOp,sT001Trx))    ; dalsi cyklus
        }
        s nSumDebtOp=##class(User.ReportCommon).swapFmtNum(nSumDebtOp,2) ; format na 2 desetinne mista
        ; vystup do logu
        s sDebtByOp=sDebtByOp_..convTrxDebts2EuroOpType(sTrxOp,sIpref)_" dluh="_nSumDebtOp_", "  
        s nSumDebt=nSumDebt+nSumDebtOp                              ; dluh se pricte do celkoveho dluhu ctenare
        
        s sTrxOp=$o(debts(sT001User,"DP",sTrxOp))                   ; dalsi cyklus
    }
    
    s s100n=""  ; poznamka v nove transakci
    s bMaxStr100n=0 ; hlida se preteceni hranice 31900 znaku u poznamky s100n
    ; cyklus pres transakce, pro tvorbu poznamky do subtagu 100n, strukturovane po transakcich
    s sT001Trx=$o(debts(sT001User,"TRX",""))
    f i=1:1
    {
        if sT001Trx="" q
        if ($l(s100n)>31900) s bMaxStr100n=1    ; maxstring je 32.767, uz se vlozi jen celkove udaje
        if 'bMaxStr100n s s100n=s100n_"Transakce T001="_sT001Trx
        
        ; cyklus pres typy operaci transakce
        s sTrxOp=$o(debts(sT001User,"TRX",sT001Trx,""))         ; druh platby
        s sDebtsOp=$g(debts(sT001User,"TRX",sT001Trx,sTrxOp))   ; format "dluh_char31_datum_char31_nazev"
        if 'bMaxStr100n s s100n=s100n_" "_$p(sDebtsOp,$c(31),3) ; prida se nazev knihy nebo operace
        f j=1:1
        {
            if sTrxOp="" q
            s sDebtsOp=$g(debts(sT001User,"TRX",sT001Trx,sTrxOp))
            s sDatum=$e($p(sDebtsOp,$c(31),2),1,8)              ; datum z T01c transakce do formatu YYYYMMDD
            if 'bMaxStr100n s s100n=s100n_", druh platby "_sTrxOp_" dluh="_$p(sDebtsOp,$c(31),1)_" datum "_sDatum
            
            s sTrxOp=$o(debts(sT001User,"TRX",sT001Trx,sTrxOp)) ; dalsi cyklus
        } 
        if 'bMaxStr100n s s100n=s100n_" # " ; visualni oddelovac transakci
        
        s sT001Trx=$o(debts(sT001User,"TRX",sT001Trx))  ; dalsi opakovani
    }
    
    ; vytvoreni nove transakce
    d ##class(User.MARC).newX(.handle,dbTrx,"new")
    
    s s005="005    "_##class(User.Util).date005()
    ; format "200     $aL $b20090101000000.2 $i0.66 $j0 $kJ $lE $csys $e."
    ; prevod celkoveho dluhu na euro a zaokrouhleni na 2 desetinne mista
    s s200i=##class(User.ReportCommon).swapFmtNum(nSumDebt/exRate,2)    
    s s200="200    "_$c(31)_"aL"_$c(31)_"b"_##class(User.Util).date005()_$c(31)_"i"_s200i
    s s200=s200_$c(31)_"j0"_$c(31)_"kJ"_$c(31)_"lE"_$c(31)_"csys"_$c(31)_"e."   
    ; format "100     $axx_is_user*0001655"
    s nSumDebt=##class(User.ReportCommon).swapFmtNum(nSumDebt,2) ; format na 2 desetinne mista
    ; poznamka do 100n
    s s100n=s100n_"Celkovy dluh="_nSumDebt_" "_sCurrOld_", konverzni kurz="_exRate_", dluh po konverzi="_s200i_" "_sCurrNew
    s s100="100    "_$c(31)_"a"_sLnameUser_"*"_sT001User
    s s100=s100_$c(31)_"n"_s100n
    d ##class(User.MARC).setTagX(.handle,s005)
    d ##class(User.MARC).setTagX(.handle,s100)
    d ##class(User.MARC).setTagX(.handle,s200)
        
    ; ulozit celou transakci nebo jen informovat
    s sSaveInfo=""      ; info do logu o ulozeni handle transakce do db
    s sT001="new"       ; obsah T001 handle transakce, pokud se neulozi, je "new"
    if 'bLogOnly
    {
        s sc=##class(User.MARC).writeX(.handle)
        if (sc)
        { 
            s sT001=$g(handle("t001"))
            s sSaveInfo="zapis nove transakce do db byl uspesny" 
        }
        else { s sSaveInfo="ERROR: chyba zapisu nove transakce do db "_sc }
    }
    else
    { 
        s sSaveInfo="zmeny nebyly zapsany do db, spusteno v rezimu ""pouze zapis do logu"""
    }
    
    ; zapisy do logu
    s sDebtsUser=$g(debts(sT001User))       ; format "prijmenijmeno_char31_celkovydluh"
    d file.WriteLine("")
    d file.WriteLine("nova transakce T001="_dbTrx_"/"_sT001_", "_$p(sDebtsUser,$c(31),1))
    s sDebtByOp=$e(sDebtByOp,1,$l(sDebtByOp)-2)
    d file.WriteLine("  dluhy podle druhu platby:"_sDebtByOp)
    d file.WriteLine("  celkovy dluh stornovany v transakcich:")
    d file.WriteLine("   - pred konverzi             : "_nSumDebt_" "_sCurrOld)
    d file.WriteLine("   - po konverzi a zaokrouhleni: "_s200i_" "_sCurrNew)
    d file.WriteLine("  vytvoren novy dluh na castku : "_s200i_" "_sCurrNew)
    d file.WriteLine("  "_sSaveInfo)

    k debts ; vycisti se struktura plnena v convTrxDebts2EuroTrx
]]></Implementation>
</Method>

<Method name="convTrxDebts2EuroOpType">
<Description>
Pomocna metoda pro convTrxDebts2Euro,
prevadi zkratku druhu platby podle ciselniku IctxUnTablesd IS_KINDPAY
nebo IctxUnTablesd IS_KINDOP
Parametry:
sOpType     - zkratka druhu platby transakce ze subtagu 200$a
sIctx       - zkratka instituce

10.12.08 jk; zalozeno
[Previously private]</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>sKindPay:%String,sIpref:%String</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
    s ret=##class(User.Util).sXlate("IS_KINDPAY",sKindPay,,sIpref)
    if ret=sKindPay s ret=##class(User.Util).sXlate("IS_KINDOP",sKindPay,,sIpref)
    
    q ret
]]></Implementation>
</Method>

<Method name="symSelTagValue">
<Description>
jr.06.01.09
symbolik na selekt zaznamu kdy dany tag obsahuje dane hodnoty podpoli
par1 - tag       (650)
par2 - subtag    (i1#a#2) 
par3 - operator  (=#[]#'=)
par4 - hodnota   (2#politika#eurovoc)
napr. ##class(UtilConv).symSelTagValue(.handle,""041"",""a#h"",""=#="",""cze#fre"")</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.Binary,par1:%String,par2:%String,par3:%String,par4:%String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%String</ReturnType>
<Implementation><![CDATA[
 s ret = 1
 s tag=par1
 s isOk = 0
 s cntV = $l(par2,"#")
 
 
 s lsLineTag = ##class(MARC).getTagX(.handle,tag,-1)
 s cntTag=$l(lsLineTag,$c(10))
 f i=1:1:cntTag     ;pro kazde opakovani tagu
 {
    s Line1 = $p(lsLineTag,$c(10),i)
    f j=1:1:cntV    ;pro vsechna testovala podpole
    {
	   s blanc = 0, termall=""
	   s sub1 = $p(par2,"#",j),oper1 = $p(par3,"#",j),val1 = $p(par4,"#",j)
	   s not = 0
	   if $e(oper1,1,1) = "'" {s not=1,oper1=$e(oper1,2,5)}
	   if val1="" s blanc = 1
	   ;w !,"val="_val1_"|"
	   ;zjisteni hodnoty prislusneho podpole ci indikatoru do promene termall
	   
	   ;v pripade ind.
	   if sub1 = "i1" {s termall = $e(Line1,5,5)}
	   elseif sub1 = "i2" {s termall = $e(Line1,6,6)}
	   
	   ;v pripade podpoli (zohlednit opakovatelnost podpoli)
	   else
	   {
		 ;nactu vsechny terminy vsech upakovani daneho podpole
		 s suball = ##class(MARC).getSubTagStr(Line1,sub1,-1)   
		 s t=$l(suball,$c(10))
         f b=1:1:t 
         {
           s term1=$p(suball,$c(10),b)   
           if (termall="") {s termall=term1} else {s termall=termall_"~"_term1}
         } 
	   }
	   
	   if (termall=" ") s termall=""     ;osetren pripad ind.
	   ;w !,"termall="_termall
	   ;testovat vsechna opakovani podpoli z termall (cze~eng~ger)
	   s tcnt=$l(termall,"~")
	   f h=1:1:tcnt     ;pocet opakovani testovaneho podpole
	   {
	     s term = $p(termall,"~",h)
	     ;w !,"term="_term
	     if (term="") 
	     {
		   ;w !,"blanc="_blanc
		   ;w !,"not="_not
		   if (blanc = 1) && (not= 0) {s isOk = 1}
		   else {s isOk = 0}
	     }
	     else                     ;if term'=""
	     {
	       ;s isOk = 0
	       ;posouzeni zda nebyl pozadovan prazdny termin
	       if (blanc = 1) && (not= 1) {s isOk = 1}
	       ;w !,"posouzeni podle operatoru"
	       else
	       {
	         if (oper1 = "]")
	         {
		        s lenV = $l(val1)
		        s a= $e(term,1,lenV)  
		     }
	         if (oper1 = "[")
	         {
		        s lenV = $l(val1)
		        s lenT = $l(term)
		        s a=$e(term,lenT-lenV+1,lenT)    
	         }
	         if (oper1 = "[]")
	         {
		        s a=$f(term,val1) 
	         }
	         if (oper1 = "=")
	         {
	            s a=term
	         }
             ;w !,"a="_a_"=" 	         
	         if oper1 = "[]"
	         {
		       if ((a >0) && (not=0)) {s isOk = 1, h = tcnt} ;w !,"hodnota nalezena OK  konec"
	           if ((a >0) && (not=1)) {s isOk = 0, h = tcnt} ;w !,"nasla se a nemela ERR konec"
	    	   if ((a = 0) && (not=0)){s isOk = 0} ;w !,"mela se najit a nenasla ERR , mozna bude v dalsim opak."
		       if ((a = 0) && (not=1)){s isOk = 1} ;w !,"nemela se najit a nenasla OK , musi vsak vyhovovat pro vsechna opak."
	         }
	         else
	         {
		       if ((a = val1) && (not=0)) {s isOk = 1, h = tcnt} ;w !,"hodnota nalezena OK  konec"
			   if ((a = val1) && (not=1)) {s isOk = 0, h = tcnt} ;w !,"nasla se a nemela ERR konec"
			   if ((a '= val1) && (not=0)){s isOk = 0} ;w !,"mela se najit a nenasla ERR , mozna bude v dalsim opak."
		       if ((a '= val1) && (not=1)){s isOk = 1} ;w !,"nemela se najit a nenasla OK , musi vsak vyhovovat pro vsechna opak."
	         }
	       }
	     }    
         ;if (isOk = 1) {s h = tcnt}  
	   } 
       if (isOk = 0) {s j = cntV}
    } 
    if isOk = 1 s i = cntTag
 }
 q isOk
]]></Implementation>
</Method>

<Method name="convSNG">
<Description><![CDATA[
07.05.09 mk nova konverzia riadkoveho formatu ISIS do nasho M21<br>
            riadkoveho formatu, zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; d ##class(UtilConv).convSNG("c:\sng\sng2.txt","c:\sng\arl.txt")
 ; druh - druh dokumentu, ktory sa spracovava
 s druh="A"  ; knihy
	
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 s record=""
 s t245="",t245a="",t245b="",t245n=""
 s t970b="",t970c="",t970=""
 s t100="",t100a="",t1004="",t100e=""
 s t700="",t700a="",t7004="",t700e=""
 s t999d=""
 s t653=""
 s t650=""
 s tC36=""
 s t014=""
 s t250=""
 s t711="",t711a="",t711d="",t711c=""
 s t710=""
 s nazov=""
 s t260="",t260a="",t260b="",t260d=""
 s t300="",t300a="",t300b=""
 s t440=""
 s t500="",t500a=""
 s t520="",t520a=""
 s t506="",t506a=""
 s t980="",t980a="",t980b="",t980c=""
 s tC99a=""
 s t773="",t773t="",t773g=""
 s druh="A"
 s druh2=""
 
 ; A-knihy, RBX-clanky, V-katalogy vystav, E-elektronicke dokumenty 
 
 s brk=0,li=""
 s odd=$c(13)_$c(10)
 s kod=1
 s ex044="",ex046g="",ex046h="",ex040=""
 
 f nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok
 . ; uprava jedneho riadku
 . s sprac=""
 . if (li'="") d
 . . s tag=$e(li,1,3)
 . . if tag="X01" d   ; nazvove udaje
 . . . s t245a=##class(MARC).getSubTagStr(li,"n") ; nazov dokumentu
 . . . ;if $e(t245a,1,2)=$c(34)_" " s t245a=$c(34)_$e(t245,3,9999)
 . . . ;if $e(t245a,1,1)=$c(0022) s t245a="XXX"
 . . . s nazov=t245a
 . . . ; test nazvu na vylucene znaky
 . . . s i2="0"
 . . . s sln=$p(t245a," ",1) ; prve slovo z nazvu
 . . . s sln=$zcvt(sln,"l")
 . . . if (sln="a") || (sln="i") || (sln="l") s i2="2"
 . . . if (sln="an") || (sln="da") || (sln="de") || (sln="el") s i2="3"
 . . . if (sln="il") || (sln="le") || (sln="la") || (sln="un") || ($e(t245a,1,2)="l'") s i2="3"
 . . . if (sln="the") || (sln="una") || (sln="une") || (sln="der") s i2="4"
 . . . if (sln="die") || (sln="das") || (sln="les") || (sln="ein") s i2="4"
 . . . if (sln="eine") s i2="5"
 . . . ;if ($e(t245a,3,6)="die ") || ($e(t245a,3,6)="der ") || ($e(t245a,3,6)="das ") s i2="5"
 . . . 
 . . . s t245b=##class(MARC).getSubTagStr(li,"p") ; podnazov
 . . . if t245b="" s t245b=##class(MARC).getSubTagStr(li,"b") ; podnazov
 . . . s t245n=##class(MARC).getSubTagStr(li,"o") ; oznacenie a cislo casti
 . . . if (t245a'="") || (t245b'="") || (t245n'="") d
 . . . . s t245="245 1"_i2_" "
 . . . . if t245a'="" s t245=t245_$c(31)_"a"_t245a
 . . . . if t245b'="" s t245=t245_" :"_$c(31)_"b"_t245b
 . . . . if t245n'="" s t245=t245_"."_$c(31)_"n"_t245n
 . . if tag="002" d   ; druh dokumentu
 . . . s t970c=$e(li,8,9999)
 . . . s t970c=$zcvt(t970c,"u")
 . . if tag="X06" d   ; autori v zahlavi   100/700
 . . . s rola=##class(MARC).getSubTagStr(li,"b") ; rolav nekodovanom stave
 . . . s rola=$zcvt(rola,"l")
 . . . s rola=$tr(rola,"()/") 
 . . . s tk=##class(MARC).getSubTagStr(li,"k") ; meno
 . . . s tp=##class(MARC).getSubTagStr(li,"p") ; priezvisko
 . . . if tk'="" s tp=tp_", "_tk
 . . . if t100a="" d
 . . . . s t100a="100 1  "
 . . . else  d
 . . . . s t100a="700 1  " 
 . . . if $f(rola,"autor")>0 d   ; autor do 100
 . . . . s t1004="aut"
 . . . else  d
 . . . . if rola="by" s t1004="aut"
 . . . . if rola="ed." s t1004="edt"
 . . . . if rola="edited" s t1004="edt"
 . . . . if rola="hrsg." s t1004="com"
 . . . . if rola="sest." s t1004="com"
 . . . . if rola="zost." s t1004="com"
 . . . . if t1004="" s t100e=rola
 . . . if tp'="" s t100a=t100a_$c(31)_"a"_tp
 . . . if t1004'="" s t100a=t100a_$c(31)_"4"_t1004
 . . . s t100e=$tr(t100e,"()/") 
 . . . if t100e'="" s t100a=t100a_$c(31)_"e"_t100e
 . . . if t100'="" s t100=t100_odd_t100a
 . . . if t100="" s t100=t100a
 . . if tag="011" d   ; akcia
 . . . s tp=##class(MARC).getSubTagStr(li,"p") ; datum zahajenia
 . . . s tu=##class(MARC).getSubTagStr(li,"u") ; datum ukoncenia
 . . . s tm=##class(MARC).getSubTagStr(li,"m") ; miesto konania
 . . . s tz=##class(MARC).getSubTagStr(li,"z") ; krajina konania
 . . . if nazov'="" s t711a=$c(31)_"a"_nazov
 . . . s tp=$tr(tp,"()/") 
 . . . s tu=$tr(tu,"()/") 
 . . . s tm=$tr(tm,"()/") 
 . . . if $e(tm,$l(tm),$l(tm))="," s tm=$e(tm,1,$l(tm)-1)
 . . . if tp'="" d
 . . . . s rok=$e(tp,1,4)
 . . . . s mesiac=$e(tp,5,6)
 . . . . s den=$e(tp,7,8)
 . . . . if den'="" s t711d=den
 . . . . if mesiac'="" d
 . . . . . if t711d'="" s t711d=t711d_"."_mesiac 
 . . . . . if t711d="" s t711d=mesiac 
 . . . . if rok'="" d
 . . . . . if t711d'="" s t711d=t711d_"."_rok 
 . . . . . if t711d="" s t711d=rok 
 . . . if tu'="" d
 . . . . s rok=$e(tu,1,4)
 . . . . s mesiac=$e(tu,5,6)
 . . . . s den=$e(tu,7,8)
 . . . . s xx=""
 . . . . if den'="" s xx=den
 . . . . if mesiac'="" d
 . . . . . if xx'="" s xx=xx_"."_mesiac 
 . . . . . if xx="" s xx=mesiac 
 . . . . if rok'="" d
 . . . . . if xx'="" s xx=xx_"."_rok 
 . . . . . if xx="" s xx=rok
 . . . . if xx'="" s t711d=t711d_"-"_xx 
 . . . if tm'="" s t711c=$c(31)_"c"_tm_")" 
 . . . if t711d'="" s t711d=$c(31)_"d("_t711d
 . . . if (t711d'="") || (t711c'="") d
 . . . . if t711'="" s t711=t711_odd_"711 1  "_t711a_t711d_t711c
 . . . . if t711="" s t711="711 1  "_t711a_t711d_t711c
 . . . if tz'="" d
 . . . . if tm'="" s tm=" ("_tm_")"
 . . . . if t710'="" s t710=t710_odd_"710 2  "_$c(31)_"a"_tz_tm_$c(31)_"4orm" 
 . . . . if t710="" s t710="710 2  "_$c(31)_"a"_tz_tm_$c(31)_"4orm" 
 . . if tag="013" d   ; zahlavie
 . . . s tc=##class(MARC).getSubTagStr(li,"x") 
 . . . if tc="" s tc=$e(li,8,9999)
 . . . if tc'="" s tC36="C36    "_$c(31)_"a"_tc
 . . if tag="014" d   ; udaje o vydani
 . . . s tv=##class(MARC).getSubTagStr(li,"v") 
 . . . s td=##class(MARC).getSubTagStr(li,"d") 
 . . . s t250="250    "
 . . . if tv'="" s t250=t250_$c(31)_"a"_tv
 . . . if td'="" s t250=t250_$c(31)_"a"_td
 . . if tag="X07" d   ; dalsi autori   700
 . . . s rola=##class(MARC).getSubTagStr(li,"b") ; rolav nekodovanom stave
 . . . s rola=$zcvt(rola,"l")
 . . . s rola=$tr(rola,"()/") 
 . . . s tk=##class(MARC).getSubTagStr(li,"k") ; meno
 . . . s tk=##class(Util).trim(tk)
 . . . s tp=##class(MARC).getSubTagStr(li,"p") ; priezvisko
 . . . s tp=##class(Util).trim(tp)
 . . . if (tk'="") || (tp'="") d
 . . . . if tk'="" s tp=tp_", "_tk
 . . . . s t700a="700 1  " 
 . . . . if $f(rola,"autor")>0 d   ; autor do 700
 . . . . . s t7004="aut"
 . . . . else  d
 . . . . . if rola="by" s t7004="aut"
 . . . . . if rola="ed." s t7004="edt"
 . . . . . if rola="edited" s t7004="edt"
 . . . . . if rola="hrsg." s t7004="com"
 . . . . . if rola="sest." s t7004="com"
 . . . . . if rola="zost." s t7004="com"
 . . . . . if t7004="" s t700e=rola
 . . . . if tp'="" s t700a=t700a_$c(31)_"a"_tp
 . . . . if t7004'="" s t700a=t700a_$c(31)_"4"_t7004
 . . . . s t100e=$tr(t100e,"()/") 
 . . . . if t700e'="" s t700a=t700a_$c(31)_"e"_t700e
 . . . . if t700'="" s t700=t700_odd_t700a
 . . . . if t700="" s t700=t700a
 . . if tag="040" d   ; vydavatelske udaje
 . . . s ta=##class(MARC).getSubTagStr(li,"m")  ;  miesto vydania
 . . . ; test na b.m.
 . . . s testa=ta
 . . . s testa=$zcvt(testa,"l")
 . . . if (ta="") || ($f(testa,"b.m.")>0) s ta="[s.l.]"  
 . . . s tb=##class(MARC).getSubTagStr(li,"n")  ;  nazov nakladatela
 . . . ; test na b.n.
 . . . s testb=tb
 . . . s testb=$zcvt(testb,"l")
 . . . if (tb="") || ($f(testb,"b.n.")>0) s tb="[s.n.]"  
 . . . s td=##class(MARC).getSubTagStr(li,"d")  ;  datum vydania
 . . . ; test na b.r.
 . . . s testd=td
 . . . s testd=$zcvt(testd,"l")
 . . . if ($f(testd,"b.r.")>0) s td="[s.a.]"  
 . . . s t260="260    "
 . . . s in=""
 . . . if ta'="" s in=" :"
 . . . if ta'="" s t260=t260_$c(31)_"a"_ta
 . . . if tb'="" s t260=t260_in_$c(31)_"b"_tb
 . . . if (ta'="") || (tb'="") s in=","
 . . . if td'="" s t260=t260_in_$c(31)_"c"_td
 . . . if $l(t260)<8 s t260=""
 . . . s ex040="1"
 . . if tag="044" d   ; rozsah
 . . . if $f(li," CD")>0 s druh2="E"
 . . . s ta=##class(MARC).getSubTagStr(li,"s")  ;  rozsah
 . . . s tb=##class(MARC).getSubTagStr(li,"v")  ;  vybavenie dokumentu
 . . . s t300="300    "
 . . . s in=""
 . . . if ta'="" s in=" :"
 . . . if ta'="" s t300=t300_$c(31)_"a"_ta
 . . . if tb'="" s t300=t300_in_$c(31)_"b"_tb
 . . . s ex044="1"
 . . if tag="045" d   ; edicia
 . . . s ta=##class(MARC).getSubTagStr(li,"n")  ;  nazov
 . . . s tv=##class(MARC).getSubTagStr(li,"c")  ;  oznacenie
 . . . s t440="490  0 "
 . . . s in=""
 . . . if ta'="" s in=" :"
 . . . if ta'="" s t440=t440_$c(31)_"a"_ta
 . . . if tv'="" s t440=t440_in_$c(31)_"v"_tv
 . . if tag="046" d   ; poznamky
 . . . if $f(li," CD")>0 s druh2="E"
 . . . if $f(li,"CD ")>0 s druh2="E"
 . . . s ts=##class(MARC).getSubTagStr(li,"s")  ; poznamky
 . . . if ts'="" d
 . . . . s ret=$p(ts,". - ",2)
 . . . . s ret=##class(Util).trim(ret)
 . . . . if ret'="" d   ; ak sa jedna o 506
 . . . . . ;s ret=$e(ret,5,9999)
 . . . . . if t506'="" s t506=t506_odd_"506    "_$c(31)_"a"_ret
 . . . . . if t506="" s t506="506    "_$c(31)_"a"_ret
 . . . . . s ret=""
 . . . . . s ts=$p(ts,". - ",1)   ; orezanie ts
 . . . . if ex040="" d    ;   ak neexistuje tag 040 tak je to clanok
 . . . . . if ($e(ret,1,3)="V :") || ($e(ret,1,2)="V:") || ($e(ret,1,4)="In :") || ($e(ret,1,3)="In:") d   ; ak je to odkaz 773
 . . . . . . s t773g=ret
 . . . . . if ($e(ts,1,3)="V :") || ($e(ts,1,2)="V:") || ($e(ts,1,4)="In :") || ($e(ts,1,3)="In:") d   ; ak je to odkaz 773
 . . . . . . s t773t=ts 
 . . . . else  d
 . . . . . if t500'="" s t500=t500_odd_"500    "_$c(31)_"a"_ts
 . . . . . if t500="" s t500="500    "_$c(31)_"a"_ts
 . . . . if (t773g'="") || (t773t'="") d
 . . . . . s tx="773 0  "
 . . . . . if t773t'="" s tx=tx_$c(31)_"t"_t773t
 . . . . . if t773g'="" s tx=tx_$c(31)_"g"_t773g
 . . . . . if t773'="" s t773=t773_odd_tx
 . . . . . if t773="" s t773=tx
 . . . . . s druh="RBX"
 . . . s tv=##class(MARC).getSubTagStr(li,"v")  ; poznamka k udajom o vydani
 . . . s th=##class(MARC).getSubTagStr(li,"h")  ; poznamka k nakladatelskym udajom
 . . . s ex046h=th
 . . . s tr=##class(MARC).getSubTagStr(li,"r")  ; poznamka k udajom o rozsahu
 . . . s te=##class(MARC).getSubTagStr(li,"e")  ; poznamka k udajom o edicii
 . . . if tv'="" d
 . . . . if t500'="" s t500=t500_odd_"500    "_$c(31)_"a"_tv
 . . . . if t500="" s t500="500    "_$c(31)_"a"_tv
 . . . if tr'="" d
 . . . . if t500'="" s t500=t500_odd_"500    "_$c(31)_"a"_tr
 . . . . if t500="" s t500="500    "_$c(31)_"a"_tr
 . . . if te'="" d
 . . . . if t500'="" s t500=t500_odd_"500    "_$c(31)_"a"_te
 . . . . if t500="" s t500="500    "_$c(31)_"a"_te
 . . . if th'="" d
 . . . . s ret=$p(th,". - ",2)
 . . . . s ret=##class(Util).trim(ret)
 . . . . if ret'="" d
 . . . . . ;s ret=$e(ret,5,9999)
 . . . . . if t506'="" s t506=t506_odd_"506    "_$c(31)_"a"_ret
 . . . . . if t506="" s t506="506    "_$c(31)_"a"_ret
 . . . . . s th=$e(th,". - ",1)
 . . . . . if t520'="" s t520=t520_odd_"520    "_$c(31)_"a"_th
 . . . . . if t520="" s t520="520    "_$c(31)_"a"_th
 . . . . else  d
 . . . . . if t520'="" s t520=t520_odd_"520    "_$c(31)_"a"_th
 . . . . . if t520="" s t520="520    "_$c(31)_"a"_th
 . . if tag="054" d   ; predmetove hesla
 . . . s tk=##class(MARC).getSubTagStr(li,"x") 
 . . . if tk="" s tk=$e(li,8,9999)
 . . . if tk'="" d
 . . . . if t650'="" s t650=t650_odd_"650 04 "_$c(31)_"a"_tk
 . . . . if t650="" s t650="650 04 "_$c(31)_"a"_tk
 . . if tag="055" d   ; klucove slova
 . . . s tk=##class(MARC).getSubTagStr(li,"k") ; klucove slovo
 . . . if tk'="" d
 . . . . if t653'="" s t653=t653_odd_"653 0  "_$c(31)_"a"_tk
 . . . . if t653="" s t653="653 0  "_$c(31)_"a"_tk
 . . if tag="080" d   ; holdingove informacie  - opakovatelne
 . . . s ta=##class(MARC).getSubTagStr(li,"c")  ;  prirastkove cislo a mfn
 . . . s tb=##class(MARC).getSubTagStr(li,"g")  ;  signatura
 . . . ; rozdelit a na pr cislo/cisla a mfn
 . . . s ta=##class(User.Util).strswap(ta,"    ","#") 
 . . . if $f(ta,"#")>0 s tc=$p(ta,"#",$l(ta,"#"))  ; posledny vyskyt
 . . . s tc=##class(Util).trim(tc)
 . . . if tc'="" s tC99a=tc
 . . . s ta=$p(ta,"#",1)  ; prvy vyskyt
 . . . s ta=##class(Util).trim(ta)
 . . . s tx=""
 . . . if ta'="" s tx=$c(31)_"a"_ta      ; prirastkove cislo/ cisla oddelene , ;
 . . . if tb'="" s tx=tx_$c(31)_"b"_tb   ; signatura/y detto
 . . . if $f(ta,"CD")>0 s druh="E"
 . . . if $f(tb,"CD")>0 s druh="E"
 . . . 
 . . . if ($f(ta,"/K")>0) || ($f(tb,"/K")>0) d   ; katalogy z vystav
 . . . . s druh="V"
 . . . ;if tc'="" s tx=tx_$c(31)_"c"_tc   ; mfn
 . . . if tx'="" d
 . . . . if t980'="" s t980=t980_odd_"980    "_tx
 . . . . if t980="" s t980="980    "_tx
 . . if tag="089" d   ; spracovanie zaznamu
 . . . s td=##class(MARC).getSubTagStr(li,"d") ; datum
 . . . if td'="" s td=td_"0101"
 . . . s tz=##class(MARC).getSubTagStr(li,"z") ; zpracovatel
 . . . s tz=$zcvt(tz,"l")
 . . . if tz="" s tz="sng"
 . . . s t999d=tz_"-"_td
 . q:$zeof'=0
 . ; zapis zaznamu az vtedy ked je koniec daneho zaznamu
 . if li="###" d ;vtedy zapisat
 . . ; urcenie druhu doklumentu
 . . if druh="" s druh="A"
 . . s rok=##class(MARC).getSubTagStr(t260,"d") ; rok vydania do 008
 . . if $l(rok)'=4 s rok = "    "
 . . if druh2="E" d
 . . . if (druh="") || (druh="A") s druh="E"
 . . ; 
 . . s c99d="DFLT_US_CAT_BK_A"      ; knihy
 . . s t00="000    00000nam-a22     3a-4500"
 . . s t08="008    "_$e(##class(Util).date(),3,9999)_"s"_rok_"----xo-----g---d--------slo-d" 
 . . ;
 . . ;if t980="" d
 . . if druh="RBX" s c99d="DFLT_US_CAT_CLA_A"  ; clanky
 . . if druh="RBX" s t00="000    00000naa-a22     3a-4500"
 . . if druh="RBX" s t08="008    "_$e(##class(Util).date(),3,9999)_"e"_rok_"----xo-||||g------000-0-slo-d" 
 . . ;
 . . if druh="V" s c99d="DFLT_US_CAT2"     ; katalogy z vystav
 . . if druh="V" s t00="000    00000nam-a22     3a-4500"
 . . if druh="V" s t08="008    "_$e(##class(Util).date(),3,9999)_"s"_rok_"----xo-||||g------000-0-slo-d" 
 . . ;
 . . if druh="E" s c99d="DFLT_US_CAT_CF"   ; elektronicke zdroje
 . . if druh="E" s t00="000    00000nmm-a22     3a-4500"
 . . if druh="E" s t08="008    "_$e(##class(Util).date(),3,9999)_"s"_rok_"----xo-||||g------000-0-slo-d" 
 . . ;
 . . s t970b=druh
 . . s poc=kod
 . . s dlzka=$l(kod) ; pocet znakov kodu
 . . s dlzka=7-dlzka
 . . f i=1:1:dlzka d
 . . . s poc="0"_poc
 . . s record=odd_"# @id SngUsCat m"_poc
 . . s record=record_odd_t00
 . . s record=record_odd_"003    SK-BrSNG" 
 . . s record=record_odd_"005    "_##class(Util).date()_"0101.0" 
 . . s record=record_odd_"007    ta" 
 . . s record=record_odd_t08 
 . . s record=record_odd_"040    "_$c(31)_"aBA406"_$c(31)_"cBA406"
 . . 
 . . if t100'="" s record=record_odd_t100
 . . if t245'="" s record=record_odd_t245
 . . if t250'="" s record=record_odd_t250
 . . if t260'="" s record=record_odd_t260
 . . if t300'="" s record=record_odd_t300
 . . if t440'="" s record=record_odd_t440
 . . if t500'="" s record=record_odd_t500
 . . if t506'="" s record=record_odd_t506
 . . if t520'="" s record=record_odd_t520
 . . if t650'="" s record=record_odd_t650
 . . if t653'="" s record=record_odd_t653
 . . if t700'="" s record=record_odd_t700
 . . if t710'="" s record=record_odd_t710
 . . if t711'="" s record=record_odd_t711
 . . if t773'="" s record=record_odd_t773
 . . if tC36'="" s record=record_odd_tC36
 . . if t980'="" s record=record_odd_t980
 . . 
 . . s record=record_odd_"C99    "_$c(31)_"d"_c99d
 . . if tC99a'="" s record=record_$c(31)_"c"_tC99a
 . . s record=record_odd_"970    "_$c(31)_"b"_t970b_$c(31)_"c"_t970c
 . . if t999d="" s t999d="arl-"_##class(Util).date()
 . . s record=record_odd_"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"cSNG"_$c(31)_"d"_t999d
 . . s record=record_odd_"###"
 . . if (record'="") && (t245'="") use outf w record use OU
 . . s record=""
 . . s t245="",t245a="",t245b="",t245n=""
 . . s t100="",t100a="",t1004="",t100e=""
 . . s t700="",t700a="",t7004="",t700e=""
 . . s t999d=""
 . . s t970b=""
 . . s t653=""
 . . s t650=""
 . . s tC36=""
 . . s t250=""
 . . s t711="",t711a="",t711d="",t711c=""
 . . s t710=""
 . . s nazov="",druh="",druh2=""
 . . s t260="",t260a="",t260b="",t260d=""
 . . s t300="",t300a="",t300b=""
 . . s t980="",t980a="",t980b="",t980c=""
 . . s t440=""
 . . s t500="",t500a=""
 . . s t520="",t520a=""
 . . s t506="",t506a=""
 . . s tC99a=""
 . . s t773="",t773t="",t773g=""
 . . s ex044="",ex046g="",ex046h="",ex040="",druh=""
 . . s kod=kod+1

 close inf close outf use OU
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="genHoldings">
<Description><![CDATA[
17.05.09 mk; generovanie holdingov SNG<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ;.handle aktualneho zaznamu katalogu
 ; s sy="##class(UtilConv).genHoldings(.handle)"
	
 s class=##class(MARC).recordClassX(.handle)
 s t001=##class(MARC).recordT001X(.handle)

 s t980a=##class(MARC).getTagX(.handle,"980a",-1) ; vsetky opakovania
 s t980b=##class(MARC).getTagX(.handle,"980b",-1) ; vsetky opakovania
 
 s t980a=##class(User.Util).strswap(t980a,";",",")
 s t980a=##class(User.Util).strswap(t980a,", ",",") 
 s t980a=##class(User.Util).strswap(t980a,",",$c(10))
 s t980a=##class(User.Util).strswap(t980a,$c(31),$c(10))
 
 s t980b=##class(User.Util).strswap(t980b,";",",")
 s t980b=##class(User.Util).strswap(t980b,", ",",") 
 s t980b=##class(User.Util).strswap(t980b,",",$c(10))
 s t980b=##class(User.Util).strswap(t980b,$c(31),$c(10))



 ; este treba riesit ak su v jednom opakovani viacere pr cisla  
 s sigla=##class(MARC).getTagX(.handle,"040a") 
 s druh=##class(MARC).getTagX(.handle,"970b")
 
 s kniznica = ##class(MARC).getTagX(.handle,"003") 
 s kniznica=$e(kniznica,8,9999)
 
 if (t980a="") && (t980b="") q
 
 
 s t100="",t200=""
 s spracovatel="arl"
 s t005=##class(MARC).genT005()

 s i=0,pocet=0
 
 ;s pocet=$l(t980a,$c(10))
 if t980a'="" d
 . s pocet=$l(t980a,$c(10))

 
 
 if druh'="RBX" d
 . if (pocet<1) && (t980b'="") d
 . . s pocet=$l(t980b,$c(10))
 ; zisti skutocny pocet opakovani tagu 980
   
 f i=1:1:pocet d   ;podla poctu kusov vytvorit pocet exemplarov
 . s HoldKod=t001_"_"_##class(Util).leadingZero(i,4)
 . s t100="",t200=""
 . s t005=##class(Util).date()_"000000.0"
 . s prc=$p(t980a,$c(10),i)
 . s sig=$p(t980b,$c(10),i) 
 . if (prc'="") && (sig="") s sig=$p(t980b,$c(10),1)
 . s t100=t100_$c(31)_"lSNG"
 . s dis="SKL"
 . if $e(sig,1,3)="PKK" s dis="PKK"
 . s t100=t100_$c(31)_"d"_dis
 . if prc'="" s t100=t100_$c(31)_"t"_prc   ;prirastkove cislo
 . if sig'="" s t100=t100_$c(31)_"s"_sig  
 . 
 . s xc99="arl-"_##class(Util).date()
 . d ##class(MARC).newX(.handleh,class_"H",HoldKod)
 . d ##class(MARC).setTagX(.handleh,"000    00000     2200109   450")
 . d ##class(MARC).setTagX(.handleh,"005    "_t005)
 . if t100'="" d ##class(MARC).setTagX(.handleh,"100    "_t100)
 . s doba="30"
 . if $e(sig,1,3)="PKK" s doba="0"
 . s t200=t200_$c(31)_"d"_doba
 . if t200'="" d ##class(MARC).setTagX(.handleh,"200    "_t200)
 . d ##class(MARC).setTagX(.handleh,"999    "_$c(31)_"a1"_$c(31)_"b"_kniznica_$c(31)_"c"_kniznica_$c(31)_"d"_xc99)
 . s st=##class(MARC).writeX(.handleh,1,,,1)
 . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"

 q
]]></Implementation>
</Method>

<Method name="genAuth100">
<Description><![CDATA[
17.05.09 mk; globalka na generovanie autorit osobnych z 100<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[


 ;  treba riesit zachovanie subtagu 4 a e globalka ich vymaze
 ; 
   
 ; s sy="##class(UtilConv).genAuth100(.handle)"
 s t100=##class(MARC).getTagX(.handle,"100",-1)  ; dotiahnutie vsetkych opakovani

 if t100="" q
 
 s c=$l(t100,$c(10)) ; pocet opakovani

 s t100new="",idauth="",t001=""

 f i=1:1:c d
 . s t100s=$p(t100,$c(10),i)
 . s ta=##class(MARC).getSubTagStr(t100s,"a")  ; hodnota podla ktorej sa ma vyhladavat
 . s t4=##class(MARC).getSubTagStr(t100s,"4")  ; hodnota podla ktorej sa ma vyhladavat
 . s te=##class(MARC).getSubTagStr(t100s,"e")  ; hodnota podla ktorej sa ma vyhladavat
 . s t7=##class(MARC).getSubTagStr(t100s,"7")  ; kod zaznamu autority
 .
 . s hladaj=ta   
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]',"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . if $l(hladaj)>90 d
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . s slovo=$l($p(hladaj," ",$l(hladaj," ")))
 . . s hladaj=$e(hladaj,1,$l(hladaj)-slovo)_".."
 . if t7="" d  ; ak nie je kod autority spracovat
 . . if '$d(^ooDataTableI("SngUsAuth","a100",hladaj)) d   ; hladanie v osobnych autoritach
 . . . ; ak nie je v indexe tak ho zapis do autorit
 . . . d ##class(MARC).newX(.handlea,"SngUsAuth","new")
 . . . d ##class(MARC).setTagX(.handlea,"000    00000nz--a22     n--4500")
 . . . d ##class(MARC).setTagX(.handlea,"003    SK-BrSNG")
 . . . d ##class(MARC).setTagX(.handlea,"005    "_##class(Util).date()_"000000.0")
 . . . d ##class(MARC).setTagX(.handlea,"008    "_"090630-||abz||aa|n-----------b-an-----sd")
 . . . d ##class(MARC).setTagX(.handlea,"040    "_$c(31)_"aBA406"_$c(31)_"bslo"_$c(31)_"dBA406")
 . . . s t100=""
 . . . if ta'="" s t100=$c(31)_"a"_ta
 . . . d ##class(MARC).setTagX(.handlea,"100 1  "_t100)
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"dSNG-"_##class(Util).date())
 . . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_US_AUTH_100") 
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . if t4'="" s t100=t100_$c(31)_"4"_t4
 . . . if te'="" s t100=t100_$c(31)_"e"_te
 . . . if t100s'="" s t100s="100 1  "_t100_$c(31)_"7"_"sng_us_auth*"_t001
 . . else  d  ; najdena autorita
 . . . s idauth=""
 . . . s idauth=$o(^ooDataTableI("SngUsAuth","a100",hladaj,""))
 . . . s t001=##class(MARC).getT001(idauth)
 . . . if t001'="" d  
 . . . . s t100snew="100 1  "
 . . . . if ##class(MARC).readLX(.handlea,"sng_us_auth*"_t001) d
 . . . . . s ta=##class(MARC).getTagX(.handlea,"100a")
 . . . . . if ta'="" s t100snew=t100snew_$c(31)_"a"_ta 
 . . . . . if t4'="" s t100snew=t100snew_$c(31)_"4"_t4
 . . . . . if te'="" s t100snew=t100snew_$c(31)_"e"_te
 . . . . if t100snew'="" s t100s=t100snew_$c(31)_"7"_"sng_us_auth*"_t001
 . if t100new'="" s t100new=t100new_$c(10)_t100s
 . if t100new="" s t100new=t100s
 
 if t100new'="" d 
 . if t100'=t100new d ##class(MARC).setTagX(.handle,t100new)
 q
]]></Implementation>
</Method>

<Method name="genAuth700">
<Description><![CDATA[
17.05.09 mk; globalka na generovanie autorit osobnych z 700<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 ; s sy="##class(UtilConv).genAuth700(.handle)"
 s t700=##class(MARC).getTagX(.handle,"700",-1)  ; dotiahnutie vsetkych opakovani

 if t700="" q
 
 s c=$l(t700,$c(10)) ; pocet opakovani

 s t700new="",idauth="",t001=""

 f i=1:1:c d
 . s t700s=$p(t700,$c(10),i)
 . s ta=##class(MARC).getSubTagStr(t700s,"a")  ; hodnota podla ktorej sa ma vyhladavat
 . s t4=##class(MARC).getSubTagStr(t700s,"4")  ; hodnota podla ktorej sa ma vyhladavat
 . s te=##class(MARC).getSubTagStr(t700s,"e")  ; hodnota podla ktorej sa ma vyhladavat
 . s t7=##class(MARC).getSubTagStr(t700s,"7")  ; kod zaznamu autority
 .
 . s hladaj=ta   
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]',"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . if $l(hladaj)>90 d
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . s slovo=$l($p(hladaj," ",$l(hladaj," ")))
 . . s hladaj=$e(hladaj,1,$l(hladaj)-slovo)_".."
 . if t7="" d  ; ak nie je kod autority spracovat
 . . if '$d(^ooDataTableI("SngUsAuth","a100",hladaj)) d   ; hladanie v osobnych autoritach
 . . . ; ak nie je v indexe tak ho zapis do autorit
 . . . d ##class(MARC).newX(.handlea,"SngUsAuth","new")
 . . . d ##class(MARC).setTagX(.handlea,"000    00000nz--a22     n--4500")
 . . . d ##class(MARC).setTagX(.handlea,"003    SK-BrSNG")
 . . . d ##class(MARC).setTagX(.handlea,"005    "_##class(Util).date()_"000000.0")
 . . . d ##class(MARC).setTagX(.handlea,"008    "_"090630-||abz||aa|n-----------b-an-----sd")
 . . . d ##class(MARC).setTagX(.handlea,"040    "_$c(31)_"aBA406"_$c(31)_"bslo"_$c(31)_"dBA406")
 . . . s t100=""
 . . . if ta'="" s t100=$c(31)_"a"_ta
 . . . d ##class(MARC).setTagX(.handlea,"100 1  "_t100)
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"dSNG-"_##class(Util).date())
 . . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_US_AUTH_100") 
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . if t4'="" s t100=t100_$c(31)_"4"_t4
 . . . if te'="" s t100=t100_$c(31)_"e"_te
 . . . if t700s'="" s t700s="700 1  "_t100_$c(31)_"7"_"sng_us_auth*"_t001
 . . else  d  ; najdena autorita
 . . . s idauth=""
 . . . s idauth=$o(^ooDataTableI("SngUsAuth","a100",hladaj,""))
 . . . s t001=##class(MARC).getT001(idauth)
 . . . if t001'="" d  
 . . . . s t700snew="700 1  "
 . . . . if ##class(MARC).readLX(.handlea,"sng_us_auth*"_t001) d
 . . . . . s ta=##class(MARC).getTagX(.handlea,"100a")
 . . . . . if ta'="" s t700snew=t700snew_$c(31)_"a"_ta 
 . . . . . if t4'="" s t700snew=t700snew_$c(31)_"4"_t4
 . . . . . if te'="" s t700snew=t700snew_$c(31)_"e"_te
 . . . . if t700snew'="" s t700s=t700snew_$c(31)_"7"_"sng_us_auth*"_t001
 . if t700new'="" s t700new=t700new_$c(10)_t700s
 . if t700new="" s t700new=t700s
 
 if t700new'="" d 
 . if t700'=t700new d ##class(MARC).setTagX(.handle,t700new)
 q
]]></Implementation>
</Method>

<Method name="genAuth710">
<Description><![CDATA[
18.05.09 mk; globalka na generovanie autorit korporacii z 710<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 ; s sy="##class(UtilConv).genAuth710(.handle)"
 s t710=##class(MARC).getTagX(.handle,"710",-1)  ; dotiahnutie vsetkych opakovani

 if t710="" q
 
 s c=$l(t710,$c(10)) ; pocet opakovani

 s t710new="",idauth="",t001=""

 f i=1:1:c d
 . s t710s=$p(t710,$c(10),i)
 . s ta=##class(MARC).getSubTagStr(t710s,"a")  ; hodnota podla ktorej sa ma vyhladavat
 . s t4=##class(MARC).getSubTagStr(t710s,"4")  ; hodnota podla ktorej sa ma vyhladavat
 . s t7=##class(MARC).getSubTagStr(t710s,"7")  ; kod zaznamu autority
 .
 . s hladaj=ta   
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]',"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . if $l(hladaj)>90 d
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . s slovo=$l($p(hladaj," ",$l(hladaj," ")))
 . . s hladaj=$e(hladaj,1,$l(hladaj)-slovo)_".."
 . if t7="" d  ; ak nie je kod autority spracovat
 . . if '$d(^ooDataTableI("SngUsAuth","a110",hladaj)) d   ; hladanie v osobnych autoritach
 . . . ; ak nie je v indexe tak ho zapis do autorit
 . . . d ##class(MARC).newX(.handlea,"SngUsAuth","new")
 . . . d ##class(MARC).setTagX(.handlea,"000    00000nz--a22     n--4500")
 . . . d ##class(MARC).setTagX(.handlea,"003    SK-BrSNG")
 . . . d ##class(MARC).setTagX(.handlea,"005    "_##class(Util).date()_"000000.0")
 . . . d ##class(MARC).setTagX(.handlea,"008    "_"090630-||abz||aa|n-----------b-an-----sd")
 . . . d ##class(MARC).setTagX(.handlea,"040    "_$c(31)_"aBA406"_$c(31)_"bslo"_$c(31)_"dBA406")
 . . . s t110=""
 . . . if ta'="" s t110=$c(31)_"a"_ta
 . . . d ##class(MARC).setTagX(.handlea,"110 2  "_t110)
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"dSNG-"_##class(Util).date())
 . . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_US_AUTH_110") 
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . if t4'="" s t110=t110_$c(31)_"4"_t4
 . . . if t710s'="" s t710s="710 2  "_t110_$c(31)_"7"_"sng_us_auth*"_t001
 . . else  d  ; najdena autorita
 . . . s idauth=""
 . . . s idauth=$o(^ooDataTableI("SngUsAuth","a110",hladaj,""))
 . . . s t001=##class(MARC).getT001(idauth)
 . . . if t001'="" d  
 . . . . s t710snew="710 2  "
 . . . . if ##class(MARC).readLX(.handlea,"sng_us_auth*"_t001) d
 . . . . . s ta=##class(MARC).getTagX(.handlea,"110a")
 . . . . . if ta'="" s t710snew=t710snew_$c(31)_"a"_ta 
 . . . . . if t4'="" s t710snew=t710snew_$c(31)_"4"_t4
 . . . . if t710snew'="" s t710s=t710snew_$c(31)_"7"_"sng_us_auth*"_t001
 . if t710new'="" s t710new=t710new_$c(10)_t710s
 . if t710new="" s t710new=t710s
 
 if t710new'="" d 
 . if t710'=t710new d ##class(MARC).setTagX(.handle,t710new)
 q
]]></Implementation>
</Method>

<Method name="gen928">
<Description><![CDATA[
29.05.09 mk; globalka na generovanie autority vydavatelov SNG<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; tato globalka generuje autority na zaklade 260 katalogu
 ; s sy="##class(UtilConv).gen928(.handle)"
 ; select len na tie zaznamy, ktore nemaju 928

 s t260=##class(MARC).getTagX(.handle,"260") 
 s ta=##class(MARC).getSubTagStr(t260,"a")  ; miesto vydania
 s tb=##class(MARC).getSubTagStr(t260,"b")  ; nazov vydavatela

 if tb="" q  ; ak je nazov vydavatela prazdny preskoc
 if $e(tb,$l(tb),$l(tb))="," s tb=$e(tb,1,$l(tb)-1)
 if $e(ta,$l(ta)-1,$l(ta))=" :" s ta=$e(ta,1,$l(ta)-2)

 s hladaj=tb    ; kontrolovat len meno vydavatela a miesto az po najdeni zaznamu
 s hladaj=" "_##class(Util).trim(hladaj) 
 s s1="[]'"_$c(34)  
 s hladaj=$tr(hladaj,s1)
 s hladaj=$zcvt(hladaj,"l")
 s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov

 ; ak existuje uz taky autor tak ho nezapisuj 
 if '$d(^ooDataTableI("SngUsAuth","a110p",hladaj)) d
 . ; ak nie je v indexe tak ho zapis do autorit
 . d ##class(MARC).newX(.handlea,"SngUsAuth","new")
 . d ##class(MARC).setTagX(.handlea,"000    00000nz--a22     n--4500")
 . d ##class(MARC).setTagX(.handlea,"003   	SK-BrSNG") 
 . d ##class(MARC).setTagX(.handlea,"005    "_##class(Util).date()_"000000.0")
 . d ##class(MARC).setTagX(.handlea,"008   	090630-||abz||aa|n-----------b-an-----sd") 
 . d ##class(MARC).setTagX(.handlea,"040   	"_$c(31)_"aBA406"_$c(31)_"bslo"_$c(31)_"dBA406") 
 . s a110="110 2  "
 . if tb'="" s a110=a110_$c(31)_"a"_tb
 . d ##class(MARC).setTagX(.handlea,a110)
 . s a980="980    "
 . if ta'="" s a980=a980_$c(31)_"b"_ta
 . s a980=a980_$c(31)_"xP"
 . d ##class(MARC).setTagX(.handlea,a980)
 . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"d"_"arl-"_##class(Util).date())
 . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_US_AUTH_110_P") 
 . s st=##class(MARC).writeX(.handlea,1,,,1)
 . ; testujem pripad ked sa nepodari zapisat autoritu
 . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . ; dopln do 928 kod autority
 . s t001="" s t001=$$$HandleT001(handlea)
 . s t928="928    "_$c(31)_"7"_"sng_us_auth*"_t001_$c(31)_"a"_tb
 . d ##class(MARC).setTagX(.handle,t928)
 else  d  
 . ; doplnim aspon link, ked uz existuje autorita
 . s idauth=""
 . s idauth=$o(^ooDataTableI("SngUsAuth","a110p",hladaj,""))
 . s t001=""
 . if idauth'="" d  
 . . s t001=##class(MARC).getT001(idauth)
 . . ; kontrola na zhodu miest 980b autority
 . . s A980b = "" 
 . . if ##class(MARC).readLX(.handlea,"sng_us_auth*"_t001) s A980b=##class(MARC).getTagX(.handlea,"980b") 
 . . ; ak nie je mesto prazdne a nezhoduje sa s autoritou zalozit novu autoritu
 . . s t928="928    "_$c(31)_"7"_"sng_us_auth*"_t001_$c(31)_"a"_tb
 . . d ##class(MARC).setTagX(.handle,t928)
 
 q
]]></Implementation>
</Method>

<Method name="gen653">
<Description><![CDATA[
05.05.09 mk; globalka na prevod osobnych autorit z tagu 653 do 700<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; s sy="##class(UtilConv).gen653(.handle)"	
 s t001=##class(MARC).recordT001X(.handle)
 
 s sigla="",idaut=""
  
 s t653all=##class(MARC).getTagX(.handle,"653",-1) ; dotiahnut vsetky opakovania
 s t700all=##class(MARC).getTagX(.handle,"700",-1) ; dotiahnut vsetky opakovania
 s t600all=##class(MARC).getTagX(.handle,"600",-1) ; dotiahnut vsetky opakovania


 if t653all="" q
 
 s t700new="",t653new="",t600new=""

 s c=$l(t653all,$c(10)) ; pocet opakovani hesiel
 
 f i=1:1:c d
 . ; jedno opakovanie 653
 . s t653=$p(t653all,$c(10),i) 
 . s ta=##class(MARC).getSubTagStr(t653,"a")  
 . ; zistit ci sa jedna o meno
 . s prva=$p(ta,",",1)  ; prva cast
 . s prvatest=$p(prva,"-",1)
 . s druha=$p(ta,",",2)  ; druha cast
 . s druha=##class(Util).trim(druha)
 . ; ak je cele velkymi pismenami je to meno
 . if prvatest?.U d ; ak sa jedna o meno
 . . s p1=$p(prva,"-",1)
 . . s p2=$p(prva,"-",2)
 . . s p1=$e(p1,1,1)_$zcvt($e(p1,2,9999),"l")
 . . if p2'="" d
 . . . s p2=$e(p2,1,1)_$zcvt($e(p2,2,9999),"l")
 . . . s p1=p1_"-"_p2
 . . ; takze p1 je prva cast 
 . . s d1=$p(druha,"-",1)
 . . s d2=$p(druha,"-",2)
 . . s ta=p1
 . . if d1'="" s ta=ta_", "_d1
 . . ; riesenie rozdelin na tag 600 a 700 podla vyskytu $e
 . . if d2'="" d
 . . . s t700="700 1  "_$c(31)_"a"_ta
 . . . s t700=t700_$c(31)_"e"_d2
 . . . s t700=t700_$c(31)_"4oth"
 . . . if t700new'="" s t700new=t700new_$c(10)_t700
 . . . if t700new="" s t700new=t700
 . . else  d
 . . . s t600="600 14 "_$c(31)_"a"_ta
 . . . s t600=t600_$c(31)_"4aut"
 . . . if t600new'="" s t600new=t600new_$c(10)_t600
 . . . if t600new="" s t600new=t600
 . else  d ; ak nie je navrat do 653   
 . . if t653new'="" s t653new=t653new_$c(10)_t653
 . . if t653new="" s t653new=t653

 if t600new'="" d ##class(MARC).setTagX(.handle,t600new)
 if t700new'="" d ##class(MARC).setTagX(.handle,t700new)

 if t653new'="" d ##class(MARC).setTagX(.handle,t653new)
 if t653new="" d ##class(MARC).delTagX(.handle,"653")
 
 
 q
]]></Implementation>
</Method>

<Method name="genAuth650">
<Description><![CDATA[
12.06.09 mk; globalka na generovanie autorit predmetovych hesiel<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[

 ; s sy="##class(UtilConv).genAuth650(.handle)"
 s t650=##class(MARC).getTagX(.handle,"650",-1)  ; dotiahnutie vsetkych opakovani

 if t650="" q
 
 s c=$l(t650,$c(10)) ; pocet opakovani

 s t650new="",idauth="",t001=""

 f i=1:1:c d
 . s t650s=$p(t650,$c(10),i)
 . s ta=##class(MARC).getSubTagStr(t650s,"a")  ; hodnota podla ktorej sa ma vyhladavat
 . s t7=##class(MARC).getSubTagStr(t650s,"7")  ; kod zaznamu autority
 .
 . s hladaj=ta   
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]',"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . if $l(hladaj)>90 d
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . s slovo=$l($p(hladaj," ",$l(hladaj," ")))
 . . s hladaj=$e(hladaj,1,$l(hladaj)-slovo)_".."
 . if t7="" d  ; ak nie je kod autority spracovat
 . . if '$d(^ooDataTableI("SngUsAuth","a150",hladaj)) d   ; hladanie v osobnych autoritach
 . . . ; ak nie je v indexe tak ho zapis do autorit
 . . . d ##class(MARC).newX(.handlea,"SngUsAuth","new")
 . . . d ##class(MARC).setTagX(.handlea,"000    00000nz--a22     n--4500")
 . . . d ##class(MARC).setTagX(.handlea,"003    SK-BrSNG")
 . . . d ##class(MARC).setTagX(.handlea,"005    "_##class(Util).date()_"000000.0")
 . . . d ##class(MARC).setTagX(.handlea,"008    "_"090630-||abz||aa|n-----------b-an-----sd")
 . . . d ##class(MARC).setTagX(.handlea,"040    "_$c(31)_"aBA406"_$c(31)_"bslo"_$c(31)_"dBA406")
 . . . s t150=""
 . . . if ta'="" s t150=$c(31)_"a"_ta
 . . . d ##class(MARC).setTagX(.handlea,"150    "_t150)
 . . . d ##class(MARC).setTagX(.handlea,"999    "_$c(31)_"a1"_$c(31)_"bSNG"_$c(31)_"dSNG-"_##class(Util).date())
 . . . d ##class(MARC).setTagX(.handlea,"C99    "_$c(31)_"dDFLT_US_AUTH_150") 
 . . . s st=##class(MARC).writeX(.handlea,1,,,1)
 . . . ; testujem pripad ked sa nepodari zapisat autoritu
 . . . if $$$ISERR(st) w !,"FATAL ERROR:"_##class(Util).status2str(st) b  ztrap "ERR"
 . . . s t001="" s t001=$$$HandleT001(handlea)
 . . . if t650s'="" s t650s="650 04 "_t150_$c(31)_"7"_"sng_us_auth*"_t001
 . . else  d  ; najdena autorita
 . . . s idauth=""
 . . . s idauth=$o(^ooDataTableI("SngUsAuth","a150",hladaj,""))
 . . . s t001=##class(MARC).getT001(idauth)
 . . . if t001'="" d  
 . . . . s t650snew="650 04 "
 . . . . if ##class(MARC).readLX(.handlea,"sng_us_auth*"_t001) d
 . . . . . s ta=##class(MARC).getTagX(.handlea,"150a")
 . . . . . if ta'="" s t650snew=t650snew_$c(31)_"a"_ta 
 . . . . if t650snew'="" s t650s=t650snew_$c(31)_"7"_"sng_us_auth*"_t001
 . if t650new'="" s t650new=t650new_$c(10)_t650s
 . if t650new="" s t650new=t650s
 
 if t650new'="" d ##class(MARC).setTagX(.handle,t650new)
 q
]]></Implementation>
</Method>

<Method name="convFNO">
<Description><![CDATA[
20.07.09 mk nova konverzia FNO EPCA<br>
            riadkoveho formatu, zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; d ##class(UtilConv).convFNO("c:\fno\fno.txt","c:\fno\epca.txt")
 ; druh - druh dokumentu, ktory sa spracovava
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"
 
 
 ; otevrit vystupni soubor 2
 s outf2="c:\fno\znaky.txt" 
 open outf2:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf2_"')!!"
 
 
 s odd=$c(13)_$c(10)
 s kod=1

 s brk=0,nkrec="",nkid="",nkid2="",li="",begin="1",hlavicka="",kodold="",t970="",t970a="",t970b=""
 s t970c="",t982="",c999da="",c999db=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok
 . s li=##class(Util).strswap(li,"$",$c(31))
 . ;uprava jedneho riadku
 . if (li'="") d
 . . ; kontrola hlavicky 000 
 . . if ($e(li,1,3)="lab") || ($f(li,"lab    ")) d
 . . . ;use outf w odd_"xxxxxxxxxxxx" use OU
 . . . s hlavicka = ""
 . . . 
 . . . if begin = "" d
 . . . . if (t970a'="") || (t970b'="") || (t970c'="") d
 . . . . . s t970=odd_"970    "
 . . . . . if t970a'="" s t970=t970_$c(31)_"a"_t970a
 . . . . . if t970b'="" s t970=t970_$c(31)_"b"_t970b
 . . . . s c999="arl-"_##class(Util).date()
 . . . . if c999da'="" d
 . . . . . s c999=c999da
 . . . . if c999db'="" d
 . . . . . s c999=c999_"#"_c999db
 . . . . s hlavicka=t970_odd_"999    "_$c(31)_"a1"_$c(31)_"bFNO"_$c(31)_"cFNO"_$c(31)_"d"_c999_odd_"###"
 . . . . s t970="",t970a="",t970b="",t970c="",c999da="",c999db=""
 . . . 
 . . . s poc=kod
 . . . s dlzka=$l(kod) ; pocet znakov kodu
 . . . s dlzka=7-dlzka
 . . . f i=1:1:dlzka d
 . . . . s poc="0"_poc
 . . . s kod=kod+1
 . . . s hlavicka=hlavicka_odd_"# @id FnoUnEpca "_poc
 . . . ;if (begin="1") s hlavicka=hlavicka_$c(10)
 . . . if ($f(li,"lab    ")) d
 . . . . s lix=$p(li,"lab    ",1) 
 . . . . if ($e(lix,1,3)'="Q00") && ($e(lix,1,3)'="ZAZ") d
 . . . . . use outf w odd_lix use OU
 . . . . s li="lab    "_$p(li,"lab    ",2)
 . . . s li=##class(Util).strswap(li,"lab","000")
 . . . s hlavicka=hlavicka_odd_li,li=""
 . . . use outf w hlavicka use OU
 . . if ($e(li,1,3)="DDR") d   ; druh dokumentu
 . . . s tb=##class(MARC).getSubTagStr(li,"b")
 . . . if tb'="" s t970b=tb
 . . . s li=""
 . . if ($e(li,1,3)="KPC") d   ; kategoria publikacnej cinnosti
 . . . s ta=##class(MARC).getSubTagStr(li,"a")
 . . . if ta'="" s t970a=ta
 . . . s tc=##class(MARC).getSubTagStr(li,"c")
 . . . if tc'="" s t970c=tc
 . . . s li=""
 . . if ($e(li,1,3)="LOK") d  ; lokacia
 . . . s tl=##class(MARC).getSubTagStr(li,"l")
 . . . s t980=""
 . . . s t982=""
 . . . s tt=##class(MARC).getSubTagStr(li,"t")
 . . . if tt'="" s t982="982    "_$c(31)_"a"_tt
 . . . if tl'="" s t980="980    "_$c(31)_"a"_tl
 . . . s li=t980
 . . . if t982'="" d
 . . . . if li'="" s li=li_odd_t982
 . . . . if li="" s li=t982
 . . if ($e(li,1,2)="70") || ($e(li,1,3)="600") d   ; linky v autoritach fno...
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . s t3n=t3
 . . . if $e(t3,1,3)="FNO" s t3n="fno_un_auth*p"_$e(t3,4,9999)
 . . . if $e(t3,1,3)'="FNO" s t3n="fno_un_auth*"_t3
 . . . s li=##class(Util).strswap(li,$c(31)_"3"_t3,$c(31)_"3"_t3n)
 . . if ($e(li,1,3)="606") d   ; linky na mesh
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . s t3n=t3
 . . . if $e(t3,1,1)="D" d
 . . . . ; vyhodit z kodu cz
 . . . . s t3n="fno_un_auth*d"_$e(t3,2,9999)
 . . . . s t3n=##class(Util).strswap(t3n,"cz","")
 . . . if $e(t3,1,1)'="D" s t3n="fno_un_auth*"_t3
 . . . s li=##class(Util).strswap(li,$c(31)_"3"_t3,$c(31)_"3"_t3n)
 . . if ($e(li,1,2)="71") || ($e(li,1,3)="610") d   ; linky v autoritach fno...
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . s t3n=t3
 . . . if $e(t3,1,3)="FNO" s t3n="fno_un_auth*k"_$e(t3,4,9999)
 . . . if $e(t3,1,3)'="FNO" s t3n="fno_un_auth*"_t3
 . . . s li=##class(Util).strswap(li,$c(31)_"3"_t3,$c(31)_"3"_t3n)
 . . if ($e(li,1,3)="999") d  
 . . . s li=""
 . . if ($e(li,1,3)="NOS") d   ;nosic 345c
 . . . s ta=##class(MARC).getSubTagStr(li,"a")
 . . . if ta'="" s li="345    "_$c(31)_"c"_ta
 . . if ($e(li,1,3)="BIB") d   ;rok v ktorom vysiel clanok 
 . . . s ta=##class(MARC).getSubTagStr(li,"a")
 . . . if ta'="" s li="C26    "_$c(31)_"d"_ta
 . . if ($e(li,1,3)="974") d  
 . . . s tf=##class(MARC).getSubTagStr(li,"f")
 . . . s tf=##class(Util).strswap(tf,"Knihy / monografie","A")
 . . . s tf=##class(Util).strswap(tf,"Èasopisy / periodika","B")
 . . . if (tf'="") && (t970b="") s t970b=tf
 . . . s li=""
 . . if ($e(li,1,3)="Q00") || ($e(li,1,3)="Q45") || ($e(li,1,3)="001") || ($e(li,1,3)="DIL") s li="" 
 . . if ($e(li,1,3)="X00") || ($e(li,1,3)="IMP") || ($e(li,1,3)="Q 4") s li="" 
 . . if ($e(li,1,1)="4") && ($f(li,$c(31)_"1")<1) d 
 . . . if ($e(li,1,3)="461") || ($e(li,1,3)="463") d
 . . . . s t4xx="463"_$e(li,4,7)
 . . . else  d
 . . . . s t4xx=$e(li,1,7)
 . . . ; vysvapovat . za medzery
 . . . s t4xx=##class(Util).strswap(t4xx,"."," ")
 . . . s tt=##class(MARC).getSubTagStr(li,"t")
 . . . if tt'="" s t4xx=t4xx_$c(31)_"12001 "_$c(31)_"a"_tt
 . . . s tb=##class(MARC).getSubTagStr(li,"b")
 . . . if tb'="" s t4xx=t4xx_$c(31)_"b"_tb
 . . . s th=##class(MARC).getSubTagStr(li,"h")
 . . . if th'="" s t4xx=t4xx_$c(31)_"h"_th
 . . . s ti=##class(MARC).getSubTagStr(li,"i")
 . . . if ti'="" s t4xx=t4xx_$c(31)_"i"_ti
 . . . s to=##class(MARC).getSubTagStr(li,"o")
 . . . if to'="" s t4xx=t4xx_$c(31)_"e"_to
 . . . s ta=##class(MARC).getSubTagStr(li,"a")
 . . . if ta'="" s t4xx=t4xx_$c(31)_"f"_ta
 . . . s tv=##class(MARC).getSubTagStr(li,"v")
 . . . if tv'="" s t4xx=t4xx_$c(31)_"v"_tv
 . . . s tc=##class(MARC).getSubTagStr(li,"c")
 . . . if tc'="" s t4xx=t4xx_$c(31)_"1210  "_$c(31)_"a"_tc
 . . . s tn=##class(MARC).getSubTagStr(li,"n")
 . . . if tn'="" s t4xx=t4xx_$c(31)_"c"_tn
 . . . s td=##class(MARC).getSubTagStr(li,"d")
 . . . if td'="" s t4xx=t4xx_$c(31)_"d"_td
 . . . s te=##class(MARC).getSubTagStr(li,"e")
 . . . if te'="" s t4xx=t4xx_$c(31)_"1205  "_$c(31)_"a"_te
 . . . s tf=##class(MARC).getSubTagStr(li,"f")
 . . . if tf'="" s t4xx=t4xx_$c(31)_"1700 1"_$c(31)_"a"_tf
 . . . s tg=##class(MARC).getSubTagStr(li,"g")
 . . . if tg'="" s t4xx=t4xx_$c(31)_"1701 1"_$c(31)_"a"_tg
 . . . s tl=##class(MARC).getSubTagStr(li,"l")
 . . . if tl'="" s t4xx=t4xx_$c(31)_"1510 1"_$c(31)_"a"_tl
 . . . s tp=##class(MARC).getSubTagStr(li,"p")
 . . . if tp'="" s t4xx=t4xx_$c(31)_"1215  "_$c(31)_"a"_tp
 . . . s ts=##class(MARC).getSubTagStr(li,"s")
 . . . if ts'="" s t4xx=t4xx_$c(31)_"12250 "_$c(31)_"a"_ts
 . . . s tu=##class(MARC).getSubTagStr(li,"u")
 . . . if tu'="" s t4xx=t4xx_$c(31)_"1856  "_$c(31)_"u"_tu
 . . . s tx=##class(MARC).getSubTagStr(li,"x")
 . . . if tx'="" s t4xx=t4xx_$c(31)_"1011  "_$c(31)_"a"_tx
 . . . s ty=##class(MARC).getSubTagStr(li,"y")
 . . . if ty'="" s t4xx=t4xx_$c(31)_"1010  "_$c(31)_"a"_ty
 . . . s tz=##class(MARC).getSubTagStr(li,"z")
 . . . if tz'="" s t4xx=t4xx_$c(31)_"1040  "_$c(31)_"a"_tz
 . . . s li=t4xx
 . . if ($e(li,1,3)="990") d  
 . . . s ta=##class(MARC).getSubTagStr(li,"a") ; datum
 . . . s ta=$e(ta,1,8)
 . . . if ta="" s ta=##class(Util).date()
 . . . s tb=##class(MARC).getSubTagStr(li,"b") ; organizacia
 . . . s tc=##class(MARC).getSubTagStr(li,"c") ; autor
 . . . s c999da=""
 . . . if tc="" s tc="arl"
 . . . if tc'="" s c999da=tc
 . . . if tb'="" s c999da=c999da_"_"_tb
 . . . if ta'="" s c999da=c999da_"-"_ta
 . . . s li=""
 . . if ($e(li,1,3)="991") d  
 . . . s ta=##class(MARC).getSubTagStr(li,"a") ; datum
 . . . s ta=$e(ta,1,8)
 . . . if ta="" s ta=##class(Util).date()
 . . . s tb=##class(MARC).getSubTagStr(li,"b") ; organizacia
 . . . s tc=##class(MARC).getSubTagStr(li,"c") ; autor
 . . . s c999db=""
 . . . if tc="" s tc="arl"
 . . . if tc'="" s c999db=tc
 . . . if tb'="" s c999db=c999db_"_"_tb
 . . . if ta'="" s c999db=c999db_"-"_ta
 . . . s li=""
 . . ; osetrenie vsetkych pismenkovych tagov
 . . s znakk=$e(li,1,1)
 . . s statn=""
 . . f i=0:1:9 d
 . . . if i=znakk s statn="1"
 . . if statn'="1" d
 . . . ; zapisat do specialneho suboru
 . . . if li'="" use outf2 w odd_li use OU
 . . 
 . . if li'="" use outf w odd_li use OU
 . . s li=""
 . . s begin=""
 . q:$zeof'=0
 .
 . ; zpracovat jeden radek
 . ;s li=$e(li,11,9999) s $e(li,7,8)=""
 . ;s li=##class(Util).strswap(li,"   "," ") if li="" q

 s c999="arl-"_##class(Util).date()
 if c999da'="" d
 . s c999=c999da
 if c999db'="" d
 . s c999=c999_"#"_c999db


 use outf w odd_"999    "_$c(31)_"a1"_$c(31)_"bFNO"_$c(31)_"cFNO"_$c(31)_"d"_c999_odd_"###" use OU
 close inf close outf close outf2 use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="convFNOAut">
<Description><![CDATA[
21.07.09 mk nova konverzia FNO autority<br>
            riadkoveho formatu, zo suboru do suboru<br>  ]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; d ##class(UtilConv).convFNOAut("c:\fno\a.tag","c:\fno\aut.txt")
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"
 
 
 ; otevrit vystupni soubor 2
 s outf2="c:\fno\znakya.txt" 
 open outf2:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf2_"')!!"
 
 
 s odd=$c(13)_$c(10)
 s kod=1

 s brk=0,nkrec="",nkid="",nkid2="",li="",begin="1",hlavicka="",kodold="",t3="",zaznam="",poc="",hesla=""
 s tag250="",pocold=""
 
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok
 . s li=##class(Util).strswap(li,"$",$c(31))
 . ;uprava jedneho riadku
 . if (li'="") d
 . . if ($e(li,1,3)="lab") d
 . . . s hlavicka = ""
 . . . if t3'="" d
 . . . . s t3=$zcvt(t3,"l")
 . . . . if $e(t3,1,2)="d0" s t3=##class(Util).strswap(t3,"cz","")
 . . . . s zaznam=##class(Util).strswap(zaznam,"# @id FnoUnAuth "_poc,"# @id FnoUnAuth "_t3)
 . . . . if hesla'="" d
 . . . . . s zaznam=##class(Util).strswap(zaznam,tag250,tag250_hesla)
 . . . . s t3=""
 . . . use outf w zaznam
 . . . if begin = "" d
 . . . . s hlavicka=odd_"999    "_$c(31)_"a1"_$c(31)_"bFNO"_$c(31)_"cFNO"_$c(31)_"d"_"arl-"_##class(Util).date()_odd_"###"
 . . . s poc=kod
 . . . s dlzka=$l(kod) ; pocet znakov kodu
 . . . s dlzka=7-dlzka
 . . . f i=1:1:dlzka d
 . . . . s poc="0"_poc
 . . . s kod=kod+1
 . . . s hlavicka=hlavicka_odd_"# @id FnoUnAuth "_poc
 . . . s li="000"_$e(li,4,9999)
 . . . ;s hlavicka=hlavicka_odd_li,li=""
 . . . s zaznam=hlavicka
 . . . s hesla=""
 . . . ;use outf w hlavicka use OU
 . . if ($e(li,1,3)="001") d
 . . . s t3=""
 . . . if $e(li,8,9)="D0" d
 . . . . s t3=$zcvt($e(li,8,9999),"l")
 . . . . s t3=##class(Util).strswap(t3,"cz","")
 . . . if t3'="" d
 . . . . s zaznam=##class(Util).strswap(zaznam,"# @id FnoUnAuth ","# @id FnoUnAuth "_t3_$c(31)_"4")
 . . . . s xz=$p(zaznam,odd,4)
 . . . . ;s li="xxx*"_zaznam_"*xxx"
 . . . . s t4=##class(MARC).getSubTagStr(xz,"4")
 . . . . s zaznam=##class(Util).strswap(zaznam,"# @id FnoUnAuth "_t3_$c(31)_"4"_t4,"# @id FnoUnAuth "_t3)
 . . . s li=""
 . . . s t3=""
 . . . ;use outf w hlavicka use OU
 . . if ($e(li,1,3)="200") || ($e(li,1,3)="210") || ($e(li,1,3)="215") || ($e(li,1,3)="211") || ($e(li,1,3)="250") || ($e(li,1,3)="290") d   ; linky v autoritach fno...
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . s t3z=t3
 . . . if ($e(t3,1,3)="FNO") && ($e(li,1,3)="200") s t3="p"_$e(t3,4,9999)
 . . . if ($e(t3,1,3)="FNO") && ($e(li,1,2)="21") s t3="k"_$e(t3,4,9999)
 . . . ; u tagu 250 vymaz subtagu 3
 . . . s li=##class(Util).strswap(li,$c(31)_"3"_t3z,"")
 . . . if ($e(li,1,3)="250") s tag250=li
 . . . if ($e(li,1,3)="200") d
 . . . . if ($e(li,6,6)'="1") s li="200  1 "_$e(li,8,9999)
 . . if ($e(li,1,3)="750") || ($e(li,1,3)="450") || ($e(li,1,3)="415") || ($e(li,1,3)="485") d   
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . s li=##class(Util).strswap(li,$c(31)_"3"_t3,"")
 . . if ($e(li,1,3)="TEZ") d
 . . . s lix="550    "
 . . . s t3=##class(MARC).getSubTagStr(li,"3")
 . . . if ($e(t3,1,2)="D0") s t3="fno_un_auth*d0"_$e(t3,3,9999)
 . . . if t3'="" s lix=lix_$c(31)_"3"_t3
 . . . s tz=##class(MARC).getSubTagStr(li,"z")
 . . . if tz'="" s lix=lix_$c(31)_"5z"_$c(31)_"a"_tz 
 . . . s tg=##class(MARC).getSubTagStr(li,"g")
 . . . if tg'="" s lix=lix_$c(31)_"5g"_$c(31)_"a"_tg 
 . . . s th=##class(MARC).getSubTagStr(li,"h")
 . . . if th'="" s lix=lix_$c(31)_"5h"_$c(31)_"a"_th 
 . . . s tp=##class(MARC).getSubTagStr(li,"p")
 . . . if tp'="" s lix=lix_$c(31)_"5p"_$c(31)_"a"_tp 
 . . . s t3=""
 . . . s li=lix
 . . if ($e(li,1,3)="HSL") d  ; podhesla
 . . . if $l(li)<10 s li=""
 . . . s li=##class(Util).strswap(li,"|",$c(31)_"x")
 . . . s hesla=$e(li,8,9999)
 . . . s li=""
 . . if ($e(li,1,3)="VIZ") d   ; do 440 tagu
 . . . s lix="450"_$e(li,4,7)
 . . . s tz=##class(MARC).getSubTagStr(li,"z")
 . . . s tz=##class(Util).strswap(tz,", ",$c(31)_"b")
 . . . if tz'="" s lix=lix_$c(31)_"a"_tz_$c(31)_"5z"
 . . . s tk=##class(MARC).getSubTagStr(li,"k")
 . . . s tk=##class(Util).strswap(tk,", ",$c(31)_"b")
 . . . if tk'="" s lix=lix_$c(31)_"a"_tk_$c(31)_"5k"
 . . . s tp=##class(MARC).getSubTagStr(li,"p")
 . . . if tp'="" s lix=lix_$c(31)_"a"_tp_$c(31)_"5p"
 . . . s li=lix
 . . if ($e(li,1,3)="BAS") d
 . . . s li=""  
 . . if ($e(li,1,3)="LOK") d  ; pracovisko ? C06d
 . . . s tl=##class(MARC).getSubTagStr(li,"l")  
 . . . s c06=""
 . . . if tl'="" s c06="C06    "_$c(31)_"d"_tl
 . . . if c06'="" s li=c06
 . . if ($e(li,1,3)="MSH") d   
 . . . s ta=##class(MARC).getSubTagStr(li,"a")
 . . . s td=##class(MARC).getSubTagStr(li,"d")
 . . . s ti=##class(MARC).getSubTagStr(li,"i")
 . . . s c27=""
 . . . if (ta'="") || (td'="") d
 . . . . s c27="C27    "
 . . . . if ta'="" s c27=c27_$c(31)_"a"_ta
 . . . . if td'="" s c27=c27_$c(31)_"b"_td
 . . . s t300=""
 . . . if ti'="" s t300="300 1  "_$c(31)_"a"_ti
 . . . if (c27'="") || (t300'="") d
 . . . . s li=c27
 . . . . if t300'="" d
 . . . . . if li'="" s li=li_odd_t300
 . . . . . if li="" s li=t300
 . . . else  d
 . . . . s li=""
 . . ; osetrenie vsetkych pismenkovych tagov
 . . s znakk=$e(li,1,1)
 . . s statn=""
 . . f i=0:1:9 d
 . . . if i=znakk s statn="1"
 . . if (statn'="1") && (znakk'="C") d
 . . . ; zapisat do specialneho suboru
 . . . if li'="" use outf2 w odd_li use OU
 . . 
 . . 
 . . ; na konci pridat len do zaznamu
 . . if li'="" s zaznam=zaznam_odd_li
 . . ;if li'="" use outf w odd_li use OU
 . . s li=""
 . . s begin=""
 . q:$zeof'=0
 .
 . ; zpracovat jeden radek
 . ;s li=$e(li,11,9999) s $e(li,7,8)=""
 . ;s li=##class(Util).strswap(li,"   "," ") if li="" q

 use outf w zaznam
 use outf w odd_"999    "_$c(31)_"a1"_$c(31)_"bFNO"_$c(31)_"cFNO"_$c(31)_"d"_"arl-"_##class(Util).date()_odd_"###" use OU
 close inf close outf close outf2 use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="ExportPDA">
<Description><![CDATA[
31.07.09 mk; export zaznamov pre PDA na inventarizaciu<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,outf,trieda,hlavicka]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<ReturnType>%Library.String</ReturnType>
<Implementation><![CDATA[
 /// d ##class(UtilConv).ExporPDA("sldk_pult","d:\aRL\log\reports\Lms.txt","UjepUsCatH",) 	
 /// neexportuju sa vypzicane holdingy a rozpracovane 
 ; outf cesta a nazov vystupneho suboru  
 if (outf="") || (trieda="") q 
  
 ; najst vsetky holdingy   - toto bude predane ako job z creportera
 if '##class(Util).XcheckActiveList(0) q "ziaden holding"
 
 d ##class(Util).X("s &&"_trieda_" 'T02")  ; ak nie su vypozicky
 d ##class(Util).X("s &&"_trieda_" '969f")  ; ak nie je rozpracovany
  
   
 ;w "Cakaj",!
 if '##class(Util).XcheckActiveList(0) q "ziaden holding"
 d ##class(Util).X("sort !si0") 
 
 s delim="|"
 s OU=$IO
 ;s outf="Lms.txt"
 s te=$test
 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te w "failed to open the output file ('"_outf_"')!!" q
 
 ; riesenie hlavicky
 ;"MNummer|Signatur|Sigel|Titel|"
 s testh=$l(hlavicka,"|")
 
 s hlavicka=##class(User.Util).strswap(hlavicka,"|",$c(34)_"|"_$c(34))
 if testh>1
 {
  use outf w $c(34)_hlavicka_$c(34)_"|",!
 }
 ;use outf w """Barcode""|""LocDisloc""|""Signature""|""Title""|",!
 s idx="",brk=0,ex=0,bc=0,zaciatok=""
 for  
 {
	set idx=$o(^Lists($$$ListsActiveSel,$j,idx)), id=idx
	if $f(id,"*")>0 s id=$p(id,"*",2)
	;use outf w !,"hlavicka"
	q:((id="")||(brk))
	;  b
	if '##class(MARC).getDATAX(.handle,id,"T") { 
	  ;w !,"  zle id="_id
	  
	  s brk=1
	  }
	 else {
		;s ex=ex+1 
		;use outf w !,"text"
		;w !,"  dobre id="_id
        s t100b="",tT03a="",t100s="",t100ld=""
 		s t100b=##class(MARC).getTagX(.handle,"100b") ; ciar. kod
 		s tT03a=$e(##class(MARC).getTagX(.handle,"T03a"),1,30)  ; Nazov 35 znakov
 		; odstranit diakritiku
 		s s1="|"_$c(34)
        s tT03a=$tr(tT03a,s1)

 		s tT03a=##class(User.Util).diaTRU(tT03a)
 		
 		s t100s=##class(MARC).getTagX(.handle,"100s")  ; Signatura
 		s t100ld=##class(MARC).getTagX(.handle,"100l")
 		s t100ld=t100ld_" "_##class(MARC).getTagX(.handle,"100d") ; Lokacia+Dislokacia
 		
 		s t100ld=##class(User.Util).diaTRU(t100ld)
 		s t100s=##class(User.Util).diaTRU(t100s)
 		
 		;***
 		s tT02=##class(MARC).getTagX(.handle,"T02",-1)
 		s t969f=##class(MARC).getTagX(.handle,"969f")
 		s test2=""
 		if tT02'="" s test2="1"
 		if t969f'="" s test2="1"
 		if t100b="" s test2="1"
	    ;use outf w "xxx"
 		
 		; if t100b="" {s bc=bc+1,t100b="xxxxxx"_bc} 
 		; zapise sa len ak je vyplneny ciarovy kod
  		;if t100b'="" use outf w !,""""_t100b_""""_delim_""""_t100ld_""""_delim_""""_t100s_""""_delim_""""_tT03a_""""_delim
  		if testh>1
  		{
	  	   if testh>2
	  	   {	
	  	     if test2="" use outf w !,""""_t100b_""""_delim_""""_t100s_""""_delim_""""_t100ld_""""_delim_""""_tT03a_""""_delim
	  	   }
  		   else
  		   {
	  	     if test2="" use outf w !,""""_t100b_""""_delim_""""_t100s_""""_delim
	  		   
  		   }	    
  		}
  		else
  		{
  		  if zaciatok=""
  		  {
	  		if test2="" use outf w t100b  
  		  }
  		  else
  		  {	  
  		    if test2="" use outf w !,t100b
  		  }
  		}
  		s zaciatok="1"
 	 }

 }
  
 close outf use OU
 ;w "Chybajuce ciarove kody: "_bc
 ;w "Exportovanych zaznamov: "_ex
 ;w "Subor s exportom najdes "_outf
 q ""
]]></Implementation>
</Method>

<Method name="genMonAut">
<Description><![CDATA[
15.04.08 mk; globalka na spojenie autorit z bib. zaznamov s autoritami UPOL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,tag,index]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t001orig=##class(MARC).recordT001X(.handle)
 s sx=$e(t001orig,3,3)
 s idaut=""
 if tag="" q
 if index = "" q

 s tagall=##class(MARC).getTagX(.handle,tag,-1) ; dotiahnut vsetky opakovania

 s tagnew=""

 s c=$l(tagall,$c(10)) ; pocet opakovani
 
 f i=1:1:c d
 . s t001=""
 . s tagt=$p(tagall,$c(10),i) 
 . s ta=##class(MARC).getSubTagStr(tagt,"a") 
 . s tb=##class(MARC).getSubTagStr(tagt,"b") 
 . s t3=##class(MARC).getSubTagStr(tagt,"3") 
 .  
 . s hladaj=ta_" "_tb   
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s s1="[]'"_$c(34)  
 . s hladaj=$tr(hladaj,s1)
 . s hladaj=$zcvt(hladaj,"l")
 . if $l(hladaj)>90 d
 . . s hladaj=$e(hladaj,1,90) ; orezanie na 90 znakov
 . . s slovo=$l($p(hladaj," ",$l(hladaj," ")))
 . . s hladaj=$e(hladaj,1,$l(hladaj)-slovo)_".."
 . 
 . if $d(^ooDataTableI("FnoUnAuth",index,hladaj)) d
 . . s brk="",idaut=""
 . . s idaut=$o(^ooDataTableI("FnoUnAuth",index,hladaj,idaut))
 . . s t001=##class(MARC).getT001(idaut)
 . . s prac="",kraj=""
 . . if ##class(MARC).readLX(.handlea,"fno_un_auth*"_t001) d
 . . . s prac=##class(MARC).getTagX(.handlea,"C06d")
 . . . s kraj=##class(MARC).getTagX(.handlea,"C06y") 
 . . if t001'="" d
 . . . s t001=$c(31)_"3fno_un_auth*"_t001
 . . . if prac'="" s t001=t001_$c(31)_"p"_prac
 . . . if kraj'="" s t001=t001_$c(31)_"y"_kraj
 . if t3'="" d
 . . s t001=""
 . . if ##class(MARC).readLX(.handlea,t3) d
 . . . s prac=##class(MARC).getTagX(.handlea,"C06d") 
 . . . s kraj=##class(MARC).getTagX(.handlea,"C06y") 
 . . . if prac'="" s t001=t001_$c(31)_"p"_prac
 . . . if kraj'="" s t001=t001_$c(31)_"y"_kraj
 . if tagnew'="" s tagnew=tagnew_$c(10)_tagt_t001
 . if tagnew="" s tagnew=tagt_t001
 
 if tagnew'="" d ##class(MARC).setTagX(.handle,tagnew)
 


 q
]]></Implementation>
</Method>

<Method name="selAut">
<Description><![CDATA[
15.04.08 mk; globalka na spojenie autorit z bib. zaznamov s autoritami UPOL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String,tag]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
	
 ;s sy="ret1=##class(UtilConv).selAut(.handle,""700"")"	
 s t001orig=##class(MARC).recordT001X(.handle)
 s status=""
 if tag="" q

 s tagall=##class(MARC).getTagX(.handle,tag,-1) ; dotiahnut vsetky opakovania

 s tagnew=""

 s c=$l(tagall,$c(10)) ; pocet opakovani
 
 f i=1:1:c d
 . s t001=""
 . s tagt=$p(tagall,$c(10),i) 
 . s ta=##class(MARC).getSubTagStr(tagt,"a") 
 . s tb=##class(MARC).getSubTagStr(tagt,"b") 
 . s t3=##class(MARC).getSubTagStr(tagt,"3") 
 . if t3="" s status=1 

 q status
]]></Implementation>
</Method>

<Method name="gen970">
<Description><![CDATA[
15.04.08 mk; globalka na spojenie autorit z bib. zaznamov s autoritami UPOL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t001orig=##class(MARC).recordT001X(.handle)
 s sx=$e(t001orig,3,3)
 
 s t970=##class(MARC).getTagX(.handle,"970") 

 s ta=##class(MARC).getSubTagStr(t970,"a")
 s tb=##class(MARC).getSubTagStr(t970,"b") 
 s tbn=""
 
  if ta=")AAB" s tbn="B"
  if ta="AAA" s tbn="B"
  if ta="AAB" s tbn="B"
  if ta="ABC" s tbn="C"
  if ta="ABD" s tbn="C"
  if ta="ACB" s tbn="B"
  if ta="ACD" s tbn="B"
  if ta="AEC" s tbn="D"
  if ta="AED" s tbn="D"
  if ta="AEE" s tbn="D"
  if ta="AEF" s tbn="D"
  if ta="AEH" s tbn="O"
  if ta="AFG" s tbn="O"
  if ta="AFH" s tbn="O"
  if ta="AHI" s tbn="A"
  if ta="BAB" s tbn="B"
  if ta="BBB" s tbn="C"
  if ta="BCI" s tbn="B"
  if ta="BCK" s tbn="C"
  if ta="BHG" s tbn="A"
  if ta="CAH" s tbn="A"
  if ta="CCS" s tbn="J"
  if ta="CZC" s tbn="J"
  if ta="EDI" s tbn="J"
  if ta="ELZ" s tbn="A"
  if ta="OST" s tbn="O"
 
 
 if tbn'=""
 {
   if tb'=""   ; swap
   {
	 s t970=##class(Util).strswap(t970,$c(31)_"b"_tb,$c(31)_"b"_tbn)    
   }
   else   ; ak nie je 
   {
	 s t970=t970_$c(31)_"b"_tbn  
   }
 }
 
 if t970'="" d ##class(MARC).setTagX(.handle,t970)
 


 q
]]></Implementation>
</Method>

<Method name="gen701">
<Description><![CDATA[
15.04.08 mk; globalka na spojenie autorit z bib. zaznamov s autoritami UPOL<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s t001orig=##class(MARC).recordT001X(.handle)
 s sx=$e(t001orig,3,3)
 s idaut=""

 s tagall=##class(MARC).getTagX(.handle,"701",-1) ; dotiahnut vsetky opakovania

 s tagnew=""

 s c=$l(tagall,$c(10)) ; pocet opakovani
 
 f i=1:1:c d
 . s t001=""
 . s tagt=$p(tagall,$c(10),i) 
 . s t3=##class(MARC).getSubTagStr(tagt,"3") 
 .  
 . if ##class(MARC).readLX(.handlea,t3) d
 . . s prac=##class(MARC).getTagX(.handlea,"C06d")
 . . if prac'="" s tagt=##class(MARC).setSubTagStr(tagt,$c(31)_"p"_prac)
 . if tagnew'="" s tagnew=tagnew_$c(10)_tagt
 . if tagnew="" s tagnew=tagt
 
 if tagnew'="" d ##class(MARC).setTagX(.handle,tagnew)
 


 q
]]></Implementation>
</Method>

<Method name="genEdi">
<Description><![CDATA[
19.11.09 mk; globalka na upravu edicii 440<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; s sy="##class(UtilConv).genEdi(.handle)"
 s t001orig=##class(MARC).recordT001X(.handle)

 s t440all=##class(MARC).getTagX(.handle,"440",-1)  ; dotiahnut vsetky opakovania
 if t440all="" q

 s t490all=##class(MARC).getTagX(.handle,"490",-1)  ; dotiahnut vsetky opakovania
 s t830all=##class(MARC).getTagX(.handle,"830",-1)  ; dotiahnut vsetky opakovania

 s t800all=##class(MARC).getTagX(.handle,"800",-1)  ; dotiahnut vsetky opakovania
 s t810all=##class(MARC).getTagX(.handle,"810",-1)  ; dotiahnut vsetky opakovania
 s t811all=##class(MARC).getTagX(.handle,"811",-1)  ; dotiahnut vsetky opakovania

 s c=$l(t440all,$c(10)) ; pocet opakovani 440
 
 
 ;a - nazov edicie   592
 ;n - cislo casti  - 12
 ;p - nazov casti  - 107
 ;
 ;v - zvazok - 592
 ;x - ISSN serialu - 591
 ;6 - (neni)
 ;7 - link na zaznam - 3
 ;8 - (neni)
 ;
 ;w - (28) zmenit za 7
 
 
 f i=1:1:c d
 . s t440=$p(t440all,$c(10),i) 
 . s ta=##class(MARC).getSubTagStr(t440,"a")
 . s tn=##class(MARC).getSubTagStr(t440,"n")
 . s tp=##class(MARC).getSubTagStr(t440,"p") 
 . ;
 . s tv=##class(MARC).getSubTagStr(t440,"v")
 . s tx=##class(MARC).getSubTagStr(t440,"x")
 . s t6=##class(MARC).getSubTagStr(t440,"6")
 . s t8=##class(MARC).getSubTagStr(t440,"8")
 . ;
 . s tw=##class(MARC).getSubTagStr(t440,"w")
 . s t7=##class(MARC).getSubTagStr(t440,"7") 
 . if (tw'="") && (t7="") s t7=tw
 . ;
 . s t490=""
 . s t490a=ta_" "_tn_" "_tp
 . s t490a=##class(Util).trim(t490a) 
 . s t490=$c(31)_"a"_t490a
 . s t440x=t440
 . ; vymaz subtagov a, n a p z povodneho textu a pouzit zvysok na zapis do 490
 . s t440x=##class(User.Util).strswap(t440x,$c(31)_"a"_ta,"")
 . s t440x=##class(User.Util).strswap(t440x,$c(31)_"n"_tn,"")
 . s t440x=##class(User.Util).strswap(t440x,$c(31)_"p"_tp,"")
 . s t440x=##class(User.Util).strswap(t440x,$c(31)_"7"_t7,"")
 . s t440x=##class(User.Util).strswap(t440x,$c(31)_"w"_tw,"")
 . s t490=t490_$e(t440x,8,9999)
 . ;if tx'="" s t490=t490_$c(31)_"x"_tx
 . ;if tv'="" s t490=t490_$c(31)_"v"_tv
 . ;if t6'="" s t490=t490_$c(31)_"6"_t6
 . ;if t8'="" s t490=t490_$c(31)_"8"_t8
 . if t490'="" d
 . . s t490="490 1  "_t490
 . . if t490all'="" s t490all=t490all_$c(10)_t490
 . . if t490all="" s t490all=t490
 . ; riesenie do 830 ak nie je 
 . s t8xx=$e(t440,8,9999)
 . s t8xx=##class(User.Util).strswap(t8xx,$c(31)_"w",$c(31)_"7")
 . 
 . if t8xx'="" d
 . . if t7'="" d   ;ak je vazba na autoritu bud 800/810/811/830
 . . . ; nacitat autoritu podla subtagu 7
 . . . ; z nej precitat 1** tag a odrezat z neho prve 3 znaky
 . . . ; a nasledne podla tohto algoritmu pridat do 8xx tagu
 . . . s t1xx="830"
 . . . if ##class(MARC).readLX(.handlea,t7) d
 . . . . s t1xx=##class(MARC).getTagX(.handlea,"1**")
 . . . . s t1xx=$e(t1xx,1,3)
 . . . if t1xx="100" d
 . . . . s t8xx="800 1  "_t8xx
 . . . . if t800all'="" s t800all=t800all_$c(10)_t8xx
 . . . . if t800all="" s t800all=t8xx
 . . . if t1xx="110" d
 . . . . s t8xx="810 2  "_t8xx
 . . . . if t810all'="" s t810all=t810all_$c(10)_t8xx
 . . . . if t810all="" s t810all=t8xx
 . . . if t1xx="111" d
 . . . . s t8xx="811 2  "_t8xx
 . . . . if t811all'="" s t811all=t811all_$c(10)_t8xx
 . . . . if t811all="" s t811all=t8xx
 . . . if t1xx="130" d
 . . . . s t8xx="830  0 "_t8xx
 . . . . if t830all'="" s t830all=t830all_$c(10)_t8xx
 . . . . if t830all="" s t830all=t8xx
 . . else  d ; ak nie je zostava v 830
 . . . s t8xx="830  0 "_t8xx
 . . . if t830all'="" s t830all=t830all_$c(10)_t8xx
 . . . if t830all="" s t830all=t8xx
 
 
 if t490all'="" d ##class(MARC).setTagX(.handle,t490all)
 if t800all'="" d ##class(MARC).setTagX(.handle,t800all) 
 if t810all'="" d ##class(MARC).setTagX(.handle,t810all)
 if t811all'="" d ##class(MARC).setTagX(.handle,t811all)
 if t830all'="" d ##class(MARC).setTagX(.handle,t830all)
 d ##class(MARC).delTagX(.handle,"440")
 q
]]></Implementation>
</Method>

<Method name="convPlan">
<Description><![CDATA[
24.11.09 mk prevod vyhodnotenia uloh planu do prijatelnejsieho formatu<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd
 
 s odd=$c(13)_$c(10)
 s brk=0,nkrec="",li=""
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . if (li'="") d
 . . if $f(li,"r?m?r")>0 d
 . . . ;s li=##class(Util).strswap(li,kodold,kod)
 . . . if li'="" use outf w odd_li use OU
 . . s li=""
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="convPlan2">
<Description><![CDATA[
25.11.09 mk prevod vyhodnotenia uloh planu do prijatelnejsieho formatu<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd
 
 s odd=$c(13)_$c(10)
 s brk=0,nkrec="",li=""
 n cav,cbvk,eu,lix,lt,mkp,nfa,nsptn,pon,ruz,sfu,sldk,sllk,sng,spu,ujep,uhkt,umb,upol,us,vy,xy
 
 s cav="",cbvk="",eu="",lix="",lt="",mkp="",nfa="",nsptn="",pon="",ruz="",sfu="",sldk="",sllk="",sng="",spu="",ujep="",uhkt="",umb="",upol="",us="",vy=""
 s xy=""
 
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . if (li'="") d  ; ak sa precital riadok
 . . ; skladanie jedneho noveho riadku
 . . if nLine=1 use outf w odd_"uloha;pocet;cav;cbvk;eu;li;lt;mkp;nfa;nsptn;pon;ruz;sfu;sldk;sllk;sng;spu;ujep;uhkt;umb;upol;us;vy;xy"
 . . if $e(li,1,2)="cs" d   ; ak je uz riadok na zapis
 . . . s xxx=cav_";"_cbvk_";"_eu_";"_lix_";"_lt_";"_mkp_";"_nfa_";"_nsptn_";"_pon_";"_ruz_";"_sfu_";"_sldk_";"_sllk_";"_sng_";"_spu_";"_ujep_";"_uhkt_";"_umb_";"_upol_";"_us_";"_vy_";"_xy
 . . . s li=##class(Util).trim(li)
 . . . s li=##class(User.Util).strswap(li," ",";")
 . . . s li=##class(User.Util).strswap(li,$c(9),"")
 . . . s xxx=##class(User.Util).strswap(xxx,$c(9),"") 
 . . . use outf w odd_li_";"_xxx use OU
 . . . s cav="",cbvk="",eu="",lix="",lt="",mkp="",nfa="",nsptn="",pon="",ruz="",sfu="",sldk="",sllk="",sng="",spu="",ujep="",uhkt="",umb="",upol="",us="",vy="",xy=""
 . . else  d   ; riadok na vyskladanie do test premennej
 . . . s li=##class(Util).trim(li)
 . . . s t1=$p(li," ",1)
 . . . s t1=$zcvt(t1,"l")
 . . . s t2=$p(li," ",2)
 . . . s sta=""
 . . . if t1="cav" s cav=t2,sta=1
 . . . if t1="cbvk" s cbvk=t2,sta=1
 . . . if t1="eu" s eu=t2,sta=1
 . . . if t1="li" s lix=t2,sta=1
 . . . if t1="lt" s lt=t2,sta=1
 . . . if t1="mkp" s mkp=t2,sta=1
 . . . if t1="nfa" s nfa=t2,sta=1
 . . . if t1="nsptn" s nsptn=t2,sta=1
 . . . if t1="pon" s pon=t2,sta=1
 . . . if t1="ruz" s ruz=t2,sta=1
 . . . if t1="sfu" s sfu=t2,sta=1
 . . . if t1="sldk" s sldk=t2,sta=1
 . . . if t1="sllk" s sllk=t2,sta=1
 . . . if t1="sng" s sng=t2,sta=1
 . . . if t1="spu" s spu=t2,sta=1
 . . . if t1="ujep" s ujep=t2,sta=1
 . . . if t1="uhkt" s uhkt=t2,sta=1
 . . . if t1="umb" s umb=t2,sta=1
 . . . if t1="upol" s upol=t2,sta=1
 . . . if t1="us" s us=t2,sta=1
 . . . if t1="vy" s vy=t2,sta=1
 . . . if sta="" s xy=t2
 . . s li=""
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="sel008">
<Description>
15.12.09</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
	
 ;s sy="ret1=##class(UtilConv).sel008(.handle)"	
 s t001orig=##class(MARC).recordT001X(.handle)
 s status=""

 s t008=##class(MARC).getTagX(.handle,"008") ; dotiahnut vsetky opakovania
 w !,"*"_t008_"*"

 
 s t3=$e(t008,15,18) 
 if t3="    " s status=1 

 q status
]]></Implementation>
</Method>

<Method name="gen008">
<Description>
15.12.09</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
	
 s t001orig=##class(MARC).recordT001X(.handle)

 s t008=##class(MARC).getTagX(.handle,"008") ; dotiahnut vsetky opakovania
 s t260c=##class(MARC).getTagX(.handle,"260c")
 w !,"*"_t008_"*"

 
 s t3=$e(t008,15,18) 
 if t3="    " 
 {
    s s1="()[] .?!-cp"
    s t260c=$tr(t260c,s1)
    if ($l(t260c)=4) && ($isvalidnum(t260c))
    {
	  s t008=$e(t008,1,14)_t260c_$e(t008,19,9999)  
	  d ##class(MARC).setTagX(.handle,t008)
    }    
     
 }
 
 w !,"*"_t008_"*"

 q
]]></Implementation>
</Method>

<Method name="genBar">
<Description>
18.12.09</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
	
 s t001orig=##class(MARC).recordT001X(.handle)

 s t100=##class(MARC).getTagX(.handle,"100") 
 s t100b=##class(MARC).getSubTagStr(t100,"b")
 
 s t100bnew=""

 if (t100b'="") && ($f(t100b,"/")>0)
 {
    s prva=$p(t100b,"/",1) 
    s druha=$p(t100b,"/",2) 
    s t100bnew="3287"_druha
    s prva=##class(Util).leadingZero(prva,4)
    s t100bnew=t100bnew_prva
    s t100=##class(User.Util).strswap(t100,$c(31)_"b"_t100b,,$c(31)_"b"_t100bnew)
	d ##class(MARC).setTagX(.handle,t100)

 }


 q
]]></Implementation>
</Method>

<Method name="genAut5xx7">
<Description><![CDATA[
02.06.06 mk; globalka na spojenie geografickych autorit 551<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; s sy="##class(UtilConv).genAut5xx7(.handle)"

 s t5xxall=##class(MARC).getTagX(.handle,"5**",-1)  ; dotiahnut vsetky opakovania

 if t5xxall="" q
 s t5xxnew=""

 s c=$l(t5xxall,$c(10)) ; pocet opakovani
 
 
 f i=1:1:c d
 . s t001=""
 . s t5xx=$p(t5xxall,$c(10),i) 
 . s t7=##class(MARC).getSubTagStr(t5xx,"7") 
 . s hladaj=$p(t7,"*",2)  
 . s prva=$p(t7,"*",1)   
 . if hladaj="" s hladaj=t7
 . s hladaj=" "_##class(Util).trim(hladaj) 
 . s hladaj=$zcvt(hladaj,"l")
 . if $d(^ooDataTableI("MuzUsAuth","t001a",hladaj)) d
 . . s idaut=$o(^ooDataTableI("MuzUsAuth","t001a",hladaj,""))
 . . if idaut'="" d  
 . . . s t001=##class(MARC).getT001(idaut)
 . . . if t001'="" s t001="muz_us_auth*"_t001
 . if (t001'="") && ($e(prva,1,11)'="muz_us_auth") s t5xx=##class(User.Util).strswap(t5xx,$c(31)_"7"_t7,$c(31)_"7"_t001)
 . if t5xxnew'="" s t5xxnew=t5xxnew_$c(10)_t5xx
 . if t5xxnew="" s t5xxnew=t5xx
 
 
 if t5xxnew'="" d ##class(MARC).setTagX(.handle,t5xxnew)
 q
]]></Implementation>
</Method>

<Method name="gen440xv">
<Description><![CDATA[
03.01.10 mk; globalka na upravu edicii 440<br>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec><![CDATA[&handle:%Library.String]]></FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; s sy="##class(UtilConv).gen440xv(.handle)"
 s t001orig=##class(MARC).recordT001X(.handle)

 s t440all=##class(MARC).getTagX(.handle,"440",-1)  ; dotiahnut vsetky opakovania
 if t440all="" q


 s c=$l(t440all,$c(10)) ; pocet opakovani 440
 
 s t440new=""
 
 ;a - nazov edicie   592
 ;n - cislo casti  - 12
 ;p - nazov casti  - 107
 ;v - zvazok - 592
 ;x - ISSN serialu - 591
 ;7 - link na zaznam - 3
  
 ;Spravne poradi podpoli je:
 ;a.n,p,x ;v  anebo a.n,x ;v anebo a,x
 ;pred polem \"v\" je \"mezera;\" a pred x je \",\" bez mezery. 
  
  
 f i=1:1:c d
 . s t440=$p(t440all,$c(10),i) 
 . s t440n=""
 . s ta=##class(MARC).getSubTagStr(t440,"a")
 . s tn=##class(MARC).getSubTagStr(t440,"n")
 . s tp=##class(MARC).getSubTagStr(t440,"p") 
 . s tv=##class(MARC).getSubTagStr(t440,"v")
 . s tx=##class(MARC).getSubTagStr(t440,"x")
 . s t7=##class(MARC).getSubTagStr(t440,"7")
 . if $e(ta,$l(ta)-1,$l(ta))=" ;" s ta=$e(ta,1,$l(ta)-2)
 . if $e(ta,$l(ta),$l(ta))="," s ta=$e(ta,1,$l(ta)-1)
 . if $e(ta,$l(ta),$l(ta))="." s ta=$e(ta,1,$l(ta)-1)
 . ;;;;
 . if $e(tn,$l(tn)-1,$l(tn))=" ;" s tn=$e(tn,1,$l(tn)-2)
 . if $e(tn,$l(tn),$l(tn))="," s tn=$e(tn,1,$l(tn)-1)
 . if $e(tn,$l(tn),$l(tn))="." s tn=$e(tn,1,$l(tn)-1)
 . ;;;
 . if $e(tp,$l(tp)-1,$l(tp))=" ;" s tp=$e(tp,1,$l(tp)-2)
 . if $e(tp,$l(tp),$l(tp))="," s tp=$e(tp,1,$l(tp)-1)
 . if $e(tp,$l(tp),$l(tp))="." s tp=$e(tp,1,$l(tp)-1)
 . ;;;
 . if $e(tx,$l(tx)-1,$l(tx))=" ;" s tx=$e(tx,1,$l(tx)-2)
 . if $e(tx,$l(tx),$l(tx))="," s tx=$e(tx,1,$l(tx)-1)
 . if $e(tx,$l(tx),$l(tx))="." s tx=$e(tx,1,$l(tx)-1)
 . ;;;;;
 . if $e(tv,$l(tv)-1,$l(tv))=" ;" s tv=$e(tv,1,$l(tv)-2)
 . if $e(tv,$l(tv),$l(tv))="," s tv=$e(tv,1,$l(tv)-1)
 . if $e(tv,$l(tv),$l(tv))="." s tv=$e(tv,1,$l(tv)-1)
 . s t440n=$e(t440,1,7)
 . if ta'="" s t440n=t440n_$c(31)_"a"_ta
 . if tn'="" s t440n=t440n_"."_$c(31)_"n"_tn
 . s oddel="."
 . if tn'="" s oddel=","
 . if tp'="" s t440n=t440n_oddel_$c(31)_"p"_tp
 . if tx'="" s t440n=t440n_","_$c(31)_"x"_tx
 . if tv'="" s t440n=t440n_" ;"_$c(31)_"v"_tv
 . if t7'="" s t440n=t440n_$c(31)_"7"_t7
 . if t440n'="" d
 . . if t440new'="" s t440new=t440new_$c(10)_t440n
 . . if t440new="" s t440new=t440n
 
 
 if t440new'="" d ##class(MARC).setTagX(.handle,t440new)
 q
]]></Implementation>
</Method>

<Method name="listTagCount">
<Description><![CDATA[
<pre> Metoda vypisuje cetnost vyskytu tagu a subtagu v aktivnim select listu

Parametre a ich popis:
 jeden parametr s hodnotou "tag" nebo "subtag"
 tag    vypise cetnost tagu
 subtag vypise cetnost subtagu
Metoda pracuje s aktivnym select listom. 

  uplny format prikazu (pozri aj help; help sa vypise prikazom "ltc" bez parametrov):
  ltc [tag|subtag]         -- list number of tags or subtags occurrences for active select

11.02.10 lp; pridane zapocitani Txx tagu podle nadrazeneho parametru "eval_txx"
10.02.10 mj; oprava formatu vystupu a pocetni chyby v listTagCount
08.02.10 mj; zalozeni nove funkce prehlad poctu vyskytov tagov a subtagov
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>par=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s prog="listTagCount: "
 w !," prg ",prog," started at ",$$$ShowDTime
 ; nacteni parametru
 s par=##class(Util).trim(par)
 ;w !," "_par

 ; 11.02.10 lp; pridane zapocitani Txx tagu podle nadrazeneho parametru "eval_txx"
 s sTxxOption=""
 if ##class(Util).getParamQ("eval_txx") s sTxxOption="T"
 
 if ((par="tag") || (par="subtag"))
 {
	; zpracovani zaznamu
	k lTmpx($j)
	w !," "
	s idx=""
	for  
	{
		s idx=$o(^Lists($$$ListsActiveSel,$j,idx))
		s iLcount=$i(iLcount)
		if iLcount=500 ; vypis po 500 zaznamech ze jeste zijem
		{
			w "." 
			s iLcount=0 
		}
		if idx="" q
		if '##class(MARC).getDATAX(.handle,idx,sTxxOption) continue
		
		for i=1:1:9999 
		{
			s sLine=##class(MARC).getLineX(.handle,i)
			if sLine="" q
			s sTag=$e(sLine,1,3)
			; pomocny znak pro zatrideni nenumerickych tagu az za numericke
			if (+sTag)||(sTag="000") {s cSort=" "} else {s cSort="%"}
			; pocet opakovani
			s c=$l(sLine,$c(31))
			if (par="subtag") 
			{
				; rozparsujeme seznam subtagu oddelenych $c(31)
				; zaciname od 2 tim preskocime tag a indikatory
				f y=2:1:c
				{
					s sSubTag=$p(sLine,$c(31),y)
					; 10.02.10 mj; oprava formatovani
				; vezmeme tag a subtag a povysime hodnotu
					s sx=$i(lTmpx($j,cSort_sTag_"-"_$e(sSubTag,1,1))) 
				}
			} else {
				; 10.02.10 mj; oprava pocetni chyby
				if sTag="" continue
				s sx=$i(lTmpx($j,cSort_sTag))
			}
		}
	}

	; Vypis hodnot
	if (par="subtag") {w !,"-------- Vypis cetnosti tagu a subtagu-------------------" }
	if (par="tag")    {w !,"-------- Vypis cetnosti tagu ----------------------------" }
	if (par="subtag") {w !," Subtag         cetnost" }
	if (par="tag" )   {w !," Tag            cetnost" }
	w !,"---------------------------------------------------------"
	s idx=""
	for
	{
		s idx=$o(lTmpx($j,idx))
		q:(idx="")
		; pomocny tridici znak ve vypisu nahradit mezerou
		w !,$tr(idx,"%"," ")_"            "_$g(lTmpx($j,idx))
	}
	w !,"---------------------------------------------------------"
	w !," prg ",prog," stop at ",$$$ShowDTime
 }
 else
 {
	w !," "
	; vypsat help
	w !,"ltc [tag|subtag]           -- list count tag or subtag frequency"
	w !,"ltc tag                    -- vypise pocet vyskytu jednotlivych tagu"
	w !,"ltc subtag                 -- vypise pocet vyskytu jednotlivych subtagu"
 }
 q
]]></Implementation>
</Method>

<Method name="convCit">
<Description><![CDATA[
<pre>
12.02.10 mk; nova konverzia US citatelia z xls riadkoveho formatu,
             zo suboru do suboru
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; d ##class(UtilConv).convCit("f:\us\zam.csv","f:\us\cit.txt")
 s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"
 
 

 s odd=$c(13)_$c(10)
 s kod=1
 s li="",brk=""
 s x100="",x400=""
 s zaznam=""
 s x100ia="",x100ib="",x100aa="",x100ab="",x100v="",x100f="",x100g="",x100e=""
 
 for nLine=1:1 q:brk  d
 . use inf read li if $zeof'=0 s brk=1
 . ; nacitany 1 riadok
 . s li=##class(Util).strswap(li,$c(34),"")
 . ;uprava jedneho riadku
 . if (li'="") d  ; spracovat jeden zaznam
 . . s zaznam=""
 . . s x100ia=$p(li,";",2)
 . . s x100ib=$p(li,";",3)
 . . s x100aa=$p(li,";",4)
 . . s x100ab=$p(li,";",5)
 . . s x100v=$p(li,";",6)
 . . s x100k=$p(li,";",7)
 . . s x100f=$p(li,";",8)
 . . s x100g=$p(li,";",9)
 . . s x100e=$p(li,";",10)
 . . ; zapis zaznamu
 . . s poc=kod
 . . s dlzka=$l(kod) ; pocet znakov kodu
 . . s dlzka=7-dlzka
 . . f i=1:1:dlzka d
 . . . s poc="0"_poc
 . . s kod=kod+1
 . . s x100=""
 . . s x400=""
 . . s x100a=""
 . . if x100aa'="" s x100a=x100aa 
 . . if x100ab'="" s x100a=x100a_" "_x100ab
 . . s x100i=""
 . . if x100ia'="" s x100i=x100ia 
 . . if x100ib'="" s x100i=x100i_" "_x100ib
 . . if x100a'="" s x100=x100_$c(31)_"a"_x100a 
 . . s x100i=##class(Util).trim(x100i)
 . . if x100i'="" s x100=x100_$c(31)_"i"_x100i
 . . if x100v'="" s x100=x100_$c(31)_"v"_x100v 
 . . if x100k'="" s x100=x100_$c(31)_"k"_x100k
 . . s x100=x100_$c(31)_"tA"
 . . s x100=x100_$c(31)_"b." 
 . . if x100g'="" d
 . . . if x100f'="" d
 . . . . s x100f=x100f_", "_x100g
 . . . else  d
 . . . . s x100f=x100g
 . . if x100f'="" s x100=x100_$c(31)_"f"_x100f
 . . if x100e'="" s x100=x100_$c(31)_"e"_x100e
 . . s x400=$c(31)_"d"_##class(Util).date()_$c(31)_"c365"_$c(31)_"r1"_$c(31)_"yU1-,U2-P,U-P,R-P"_$c(31)_"z"_##class(Util).date() 
 . . s zaznam=zaznam_odd_"# @id UsIsUser "_"c"_poc 
 . . s zaznam=zaznam_odd_"100    "_x100
 . . s zaznam=zaznam_odd_"400    "_x400
 . . s zaznam=zaznam_odd_"C99    "_$c(31)_"dDFLT_ISUSER"
 . . s zaznam=zaznam_odd_"999    "_$c(31)_"a1"_$c(31)_"bUS"_$c(31)_"cUS"_$c(31)_"d"_"arl-"_##class(Util).date()
 . . s zaznam=zaznam_odd_"###" 
 . . if li'="" use outf w zaznam use OU
 . . s zaznam=""
 . . s li=""
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="trx2printRD">
<Description><![CDATA[
<pre>
08.07.10 lp; 
Globalka pro naplneni tiskove fronty ^ChangeLog("print-RD") daty z otevrenych
trx RD vyselektovanych v ActivListu.
Da se pouzit v pripade, ze z nejakeho duvodu selhal tisk listku a fronta byla mezitim
vyprazdena.
Funkce nema parametry, jako vstup bere vysledek predchoziho selektu, navratova hodnota
je bud prazdny string (=OK) nebo chyba

Postup:
1. vyselektovat vsechny trx drzenych rezervaci, ktere byly prideleny v danem dni, napr.
> d ^X("txx")
> d ^X("s CbvkTrx trxto = rd")
> d ^X("s && T03o = 20100708")
pripadne jeste omezit na konkretni pobocku
> d ^X("s && 100c = JVK-RO")
2. spustit metodu trx2printRD() 
> s ret=##class(UtilConv).trx2printRD()
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
 s prg="trx2printRD: "
 w !," prg ",prg," started at ",$$$ShowDTime

 s id2="", err=""
 ; projdeme vybrane trx a budeme z nich skladat polozky pro naplneni tiskove fronty print-RD
 for {
   s id2=$o(^$$$ListsG($$$ListsActiveSel,$j,id2)),id=id2
   q:((id2="")||(err'=""))
   
   if $f(id,"*") s id=$p(id,"*",2) ;* odstranit triediaci prefix
   ;w !,"processing id="_id2
   s t001=##class(MARC).getT001(id)
   s tclass=##class(MARC).getCLASS(id)
   s sInstallPrefix=##class(Util).getClassPrefixParam(tclass)
   if '##class(MARC).getDATAX(.handle,id,"T") s err="ERRX001#"_tclass_"/"_t001  w !,prg_err q
   
   ; Result format sRetInfo (na koho se posunula RD):
   ;    "X#jmeno_ctenare#barcode_ctenare#id_ctenare#id_holdingu#sig#barcode_hold#autor#nazev#datum_rez_do[#pobocka_vyzvednuti]"
   ; Pozor! Polozka "datum_rez_do" na 10. pozici je pevne svazana s logikou v metode
   ; ReportBorB.repCirAckResBatch() - odstranovani starych polozek podle datumu. 
   ; Nesmi se posunout na jinou pozici.
   s sSection=##class(MARC).getTagX(.handle,"100c")
   s sRetInfo="X#"_##class(SPBorrow).fixUnicode(##class(MARC).getTagX(.handle,"T02a"))
   s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode(##class(MARC).getTagX(.handle,"T02j"))
   s sRetInfo=sRetInfo_"#"_##class(MARC).getTagX(.handle,"100a")
   s sRetInfo=sRetInfo_"#"_##class(MARC).getTagX(.handle,"100b")
   s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode(##class(MARC).getTagX(.handle,"T02c"))
   s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode(##class(MARC).getTagX(.handle,"T02h"))
   s sT02b=##class(MARC).getTagX(.handle,"T02b")
   s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode($p(sT02b,"/",2))
   s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode($p(sT02b,"/",1))
   ; datum rez. do
   s sRetInfo=sRetInfo_"#"_##class(ReportCommon).swapFmtDate($tr(##class(MARC).getTagX(.handle,"T03r"),"*."))
   
   ; pri zapnutem "moveHoldings" pridat informaci o pobocce, na ktere
   ; ma byt RD pripravena k vyzvednuti
   s bMoveH=($$$ISMOD("moveHoldings"))
   if bMoveH
   {
     ; pobocka k vyzvednuti je bud samostatne v TRX_100g, pokud neni, vezmeme obsah 100c
     s sDestSection=##class(MARC).getTagX(.handle,"100g")
     if sDestSection="" s sDestSection=##class(MARC).getTagX(.handle,"100c")
     s sRetInfo=sRetInfo_"#"_##class(SPBorrow).fixUnicode(sDestSection)
   }

   ; ulozit do uzlu ^ChangeLog("print-RD",ipref,i)=sSection_$c(31)_sRetInfo
   s nNode=$i(^$$$ChangeLogG("print-RD",sInstallPrefix))
   w !,prg_"storing print data to ^ChangeLog(""print-RD"","""_sInstallPrefix_""","_nNode_")="_sSection_"$c(31)"_sRetInfo
   s ^$$$ChangeLogG("print-RD",sInstallPrefix,nNode)=sSection_$$$ChangeLogDEL_sRetInfo
   
 }

 w !," prg ",prg," stop at ",$$$ShowDTime
 q err
]]></Implementation>
</Method>

<Method name="isoUNtoMarcSPU">
<Description><![CDATA[
<pre>
28.07.11 jj zmena zpusobu zpracovani - nebrat za bernou minci uvadenou delku zaznamu, 
            nybrz znaky oddelujici jednotlive zaznamy
19.08.10 mk nova konverzia z UN ISO2709 do riadkoveho formatu 
            zo suboru do suboru pre konverziu EZP SPU  
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="SpuUnCat"</FormalSpec>
<Implementation><![CDATA[
 ; d ##class(UtilConv).isoUNtoMarcSPU("f:\spu\ex.txt","f:\spu\ex7.txt","SpuUnCat")	
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; oddelovac tagov standartne $c(30)
 ; oddelovac subtagov standartne $c(31)
 ; oddelovac zaznamu $c(30)_$c(29)
 n odTag, odSubTag
 s odTag = $c(30)	
 s odSubTag = $c(31)	
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,tag,od,kolko,pocet
 n ciselna,datova,riadok
 
 s brk=0,li="",odd=$c(13)_$c(10)
 n poz,dlzka,j,zac, ttt, t200, tt2, prvy, posledny
 s poz=0 ; pozicia na ktoru sa ma nastavit
 s dlzka=0  ;urcenie dlzky kazdeho zaznamu
 s j = 0, zac=1, ttt=0, t200="", ttt2=0, prvy="",posledny="", posledny2=""
 n dlzkaOld,zaznam
  
 for nLine=1:1 q:brk  d
 . ; nacitam dlzku nasledujuceho zaznamu
 . ; nacteni puvodni delky zaznamu - dlzkaOld - ponechano pro urceni rozsahu dat, 
 . ; ktere se maji nacist
 . use inf:poz read dlzkaOld#5 if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . s dlzka=+dlzkaOld+100
 . use inf:poz read zaznam#dlzka if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . ; 04.08.11 jj
 . ; if (poz=0) s brk=1
 . s dlzka=$f(zaznam,$c(30)_$c(29))-1
 . if (dlzka>0) && (poz'="") d
 . . ; podla dlzky zaznamu precitat jeden zaznam
 . . use inf:(poz+24) read li#(dlzka-24) if $zeof'=0 s brk=1
 . . s poz = poz + dlzka  ; posunutie pocitadla o cely predchadzajuci zaznam
 . . ; nacitany 1 zaznam
 . . if (li'="") d     ; ak existuje zaznam rozdelime na casti
 . . . s ttt=0, t200 = "",lic="",t856="",fakulta="",zaznam="",rozpr=""
 . . . ; na zaciatku zapiseme zaciatok zaznamu
 . . . s prvy="",posledny="", posledny2=""
 . . . ;use outf w "# @id "_trieda_" new"_odd_"000    00000nam  22        450"_odd use OU
 . . . s hla="# @id "_trieda_" new"_odd_"000    00000nam  22        450" use OU
 . . . s ciselna = $p(li,odTag,1) ; prva ciselna cast  
 . . . s datova = $e(li,$l(ciselna)+1,99999) ; datova cast nasleduje za ciselnou
 . . . s pocet=$l(ciselna)/12     ; pocet tagov
 . . . ; riesenie pre tag 856
 . . . if $f(datova,"ulicencia1")>0 s lic="1" 
 . . . if $f(datova,"ulicencia2")>0 s lic="2" 
 . . . if $f(datova,"ulicencia3")>0 s lic="3" 
 . . . if $f(datova,"ulicencia4")>0 s lic="4" 
 . . . if $f(datova,"ulicencia5")>0 s lic="5" 
 . . . for j=1:1:pocet d
 . . . . s rada = $e(ciselna,zac,j*12)
 . . . . s zac = zac + 12
 . . . . s tag=$e(rada,1,3)  ; cislo tagu
 . . . . s kolko=$e(rada,4,7) ; kolko znakov nacitat
 . . . . s od=$e(rada,8,12)  ; od ktoreho znaku citat
 . . . . ; vyber hodnot z datovej premennej
 . . . . s riadok=$e(datova,od+2,od+kolko)
 . . . . s riadok=##class(Util).strswap(riadok,odSubTag,$c(31))
 . . . . if tag'="" d
 . . . . . if tag="001" d
 . . . . . . s kod = $e(riadok,1,9999)
 . . . . . . s hla=##class(Util).strswap(hla,"SpuUnCat new","SpuUnCat e"_kod)
 . . . . . . ;use outf w hla
 . . . . . . s zaznam=odd_hla
 . . . . . . s riadok="e"_riadok
 . . . . . if tag="992" d
 . . . . . . s tag="970"
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a",$c(31)_"b")
 . . . . . if tag="856" d
 . . . . . . s riadok=##class(Util).strswap(riadok,"\","/")
 . . . . . . ;if lic="1" s riadok=##class(Util).strswap(riadok,$c(31)_"u",$c(31)_"u"_"http://crzp.uniag.sk")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"u",$c(31)_"u"_"http://crzp.uniag.sk")
 . . . . . . ; odstranit nepotrebne subtagy
 . . . . . . s ti=""
 . . . . . . if lic="2" s ti="ix"
 . . . . . . if lic="3" s ti="ix"
 . . . . . . if lic="4" s ti="ix"
 . . . . . . if lic="5" s ti="ix"
 . . . . . . if (ti'="") && ($l(ti)>1) s riadok=riadok_$c(31)_ti
 . . . . . if tag="210" d
 . . . . . . s ta=##class(MARC).getSubTagStr(riadok,"a")
 . . . . . . s td=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a"_ta,$c(31)_"a[S.l.")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"d"_td,"")
 . . . . . . s riadok=riadok_$c(31)_"cs.n.]"
 . . . . . . s riadok=riadok_$c(31)_"d"_td
 . . . . . if tag="330" d 
 . . . . . . s ta=##class(MARC).getSubTagStr(riadok,"a")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a"_ta,$c(31)_"aAutorskÃ½ abstrakt: "_ta)
 . . . . . if tag="610" d 
 . . . . . . s tag="964"
 . . . . . . s riadok=$e(riadok,4,9999)
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a",odd_"964    "_$c(31)_"a")
 . . . . . . s riadok="  "_$c(31)_riadok
 . . . . . if tag="RID" d 
 . . . . . . s tag="C99"
 . . . . . . s riadok=riadok_$c(31)_"dDFLT_UN_CAT8"
 . . . . . if tag="EZP" d  ; neprenasat
 . . . . . . s ts=##class(MARC).getSubTagStr(riadok,"s")
 . . . . . . if $e(ts,1,11)="rozpracovan" s rozpr="1"
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="974" d  ; neprenasat cislo studenta
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="004" d  ; neprenasat 
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="CHK" d  ; neprenasat protokol
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="985" d
 . . . . . . s fakulta=##class(MARC).getSubTagStr(riadok,"f") ; cislo kfakulty / k - kod katedry
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="LIC" d  ; neprenasat
 . . . . . . s datum=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="200" d 
 . . . . . . s riadok="1 "_$e(riadok,3,9999)
 . . . . . if tag="101" d 
 . . . . . . s riadok="0 "_$e(riadok,3,9999)
 . . . . . if tag="541" d 
 . . . . . . s riadok="1 "_$e(riadok,3,9999)
 . . . . . if $e(tag,1,2)="70" d 
 . . . . . . s t3=##class(MARC).getSubTagStr(riadok,"3")
 . . . . . . s tx=##class(MARC).getSubTagStr(riadok,"x")
 . . . . . . ;use outf w "*"_riadok_"*" use OU
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"3"_t3,"")
 . . . . . . ;if tx'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"x")
 . . . . . . s riadok=" 1"_$e(riadok,3,9999)
 . . . . . if (tag="910") && ($l(riadok)=4) s tag = ""
 . . . . . if tag'="" d
 . . . . . . if $e(tag,1,2)="00" d  
 . . . . . . . ;use outf w tag_"    "_riadok_odd use OU
 . . . . . . . s zaznam=zaznam_odd_tag_"    "_riadok
 . . . . . . if $e(tag,1,2)'="00" d 
 . . . . . . . if tag="856" d
 . . . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . . . s riadok=tag_" "_riadok
 . . . . . . . . ; osetrit odstranenie niektorych subtagov
 . . . . . . . . ;s tr=##class(MARC).getSubTagStr(riadok,"r")
 . . . . . . . . ;if tr'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"r")
 . . . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"r",$c(31)_"z")
 . . . . . . . . s td=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . . . if td'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"d")
 . . . . . . . . s tv=##class(MARC).getSubTagStr(riadok,"v")
 . . . . . . . . if tv'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"v")
 . . . . . . . . ; riesenie ziskania len posledneho opakovania subtagu u
 . . . . . . . . s tu=##class(MARC).getSubTagStr(riadok,"u",-1)
 . . . . . . . . s tz=##class(MARC).getSubTagStr(riadok,"z",-1)
 . . . . . . . . s ti=##class(MARC).getSubTagStr(riadok,"i")
 . . . . . . . . s pocetu=$l(tu,$c(10))
 . . . . . . . . s pocetz=$l(tz,$c(10))
 . . . . . . . . if pocetu>1 d
 . . . . . . . . . s riadok="856    "_$c(31)_"u"_$p(tu,$c(10),pocetu)
 . . . . . . . . . if tz'="" s riadok=riadok_$c(31)_"z"_$p(tz,$c(10),pocetz)
 . . . . . . . . . if ti'="" s riadok=riadok_$c(31)_"i"_ti
 . . . . . . . . . ;;; 
 . . . . . . . . s t856=t856_odd_riadok
 . . . . . . . . ;use outf w zapis use OU
 . . . . . . . else  d
 . . . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . . . ;s zapis=tag_" "_riadok_odd
 . . . . . . . . s zapis=tag_" "_riadok
 . . . . . . . . if $e(tag,1,2)="70" d 
 . . . . . . . . . s tx=##class(MARC).getSubTagStr(zapis,"x")
 . . . . . . . . . if tx'="" s zapis=##class(MARC).setSubTagStr(zapis,$c(31)_"x")
 . . . . . . . . ;use outf w zapis use OU
 . . . . . . . . s zaznam=zaznam_odd_zapis
 . . . . s odd=$c(13)_$c(10) 
 . . . ; 2011 - prebiraji se vsechny fakulty
 . . . ; na konci zapiseme ukoncenie zaznamu
 . . . ; if ((fakulta="104000") || (fakulta="105000")) && (rozpr="") d  
 . . . if (rozpr="") d  
 . . . . use outf w zaznam use OU
 . . . . if t856'="" d
 . . . . . s ti=""
 . . . . . if lic="2" s ti="i"_datum
 . . . . . if lic="3" s ti="iO"_datum
 . . . . . if lic="4" s ti="iO"
 . . . . . if lic="5" s ti="iN"
 . . . . . s t856=##class(Util).strswap(t856,$c(31)_"ix",$c(31)_ti)
 . . . . . use outf w t856 use OU
 . . . . use outf w odd_"969    "_$c(31)_"fD"
 . . . . use outf w odd_"###" use OU
 . . s li="",zac=1
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="isoUNtoMarcSPUOrig">
<Description><![CDATA[
<pre>
19.08.10 mk nova konverzia z UN ISO2709 do riadkoveho formatu 
            zo suboru do suboru pre konverziu EZP SPU  
</pre>]]></Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String="",trieda:%String="SpuUnCat"</FormalSpec>
<Implementation><![CDATA[
 ; d ##class(UtilConv).isoUNtoMarcSPU("f:\spu\ex.txt","f:\spu\ex7.txt","SpuUnCat")	
 ; parametre
 ; vstupny subor
 ; vystupny subor
 ; oddelovac tagov standartne $c(30)
 ; oddelovac subtagov standartne $c(31)
 n odTag, odSubTag
 s odTag = $c(30)	
 s odSubTag = $c(31)	
	
 n OU s OU=$IO
 ; kontrola parametru
 if inf="" q "Input file name empty !"
 n ext s ext=$p(inf,".",2) s:ext'="" ext="."_ext
 if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
 ; otevrit vstupni soubor
 open inf:(/READ):0
 n te s te=$test
 if 'te q "failed to open the input file ('"_inf_"')!!"
 use inf:/POSITION=0 use OU
 ; disable <ENDOFFILE> error
 d $ZU(68,40,1)

 ; otevrit vystupni soubor
 open outf:("NWS":/CREATE):0
 s te=$test
 if 'te q "failed to open the output file ('"_outf_"')!!"

 n li,nLine,brk,odd,begin,hlavicka,tag,od,kolko,pocet
 n ciselna,datova,riadok
 
 s brk=0,li="",odd=$c(13)_$c(10)
 n poz,dlzka,j,zac, ttt, t200, tt2, prvy, posledny
 s poz=0 ; pozicia na ktoru sa ma nastavit
 s dlzka=0  ;urcenie dlzky kazdeho zaznamu
 s j = 0, zac=1, ttt=0, t200="", ttt2=0, prvy="",posledny="", posledny2=""
 
  
 for nLine=1:1 q:brk  d
 . ; nacitam dlzku nasledujuceho zaznamu
 . use inf:poz read dlzka#5 if $zeof'=0 s brk=1 ; precitat dlzku zaznamu
 . if (dlzka'="") && (poz'="") d
 . . ; podla dlzky zaznamu precitat jeden zaznam
 . . use inf:(poz+24) read li#(dlzka-24) if $zeof'=0 s brk=1
 . . s poz = poz + dlzka  ; posunutie pocitadla o cely predchadzajuci zaznam
 . . ; nacitany 1 zaznam
 . . if (li'="") d     ; ak existuje zaznam rozdelime na casti
 . . . s ttt=0, t200 = "",lic="",t856="",fakulta="",zaznam="",rozpr=""
 . . . ; na zaciatku zapiseme zaciatok zaznamu
 . . . s prvy="",posledny="", posledny2=""
 . . . ;use outf w "# @id "_trieda_" new"_odd_"000    00000nam  22        450"_odd use OU
 . . . s hla="# @id "_trieda_" new"_odd_"000    00000nam  22        450" use OU
 . . . s ciselna = $p(li,odTag,1) ; prva ciselna cast  
 . . . s datova = $e(li,$l(ciselna)+1,99999) ; datova cast nasleduje za ciselnou
 . . . s pocet=$l(ciselna)/12     ; pocet tagov
 . . . ; riesenie pre tag 856
 . . . if $f(datova,"ulicencia1")>0 s lic="1" 
 . . . if $f(datova,"ulicencia2")>0 s lic="2" 
 . . . if $f(datova,"ulicencia3")>0 s lic="3" 
 . . . if $f(datova,"ulicencia4")>0 s lic="4" 
 . . . if $f(datova,"ulicencia5")>0 s lic="5" 
 . . . for j=1:1:pocet d
 . . . . s rada = $e(ciselna,zac,j*12)
 . . . . s zac = zac + 12
 . . . . s tag=$e(rada,1,3)  ; cislo tagu
 . . . . s kolko=$e(rada,4,7) ; kolko znakov nacitat
 . . . . s od=$e(rada,8,12)  ; od ktoreho znaku citat
 . . . . ; vyber hodnot z datovej premennej
 . . . . s riadok=$e(datova,od+2,od+kolko)
 . . . . s riadok=##class(Util).strswap(riadok,odSubTag,$c(31))
 . . . . if tag'="" d
 . . . . . if tag="001" d
 . . . . . . s kod = $e(riadok,1,9999)
 . . . . . . s hla=##class(Util).strswap(hla,"SpuUnCat new","SpuUnCat e"_kod)
 . . . . . . ;use outf w hla
 . . . . . . s zaznam=odd_hla
 . . . . . . s riadok="e"_riadok
 . . . . . if tag="992" d
 . . . . . . s tag="970"
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a",$c(31)_"b")
 . . . . . if tag="856" d
 . . . . . . s riadok=##class(Util).strswap(riadok,"\","/")
 . . . . . . ;if lic="1" s riadok=##class(Util).strswap(riadok,$c(31)_"u",$c(31)_"u"_"http://crzp.uniag.sk")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"u",$c(31)_"u"_"http://crzp.uniag.sk")
 . . . . . . ; odstranit nepotrebne subtagy
 . . . . . . s ti=""
 . . . . . . if lic="2" s ti="ix"
 . . . . . . if lic="3" s ti="ix"
 . . . . . . if lic="4" s ti="ix"
 . . . . . . if lic="5" s ti="ix"
 . . . . . . if (ti'="") && ($l(ti)>1) s riadok=riadok_$c(31)_ti
 . . . . . if tag="210" d
 . . . . . . s ta=##class(MARC).getSubTagStr(riadok,"a")
 . . . . . . s td=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a"_ta,$c(31)_"a[S.l.")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"d"_td,"")
 . . . . . . s riadok=riadok_$c(31)_"cs.n.]"
 . . . . . . s riadok=riadok_$c(31)_"d"_td
 . . . . . if tag="330" d 
 . . . . . . s ta=##class(MARC).getSubTagStr(riadok,"a")
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a"_ta,$c(31)_"aAutorskÃ½ abstrakt: "_ta)
 . . . . . if tag="610" d 
 . . . . . . s tag="964"
 . . . . . . s riadok=$e(riadok,4,9999)
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"a",odd_"964    "_$c(31)_"a")
 . . . . . . s riadok="  "_$c(31)_riadok
 . . . . . if tag="RID" d 
 . . . . . . s tag="C99"
 . . . . . . s riadok=riadok_$c(31)_"dDFLT_UN_CAT8"
 . . . . . if tag="EZP" d  ; neprenasat
 . . . . . . s ts=##class(MARC).getSubTagStr(riadok,"s")
 . . . . . . if $e(ts,1,11)="rozpracovan" s rozpr="1"
 . . . . . . ;s tag=""
 . . . . . . ;s riadok=""
 . . . . . if tag="974" d  ; neprenasat cislo studenta
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="004" d  ; neprenasat 
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="CHK" d  ; neprenasat protokol
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="985" d
 . . . . . . s fakulta=##class(MARC).getSubTagStr(riadok,"f") ; cislo kfakulty / k - kod katedry
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="LIC" d  ; neprenasat
 . . . . . . s datum=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . s tag=""
 . . . . . . s riadok=""
 . . . . . if tag="200" d 
 . . . . . . s riadok="1 "_$e(riadok,3,9999)
 . . . . . if tag="101" d 
 . . . . . . s riadok="0 "_$e(riadok,3,9999)
 . . . . . if tag="541" d 
 . . . . . . s riadok="1 "_$e(riadok,3,9999)
 . . . . . if $e(tag,1,2)="70" d 
 . . . . . . s t3=##class(MARC).getSubTagStr(riadok,"3")
 . . . . . . s tx=##class(MARC).getSubTagStr(riadok,"x")
 . . . . . . ;use outf w "*"_riadok_"*" use OU
 . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"3"_t3,"")
 . . . . . . ;if tx'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"x")
 . . . . . . s riadok=" 1"_$e(riadok,3,9999)
 . . . . . if (tag="910") && ($l(riadok)=4) s tag = ""
 . . . . . if tag'="" d
 . . . . . . if $e(tag,1,2)="00" d  
 . . . . . . . ;use outf w tag_"    "_riadok_odd use OU
 . . . . . . . s zaznam=zaznam_odd_tag_"    "_riadok
 . . . . . . if $e(tag,1,2)'="00" d 
 . . . . . . . if tag="856" d
 . . . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . . . s riadok=tag_" "_riadok
 . . . . . . . . ; osetrit odstranenie niektorych subtagov
 . . . . . . . . ;s tr=##class(MARC).getSubTagStr(riadok,"r")
 . . . . . . . . ;if tr'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"r")
 . . . . . . . . s riadok=##class(Util).strswap(riadok,$c(31)_"r",$c(31)_"z")
 . . . . . . . . s td=##class(MARC).getSubTagStr(riadok,"d")
 . . . . . . . . if td'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"d")
 . . . . . . . . s tv=##class(MARC).getSubTagStr(riadok,"v")
 . . . . . . . . if tv'="" s riadok=##class(MARC).setSubTagStr(riadok,$c(31)_"v")
 . . . . . . . . ; riesenie ziskania len posledneho opakovania subtagu u
 . . . . . . . . s tu=##class(MARC).getSubTagStr(riadok,"u",-1)
 . . . . . . . . s tz=##class(MARC).getSubTagStr(riadok,"z",-1)
 . . . . . . . . s ti=##class(MARC).getSubTagStr(riadok,"i")
 . . . . . . . . s pocetu=$l(tu,$c(10))
 . . . . . . . . s pocetz=$l(tz,$c(10))
 . . . . . . . . if pocetu>1 d
 . . . . . . . . . s riadok="856    "_$c(31)_"u"_$p(tu,$c(10),pocetu)
 . . . . . . . . . if tz'="" s riadok=riadok_$c(31)_"z"_$p(tz,$c(10),pocetz)
 . . . . . . . . . if ti'="" s riadok=riadok_$c(31)_"i"_ti
 . . . . . . . . . ;;; 
 . . . . . . . . s t856=t856_odd_riadok
 . . . . . . . . ;use outf w zapis use OU
 . . . . . . . else  d
 . . . . . . . . s riadok=$e(riadok,1,2)_" "_$e(riadok,3,9999) 
 . . . . . . . . ;s zapis=tag_" "_riadok_odd
 . . . . . . . . s zapis=tag_" "_riadok
 . . . . . . . . if $e(tag,1,2)="70" d 
 . . . . . . . . . s tx=##class(MARC).getSubTagStr(zapis,"x")
 . . . . . . . . . if tx'="" s zapis=##class(MARC).setSubTagStr(zapis,$c(31)_"x")
 . . . . . . . . ;use outf w zapis use OU
 . . . . . . . . s zaznam=zaznam_odd_zapis
 . . . . s odd=$c(13)_$c(10) 
 . . . ; na konci zapiseme ukoncenie zaznamu
 . . . if ((fakulta="104000") || (fakulta="105000")) && (rozpr="") d  
 . . . . use outf w zaznam use OU
 . . . . if t856'="" d
 . . . . . s ti=""
 . . . . . if lic="2" s ti="i"_datum
 . . . . . if lic="3" s ti="iO"_datum
 . . . . . if lic="4" s ti="iO"
 . . . . . if lic="5" s ti="iN"
 . . . . . s t856=##class(Util).strswap(t856,$c(31)_"ix",$c(31)_ti)
 . . . . . use outf w t856 use OU
 . . . . use outf w odd_"969    "_$c(31)_"fD"
 . . . . use outf w odd_"###" use OU
 . . s li="",zac=1
 . q:$zeof'=0

 close inf close outf use OU
 ; enable <ENDOFFILE> error
 d $ZU(68,40,0)
 q ""
]]></Implementation>
</Method>

<Method name="GetHesNK">
<Description>
21.09.12 mk; globalka na spracovanie suboru csv do suboru csv
s tym ze podla autortneho zaznamu z NK geograficke heslo zisti ID NK zaznamu
a toto prida do suboru k lokalnemu heslo.</Description>
<ClassMethod>1</ClassMethod>
<FormalSpec>inf:%String,outf:%String=""</FormalSpec>
<ProcedureBlock>1</ProcedureBlock>
<Implementation><![CDATA[
  ; "" "©"
  ; "" "¾"
   

  s OU=$IO
  if inf="" q "Input file name empty !"
  s ext=$p(inf,".",2) s:ext'="" ext="."_ext
  if outf="" s outf=$p(inf,".",1)_"_00"_ext
 
  ; otevrit vstupni soubor
  open inf:(/READ):0
  s te=$test
  if 'te q "failed to open the input file ('"_inf_"')!!"
  use inf:/POSITION=0 use OU
  d $ZU(68,40,1)

  ; otevrit vystupni soubor
  open outf:("NWS":/CREATE):0
  s te=$test
  if 'te q "failed to open the output file ('"_outf_"')!!"
  ;;; cast spracovania	
	
  ; d ##class(UtilConv).GetHesNK("in.txt","out.txt")
  	
  s %ipac2("ictx")="ujep"
  s i2eDb="I2eUjep_nkp_aut"
  s useAtribut="58"  ; geograficke meno
  s ictx="ujep"
  s handlenk=""
  
  s brk=0,li="",odd=$c(13)_$c(10),riadok="",hesloNK=""
  s s1="[]()-+:;,'. /\"_$c(34) 
  s heslo="",sStatus="",sc="",tag151aNK="",tag001NK=""

  f nLine=1:1 q:brk  d
  . use inf read li if $zeof'=0 s brk=1
  . if (li'="") d 
  . . s riadok="",ret=""
  . . s idheslo=$p(li,";",1)  ; kod autority 
  . . s heslo=$p(li,";",2)  ; geograficke heslo
  . . s typ=$p(li,";",3)  ; typ autority od 1 - 5
  . . s riadok=heslo
  . . s heslo=$zcvt(heslo,"l")
  . . if riadok'="" use outf w odd_$c(34)_idheslo_$c(34)_";"_$c(34)_riadok_$c(34) use OU
  . . if heslo'="" d
  . . . s heslo =$zcvt(heslo,"l")
  . . . ; samotne hladanie terminu
  . . . ; rozdelenie podla typu hesla
  . . . if typ="1" d ; vecne tema
  . . . . ; atribut 21 
  . . . . s tag150aNK="",tag001NK=""
  . . . . s prva=$p(heslo,"-",1) ; berie sa len termin po pomlcku
  . . . . s prva=$p(prva,"(",1) ; berie sa len termin po lavu zatvorku
  . . . . s prva=##class(Util).trim(prva)
  . . . . s pocetslov=$l(prva," ")
  . . . . s attr=" @attr 4=1"
  . . . . if pocetslov<2 s attr=" @attr 3=1"
  . . . . s heslo="@attr 1=21"_attr_" '"_prva_"'"
  . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"150a",.ret)  
  . . . . s tag001NK = ##class(MARC).getTagX(.handlenk,"001")
  . . . . ; po vyhladani spracovanie
  . . . . if tag001NK'="" d
  . . . . . s tag150aNK = ##class(MARC).getTagX(.handlenk,"150")
  . . . . . s h1=$zcvt($tr(tag150aNK,s1),"l")
  . . . . . s h2=$tr(prva,s1)
  . . . . . if h2'=$e(h1,1,$l(h2)) s tag001NK="",tag150aNK=""
  . . . . ;;;
  . . . . ; spracovanie celeho ret oddelovac jednotlivych zaznamov ?
  . . . . ;;;
  . . . . s retnew="",najdene=""
  . . . . ;
  . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . f k=1:1:pocetr d
  . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . ; druha a stvrta cast
  . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . ; porovnanie
  . . . . . s h1=$zcvt($tr(ret14,s1),"l")
  . . . . . s h2=$tr(prva,s1)
  . . . . . if (h2=$e(h1,1,$l(h2))) && (najdene="") s tag001NK=ret12,tag150aNK=ret14,najdene="1"
  . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14
  . . . . if retnew'="" s ret=retnew
  . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag150aNK_$c(34)_";"_$c(34)_"*"_prva_"*"_$c(34)_";"_$c(34)_ret_$c(34)_";"_$c(34)_heslo_$c(34)
  . . . . ;
  . . . if typ="2" d ; osobne mena
  . . . . ; atribut 1
  . . . . s tag100aNK=""
  . . . . s heslo=##class(Util).strswap(heslo,"viz","@")
  . . . . s prva=$p(heslo,"@",1)
  . . . . s druha=$p(heslo,"@",2)
  . . . . s tretia=$p(druha,"-",2)
  . . . . s druha=$p(druha,"-",1)
  . . . . ;;;
  . . . . if $l($p(prva,",",1)," ")<2 d
  . . . . . s prva=$p(prva,",",1)_" "_$p(prva,",",2)
  . . . . else  d
  . . . . . s prva=$p(prva,",",1)
  . . . . if $l($p(druha,",",1)," ")<2 d
  . . . . . s druha=$p(druha,",",1)_" "_$p(druha,",",2)
  . . . . else  d
  . . . . . s druha=$p(druha,",",1)
  . . . . if $l($p(tretia,",",1)," ")<2 d
  . . . . . s tretia=$p(tretia,",",1)_" "_$p(tretia,",",2)
  . . . . else  d
  . . . . . s tretia=$p(tretia,",",1)
  . . . . ;;;
  . . . . s prva=##class(Util).trim(prva)
  . . . . s druha=##class(Util).trim(druha)
  . . . . s tretia=##class(Util).trim(tretia)
  . . . . ;;;
  . . . . s bodka1="",bodka2="",bodka3=""
  . . . . if $e(prva,$l(prva),$l(prva))="." s prva=$e(prva,1,$l(prva)-1),bodka1=1
  . . . . if $e(druha,$l(druha),$l(druha))="." s druha=$e(druha,1,$l(druha)-1),bodka2=1
  . . . . if $e(tretia,$l(tretia),$l(tretia))="." s tretia=$e(tretia,1,$l(tretia)-1),bodka3=1
  . . . . ;;;
  . . . . if $e(prva,1,3)="dr." s prva=$e(prva,4,$l(prva))
  . . . . if $e(druha,1,3)="dr." s druha=$e(druha,4,$l(druha))
  . . . . if $e(tretia,1,3)="dr." s tretia=$e(tretia,4,$l(tretia))
  . . . . ;;;
  . . . . s prva=##class(Util).trim(prva)
  . . . . s druha=##class(Util).trim(druha)
  . . . . s tretia=##class(Util).trim(tretia)
  . . . . ;;;   
  . . . . ;;;
  . . . . s tag100aNK="",tag001NK="",ret="",heslo="",retnew=""
  . . . . ;prve hladanie
  . . . . if prva'="" d
  . . . . . s atr5=""
  . . . . . if bodka1'="" s atr5="@attr 5=1 "
  . . . . . s heslo="@attr 1=1 @attr 4=1 "_atr5_"'"_prva_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"100",.ret)  
  . . . . . ;s tag001NK = ##class(MARC).getTagX(.handlenk,"001")
  . . . . . ;s tag100aNK = ##class(MARC).getTagX(.handlenk,"100a")
  . . . . . ;s tag100dNK = ##class(MARC).getTagX(.handlenk,"100d")
  . . . . . ;if ret="" s ret142=tag100dNK
  . . . . . s retnew="",najdene=""
  . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . f k=1:1:pocetr d
  . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . s ret14=##class(MARC).getSubTagStr(ret1,"a")
  . . . . . . s ret142=##class(MARC).getSubTagStr(ret1,"d")
  . . . . . . if ret142'="" s ret142=" "_ret142
  . . . . . . s h1=$zcvt($tr(ret14,s1),"l")
  . . . . . . s h2=$tr(prva,s1)
  . . . . . . if (h2=$e(h1,1,$l(h2))) && (najdene="") s tag001NK=ret12,tag100aNK=ret14_ret142,najdene="1"
  . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14_ret142
  . . . . . s ret=retnew
  . . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag100aNK_$c(34)_";"_$c(34)_"*"_prva_"*"_$c(34)_";"_$c(34)_ret_$c(34)_";"_$c(34)_heslo_$c(34)
  . . . . ;;;
  . . . . s tag100aNK="",tag001NK="",ret="",heslo="",retnew=""
  . . . . ;druhe hladanie
  . . . . if druha'="" d
  . . . . . s atr5=""
  . . . . . if bodka2'="" s atr5="@attr 5=1 "
  . . . . . s heslo="@attr 1=1 @attr 4=1 "_atr5_"'"_druha_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"100",.ret)  
  . . . . . ; po vyhladani spracovanie
  . . . . . ;s tag100aNK = ##class(MARC).getTagX(.handlenk,"100a")
  . . . . . ;s tag100dNK = ##class(MARC).getTagX(.handlenk,"100d")
  . . . . . ;if ret="" s ret142=tag100dNK
  . . . . . ;;;
  . . . . . s retnew="",najdene=""
  . . . . . if ret'="" d
  . . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . . f k=1:1:pocetr d
  . . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . . ; druha a stvrta cast
  . . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . . s ret14=##class(MARC).getSubTagStr(ret1,"a")
  . . . . . . . s ret142=##class(MARC).getSubTagStr(ret1,"d")
  . . . . . . . if ret142'="" s ret142=" "_ret142
  . . . . . . . s h1=$zcvt($tr(ret14,s1),"l")
  . . . . . . . s h2=$tr(druha,s1)
  . . . . . . . if (h2=$e(h1,1,$l(h2))) && (najdene="") s tag001NK=ret12,tag100aNK=ret14_ret142,najdene="1"
  . . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14_ret142
  . . . . . . s ret=retnew
  . . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=riadok_";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag100aNK_$c(34)_";"_$c(34)_"*"_druha_"*"_$c(34)_";"_$c(34)_ret_$c(34)_";"_$c(34)_heslo_$c(34)
  . . . . ;;; 
  . . . . ;tretie hladanie
  . . . . s tag100aNK="",tag001NK="",ret="",heslo="",retnew=""
  . . . . if tretia'="" d
  . . . . . s atr5=""
  . . . . . if bodka3'="" s atr5="@attr 5=1 "
  . . . . . s heslo="@attr 1=1 @attr 4=1 "_atr5_"'"_tretia_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"100",.ret)  
  . . . . . ; po vyhladani spracovanie
  . . . . . ;s tag100aNK = ##class(MARC).getTagX(.handlenk,"100a")
  . . . . . ;s tag100dNK = ##class(MARC).getTagX(.handlenk,"100d")
  . . . . . ;if ret="" s ret142=tag100dNK
  . . . . . s retnew="",najdene=""
  . . . . . if ret'="" d
  . . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . . f k=1:1:pocetr d
  . . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . . ; druha a stvrta cast
  . . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . . ;s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . . . s ret14=##class(MARC).getSubTagStr(ret1,"a")
  . . . . . . . s ret142=##class(MARC).getSubTagStr(ret1,"d")
  . . . . . . . if ret142'="" s ret142=" "_ret142
  . . . . . . . s h1=$zcvt($tr(ret14,s1),"l")
  . . . . . . . s h2=$tr(tretia,s1)
  . . . . . . . if (h2=$e(h1,1,$l(h2))) && (najdene="") s tag001NK=ret12,tag100aNK=ret14_ret142,najdene="1"
  . . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14_ret142
  . . . . . . s ret=retnew
  . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=riadok_";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag100aNK_$c(34)_";"_$c(34)_"*"_tretia_"*"_$c(34)_";"_$c(34)_ret_$c(34)_";"_$c(34)_heslo_$c(34)
  . . . if typ="3" d ; geograficke heslo
  . . . . s heslo=##class(Util).strswap(heslo,"viz","@")
  . . . . if $f(heslo,"@")>0 s heslo=$p(heslo,"@",2)
  . . . . s doplnok="",doplnok2=""
  . . . . s heslo=$p(heslo,"(",1)
  . . . . s prva=$p(heslo,",",1) ; prva cast terminu 
  . . . . s druha=$p(heslo,",",2)
  . . . . s tretia=$p(heslo,",",3)
  . . . . s prva=##class(Util).trim(prva)
  . . . . s druha=##class(Util).trim(druha)
  . . . . s tretia=##class(Util).trim(tretia)
  . . . . if $e(druha,1,3)="ob." s doplnok=$e(druha,4,9999) 
  . . . . if $e(druha,1,4)="obec" s doplnok=$e(druha,5,9999) 
  . . . . if $e(druha,1,4)="okr." s doplnok=$e(druha,5,9999) 
  . . . . if $e(druha,1,2)="o." s doplnok=$e(druha,3,9999) 
  . . . . s doplnok=##class(Util).trim(doplnok)
  . . . . if $l(doplnok)<3 s doplnok=""
  . . . . if doplnok'="" s doplnok=prva_" "_doplnok
  . . . . if $e(druha,1,2)="o." && doplnok="" s doplnok=prva_" okres" 
  . . . . ;;;;;
  . . . . if $e(tretia,1,3)="ob." s doplnok2=$e(tretia,4,9999) 
  . . . . if $e(tretia,1,4)="obec" s doplnok2=$e(tretia,5,9999) 
  . . . . if $e(tretia,1,4)="okr." s doplnok2=$e(tretia,5,9999) 
  . . . . if $e(tretia,1,2)="o." s doplnok2=$e(tretia,3,9999) 
  . . . . s doplnok=##class(Util).trim(doplnok)
  . . . . s doplnok2=##class(Util).trim(doplnok2)
  . . . . if $l(doplnok2)<3 s doplnok2=""
  . . . . if doplnok2'="" s doplnok2=prva_" "_doplnok2
  . . . . if ($e(tretia,1,2)="o.") && (doplnok2="") s doplnok2=prva_" okres" 
  . . . . s druha=##class(Util).trim(druha)
  . . . . s tretia=##class(Util).trim(tretia)
  . . . . ;;;;;;;
  . . . . s tag001NK="",ret="",retnew="",najdene="",tag151aNK=""
  . . . . ; samotne hladanie v prvej faze 3 varianty hladania
  . . . . if doplnok'="" d  
  . . . . . s atr4=" @attr 4=1"
  . . . . . if ($f(doplnok,"okres")>0) || ($f(doplnok,"kraj")>0) s atr4=""
  . . . . . s heslo="@attr 1=58"_atr4_" '"_doplnok_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"151a",.ret)  
  . . . . . ;if ret="" s tag001NK=##class(MARC).getTagX(.handlenk,"001")
  . . . . . ;if ret="" s tag151aNK = ##class(MARC).getTagX(.handlenk,"151a")
  . . . . . ; spracovanie celeho ret oddelovac jednotlivych zaznamov ?
  . . . . . s retnew="",najdene=""
  . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . f k=1:1:pocetr d
  . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . . ; porovnanie
  . . . . . . s h1=$zcvt($tr($p(ret14," ",1),s1),"l")
  . . . . . . s h2=$tr($p(doplnok," ",1),s1)
  . . . . . . s h1=$tr(h1,s1)
  . . . . . . s h2=$tr(h2,s1)
  . . . . . . if (h2=h1) && (najdene="") s tag001NK=ret12,tag151aNK=ret14,najdene=1
  . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14
  . . . . . s ret=retnew
  . . . . ; ak sa nic nenaslo v druhej variante vola sa tretia
  . . . . s retnew=""
  . . . . if (doplnok2'="") && (tag001NK="") d  
  . . . . . s atr4=" @attr 4=1"
  . . . . . if ($f(doplnok2,"okres")>0) || ($f(doplnok2,"kraj")>0) s atr4=""
  . . . . . s heslo="@attr 1=58"_atr4_" '"_doplnok2_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"151a",.ret)  
  . . . . . ;if ret="" s tag001NK=##class(MARC).getTagX(.handlenk,"001")
  . . . . . ;if ret="" s tag151aNK = ##class(MARC).getTagX(.handlenk,"151a")
  . . . . . s retnew="",najdene=""
  . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . f k=1:1:pocetr d
  . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . . ; porovnanie
  . . . . . . s h1=$zcvt($tr($p(ret14," ",1),s1),"l")
  . . . . . . s h2=$tr($p(doplnok2," ",1),s1)
  . . . . . . s h1=$tr(h1,s1)
  . . . . . . s h2=$tr(h2,s1)
  . . . . . . if (h2=h1) && (najdene="") s tag001NK=ret12,tag151aNK=ret14,najdene=1
  . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14
  . . . . . s ret=retnew
  . . . . ; ak sa nenajde ani v jednej z variant zavolame 
  . . . . if (prva'="") && (tag001NK="") d  
  . . . . . s atr4=" @attr 4=1"
  . . . . . s heslo="@attr 1=58"_atr4_" '"_prva_"'"
  . . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"151a",.ret)  
  . . . . . ;if ret="" s tag001NK = ##class(MARC).getTagX(.handlenk,"001")
  . . . . . ;if ret="" s tag151aNK = ##class(MARC).getTagX(.handlenk,"151a")
  . . . . . s retnew="",najdene=""
  . . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . . f k=1:1:pocetr d
  . . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . . s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . . ; porovnanie
  . . . . . . s h1=$zcvt($tr($p(ret14," ",1),s1),"l")
  . . . . . . s h2=$tr($p(prva," ",1),s1)
  . . . . . . s h1=$tr(h1,s1)
  . . . . . . s h2=$tr(h2,s1)
  . . . . . . if (h2=h1) && (najdene="") s tag001NK=ret12,tag151aNK=ret14,najdene=1
  . . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14
  . . . . . s ret=retnew
  . . . . ; po vyhladani spracovanie
  . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag151aNK_$c(34)_";"_$c(34)_"*"_doplnok_"*"_doplnok2_"*"_prva_"*"_$c(34)_";"_$c(34)_"#"_ret_"#"_$c(34)_";"_$c(34)_heslo_$c(34)
  . . . if (typ="4") || (typ="5")  d  ; korporacie
  . . . . s tag11xaNK="",ret="",tag001NK=""
  . . . . s prva=$p(heslo,",",1) ; po ciarku je hlavny termin
  . . . . s prva=$p(prva,"(",1) 
  . . . . s prva=##class(Util).trim(prva)
  . . . . s prva=$zcvt(prva,"l")
  . . . . s heslo="@attr 1=2 @attr 4=1 '"_prva_"'"
  . . . . s sc=##class(i2.ws).getHandleI2e(.handlenk,i2eDb,"",heslo,ictx,1,"11*a",.ret)  
  . . . . s tag001NK = ##class(MARC).getTagX(.handlenk,"001")
  . . . . ;; po vyhladani spracovanie
  . . . . if tag001NK'="" d
  . . . . . s tag11xaNK = ##class(MARC).getTagX(.handlenk,"11*a")
  . . . . ;;;
  . . . . s h1=$zcvt($tr($p(tag11xaNK," ",1),s1),"l")
  . . . . s h2=$tr($p(prva," ",1),s1)
  . . . . if (h2'=h1) s tag11xaNK="",tag001NK=""
  . . . . ;;;;;
  . . . . s retnew="",najdene=""
  . . . . ;
  . . . . s pocetr=$l(ret,$c(10)) ; pocet najdenych zaznamov
  . . . . f k=1:1:pocetr d
  . . . . . s ret1=$p(ret,$c(10),k)  ; jeden vyskyt 
  . . . . . s ret12=$p(ret1,$c(31),2) ; kod NK
  . . . . . s ret12=##class(Util).trim(ret12)
  . . . . . s ret14=$p(ret1,$c(31),4) ; heslo NK
  . . . . . s h1=$zcvt($tr($p(ret14," ",1),s1),"l")
  . . . . . s h2=$tr($p(prva," ",1),s1)
  . . . . . if (h2=h1) && (najdene="") s tag001NK=ret12,tag11xaNK=ret14,najdene="1"
  . . . . . if ret14'="" s retnew=retnew_"#"_ret12_":"_ret14
  . . . . . s retnew=retnew_"#"_ret12_":"_ret14
  . . . . s ret=retnew
  . . . . s tag001NK=##class(Util).trim(tag001NK)
  . . . . s riadok=";"_$c(34)_tag001NK_$c(34)_";"_$c(34)_tag11xaNK_$c(34)_";"_$c(34)_"*"_prva_"*"_$c(34)_";"_$c(34)_ret_$c(34)_";"_$c(34)_heslo_$c(34)
  . . ; koniec podmienok 
  . . if riadok'="" use outf w riadok use OU
  . q:$zeof'=0
  

  
   
  close inf close outf use OU
  d $ZU(68,40,0)

  
  q ""
]]></Implementation>
</Method>
</Class>
</Export>
