Application development
This chapter describes a selection of products from IBM and third-party providers that can be used for developing different types of applications for IBM i or for using IBM i as application or database server. Detailed information about application development and modernization tools can be found in the following IBM Redbooks publications:
Modernizing IBM i Applications from the Database up to the User Interface and Everything in Between, SG24-8185
Tools and Solutions for Modernizing Your IBM i Applications, REDP-5095
This chapter describes the following topics:
For more information about the IBM i 7.2 application enhancements, see the IBM i Technology Updates developerWorks wiki:
9.1 Languages and compilers
IBM i provides many choices of programming languages for creating applications. This section introduces enhancements in IBM i 7.2 for the following programming languages and compilers:
9.1.1 Command Language
This section covers the following Command Language (CL) topics:
New CL retrieve exit programs running after command completion
The IBM i command analyzer support for the QIBM_QCA_RTV_COMMAND exit point was enhanced. Before, the registered exit programs were always called just before control was transferred to the command processing program (CPP) that was associated with the command being run. Now, you can register an exit program for the QIBM_QCA_RTV_COMMAND exit point and indicate that you want the exit program to be called after control returns from the CPP.
For more information about QIBM_QCA_RTV_COMMAND, see IBM Knowledge Center:
New built-in functions support for both ILE CL and OPM CL
Many of the new built-in functions that are similar to RPG built-in functions are available in both ILE CL and OPM CL.
The following new built-in functions are supported for working with character strings:
The following new built-in functions are supported for conversion operations:
The following new built-in functions are supported for size operations:
%CHECK and %CHECKR
The check built-in function (%CHECK) returns the first position of a base string that contains a character that does not appear in the comparator string. The reverse check built-in function (%CHECKR) returns the last position of a base string that contains a character that does not appear in the comparator string. If all of the characters in the base string also appear in the comparator string, the function returns 0.
Here are the formats of the %CHECK and %CHECKR built-in functions:
%CHECK(comparator-string base-string [starting-position])
%CHECKR(comparator-string base-string [starting-position])
Example 9-1 shows an example of retrieving a numeric value from a string by using %CHECK and %CHECKR. The first CHGVAR statement uses the %CHECK built-in function to find the leftmost character that is not a dollar sign ($), an asterisk (*), or a blank. The second CHGVAR statement uses the %CHECKR built-in function to find the rightmost character that is not a dollar sign, asterisk, or blank. The third CHGVAR statement computes the number of characters between the two values. The last CHGVAR statement uses the substring (%SST) built-in function to convert part of the base string to a decimal CL variable.
Example 9-1 Retrieve a numeric value from a string by using %CHECK and %CHECKR
DCL VAR(&PRICE) TYPE(*CHAR) VALUE('$******5.27*** ')
DCL VAR(&COMP) TYPE(*CHAR) LEN(3) VALUE('$* ’)
DCL VAR(&SPOS) TYPE(*UINT) LEN(2)
DCL VAR(&EPOS) TYPE(*UINT) LEN(2)
DCL VAR(&DEC) TYPE(*DEC) LEN(3 2)
DCL VAR(&LEN) TYPE(*UINT) LEN(2)
CHGVAR VAR(&SPOS) VALUE(%CHECK(&COMP &PRICE))
CHGVAR VAR(&EPOS) VALUE(%CHECKR(&COMP &PRICE))
CHGVAR VAR(&LEN) VALUE(&EPOS - &SPOS + 1)
CHGVAR VAR(&DEC) VALUE(%SST(&PRICE &SPOS &LEN))
For more information about the check built-in function, see the check built-in function topics in IBM Knowledge Center:
%CHECK built-in function
%CHECKR built-in function
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rbam6/rbam6checkrbif.htm
%SCAN
The scan built-in function (%SCAN) returns the first position of a search argument in the source string, or 0 if it was not found.
Here is the format of the %SCAN built-in function:
%SCAN(search-argument source-string [starting-position])
Example 9-2 shows an example of searching for a specific string by using the %SCAN built-in function.
 
Note: The scan by %SCAN is case-sensitive. Therefore, a scan for ‘John’ does not return a positive result if &FNAME contains the value ‘JOHN’.
Example 9-2 Search for a specific string by using the %SCAN built-in function
PGM PARM(&FNAME)
DCL VAR(&FNAME) TYPE(*CHAR) LEN(10)
IF COND(%SCAN('John' &FNAME) *EQ 0) +
THEN(SNDPGMMSG ('NOT FOUND!'))
For more information about the %SCAN built-in function, see IBM Knowledge Center:
%TRIM, %TRIML, and %TRIMR
The %TRIM, %TRIML, and %TRIMR built-in functions use one parameter to produce a character string with blanks removed:
%TRIM removes any leading and trailing blanks.
%TRIML removes any leading blanks.
%TRIMR removes any trailing blanks from a given string.
Here are the formats of the %TRIM, %TRIML, and %TRIMR functions:
%TRIM(character-variable-name [characters-to-trim])
%TRIML(character-variable-name [characters-to-trim])
%TRIMR(character-variable-name [characters-to-trim])
Example 9-3 shows an example of trimming blanks by using the %TRIM function.
Example 9-3 Trim blanks by using the %TRIM function
DCL VAR(&FIRSTNAME) TYPE(*CHAR) VALUE(' JOHN ')
DCL VAR(&LASTNAME) TYPE(*CHAR) VALUE(' SMITH ')
DCL VAR(&NAME) TYPE(*CHAR) LEN(10)
CHGVAR VAR(&NAME) VALUE(%TRIM(&FIRSTNAME) *BCAT %TRIM(&LASTNAME))
For more information about the %TRIM built-in functions, see IBM Knowledge Center:
%TRIM
%TRIML
%TRIMR
%CHAR
The %CHAR built-in function converts logical, decimal, integer, or unsigned integer data to the character format.
Here is the format of the %CHAR built-in function:
%CHAR(convert-argument)
 
Note: The convert-argument parameter must be a CL variable with a TYPE of *LGL, *DEC, *INT, or *UINT.
For more information about the %CHAR built-in function, see IBM Knowledge Center:
%DEC
The %DEC built-in function converts character, logical, decimal, integer, or unsigned integer data to the packed decimal format.
Here is the format of the %DEC built-in function:
%DEC(convert-argument [total-digits decimal-places])
 
Note: The convert-argument must be a CL variable with a TYPE of *CHAR, *LGL, *DEC, *INT, or *UINT.
For more information about the %DEC built-in function, see IBM Knowledge Center:
%INT
The %INT built-in function converts character, logical, decimal, or unsigned integer data to the integer format.
Here is the format of the %INT built-in function:
%INT(convert-argument)
 
Note: The convert-argument must be a CL variable with a TYPE of *CHAR, *LGL, *DEC, or *UINT.
For more information about the %INT built-in function, see IBM Knowledge Center:
%UINT
The %UINT built-in function converts character, logical, decimal, or integer data to the unsigned integer format.
Here is the format of the %UNIT built-in function:
%UINT(convert-argument) or %UNS(convert-argument)
 
Note: The convert-argument must be a CL variable with a TYPE of *CHAR, *LGL, *DEC, or *INT.
For more information about the %UNIT built-in function, see IBM Knowledge Center:
%LOWER
The %LOWER built-in function returns a character string that is the same length as the argument that is specified, with each uppercase letter replaced by the corresponding lowercase letter.
Here is the format of the %LOWER built-in function:
%LOWER(input-string [CCSID])
 
Note: The input-string parameter must be a CL variable with a TYPE of *CHAR.
For more information about the %LOWER built-in function, see IBM Knowledge Center:
%UPPER
The %UPPER built-in function returns a character string that is the same length as the argument that is specified, with each lowercase letter replaced by the corresponding uppercase letter.
Here is the format of the %UPPER built-in function:
%UPPER(input-string [CCSID])
 
Note: The input-string parameter must be a CL variable with a TYPE of *CHAR.
For more information about the %UPPER built-in function, see IBM Knowledge Center:
%LEN
The %LEN built-in function returns the number of digits or characters of the CL numeric or character variable.
Here is the format of the %LEN built-in function:
%LEN(variable-argument)
 
Note: The variable-argument parameter must be a CL variable with a TYPE of *CHAR, *DEC, *INT, or *UINT.
For more information about the %LEN built-in function, see IBM Knowledge Center:
%SIZE
The %SIZE built-in function returns the number of bytes that are occupied by the CL variable.
Here is the format of the %SIZE built-in function:
%SIZE(variable-argument)
 
Note: The variable-argument must be a CL variable.
For more information about the %SIZE built-in function, see IBM Knowledge Center:
9.1.2 ILE RPG
This section covers the following ILE RPG topics:
Free-form Control, File, Definition, and Procedure statements
In IBM i 7.1 TR7 timed enhancements, ILE RPG had a significant enhancement where Control-Specification (H-Spec), File-Specification (F-Spec), Definition-Specification (D-Spec), and Procedure-Specification (P-Spec) syntax are supported in free-form in addition to Calculation-Specification (C-Spec). IBM i 7.2 also has this capability.
Historically, the progress of free-form RPG started in OS/400 V5R. Free-form in C-Spec by specifying /FREE and /END-FREE was introduced in ILE RPG in OS/400 V5R1. In i5/OS V5R3, embedded SQL was supported in free-form C-Spec. The additional free-form enhancements in IBM i 7.1 TR7 and IBM i 7.2 provide more ease of use and understanding of ILE RPG for existing RPG programmers and new comers to RPG from other programming languages, such as Java, PHP, and Visual Basic.
Figure 9-1 on page 422 through Figure 9-4 on page 423 show some examples of the progress of free-form RPG.
For more information about free-form RPG support on IBM i, see the developerWorks website:
Figure 9-1 shows an example of Original Program Model (OPM) RPG in OS/400 V2R3.
FCUSTFILEIF E DISK
FREPORT O E PRINTER
ICUSTDS E DSCUSTFILE
/COPY GETCURDAT
/COPY INVOICE
C READ CUSTFILE LR
C *INLR DOWNE*ON
C DUEDAT IFGT CURDAT
C EXSR SNOVDU
C WRITEREPORTFM
C/EXEC SQL INSERT :NAME, :DUEDATE INTO
C+ MYLIB/MYFILE
C/END-EXEC
C ENDIF
C READ CUSTFILE LR
C ENDDO
C*
C SNOVDU BEGSR
C CALL 'SNDINVCE'
C PARM CUSTDS
C PARM ISOVDU OVERDU 10
C ENDSR
Figure 9-1 OPM RPG in OS/400 V2R3
Figure 9-2 shows an example of /FREE and /END-FREE in C-Spec of ILE RPG in OS/400 V5R1.
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf e disk
Freport o e printer
D custDs ds extname(custfile)
D sendOverdueNotice...
D pr
/free
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
/end-free
C/exec sql insert :name, :duedate into
C+ mylib/myfile
C/end-exec
/free
endif;
read custfile custDs;
enddo;
*inlr = '1';
/end-free
Figure 9-2 /FREE and /END-FREE in C-Spec of ILE RPG in OS/400 V5R1
Figure 9-3 shows an example of support for embedded SQL within /Free and /END-FREE in ILE RPG in i5/OS V5R3.
H bnddir('ACCRCV') dftactgrp(*no)
Fcustfile uf e disk
Freport o e printer
D custDs e ds extname(custfile)
D sendOverdueNotice...
D pr
/free
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
*inlr = '1';
/end-free
P sendOverdueNotice...
P b
/copy invoices
Figure 9-3 Support for embedded SQL within /Free and /END-FREE in ILE RPG in i5/OS V5R3
Figure 9-4 shows an example of support for free-form control, file, definition, and procedure statements in ILE RPG in IBM i 7.2.
ctl-opt bnddir('ACCRCV');
dcl-f custfile usage(*update);
dcl-ds custDs likerec(custRec);
dcl-f report printer;
 
read custfile custDs;
dow not %eof;
if dueDate > %date(); // overdue?
sendOverdueNotice ();
write reportFmt;
exec sql insert :name, :duedate into
mylib/myfile;
endif;
read custfile custDs;
enddo;
inlr = '1';
 
dcl-proc sendOverdueNotice;
/copy invoices
sendInvoice (custDs : IS_OVERDUE);
end-proc;
Figure 9-4 Free-form control, file, definition, and procedure statements in ILE RPG in IBM i 7.2
Fully free-form statements in ILE RPG IV
As part of enhancing the RPG language and make it look and feel like a modern programming language, the restriction for code to be 8 - 80 columns was removed.
To use this new function, you must code **FREE at the beginning of column 1 before entering any other RPG statements on the following line. The **FREE specification is valid only for a single source, which means that if you use /COPY or /INCLUDE directives, they should have their own **FREE specification on the first line, or they will use the standard column limitations.
For more information about this topic, see IBM Knowledge Center:
CCSID support for alphanumeric data and external subfields
In IBM i 7.2, alphanumeric CCSID for the module can be set to many more CCSIDs, including UTF-8 and hexadecimal. Alphanumeric data can be defined with a CCSID.
Supported CCSIDs include the following ones:
Single-byte and mixed-byte EBCDIC CCSIDs
Single-byte and mixed-byte ASCII CCSIDs
UTF-8
Hexadecimal
CCSID(*EXACT) can be used for an externally described data structure to indicate that the alphanumeric subfields should have the same CCSID as the fields in the file.
For more information about CCSID, see IBM Knowledge Center:
Enhancements that are related to CCSID conversion
The capability that is related to CCSID conversion is enhanced in the IBM i 7.2 ILE RPG compiler. These enhancements include the following functions:
No allowance for implicit or explicit CCSID conversion of hexadecimal data. CCSID conversion is not allowed for implicit or explicit conversion of hexadecimal data that includes the following types of data:
 – Hexadecimal literals.
 – Alphanumeric and graphic data that is defined with CCSID(*HEX).
 – Alphanumeric and graphic data in buffers for externally described files when the DATA keyword is in effect for the file and the CCSID of the field in the file is 65535.
 – Alphanumeric and graphic data in externally described data structures that are defined with CCSID(*EXACT) when the CCSID of the field in the file is 65535.
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 is not converted to and from the job CCSID for input and output operations.
For more information about the OPENOPT and DATA keywords, see the IBM Knowledge Center:
 – OPENOPT
 – DATA
Support for CCSID conversions that cause a loss of data. An exception or a diagnostic message that is related to a CCSID conversion by using the C-Spec keyword CCSIDCVT(*EXCP : *LIST). The meaning of the CCSID keyword can be one of the following items:
 – CCSIDCVT(*EXCP): Get an exception if a CCSID conversion loses data because of the source character not having a match in the target character set.
 – CCSIDCVT(*LIST): Get a listing of every CCSID conversion in the module, with a diagnostic message indicating whether the conversion has the potential of losing data.
For more information about the CCSIDCVT keyword, see IBM Knowledge Center:
Implicit conversion for concatenation
You can use the ILE RPG compiler in IBM i 7.2 to perform the implicit conversion between alphanumeric, graphic, and UCS-2 data for concatenation expressions.
For more information about implicit conversion, see IBM Knowledge Center:
Control the length that is returned by %SUBDT
You can use an optional third parameter for the %SUBDT built-in function to specify the number of digits in the result.
Here is the format of %SUBDT:
%SUBDT(value : unit { : digits { : decpos } })
Example 9-4 shows an example of using the %SUBDT built-in function.
Example 9-4 Example of the %SUBDT built-in function
date = d'1999-02-17';
time = t'01.23.45';
timestamp = z'1999-02-17-01.23.45.98765';
 
num = %subdt(date:*YEARS:4);
// num = 1999
 
num = %subdt(time:*MN);
// num = 23
 
seconds = %subdt(timestamp:*S:5:3);
// seconds = 45.987
For more information about the %SUBDT built-in function, see IBM Knowledge Center:
Increased precision for time stamp data
Time stamp data can have 0 - 12 fractional seconds, which are added to the DB2 for i SQL functions.
Example 9-5 shows an example of using the TIMESTAMP keyword that is used in a free-form definition to indicate that the item has a type of time stamp. The number of fractional seconds can be specified as an optional parameter. If this parameter is not specified, the number of fractional seconds defaults to 6.
Example 9-5 Example of the TIMESTAMP keyword in a free-form definition
DCL-S TS0 TIMESTAMP(0); // YYYY-MM-DD-hh-mm-ss
DCL-S TS1 TIMESTAMP(1); // YYYY-MM-DD-hh-mm-ss.f
DCL-S TS6A TIMESTAMP; // YYYY-MM-DD-hh-mm-ss.ffffff
DCL-S TS6B TIMESTAMP(6); // YYYY-MM-DD-hh-mm-ss.ffffff
DCL-S TS12 TIMESTAMP(12); // YYYY-MM-DD-hh-mm-ss.ffffffffffff
For more information about increased precision for time stamp data, see IBM Knowledge Center:
Open Access files
An Open Access file was introduced as the core of the IBM Rational® Open Access RPG Edition, which originally was a separate licensed program from the ILE RPG compiler in IBM i 6.1 and 7.1. In 2012, this function was delivered as PTFs and combined into the ILE RPG compiler and run time. In IBM i 7.2, it is also available as a part of the ILE RPG compiler and run time.
An Open Access file is a file that 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.
For more information about Open Access files, see the following websites:
IBM Knowledge Center:
IBM developerWorks:
New XML-INTO options
The following additional options of XML-INTO operation code are available in IBM i 7.2:
The ns option
The ns option controls how XML-INTO handles XML names with a namespace when XML-INTO is matching XML names to the names in the path option or the subfield names of a data structure. The following values can be specified as this option:
 – keep
 – remove
 – merge
Example 9-6 shows an example of specifying remove as an ns option.
Example 9-6 Example of specifying remove as an ns option
D info DS QUALIFIED
D type 25A VARYING
D qty 10I 0
D price 7P 3
 
xml-into info %xml('info1.xml'
: 'doc=file ns=remove');
// info.type = 'Chair'
// info.qty = 3
// info.price = 79.99
This example assumes that the info1.xml file contains the content that is shown in Example 9-7.
Example 9-7 Content of the info1.xml file
<abc:info xmlns:abc="http://www.abc.xyz">
<abc:type>Chair</abc:type>
<abc:qty>3</abc:qty>
<abc:price>79.99</abc:price>
</abc:info>
Example 9-8 shows an example of specifying merge as an ns option.
Example 9-8 Example of specifying merge as an ns option
D info DS QUALIFIED
D abc_type 25A VARYING
D def_type 25A VARYING
D abc_qty 10I 0
D abc_price 7P 3
 
xml-into info %xml('info2.xml'
: 'doc=file ns=merge path=abc_info');
// info.abc_type = 'Chair'
// info.def_type = 'Modern'
// info.abc_qty = 3
// info.abc_price = 79.99
This example assumes that the info2.xml file contains the content that is shown in Example 9-9.
Example 9-9 Content of the info2.xml file
<abc:info xmlns:abc="http://www.abc.xyz"
xmlns:def="http://www.def.xyz">
<abc:type>Chair</abc:type>
<abc:qty>3</abc:qty>
<def:type>Modern</def:type>
<abc:price>79.99</abc:price>
</abc:info>
For more information about the ns option, see IBM Knowledge Center:
The nsprefix option
The nsprefix option is valid only when ns=remove is specified. It allows an RPG program to determine the values of the namespaces that were removed from the XML names.
Example 9-10 shows an example of specifying ns _ as a nsprefix option.
Example 9-10 Example of specifying ns_ as a nsprefix option
D info DS QUALIFIED
D type 25A VARYING DIM(2)
D ns_type 10A VARYING DIM(2)
D qty 10I 0
D price 7P 3
D ns_price 10A VARYING
 
xml-into info %xml('info3.xml'
: 'doc=file ns=remove nsprefix=ns_');
// info.type(1) = 'Chair'
// info.ns_type(1) = 'abc'
// info.type(2) = 'Modern'
// info.ns_type(2) = 'def'
// info.qty = 3
// info.price = 79.99
// info.ns_price = 'abc'
This example assumes that the info3.xml file contains the content that is shown in Example 9-11.
Example 9-11 Content of the info3.xml file
<abc:info xmlns:abc="http://www.abc.xyz"
xmlns:def="http://www.def.xyz">
<abc:type>Chair</abc:type>
<abc:qty>3</abc:qty>
<def:type>Modern</def:type>
<abc:price>79.99</abc:price>
</abc:info>
For more information about the nsprefix option, see IBM Knowledge Center:
The case option
The case option specifies the way that XML-INTO should interpret the element and attribute names in the XML document when searching for XML names that match the RPG field names and the names in the path option. case=convert indicates that the names in the XML document are converted to valid RPG names before matching to RPG names.
Example 9-12 shows an example of specifying convert as a case option.
Example 9-12 Example of specifying convert as a case option
D etudiant ds qualified
D age 3p 0
D nom 25a varying
D ecole 50a varying
 
D student ds likeds(etudiant)
 
xml-into etudiant %xml('info4.xml'
: 'doc=file case=convert '
+ 'ccsid=ucs2');
// etudiant.nom = 'Élise'
// etudiant.age = 12
// etudiant.ecole = 'Collège Saint-Merri'
This example assumes that the info4.xml file contains the content that is shown in Example 9-13.
The case=convert option specifies that the names in the XML document are converted by using the *LANGIDSHR translation table for the job before matching to the RPG names in the path and in the list of subfields.
The names Étudiant, Âge, and École are converted to ETUDIANT, AGE, AND ECOLE. The XML data itself is not converted, so the subfield ecole receives the value ‘Collège Saint-Merri’ as it appears in the XML document.
Example 9-13 Content of the info4.xml file
<Étudiant Nom="Élise" Âge="12">
<École>Collège Saint-Merri</École>
</Étudiant>
For more information about the case=convert option, see IBM Knowledge Center:
VALIDATE(*NODATETIME) keyword in Control-Specification
The Control-Specification keyword VALIDATE(*NODATETIME) allows the ILE RPG compiler to treat date, time, and time stamp data as character data, without performing the checks for validity.
 
Important: This keyword might improve the performance of some date, time, and time stamp operations. However, skipping the validation step can lead to serious data corruption problems. You should use this feature only when you are certain that your date, time, and time stamp data is always valid.
For more information about VALIDATE(*NODATETIME), see IBM Knowledge Center:
Mixed case PCML support in ILE RPG IV
ILE RPG IV was enhanced to support the generation of mixed case Program Call Markup Language (PCML). You can now select which exported procedures have generated PCML. There is a new *DCLCASE parameter for keyword PGMINFO of H specification, which forces the RPG compiler to generate in the same case as they are coded in RPG source. Before this enhancement, PCML names were generated in upper case.
Also, usage of the PGMINFO keyword with parameters *YES or *NO can specify which procedures in the module PCML are generated.
For more information, see IBM Knowledge Center:
9.1.3 ILE COBOL
This section covers the following enhancements of ILE COBOL in IBM i 7.2:
TIMESTAMP support of 0 - 12 fractional seconds
In IBM i 7.2, the precision of TIMESTAMP is increased and can be set 0 - 12. This enhancement applies to ILE COBOLE and ILE RPG and DB2 for i SQL functions. On ILE COBOL, the following intrinsic functions now allow PICOSECONDS as a duration when specified for a time stamp item:
ADD-DURATION
EXTRACT-DATE-TIME
FIND-DURATION
SUBTRACT-DURATION
The SIZE keyword is allowed with FORMAT TIMESTAMP. The size can be 19, indicating zero fractional seconds, or a value 21 - 32, indicating 1 - 12 fractional seconds.
For more information about PICOSECONDS of each function and the SIZE keyword of TIMESTAMP, see IBM Knowledge Center:
XML PARSE enhancement
XML PARSE now can parse XML files that are greater than 16 MB if no individual document piece that is passed to the processing procedure is greater than 16 MB. The following new XML-CODE values are associated with this change:
XML-CODE 62 indicates that the XML document exceeds 16,000,000 bytes.
XML-CODE 170 indicates that an XML event exceeds 16,000,000 bytes.
For more information about XML PARSE and XML-CODE, see IBM Knowledge Center:
PCML generation improvement
In the IBM i 7.2 ILE COBOL compiler, the following improvements are added to the PCML generation function:
New init keyword for improved OCCURS DEPENDING ON array handling
PCML generation provides improved OCCURS DEPENDING ON array handling with the addition of a new init keyword that is set to the maximum size of the array.
Automatic data-item naming in generated PCML for filler data items and unnamed items in a data structure
PCML generation provides automatic data-item naming in generated PCML for filler data items and unnamed items in a data structure, helping to enable web services to use generated PCML without first modifying it. The names for these data items are _filler_1, _filler_2, and so on.
For more information about PCML generation, see IBM Knowledge Center:
National data enhancements
The IBM i 7.2 ILE COBOL compiler supports the numeric national data type. A numeric literal can be specified for the VALUE clause for a numeric national data item. The figurative constant ZERO/ZEROS/ZEROES represents one or more national zero digits when used with national data items. When the new PROCESS option NATIONALPICNLIT is specified, National ‘N’ literals are supported.
For more information about national data, see IBM Knowledge Center:
Increased accuracy of NUMVAL and NUMVAL-C built-in functions
The accuracy of numeric intrinsic functions NUMVAL and NUMVAL-C increases to 31 digits by using compiler option ARITHMETIC(*EXTEND31) or PROCESS option EXTEND31.
ARITHMETIC parameter for CRTBNDCBL and CRTCBLMOD
A new *EXTEND31FULL option value is available as a value of the ARITHMETIC parameter for the CRTBNDCBL and CRTCBLMOD CL commands. This new value provides the following features:
The accuracy of the following numeric intrinsic functions increases from floating-point accuracy of up to 15 digits to decimal floating-point accuracy of up to 34 digits:
 – ANNUITY
 – MEAN
 – MEDIAN
 – MIDRANGE
 – NUMVAL
 – NUMVAL-C
 – PRESENT-VALUE
 – VARIANCE
The intermediate result of a fixed-point arithmetic expression can be up to 34 digits and numeric literals may have a maximum length of 34 digits.
For more information about the ARITHMETIC parameter for the CRTBNDCBL and CRTCBLMOD CL commands, see IBM Knowledge Center:
New PROCESS statement options
In ILE COBOL in IBM i 7.2, the following options are added to the PROCESS statement:
NOCHGFLTRND and ALWCHGFLTRND
Specifies whether COBOL uses the floating point rounding mode computational attribute that is specified by MI instruction SETCA. You can use SETCA to set the rounding mode of the result of a floating-point calculation to either round or truncate.
NATIONALPICNLIT
Enables N" and N' as the opening delimiter for a national literal and enables elementary data items that are defined by using the picture symbol N to have an implied USAGE NATIONAL clause.
EXTEND31FULL
This option corresponds to the enhancement of the CRTBNDCBL and CRTCBLMOD CL commands. You can use this option to increase the floating-point accuracy of up to 34 digits and the *EXTEND31FULL option of ARITHMETIC parameter for CRTBNDCBL and CRTCBLMOD CL commands.
For more information about the PROCESS statement, see IBM Knowledge Center:
9.1.4 ILE C/C++
This section covers the following enhancements of ILE C/C++ in IBM i 7.2:
New predefined macros
The following predefined macros are available in ILE C/C++ in IBM i 7.2.
ILE C macros
The following ILE C macros are available:
__C99_BOOL indicates support for the _Bool data type.
__C99_DESIGNATED_INITIALIZER indicates support for the designated initialization.
__C99_DUP_TYPE_QUALIFIER indicates support for duplicated type qualifiers.
__C99_EMPTY_MACRO_ARGUMENTS indicates support for empty macro arguments.
__C99_FLEXIBLE_ARRAY_MEMBER indicates support for flexible array members.
__C99_INLINE indicates support for the inline function specifier.
__C99_LLONG indicates support for C99-style long long data types and literals.
__C99_MAX_LINE_NUMBER indicates that the maximum line number is 2147483647.
__C99_MIXED_DECL_AND_CODE indicates support for mixed declaration and code.
__C99_NON_CONST_AGGR_INITIALIZER indicates support for non-constant aggregate initializers.
__C99_NON_LVALUE_ARRAY_SUB indicates support for non-constant aggregate initializers.
__C99_NON_LVALUE_ARRAY_SUB indicates support for non-lvalue subscripts for arrays.
__C99_STATIC_ARRAY_SIZE indicates support for the static keyword in array parameters to functions.
__C99_VAR_LEN_ARRAY indicates support for variable length arrays.
All of these macros are defined when the LANGLVL(*EXTENDED) compiler is in effect.
ILE C++ macros
The following ILE C++ macros are available:
__C99_MAX_LINE_NUMBER indicates that the maximum line number is 2147483647.
__C99_MIXED_STRING_CONCAT indicates support for concatenation of wide string and non-wide string literals.
__IBMCPP_AUTO_TYPEDEDUCTION indicates support for the auto type deduction feature.
__IBMCPP_C99_PREPROCESSOR indicates support for the C99 preprocessor features that are adopted in the C++0x standard.
__IBMCPP_DECLTYPE indicates support for the decltype feature.
__IBMCPP_DELEGATING_CTORS indicates support for the delegating constructors feature.
__IBMCPP_EXTENDED_FRIEND indicates support for the extended friend declarations feature.
__IBMCPP_EXTERN_TEMPLATE indicates support for the explicit instantiation declarations feature.
__IBMCPP_INLINE_NAMESPACE indicates support for the inline namespace definitions feature.
__IBMCPP_STATIC_ASSERT indicates support for the static assertions feature.
All of these macros are defined when the LANGLVL(*EXTENDED0X) compiler is in effect.
New option of the LANGLVL parameter for CL commands
In IBM i 7.2, the new *EXTENDED0X option of the LANGLVL parameter for CL commands is supported in a way that corresponds to the implement initial C++0x features in this release. C++0x is now called C++11. *EXTENDED0X defines the same preprocessor variables as *EXTENDED does, and also defines an individual preprocessor variable for each C++11 language feature that is supported in this release. This option causes the compiler to use all the capabilities of ILE C++ and supported C++11 features that are implemented in this version of ILE C++ compiler.
For more information about the LANGLVL parameter for CL commands, see IBM Knowledge Center:
Implementing the initial C++0x features
ILE C++ in IBM i 7.2 supports the initial C++0x features, including the following features:
C++0x is a new version of the C++ programming language standard.
C++0x is ratified and published as ISO/IEC 14882:2011 and now is called C++11.
All references to C++0x in this document are equivalent to the ISO/IEC 14882:2011 standard.
 
Note: IBM continues to develop and implement the features of the new standard. The implementation of the language level is based on IBM’s interpretation of the standard. Until IBM’s implementation of all the features of the C++0x standard is complete, including the support of a new C++ standard library, the implementation might change from release to release. IBM makes no attempt to maintain compatibility, in source, binary, or listings and other compiler interfaces, with earlier releases of IBM’s implementation of the new features of the C++0x standard, and they should not be relied on as a stable programming interface.
9.1.5 System APIs
For a list with detailed information about new APIs in IBM i 7.2, see IBM Knowledge Center:
For a list with detailed information about changed APIs in IBM i 7.2, see IBM Knowledge Center:
9.2 Java on IBM i
The section covers the following topics:
9.2.1 IBM Developer Kit for Java
This section describes the following topics:
IBM Developer Kit for Java Packaging
In IBM i 6.1 and IBM i 7.1, IBM Developer Kit for Java was available as the licensed program 5761JV1. In IBM i 7.2, the new product ID 5770JV1 is for IBM Developer Kit for Java. This product covers the same options as 5761JV1, but the following options are not available in IBM i 7.2 5770JV1:
Option 8: JDK50, 32-bit
Option 9: JDK50, 64-bit
Option 13: JDK142, 64-bit
All of the available versions of Java for IBM i 7.2 are called IBM Technology for Java, which is based on the AIX version of the IBM Center for Java Technology Developer Kit. IBM Developer Kit for Java Option 6, Option 7, and Option 10, which are referred as Classic Java, were dropped in IBM i 7.1 and also are not available in IBM i 7.2. If you are still using Classic Java before in IBM i before Version 7.1, you should refer the following considerations and migrate your application to use IBM Technology for Java:
When migrating from the Classic Java virtual machine (JVM), which was the 64-bit virtual machine, to the 32-bit version of IBM Technology for Java, consider that there might be limitations when using the 32-bit environment. For example, the amount of addressable memory is much smaller. In 32-bit mode, the Java object heap cannot grow much larger than 3 GB. You also are limited to running approximately 1000 threads. If your application requires more than 1000 threads or a Java object heap larger than 3 GB, use the 64-bit version of IBM Technology for Java. Table 9-1 shows the level of Classic Java and the IBM Technology for Java replacement.
Table 9-1 Classic Java levels and the suggested IBM Technology for Java replacement
Current Classic Java version
Possible options of IBM Technology for Java replacements
Java Developer Kit 1.4 (5761JV1 Option 6)
Java SE 71 32-bit (5770JV1 Option 14)
Java SE 71 64-bit (5770JV1 Option 15)
Java SE 7 32-bit (5770JV1 Option 14)
Java SE 7 64-bit (5770JV1 Option 15)
Java SE 6 2.6 32-bit (5770JV1 Option 11)
Java SE 6 2.6 64-bit (5770JV1 Option 12)
Java SE 6 32-bit (5770JV1 Option 11)
Java SE 6 64-bit (5770JV1 Option 12)
Java SE 8 32-bit (5770JV1 Option 16)
Java SE 8 64-bit (5770JV1 Option 17)
Java Developer Kit 5.0 (5761JV1 Option 7)
Java SE 71 32-bit (5770JV1 Option 14)
Java SE 71 64-bit (5770JV1 Option 15)
Java SE 7 32-bit (5770JV1 Option 14)
Java SE 7 64-bit (5770JV1 Option 15)
Java SE 6 2.6 32-bit (5770JV1 Option 11)
Java SE 6 2.6 64-bit (5770JV1 Option 12)
Java SE 6 32-bit (5770JV1 Option 11)
Java SE 6 64-bit (5770JV1 Option 12)
Java SE 8 32-bit (5770JV1 Option 16)
Java SE 8 64-bit (5770JV1 Option 17)
Java Developer Kit 6 (5761JV1 Option 10)
Java SE 71 32-bit (5770JV1 Option 14)
Java SE 71 64-bit (5770JV1 Option 15)
Java SE 7 32-bit (5770JV1 Option 14)
Java SE 7 64-bit (5770JV1 Option 15)
Java SE 6 2.6 32-bit (5770JV1 Option 11)
Java SE 6 2.6 64-bit (5770JV1 Option 12)
Java SE 6 32-bit (5770JV1 Option 11)
Java SE 6 64-bit (5770JV1 Option 12)
Java SE 8 32-bit (5770JV1 Option 16)
Java SE 8 64-bit (5770JV1 Option 17)
Adopted authority for Java programs is not supported by IBM Technology for Java Virtual Machine.
IBM Technology for Java virtual machine works on Portable Applications Solutions Environment (PASE). When IBM Technology for Java Virtual Machine or PASE for i native methods encounter problems, they dump diagnostic files into the IFS, and you cannot see messages in the job log. There are several types of these core files, including core.*.dmp, javacore.*.txt, Snap*.trc, and heapdump.*.phd. The files range in size from tens of kilobytes up to hundreds of megabytes. In most cases, more severe problems produce larger files. The larger files can quickly and quietly consume large amounts of IFS space.
 
Note: Despite the space these files consume, they are useful for debugging purposes. When possible, you should preserve these files until the underlying problem is resolved.
If your ILE programs use Java Native Interface (JNI) functions, you must compile these programs with teraspace storage enabled.
 
Note: As a preferred practice, use Java SE 71 when migrating from Java Developer Kit 1.4 or 5.0.
Support for multiple Java Development Kits
IBM i 7.2 supports multiple versions of the Java Development Kits (JDKs) and the Java Platform, Standard Edition. To install the IBM Technology for Java options on IBM i 7.2, follow the steps that are found in IBM Knowledge Center:
Table 9-2 shows the list of supported options of 5770JV1 IBM Technology for Java product and their JAVA_HOME in IBM i 7.2.
Table 9-2 Supported options of 5770JV1 IBM Technology for Java in IBM i 7.2
5770JV1 options
JAVA_HOME
Option 11 IBM Technology for Java 6 32-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit
Option 11 IBM Technology for Java 6 2.6 32-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk626/32bit
Option 12 IBM Technology for Java 6 64-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk60/64bit
Option 12 IBM Technology for Java 6 2.6 64-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk626/64bit
Option 14 IBM Technology for Java 7 32-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk70/32bit
Option 14 IBM Technology for Java 71 32-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk71/32bit
Option 15 IBM Technology for Java 7 64-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk70/64bit
Option 15 IBM Technology for Java 71 64-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk71/64bit
Option 16 IBM Technology for Java 8 32-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk80/32bit
Option 17 IBM Technology for Java 8 64-bit
/QOpenSys/QIBM/ProdData/JavaVM/jdk80/64bit
JDK 8.0 is available for IBM i 7.1 and 7.2 since April 28, 2015. Here is more information about how to obtain JDK 8.0 for your IBM i OS version:
Required group PTF levels for JDK 8.0:
 – IBM i 7.2: SF99716 Level 5 or higher
 – IBM i 7.1: SF99572 Level 20 or higher
You can obtain JDK 8.0 32-bit and 64-bit as ISO images from IBM Entitled Software Support (ESS) and then install them by using GO LICPGM Option 11. To access instructions about how to download JDK8.0 on IBM i, see the following documentation:
For more information about PTFs for Java on IBM i, see the IBM i Technology Updates developerWorks wiki:
IBM i also supports using multiple JDKs simultaneously through multiple JVMs. A single JVM runs one specified JDK. The default JDK that is chosen in this multiple-JDK environment depends on which 5770-JV1 options are installed. The following order of precedence determines the default JDK:
1. Option 14 - IBM Technology for Java 7.1 32-bit
2. Option 15 - IBM Technology for Java 7.1 64-bit
3. Option 14 - IBM Technology for Java 7.0 32-bit
4. Option 15 - IBM Technology for Java 7.0 64-bit
5. Option 11 - IBM Technology for Java 6 32-bit
6. Option 12 - IBM Technology for Java 6 64-bit
7. Option 16 - IBM Technology for Java 8.0 32-bit
8. Option 17 - IBM Technology for Java 8.0 64-bit
You can access IBM Technology for Java JDKs by setting the JAVA_HOME environment variable or by specifying a fully qualified path to the Java tool or utilities in the JDK that you want to use.
Example 9-14 shows an example of using IBM Technology for Java 71 64-bit by setting JAVA_HOME. Figure 9-5 shows the result of running java -version from PASE by using the settings of Example 9-14.
Example 9-14 Example of setting IBM Technology for Java 71 64-bit to JAVA_HOME
ADDENVVAR ENVVAR(JAVA_HOME) VALUE('/QOpenSys/QIBM/ProdData/JavaVM/jdk71/64bit')
/QOpenSys/usr/bin/-sh
$
> java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build pap6470_27sr1fp1-20140708_01(SR1 FP1))
IBM J9 VM (build 2.7, JRE 1.7.0 OS/400 ppc64-64 Compressed References jvmap64
70_27sr1fp1-20140708_01_cr (JIT enabled, AOT enabled)
J9VM - R27_Java727_SR1_20140707_1408_B205525
JIT - tr.r13.java_20140410_61421.07
GC - R27_Java727_SR1_20140707_1408_B205525_CMPRSS
J9CL - 20140707_205525)
JCL - 20140707_01 based on Oracle 7u65-b16
$
Figure 9-5 Result of java -version by specifying IBM Technology for Java 7.1 64-bit
For more information about IBM Developer Kit for Java, see IBM Knowledge Center:
Security Updates for Java on IBM i
The following developerWorks website provides the current security update information about Java on IBM i security, including Java SR Delivery Schedule for IBM i and Common Vulnerabilities and Exposures (CVE) information:
9.2.2 IBM Toolbox for Java
To access resources, including data in IBM i from your Java applications, you can use IBM Toolbox for Java. IBM Toolbox for Java provides a set of Java classes, which can be used in Java client/server applications, applets, and servlets that work with data on your IBM i system. Some typical functions of IBM Toolbox for Java are IBM Toolbox for Java JDBC Driver, Program Call and Program Call Markup Language (PCML) functions, and so on. An open source version of IBM Toolbox for Java, which is referred as JTOpen, is also available. JTOpenLite (JTLite) is also available for accessing IBM i resources to mobile applications.
This section covers the following enhancements of IBM Toolbox for Java in IBM i 7.2:
New AS400JDBCTimestamp class
In IBM i 7.2, the maximum precision of a time stamp increases from 6 to 12. Corresponding to the DB2 for i SQL functions and ILE programming languages, the IBM Toolbox for Java JDBC driver also is enhanced to retrieve these larger time stamp values. Because the java.sql.Timestamp class supports only 9 digits of precision, a new AS400JDBCTimestamp class was created to handle those cases where the data from the server includes more than 9 digits of precision.
For more information about the AS400JDBCTimestamp class, see IBM Knowledge Center:
New QueryTimeoutMechanism JDBC connection property
The IBM Toolbox for Java JDBC driver originally implemented the queryTimeout feature by using the QQRYTIMLMT feature of the database engine. However, this mechanism does not correctly allow for the ending of long running operations.
The QueryTimeoutMechanism connection property allows the queryTimeout to be implemented by using a database CANCEL. The possible values are qqrytimlmt and cancel. If qqrytimlmt is specified, the QQRYTIMLMT feature of the database engine is used to limit how long queries can run. If cancel is specified, the running SQL statement is canceled after the specified timeout expires.
For more information about the QueryTimeoutMechanism connection property, see
IBM Knowledge Center:
JTOpenLite Java classes library
The JTOpenLite package (com.ibm.jtopenlite) is an alternative to the IBM Toolbox for Java and JTOpen that provides a small footprint (about 420 KB). You can use JTOpenLite to write Java programs that allow a variety of mobile devices to access directly IBM i data and resources. Although JTOpenLite is considered a part of IBM Toolbox for Java, it is not included in the licensed product. The JTOpenLite JAR file (jtopenlite.jar) is included in the open source version of IBM Toolbox for Java, called JTOpen. You must separately download and set up JTOpenLite, which is contained in JTOpen.
For more information about JTOpenLite, see Modernizing IBM i Applications from the Database up to the User Interface and Everything in Between, SG24-8185.
9.3 Rational Tools for i
This section covers the following Rational Tools for i:
9.3.1 IBM Rational Developer for i
IBM Rational Developer for i (RDi) is an integrated development environment (IDE) that is built on the Eclipse platform. It is the strategic desktop development tool for creating IBM i applications. RDi is installed on a workstation and supports the development of IBM i applications in both host-connected and disconnected modes. RDi can be installed in either Windows, or Linux developer workstations. RDi supports the development of RPG, COBOL, C, C++, SQL, and CL applications, including DDS (for instance display and printer files).
This section covers the following topics:
Rational Developer for i versions
The earliest version of RDi that supports IBM i 7.2 base enhancements is Version 9.1. The latest version supporting IBM i 7.2 is Version 9.5.
RDi V9.1 was delivered in 2014 for the announcement of IBM i 7.2. To support IBM i 7.2 TR1, Version 9.1.1 was released later in 2014.
Both RDi V9.1 and V9.1.1 are built on Eclipse 4.2.2, and RDI V9.5 is built on Eclipse 4.4.2 and Java 8.
For more information about RDi version evolution, go to the following website:
Rational Developer for i packaging
RDi is available in three editions since Version 9.1:
RPG and COBOL Tools
This edition is for developing basic compiled language applications that run on IBM i, including C, C++, CL, DDS, and SQL development. The IDE can be connected to IBM i versions 6.1, 7.1, and 7.2.
RPG and COBOL + Modernization Tools, Java Edition
This edition contains all the functions of RPG and COBOL Tools and a substantial subset of the IBM Rational Application Developer for WebSphere software. This edition provides a rich Java, web, SOA, and mobile development environment to support extension and modernization of heritage IBM i applications. This edition also includes IBM Worklight Developer Edition to support the development of hybrid mobile applications that use the capabilities of the Worklight run times and connect to systems of record that are implemented in RPG, COBOL, C/C++, SQL, or Java/JEE running on AIX or Linux on Power Systems servers.
For more information about Rational Application Developer, see 9.3.2, “IBM Rational Application Developer for WebSphere Software” on page 451.
For more information about IBM Worklight Developer Edition, see the following developerWorks website:
RPG and COBOL + Modernization Tools, EGL Edition
This edition contains the complete Rational Business Developer product to support extension and modernization of heritage IBM i applications that use the EGL language in addition to the RPG and COBOL Tools.
For more information about Rational Business Developer, see 9.3.4, “IBM Rational Team Concert for i” on page 456.
What is new in the latest versions of RDi
RDi V9.1 has the following enhancements:
RDi V9.1.1 has the following enhancements:
RDi V9.5 has the following enhancements:
Removes the columns 8 - 80 restriction for formatting free-form RPG, as described in “Fully free-form statements in ILE RPG IV” on page 424.
Provides for “smart” indentation of free-form RPG with RPG code editor.
Includes an embedded 5250 emulator.
Delivers dramatic improvement of code coverage analysis performance (observed, but not formally benchmarked, as 20 times faster than the previous version).
Provides tools support for Java 8 and Java Enterprise Edition 7 in the Java edition.
For more information about IBM Rational Developer for i, see the following website:
Also, see IBM Knowledge Center:
Line-level batch code coverage analysis capability
Batch code coverage can be started on any program or service program that can be debugged. This capability can be used to determine the effectiveness of automated or manual tests. It can help focus additional testing on code paths that have not been run. It can aid the reduction of the amount of testing that is required by eliminating tests that duplicate which code paths that they exercise.
Figure 9-6 shows starting the Batch Code Coverage capability by right-clicking a program object in RDi. With this capability, the developer can then see, by views, html reports, and editor annotations, exactly which lines of the programs are or are not run by that particular scenario.
Figure 9-6 Start batch code coverage
Figure 9-7 shows an example of Code Coverage Report as an editor.
Figure 9-7 Code Coverage Report
The developer can drill down from this report in the editor to determine which lines are covered. The editor opens the related source member with green and red annotations, showing which lines are covered, as shown in Figure 9-8.
Figure 9-8 Source member with annotations about which lines are covered
The Code Coverage Report also can be shown as HTML and PDF reports. Figure 9-9 is an example of an HTML report. Those reports are available for those users who are not using RDi such as quality assurance and management.
Figure 9-9 Example of a Code Coverage HTML report
For more information about the Code Coverage capability, see the following developerWorks website:
Support of free-form RPG
RDi V9.1 supports and uses the free-form RPG with prompting, syntax checking, program verifiers, source styling logic, live outline views, content assist, hover hints, and other functions.
Wizards such as the D-Specification Wizard, which is shown in Figure 9-10, Procedure Wizard, as shown in Figure 9-11 on page 447, and Java Method Call Wizard, as shown in Figure 9-12 on page 448, can generate free-form definitions into the correct location of mixed free-form and fixed-form RPG sources.
Figure 9-10 D-Specification Wizard
Figure 9-11 Procedure Wizard
Figure 9-12 Java Method Call Wizard
For more information about free-form RPG support, see the following resources:
IBM developerWorks website:
IBM Knowledge Center:
Filter function in the RPG outline view
The RPG outline can be quickly set to the language elements of interest by specifying a filter. The ability to filter to the variable or procedure of interest and see all the references can be a boon to productivity.
This function provides an optional filter field at the top of the Outline view, as shown in Figure 9-13 on page 449, and sets the view as the developer types. Figure 9-13 on page 449 shows only the definitions containing EMP because EMP is in the filter field of the Outline view.
Figure 9-13 Filter field of the Outline view
Interactive Code Coverage support
In RDi V9.1.1, the Interactive Code Coverage analysis capability is supported in addition to the existing batch code coverage analysis, which is described in “Line-level batch code coverage analysis capability” on page 441. With this enhancement, the Code Coverage capability can be adopted by batch processes and interactive processes, such as interactive jobs and web services.
For more information about Interactive Code Coverage support, see the following developerWorks website:
Push-to-client function
RDi V9.1.1 supports the Push-to-client function, which updates all RDi client workspaces from a central IBM i. You can use this capability to distribute and maintain RDi across a team of developers. Figure 9-14 shows the concept of the Push-to-client function. By using this function, you can store workspace configurations in a central location and push them to client workstations so that your developers have a consistent workspace environment.
The Push-to-client function can be used to administer consistent work environments or to simply share or back up configurations.
Figure 9-14 Concept of Push-to-client function
The following information and files can be distributed from a central IBM i:
Remote System Explorer (RSE) Connections
Filters
Eclipse Preferences
Update templates
 – Free-form RPG
 – Free-form SQL
 – COBOL
 – C/C++
