Home page  
Help >
MBM Command (DDTL)
Version 7.11
MBM Command (DDTL)
   ddtl.exe MBM Command
   
I. The DDTL MBM Diagnostic Command
 
   The ddtl MBM command is a diagnostic exerciser for collections
   and structures. It is one component of the MBM Test Suite which
   consists of:
   . The MBM Test DB and its data;
   . The MBM attach DB and its data;
   . DDTL Procedures;
   . The DDTL MBM Command;
 
   The full MBM test consists of almost 20,000 different tests.
 
   The term MBM is the acronym for Memory Based Bitmap. The Memory 
   Based Bitmap is the third of three collection types. It was at
   this point of the development that this test suite was begun;
   hence the name. 
 
   The MBM Command is itself a command processor with 46 sub-commands.
   The MBM sub-commands are divided into three categories:
   . Category I: 
     . test all collection types singly and in combination;
     . test all boolean operations;
     . test all structure types;
   . Category II:
     . iterators for Category I commands;
   . Category III:
     . test MATCH for all collection types and structure types;
 
II. DDTL MBM Database Definition
 
   The MBM Database Schema contains ten tables;
   eight of which contain specially designed data patterns for construting
   queries with predictable results.
 
   The ninth table, which is named TT contains a list
   of MBM sub-command parameters for the Category II iterator sub commands
   [see below].
 
   The schema for the MBM TT Table [from the file MBM.dbd] is:
      DG TT 100 records
         Operand1     X(8);
         Operand2     X(8);
         Operand3     X(8);
         Operator     X(12);
         Result       X(12);
         Result2      X(12);
         Result3      X(12);
         Result4      X(12);
         Result5      X(12);
 
   The data for the MBM TT Table is located in the document MbmData.htm.
 
   The tenth table, which is named TR, contains a historical record
   for each MBM command that is performed.
 
   The MBM Application Interface contains definitions
   for additional collections and collection types. The additional
   collections are:
      {AM, BM, CM, DM, EM} - MBM Only, no MEMCOLL
      {AW, BW, CW, DW, EW} - Raw (File based bitmap), no MEMCOLL
      {AWM, BWM, CWM, DWM, EWM} - Raw Only, no MEMCOLL
 
   [Note that "Raw Only, no MEMCOLL" is the collection type for
   the ^R system collection.]
 
   The MBM Application Interface also contains two Record Descriptions [RDs].
 
