IBM has announced that IBM i 6.1 (as well as 6.1.1) will end support on Sept 30, 2015. If you are still back on V5R4, plan on upgrading to Version 7 as soon as possible.

Why upgrade to V7R2 ?

IBM i 7.2 DB2
IBM has added new DB2 features and functions to 7.2 like Row and Column Access Control. There are many new features being introduced into IBM i that are very useful for System Administrators. IBM i admins can access all this great information in tables.
Performance Tools and Security
IBM i 7.2 has some amazing features that will provide quite a performance and security boost to most environments.

Free-form Control, File, Definition, and Procedure statements
· Free-form Control statements begin with CTL-OPT and end with a semicolon.
· Free-form File definition statements begin with DCL-F and end with a semicolon.
The following statements define three files
1. An externally-described DISK file opened for input and update.
2. An externally-described WORKSTN file opened for input and output.
3. A program-described PRINTER file with record-length 132.
DCL-F custFile usage(*update) extfile(custFilename);
DCL-F screen workstn;
DCL-F qprint printer(132) oflind(qprintOflow);
· Free-form data definition statements begin with DCL-C, DCL-DS, DCL-PI, DCL-PR, or DCL-S, and end with a semicolon.
The following statements define several items
1. A named constant MAX_ELEMS.
2. A standalone varying length character field fullName.
3. A qualified data structure with an integer subfield num and a UCS-2 subfield address.
4. A prototype for the procedure ‘Qp0lRenameUnlink’.
DCL-S fullName VARCHAR(50)
INZ(‘Unknown name’);
num INT(10);
address UCS2(100);
DCL-PR Qp0lRenameUnlink INT(10) EXTPROC(*DCLCASE);
· Free-form Procedure definition statements begin with DCL-PROC and end with a semicolon. The END-PROC statement is used to end a procedure.
The following example shows a free-form subprocedure definition.
DCL-PROC getCurrentUserName EXPORT;
DCL-S curUser CHAR(10) INZ(*USER);

RETURN curUser;
· The /FREE and /END-FREE directives are no longer required. The compiler will ignore them.
· Free-form statements and fixed-form statements may be intermixed.
· IF endDate < beginDate;
· C GOTO internalError
· duration = %DIFF(endDate : beginDate : *days);
· . . .
C internalError TAG
CCSID support for alphanumeric data
Implicit conversion for concatenation
The compiler will perform implicit conversion between alphanumeric, graphic, and UCS-2 data for concatenation expressions.
Open database files without conversion to the job CCSID
Use Control keyword OPENOPT(*NOCVTDATA) or File keyword DATA(*NOCVT) to specify that a database file will be opened so that alphanumeric and graphic data will not be converted to and from the job CCSID for input and output operations.
Temporarily change the default CCSIDs, date format, or time format
Use the /SET and /RESTORE directives to set default values for date formats, time formats, and CCSIDs.
Control the length returned by %SUBDT
An optional third parameter for %SUBDT allows you to specify the number of digits in the result. For example, you can return the value of the years as a four-digit value: %SUBDT(MyDate:*YEARS:4).
Increased precision for timestamp data
Timestamp data can have between 0 and 12 fractional seconds.
Open Access files
An Open Access file is a file which has all its operations handled by a user-written program or procedure, rather than by the operating system. This program or procedure is called an “Open Access Handler” or simply a “handler”. The HANDLER keyword specifies the handler.
New XML-INTO options
· XML namespaces are supported by the “ns” and “nsprefix” options.
· XML names with characters that are not supported by RPG for subfield names are supported by the “case=convert” option.
Support for CCSID conversions that cause a loss of data when a source character does not exist in the target character set
Control-specification keyword CCSIDCVT(*EXCP : *LIST).
· Use CCSIDCVT(*EXCP) to get an exception if a CCSID conversion loses data due to the source character not having a match in the target character set.
· Use CCSIDCVT(*LIST) to get a listing of every CCSID conversion in the module, with a diagnostic message indicating whether the conversion has the potential of losing data.
VALIDATE(*NODATETIME) to allow the RPG compiler to skip the validation step when working with date, time and timestamp data
Use Control-specification keyword VALIDATE(*NODATETIME) to allow the RPG compiler to treat date, time, and timestamp data as character data, without performing the checks for validity.
This may improve the performance of some date, time, and timestamp operations.
Warning: Skipping the validation step can lead to serious data corruption problems. You should only use this feature when you are certain that your date, time, and timestamp data is always valid.