Database Connections
RSE Compile Actions
RSE User Actions
For more information about the Push-to-client function, see the following developerWorks website:
9.3.2 IBM Rational Application Developer for WebSphere Software
Rational Application Developer is an Eclipse-based IDE that is used to build Java, Java EE, Web 2.0, mobile, portal, and service-oriented architecture (SOA) applications for distributed platforms and IBM Bluemix®. The purpose of this tool is the development of Java Platform, Enterprise Edition software for multiple platforms running IBM WebSphere Application Server software. IBM i is one of supported platforms. The latest version of Rational Application Developer for WebSphere Software is Version 9.5 running on Eclipse 4.4.2 and Java 8.
There are several advantages to using this software:
Accelerates the development and maintenance of web and mobile applications with tools for established and new and emerging programming models and technologies.
Speeds the development of services and Java applications with productivity tools that support the current Java EE and SOA programming models.
Is optimized for IBM middleware, including the new, lightweight Liberty Profile, the full WebSphere Application Server profile, the IBM WebSphere Portal Server, and IBM Workload Deployer.
Includes advanced test and analysis tools to help you achieve higher initial code quality while accelerating application development, deployment, and management.
Provides flexible deployment options and rich integration with the Rational Collaborative Application Lifecycle Management solution to help raise productivity and improve quality outcomes at both the team and individual practitioner levels.
IBM Rational Application Developer for WebSphere Software V9.5 provides the following new and enhanced capabilities:
Provides tool support for Java 8 and Java Enterprise Edition 7, and the latest version of WebSphere Application Server Liberty, including new support for remote profiling on WebSphere Application Server Liberty and support for portlets on the WebSphere Application Server Liberty profile.
Offers integration with the Jasmine framework for JavaScript unit testing.
Delivers updated tools for working with IBM Bluemix and new integration with the Cloud Foundry CLI interface, and updated Cordova support.
Enables the use of static code analysis results as a criterion for permitting change sets to be delivered to IBM Rational Team Concert™.
Provides functional and usability improvements (including streamlined installation) to the included utilities for automating builds, static code analysis, unit testing, and code coverage analysis in Continuous Integration environments. These capabilities are now packaged into a new Code Quality Extension for Continuous Integration component.
For more information, see the IBM Rational Application Developer for WebSphere website:
Also, see IBM Knowledge Center:
9.3.3 IBM Rational Business Developer
Rational Business Developer (or Rational Developer for i - EGL tools) contains the following features (examples):
A complete IDE for EGL development (IBM Rational Business Developer V9.0 functions)
Limited Java and web development
Rational Business Developer is an Eclipse-based IDE that simplifies the development of SOA applications by using the Enterprise Generation Language (EGL).
Developers can now deliver web, Web 2.0, and mobile applications and services without having to master Java and SOA programming. They can create, test, and debug EGL applications while generating Java, JavaScript, or COBOL code for deployment. RPG and COBOL developers can migrate to EGL easily because they can use it to create portable applications with modern architectures and user interfaces, without having to learn concepts of object-oriented languages.
Here are the main features of Rational Business Developer (and also EGL tools):
EGL transformation
 – Transforms an EGL source into Java, JavaScript, or COBOL code that is optimized for deployment to application hosting environments, including Java EE servers and traditional transactional systems.
 – Streamlines development by using a single, high-level language for complete development of the business application.
 – Generates different languages for a single application, such as JavaScript for an application user interface and Java or COBOL for the application back end.
 – Increases productivity and reduces the technology learning curve to improve business agility and competitiveness.
