Sessions - Programming Tools


If you write new software or maintain existing RPG applications, you’ll learn about the latest techniques for RPG IV and ILE. Plus, no matter what language you use, you will want experience with the Rational Development Tools that will make you more productive.


2018 sessions will include:


RPG

  • Introduction to Processing XML in RPG and SQL Too!
  • XML and JSON Rest Web Services for Everyday RPG and SQL Consumption
  • Advanced Data Structures - with Free-form
  • Processing and Creating JSON from RPG
  • RPG Tips & Techniques
  • Using Free Tools By Example - using free (or nearly free) software
  • What's New in RPG?
  • Developer Productivity – Playbook for Moving to RPG Sub-Procedures and Locally Scoped Variables
  • It's Time to Set Your RPG Free
  • Future Proofing Your RPG Applications
  • RPG: The Power of the Prototype
  • Easily Modify Report Programs (Because You Have Better Things to Do)
  • Fun!(damental) and Fun!(ctional) Table-driven Programming



Open Source

  • IBM i IFS Containers
  • Intro to Git
  • Intro to Node.js
  • Intro To Open Source On IBM i
  • Node.js Transacts with DB2 and RPG
  • WebSockets, Node.js, IBM i, and Watson
  • Using Db2 and SQL with Open Source Languages on IBM i
  • iHeart Open Source
  • MariaDB on IBM i
  • Turn On the LAMP – please!
  • Tap Into RPG Open Source Options
  • Shell Programming



PHP
  • PHP and Db2 Essentials
  • Speedy PHP on IBM i
  • Strategic Modernization with PHP
  • PHP Syntax
  • PHP7 – Benefits of Upgrading
  • Arrays in PHP




RDi
  • Making RDi go POP! with iSphere
  • Putting the Pedal to the Metal for RDi
  • RDi DDS Designer



Advanced Data Structures - Now with Free-Form! 
Application Lifecycle Management for IBM i development
Automatic conversion of RPGLE source code to Free Format RPG
Debugging with RDP/RDi   
Designing Screens and Reports with RDi/RDP 
From STRDBG to the RDP Debugger
Generating XML with RPG << new session >> 
IBM i Developers' Roadmap
Latest RPG Enhancements in V6 and V7
Look Out Below! A 50,000 Foot Overview of RDi (Rational Developer)
Meeting users' needs with free software 
My Favorite Things about RSE (aka RDi/RDP) 
Not your father’s RPG! A look at RPG’s latest Free Form enhancements
Processing XML with RPG 
RPG and the IFS (Summit)
RPG Native Mobile Apps
RPG Open Access - By Example  
RPG Subprocedures - Beyond the Basics 
RPG Subprocedures - The Basics 
RPG User Defined Functions & Table Functions 
Test-driven to Behavior-driven Development - The New Buzz
The Science and Use of ILE Service Programs
Value of Rational Developer for i for the Modern RPG Programer
Working With JSON in RPG
NEUGC 2018 Sessions by Track – Programming Tools 
RPG

Easily Modify Report Programs (Because You Have Better Things to Do) 

       (Ted Holt)


No matter how much hardware and software technologies change, some things always stay the same. A prime example is the generation of columnar reports. Whereas columnar reports were once printed on green-bar paper, nowadays they show up in spreadsheets, PDF files, and web browsers. You have challenging work that needs to be done, so why spend hours making simple modifications to report programs? Let Ted Holt show you how to write report programs that are quickly and easily modified as requirements change.




Fun!(damental) and Fun!(ctional) Table-driven Programming (Ted Holt)


In table-driven programming, a programmer specifies program logic in an array (also known as a table) instead of coding procedural control statements.


In this presentation, Ted Holt begins by contrasting procedural and table-driven programming. Next he walks through an example that demonstrates that table-driven programming can solve problems that procedural programming can’t. Finally, Ted illustrates the power of table-driven programming by sharing a utility he developed using table-driven techniques.


Programmers who attend this session will be exposed to new ideas and techniques that will augment their tool chests. Managers will be challenged to think of new ways to develop applications that support end users.




What's New in RPG? (Jon Paris)


In recent years RPG has continued to add new features including the latest enhancement DATA-INTO.

 

