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.