Simplified service creation
 – Simplifies service creation, concealing the technical complexity of SOA. Multiplatform deployment deploys applications and services on many platforms, either as web services or natively.
 – Provides built-in service constructs and a facility for service generation, allowing business-oriented developers to create SOA applications without extensive training.
 – Creates EGL services and automates the generation of web services from EGL services.
 – Supports the development and deployment of services to WebSphere Application Server on multiple platforms.
 – Allows developers to work within the familiar Eclipse-based environment by using existing development skills.
Unified Modeling Language (UML) support
 – Supports UML to EGL transformations, allowing complex applications to be modeled graphically.
 – UML supports a model-driven approach that streamlines the creation of Java and Web 2.0 applications and services.
 – UML supports the implementation of EGL services.
 – UML supports full Create, Read, Update, Delete applications without the need for manual coding.
Extensible platform
 – Integrates with several IBM products to extend support for IBM i and expand software lifecycle functions.
 – Extends existing IT assets and provides the extensibility, scalability, and productivity features of an Eclipse-based platform.
 – Integrates with IBM Rational Developer for i for SOA Construction and IBM Rational Software Architect.
For more information about EGL, see the following websites:
EGL Cafe:
IBM Knowledge Center:
New features in Rational Business Developer V9.1
Here are the new features of Rational Business Developer V9.1:
New annotations:
 – Description=#doc{}
 – isDeprecated
 – StartTransactionID/RestartTransactionID
