RPG xTools 

This new release includes cool new features for encrypting data, better support for CGI (Web/Browser) applications, several new xTools core subprocedures as well as continued support for API wrappers (procedures that make it easy to call OS/400 APIs).

Here's What's New!

Feature Name Description
  CGILIB Increased the maximum file name length (including its path) from 640 characters to 1022 characters.
CGILIB Fixed a bug in the CGI File Upload routine that limited file names to 126 characters instead of the planned 640 character limit.
All ENCTYPE support CGILIB HTML Form encoding "enctype" keyword, now supports both application/x-www-form-urlencoded and multipart/form-data encoding methods.
Save Uploaded Files CGILIB You can save HTTP file uploads by using the new cgiSaveFile() CGILIB interface. Specify the HTML form field name on the first parameter, the IFS path where you want the file saved as the second parameter and the file is saved using the same name as specified by the web user. Alternatively the 3rd parameter may be specified to save the file with a specific name.
File Uploads CGILIB CGILIB now supports HTML-based file uploads. This capability is restricted by the W3C organization to HTML forms that contain the enctype="multipart/form-data" on the <FORM> tag. By default enctype="application/x-www-form-urlencoded" used when no enctype keyword is specified.
Unlimited data on HTML Input Forms CGILIB CGILIB has always been the leader in data length support, being the first to support up to 16MB of input and output data. With this release, CGILIB now supports up to 100 Terabytes of input data. This was an important update that allows users to support file uploads on their HTML web pages, of virtually any size. Specifically greater than the 16MB limit of traditional IBM "i" APIs and add-on libraries. CGILIB has been tested with file uploads exceeding 100 MB that were saved out to the IFS seemlessly.
Flat Rate Licensing Fee Pricing RPG xTools in now one flat rate per system.
Processor Group Licensing N/A RPG xTools is now licensed to a processor group. The application checks the processor group at runtime to determine if the processor group on which it is running is less than or equal to that which has been licensed. Existing xTools V4.x customers will be "grandfathered in" and given the highest processor group setting.
CSV Support CpyToCsvIFS This popular procedure has been enhanced. It now includes support for both column headings and the highly requested column totals. Converting to CSV for use by MS Excel is much more flexible now, it allows both column headings and column totals to be inserted optionally into your CSV file.

In addition, the ability to force a column to be enclosed in so called "hard quotes" is available for numeric fields. This capability allows you to force Excel to look at the field as if it were text, even when it contains all numeric data.  This is particularly useful for fields that contain leading zeros that should not be suppressed by Excel. For example, a U.S. Zip Code field that contains a zip code 02345 would normally appear as 2345 in Excel. By using the hard quotes function, this value would appear in the spreadsheet as 02345. Also, date and time value may now optionally be written in Excel format to allow easier sorting and more accurate display of the date/time values.

AES Encryption AESEncrypt AESDecrypt Encrypt or decrypt a string of text using AES encryption. NOTE: AES encryption only returns 16, 24, 32 or multiples of 32-bytes regardless of the input field's length. It will return the encrypted data in the next compatible length. For example, a 30 position field is encrypted into a 32-byte encryption pattern.
RC4 Encryption RC4Encrypt RC4Decrypt Encrypt or decrypt a string of text using RC4 encryption.
Text Message Window Prompt DspMsgWin Display a popup window containing text and an optional window title.
Compare and ignore case CompNoCase An easy-to-use function that compares two text strings for equality, while ignoring upper/lower case.
Decimal to Fractions DecToFract Convert a decimal number into a text string containing the fractional equivalent of the original value. For example, the decimal value 20.18 would be converted into the text string "20 1/6".
New Date/Time Helper Functions GetTime and GetDTS Retrieves the current time or timestamp value of the system, or combines a date and time value to return a true timestamp value.
DateDiff, and TimeDiff Calculates the duration between two dates or two time values. The return value is a data structure with the number of years, months, days, or hours, minutes, seconds between the two values.
CharToDate Converts a date from textual (i.e., character) format into a real date data-type value.

For example:   EVAL  myDate = CharToDate('12/27/2004' : '*USA')

Converts the date, Dec 27, 2004 to a date value. Note that the date format of the textual date value may be a literal or a variable. So you can specify the date format at runtime instead of compile time.

New IFS Functions ifsGetCrtDate Retrieves the creation date for a given IFS file. Normally this information is not readily available; this new xTool procedure provides this information to programmers for the first time.
ifsSetAttr Allows a programmer to set the read-only attribute of an IFS file. The read-only attribute may be set to ON or OFF.
ifsLoadFile Reads an entire IFS file into a user-provided return variable. The entire contents of the IFS file is loaded into memory and copied to a caller-provided input buffer.
ifsGetRecCount Returns the number of "records" currently in an IFS text file. If the IFS file is not text, then unpredictable results will occur.
Job/Session Info GetSbmJobA Retrieves information about the job that submitted the job that is calling GetSbmJobA. Normally this is used within a batch job to determine "who" (what job) submitted the batch job. In addition to the submitter's job name, number and user ID, the date the job was submitted and the message queue of the submitter is returned.
Database Key Field List GetKeyList and GetKeyFldCount Retrieves a list of key field names or the number of key fields for a given file.
Messaging SndStsMsg Now you can easily send a Status message from within RPG IV. For example: callp sndstsmsg("Retrieving EDI data...')
System-level stuff GetProcPtr Get Procedure Pointer. This function returns a PROCPTR (procedure pointer) given a service program and subprocedure name. This allows you to load and call a subprocedure in any service program, at runtime without first binding to that service program.
GetProcGroup Get Processor Group. Returns the processor group (as text) for the system on which the xTools are running.
GetCallerInfo Get Caller Information. Returns a program or procedure's caller's name. This is a "find my caller" procedure that returns the calling program, module and/or procedure name. You can also use GetCallerInfo as a "where am I" function that returns the current program, module and procedure name.

 

FAQ's for RPG xTools Version 5

Do I have to change my existing source code?
No source code changes need to be made to install version 5. The new version is source code compatible with the old "RPG ToolKit" and xTools version 4.
 
Do I have to worry about my existing code blowing up, object level-checks or other compatibility issues?
No, RPG xTools v5 should be a plug-n-play upgrade. No recompiling or rebinding is necessary.
 
Do I need to change my library lists or make other systems administration related changes?
No you don't RPG xTools uses the same library and service program names as prior releases. If there has been a user profile change or other systems administrative issue, then you may need to modify the own or authorizations for the RPG xTools objects, in order to match what you currently have installed.
How much do I have to worry about my existing code blowing up, object level-checks or other compatibility issues?
Not at all. RPG xTools v5 should be a plug-n-play upgrade. No recompiling or rebinding is necessary.
 

[ Return to RPG xTools home page ]