In this session Jon will explain how this new feature works and how you can use it to process everything from CSVs to JSON. Topics to be covered include:

 - Basic syntax and usage rules

 - Details of the supplied parsers

 - How to write your own parser to extend the functionality

 

Of course DATA-INTO is not the only new feature in RPG, so we'll take a few minutes to quickly run through some other recent enhancements. Topics to be covered include:

 - Fully free-form RPG - with no column limitations

 - The new ON-EXIT support for application clean-up

 - Enhancements in null-indicator support

 - Full support for longer SQL column names via ALIAS support

 - And more if we have time ...



Advanced Data Structures - with Free-form (Jon Paris)


Have you ever used two dimensional arrays in your RPG programs? Or used the new template support to create your own data types? Do you know how to use group fields? How to map the *IN indicators so that you can give them names? Do you know how to code these in the new free-form style?

 

If you answered "No" to any or all of these questions then this is the session for you

 

We'll give you a basic introduction to all of these topics and show you practical examples of their usage. We'll also include examples of the latest enhancement for coding nested Data Structures that makes their structure much more obvious.

 

P.S. We should also mention that some of the basic techniques discussed here are the technical underpinnings needed to fully utilize RPG's support for processing XML, for Open Access and for the new Data-Into support. So if you see any of those in your future you might want to check this session out.




Using Free Tools By Example - using free (or nearly free) software (Jon Paris)

Over the years, Jon has introduced many RPGers to some great free (and almost free) tools that help to make make their IBM i programming lives easier.

 

In this session he will focus on tools in the categories that people have found to be the most useful. Namely:

 

  • Help Desk Software
  • Generating Test Data
  • Building Web sites and wikis - and last but not least ...
  • Tools for building fast modern applications quickly

 

Jon will include details of how these tools are installed and provide hands on demonstrations of how they can be used. The level of audience interest in the tools will help to determine the amount of time to be spent in each category.

 




Processing and Creating JSON from RPG (Jon Paris)

JSON (JavaScript Object Notation) was originally used as a format for data interchange in web applications. Over time JSON has spread beyond the browser and is now widely used in web services. Indeed it is rapidly becoming THE format for data interchange in business. What was once used primarily for browser based applications is now challenging XML and CSVs as a vehicle for all forms of business to business data interchange.

 

But how to generate and process JSON with RPG? In this session, Jon will show how Scott Klement's port of the open source YAJL tool can be used from an RPG program to process and generate JSON quickly and easily.

 





RPG Tips & Techniques (Jon Paris)

Over the years Jon has gathered a number of "handy dandy" RPG tips and techniques. In this session he will share some of his favorites, old and new. Topics to be covered include:

 

 - Useful control (H Spec) options

 - Using compiler directives

 - Searching and Sorting Arrays

 - Using dynamic memory, including teraspace

 - Record Locking techniques

 - Using Data Structures on I/O operations

 - Improved alternatives to KLISTs

 - Using named indicators

 - FEOD without the performance impact

 - And as many more as w have time for!




RPG: The Power of the Prototype (Susan Gantner)

Everyone who does free format RPG logic needs to know at least the basics of using prototypes to replace their old parm lists for program calls. However many RPGers don't understand just how much prototypes can do for them. 

 

In this session, Susan reviews prototype basics but concentrates mostly on exploiting the often overlooked features of prototypes. Did you know that:

 

 - Prototypes can protect you against parameter mis-matches

 - Prototypes can provide automatic conversion of parameter types and sizes

 - Prototypes can enable passing literals, built-in functions or function calls as parameters

 - Prototypes allow you to specify optional parameters

 - Prototypes enable you to call C functions and system APIs that return values

 

We'll also look at how to exploit these features of prototypes effectively, including examples of the right way for called programs (or procedures) to deal with optional parameters. We'll cover the difference between passing parameters by value vs by reference and how to deal with very large return values from procedures. We'll talk about who should write prototypes and why they are often coded in separate members to be copied into RPG programs.