New Dojo widget and Dojo Mobile widget enhancements:
 – Addition of DojoMobileTimePicker widget
 – allowEmptyRows property on Datagrid to show/hide empty rows
Support for EGL web applications in the IBM CICS® V5.1 Liberty Profile. Includes RUI/Web 2.0 based, JSF based, JavaWrappers, and VAGen style web transactions.
Extension Points/APIs enabling development of custom code for the following features:
 – Support Fixed/Structured Records in RUI handlers
 – Extend the EGL RUI Visual Editor
Shell Share capability with other Rational V9.1 IDE products.
New features in Rational Business Developer V9.5
Here is a list of the new features in Rational Business Developer V9.5:
Source code analysis with Code Review. With Code Review, you can create configurations of coding rules for EGL source code. You can then run the configurations to check the source code for consistency with the rules.
Rich UI enhancements:
 – Rich UI widget projects update
By default, the following Rich UI system projects are in use:
 • For EGL widgets that are not based on Dojo: com.ibm.egl.rui_4.3.2
 • For EGL Dojo widgets: com.ibm.egl.rui.dojo.widgets_2.3.0
 • For EGL Dojo samples: com.ibm.egl.rui.dojo.samples_2.3.0
 • For the local Dojo runtime access: com.ibm.egl.rui.dojo.runtime.local_1.10.4
 – DojoUploader Widget
