SlideShare a Scribd company logo
rapidgen.com 
Howard Rogers 
Director Technical Support 
howard.rogers@rapidgen.com 
Decision Tables as a Programming tool
rapidgen.com 
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 
2
rapidgen.com 
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 
3
rapidgen.com 
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 
4
rapidgen.com 
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 
5
rapidgen.com 
Decision table structure 
•Conditions 
•Actions 
•Condition rules 
•Action rules 
6
rapidgen.com 
Single Condition Decision Table 
Condition Stubs 
Rules 
Action Stubs 
Actions 
7 
Quantity > 100 
Y N 
Apply 20% Discount 
X -
rapidgen.com 
Decision Tables Horizontal vs Vertical 
Condition Stubs 
Action Stubs 
Rules 
Actions 
8 
Quantity > 100 
Apply 20% Discount 
Y 
N 
X 
-
rapidgen.com 
Multiple Single Decision Table 
Condition Stubs 
Rules 
Action Stubs 
Actions 
9 
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 
- - - -
rapidgen.com 
Multiple Condition DTs 
10 
•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 
Five Conditions – One rule 
11 
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 
Multiple Section Decision Table 
12 
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 
Simplifying Decision Tables 1 
13 
1 2 3 4 5 6 7 8 
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 - - - -
rapidgen.com 
Simplifying Decision Tables 2 
14 
1&2 3 4 5 6 7 8 
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 - - - -
rapidgen.com 
Simplifying Decision Tables 3 
15 
1&2 3 4 5&6 7&8 
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 - -
rapidgen.com 
Simplifying Decision Tables 4 
16 
1&2 3 4 567&8 
Credit limit exceeded 
Y Y Y N 
Cash payment 
Y N N - 
Special clearance 
- Y N - 
Accept order 
X X - X 
Reject Order 
- - X -
rapidgen.com 
Simplifying Decision Tables 5 
17 
4 123567&8 
Credit limit exceeded 
Y ELSE 
Cash payment 
N - 
Special clearance 
N - 
Accept order 
- X 
Reject Order 
X -
rapidgen.com 
Optimising Decision Tables 
18 
1 2 3 4 5 6 7 8 
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 -
rapidgen.com 
ELSE Rule 
19 
4 123567&8 
Credit limit exceeded 
Y ELSE 
Cash payment 
N - 
Special clearance 
N - 
Accept order 
- X 
Reject Order 
X -
rapidgen.com 
Simplifying Decision Tables – Extended entry 
20 
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 
Simplifying Decision Tables – Extended entry 
21 
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 
Ambiguity or Multi-ruling? 
22 
Set discount 
Initialise DISCOUNT_PERC 
Cash payment 
Y - - - 
Special offer 
- Y - - 
Good credit history 
- - Y - 
DISCOUNT_PERC + ? 
5 10 2 -
rapidgen.com 
Code generation 1 
23 
|--------------------------------------------------| 
|--------------------------------------------------| 
|# |STATEMENT 1 2 3 4 5 6 7 8 | 
|--------------------------------------------------| 
|C1 |Cash payment |y |y |y |y |n |n |n |n | 
|C2 |Special offer |y |y |n |n |y |y |n |n | 
|C3 |Good credit history |y |n |y |n |y |n |y |n | 
|==================================================| 
|A1 |Discount initialise | | | | | | | | | 
|A2 |Discount + 5 |X |X |X |X | | | | | 
|A3 |Discount + 10 |X |X | | |X |X | | | 
|A4 |Discount + 2 |X | |X | |X | |X | | 
|--------------------------------------------------|
rapidgen.com 
Generation – Nested If/else 1 
24 
{ 
if ((Cash payment)) { 
if ((Special offer)) { 
if ((Good credit history)) { 
/* rule 1 */ 
Discount + 5; 
Discount + 10; 
Discount + 2; } 
else { 
/* rule 2 */ 
Discount + 5; 
Discount + 10; } 
} 
else { 
if ((Good credit history)) { 
/* rule 3 */ 
Discount + 5; 
Discount + 2; } 
else { 
/* rule 4 */ 
Discount + 5; 
} 
} 
} 
else {
rapidgen.com 
Generation – Nested If/else 2 
25 
if ((Special offer)) { 
if ((Good credit history)) { 
/* rule 5 */ 
Discount + 10; 
Discount + 2; 
} 
else { 
/* rule 6 */ 
Discount + 10; 
} 
} 
else { 
if ((Good credit history)) { 
/* rule 7 */ 
Discount + 2; 
} 
else { 
/* rule 8 */ 
} 
} 
} 
}
rapidgen.com 
Generation – Case Switch 1 
26 
{ 
if ((Cash payment)) { 
if ((Special offer)) { 
if ((Good credit history)) { 
rule_number = 1; 
} 
else { 
rule_number = 2; 
} 
} 
else { 
if ((Good credit history)) { 
rule_number = 3; 
} 
else { 
rule_number = 4; 
} 
} 
}
rapidgen.com 
Generation – Case Switch 2 
27 
else { 
if ((Special offer)) { 
if ((Good credit history)) { 
rule_number = 5; 
} 
else { 
rule_number = 6; 
} 
} 
else { 
if ((Good credit history)) { 
rule_number = 7; 
} 
else { 
rule_number = 8; 
} 
} 
}
rapidgen.com 
Generation – Case Switch 3 
28 
switch (rule_number) { 
case 1: 
Discount + 5; 
Discount + 10 ; 
Discount + 2; 
break; 
case 2: 
Discount + 5; 
Discount + 10; 
break; 
case 3: 
Discount + 5; 
Discount + 2; 
break; 
case 4: 
Discount + 5; 
break;
rapidgen.com 
Generation – Case Switch 4 
29 
case 5: 
Discount + 10; 
Discount + 2; 
break; 
case 6: 
Discount + 10; 
break; 
case 7: 
Discount + 2; 
break; 
case 8: 
break; }
rapidgen.com 
Generation – Rule List 1 
30 
{ 
if ( ((Cash payment)) && 
((Special offer)) && 
((Good credit history)) ) { 
Discount + 5; Discount + 10; Discount + 2; 
} 
if ( ((Cash payment)) && 
((Special offer)) && 
(!(Good credit history)) ) { 
Discount + 5; Discount + 10; 
} 
if ( ((Cash payment)) && 
(!(Special offer)) && 
((Good credit history)) ) { 
Discount + 5; Discount + 2; 
} 
if ( ((Cash payment)) && 
(!(Special offer)) && 
(!(Good credit history)) ) { 
Discount + 5; 
}
rapidgen.com 
Generation – Rule List 2 
31 
if ( (!(Cash payment)) && 
((Special offer)) && 
((Good credit history)) ) { 
Discount + 10; Discount + 2; 
} 
if ( (!(Cash payment)) && 
((Special offer)) && 
(!(Good credit history)) ) { 
Discount + 10; 
} 
if ( (!(Cash payment)) && 
(!(Special offer)) && 
((Good credit history)) ) { 
Discount + 2; 
} 
if ( (!(Cash payment)) && 
(!(Special offer)) && 
(!(Good credit history)) ) { 
} 
}
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; 
}
rapidgen.com 
Rule masking 
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 
Relevance Testing 
34 
AGE > 50 
Y - - 
CALL ADJUST_COVER 
Y - - 
TRANSKEY LT MASTKEY 
- Y - 
LOOKUP MASTER TRANSKEY 
- Y - 
Some operations require dynamic masking where actions may be performed or I/O occurs
rapidgen.com 
Relevance Testing 
35 
AGE > 50 
Y - - 
COVER + 20 
R - - 
TRANSKEY LT MASTKEY 
- Y - 
DISPLAY “Message” 
- R - 
Dynamic masking again needed when Actions are inserted into condition section of Decision Table using “R”
rapidgen.com 
Decision table linkage 
36 
CALLs to other DTs or object library routines 
CALL Credit_limit_exceeded 
Y ELSE 
CALL Cash_payment 
N - 
CALL Special_clearance 
N - 
CALL ACCEPT_ORDER 
- X 
CALL REJECT_ORDER 
X - 
GOTO link to DT or indirect CALL 
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 
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 
37
rapidgen.com 
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 … 
38
rapidgen.com 
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 
39
rapidgen.com 
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 
40
rapidgen.com 
CDT Callable Decision Tables 
•Simple calculator 
•Calculator code 
•Tax formula (UK) 
•Tax calculator 
•Tax code 
•CDT Callable access from other languages and applications 
41
rapidgen.com 
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 
42
rapidgen.com 
Questions 
? 
43
rapidgen.com 
Howard Rogers 
Director Technical Support 
howard.rogers@rapidgen.com 
howard.rogers@rapidgen.co.uk 
Decision Tables as a Programming tool
rapidgen.com 
Filetab 
•DEcision TABle-based computer programming language. 
•Long history originating in late 1960s 
•Developed by the UK National Computing Centre (NCC) 
•Originally used on ICL OS such as GEORGE 2/3 and VME, 
•Ported to a large number of others. 
45
rapidgen.com 
Filetab 
•Original architect - Tom Barnard, who developed the program (LITA - LIst and TAbulate) for Morgan Crucible on an ICL 1902 from 1965–1968. Original purpose was to produce simple ad hoc reports with a plugboard on a punched card tabulator, replaced PLAN assembly language. 
•80 column card based parameters 
•Reporting tool specifying input and output formats, headings, sequencing and totalling. 
46
rapidgen.com 
RapidGen Solutions 
RapidGen solves tough integration problems for OpenVMS customers 
• A variety of flexible options available 
–Analyse and provide ‘Customised Solutions’ 
–Future Proofing options with RapidGen 
• In-depth Legacy expertise 
• Services + Software 
–OpenVMS to Linux Migration Routines 
•Databases and Porting 
•Data Structures migration 
47
rapidgen.com 
What Customers Tell Us 
Want to preserve, modernize or replace 
• Total cost of ownership 
• Risk, flexibility 
…but difficult 
• Bespoke or end-of-life applications 
• Custom interfaces issues 
• Skills shortage becoming more evident 
• Application Changes not permitted 
–E.g. Aerospace, Defence, Nuclear, Utilities 
48
rapidgen.com 
Customers Want Flexibility They Need Options 
Choices 
1.Update OpenVMS 
–Until end of 2015 
2.Modernise 
–Translate data 
–Translate logic 
–Redefine logic in 4GL 
–Redevelop 
–Seamless Transition 
3.Emulation Options 
–Reduce Operating Costs 
–Suitable for some 
Want 
•Proceed in stages 
–Reduces risk 
•Integration 
–Legacy ↔ Modern 
•Portability 
–Future-proof 
•Cost-effective Solutions 
49
rapidgen.com 
HP Forward-looking statements 
Published Jan 2014 
This is a rolling (up to three year) roadmap and is subject to change without notice. 
50
rapidgen.com 
HP Forward-looking statements 
51
rapidgen.com 
Example of HANA parameter DT 
QUANTITY 
ORDER_AMOUNT 
DISCOUNT 
<=2000 
>10000 
10 
<=10000 
5 
>2000 
>10000 
15 
<=10000 
10 
52
rapidgen.com 
Example of HANA Database DT 
MANUFACTURER 
MODEL_CLASS 
QUANTITY 
DISCOUNT 
Sprongal 
Handset 
>5 
25 
<=5 
10 
Notebook 
>5 
15 
<=5 
10 
Pruckman 
Tablet 
>5 
15 
<=5 
8 
Range Extender 
>5 
10 
<=5 
5 
53
rapidgen.com 
HP Forward-looking statements 
54
rapidgen.com 
Genius Supported Platforms 
55 
Operating System 
Platforms 
Min. Version 
OpenVMS 
VAX 
5.6 
OpenVMS 
Alpha 
6.1 
OpenVMS 
Integrity / Itanium 
* 
Tru64 
Alpha 
4.0 
HP-UX 
HP PA 
9.x 
Windows 
Intel/AMD 32/64 
2000 
Linux 
•Red Hat, Debian, SUSE, Ubuntu, Fedora, Knoppix, Gentoo etc 
Intel/AMD 32/64 
2.6.18 kernel
rapidgen.com 
Genius Supported File Types & Databases 
56 
OpenVMS 
Tru64 
Windows 
Linux 
RMS Indexed 
✔ 
via TCP/IP 
via TCP/IP 
ISAM 
✔ 
✔ 
✔ 
✔ 
Oracle RDB 
•via DSRI 
✔ 
Oracle 
•via OCI 
✔ 
✔ 
✔ 
✔ 
DBMS-32 
•Codasyl 
✔ 
Generic ODBC 
•SQL Server 
•MySQL 
•PostgreSQL 
•…others on request 
✔ 
✔ 
Ingres 
•Low-level API 
✔ 
✔ 
✔
rapidgen.com 
• Howard Rogers 
• Jolyon Cox 
QUESTIONS
rapidgen.com 
Howard Rogers 
howard.rogers@rapidgen.com 
Tel: +44 (0) 1732 850081 
Mob: +44 (0) 7734 962855 
Providing Solutions and Options For OpenVMS Customers 
RapidGen Offices 
Info@RapidGen.com 
Tel: +44 (0) 207 630 9291
rapidgen.com 
About RapidGen 
•Integrating and modernizing legacy IT systems for over 30 years 
•Specialise in OpenVMS and Tru64 
•Software is Powered by the ‘Genius’ Suite 
•Our USP Unique Selling Point – Decision Tables = 
–Rapid Development Turnaround 
–Providing Cost Effective Solutions 
–Applications Future Proofing 
59
rapidgen.com 
Customers in EMEA include

More Related Content

PDF
Decision Tables as a Programming Tool
PDF
Implementing Blackbox Testing
PPT
Black Box Testing
PPT
Test Planning
PPT
Test planning
DOC
Test plan
PDF
Test plan
PPTX
Decision Tables as a Programming Tool
Implementing Blackbox Testing
Black Box Testing
Test Planning
Test planning
Test plan
Test plan

Similar to Decision CAMP 2014 - Howard Rogers - Programming with decision tables v01 (20)

PDF
Business rules in decision management systems
DOCX
C notes mca i sem 2011
PPTX
Boston 16 03
PDF
How to Build Decision Management Systems Part 2 Decision services
PPTX
Decision table
PDF
Deploying analytics with a rules based infrastructure pawcon sf 2011
PDF
Legacy modernization with decision management and business rules
PPT
Decision table
PPTX
Introduction to Information System
PDF
Agile needs resurgence of visual modeling
PDF
Integrating Business Rules and Business Processes
PPT
The systems life cycle
PPT
Obey The Rules: Implementing a Rules Engine in Flex
PPTX
Expense Manager Application in JAVA
PPTX
Types o f information systems
PPT
Mis Expert System Jisha
PPT
Flex 360 Rules Engine
PPT
Flex 360 Rules Engine
PDF
Pay Genie Lr
PDF
Object-oriented analysis and design - questions and answers
Business rules in decision management systems
C notes mca i sem 2011
Boston 16 03
How to Build Decision Management Systems Part 2 Decision services
Decision table
Deploying analytics with a rules based infrastructure pawcon sf 2011
Legacy modernization with decision management and business rules
Decision table
Introduction to Information System
Agile needs resurgence of visual modeling
Integrating Business Rules and Business Processes
The systems life cycle
Obey The Rules: Implementing a Rules Engine in Flex
Expense Manager Application in JAVA
Types o f information systems
Mis Expert System Jisha
Flex 360 Rules Engine
Flex 360 Rules Engine
Pay Genie Lr
Object-oriented analysis and design - questions and answers
Ad

More from Decision CAMP (13)

PDF
Decision CAMP 2014 - Charles Forgy - Affecting rules performance
PPTX
Decision CAMP 2014 - Erik Marutian - Using rules-based gui framework to power...
PDF
Decision CAMP 2014 - James Taylor - Decision Management 101
PDF
Decision CAMP 2014 - Benjamin Grosof Janine Bloomfield - Explanation-based E-...
PDF
Decision CAMP 2014 - Mariano de Maio
PPTX
Decision CAMP 2014 - Carole-Ann Berlioz-Matignon - Preparing for exceptional ...
PDF
Decision CAMP 2014 - Jacob Feldman - Building Domain-Specific Decision Models
PPTX
Decision CAMP 2014 - Tobias Vigmostad - Digitalizing Business and Legislative...
PPTX
Decision CAMP 2014 - Decision Management Challenge - Sparkling Logic
PPTX
Decision Camp 2013 - Ouyang Ming - PayPal - stopping fraud early
PPT
Decision CAMP 2013 - sako hidetoshi - blaze consulting japan - Using Business...
PPTX
Decision CAMP 2013 - shash hegde - mariner - Is this Skynet? Giving machines ...
PDF
Decision CAMP 2013 - christian middleton - jawbone - Facts, Rules, and Constr...
Decision CAMP 2014 - Charles Forgy - Affecting rules performance
Decision CAMP 2014 - Erik Marutian - Using rules-based gui framework to power...
Decision CAMP 2014 - James Taylor - Decision Management 101
Decision CAMP 2014 - Benjamin Grosof Janine Bloomfield - Explanation-based E-...
Decision CAMP 2014 - Mariano de Maio
Decision CAMP 2014 - Carole-Ann Berlioz-Matignon - Preparing for exceptional ...
Decision CAMP 2014 - Jacob Feldman - Building Domain-Specific Decision Models
Decision CAMP 2014 - Tobias Vigmostad - Digitalizing Business and Legislative...
Decision CAMP 2014 - Decision Management Challenge - Sparkling Logic
Decision Camp 2013 - Ouyang Ming - PayPal - stopping fraud early
Decision CAMP 2013 - sako hidetoshi - blaze consulting japan - Using Business...
Decision CAMP 2013 - shash hegde - mariner - Is this Skynet? Giving machines ...
Decision CAMP 2013 - christian middleton - jawbone - Facts, Rules, and Constr...
Ad

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
OMC Textile Division Presentation 2021.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPT
Teaching material agriculture food technology
PDF
Getting Started with Data Integration: FME Form 101
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Encapsulation theory and applications.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Machine Learning_overview_presentation.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectral efficient network and resource selection model in 5G networks
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
OMC Textile Division Presentation 2021.pptx
Spectroscopy.pptx food analysis technology
Heart disease approach using modified random forest and particle swarm optimi...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding
A comparative study of natural language inference in Swahili using monolingua...
Univ-Connecticut-ChatGPT-Presentaion.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Teaching material agriculture food technology
Getting Started with Data Integration: FME Form 101
Advanced methodologies resolving dimensionality complications for autism neur...
Encapsulation theory and applications.pdf
Group 1 Presentation -Planning and Decision Making .pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...

