Tabulka víceúrovňového číselníku (CBML)

Tabulka víceúrovňového číselníku. Tuto tabulku používá personální program Personal . Jedná se o klienta aplikačního serveru SDPam . V makrojazyku se k těmto větám přistupuje pomocí klíčového slova CISUR .

Stavba věty:

ČísNázev položkyTyp položkySloupecMakroIdx
1 Ident Longint IDENT dbIdent *
2 Attr Longint XATTR dbAttr  
3 Skupina číselníku Longint XCBNID cisurSkup
4 Úroveň 1 Longint XL1 cisurL1  
5 Úroveň 2 Longint XL2 cisurL2  
6 Úroveň 3 Longint XL3 cisurL3  
7 Úroveň 4 Longint XL4 cisurL4  
8 Úroveň 5 Longint XL5 cisurL5  
9 Úroveň 6 Longint XL6 cisurL6  
10 Info, jestli je to závěrečná věta. Jestliže ano (1) je obsah v tabulce MSG přes ident XDATAID. Longint XLAST cisurLast  
11

Nadpis pro skupinu koncových vět
(XLAST = 0).

String[255] XTEXT cisurText  
12 Ident z tabulky dlouhých textů MSG
(XLAST = 1).
Longint XDATAID cisurDataId  
13 Jedinečný identifikátor String[22] XUID cisurUid *

Indexy:

dbIdent IDENT
cisurSkup XCBNID
cisurL1 XCBNID, XL1, XL2, XL3, XL4, XL5, XL6
cisurUid XUID

Příklad:

procedure AddCisUr( nSkup   : Byte; 
                    strUid  : String[22]; 
                    nL1     : Byte;
                    nL2     : Byte; 
                    nL3     : Byte;
                    nL4     : Byte;
                    nL5     : Byte;
                    nL6     : Byte;
                    nLast   : Byte;
                    strText : String;
                    strDta1 : String;
                    strDta2 : String;
                    strDta3 : String;
                    strDta4 : String;
                    strDta5 : String)
  dim nDataId : Longint;
  if _AddRec(dbtCisUr) then
    cisur[cisurSkup] := nSkup;
    cisur[cisurUid]  := strUid; 
    cisur[cisurL1]   := nL1; 
    cisur[cisurL2]   := nL2;
    cisur[cisurL3]   := nL3;
    cisur[cisurL4]   := nL4;
    cisur[cisurL5]   := nL5;
    cisur[cisurL6]   := nL6; 
    cisur[cisurLast] := nLast;
    cisur[cisurText] := strText;
    nDataId := 0;
    if strDta1 <> "" then
      if _AddRec(dbtMsg) then 
        _MsgAddLine(strDta1); 
        if strDta2 <> "" then
          _MsgAddLine(strDta2);
        endif
        if strDta3 <> "" then
          _MsgAddLine(strDta3); 
        endif
        if strDta4 <> "" then
          _MsgAddLine(strDta4);
        endif 
        if strDta5 <> "" then
          _MsgAddLine(strDta5);
        endif
        nDataId := Msg[dbIdent]; 
      else 
        _MsgBox(1,"Nelze přidat poznámku",0);
      endif 
    endif
    cisur[cisurDataId] := nDataId; 
  else 
    _MsgBox(1,"Nelze přidat číselník 'CisUr'",0);
  endif
endproc

Příklad tabulky: