Blog Posts

Statistics: Blogs: 4 Blog Posts: 31
Items per page Filter: 1 2 3 Previous Next
0

I get this question a lot: "can I set the set the Date field for a line or selection of lines in the Remote Systems LPEX Editor". The good news is that it's possible. The not so bad news is that you have to setup some simple preferences to make this happen.

First, to show the Date field in the LPEX Editor you need to right click in the editor and select Source > Show Date Area. You can also set the Show date area preference on the Remote Systems > Remote Systems LPEX Editor preference page so you don't have to do this every time you open a member.

LPEX ships a bunch of sample actions, one of which is setDate. This is the action that can set the date field for a line or selection of lines. Here are the steps to set this up:

1. Open the preferences dialog (Window > Preferences).

2. Switch to the LPEX > User Actions page. Enter the following values and click Set (don't forget to click Set or this doesn't add it to the table):

Name: setDate
Class name: com.ibm.lpex.samples.SetDateAction

userActions.gif

3. Click Apply.

4. Now you need to assign a keyboard shortcut to the action so it's easy to invoke from the editor. Switch to the user key actions preference page. Enter the following values and click Set.

Key: c-s-t
Action: setDate

The c-s-t sets the keyboard shortcut to Ctrl + Shift + T. You can enter any keyboard shortcut you want here.

keyActions.gif

5. Click Apply and close the preferences dialog.

When you are inside the LPEX editor you can now invoke the new action. Position the cursor on the line you want to change, or select the block of lines to change. Hint: to select the entire file press Ctrl + Home, then hold down Shift and press Ctrl + End.

Then invoke the action by pressing Ctrl + Shift + T. A dialog box appears at the bottom of the editor prompting for the new date.

newDate.gif

While we're on the topic, RDi 7.5 added a new Find Date action to LPEX. Press Ctrl + Shift + D to search for lines that match a specific date, are greater than or less than a date, or match a range.

Alternatively you could move to a change management system like Rational Team Concert for i and stop relying on Date fields to detect when things are changed :)

0 Comments Permalink
1

RDi Webcast Series in RDi Team Blog

Posted by yantzi Nov 10, 2009

Over the past 2 months I've been doing a monthly webcast series with Sirius Computer Solutions on Rational Developer for i (RDi). The format is generall 40 min deep dive on a specific topic, 10 min preview of the next month's topic, and 10 mins for Q&A.

So far we have covered an overview and a deep dive on RSE. The webcasts are being recorded and are available for playback.

The next one is this coming Friday (November 13th) and will cover the Integrated i Debugger; one of my favorite RDi topics because it's so easy to use and something I have to use often when coding RPG, COBOL, or CL :(

Here are the details for the upcoming call:

Topic: RDi webcast 3 - Debugger
Date: Friday, November 13, 2009
Time: 11:00 am, Eastern Standard Time
Meeting Number: 557 432 806

1-877-369-7289 passcode 7541 then you need to enter 2468.



To join the online meeting (Now from iPhones too!)

1. Go to https://sirius.webex.com/sirius/j.php?ED=112887842&UID=0
2. Enter your name and email address.
3. Enter the meeting password: (This meeting does not require a password.)
4. Click "Join Now".

Hope to see you in one of the upcoming webcasts.

Don.

1 Comments Permalink
1

One of the cool features of RPG is the "move fields" logic where data is moved from input buffers to program fields and from program fields to output buffers. Most RPG programmers don't think of this as cool - it is so fundamental to RPG that RPG programmers take it for granted.

When the RPG programmer defines a file in the RPG source, the compiler implicitly generates an internal program field for each field in the file, and the compiler also implicity moves data from the I/O buffers to the program fields for read and write operations to the file. If a particular field name appears in more than one file used by the RPG program, the field can be read from one file and then written out to the other file without any effort on the part of the RPG programmer.

Example: Say files FILE1 and FILE2 files have fields NAME and ADDR. A READ operation reads both those fields from file1 and a WRITE operation writes both those fields out to file2. It's not necessary to mention the field names in the source unless the fields are needed for some calculation.

    read FILE1;
    write FILE2;

If a new field CITY is added to both files, and the program is recompiled, the CITY field will automatically be handled by the READ and WRITE. No change is required to the program source.

If you look in your compiler listing, you can see the I and O specs that the compiler generates. These specs are not just descriptions of the I/O buffers. They are executable operations. The I specs are move operations from the Input buffer to the program fields, and the O specs are move operations from the program fields to the output buffer. It is because the I and O specs are executable operations to and from program fields that it's possible to have a field defined as packed in a database file and zoned in a screen file. RPG just does any necessary conversions when it move the data between the I/O buffers and the program fields.

You can see the I and O specs in action by stepping through the I and O specs in the debugger. You have to compile with OPTION(*DEBUGIO) and use the listing debug view.

The "move-fields" logic has always been part of RPG, or I should say it has been at least since RPG II. (I don't know much about the original RPG prior to RPG II.)

The EVAL-CORR opcode (added in v5r4) works in a similar way. If the READ and WRITE operations use data structures instead of using the I and O specs, you can assign all the same-name subfields from one data structure to another without actually mentioning the subfields by name. Just like the example above, the following code will automatically handle the new CITY subfields when the program is recompiled after the CITY fields are added to the files.
    read FILE1 ds1;
    eval-corr ds2 = ds1;
    write FILE2 ds2;


Even though I do think it is very cool the way RPG automatically handles the fields from files, I sometimes wonder if it would be better in the long run for program maintenance to have the movement of field data from file to file be more explicit. But that's a topic for another blog post.

1 Comments Permalink
4

Today is the 20th anniversary of my arrival at IBM and also my arrival in the AS/400 RPG Compiler Development department. The day I arrived, almost everyone was on vacation - there were only 3 other people working. It was near the end of development for V1R3.

My first couple of days were spent on an off-site RPG II self-study course, with no actual computer but only coding sheets to work with. Much of my time was spent scratching my head wondering why anyone would actually choose to code in this bizarre language.

When I got back, one of my co-workers showed me the online education system and told me to go through all the lessons, to learn about jobs, output queues, message queues, joblogs etc. (Too bad they took that education system away - it was very good.) He also told me to write an RPG program, using RPG/400 - nobody in the department was using RPG II except to investigate PMRs. I vaguely recall that it was a program to read all records of a file and output them to a printer file. And then a program to just do some calculations and write to a printer file. That's when I learned about the mysteries of "LR". ("What do you mean, the last record of the file? This program doesn't have a file." (Thanks, Y K, if you're reading this. You were a good teacher.)

The next week, with most people still on vacation, I started working on PMRs and APARs. On my first day, I got a call from support asking me to talk to a customer and explain why the SETLL opcode was behaving the way it was. Talk to a customer? About SETLL?!? What on earth is SETLL?" "Can you call me back in an hour?", I asked. "Sure." I found the SETLL opcode in the manual and read what I thought was a very clear explanation of how it worked. There was a paragraph that answered the customer's question exactly. When I finally was talking to the customer, I just read out that paragraph. The customer was very pleased with the clear explanation.

Around my sixth month, I got my first development project! It was to update the END opcode to allow ENDIF and ENDDO etc. During my design review, I was a bit taken aback by the amount of discussion about whether it should be just ENDDO to end DO/DOU/DOW, or ENDDO/ENDDU/ENDDW. Strangely, I can't remember whether just-ENDDO was my original design, or whether the design was changed to just-ENDDO during the meeting. I do remember that the key reason for just-ENDDO was to make it easier to change from one do-loop to another.

Along the way, some of the more memorable enhancements I've developed were: SORTA for overlay arrays, subprocedures, %EDITC/%EDITW, call-interaction with Java, LIKEDS, and XML-INTO, and local-files and file-parameters.

It's 20 years since that first RPG II course, and I'm still in the team that develops the RPG compilers for IBM i.

And now I can't imagine why anyone wouldn't want to code in RPG.

4 Comments Permalink
0


Interim fix 001 for 7.5.0.3 is now available.

This interim fix addresses the problem as described in APAR SE38319 (Java NPE in RPG Outline View when a data structure targeted by a LIKEDS has unnamed subfields.).

To install the interim fix, start the IBM Installation Manager and click on 'Update'.

0 Comments Permalink
0

The problem

Strange but true: By default, RPG assumes that the CCSID of alphanumeric data is the mixed double-byte + single-byte CCSID that is related to the job CCSID.

This matters when all of the following conditions are met

  1. (very common) the actual job CCSID is a single-byte CCSID such as 37
  2. (quite common) conversions are done between alphanumeric data and UCS-2 data
  3. (rare) the alphanumeric data contains shift characters (x'0E' or x'0F')When the alphanumeric data is being converted to UCS-2, and the CCSID is assumed to be a mixed-byte CCSID, the "shift out" character x'0E' signals that the following data is double byte data; when the "shift in" character x'0F' is encountered, this signals a return to single byte data.

If this data is being converted to Unicode, and the data is not really supposed to be interpreted as mixed-byte data, then the Unicode version of the data will not be correct.

The solution

Code CCSID(*CHAR:*JOBRUN) in the H spec of all your modules.

If you are actually using a mixed JOB CCSID, nothing will change. If you are actually using a single byte CCSID, any conversions involving alphanumeric data containing x'0E' will be correct.

But I never have x'0E' in my single byte alphanumeric data

What never?

Well, hardly ever ...

0 Comments Permalink
0


Fix Pack 3 for RDi v7.5 is now available.

The fix pack contains enhancements and fixes to version 7.5.

To install the fix pack, start the IBM Installation Manager and click on 'Update'.

The fix pack is also available as a downloadable zip (500MB). You will find it on the Download section of the support site soon. You can also download the zip from:
http://download.boulder.ibm.com/ibmdl/pub/software/awdtools/rdi/v75/7503/zips/rdi-7.5.0.3.zip

Link to the RDi 7.5.0.3 Release Notes:
http://download.boulder.ibm.com/ibmdl/pub/software/awdtools/rdi/v75/7503/documents/readme/readme.html

The following corrections have been included in this fix pack.

  • SE34801: In the Error List view, clicking on an error from a compiler generated stmt (eg external file description) positions to wrong source line in Editor view
  • SE36276: CL prompter dialog appends duplicated parameter entries
  • SE36532: In the RPG Outline View, line number references will now be shown under the individual subfields for qualified data structure subfields.
  • SE36594: EVFF6009E when using CRTSQLRPGI command in RDi 7.1 and 7.5 and i5OS 610
  • SE36981: Incorrect outline view in RDi 7.5 when performing a verify
  • SE37116: Running a compare and then changing the source in RSE does not correctly update the file on the i server.
  • SE37302: The i Project push changes action pushes all members to the remote host even though there were no changes made to the members.
  • SE37332: CTRL-C and CTRL-V keystrokes in the i Project navigator do not perform copy and paste of i Project resources.
  • SE37440: In the Application Diagram View, for RPG modules, some procedure call reference links were not shown when they involved field or parameter definitions which depended on external descriptions.
  • SE37488: Copy of source member between different connections to same system loses text descripton in RDi v7.5
  • SE37606: Compile option UPDPGM doesn't function correctly
  • SE37658: Problem with set save.textlimit 92 with a continuation character
  • SE37688: The IBM-supplied iSeries Java DFU ListManager bean does not always function properly. A selected cell within a JTable or JFormattedTable will not always correctly update the database file or the table cell itself with the data that was typed into the cell.
  • SE37689: The i Project import remote objects dialog does not resize properly.
  • SE37750: Creating custom compile command in iProjects (WDSC 7.0.0.8 and RDI 7.5.0.2) and getting CPD1013
  • Loading an i Project from RTCi can intermittently cause Null Pointer exceptions.
  • Renaming a large i Project can sometimes take a long time.
  • Pushing a large i Project to the host can cause the workbench to freeze.
  • The properties of members that are newly downloaded to an i Project are pushed un-necessarily on a push change operation.
  • After compiling source members with embedded SQL, there may be an exception thrown during parsing of the events file, preventing the Error List view from being populated. In some other cases, double clicking on errors in the Error List view does not always embed the errors in the correct lines.
  • SE37803: Rational Team Concert for i assigned Client Access licenses do not display
  • SE38015: Rational Team Concert licenses lost every few days

The following enhancements have been included in this fix pack.

0 Comments Permalink
0

SQL Tools and RDi in RDi Team Blog

Posted by yantzi Jun 15, 2009

We get a lot of questions about SQL tools and Rational Developer for i (RDi). While we didn't ship the Eclipse Data Tools Platform (SQL tooling) in RDi 7.1 or 7.5, they can be added in after the fact. This is one of the great advantages of an extensible, integrated development environment like Eclipse (which RDi is built on top of). Dmitry Baev, one of the RDi developers, has a new article published in IBM Systems Magazine on Using the Eclipse Data Tools Platform and SQL Tools with RDi.

0 Comments Permalink
0

RDi Webcast Today in RDi Team Blog

Posted by yantzi May 13, 2009

I'm presenting on RDi today as part of SystemiNetwork's free IBM i Development Essentials Virtual Conference today. I'll be presenting "RPG and COBOL Development in Less Time With Better Quality Using Rational Developer for i" at 4PM EST.

I've created most of this presentation from scratch and there should be some goodies for both new and experienced RDi users. Hope to see you there!

0 Comments Permalink
0

Orlando Summit is almost over. Except for the (not unexpected) lower attendance, it has been an excellent Summit. The Summit attendees are always very motivated to learn; almost all of them attend a session in every available time slot. Over 80% of them even attend the 8 am "early bird" sessions. (!) That's dedication.

But if possible, everyone here seemed even more motivated to learn than usual. People asked more questions (and more interesting questions) during my sessions than usual.

I was excited (and nervous) to talk about other Rational products besides the RPG compiler, both at the IBM-Rational booth that I was manning, and at the Intro to RTCi session I gave. There was a fair amount of interest in RTCi at the booth, and a few very interested people came to the presentation. I learned a lot myself at the presentation; I can see where RTCi will be a boon for people who currently have only informal ways of managing their projects.

0 Comments Permalink
0

What is Web 2.0? in RPG Team Blog

Posted by batthis Mar 21, 2009

If you are in the Toronto area, the Toronto User Group TEC 2009 conference starts next week Tue (Mar 24-26)

For those curious about Web 2.0, latest trends, and how it can be consumed or produced on IBM i, George Papayiannis and myself will be presenting a session called "What is Web 2.0?" Tue @2:55.

http://www.tug.on.ca/tec/Graphics/TEC2009.jpg

0 Comments Permalink
0

Business Value of RDi in RDi Team Blog

Posted by yantzi Mar 9, 2009

javajoe2000 asked a good question on the RPG discussion form: Why RDi 7.5?. I've written up a document with my opinions on why I think IBM i development shops should switch from SEU / PDM to RDi here: Why RDi 7.5

Please post discussion comments under Joe's original posting.

0 Comments Permalink
1

Updated RSE Pin-Up in RDi Team Blog

Posted by yantzi Mar 9, 2009

System i Developer (a.k.a Susan, Jon, Paul, and Skip) have updated their RSE Pin-up with 10 new shortcuts and new tips on customizing the RPG editor. These 10 new shortcuts now bring the total to 46; including what I would consider to be the core, must know, RSE keyboard shortcuts. Printing and posting this is a must for anyone using the RSE!

1 Comments Permalink
0

The RDi install is fairly straight-forward. But one question that users have wondered about is the one on using an existing package group or creating a new one.

The notion of a package group is of a group of products that are integrated together. If you only have one product, then you create a package group just for the one product. If you have multiple products, you can choose to install them all into the same package group so that they are integrated (all their functionality being available in one IDE).

There are additional uses of package groups even if you only have one product. You can install the same product multiple times and choose different package groups. With the same product in multiple package groups, you have some possiblities:

  • when a fixpack for the product is released, you can update one of your package groups to the new fixpack and give it a try. This would not affect the other package group so there is no risk.

  • you can choose to install different options in the package groups. In one, you could just have the minimum features (RSE and iProjects). This would simplify the UI (since the other features would not be available) and might have some performance gains (since the other components are not being loaded). In another, you could have RSE, iProjects, Application Diagram, Screen Designer, and RTCi client.

Note: if you install RDi into package group A and then install RDi again into package group B, your disk space usage only increases slightly (it does not put another complete copy of RDi on your machine).

0 Comments Permalink
2

i Finally Did it in RDi Team Blog

Posted by yantzi Feb 10, 2009

I don't know how many times a day I have to hit Ctrl+z to undo Word or PowerPoint's "auto correction" of my i to an I (as in Rational Developer for I, Rational Team Concert for I, or IBM I). So I finally bit the bullet and removed those auto-correction rules since I don't generally write about myself in Word or PowerPoint. Honestly, i have no idea why it took me so long :)

2 Comments Permalink
RSS feed of this list 1 2 3 Previous Next

RSS Feed

Bottom Banner