JLABS

UDF Funkce

=============================================================================================================================================
UDF funkce jsou funkce psane uzivatelem bud v C nebo pod windows v Pascalu. Je to slozita problematika, JLabs typicky pouziva klasicky
server pod linuxem. Jsou tedy UDF funkce implementovany v C a VELMI se opiraji o to, ze NEJSOU reentrantni. Klasicky server bere na kazdy
pripoj k databazi novy proces a novou kopii knihovny. Superserver naopak ma jen jednu kopii knihovny a vsechny funkce v knihovne jlabs
by se musely prepsat. Rada z nich, hlavne ty, ktere nejak obchazeji omezeni databaze, treba jednim volanim naplni buffer a jinym volanim
z nej vycerpavaji data. Tyto funkce by se musely i prehodnotit, hlavne u blobu by to bylo tezke.

Funkce v novejsi implementaci firebirdu musi pouzivat jiny malloc, jinak se chovat v klauzuli free it a jinak se i musi buildit. Hlavni
zrada je v deklaraci malloc a noveho malloc, pozor na to. Vraci se pointer a ne int ...

Deklarace struktury blob je puvodne spatne, hlavne tam, kde je short ma byt int !!! Zmenou na 64 bitu to je jeste vice zmotano, potreba kazdou 
funkci zhodnotit ... lepsi je slepe brat deklaraci z toho, jak jsme ji casem udelali.

Nektere veci se staly obsolentnimi:

  bloby uz nejsou tak kriticke, protoze databaze muze byt i vetsi nez 2GB
  zurnaly jsou na viditelnem a stabilnim miste - zapisy pres buffer nebyly stastne
  externi tabulky mohou byt i velke, hlavne pro logy se to hodi a nemusi se to resit via UDF
  stringy s citlivostmi se nove uz deklaruji jako varchary a ne jako bloby a muzou se tedy predavat jako cstring
  nektere funkce zatim byly implementovany rovnou v databazi
  na ARO a i jinde jsou castecne stringy z blobu spis kvuli zobrazeni, protoze databaze po cca 132 znacich uz ukazuje jen (MEMO) ci (BLOB)

Rada veci je naopak implementovana, protoze puvodni implementace zbytecne hlasi chyby nebo vubec neexistuje a pritom je uzitecna.
Predpoklada se, ze databaze je uzivana via VaxNt a tedy veci typu YESTERDAY7 nebo THISYEAR jsou vyreseny na urovni queries, je to cca
100 promennych a cast z nich je celkem tricky - treba NEXTWORKINGDAY apod.

=============================================================================================================================================
Funkce              Obsolentni  Entry in jlabs.c                         
---------------------------------------------------------------------------------------------------------------------------------------------
ATB                 Y           atb              Vraci A nebo N podle toho, zda argument (typicky MEMOD) vubec nejaka antibiotika obsahuje
---------------------------------------------------------------------------------------------------------------------------------------------
BLOB2BUF            Y           blob2buf         Naplni globalni promennou buf podle blobu, vraci pocet znaku
---------------------------------------------------------------------------------------------------------------------------------------------
BLOB2STRING         Y           buf2string       Vezme globalni promennou buf a vrati pointer na ni jako na string
---------------------------------------------------------------------------------------------------------------------------------------------
BUF2FILE            Y           buf2file                       
---------------------------------------------------------------------------------------------------------------------------------------------
BUF2STRING          Y           buf2string                     
---------------------------------------------------------------------------------------------------------------------------------------------
BUF2XPORT           Y           buf2xport                      
---------------------------------------------------------------------------------------------------------------------------------------------
CF                              cf               Dostane jako argument typicky MEMOM a jmeno antibiotika. Vrati float a navic upraveny tak, 
                                                 ze vetsi cokoli je 999999 a  mensi cokoli je -999999