III. DDTL MBM Command Sub-command Definitions
 
   In the following MBM Command definitions, each skeleton is
   followed by its internal explosion.
   <cx1>, <cx-2>, <cx-3> are collections;
   <opcode> is {AND, OR, XOR, EXCEPT, NOTAND}
   <result> is the count of records in the correct result;
 
   wrt Category II commands, Table TT is part of the
   MBM DB schema. It contains predefined sets of Category I parameters
   that are executed by the Category II commands.
 
   If the count of the actual result is not equal <result>,
   an error message is printed.
 
   If either the ALIAS modifier or the ATTACH modifier is specified,
   an alternate table name is used in the explosion:
   . No modifier:      T1
   . ALIAS only:       T1S
   . ATTACH only:      T1A
   . ALIAS and ATTACH: T1AS

   A. Category I MBM Commands
 
      1) FAND          [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3 EQ 100001
         FIND <cx-2> T1 where F5 EQ 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      2) FANDC         [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3 EQ 100001
         FIND <cx-2> T1 where F5 EQ 100004
         FIND/C2000 <cx-3> T1 where <cx-1> <opcode> <cx-2>
      3) RTLAND        [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3rtl EQ 100001
         FIND <cx-2> T1 where F5rtl EQ 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      4) RTBAND        [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3rtb EQ 100001
         FIND <cx-2> T1 where F5rtb EQ 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      5) FANDNE        [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3 NE 100001
         FIND <cx-2> T1 where F5 NE 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      6) RTLANDNE      
         FIND <cx-1> T1 where F3rtl NE 100001
         FIND <cx-2> T1 where F5rtl NE 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      7) RTBANDNE      [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3rtb NE 100001
         FIND <cx-2> T1 where F5rtb NE 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      8) FANDNE        [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3 NE 100001
         FIND <cx-2> T1 where F5 NE 100004
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      9) INDEXBMAND    [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where #F3-100001.cx
         FIND <cx-2> T1 where #F5-100004.cx
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      10) INDEXLSTAND   [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where #F40-100001.cx
         FIND <cx-2> T1 where #F50-100004.cx
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      11) FAND3         [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3 EQ 100001,100002
         FIND <cx-2> T1 where F5 EQ 100003,100004,100005
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      12) RTLAND3       [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3rtl EQ 100001,100002
         FIND <cx-2> T1 where F5rtl EQ 100003,100004,100005
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      13) RTBAND3       [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         FIND <cx-1> T1 where F3rtb EQ 100001,100002
         FIND <cx-2> T1 where F5rtb EQ 100003,100004,100005
         FIND <cx-3> T1 where <cx-1> <opcode> <cx-2>
      14) FANDN         [ALIAS] [ATTACH] <cx-1> <opcode> <result>
         FIND/N <cx-1> T1 where F3 EQ 100001 <opcode> F5 EQ 100004
      15) FANDGLOBAL    [ALIAS] [ATTACH] <cx-1> <opcode> <result>
         FIND/N <cx-1> where F3 EQ 100001 <opcode> F5 EQ 100004
      16) RTLANDGLOBAL  <cx-1> <opcode> <result>
         FIND/N <cx-1> where F3rtl EQ 100001 <opcode> F5rtl EQ 100004
      17) RTBANDGLOBAL  <cx-1> <opcode> <result>
         FIND/N <cx-1> where F3rtb EQ 100001 <opcode> F5rtb EQ 100004
      18) FANDSTART     [ALIAS] [ATTACH] <cx-1> <cx-2> <cx-3> <opcode> <result>
         TALLY/X <cx-1> T1
         PICK/X <cx-3> T1 100 10000
         FIND <cx-2> T1 <cx-2> <opcode> <cx-3>
         TALLY/X <cx2> T1
 
   B. Category II MBM Commands
 
      19) FLOOP         [ALIAS] [ATTACH] [<TT-StartRec> [TT-EndRec>]]
         Perform FAND for each item in TT (Test Table)
      20) FLOOPC        [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform FANDC for each item in TT (Test Table)
      21) RTLLOOP       [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTLAND for each item in TT (Test Table)
      22) RTBLOOP       [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTBAND for each item in TT (Test Table)
      23) FLOOPNE       [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform FANDNE for each item in TT (Test Table)
      24) RTLLOOPNE     [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTLANDNE for each item in TT (Test Table)
      25) RTBLOOPNE     [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTBANDNE for each item in TT (Test Table)
      26) INDEXBMLOOP   [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform INDEXBMAND for each item in TT (Test Table)
      27) INDEXLSTLOOP  [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform INDEXLSTAND for each item in TT (Test Table)
      28) FLOOP3        [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform FAND3 for each item in TT (Test Table)
      29) RTLLOOP3      [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTLAND3 for each item in TT (Test Table)
      30) RTBLOOP3      [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTBAND3 for each item in TT (Test Table)
      31) FLOOPN        [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform FANDN for each item in TT (Test Table)
      32) FLOOPGLOBAL   [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform FANDGLOBAL for each item in TT (Test Table)
      33) RTLLOOPGLOBAL [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTLANDGLOBAL for each item in TT (Test Table)
      34) RTBLOOPGLOBAL [ALIAS] [ATTACH] [<TT-StartRec> [<TT-EndRec>]]
         Perform RTBANDGLOBAL for each item in TT (Test Table)
 
   C. Category III MBM Commands
 
      35) MTEST1        <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3 with T1
         TALLY/X <cx> T1
      36) MTEST1        ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3 with T1S
         TALLY/X <cx> T1S
      37) MTEST2        <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         MATCH/<Option> <cx> T1 thru F3 with T1
         TALLY/X <cx> T1
      38) MTEST2        ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         MATCH/<Option> <cx> T1S thru F3 with T1
         TALLY/X <cx> T1
      39) MTEST3        <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3 with V1 on G3
         TALLY/X <cx> V1
      40) MTEST3        ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1S
         MATCH/<Option> <cx> T1 thru F3 with V1S on G3
         TALLY/X <cx> V1S
      41) MTEST4        <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3 with V1 on G3
         TALLY/X <cx> V1
      42) MTEST4        ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1S thru F3 with V1 on G3
         TALLY/X <cx> V1
      43) MTEST1RTL     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3rtl with T1
         TALLY/X <cx> T1
      44) MTEST1RTL     ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3rtl with T1S
         TALLY/X <cx> T1S
      45) MTEST2RTL     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         MATCH/<Option> <cx> T1 thru F3rtl with T1
         TALLY/X <cx> T1
      46) MTEST2RTL     ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         MATCH/<Option> <cx> T1S thru F3rtl with T1
         TALLY/X <cx> T1
      47) MTEST3RTL     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3rtl with V1 on G3rtl
         TALLY/X <cx> V1
      48) MTEST3RTL     ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1S
         MATCH/<Option> <cx> T1 thru F3rtl with V1S on G3
         TALLY/X <cx> V1S
      49) MTEST4RTL     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3rtl with V1 on G3rtl
         TALLY/X <cx> V1
      50) MTEST4RTL     ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1S thru F3rtl with V1 on G3
         TALLY/X <cx> V1
      51) MTEST1RTB     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3rtb with T1
         TALLY/X <cx> T1
      52) MTEST1RTB     ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3rtb with T1S
         TALLY/X <cx> T1S
      53) MTEST2RTB     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         MATCH/<Option> <cx> T1 thru F3rtb with T1
         TALLY/X <cx> T1
      54) MTEST2RTB     ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         MATCH/<Option> <cx> T1S thru F3rtb with T1
         TALLY/X <cx> T1
      55) MTEST3RTB     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3rtb with V1 on G3rtb
         TALLY/X <cx> V1
      56) MTEST3RTB     ALIAS <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         CLEAR <cx> V1S
         MATCH/<Option> <cx> T1 thru F3rtb with V1S on G3
         TALLY/X <cx> V1S
      57) MTEST4RTB     <cx> [<Option>]
         PICK <cx> T1 3
         PICK/R <cx> T1 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1 thru F3rtb with V1 on G3rtb
         TALLY/X <cx> V1
      58) MTEST4RTB     ALIAS <cx> [<Option>]
         PICK <cx> T1S 3
         PICK/R <cx> T1S 5
         CLEAR <cx> V1
         MATCH/<Option> <cx> T1S thru F3rtb with V1 on G3
         TALLY/X <cx> V1
      59) MTEST1D       <cx> <Option>
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3 F4 with T1
         TALLY/X <cx> T1
      60) MTEST1D       ALIAS <cx> <Option>
         PICK <cx> T1 3
         PICK/R <cx> T1 6
         MATCH/<Option> <cx> T1 thru F3 F4 with T1S
         TALLY/X <cx> T1S
 