Developer Productivity – Playbook for moving to RPG Sub-Procedures and Locally Scoped Variables (Ray Everhart)
Developers can benefit greatly from creating sub procedures in their existing programs. This session reinforces the benefits of locally scoped variables and walks step by step though the process needed to convert existing code to use sub procedures as well as developing a template for future development.
Learning Objectives 
1. How to demonstrate the business value that comes from modularization.
2. How to identify which logic should be placed into a sub procedure.
3. How to properly scope variables.
4. How to standardize the handling of errors.



Future Proofing Your RPG Applications   (Susan Gantner)


A lot has changed since RPG IV was introduced, so come learn how to bring modern  development tools and techniques to bear in your RPG applications. Uncover the key things every RPGer should be doing to ensure that he/she remains an asset to their company.

 

Understand the critical techniques, tools, and best practices you should be using when developing your RPG applications. Then, get advice on the tools and capabilities that your RPG applications should be exploiting, and see illustrations of the key points.


It's Time to Set Your RPG Free (Susan Gantner)

Expressions and limited free-form calculations have been part of our RPG IV coding lives since the beginning. Most of us jumped at the chance to write our logic in free format introduced in V5.1. Then came V7.1 and with it the ability for programs to be coded completely in free-format - even the declarations. Now, we're not even limited to columns 8 to 80.

 

Perhaps you've heard about all these features - you may tried your hand at writing some free-form declarations and/or logic. But many RPGers still stumble over "how do I ... ?" issues and wonder if it is really worth the effort.

 

If this describes you then come to this session where Susan will do her best to clear up any misconceptions you may have and show you why and how to take this next step. We'll even see how RDi (the only editor from IBM that supports free-format RPG) can help ease the transition.

 

In this session, Susan will explain:

 

- Why free format RPG is important

- What are the rules?

- Just how free can you go?

- Are there any gotchas?

- How can RDi help?

- Are there tools available to convert fixed format code easily?

 

 

 

XML and JSON REST Web Services for Everyday RPG and SQL Consumption          (Charles Guarino)


A web service extends your applications in a way that no traditional programming can. They allow you to get real time information for almost any requirement. We’ll discuss what web services are, how they function and how you can begin using them on your own system. Get step-by-step instructions on the entire Web service process from receiving an XML or JSON document to successfully parsing its information to a display or database file.  See working RPG code of an XML parsing program and watch how we consume a RESTful web service.


Updates include i7.1 SQL enhancements which make consuming web services a snap. This session includes source code to get started using dynamic Web services today!




Introduction to Processing XML in RPG and SQL Too! (Charles Guarino)

XML has quickly become a standard method of encoding data. It can be used for full document transmittals or data provided via a web service. The extraction of this data into useable information is called parsing. RPG provides two different methods for parsing. This session goes step by step through the entire process of receiving an XML document to successfully parsing it to a database file. The XMLINTO and XML-SAX statements will be reviewed. The challenges and requirements of both statements will be discussed. At the end of this session, you will be able to identify which parsing method works best for your particular situation. Included with this session are program listings that you can take back and put to use immediately. Updates to this session include i7.1 TR6’s exciting SQL XML processing.

Learning Objectives:
1) Gain a basic understanding of XML syntax
2) Learn how XML parsing has been implemented into RPG.
3) See live examples of the XML parsers at work.



Open Source

Intro to Git (Aaron Bartell)


In short, Git allows you to keep a detailed history of source code changes with very little effort.  Git is free, open source, and easy to install on IBM i.  You can even use Git to manage RPG source.  What are you waiting for?  Git is a distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is arguably the most popular way to manage source code versions industry wide.


What we will cover:

  • Introduction to what Git is and how it works
  • Installation of Git on IBM i
  • How to connect with Bitbucket/GitHub via SSH
  • Basic flows of usage
  • Visual Git tooling




Intro to Node.js (Aaron Bartell)


Node.js is here.  Yep, Javascript on the server side of things.  Is this a good thing?  That's what we'll be looking to decipher as we walk through the following points at a high level, all the while relating it to the RPG programmer mindset to more easily draw similarities.  And seriously, Javascript is employment insurance.  You have life insurance and car insurance, and, and, and;  well, why not employment insurance.  Learn something (Javascript, and inherently Node.js) that is applicable to every single website on the internet.