---------------------------------------------------------------------------------------------------------------------------------------------
CIR                 Y           cir              Používejte raději níže uvedenou funci sir
CITL                Y           citl                           
---------------------------------------------------------------------------------------------------------------------------------------------
CONVERTCZ                       jl_convert       Vsemozne prepocitava argument podle zadaneho vzoru
---------------------------------------------------------------------------------------------------------------------------------------------
CONVERTOR                       convertor        Vraci pointer, vezme prvni argument jako string a druhy jako direktivu, podle ktere vraci
                                                 vysledek. Aktualne bere jen "trailing-digits" a "filter-digits"
---------------------------------------------------------------------------------------------------------------------------------------------
CPFILE              Y           cp_file                        
---------------------------------------------------------------------------------------------------------------------------------------------
CRLF2BUF            Y           crlf2buf                       
---------------------------------------------------------------------------------------------------------------------------------------------
CT                              ct               Vraci C/R/I a jako argumenty bere typicky MEMOD ci MEMOM a jmeno antibiotika
---------------------------------------------------------------------------------------------------------------------------------------------
CTK                             ctk              Vraci koncentraci ci sirku zony              
---------------------------------------------------------------------------------------------------------------------------------------------
CTKF                            ctkf             Vraci koncentraci jako float, viz take cf              
---------------------------------------------------------------------------------------------------------------------------------------------
DECODEBUF                       decodebuf                      
---------------------------------------------------------------------------------------------------------------------------------------------
DIFFDAYS                        diffdays         Vraci pocet dnu uplynuvsich mezi dvema datumy              
---------------------------------------------------------------------------------------------------------------------------------------------
DIFFTIMES                       difftimes        Vraci rozdil dvou timestampu ve dnech
---------------------------------------------------------------------------------------------------------------------------------------------
DOSCRIPT            Y           do_script        Provede script jako commandu, je to velmi nebezpecne a novejsimi verzemi firebirdu potlacene              
---------------------------------------------------------------------------------------------------------------------------------------------
ENCODEBUF                       encodebuf                      
---------------------------------------------------------------------------------------------------------------------------------------------
EQ2BUF                          eq2buf                         
---------------------------------------------------------------------------------------------------------------------------------------------
FCRLF                           fcrlf            Vraci CRLF a ignoruje parametr. Hodi se pro vselijake formatovani apod. 
---------------------------------------------------------------------------------------------------------------------------------------------
FDIVIDE                         fdivide          Vraci podil dvou cisel a poradi si s podtecenim ci blbymi znaky apod.
---------------------------------------------------------------------------------------------------------------------------------------------
FENTITA             Y           fentita          Asi podle nejakeho schematu vraci null nebo zkombinovane parametry?
---------------------------------------------------------------------------------------------------------------------------------------------
FFORMAT                         fformat          Vselijake preformatovani datumu apod ...
FFORMATCF                       fformatCf                      
FFORMATCI                       fformatCi                      
FFORMATCS                       fformatCs                      
---------------------------------------------------------------------------------------------------------------------------------------------
FILE2BUF            Y           file2buf                       
---------------------------------------------------------------------------------------------------------------------------------------------
FLF                             flf              Vraci LF a ignoruje parametr, viz FCRLF
---------------------------------------------------------------------------------------------------------------------------------------------
FNOW                            fnow             Vraci stamp na serveru ve formatu %Y%m%d%H%M%S" a je-li argument -8 vrati jen dny.
---------------------------------------------------------------------------------------------------------------------------------------------
FORMATE_DATE                    formate_date     Bere jako parametr datum v nejakem formatu a pak formatovaci string. Vraci datum zase v 
                                                 jinem formatu. K 20170425 jsou znamy tyto formaty:

                                                 dd-mm-yyyy
                                                 dd/mm/yyyy
                                                 dd.mm.yyyy
                                                 mm-dd-yyyy
                                                 mm/dd/yyyy
                                                 mm.dd.yyyy
                                                 yyyy-mm-dd - bere datum YYYY-MM-DD a vraci YYYYMDD
                                                 yyyymmdd

                                                 kdyz nerozumi formatu ci jej neumi, vrati error, jinak je nejlepe vec vyzkouset pomoci
                                                 select formate_date('abcdefghijk','format') from rdb$database a je videt, co se deje pri
                                                 dane konverzi