DojoUploader widget is a new widget in Rational Business Developer V9.5. You can use it to upload files from the client side to the server.
 – maxHeight property for DojoFilteringSelect
maxHeight is a new property for the DojoFilteringSelect widget to specify the max height of its drop-down view.
 – Support of XulRunner in 64-bit Windows
Xulrunner for Windows 64-bit is supported as the visual editor render engine in
Rational Business Developer V9.5.
Mobile enhancements:
 – EGL Cordova library and tools
Rational Business Developer introduces a new EGL Cordova programming model in Version 9.5. You can develop, test, debug, and deploy hybrid mobile applications with this new library and tool set. You can learn how to develop with the EGL Cordova library and look up the EGL Cordova library API.
 – EGL Dojo Mobile widgets
By default, the mobile widgets in use are updated to Version 1.4.0.
More properties, such as isLongList and isFilteredList, are added to the DojoMobileList widget to provide a performance boost when processing long lists or using filters for a list.
More widgets, such as DojoMobileAccordion, DojoMobileAccordionPane, DojoMobileContentPane, DojoMobileScrollablePane, and DojoMobileSimpleDialog, are added to provide more container and layout capability.
Service enhancements:
 – SOAP V1.2 client support in JAX-WS
Rational Business Developer V9.5 supports invoking third-party web services that use SOAP V1.2 bindings. You must switch the service run time to JAX-WS when calling a SOAP V1.2 web service.
 – Unwrapped SOAP Service support