In this session we will learn about the following:
  • Why Node.js? We already have Java, PHP, Ruby.
  • How to obtain and install Node.js
  • Make Node talk to your RPG and DB2
  • What's this i/o blocking stuff I hear about Node.js?
  • Javascript syntax - brief intro
  • Javascript callbacks - they're everywhere, but how do they affect your programming in Node?
  • Create a simple "hello world" app without using frameworks.



Node.js transacts with DB2 and RPG (Aaron Bartell)


When IBM introduced Node.js to IBM i they included a full fledge DB2 for i database driver written directly against the SQL CLI APIs.  No middle layer JDBC or MySQL in the mix.  They also provided the iToolkit, a seamless way to call RPG (or any other type of resource or program on IBM i) directly from Node.js.  Very cool.  This means adopting Node.js doesn't mean abandoning your huge investment in RPG; instead you can revitalize it.  That makes good business sense.

In this session we will do the following:
  • Walk through the various features and ways to communicate with existing DB2 tables directly from Node.js.
  • Talk about blocking and non-blocking database i/o
  • How to interface with DB2 for i Services to create a cool realtime WebSockets app that displays WRKACTJOB type information
  • Introduce XMLSERVICE and its feature set.
  • Walk through the various features and ways to communicate with existing RPG programs directly from a Node.js program that is running on the same IBM i!  
  • Show how to do iterative development using the Node.js REPL capabilities (programming in a real-time response environment) - a great tool and approach for learning how to code in 
  • Learn how to modularize your Node.js calls to RPG to make them reusable.
  • Discuss how to make stateful requests to an RPG *SRVPGM.



IBM i IFS Containers (Aaron Bartell)


In this session we will introduce the ibmichroot (IBM i Chroot) open source project.  Think of this technology being similar to being able to create a bunch of micro instances of IBM i all on a single instance of IBM i.  This is accomplished by using PASE's chroot utility and is what I'm terming "IFS Containers".  This technology is excellent for those running applications in PASE (i.e. Node.js, Ruby, Python, PHP).  It will keep PASE applications completely separate from one another so there is no toe stepping.  I often use this technology for creating separate environments for development, testing, staging and production.  Further, the ibmichroot project facilitates the download and install of AIX binaries from perzl.org.  perzl.org hosts hundreds of open source programs from the Linux world that have been made to work on AIX.  Some of the more notable ones include: gcc, Git, Nginx, joe (server-side editor), bash, zsh, Perl, bzip2, ghostscript, Ruby and many more.  Having these tools on IBM i brings about a new level of parity with other platforms.

On final note, yum support was recently added to the ibmichroot project and we will be talking about how that is a game changer for IBM i and open source.

In this session we will learn the following:
  • What are containers and how are they used
  • Learn about chroot command
  • Manual chroot IFS Container creation
  • Introduce IBM i Chroot project and how to install it
  • Creating new IFS Containers using IBM i Chroot project
  • Learn about pre-packaged IFS Container configurations and how to make your own
  • How to install open source packages


Intro To Open Source On IBM i (Aaron Bartell)


Open source on IBM i is growing at an incredibly fast pace.  Is it for you?  Why should you consider it?  We'll walk through the reasoning of why pursuing open source is as much of a business decision as it is a technology decision.  We'll discuss commercial vs. open source software and associated costs.  Then we'll dive into describing the PASE environment on IBM i and how it facilitates open source.  We'll describe how to access and navigate PASE.  And lastly we'll describe some tangible examples of how you can adopt open source at a small scale to "test the waters".

In this session we'll discuss the following:
  • Is your IBM i dept keeping up with tech innovation
  • Open source community
  • Is open source safe
  • A business decision and not just an IT decision
  • What about support
  • Cost of open source
  • Challenges
  • Package managers
  • Licenses
  • Where does it run on IBM i
  • Revitalizing your RPG investment


WebSockets, Node.js, IBM i, and Watson (Aaron Bartell)

HTML5 gave us WebSockets. IBM gave us Watson. Did you know we can easily access Watson from IBM i for our own business purposes? Did you know there is a free tier for Watson so you can get started without spending a dime? Sooooo stinkin' cool.

