The document discusses decision tables as a programming tool. It provides a brief history of decision table usage, describes common decision table structures and formats, and discusses techniques for simplifying, optimizing and generating code from decision tables. Examples are given of decision table usage for tasks like order processing and discount calculation. The speaker's background and the capabilities of RapidGen's decision table language are also summarized.
TeamStation AI System Report LATAM IT Salaries 2024
Decision Tables as a Programming Tool Overview
1. rapidgen.com
Decision Tables as a
Programming tool
Howard Rogers
Director Technical Support
howard.rogers@rapidgen.com
2. Agenda
• A brief history
• Decision table structures
• Rule formats
• Rule redundancy, reduction and optimisation
• Relevance testing
• Some practical examples
• Current examples of use
• Future developments
• Questions and Answers
rapidgen.com
2
3. Speaker
• Statistics & Operation Research
• UK National Health Service
• 35 years IT
• Decision table based languages and compilers
• Query & reporting tools
• Generic file & database access
• Brief interlude with RTPI
• Technical support
rapidgen.com
3
4. History
• NASA
• Morgan Crucible – LITA – List &Tabulate
• TABN for ICL 1900 series mainframes
• (DE)TAB-360 for IBM System/360
• UNITAB for UNIVAC
• HTAB for Honeywell
• TAB-11 for RSTS/E on PDP-11
• FTL6/DTPL for ICT 1900 series
• RPL-11 for RT-11, RSTS/E, RSX-11 on PDP-11
• RPL-3 for IBM System/3
• Filetab-D for x86 and PDP-11, OpenVMS VAX
• FPL - IBM PCs and compatibles.
• RPL, Rapid-Expert and expertGenius extended syntax for Microsoft
Windows, Unix, Linux and OpenVMS,VAX, Alpha & Itanium
rapidgen.com
4
5. History
• Excel – query tables
• COPE – Translate DTs to COBOL
• LogicGEM – Translate to BASIC,C, C++, FORTRAN, Pascal etc etc
• CCIDE – Pre-processor for BASIC, JAVA, CC, C++, BASH, QB, VB,
and EX(euphoria)
• Silk (Simple In-line Logic Kompiler) converting decision tables to
Cobol code and vice versa.
• PASPREP – Pascal preprocessor
• Many many others
rapidgen.com
5
7. Single Condition Decision Table
Condition Stubs Rules
Action Stubs Actions
Quantity > 100 Y N
Apply 20% Discount X -
rapidgen.com
7
8. Quantity > 100 Apply 20% Discount
Y
N
rapidgen.com
Decision Tables
Horizontal vs Vertical
Condition Stubs Action Stubs
Rules Actions
8
X
-
9. Multiple Single Decision Table
Condition Stubs Rules
Action Stubs Actions
rapidgen.com
Quantity > 100 Y Y N N
Cash payment Y N Y N
Apply 20% Discount X - - -
Apply 10% Discount - X - -
Apply 5% Discount - - X -
No discount - - - -
9
10. Multiple Condition DTs
• Complete True/False Y N require
2^Conditions rules
• 3 Conditions – 8 rules
• 4 Conditions – 16 rules
• etc
• Use of “-” to reduce completeness
• Practical limit 32
rapidgen.com
10
11. Five Conditions – One rule
Initially no discount
Quantity > 100 Y -
Cash payment Y -
Credit_check Y -
Product type is laptop Y -
Employee N -
Apply 5% Discount X -
rapidgen.com
11
12. Multiple Section Decision Table
Quantity > 100 Y Y N N
Cash payment Y N Y N
Apply 20% Discount X - - -
Apply 10% Discount - X - -
Apply 5% Discount - - X -
No discount - - - -
Discount_amount < $1 Y -
No discount X -
Discount amount > $1000 Y -
Set discount $1000 X -
rapidgen.com
12
13. Simplifying Decision Tables 1
rapidgen.com
1 2 3 4 5 6 7 8
13
Credit limit
exceeded
Y Y Y Y N N N N
Cash payment Y Y N N Y Y N N
Special clearance Y N Y N Y N Y N
Accept order X X X - X X X X
Reject Order - - - X - - - -
14. Simplifying Decision Tables 2
rapidgen.com
1&2 3 4 5 6 7 8
14
Credit limit
exceeded
Y Y Y N N N N
Cash payment Y N N Y Y N N
Special clearance - Y N Y N Y N
Accept order X X - X X X X
Reject Order - - X - - - -
15. Simplifying Decision Tables 3
rapidgen.com
1&2 3 4 5&6 7&8
15
Credit limit
exceeded
Y Y Y N N
Cash payment Y N N Y N
Special clearance - Y N - -
Accept order X X - X X
Reject Order - - X - -
16. Simplifying Decision Tables 4
rapidgen.com
1&2 3 4 567&8
16
Credit limit
exceeded
Y Y Y N
Cash payment Y N N -
Special clearance - Y N -
Accept order X X - X
Reject Order - - X -
17. Simplifying Decision Tables 5
rapidgen.com
17
4 123567&8
Credit limit
exceeded
Y ELSE
Cash payment N -
Special clearance N -
Accept order - X
Reject Order X -
18. Optimising Decision Tables
rapidgen.com
1 2 3 4 5 6 7 8
18
Credit limit
exceeded
Y Y Y Y N N N N
Cash payment Y Y N N Y Y N N
Special clearance Y N Y N Y N Y N
Accept order X - X - X X X X
Reject Order - X - X - - - -
2&4 123567&8
Credit limit
exceeded
Y ELSE
Special clearance N -
Accept order - X
Reject Order X -
19. ELSE Rule
rapidgen.com
19
4 123567&8
Credit limit
exceeded
Y ELSE
Cash payment N -
Special clearance N -
Accept order - X
Reject Order X -
20. Simplifying Decision Tables –
Extended entry
TRANSKEY GT MASTKEY Y - - - ELSE
TRANSKEY EQ MASTKEY - Y Y - -
TRANSKEY LT MASTKEY - - - Y -
TRANSTYPE = “I” - - - Y -
TRANSTYPE = “D” - - Y - -
TRANSTYPE = “A” - Y - - -
CALL PROCESS_MATCH - X - - -
CALL PROCESS_MISS - - X - -
CALL PROCESS_ADD - - - X -
CALL NEXT_TRANS - X X X -
CALL NEXT_MAST X X X - -
REPEAT X X X X -
rapidgen.com
20
21. Simplifying Decision Tables –
Extended entry
TRANSKEY ? MASTKEY > = = < ELSE
TRANSTYPE = “?” - A D I -
CALL PROCESS_? - MATCH MISS ADD -
CALL NEXT_TRANS - X X X -
CALL NEXT_MAST X X X - -
REPEAT X X X X -
rapidgen.com
21
22. Ambiguity or Multi-ruling?
rapidgen.com
22
Set discount
Initialise DISCOUNT_PERC
Cash payment Y - - -
Special offer - Y - -
Good credit history - - Y -
DISCOUNT_PERC + ? 5 10 2 -
32. rapidgen.com
Generation – Rule Mask
32
{Mask = 11111111
{if ( Cash payment)
Mask AND 11110000;
}
{if ( Special Offer)
Mask AND 11001100;
}
{if (Good credit history)
Mask AND 10101010;
}
{if (Mask AND 11110000)
Discount + 5 ;
}
if (Mask AND 11001100)
Discount + 10;
}
if (Mask AND 10101010)
Discount + 2;
}
33. • Succinct code
• Reduces repetition of condition testing
• Reduced repetition of action code
• Fast execution
• No frequency/cost weighting of rules
needed
• All conditions are evaluated
rapidgen.com
Rule masking
33
34. AGE > 50 Y - -
CALL ADJUST_COVER Y - -
TRANSKEY LT MASTKEY - Y -
LOOKUP MASTER TRANSKEY - Y -
rapidgen.com
Relevance Testing
Some operations require dynamic masking where actions
may be performed or I/O occurs
34
35. AGE > 50 Y - -
COVER + 20 R - -
TRANSKEY LT MASTKEY - Y -
DISPLAY “Message” - R -
rapidgen.com
Relevance Testing
Dynamic masking again needed when Actions are inserted
into condition section of Decision Table using “R”
35
36. CALL Credit_limit_exceeded Y ELSE
CALL Cash_payment N -
CALL Special_clearance N -
CALL ACCEPT_ORDER - X
CALL REJECT_ORDER X -
CALL Credit_limit_exceeded Y ELSE
CALL Cash_payment N -
CALL Special_clearance N -
GOTO ACCEPT_ORDER - X
CALL_I Variable_name X -
rapidgen.com
Decision table linkage
CALLs to other DTs or object library routines
GOTO link to DT or indirect CALL
36
37. Requirements of a DT language
• Feature rich language
• Support for multiple data types
• Unmatched data type comparison
• Good string handling/text manipulation
• Access external routines/library functions
• File, database, object and data dictionary
• Callable access from other products
• Source code maintenance, version control
• Compiled and portable execution
rapidgen.com
37
38. Decision Tables in other products
• Uses GUI in SAP HANA Studio
• SAP Parameter/Database DTs
• Alternate use via Excel spreadsheets
• SMARTS
• OpenRules Engine
• Decision First Modeler
• Drools
• Many more …
rapidgen.com
38
39. Usage of RPL - expertGenius
• Self compiling
• Cross compiling
• Source of Genius Suite
• Code writing and compiling 4GL and RAD
toolset
• Complete layered application suites
• Reporting – fixed logic
rapidgen.com
39
40. Genius deployment
• Aerospace factory tracking systems
• Mobile phone billing systems
• Payroll data mining
• HR system ad-hoc querying
• Newspaper distribution system
• Stock control
• Sales order dashboard & EIS
• Web based on-line parts ordering
rapidgen.com
40
41. CDT Callable Decision Tables
• Simple calculator
• Calculator code
• Tax formula (UK)
• Tax calculator
• Tax code
• CDT Callable access from other
languages and applications
rapidgen.com
41
42. Future developments
• Extend range of generic database access
• Ports to new architectures
• Macro expansions for FEEL or S-FEEL
• GUI extensions
• CDT Callable access from other
languages and applications
• Cloud based compiler
rapidgen.com
42
43. rapidgen.com
Decision Tables as a
Programming tool
Howard Rogers
Director Technical Support
howard.rogers@rapidgen.com
howard.rogers@rapidgen.co.uk