Rational Business Developer V9.5 supports invoking third-party web services that provide document/literal unwrapped style WSDL files. You must make sure that the service run time is JAX-RPC when calling a web service that is described by a document/literal unwrapped style WSDL file.
 – Ant task egl.generateWSDL
A new Ant task named egl.generateWSDL was introduced to enable generation of the WSDL file from an EGL service file through Ant.
New annotation isRemoved. The isRemoved annotation is a new annotation in Rational Business Developer V9.5. You can use it to logically remove any of your own EGL parts or types such as libraries, services, external types, records, or variables so that usage of these display as an error in the IDE.
New EGL generation time options:
 – genXSDFile
The genXSDFile build descriptor option specifies whether an XML schema definition (XSD) side file is created for called programs with passed parameters. This option creates the XSD file, which can be used as input to enable testing with the Rational Virtualization Server.
 – minSubstringLength
The minSubstringLength build descriptor option specifies the smallest length that is allowed for a substring move before an IndexOutOfBoundsException is thrown.
 – ADDITIONALUSERFILES
The ADDITIONALUSERFILES parameter is a new generation symbolic parameter that identifies additional files to be added to the build plan dependency list. This allows additional user files to be processed and uploaded to a host machine during generation of COBOL.
 – CICS channels with J2C connections
You can now use CICS Channels with CICS J2C connections. In your linkage options, set parmForm to CHANNEL and remoteComType to CICSJ2C.
 – New Resource Association Property includeRecordLengthField
The property specifies whether to also write the Record Length field for variable-length sequential records when generating Java from EGL source.
New EGL preferences:
 – Delete generated files during project clean
You can select this check box to delete all files (except the properties files) and any resulting empty directories from the EGLGen/JavaSource directory during a project clean.
 – Search EGLARs for details
You can select this check box to obtain function and variable descriptions from EGL editor when content assist is used.
 – Show advanced hover details
You can select this check box to display extensive hover details when using the mouse-over function during an editor session for EGL source when content assist is used.
New environment variable: VSECON / Changes to VSE Build Server.
VSE Build Server now uses the environment variable VSECON to locate the VSE Connector Client. This variable should be set to the installation directory of the VSE Connector Client, or a directory containing both VSEConnector.jar and cci.jar. You no longer need to copy these files into the distributed build plug-in directory.
Debugger enhancement: EGL Debug Support for the Liberty Profile. The ability to debug EGL services, web transactions, and UI programs when using the Liberty Profile was added.
9.3.4 IBM Rational Team Concert for i
IBM Rational Team Concert, which is part of Rational Collaboration Lifecycle Management (CLM) and Rational Systems and Software Engineering, is a team collaboration tool that is built on the IBM Jazz™ technology platform. Rational Team Concert uses the Change and Configuration Management (CCM) application to provide features that integrate development project tasks, including iteration planning, process definition, change management, defect tracking, source control, build automation, and reporting.
The current version of Rational Team Concert running on IBM i is V6.0.
Rational Team Concert provides the following capabilities:
An integrated set of collaborative software delivery tools for IBM i development, including source control, change management, builds, process management, and governance
Integration with Rational Developer for i to enable team capabilities for native IBM applications
Specialized support for source control, change management, and builds of traditional language artifacts, such as RPG and COBOL
Support for multitier software development and application modernization efforts by using RPG, COBOL, PHP, Java, and others
Supports the IBM i native library file system and Integrated File System (IFS)
IBM i artifact builds, including RPG, COBOL, CL, and Java
Build agent, which runs natively on the IBM i operating system (runs IBM i commands and call programs)
Native hosting of the IBM Jazz Team Server on IBM i
Rational Team Concert consists of client and server components. To use Rational Team Concert functions for developing IBM i applications, the Rational Team Concert client must be installed on a workstation with Rational Developer for i. Rational Team Concert server components are supported on several platforms, including IBM i, AIX, z/OS, Solaris, Red Hat (RHEL) and SUSE (SLES) Linux distributions, and Windows Server.
Supported operating systems versions and limitations are described in the Jazz Community Site by Rational Team Concert version. For example, the system requirements of Rational Team Concert V6.0 are described at the following website:
 
What is new in the current version of Rational Team Concert
New functions in each Rational Team Concert version and release are listed at the Jazz Community Site. For example, here is the website for Rational Team Concert V5.0.1, which is the current version of Rational Team Concert as of October 2014:
For more information about Rational Team Concert, see the following website:
You can find more information about Rational Team Concert in IBM Knowledge Center:
Finally, see Modernizing IBM i Applications from the Database up to the User Interface and Everything in Between, SG24-8185.
9.3.5 IBM Rational Host Access Transformation Services
Rational Host Access Transformation Services (HATS) is a tool that you can use to transform applications that use text-based 5250 user interfaces in to web pages, that is, you can create a web application from an existing 5250 application without touching the source code. Rational HATS can connect to IBM Mainframe 3270 and general UNIX VTY panels, run macros there, gather the data, and present data from multiple systems in one single web page.
Rational HATS general description
The Rational HATS tool is based on the Eclipse environment. The current version, which is Version 9.0, uses Eclipse 4.2.2.
As a prerequisite for performing development activity, Rational HATS needs one of the following Rational products:
Rational Developer for i V9.0
Rational Business Developer V9.0
Rational Application Developer for WebSphere Software V9.0
Rational Software Architect for WebSphere Software V9.0
Rational Developer for AIX and Linux V9.0
Here are the supported runtime Java application servers:
IBM i - Release Overview V7.1 and future modification levels and their fix packs
IBM i - Release Overview V6.1 and future modification levels and their fix packs
IBM i - Release Overview V5.4 and future modification levels and their fix packs
Apache Geronimo 2.2.1 and future modification levels and fix packs
Apache Geronimo 2.1.7 and future modification levels and fix packs
WebSphere Application Server: Different versions of Express/Base/Network Deployment editions, from Version 7.0 to the latest, which is Version 8.5.5
Oracle WebLogic server 12c (12.1.1) and future modification levels and their fix packs
 
Note: Any of the WebSphere, WebLogic, and Apache Geronimo technologies can run on a different platform from where they are supported (IBM i is not mandatory). These servers then connect by using telnet or secure telnet protocol to the IBM i server where the original 5250 application runs.
Rational HATS V9.0 can create two types of clients:
A web-based one running in a web browser
A client/server-based client running either in IBM Lotus Notes®, a Lotus Expeditor environment, or in an Eclipse SDK environment
Here are the supported web browsers:
Mozilla Firefox
Android
Google Chrome
Apple Safari
Apple Safari on iOS
Microsoft Internet Explorer
Microsoft Internet Explorer mobile browser
Konqueror
Opera
Rational HATS can also create portlets when it is used with Rational Application Developer for WebSphere Software. It supports different IBM WebSphere Portal Server Editions, from Version 7.0 to Version 8.0.
For detailed system requirements and possible limitations, see the following website:
Rational HATS basic functions
Rational HATS transforms traditional text-based interfaces, such as 3270 and 5250 green-screen applications, into web, portlet, rich-client, or mobile device user interfaces. It also extends 3270, 5250, and virtual terminal (VT) applications as standard web services. With Rational HATS, you can easily convert traditional text-based host application panels to GUIs.
Rational HATS is available in the following packages:
Rational HATS for Multiplatforms and HATS for Linux on IBM System z®
Rational HATS for 5250 Applications on Multiplatforms
Rational HATS for 5250 Applications on i5/OS
 
Note: Rational HATS for Multiplatforms can create applications by using IBM i 5250, IBM Mainframe 3270, and UNIX VT-based panels (VT is only for capturing data, not panels). Rational HATS for 5250 can use only IBM i 5250 panels.
Rational HATS for Multiplatforms and Rational HATS for 5250 Applications on Multiplatforms can use any supported HTTP server on any supported Java application server (see “Rational HATS general description” on page 457). Rational HATS for 5250 Applications on i5/OS can have only a Java application server run time on IBM i.
The Rational HATS product provides both a Rational HATS Toolkit (Windows Eclipse-based plug-in for development of Rational HATS applications) and a Rational HATS run time. The Rational HATS Toolkit can be downloaded for free from the Rational HATS product website, found at:
Using Rational HATS, you can reuse your existing assets in the following innovative ways:
Terminal applications
 – Transforms the user interface of your 3270 and 5250 green-screen applications.
 – Allows tunable default rendering of all non-customized panels of the application.
 – Transforms specific panels by using panel customizations and transformations.
 – Transforms terminal application components, such as function keys and menu items, into intuitive links, buttons, or text with images.
Web services
 – Extends 3270, 5250, and VT application core business logic as web services or JavaBeans.
 – Captures panel flows, inputs, and outputs with a wizard-based macro recorder. You can edit what is captured by using the Visual Macro Editor, and create integration objects and web services from the panel flows.
 – Reuses terminal application business logic in new business processes and applications.
Customization
 – Provides customizable workflow and application navigation.
 – Rational HATS simplifies panel navigation with macros and panel combinations.
 – Uses global variables to store data, pre-fill drop-down menus or windows, and inputs information for the user.
 – Can transform a text-based user interface with a rich set of GUI widgets, such as drop-down menus, calendars, tables, windows, and radio buttons.
 – Using business logic, Rational HATS augments terminal applications by aggregating terminal application data with other data sources.
Rational HATS Toolkit
 – Provides wizard-based visual development, including visual page design and macro editing.
 – Works with a supported Rational IDE environment, such as Rational Application Developer for WebSphere Software, Rational Business Developer, or Rational Developer for i V9.0 + Modernization Tools, EGL Edition.
 – Provides access to standard Eclipse features, such as Java development tools.
 – Features a wizard-based development process for creating Rational HATS applications.
Deployments
 – Routes applications to WebSphere Application Server and WebSphere Portal Server, and a number of devices and clients.
 – Creates standard web applications for deployment to WebSphere Application Server.
 – Customizes portlets with the Rational HATS Toolkit for deployment to WebSphere Portal Server.
 – Optimizes web applications for mobile devices running Apple iOS or Microsoft Windows Mobile.
 – Creates a standard Eclipse rich client application for deployment to IBM Lotus Notes, Lotus Expeditor, or Eclipse Rich Client Platform.