In this session we will learn the following:

  • What are WebSockets
  • Walk through the creation of a simple WebSocket app using Node.js
  • Learn about what Watson is and available APIs.
  • How you can call on Watson from IBM i using Node.js. 
  • How WebSockets work to communicate from browser to IBM i and from IBM i to Watson.
  • How the Node.js socket.io library makes it dead simple to do WebSockets.
  • Walk through creation of WRKACTJOB WebSocket app.



Using DB2 and SQL with Open Source Languages on IBM i (Alan Seiden)


DB2's ever-expanding capabilities can simplify development in open source languages such as PHP, Ruby, Node.js, and Python. These languages, known for their ease in building web and mobile applications, can run most types of SQL, but why complicate them with repetitive database code that distracts from their power and simplicity?  This talk shows examples of how to reduce tedious coding by using such DB2 structures as Views, User Defined Functions, stored procedures, Row and Column Access Control (RCAC), LIMIT/OFFSET, exciting new DB2 Services, and more. Security, performance, and ease of maintenance in the open source scripting languages will be the result of the recommendations and techniques given in this talk.


Learning Objectives

1. Learn DB2 techniques that improve security, performance, simplicity

2. Understand how coding in open source scripting languages can be made simpler and more powerful by use of DB2's modern capabilities.




iHeart Open Source (Erwin Earley)


Ever wondered about open source and whether or not you should consider open source solutions in the IBM i environment – then this session is for you!  We will start by taking a quick look at the Open Source ecosystem and then dive into some specific open source offerings including PHP and MySQL/MariaDB.




Turn on the LAMP – please! (Erwin Earley)


The computer world is full of light, or so it seems with the proliferation of LAMP-based applications, and the good news is that you have all of the components on your IBM I needed to leverage the large ecosystem of LAMP-based applications.  This session will explore the definition of LAMP and the components of IBM I that support LAMP applications.  From there we will provide an overview of some of the more popular categories of LAMP applications, including CRM, WIKI, eCommerce, and others.  Along the way we will walk through live installations of several LAMP applications on IBM I to show how easy it is to leverage open source solutions on the i platform.




MariaDB on IBM i (Erwin Earley)


MariaDB provides the database component of the ubiquitous LAMP stack and it is available for IBM i.  This session will explore a number of concepts for MariaDB including installation, management, and troubleshooting.  Additionally, the session will explore the db2 storage engine for MariaDB which enables applications written with MariaDB APIs for storage/retrieval of data to actually store/retrieve that data in DB2 tables.




Tap Into RPG Open Source Options (Jon Paris)


The world of open source has a lot to offer IBM I users. But while most of us know that languages like Java, PHP and Python offer wide ranging open source offerings, RPG open source projects are not as well known. In fact there are a number of RPG open source offerings, many of which open the door to using utilities written in other languages.

The RPG oriented tools available range from those designed to simplify the building of RPG-based web sites, to utilities to simplify the generation and consumption of XML and JSON. Others include tools to build and update Excel spreadsheets, generate graphs, send emails, and much much more.

In this session Jon will introduce you to a sampling of these offerings and discuss where they might fit into your toolbox.



Shell Programming (Erwin Earley)

If you are going to work in the Linux operating system, or PASE for that matter, then understanding how to program in the shell is an important skill that you must possess.  This session will introduce you to the basic shells that are available and go through a number of programming constructs including looping, functions, and I/O processing.

 

PHP

PHP and Db2 Essentials (Alan Seiden)


DB2 is the heart of IBM i. For PHP applications, the DB2 database provides performance, data integrity, remote connectivity, and security. This session will show the right way to use DB2 with PHP. Topics include: NEW features of DB2 and ibm_db2 that can make life easier for developers, performance tips, prevention of SQL injection, library list options, and how to connect IBM i's DB2 from Windows and Linux.


Learning Objectives

1. Understand how to get the best performance from DB2 with PHP on IBM i

2. Take steps to secure applications by using parameter markers (prepared statements)

3. Learn about new features that help performance and stability

4. Make the right choices when configuring your application for library lists and more




Speedy PHP on IBM i (Alan Seiden)


Delight your users with snappy, quick PHP-based applications running on IBM i.


  • Configure Zend Server for performance
  • Optimize DB2 and the IBM i toolkit
  • Diagnose bottlenecks
  • Leverage unique IBM i performance tools