---------------------------------------------------------------------------------------------------------------------------------------------
FPID                            fpid             Vraci pid beziciho procesu             
---------------------------------------------------------------------------------------------------------------------------------------------
FROMJOURNAL         Y           fromjournal                        
---------------------------------------------------------------------------------------------------------------------------------------------
FROUND                          fround           Vraci zaokrouhlenou hodnotu                    
---------------------------------------------------------------------------------------------------------------------------------------------
FTOINT                          ftoint           Udela int z cehokoli              
---------------------------------------------------------------------------------------------------------------------------------------------
FUPLIMIT                        fuplimit         Vrati uplimit, kdyz je argument vetsi nez              
---------------------------------------------------------------------------------------------------------------------------------------------
FVALUE                          fvalue           Vrati cislo, bere v potaz formatovaci direktivy C a kazda exception (blby znak) je defaultovana
                                                 na 0.0                
---------------------------------------------------------------------------------------------------------------------------------------------
GETRESULT           Y           get_result                     
---------------------------------------------------------------------------------------------------------------------------------------------
GETRESULTICZ        Y           get_resultICZ                  
---------------------------------------------------------------------------------------------------------------------------------------------
HOURS2HHMMSS                    hours2hhmmss     Prepocitava hodiny jako float na hodiny jako string                
---------------------------------------------------------------------------------------------------------------------------------------------
ICITL                           icitl                          
---------------------------------------------------------------------------------------------------------------------------------------------
ISVOID                          isvoid           Vraci 0 nebo 1 podle toho, zda dostane nebo ne poiner na prazdny string               
---------------------------------------------------------------------------------------------------------------------------------------------
ITCOUNT                         itcount          Vraci pocet polozek ve stringu, separator je druhy argument             
---------------------------------------------------------------------------------------------------------------------------------------------
LABUFDUMPTOF        Y           labufdumptof                        
LACLOSEF            Y           laclosef                       
LACREATEDOC         Y           lacreatedoc                    
LACREATEF           Y           lacreatef                      
LADUMPTOF           Y           ladumptof                      
---------------------------------------------------------------------------------------------------------------------------------------------
LAFIRSTNUMBER                   lafirstnumber    Vraci cislo, dokud to jde                  
---------------------------------------------------------------------------------------------------------------------------------------------
LAGETDOC            Y           lagetdoc                       
LAOPENDOC           Y           laopendoc                      
LAPRINTF            Y           laprintf                       
LAPUTDOC            Y           laputdoc                       
---------------------------------------------------------------------------------------------------------------------------------------------
LASTRSTR                        lastrstr         Vraci strstr              
---------------------------------------------------------------------------------------------------------------------------------------------
LASUBSTR                        la_substr        Vraci substr a kasle na omezeni vnitrni implementace substr (kratky string vede k exception)
---------------------------------------------------------------------------------------------------------------------------------------------
LDFILE              Y           ldfile                         
LOADFILE            Y           load_file                      
LOADFILEICZ         Y           load_fileICZ                   
---------------------------------------------------------------------------------------------------------------------------------------------
LOWERCZ                         jl_lower         Konvertuje na mala pismena a to i ceske znaky
---------------------------------------------------------------------------------------------------------------------------------------------
ONEYEAROLD          Y           one_year_old     Vraci barvu Green, Cyan ci Red podle toho, jak je zaznam stary
---------------------------------------------------------------------------------------------------------------------------------------------
PARAM2                          param2           Vraci proste druhy argument
---------------------------------------------------------------------------------------------------------------------------------------------
RDFILE              Y           rd_file                        
---------------------------------------------------------------------------------------------------------------------------------------------
SABLOB2BUF          Y           sablob2buf
---------------------------------------------------------------------------------------------------------------------------------------------
SIR                             fingerprint      Jako argument dostává MEMO citlivostí ve tvaru ATB=X/...|..., vlastně je fuk, zda se jedná
                                                 o MEMO diskoven nebo MICek. Vrací až 50 znaků dlouhý string citlivostí, kterí se dělaly a
                                                 intrpretovaly. Pořadí antibiotik ve výsledném stringu je určeno pořadím v jednořádkovém souboru
                                                 a ten se hledá v /jlabs/is/atb.seq. Jeho default je:
AMC.AMI.AMP.AZI.AZT.CIP.CLI.CLT.CMP.COL.COT.CPD.CRM.CRX.CTR.CTX.CTZ.CXM.CXT.FUR.FSF.ERY.GEN.IMI.LIN.LNZ.MER.MOX.MTR.NAL.NET.NOR.OFL.OXA.OXO.PEF.PEN.PIP.PPT.RIF.STR.TEI.TET.TIC.TIG.TOB.VAN.ADF.AMF.CSF.FLU.ITR.KET.VOR.
                                                 Funkce je určena pro rychlý náhled a rychlou identifikaci, zda se jedná o stejný či rozdílný kmen.
---------------------------------------------------------------------------------------------------------------------------------------------

STDPHONE                        stdphone         Normalizuje zapis cisla na notaci typu +420111222333, uziva se pro SMS brany
SETROOTPREFIX       Y           setrootprefix                  
---------------------------------------------------------------------------------------------------------------------------------------------
SSS                             sss              Udela ze vseho string, trebas i z nullu, pak ''
---------------------------------------------------------------------------------------------------------------------------------------------
STOREFILE                       store_file                     
STRCAT2BUF                      strcat2buf                     
STRCATBLOB2BUF                  strcatblob2buf                 
STRING2BUF                      string2buf                     
STRING2XPORT                    string2xport                   
---------------------------------------------------------------------------------------------------------------------------------------------
SYSADMEVENT                     sysadmevent      Uziva se jen jako znacka do /tmp. ze se jako neco udalo. Typicky to neco spusti od crona
---------------------------------------------------------------------------------------------------------------------------------------------
TOFLOAT                         tofloat          Udela ze vseho float
---------------------------------------------------------------------------------------------------------------------------------------------
TOJOURNAL           Y           tojournal                      
---------------------------------------------------------------------------------------------------------------------------------------------
UBIO_FLAG                       ubio_flag        Udela viditelny flag A/N i z necyplnenych polozek               
---------------------------------------------------------------------------------------------------------------------------------------------
UBIO_LNO                        ubio_lno         Zkrati Labno              
---------------------------------------------------------------------------------------------------------------------------------------------
UBIO_LNO3                       ubio_lno3        Jinak zkrati Labno              
---------------------------------------------------------------------------------------------------------------------------------------------
UPPERCZ                         jl_upper         Zkonvertuje na velka pismena vcetne ceskych               
---------------------------------------------------------------------------------------------------------------------------------------------
VALUEBYNAME                     valuebyname      Snad vezme ze stringu hodnotu X pojmenovanou jak zadano?              
---------------------------------------------------------------------------------------------------------------------------------------------
WRFILE              Y           wr_file                        
XPORT2BUF           Y           xport2buf                      
---------------------------------------------------------------------------------------------------------------------------------------------
ZCITL               Y           zcitl            Vraci zonu pro dane MEMOD a jmeno ATB
---------------------------------------------------------------------------------------------------------------------------------------------

  • Hlavní obsahová stránka / rejstřík

    Aktualizováno dne 20170626 Komentář: info@jlabs.cz


    JLABS Generováno SW © JLabs VaxNt