For more information about the Rational HATS product, see the following websites:
Rational HATS product website:
IBM Knowledge Center:
9.3.6 IBM Rational Application Management Toolset for i
Rational Application Management Toolset for i provides IBM i system administrators and other advanced users with a lightweight set of tools for the common tasks of working with library file system objects and for creating and maintaining Command Language (CL) programs.
Application Management Toolset for i is a subset of the Application Development Toolset (ADTS), which is sold as part of WebSphere Development Studio for i V6.1 or as part of Rational Development Studio for i V7.1. Two of the key components of ADTS are Programming Development Manager (PDM) and Source Entry Utility (SEU).
In Version 7.2, the original product 5761-AMT was migrated to product 5770-AMT.
The new Application Management Toolset for i includes these two components, in modified form, as shown in Figure 9-15.
Figure 9-15 Application Management Toolset for i includes modified components of ADTS
The version of SEU that is included in Application Management Toolset for i supports only editing of the CL source. It does not support editing of source members that are written in other languages, such as RPG, COBOL, C, C++, or DDS. Like SEU, this editor provides language-sensitive features, such as syntax checking and prompting for CL source members.
Application Management Toolset for i supports the operating system member types CL, CLLE, CLP, TXT, and CMD in the EDTCLU (same as STRSEU) CL command.
The version of PDM that is included in Application Management Toolset for i can be used to browse, move, filter, and manipulate objects of any type, but it enables only software development options (such as Edit and Compile) for CL objects.
Application Management Toolset for i supports the following functions from PDM:
All the menu functions of STRPDM (new CL command STRAMT)
All the functions of WRKLIBPDM (new CL command WRKLIBAMT)
All the functions of WRKOBJPDM (new CL command WRKOBJAMT), including FNDSTRPDM (new CL command FNDSTRAMT), except for the following functions:
 – No option 18 to call DFU.
 – No option 34 to call ISDB.
 – No option 54 to call CMPPFM.
All the functions of WRKMBRPDM (new CL command WRKMBRAMT), including FNDSTRPDM (new CL command FNDSTRAMT), with the following exceptions:
 – Option 2 (Edit) uses the new command EDTCLU, which supports only the CL, CLLE, CLP, TXT, and CMD member types.
 – No option 17 to call SDA.
 – No option 19 to call RLU.
 – No option 54 to call CMPPFM.
 – No option 55 to call MRGSRC.
None of the other components from ADTS are included with Rational Application Management Toolset for i.
Rational Application Management Toolset for i licensing
IBM Rational Application Management Toolset for i V7.2 (5770-AMT) is licensed per processor, for unlimited usage on that processor by any number of persons. The license is priced according to the software tier of the machine on which Rational Application Management Toolset for i is used.
Like WebSphere Development Studio for i and Rational Development Studio for i, ongoing maintenance and support costs for Rational Application Management Toolset for i are included in the IBM i system Software Maintenance agreement (SWMA).
Rational Application Management Toolset for i requirements
Here are the Rational Application Management Toolset for i requirements:
Hardware requirements:
IBM Rational Application Management Toolset for i V6.1 supports all the hardware models that support IBM i 6.1 and IBM i 7.1.
Software requirements:
Rational Application Management Toolset for i V6.1 supports IBM i 7.2.
Accessing Rational Application Management Toolset for i
The main menu for Rational Application Management Toolset for i (AMT) (Figure 9-16) can be accessed by running STRAMT.
Application Management Toolkit (AMT)
Select one of the following:
1. Work with libraries
2. Work with objects
3. Work with members
9. Work with user-defined options
 
Selection or command
===>
F3=Exit F4=Prompt F9=Retrieve F10=Command entry
F12=Cancel F18=Change defaults
Figure 9-16 Main menu for Rational Application Management Toolkit for i
9.3.7 ARCAD Pack for Rational
ARCAD Pack for Rational provides modern development enhancements to Rational Team Concert and Rational Developer for i. Designed to complement these Rational products, ARCAD Pack provides a modern collaborative development environment, supporting both agile and traditional methods. ARCAD Pack for Rational uses deep dependency analysis to provide audit, impact analysis, and intelligent build and deployment capabilities, and also allows RPG code to be converted to the latest free-format RPG specifications.
ARCAD Pack for Rational helps IBM i development teams deliver high-quality software faster based on six main components:
ARCAD-Observer
ARCAD-Observer brings easy-to-use application intelligence for maintaining and transferring knowledge of existing systems. ARCAD-Observer references all dependencies between applications and components down to the field and source line level, whatever language is used. You can use this solution to analyze the information flow across processes, produce data models, perform cross-platform impact analysis, and quickly identify business rules that are contained in the code. The built-in editor displays information as graphics that can be enhanced and included in documentation.
ARCAD-Builder
ARCAD-Builder automates 100% of the build process for any type of IBM i component. Executable code is re-created without any manual intervention and ensures that there is no regression.
ARCAD-Deliver
ARCAD-Deliver coordinates deployment of all platform components in a single transfer operation. With this solution, you can manage a deployment process from a central console and deploy any type of files to any number of target servers that run IBM i, AIX, UNIX, Linux, and Windows operating systems.
ARCAD-Audit
ARCAD-Audit provides IBM i code audit and restructuring. ARCAD-Audit identifies the following items:
 – Multiple copies of the same code
 – Which objects are used in production
 – Source without objects
 – Objects without source
 – A source with a date later than the object
 – Unused objects
ARCAD-Converter
You can use ARCAD-Converter, which works as a plug-in of Rational Developer for i, to convert fixed-form RPG sources to free-form RPG sources with the latest compiler specs. This solution supports both on-demand (statement-by- statement) and bulk conversions to accelerate the modernization of RPG code.
CASE and 4GL support
CASE and 4GL support allows CASE/4GL, such as CA 2E (Synon), JD Edwards (JDE), LANSA, and Adeliathe, to be managed.
For more information about ARCAD Pack for Rational, see Modernizing IBM i Applications from the Database up to the User Interface and Everything in Between, SG24-8185, and the following website:
9.4 Portable Applications Solutions Environment
There are two new enhancements for PASE:
PASE now supports programs that are compiled for AIX 7.1.
A new version of OpenSSL 1.0.1g is included in IBM Portable Utilities for i 7.2 (5733-SC1).
9.5 Ruby on Rails for i
PowerRuby is a freely available and commercially supported port of the Ruby language. It is a web application development framework (Rails) that is written in the Ruby language. This product is available for download from the following website:
9.6 Zend and PHP on IBM i
PHP Hypertext Preprocessor (PHP) is an open source scripting language that is designed for web application development and enables simple scripting.
PHP applications are easily integrated with data in IBM DB2 for i, RPG, COBOL, and other business applications that are running on IBM i.
PHP is used for content management, customer relationship management, database access, e-commerce, forums, blogs, wikis, and other web-based applications.
Zend and IBM worked together to deliver Zend Solutions for IBM i, a complete PHP development and production environment solution for the IBM i platform.
Here are the Zend Solutions for IBM i:
Zend Server Basic Edition for IBM i (1-year Basic Support from Zend)
Zend Server Professional Edition for IBM i
Zend Server Enterprise Edition for IBM i
Zend Studio for IBM i (1 year of Basic Support from Zend)
Zend DBi
 
Tip: Use always the distribution that is downloaded from Zend website. It contains the most up-to-date version of Zend Server Community Edition.
Zend Server Version for IBM i version 8 and 8.5 supports IBM i 7.2:
For more information about Zend products, go to the Zend website:
Figure 9-17 shows the Zend application development and deployment architecture for IBM i.
Figure 9-17 Zend PHP application development and deployment architecture for IBM i
The following topics are covered in this section:
9.6.1 What is new in Zend Server V8 and V8.5
Zend Server V8 contains the following new functions:
Delivers in-context insight into your PHP applications
Provides extra specific details for applications such as Magento, Drupal, and Wordpress, and frameworks such as Zend Framework, Symfony, and Laravel
Enables debugging of mobile and web services requests originating from a browser, mobile, or device-to-device communications
Provides URL insight on your slowest and worst-performing pages
Other new features and enhancements include:
 – PHP 5.5 and 5.6 support
 – Apigility included in Zend Server Support SLA
 – A new SDK library for all Zend Server APIs and command-line tools
Zend Server V8.5 contains the following new functions:
The Gallery of community-driven add-ons aggregates and organizes all Z-Ray extensions and Zend Server plug-ins in an easy-to-use interface. This release introduces new plug-ins for Joomla, Doctrine2, Redis, OPcache, MariaDB, and LoS Modules, in addition to plug-ins for WordPress, Drupal, Magento, Zend Framework, Apigility, Laravel, and Symfony.
Enhanced Job Queue with support for multiple-queues management. You can schedule jobs based on time, priority, and even dependencies. You can defer jobs or run periodically and run in parallel. The management GUI tracks the execution of jobs, their status, execution time, and output. Unlike cron jobs, Job Queue allows asynchronous execution, deferred jobs, and more. Multiple-queues management facilitates the creation and management of groups of jobs that are functionally or logically related.
The Live Support function makes it easier to troubleshoot problems with live users in real time, addressing issues that are not otherwise visible or reproducible. A specific user’s session can be Z-Ray enabled, tracked, and analyzed without exposing any sensitive information. The combination of these two features allows developers to get deep insights into a specific user’s requests without affecting the overall server performance and without disclosing sensitive information.
Redesigned UI for a superior user experience. Includes a new menu structure, and a more modern look and feel.
A built-in understanding of application request routing logic aggregates monitoring events, and displays improved results for URLs listed within URL Insight.
Enhanced Xdebug support. You can now easily select your preferred debugger and configure specific connection settings per debugger (Xdebug and Zend Debugger ).
Other new features and enhancements include:
 – Notifications about the environment are displayed directly in Z-Ray.
 – Improved performance and lower memory consumption.
 – Increased granularity control of the data that is collected by Z-Ray.
 – New plug-ins display with multiple panels now consolidated under one top-level panel.
 – New capability to perform server-side actions from Z-Ray.
 – New added support for application independent plug-ins, such as Amazon EC2.
 – New support for Microsoft Azure.