You’ll come away brimming with ideas that you can use immediately to improve your application’s performance


Learning Objectives

1. Use Zend and IBM tools to detect bottlenecks

2. Know how to configure the PHP environment for performance




Strategic Modernization with PHP (Alan Seiden)


You know you need to modernize your IBM i applications, but where to start? In this talk, Alan will inspire you with creative examples of modernization on IBM i that provided a strong return on investment while controlling risk.  Learn how to choose projects with the best return on investment, and then complete them with confidence. We will lead an honest discussion of the most effective strategies. Can RPG programmers learn PHP? Yes. Can new PHP developers be integrated into an existing IT department? Yes. Both approaches have merit. 


See creative ways to use PHP, not only to create new GUI front-ends, but to add jazzy features to existing interactive RPG programs. Please your users and business people by incorporating PHP into your shop.  During a recent broadcast of this talk to COMMON Europe, one attendee said: "Great intro for how to do modernization! Thank you!"


Learning Objectives

1. See how PHP and other open-source languages can satisfy business needs and today's users.

2. How to get started with PHP

3. How PHP integrates with RPG and traditional resources




PHP Development Tools (Erwin Earley)


Everything from text editors to Integrated Development Environments (IDE) can be used to develop PHP code.  This session will take a look at some of the more popular PHP development tools including PHPStorm and PDT.




PHP Syntax (Erwin Earley)


PHP is the most popular open-source scripting language for coding business logic into web applications.  This session will help you to get your feet wet with PHP by going through the syntax of the language and exploring basic capabilities.  Both procedural and Object Oriented (OO) coding is supported by PHP and while this session will stay mainly focused on procedural an introduction to Object Oriented programming in PHP will be provided.




PHP7 – Benefits of Upgrading (Erwin Earley)


While version 7 of PHP has been available since late 2015, many companies are just now looking at moving to the current version.  This session will explore various features of version 7, as well as highlighting those features/functions from earlier versions of PHP that are deprecated in the latest version.  Additionally, the session will take a look at migration strategies for moving from version 5 to version 7 of PHP and highlight now separate subsystems for version 7 and version 5 of the PHP engine on IBM I can be leveraged to perform a step-wise migration of your PHP application(s).




Arrays in PHP (Erwin Earley)
Arrays and array processing are foundational building blocks to the power and flexibility of PHP.  This presentation will provide an introduction to arrays in PHP, a review of RPG arrays, a comparison of RPG and PHP array concepts, functions for working with arrays in PHP, and PHP debugging tips.
RDi

Putting the Pedal to the Metal for RDi  (Charles Guarino )


You keep hearing about these web service “things” but are not really sure what they are, where they fit into your toolset or why they’re important. IBM continues to add native functionality, positioning the Power System as a key player in this technology. In this fast moving session we will discuss the ins and outs of web services and the many ways you can work with them on IBM i. Points of discussion include how web services work, where to find them and a demonstration of the tooling you will find, TODAY, already available in your own shop.



Making RDi go POP! with iSphere (Charles Guarino)


What if I told you there is a tool that plugs in to RDi that adds a boat load of features, so many that you will never know how you got this far without them? And what if I also told you these tools not only exist but are free?  Welcome to the world of iSphere, a collection of RDi enhancements that further cements RDi's place as the leader in IBM i application development. It provides much of the “missing” functionality that today’s developers need. This session features a step by step review of these features.

Learning Objectives: 
How the free tool iSphere adds tremendous value and capabilities to RDi. 



Designing DDS Screens & Reports with RDi

(Susan Gantner)

Rational Developer for i (aka RDi) contains a graphical DDS screen and report designer as part of the toolset. It is integrated with RSE (Remote System Explorer) so that you can use views that you use with RSE, such as Outline, Properties and the RSE source editor, while designing your DDS code.

 

Focusing mostly on DDS screens, Susan will demonstrate how the graphical designer works and compare and contrast it with old CODE Designer. She will also share why she doesn't use the built-in DDS Design Perspective and what changes she makes to her own RSE perspective to make it work as effectively for DDS design as for RPG coding.