February 11

0 comments

Rational Developer for IBM i 9.6 Fixpack 7 is pretty pretty good

By NickLitten

February 11, 2020

deve, eclipse, IBM, programming, rational, RDi, upgrade

Rational Developer for IBM i 9.6 Fixpack 7 is now available! The 9.6.0.7 fixpack contains some nice little enhancements and fixes!

One feature really caught my eye- The New extract procedure refactoring feature, used to convert business rules into reusable procedures in RPG sounds a bit saucy.

How does ‘Refactor Extract Procedure‘ work?

We select a block of code in a source member and:

right-click -> Refactor -> Extract Procedure

This grabs the code, creates a procedure, letting us change the procedure name to whatever we want. A great tool to convert those old blocks of code (or subroutines) into sub-procedures.

This is something I’ve wanted for a long time.

Fix list for Rational Developer for IBM i 9.6 Fixpack 7

The Fix List document lists the enhancements, APARs, and RFEs addressed by the RDi 9.6 Fixpack 7 are in FixCentral at https://www.ibm.com/support/pages/node/603339#9607

APAR/RFEDescription
New extract procedure refactoring feature can be used to convert business rules into reusable procedures in RPG.
Select a block of code in a source member and right-click -> Refactor -> Extract Procedure. Change the procedure name to what you want and follow the wizard. Press Ctrl-Z to undo the procedure creation.
New library list view to easily modify a library list from any RDi perspective. 
To get the new Library List tab click Window -> Show View -> Other -> IBM i -> Library List. Manipulate your current job library list using the buttons.
Preference search filter has been enhanced to provide more accurate results for RDi preferences
RPG language update:- Editor support for the new OVERLOAD keyword. – Editor support for OPTIONS(*EXACT) for prototyped parameters. – Editor support for the new DATA-GEN opcode. 
Enable editor navigation for marked occurrences of variables. 
SQL formatter improvements. 
Improved Copy To dialog reduces the chances of a user copying to an unintended location. 
RFE 77798Show variables larger than 4,095 characters in the RDi debugger. 
RFE 102060Service Entry Points now allow conditional entries for breakpoints. 
RFE 116542Persist display hover text for procedure parameters.
RFE 120965Double-click of source elements to include * symbol when appropriate. 
RFE 121191Sort by name control in outline should not affect sorting of key fields.
SE69406RDI 9.6.0.2 ILE RPG outline incorrectly shows VARCHAR(0:2) for sub-procedure for varchar return value defined with a constant. 
SE71614RDI 9.6.0.6 – Opening PNLGRP source in RDi leads to a StringIndexOutOfBoundsException
SE71721RDI 9.6.0.6 – Option 2 (edit) in the object table should open members in edit mode even if the default mode is open as browse. 
SE72030RDI 9.6.0.6 – ILE RPG content assist fails due to IllegalArgumentException: Comparison method violates its general contract
SE72031RDI 9.6.0.6 – New procedure wizard does not show keywords for a passed parameter that has been modified. 
SE72032RDI 9.6.0.6 – Setting SBMJOB additional parms in RSE connections may result in duplicated parms in compile commands and compilation failures. 
SE72289RDI 9.6.0.6 – Source may become corrupted when i Projects are configured to add or remove sequence numbers and dates
Correctly tokenize literals in fixed form source. 
%ELEM(x) line references in the outline should be marked as modified.
Fixed Visualize Application Diagram only works for the last member opened from the source menu.
Fixed port range preferences input for RSE to correctly handle ports 1-65535.
The default communications port number now specifies the beginning of a port range rather than a specific static port. If a port is unavailable, RDi will increment to the next port in the range and try again to connect.
Update Java to eliminate legacy Java 6 requirement to run RDi on macOS 
Access Client Solutions integrated with the product updated to 1.1.8.3. Note: Java 8 is required to be installed on the system.

How can I install the latest fixpack?

Follow the same steps I waffled about in a previous blog – How to update RDI

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 1
RDi 9.6.0.7 Update in progress

After the upgrade finished, I launched RDi and saw a new screen. The INSTALL MIGRATION WIZARD:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 2
Update Wizard in Action

This wizard imports and reinstalls previously installed plug-ins. It is triggered because we are launching eclipse for the first time or your IBM Rational Developer for i has been updated.

Press NEXT and it wobbled around for a few seconds:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 3

but then *boom* it farted, belched and failed
Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 4
Wah, Waah, Waaaaaaah

Anyhoo, lets cancel this and dive into this new 9.6.0.7 version:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 5

First Look: New Extract Procedure Refactoring feature

Let take some very smelly old RPG400 column based code (in this case the standard IBM i PROOF RPG code snippet) and convert something to a sub-procedure.

Why? Because there is nothing like giving this new “Extract Procedure Refactoring” function a good solid complicated bit of legacy code to test it with:

 H DFTNAME(PROOF)
 FQSYSPRT   O    F  132        PRINTER

 D ARRAY           S              8    DIM(3)
 D                                     CTDATA PERRCD(1)
 D INSTALL         C                   CONST('INSTALLATION')
 D DS              DS
 D   OK                    1      8    INZ('VERIFIED')

 C                   EVAL      OK = 'FAILED'
 C                   MOVE      ARRAY(2)      ARRAY(3)
 C                   RESET                   OK
 C                   SETON                                        LR
 OQSYSPRT   T    LR                     1  1
 O                       INSTALL             21
 O                                           24 'OF'
 O                                           28 'THE'
 O                                           36 'ILE RPG'
 O                                           45 'COMPILER'
 O                                          + 1 'IS'
 O                       OK                 + 1
**
 COMPILE
 TIME
 ARRAY 

And just for giggles lets change the main code into a subprocedure called mainline.

Open this code in RDi:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 6
Old fashioned RPG code in RDi

Select the code block that we want to convert into a sub-procedure:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 7

Then we just right click and select > REFACTOR > EXTRACT PROCEDURE

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 8

Very nicely, this little extract gives us various options to control how our new procedure is going to look:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 9

For this first run, lets leave it at default and see what it does:

Rational developer for ibm i 9. 6 fixpack 7 is pretty pretty good 10
Works perfectly!

But isn’t that old fashioned RPG400 code ugly!

#YIKES

So, by sheer coincidence, an old mate of mine emailed me some code yesterday asking me to cast my critical modernisation eye over it and make some recommendations.

So, lets run that code through some code modernisation and then use this refactor process to convert all the subroutines to sub-procedures.

Yes, Yes, I know that this idea is overkill, nonsensical and totally unnecessary, but totally fun too 🙂

Me. In Nerd mode.

Second Look: New Extract Procedure Refactoring feature with modern RPGLE

OK, this blog entry is getting so long and excitedly waffley its time to break this second RPGLE example into another blog entry:

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Join the IBM i Community for FREE Presentations, Lessons, Hints and Tips

>