9.6.2 Zend Server Basic Edition for IBM i
Zend Server Basic Edition is a fully tested and enhanced version of open source PHP. It provides the PHP run time and is packaged to make the software installation easier and faster by using the instant PHP setup. It is enhanced to take advantage of IBM i specific resources and capabilities.
Zend Server Basic Edition for IBM i is a lightweight version of Zend Server, and replaces Zend Community Edition. This edition has a minimal feature set for running your PHP applications.
9.6.3 Zend Server Professional and Enterprise Edition for IBM i
Zend Server Professional and Enterprise Edition is a robust PHP production environment that helps ensure that applications that are written in PHP run smoothly at all time. It is designed for IT personnel and businesses that require commercial-grade web applications in highly reliable production environments.
Zend Server replaces the Zend platform. It offers all the features that are provided in Zend Server Basic Edition for IBM i.
The following website shows a comparison between the features that are offered in Zend Server Basic Edition for IBM i and Zend Server Professional and Enterprise for IBM i:
http://www.zend.com/en/products/server/editions-ibm-i-production-new
9.6.4 Zend Studio for IBM i
Zend Studio for IBM i is an industry-leading Eclipse-based PHP integrated development environment (IDE) for professional developers. It includes all the development components that are necessary for the full PHP application lifecycle and simplifies complex projects. It supports development for mobile devices and for using PHP REST XML Web Services.
Zend Studio for IBM i V12.5 includes the following features and enhancements:
The new version includes a whole new way to set up remote debugging. If you have multiple servers that are configured locally, in the cloud, or remotely on an intranet, you can configure the debugger separately for each particular server and define the connection settings through the server creation and edit wizard.
There is support for PHPUnit 4 for effective integration testing and simplified unit tests to make sure that your code is stable and functioning correctly.
There is support for the latest version of Apigility so you can build, test, and debug your APIs more efficiently.
There is content assist for Magento and Doctrine, Angular JS Explorer View, Markdown Editor, and GitHubMylyn Integration that allows you to use a GitHub repository to store and retrieve Mylyn tasks. Additional improvements include upgraded installation packages with built-in JRE so you do not have to preinstall it, the font size plug-in, and many performance and quality improvements.
You can develop client-side applications with AngularJS, which is the open source web application framework from Google. Zend Studio takes full advantage of the framework client-side model-view-controller (MVC) architecture.
You can create hybrid mobile applications with the integrated Ionic framework. Ionic offers a library of mobile-optimized HTML, CSS, and JS components, gestures, and tools for building highly interactive apps.
You can code mobile applications all in HTML/CSS/JS from within Studio with Cordova. Apache Cordova is a set of device APIs that allow a mobile application developer to access native device functions from JavaScript.
You can get full support for PHP 5.6. Zend Studio takes full advantage of the new PHP features, such as constant scalar expressions, variadic functions, phpdbg, large file uploads, gost-crypto hash algorithm, and more.
You can discover hidden bugs and performance issues by using your browser and then open a debugging or profiling session directly from Z-Ray to fix the uncovered issues by using Zend Studio. Leverage Z-Ray Live! to get information about your application performance from mobile devices and address them with Studio. With Z-Ray Live!, you can debug mobile and web services API calls with Z-Ray Live! You have all the advantages of Z-Ray for debugging requests originating from native mobile clients and other non-browser sources.
Manage easily all your frameworks, libraries, assets, and utilities with the integrated Bower framework. Bower works by fetching and installing packages from all over, taking care of hunting, finding, downloading, and saving the items that you are looking for. It provides hooks to facilitate using packages in your tools and workflow. Bower is optimized for the front end. It uses a flat dependency tree, requiring only one version for each package, reducing page load to a minimum.
Zend Studio lets you deploy your PHP application on any server. In addition, you can take full advantage of the cloud with the Amazon AWS Zend certified PHP stack offering, which is an instantly available, consistent PHP environment that provides a cloud-based Zend Server. Zend Studio also works with other leading cloud platforms, such as IBM Bluemix and SoftLayer®, Red Hat OpenShift, and Microsoft Azure. You can easily deploy your PHP applications on these public or private platforms by using the built-in cloud deployment integration function.
You can extend PHP code to access IBM i resources. The newly integrated Toolkit is designed to work either statelessly or statefully. Its stateful abilities enable developers to call RPG/COBOL/CL programs and APIs while retaining cursors, library lists, the QTEMP library, and more, to enable reuse of existing programs for web applications.
Zend Studio is built on top of the Eclipse 4 Luna platform and benefits from many new enhancements that are included in the new platform.
Zend Studio for IBM i V13 includes the following features and enhancements:
Zend Studio ships with the most complete PHP 7 support to date. It supports the newest scripting concepts in PHP 7, such as Return Type Declarations, Anonymous Classes, the Spaceship Operator, Group Use Declarations, Scalar Type Hints, and more.
Zend Studio includes support for PHP 7 Express. The new built-in migration tool assistant makes the transition to PHP 7 easier and faster. This new tool scans existing projects for compatibility issues such as - removed and deprecated usages, or new reserved words in PHP 7. It points developers to the exact line of code where the issue is and suggests quick fixes.
Zend Studio includes new Docker tools that support the management of Docker Images and Containers. It integrates with existing PHP tools, which allows running, testing, and debugging PHP applications on Docker Containers with a PHP stack.
Zend Studio supports EGit 4.0 tools. One of the highlights in this new version is the support for the Git Flow branching model, which is used among PHP developers.
This new version of Zend Studio is based on the latest version of Eclipse Mars 4.5.1. Developers already using Eclipse as a development platform will welcome the addition of a dedicated Zend Studio 13 plug-in that can be installed directly from within their development environment.
A new debugging workflow design makes debugging easier. Zend Studio automatically detects the installed debugger for local and remote servers and helps configure the client IPs for debugging. Redundant client IPs are detected and removed while invalid or inaccessible IPs are reported. When adding a PHP server, Zend Studio automatically provides the “best match” client IP. Also, Zend Debugger tunneling configuration can now be set up in debugger client settings for a a PHP server.
For more information about the enhancement of Zend Studio for IBM i, see the following Zend website:
9.6.5 Zend DBi and PHP database support
The Zend DBi product provides MySQL implementation for IBM i. DB2 Storage Engine enables MySQL data storage in DB2.
Zend DBi is supported only for IBM i. 6.1 and 7.1.
Zend DBi supports open source-based applications. An application uses MySQL data commands against Zend DBi or a MySQL database, the storage engine translates the commands, and then passes the data to DB2 for i. With this solution, there is only one database to manage, back up, and protect.
Figure 9-18 on page 469 shows an overview of Zend DBi and MySQL using the DB2 Storage engine.
Figure 9-18 Zend DBi and MySQL using a DB2 Storage engine
PHP now supports the following database connectivity:
Local DB support for MySQL and DB2
Remote DB support for MySQL and Oracle
For more information about Zend products for IBM i, see the following websites:
Zend and IBM i:
Zend Studio:
Zend DBi:
9.7 Mobile application development for IBM i
Mobile support is described in several chapters and sections in this book. If we speak about mobile support, we speak either about system management or mobile support in application development tools that enables the development of mobile applications in connection with IBM i. The following products now support mobile access application development:
RPG Open Access
XML Services
JTOpen Lite
PHP - Zend Server for IBM i and Zend Studio
IBM Connections™ 5.0
IBM Notes Traveler 9.0.1
IBM Mobile Database
DB2 WebQuery
Rational HATS
IBM i Mobile Access enables IBM i users to access IBM i resources from web-enabled mobile devices in a mobile-friendly view by using a mobile web browser. For more information about this topic, see 2.2.4, “IBM i Mobile Access” on page 152.
9.8 Open Source for IBM i
Open Source for IBM i (5773OPS) is new license program option. It provides many of the open source technologies for IBM i. The world of open source continues to rapidly evolve and change. Recently, there were many Open Source Technologies added to IBM i. This section explains the enhancements of Open Source for IBM i.
The following topics are covered in this section:
You can obtain new Licensed Program 5770OPS as ISO images from the IBM Entitled Software Support (ESS) website. The 5770OPS package is titled F_MLTI_NLV_110_IBM_i_Open_Source_Solutions. You can download it from the 5770SS1 section.
The ESS website is at:
9.8.1 Node.js
Node.js is an open source project based on Google Chrome V8 Engine. It provides a platform for server-side JavaScript and networking applications. Node.js applications are written in JavaScript, but run without browsers. The event-driven, non-blocking I/O model makes it lightweight and efficient to use. It also provides several built-in modules to simplify programming, especially for networking applications. There are many third-party modules that can be easily installed with the built-in npm (node packaged modules) tool to extend Node.js.
Figure 9-19 shows an overview of Node.js converting JavaScript code into machine code.
Figure 9-19 Node.js engine converts the JavaScript into machine code
Node.js is now delivered as Open Source for IBM i (5773OPS) Option1. This new offering includes the following functions:
DB2 for i access library
Node.js toolkit for IBM i
Licensed program prerequisites
To install Node.js on IBM i V7.2, the following licensed programs are required:
5770SS1 Option 33, Portable Application Solutions Environment
5733SC1 Option 1, OpenSSH, OpenSSL, zlib
5770DG1 *BASE, IBM HTTP Server for
5733OPS Option 1, Node.js run time for IBM i
PTF prerequisites
To install Node.js on IBM i V7.2, the following PTFs are required:
SI55606 for 5733SC1
SI55747, SI55763 for 5733OPS
SF99713 level 6: HTTP Server Group PTF
 
Note: Upgrade to the latest HTTP Server PTF Group level because all updates for 5733OPS are provided in the HTTP Server Group PTF.
For more information about installing and managing Node.js, see IBM developerWorks:
DB2 for i access library
The DB2 for i access library is a JavaScript API for DB2 database manipulation on IBM i. It provides JavaScript interfaces that correspond to the DB2 for i SQL call-level interface (CLI). DB2 for i access library is shipped with Node.js for IBM. The DB2 for i access library is in the following directory:
/QOpenSys/QIBM/ProdData/Node/os400/db2i/
For more information about using the DB2 for i access library, see IBM developerWorks:
Node.js Toolkit for IBM i
The Node.js Toolkit for IBM i API set is based on XMLSERVICE to easily access IBM i native objects, such as PTF information, data queues, and programs. Node.js Toolkit for IBM i is shipped with Node.js for IBM i. Node.js Toolkit for IBM i is in the following directory:
/QOpenSys/QIBM/ProdData/Node/os400/os400/
For more information about using the Node.js Toolkit for IBM i, see IBM developerWorks:
9.8.2 Python
Python is now being delivered and packaged for IBM i. It is available as the Open Source for IBM i (5773OPS) Option 2. Python is a high-level programming language. It is easily extensible through the use of third-party packages and often allows powerful functions to be written with few lines of code. Python caters to multiple programming styles (object-oriented, procedural, and so on) and the code tends to be readable and maintainable.
This Python offering contains the Python 3.4.2 run time, which installs to the following directory:
/QOpenSys/QIBM/ProdData/OPS/Python3.4
Licensed program prerequisites
To install Python on IBM i V7.2, the following licensed programs are required:
5770SS1 Option 33, Portable Application Solutions Environment
5733SC1 Option 1, OpenSSH, OpenSSL, zlib
5733OPS Option 2, Python run time for IBM i
PTF prerequisites
To install Python on IBM i V7.2, the following PTFs are required:
SI57008 for 5733OPS (or its latest superseding PTF)
Latest PTFs for 5733SC1
SI57253 for using DB2 for i connector add-ons (or its latest superseding PTF)
SI57254 for using Toolkit for IBM i add-ons (or its latest superseding PTF)
SI57255 for using fastCGI gateway add-ons (or its latest superseding PTF)
SI57256 for using lightweight web framework add-ons (or its latest superseding PTF)
 
For more information about installing and managing Python, see IBM developerWorks:
9.8.3 GNU Compiler Collection
The GNU Compiler Collection (GCC) and Open Source development toolkit is now delivered as The Open Source for IBM i (5773-OPS) Option3. GCC compiler is a part of the Free Software Foundation’s GNU Project. The GCC compiler supports many languages, such as C, C++, and Java. Open source software is designed to be compiled by the GCC compiler; the software does not always compile successfully under the XLC compiler. By using the GCC compiler, you can get open source software to run on an IBM POWER® chip more easily.
9.9 Samba on IBM i
The open source Samba package is now available for IBM i. File serving, something that has been on IBM i for a long time, is provided with IBM i NetServer. IBM i NetServer has many great features when it comes to file serving, although in some instances performance has been an issue. Samba is a server that uses TCP/IP on IBM i to interact with Windows clients or servers as through it is a Windows file and print server. Samba is not intended to be a full replacement for file serving on IBM i, but rather give customers an additional option. For example, Samba does not support Kerberos, automatic CCSID conversions, or integration with IBM i auditing exit programs. For those features, IBM i NetServer is the preferred choice. But, if you require just basic file serving with performance, then Samba might be the preferred way for you.
PTF prerequisites
To install Samba on IBM i V7.2, you must install the SI52624 for 5770SS1 PRF (Cumulative PTF C4101720 contains this fix).
Installing this PTF places the Samba 3.6 package and installer archive file (samba.zip) into the IFS directory. The package can then be extracted to the current directory for installation by running it. To install Samba package on IBM i, run the following command from a PASE command prompt:
jar xvf /QIBM/ProdData/OS/Samba.zip
For more information about installing and managing Samba on IBM i, see
IBM developerWorks:
 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.117.167