Decision CAMP 2014 - Howard Rogers - Programming with decision tables v01

  • 1. rapidgen.com Howard Rogers Director Technical Support howard.rogers@rapidgen.com Decision Tables as a Programming tool
  • 2. rapidgen.com 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 2
  • 3. rapidgen.com 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 3
  • 4. rapidgen.com 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 4
  • 5. rapidgen.com 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 5
  • 6. rapidgen.com Decision table structure •Conditions •Actions •Condition rules •Action rules 6
  • 7. rapidgen.com Single Condition Decision Table Condition Stubs Rules Action Stubs Actions 7 Quantity > 100 Y N Apply 20% Discount X -
  • 8. rapidgen.com Decision Tables Horizontal vs Vertical Condition Stubs Action Stubs Rules Actions 8 Quantity > 100 Apply 20% Discount Y N X -
  • 9. rapidgen.com Multiple Single Decision Table Condition Stubs Rules Action Stubs Actions 9 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 - - - -
  • 10. rapidgen.com Multiple Condition DTs 10 •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
  • 11. rapidgen.com Five Conditions – One rule 11 Initially no discount Quantity > 100 Y - Cash payment Y - Credit_check Y - Product type is laptop Y - Employee N - Apply 5% Discount X -
  • 12. rapidgen.com Multiple Section Decision Table 12 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 -
  • 13. rapidgen.com Simplifying Decision Tables 1 13 1 2 3 4 5 6 7 8 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. rapidgen.com Simplifying Decision Tables 2 14 1&2 3 4 5 6 7 8 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. rapidgen.com Simplifying Decision Tables 3 15 1&2 3 4 5&6 7&8 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. rapidgen.com Simplifying Decision Tables 4 16 1&2 3 4 567&8 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. rapidgen.com Simplifying Decision Tables 5 17 4 123567&8 Credit limit exceeded Y ELSE Cash payment N - Special clearance N - Accept order - X Reject Order X -
  • 18. rapidgen.com Optimising Decision Tables 18 1 2 3 4 5 6 7 8 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. rapidgen.com ELSE Rule 19 4 123567&8 Credit limit exceeded Y ELSE Cash payment N - Special clearance N - Accept order - X Reject Order X -
  • 20. rapidgen.com Simplifying Decision Tables – Extended entry 20 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 -
  • 21. rapidgen.com Simplifying Decision Tables – Extended entry 21 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 -
  • 22. rapidgen.com Ambiguity or Multi-ruling? 22 Set discount Initialise DISCOUNT_PERC Cash payment Y - - - Special offer - Y - - Good credit history - - Y - DISCOUNT_PERC + ? 5 10 2 -
  • 23. rapidgen.com Code generation 1 23 |--------------------------------------------------| |--------------------------------------------------| |# |STATEMENT 1 2 3 4 5 6 7 8 | |--------------------------------------------------| |C1 |Cash payment |y |y |y |y |n |n |n |n | |C2 |Special offer |y |y |n |n |y |y |n |n | |C3 |Good credit history |y |n |y |n |y |n |y |n | |==================================================| |A1 |Discount initialise | | | | | | | | | |A2 |Discount + 5 |X |X |X |X | | | | | |A3 |Discount + 10 |X |X | | |X |X | | | |A4 |Discount + 2 |X | |X | |X | |X | | |--------------------------------------------------|
  • 24. rapidgen.com Generation – Nested If/else 1 24 { if ((Cash payment)) { if ((Special offer)) { if ((Good credit history)) { /* rule 1 */ Discount + 5; Discount + 10; Discount + 2; } else { /* rule 2 */ Discount + 5; Discount + 10; } } else { if ((Good credit history)) { /* rule 3 */ Discount + 5; Discount + 2; } else { /* rule 4 */ Discount + 5; } } } else {
  • 25. rapidgen.com Generation – Nested If/else 2 25 if ((Special offer)) { if ((Good credit history)) { /* rule 5 */ Discount + 10; Discount + 2; } else { /* rule 6 */ Discount + 10; } } else { if ((Good credit history)) { /* rule 7 */ Discount + 2; } else { /* rule 8 */ } } } }
  • 26. rapidgen.com Generation – Case Switch 1 26 { if ((Cash payment)) { if ((Special offer)) { if ((Good credit history)) { rule_number = 1; } else { rule_number = 2; } } else { if ((Good credit history)) { rule_number = 3; } else { rule_number = 4; } } }
  • 27. rapidgen.com Generation – Case Switch 2 27 else { if ((Special offer)) { if ((Good credit history)) { rule_number = 5; } else { rule_number = 6; } } else { if ((Good credit history)) { rule_number = 7; } else { rule_number = 8; } } }
  • 28. rapidgen.com Generation – Case Switch 3 28 switch (rule_number) { case 1: Discount + 5; Discount + 10 ; Discount + 2; break; case 2: Discount + 5; Discount + 10; break; case 3: Discount + 5; Discount + 2; break; case 4: Discount + 5; break;
  • 29. rapidgen.com Generation – Case Switch 4 29 case 5: Discount + 10; Discount + 2; break; case 6: Discount + 10; break; case 7: Discount + 2; break; case 8: break; }
  • 30. rapidgen.com Generation – Rule List 1 30 { if ( ((Cash payment)) && ((Special offer)) && ((Good credit history)) ) { Discount + 5; Discount + 10; Discount + 2; } if ( ((Cash payment)) && ((Special offer)) && (!(Good credit history)) ) { Discount + 5; Discount + 10; } if ( ((Cash payment)) && (!(Special offer)) && ((Good credit history)) ) { Discount + 5; Discount + 2; } if ( ((Cash payment)) && (!(Special offer)) && (!(Good credit history)) ) { Discount + 5; }
  • 31. rapidgen.com Generation – Rule List 2 31 if ( (!(Cash payment)) && ((Special offer)) && ((Good credit history)) ) { Discount + 10; Discount + 2; } if ( (!(Cash payment)) && ((Special offer)) && (!(Good credit history)) ) { Discount + 10; } if ( (!(Cash payment)) && (!(Special offer)) && ((Good credit history)) ) { Discount + 2; } if ( (!(Cash payment)) && (!(Special offer)) && (!(Good credit history)) ) { } }
  • 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. rapidgen.com Rule masking 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
  • 34. rapidgen.com Relevance Testing 34 AGE > 50 Y - - CALL ADJUST_COVER Y - - TRANSKEY LT MASTKEY - Y - LOOKUP MASTER TRANSKEY - Y - Some operations require dynamic masking where actions may be performed or I/O occurs
  • 35. rapidgen.com Relevance Testing 35 AGE > 50 Y - - COVER + 20 R - - TRANSKEY LT MASTKEY - Y - DISPLAY “Message” - R - Dynamic masking again needed when Actions are inserted into condition section of Decision Table using “R”
  • 36. rapidgen.com Decision table linkage 36 CALLs to other DTs or object library routines CALL Credit_limit_exceeded Y ELSE CALL Cash_payment N - CALL Special_clearance N - CALL ACCEPT_ORDER - X CALL REJECT_ORDER X - GOTO link to DT or indirect CALL CALL Credit_limit_exceeded Y ELSE CALL Cash_payment N - CALL Special_clearance N - GOTO ACCEPT_ORDER - X CALL_I Variable_name X -
  • 37. rapidgen.com 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 37
  • 38. rapidgen.com 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 … 38
  • 39. rapidgen.com 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 39
  • 40. rapidgen.com 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 40
  • 41. rapidgen.com CDT Callable Decision Tables •Simple calculator •Calculator code •Tax formula (UK) •Tax calculator •Tax code •CDT Callable access from other languages and applications 41
  • 42. rapidgen.com 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 42
  • 44. rapidgen.com Howard Rogers Director Technical Support howard.rogers@rapidgen.com howard.rogers@rapidgen.co.uk Decision Tables as a Programming tool
  • 45. rapidgen.com Filetab •DEcision TABle-based computer programming language. •Long history originating in late 1960s •Developed by the UK National Computing Centre (NCC) •Originally used on ICL OS such as GEORGE 2/3 and VME, •Ported to a large number of others. 45
  • 46. rapidgen.com Filetab •Original architect - Tom Barnard, who developed the program (LITA - LIst and TAbulate) for Morgan Crucible on an ICL 1902 from 1965–1968. Original purpose was to produce simple ad hoc reports with a plugboard on a punched card tabulator, replaced PLAN assembly language. •80 column card based parameters •Reporting tool specifying input and output formats, headings, sequencing and totalling. 46
  • 47. rapidgen.com RapidGen Solutions RapidGen solves tough integration problems for OpenVMS customers • A variety of flexible options available –Analyse and provide ‘Customised Solutions’ –Future Proofing options with RapidGen • In-depth Legacy expertise • Services + Software –OpenVMS to Linux Migration Routines •Databases and Porting •Data Structures migration 47
  • 48. rapidgen.com What Customers Tell Us Want to preserve, modernize or replace • Total cost of ownership • Risk, flexibility …but difficult • Bespoke or end-of-life applications • Custom interfaces issues • Skills shortage becoming more evident • Application Changes not permitted –E.g. Aerospace, Defence, Nuclear, Utilities 48
  • 49. rapidgen.com Customers Want Flexibility They Need Options Choices 1.Update OpenVMS –Until end of 2015 2.Modernise –Translate data –Translate logic –Redefine logic in 4GL –Redevelop –Seamless Transition 3.Emulation Options –Reduce Operating Costs –Suitable for some Want •Proceed in stages –Reduces risk •Integration –Legacy ↔ Modern •Portability –Future-proof •Cost-effective Solutions 49
  • 50. rapidgen.com HP Forward-looking statements Published Jan 2014 This is a rolling (up to three year) roadmap and is subject to change without notice. 50
  • 52. rapidgen.com Example of HANA parameter DT QUANTITY ORDER_AMOUNT DISCOUNT <=2000 >10000 10 <=10000 5 >2000 >10000 15 <=10000 10 52
  • 53. rapidgen.com Example of HANA Database DT MANUFACTURER MODEL_CLASS QUANTITY DISCOUNT Sprongal Handset >5 25 <=5 10 Notebook >5 15 <=5 10 Pruckman Tablet >5 15 <=5 8 Range Extender >5 10 <=5 5 53
  • 55. rapidgen.com Genius Supported Platforms 55 Operating System Platforms Min. Version OpenVMS VAX 5.6 OpenVMS Alpha 6.1 OpenVMS Integrity / Itanium * Tru64 Alpha 4.0 HP-UX HP PA 9.x Windows Intel/AMD 32/64 2000 Linux •Red Hat, Debian, SUSE, Ubuntu, Fedora, Knoppix, Gentoo etc Intel/AMD 32/64 2.6.18 kernel
  • 56. rapidgen.com Genius Supported File Types & Databases 56 OpenVMS Tru64 Windows Linux RMS Indexed ✔ via TCP/IP via TCP/IP ISAM ✔ ✔ ✔ ✔ Oracle RDB •via DSRI ✔ Oracle •via OCI ✔ ✔ ✔ ✔ DBMS-32 •Codasyl ✔ Generic ODBC •SQL Server •MySQL •PostgreSQL •…others on request ✔ ✔ Ingres •Low-level API ✔ ✔ ✔
  • 57. rapidgen.com • Howard Rogers • Jolyon Cox QUESTIONS
  • 58. rapidgen.com Howard Rogers howard.rogers@rapidgen.com Tel: +44 (0) 1732 850081 Mob: +44 (0) 7734 962855 Providing Solutions and Options For OpenVMS Customers RapidGen Offices Info@RapidGen.com Tel: +44 (0) 207 630 9291
  • 59. rapidgen.com About RapidGen •Integrating and modernizing legacy IT systems for over 30 years •Specialise in OpenVMS and Tru64 •Software is Powered by the ‘Genius’ Suite •Our USP Unique Selling Point – Decision Tables = –Rapid Development Turnaround –Providing Cost Effective Solutions –Applications Future Proofing 59