IV. DDTL MBM Top Level Procedures
 
   . All1.u   - perform [Multiple iterations]
      FLOOP
      FLOOPC
      FLOOPNE
      RTLLOOP
      RTLLOOPNE
      RTBLOOP
      RTBLOOPNE
      INDEXBMLOOP
      INDEXLSTLOOP
   . All3.u   - perform [Multiple iterations]
      FLOOP3
      RTLLOOP3
      RTBLOOP3
   . AllA.u   - same as All1.u plus ATTACH modifier [Multiple iterations]
   . AllA1.u  - same as All1.u plus ALIAS modifier [Multiple iterations]
   . AllAS.u  - same as All1.u plus ALIAS and ATTACH modifiers [Multiple iterations]
   . AllAS1.u - same as All1.u plus ALIAS and ATTACH modifiers [Single iterations]
   . AllGlobal.u - perform [Multiple iterations]
      FLOOPGLOBAL
      RTLLOOPGLOBAL
      RTBLOOPGLOBAL
   . AllM.u   - perform [Multiple iterations]
      Mtest1 cx {%1}         - for cx = {A, AM, AW, AWM}
      Mtest1rtl cx {%1}      - for {A, AM, AW, AMW}
      Mtest1rtb cx {%1}      - for {A, AM, AW, AMW}
      Mtest2 cx {%1}         - for {A, AM, AW, AMW}
      Mtest2rtl cx {%1}      - for {A, AM, AW, AMW}
      Mtest2rtb cx {%1}      - for {A, AM, AW, AMW}
      Mtest3 cx {%1}         - for {A, AM, AW, AMW}
      Mtest3rtl cx {%1}      - for {A, AM, AW, AMW}
      Mtest3rtb cx {%1}      - for {A, AM, AW, AMW}
      Mtest4 cx {%1}         - for {A, AM, AW, AMW}
      Mtest4Rtl cx {%1}      - for {A, AM, AW, AMW}
      Mtest4Rtb cx {%1}      - for {A, AM, AW, AMW}
      Mtest1D cx {%1}        - for {A, AM, AW, AMW}
 
V. Additional tests needed as of TB API 8.0.123
  
   . Unary NOT on FIND;
   . MatchEx
   . Cross Data Types on MATCH & MatchEx
 

Copyright © 2019 , WhamTech, Inc.  All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. Names may be trademarks of their respective owners.