4. AS400 ~= RPG
AS400 programs
~=
RPG programs
(Report Program Generator)
Milan - 1st February 2020AGILE VENTURE 2020
5. RPG – What is RPG?
"RPG is an IBM proprietary
programming language
and its later versions are
available only on IBM i
or OS/400-based systems"
Milan - 1st February 2020AGILE VENTURE 2020
Wikipedia
6. RPG – What is RPG?
"RPG is an IBM proprietary
programming language
and its later versions are
available only on IBM i
or OS/400-based systems"
Milan - 1st February 2020AGILE VENTURE 2020
Wikipedia
7. RPG – Available only on IBM i
Milan - 1st February 2020AGILE VENTURE 2020
How can you learn it?
8. RPG – Available only on IBM i
Milan - 1st February 2020AGILE VENTURE 2020
How can you create prototypes?
9. RPG – Available only on IBM i
Milan - 1st February 2020AGILE VENTURE 2020
Infrastructure as code?
How to create and distribute
pre-configured machines (DevOps)
10. RPG – Available only on IBM i
Milan - 1st February 2020AGILE VENTURE 2020
Horizontal scalability?
11. RPG – IBM proprietary
Could RPG grow
independently from IBM?
Milan - 1st February 2020AGILE VENTURE 2020
12. RPG – IBM proprietary
How to add new technologies
quickly
Milan - 1st February 2020AGILE VENTURE 2020
13. RPG interpreter – Towards a better RPG
Our idea:
creating an RPG interpreter
- Open Source
- Portable: working both on IBM i,
and on other platforms (Kotlin + ANTLR)
- Extendable
Milan - 1st February 2020AGILE VENTURE 2020
extendable
14. RPG interpreter – Why Kotlin?
Seamless integration
with Java
(and its libraries)
Milan - 1st February 2020AGILE VENTURE 2020
15. RPG interpreter – Why Kotlin?
Succinct
↓
less boilerplate code
↓
easier to understand
(less cognitive overload)
↓
fewer bugs
Milan - 1st February 2020AGILE VENTURE 2020
16. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
17. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
18. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
19. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
20. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
Lots of data classes
21. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
22. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
23. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
24. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
Test blocks of RPG CODE easily
25. RPG interpreter – Why Kotlin?
Milan - 1st February 2020AGILE VENTURE 2020
Default arguments: less overloading
26. RPG interpreter – Why Kotlin?
Succinct,
but comprehensible
Milan - 1st February 2020AGILE VENTURE 2020
(OK, you can write cryptic code in Kotlin too, but…)
See for example Scala… ☺
27. RPG interpreter – Why Kotlin?
Composing nullable values/functions
in a safe way
Milan - 1st February 2020AGILE VENTURE 2020
Can be null
Not null
28. RPG interpreter – Why Kotlin?
Code organization based on domain aspects
Milan - 1st February 2020AGILE VENTURE 2020
Extension methods for domain objects
regarding the “SQL aspect”
29. RPG interpreter – Towards a better RPG
Our idea:
creating an RPG interpreter
- Open Source
- Portable: working both on IBM i,
and on other platforms (Kotlin + ANTLR)
- Extendable
Milan - 1st February 2020AGILE VENTURE 2020
extendable
30. RPG interpreter – From RPG to a DSL
Milan - 1st February 2020AGILE VENTURE 2020
31. RPG interpreter – Unit tests in RPG
Milan - 1st February 2020AGILE VENTURE 2020
32. RPG interpreter – A modern ecosystem
• Unit Tests
• Editor
• Debugger
• Version Control System
Milan - 1st February 2020AGILE VENTURE 2020
Side effects of our project:
33. RPG interpreter – A sample workflow
Milan - 1st February 2020AGILE VENTURE 2020
34. RPG interpreter – Visual Studio Code
Milan - 1st February 2020AGILE VENTURE 2020
35. RPG Interpreter – The rules for FizzBuzz
• We get an integer number as input
• If it’s divisible by 3 the output is ‘FIZZ’
• If it’s divisible by 5 the output is ‘BUZZ’
• If it’s divisible by 3 and by 5 the output is
‘FIZZBUZZ’
• Otherwise the output is the input number
8-9 Novembre 2019ITALIAN AGILE DAYS 2019
See the video on YouTube: http://bit.ly/fizzbuzzrpg
36. Interprete RPG – Visual Studio Code
Milan - 1st February 2020AGILE VENTURE 2020
37. RPG Interpreter – Purposes
8-9 Novembre 2019ITALIAN AGILE DAYS 2019
The purpose of this project
is not getting rid of AS400
(although you will be able to do it),
but creating a modern ecosystem
and giving customers and developers
the opportunity to choose
where to run their applications
38. AS400 ~= RPG
Milan - 1st February 2020AGILE VENTURE 2020
Please, Ginni, don’t do it!
39. RPG interpreter – JaRIKo
Milan - 1st February 2020AGILE VENTURE 2020
A great team (thanks to Strumenta.com), but...
We want you!
https://github.com/smeup/jariko
40. Erbusco (BS)
Headquarters
Via A. Zanella, 23 – 25030
+39 030 7724111
Sme.UP
Nova Milanese (MB)
Via Saragat, 4 – 20834
+39 02 910871
Rivoli (TO)
Via Pavia, 11/B – 10098
+39 011 906211
Savigliano (CN)
Corso Roma 54 – 12038
+39 0172 31412
Lecco (LC)
Via della Pergola, 73 – 23900
+39 0341 496864
Parma (PR)
Strada dei Mercati, 16/E – 43126
+39 0521 940611
Roma (RM)
Via Prenestina, 390 – 00171
+39 06 5940517
Vigonza (PD)
Via Trevisan 1, – 35010
+39 049 8936173
Modena (MO)
Via Canaletto, 164 – 41122
+39 059 451721
Reggio Emilia (RE)
Via A.Gramsci, 88/A -
42124
+39 0522 516121
Brescia (BS)
Via Padova, 11 – 25125
+39 030 2585325
Villaverla (VI)
Piazza delle Fornaci, 4 – 36030
+39 0444 1835222
Vercelli (VC)
Corso Giuseppe Garibaldi, 51 – 13100
+39 0161 56924
Udine (UD)
Via Mantova 108/E, – 33100
+39 0432 540364
info@smeup.com
+39 030 7724111
SME UP S.p.A.
Via Iseo, 43 - 25030 Erbusco (BS) - Italy
www.smeup.com