Wednesday, May 27, 2009

Speedware reselling RPG to-.NET Code Converter

Speedware is reselling and servicing Sykora-ML's ML-iMPACT code converter in the North American market. Skykor-ML claims the tool can convert 100 percent of RPG functions into fully maintainable C# or Java. That's quite unusual and special for a code converter, according to Speedware officials, who have decades of experience in the IBM midrange and mainframe migration business.

The tool converts an RPG application's DDS code to WebForms or ASP objects, while printing and other operating system-specific functions, such as batch job management, are also accounted for. What really impresses Koppe, however, is that Sykora-ML built an automated testing tool directly into ML-iMPACT, "so they can guarantee the result is exactly the same as the source platform. That, again, is very rare to see in a tool."

Halcyon Software growing its presence in the U.S

U.K.-based Halcyon Software, a developer of systems management software for i OS and other platforms, is growing its presence in the U.S. with the goal of attracting new customers. But instead of concentrating on individual AS/400 shops, Halcyon will primarily target outsourcing firms that run large data centers, which in turn will use Halcyon's software to manage the individual clients' systems. It's a practice that has already provided successful for the software company in the U.S

Monday, May 25, 2009

IBM ships SSDs for Power Systems - Unix, Linux, and i5/os

IBM today begins selling its first solid state disks for its Power Systems boxes, the machines it uses to attack the Unix, Linux, and OS/400 installed bases.

The IBM SSD, which comes in a 2.5-inch form factor, has about 220 MB/sec of sustained throughput on reads and about 122 MB/sec of sustained throughput on writes and can perform about 28,000 I/O operations per second (IOPS) on random transactional processing. The SSD has a 3 Gb/sec SAS interface and has an average access time of from 20 to 120 microseconds, the difference depending on where data is located on the SSD. According to IBM's specs, the SSD has about 87 times the I/O operations per second of a 15K RPM SAS drive and yet consumes about one-fifth of the power

Timothy Prickett Morgan in The Register

Friday, May 22, 2009

AS400 JTOpen 6.5.1 Available

Fixes and enhancements in as400 JTOpen 6.5.1 (released 2009-05-20)

- Data area: Fixed breakage in JTOpen 6.5: NoClassDefFoundError on Sun JVM's.
- Print: Fixed breakage in JTOpen 6.5: NoClassDefFoundError on Sun JVM's.
- User space: Fixed breakage in JTOpen 6.5: NoClassDefFoundError on Sun JVM's.

What is IBMs Toolbox for Java

The IBM Toolbox for Java is a set of Java classes that allow you to
access IBM i, i5/OS, or OS/400 data through a Java program. With these classes,
you can write client/server applications, applets, and servlets that work
with data on your IBM i, i5/OS, or OS/400 system. You can also run Java
applications that use the IBM Toolbox for Java on the IBM i, i5/OS, or
OS/400 Java Virtual Machine.

The Toolbox is available as an installable licensed program for the AS/400
as of OS/400 V4R2 and the iSeries as of OS/400 V5R1. Here is a breakdown of
Toolbox releases versus operating system versions:

Toolbox Installs on Connects to
release LPP release OS/400 version OS/400 version
------- -------------- -------------- --------------
V4R2 5763JC1 V3R2M0 V3R2 and up V3R2 and up
V4R3 5763JC1 V3R2M1 V3R2 and up V3R2 and up
V4R4 5769JC1 V4R2M0 V4R2 and up V4R2 and up
V4R5 5769JC1 V4R5M0 V4R3 and up V4R2 and up
V5R1 5722JC1 V5R1M0 V4R4 and up V4R3 and up
V5R2 5722JC1 V5R2M0 V4R5 and up V4R5 and up
V5R3(*) 5722JC1 V5R3M0 V5R1 and up V5R1 and up
V5R4(**) 5722JC1 V5R4M0 V5R2 and up V5R2 and up
JTOpen 1.x Not applicable Not applicable V4R3 and up
JTOpen 2.x Not applicable Not applicable V4R4 and up
JTOpen 3.x Not applicable Not applicable V4R5 and up
JTOpen 4.0-4.2 Not applicable Not applicable V4R5 and up
JTOpen 4.3-4.7 5722JC1 V5R3M0 V5R1 and up V5R1 and up
JTOpen 4.8+ 5722JC1 V5R4M0 V5R2 and up V5R2 and up
JTOpen 6.1+ 5761JC1 V6R1M0 V5R3 and up V5R3 and up

(*) Note: Toolbox release V5R3 is equivalent to JTOpen 4.3.
(**) Note: Toolbox release V5R4 is equivalent to JTOpen 4.8.

Newer versions of the Toolbox are backwards-compatible with earlier
versions. Upgrading to a newer version is usually recommended, with the one
main exception being that the Toolbox is only supported for connection
to servers running either of the two prior releases of i5/OS or OS/400.

Why Open Source?

We have chosen to make the Toolbox code open source for the following reasons:

1. To obtain new functions and features from the Toolbox user community.

2. To respond with customer and business partners requirements as rapidly
as possible.

3. To improve the ability for our customers to build and debug their own
applications when using the Toolbox functions.

4. To continue the drive to keep the IBM i platform a leader with Java technology
for application development.

Differences between JTOpen and the Toolbox LPP

1. The initial release of the source code for JTOpen used the V4R5
Toolbox codebase. That is, the Java code in the open source repository
is the same code that was used to build the V4R5 Toolbox LPP. JTOpen 2.0x
uses the V5R1 Toolbox as its codebase. The latest release of JTOpen
(JTOpen 6.x) uses the V6R1 Toolbox as its codebase.

2. When bugs are reported, fixes will be committed to JTOpen as soon as
they are realized. When applicable, these same fixes will be committed
to the Toolbox LPP and made available in a future PTF or service pack.

3. Any new functionality that is committed to JTOpen will be subsequently
added, when applicable, into the Toolbox LPP and made available in a
future PTF or service pack.

Note: All changes to JTOpen are made under the control and at the
discretion of the JTOpen Core Team. All changes to the Toolbox LPP
are made under the control and at the discretion of IBM.

4. In general, the Toolbox LPP is supported directly by IBM. JTOpen
is supported by the JTOpen user community, in which IBM participates
and contributes, specifically through developer email, the JTOpen
mailing list, and the JTOpen web forum

5. Pursuant to the IBM Public License, programmers are free to alter the
JTOpen source code and to distribute it with their own applications.

Download and installation of JTOpen


Briefly, the requirements for using the JTOpen code are as follows:

1. A Java Virtual Machine (JVM) with a 1.2.x or higher JDK/JRE. The JTOpen
team highly recommends moving to the latest supported release of the JDK/JRE, as
maintaining backwards-compatible code with older releases becomes
increasingly difficult to support over time.

2. Almost all JTOpen functions require a TCP/IP connection to an IBM i server.

a. The server must be IBM i, i5/OS, or OS/400 V4R3 or higher.

b. The server must have the Option 12 Host Servers installed and
running. JTOpen uses the host servers as TCP/IP endpoints to
communicate with the server from a client.

c. If the Java application using JTOpen is being run directly on a server
running IBM i, i5/OS, or OS/400, then certain JTOpen functions might use
native API and/or local socket calls to improve performance.
This will only occur under certain conditions, and only if the file
jt400Native.jar is included in the application's CLASSPATH.

3. For GUI programming, either Java 2 or Swing 1.1 or higher is required.


JTOpen is comprised of the following files:

Jar file Contents
-------- -------- This is a zip file of all the source files in the repository.
It is not a Java jar file. This is a zip file of the javadoc (in HTML format) for
the JTOpen source files. It is not a Java jar file.

jt400.jar(*) This is the main JTOpen jar file. It contains almost all open
source code (except for the few Toolbox classes that could
not be open-sourced), including the utilities package,
and the JDBC driver (JDBC 3.0).

jt400Micro.jar(*) This contains the ToolboxME (Micro Edition) classes for
use on a handheld device.

jt400Native.jar(*) Previously known as, this jar does not
contain the vaccess package. It does contain the native
optimization classes necessary for running performance-enhanced
applications on IBM i, i5/OS, or OS/400 JVM.

jt400Proxy.jar(*) This jar contains just the classes needed to run a client
application using the Toolbox proxy server. It is
especially useful in environments where a smaller jar
is needed.

jt400Servlet.jar(*) This jar contains the html and servlet packages.

jui400.jar(*) Contains the PDML runtime packages as provided by
the Graphical Toolbox.

uitools.jar(*) Contains the GUI Builder packages as provided by the
Graphical Toolbox.

util400.jar(*) Contains various utilities.

composer.jar(*) Contains XSL stylesheet composer classes.

reportwriter.jar(*) Contains XSL report processor classes.

outputwriters.jar(*) Contains PDF, PCL, and font classes.

tes.jar(*) Contains the IBM i Graphical Debugger. This zip file contains versions of jt400.jar and
jt400Native.jar (along with source code) that are
compatible for use with JDBC 4.0. This zip file requires
that you be running on Java 6.0 or higher.

(*) Files contained in file

There are other jar files shipped in the download for JTOpen off of the Toolbox
downloads page. Those jar files do not (yet) contain JTOpen code. They are
provided as a convenience to the developer and to mirror the objects that ship
with the Toolbox LPP.

Building and Using JTOpen

Instructions for using JTOpen:
1. Download the JTOpen jt400.jar.
2. Add it to your CLASSPATH.
3. Run your application.

Instructions for building all or part of the as400 JTOpen source code:
Note: Complete build instructions are specified in the commentary in file
1. Download the JTOpen jt400.jar.
2. Download any source files you want to change. The file includes
all of the source in the repository for convenience.
3. Set up your CLASSPATH to include everything in the correct order:
a. Your source files should be in your CLASSPATH first. Note that you
cannot point to - you must unzip it, since it contains only
source files.
b. Next, add jt400.jar.
c. Your CLASSPATH should look something like this:
4. Compile your source.
5. Run your as400 application that uses JTOpen.

The AS/400 is Dead - All Hail The 'Smart Cube'

Ok, you got me, the as400 will never actually die. Its too good to die. But like Doctor Who, every few years, it changes. This time the metamorphasis of the as400 leaves us with something surprising. The 'Smart Cube'.

From IBM

The Smart Cube is a complete application-ready platform with all server hardware and software needed, pre-configured and ready-to-use, with no manuals required. In a few easy steps, businesses can be up and running with a complete IT solution to run their business, including the operating system, integrated middleware, database, security and back-office functionality such as file, print, backup and recovery, combined with the business application they acquired
(what does that sound like!)

IBM Smart Cube 7277

This product is available separately at a suggested retail price per system starting at $974.00/month or $31,128.00 and may also be included as part of a complete solution

IBM Smart Business Solution – Small Power 520 is a powerful and integrated server that is designed to run all of the business applications a medium sized business needs (e.g. Finance, Accounting, ERP, CRM, IP Telephony) with no IT complexity. The solution includes an IBM Smart Cube – Small Power 520 server with a 1-core Power 6 processor. The Smart Cube remains connected to IBM Smart Market which provides remotely delivered services including help desk and solution support, monitoring, backup and recovery, security and business collaboration. IBM Smart Cube comes with the pre-loaded IBM Smart Business Software Pack, including everything needed to run business applications and workloads. • Application Servers and Java support • Database Servers • Web Servers • File & Print Servers • Network & Application Security: • Directory Servers • Built-In backup and recovery • i Operating System. IBM Smart Cubes provide many serviceability and ease-of-use features designed to enhance the support experience for customers. IBM Smart Business Software Pack includes wizard-based application management and problem solving interfaces that can be extended to vendor application software prepared specifically for this environment. Customers will have the option to configure their solutions to automatically find and install new fixes. The Smart Desk, included in the Smart Cube, provides a single consistent interface to manage, license, administer, and maintain applications

IBM Smart Cubes come with pre-loaded IBM Smart Business Software Pack, pre-configured, ready to use; including operating system, middleware, database, security, backup and recovery and etc;

Business applications are pre-integrated with IBM Smart Business Integration Integrator and ready for automatic download at the customer installation, in simple steps.

The IBM Smart Cubes come with the pre-loaded security software, including firewall/VPN, Antivirus protection, web filtering, anti spam and application protection, to offer preemptive protection for the IT infrastructure for small and medium size companies.

The IBM Smart Support Team will provide a “single point of entry” into the larger IBM technical support structure, as well as into the software vendors’ support teams who handle the technical problems associated with application software.

The IBM Smart Cube provides a single interface and source for fix acquisition and deployment across Customer’s Smart Business solution.

The IBM Smart Cube uses powerful IBM server platforms. The IBM Smart Business customers can start with entry-level IBM Smart Cube and move to the advanced server platform, all with the compatible IBM Smart Business Software Pack.

Thursday, May 21, 2009

User Space APIs

User spaces are objects that used for storing user-defined information. They are permanent objects that are located in either the system domain or the user domain. They have an object type of *USRSPC and a maximum size of 16MB. You can save and restore user spaces to other systems. If, however, the user spaces contain pointers, you cannot restore the pointers even if you want to restore them to the same system.

You can use the user space APIs to:

Create user spaces to be used by list APIs to generate lists of data.
Store pointers.
Store large amounts of data. You can create a user space as large as 16 megabytes. You cannot create a data area larger than 2000 bytes.
Save information in user space objects, and save and restore the object with the information in it using CL commands.
Pass data from job to job or from system to system.

Note: If the allow user domain (QALWUSRDMN) system value contains only the QTEMP library, you can use only the user space APIs to create and manipulate user domain spaces in library QTEMP. You cannot use the Retrieve Pointer to User Space API

The user space APIs allow you to create and delete user spaces, change and retrieve the contents of user spaces, and change and retrieve information about user spaces.

For additional information, see Using User Space APIs.

The user space APIs are:

Change User Space (QUSCHGUS) changes the contents of a user space.

Change User Space Attributes (QUSCUSAT) changes the attributes of a user space object.

Create User Space (QUSCRTUS) creates a user space.

Delete User Space (QUSDLTUS) deletes user spaces created with the QUSCRTUS API.

Retrieve Pointer to User Space (QUSPTRUS) retrieves a pointer to the beginning of a user space for a high-level language (HLL) that supports pointers. HLLs that support pointers can use this pointer to manipulate the contents of a user space directly.

Retrieve User Space (QUSRTVUS) retrieves the contents of a user space. It does not retrieve descriptive information about the user space, such as its size.

Retrieve User Space Attributes (QUSRUSAT) retrieves information about creation attributes and current operational statistics of the user space, such as its size.

Sending and receiving email on i5/os - QtmmSendMail

i5/os QtmmSendMail API

The i5os Send MIME Mail (QtmmSendMail) API lets you to send email from a HLL program and lets you send multiple mail attachments at one time

Using the QtmmSendMail API

os400 - i5os - API Finders

Use the os400 / i5os API finders to find documentation operating system APIs and some APIs for related licensed programs,by category or by name

V6R1 API Finder

V5R4 API Finder

V5R3 API Finder

Striving for Optimal Journal Performance on DB2 Universal Database for iSeries

Journaling is an inherent feature of OS/400 on the iSeries that has been around since the early releases of the System/38. The system employs journals to ensure data integrity and recoverability and this support can further be extended to reduce the duration of an abnormal system end. Journaling also serves as the cornerstone upon which many data replication and data warehouse refresh schemes are built.
The aim of this IBM Redbook is to provide you with an understanding of the factors which influence journal performance on the iSeries and to help you identify which hardware options and software settings you can employ to minimize this impact. We will also share with you some ideas on how to minimize the impact of journaling on your iSeries from an application point of view.
We also explain the remote journal function on the OS/400, which offers a reliable and fast method to transfer journal entries to a remote iSeries server. We performed tests concerning remote journal performance and tested this function in different environments

Raz-Lees new whitepaper - Achieving PCI Compliance with IBM Power i

Check out Raz-Lees new IBM i white paper - Achieving PCI Compliance with IBM Power i.

PCI-DSS consists of 12 requirements within six categories which cover best security practices. This white paper includes a summary of PCI requirements, focusing on the relevant items to Power i security. Each requirement is followed by a guideline specifying how to actually implement the requirement

as400 api - Process Commands (QCAPCMD) API

The as400 Process Commands (QCAPCMD) API is used to check or run CL commands from HLLs as well as check syntax for specific source definition types

You can use the QCAPCMD as400 API to:

Check the syntax of a command string prior to running it
Prompt the command and receive the changed command string
Run a command from an HLL

An advantage of using QCAPCMD over QCMDEXC is the exception handling. An exception that occurs when using QCAPCMD command is trapped and notified via the QUSEC structure. The error is not passed up the call stack so can be handled gracefully in programs.



fnewfile   if   e           k disk    usropn 
dcommand          s             40    inz(' ') 
dcmdlng           s             10i 0 inz(40) 
docb              ds 
d type                          10i 0 inz(0) 
d DBCSdh                         1    inz('0') 
d prompt                         1    inz('0') 
d cmdsyntax                      1    inz('0') 
d msgrtvkey                      4    inz(x'00000000') 
d reserve1                       9    inz(x'000000000000000000') 
docblength                      10i 0 inz(x'00000014') 
docbfmt                          8    inz('CPOP0100') 
dchgcmd                          1    inz(' ') 
dlngchgcmd                      10i 0 inz(0) 
dlngchgrtn                      10i 0 inz(0) 
d qused01                17    116 
c                   eval      command = 'OVRDBF NEWFILE SHARE(*YES)' 
c                   Z-ADD     116           QUSBprv 
c                   call      'QCAPCMD' 
c                   parm                    command 
c                   parm                    cmdlng 
c                   parm                    ocb 
c                   parm                    ocblength 
c                   parm                    ocbfmt 
c                   parm                    chgcmd 
c                   parm                    lngchgcmd 
c                   parm                    lngchgrtn 
c                   parm                    QUSEC 
c     QUSBavl       ifgt      0 
c     'Error on API'DSPLY 
c     qusei         dsply 
c                   end 
c                   open      newfile 
c     *loval        setll     fmt1 
c                   read      fmt1                                   30 
c     *in30         ifeq      '0' 
c     fld1          dsply 
c                   else 
c     'No Records'  dsply 
c                   end 
c                   close     newfile 
c                   eval      *INLR = '1' 

DDS for newfile: 

R FMT1                               
FLD1          10                   
FLD2          10                   
K FLD1  

More as400 Command API examples to follow

AS400 API - QCMDEXC - Execute Command

The Execute Command (QCMDEXC) program is an ibm as400 API that runs a single command.

The command runs as if it was not in a program. Therefore, variables cannot be used on the command because values cannot be returned by the as400 command to CL variables. Additionally, commands that can only be used in CL procedures or programs cannot be run by the QCMDEXC program. The format of the call to the QCMDEXC program is the following:

CALL PGM(QCMDEXC) PARM(command command-length)

Enter the command you want to run as a character string on the first parameter. You must specify the command library.


Remember that you must enclose the as400 command in single quotation marks if it contains blanks. The maximum length of the character string is 6000 characters; never count the delimiters (the single quotation marks ) as part of the string. The length that is specified as the second value on the PARM parameter is the length of the character string that is passed as the command. Length must be a packed decimal value of length 15 with 5 decimal positions

Example of Using QCMDEXC in an RPGLE Procedure

d Quote           C                   Const(X'7D')   
d StdCmd          S            200A                 
d StdLen          S             15P 5               

D Execute         PR                  ExtPgm('QCMDEXC')             
D     CmdStr                          Like(StdCmd)                 
D                                     Options(*VarSize)             
D                                     Const                         
D     CmdStrLen                       Like(StdLen) Const           
D*    IGCPrcCtl                  3    Options( *NoPass )           
D*                                    Const                         
d var1            S                   Like(StdCmd)                 
d var2            S                   Like(stdLen)                 
d                                     Inz(%size(var1))             

c                   eval      var1 =                               
c                             'CPYTOSTMF' + ' ' +                   
c                             'FROMMBR(' + Quote +                 
c                             '/QSYS.LIB/LIBNAME.LIB' +           
c                             '/QRPGLESRC.FILE/RPG1.MBR' +   
c                             Quote + ') ' +                       
c                             'TOSTMF(' + Quote +                   
c                             '/home/test.txt' +       
c                             Quote + ') ' +                       
c                             'STMFOPT(*REPLACE)'                 

c                   callp     Execute(var1:var2)                   

c                   eval      *inlr = *on

Another example of using QCMDEXC to execute CL commands

d CmdLength       s             15  5                      
d CmdString       s            256                         
 * Procedure calls                                         
d Command         pr                  EXTPGM('QCMDEXC')    
d  CmdString                   256                         
d  CmdLength                    15  5                      
c                   eval      *inlr = *on                  
   //  *inzsr - One time run subroutine.                   
   begsr *inzsr;
   cmdstring = 'dlyjob 10';                                
   cmdlength = %len(%trim(cmdstring));                     
   command(cmdstring : cmdlength);     

* Procedure calls
     d RUNCOMMAND      PR                  extpgm('RUNCOMMAND')
     d   CmdString                   30

     d RUNCOMMAND      PI
     d   CmdString                   30
     d Command         pr                  EXTPGM('QCMDEXC')
     d  CmdString                    30
     d  CmdLength                    15  5
      * Definitions
     d CmdLength       s             15  5

     c                   eval      *inlr = *on
        //  *inzsr - One time run subroutine.

        begsr *inzsr;
        cmdlength = %len(%trim(cmdstring));
        command(cmdstring : cmdlength);

QCMDEXC could also be called from CL , for instance to run a command dynamically when certain parameters that would be required are not know at run time. In this case calling QCMDEXC from a CL program would be an option. See the QCMDEXC snippet below

                          *TCAT ')')                                   
             CALL       PGM(QCMDEXC) PARM(&CMD &LEN) 

Managed as400 hosting

More examples of Using QCMDEXC in an as400 RPGLE Procedure to follow.

Wednesday, May 20, 2009

Managed AS400 Hosting

AS/400 & iSeries Managed Hosting

All these companies offer either management or monitoring as detailed below

iSeries Managed Hosting:
Their iSeries (AS/400) server(s) managed and located in their Data Center

iSeries Managed Collocation:
Your iSeries (AS/400) server(s) managed and located in our Data Center

iSeries Remote Monitoring & Management:
Your iSeries (AS/400) server(s) located in your Data Center, managed remotely by them


Connectria offers iSeries managed hosting including managed services for AS/400, eServer & IBM System i

iseries leasing uk

More Managed as400 hosting details to follow...

IBM Announces Replacement for i5/OS

Rochester MN - With the recent announcement of the new IBM Power Systems which will replace the System i hardware, the i5/OS will also be replaced and renamed. Because of the much greater capabilities of the new operating system, IBM has named it the Virtual Universe Operating System – VU/OS.

Running under VU/OS, the individual user appears to have not merely a machine of their own, but an entire universe of their own, in which they can create or remove their own programs, databases, libraries, users, networks, and planetary systems. They need only specify the universe they desire, and the VU/OS system generation program (QGOD) does the rest. This program will reside in the QSYS library. The minimum time for this function is 6 days of activity and 1 day of review. In conjunction with VU/OS, all system programs have been replaced by one program (QPROPHET) which will also reside in the QSYS library. This program has no parameters as it knows what you want to do when it is executed


Tuesday, May 19, 2009

AS400 API - Retrieve Network Attributes (QWCRNETA)

The Retrieve Network Attributes (QWCRNETA) as400 API lets you retrieve network attributes


Network Attributes
ALRBCKFP Alert backup focal point    
ALRCTLD         Alert controller    
ALRDFTFP Alert focal point    
ALRFTR         Alert filter    
ALRHLDCNT Alert hold count    
ALRLOGSTS Alert logging status    
ALRPRIFP Alert primary focal point    
ALRRQSFP Alert focal point to request    
ALRSTS         Alert status    
ALWADDCLU Allow add to cluster    
ALWANYNET Allow AnyNet support    
ALWHPRTWR Allow HPR tower support    
ALWVRTAPPN Allow virtual APPN support    
VRTAUTODEV Autocreate APPC device limit    
DDMACC         DDM request access    
DFTCNNLST Default ISDN connection list    
DFTMODE         Default mode    
DFTNETTYPE ISDN network type    
DTACPR         Data compression    
DTACPRINM Intermediate data compression    
HPRPTHTMR HPR path switch timers    
JOBACN         Job action    
LCLCPNAME Local control point    
LCLLOCNAME Local location    
LCLNETID Local network ID    
MAXINTSSN Maximum sessions    
MAXHOP         Maximum hop count    
MDMCNTRYID Modem country or region ID    
MSGQ         Message queue    
NETSERVER Server network ID    
NODETYPE APPN node type    
NWSDOMAIN Network server domain    
OUTQ         Output queue    
PNDSYSNAME Pending system name    
PCSACC         Client Access    
RAR         Addition resistance    
SYSNAME         Current system name

More as400 commands to follow

The Laughing Boardroom video...a real world example!

I posted the laughing boardroom video, an old IBM ad that highlights the infrastructure and manpower changes needed when moving away from the as400 platform, as so much is simple and/or automated.

The Laughing Boardroom

Well I have actually stumbled across a real world example. John Will describes what happened when consultants convinced a utility company that they needed to move from iseries to pseries

This regional, rather large, utility company had been running AS/400 for twenty years with a minimal staff. In fact the current CTO was one of the original AS/400 operators and prior to about a year ago he could have still filled in as an operator in a pinch. Other than some simple web front-ends they basically ran one production box that did all their customer care and billing services. About two years ago a team of consultants were brought in to re-deign their customer care and billing systems. The initial design took them from one production AS/400 (they called it a mainframe) to about 10 P5 physical boxes with about 50 lpars of which about 20 lpars eventually became the replacement solution. On the software side they went from a single box that basically handled everything to a very complex infrastructure

After the army of consultants had completed the project (over a year) this utility company went from 3 system administrators to about 10 system administrators and they were still understaffed. They also increased head counts for 2 system architects and a project managers. Of course at least three new managers had to be hired. All told they went from a staff of about 5 (including CTO and operations) to a staff of about 20

L3 Cache Makes All The Difference For Java Apps on IBM i

Timothy Prickett Morgan is talking about the performance of the latest Power6+ system i boxes, and benchmark testing of SAP and Lawson products.

A couple of interesting thngs emerge...

One is that in these tests there was very little diference in performance between a 550 and a 570

A Power 520 with a single Power6+ processor with two cores running at 4.7 GHz equipped with 32 GB of memory was able to process 41,090 query navigation steps per hour on the BI-MXL test at 94 percent of CPU utilization on a data warehouse with 300 million records. (That's the smallest database used in the test, which also has 1 million and 3 million record variants.) A Power 550 with two processors and four cores activated running at 5 GHz and with 64 GB of memory was able to handle 90,635 query navigation steps per hour at 98 percent of CPU; for some reason, IBM ran the test again on this box a few weeks later and got a slightly lower 97 percent CPU utilization and only handled 90,492 query navigation steps per hour. (Go figure.) A Power 570 box with four 5 GHz cores and 96 GB of memory did slightly more work, at 93,468 query navigation steps per hour.
The message here is what I have been telling you for years: Don't buy into the Power 570 unless you have to. It is more expensive for modest workloads than a Power 550. If you don't need the expansion that the Power 570 embodies, don't do it

The other was that L3 cache is very important for java app performance

On the M3 tests, Lawson found that the initial Power 520 using that old 1.9 GHz Power5 chip could process about 75,000 invoiced order lines per hour. Moving up to the 4.2 GHz Power6 core boosted performance by 31 percent (not more than 2X as you might expect from the clock speeds because IBM radically changed the instruction pipelines with the Power6 chips), to around 98,250 invoiced order lines per hour. And while the move to the Power6+ chip only boosted the clock speed by 11.9 percent up to 4.7 GHz, the addition of the L3 cache pushed performance up 21 percent to 118,900 invoiced order lines per hour. Which makes you wonder why on Earth IBM ever cropped the L3 cache out of the boxes to artificially crimp performance on the Power 520s and the JS12 and JS22 blades in the first place. That's not a smart move if you are trying to support Java applications

PHP on the as400

Timothy Prickett Morgan discusses the increasing use of PHP on System i.

After a year of work in the wake of the alliance, Zend and IBM started shipping a beta version of the Zend Core for i5/OS, which ran in the PASE AIX runtime environment inside i5/OS V5R4. In August of 2006, Zend Core for i5/OS became generally available and in a short time, there were thousands of downloads of the software, which IBM picked up the tab for on behalf of V5R4 shops that wanted to download a PHP engine and integrate it with their i boxes. IBM gave out statistics for downloads every couple of months, but since the creation of the Power Systems division, which converged the System i and System p lines last April, IBM has been pretty mum in terms of Zend Core for i downloads. The latest number that I have heard is that there have been 12,000 cumulative downloads of Zend Core for various i platforms, including machines running OS/400 V5R3, i5/OS V5R4, and i 6.1

According to this Gartner data, the vast majority of PHP developers in 2007 were part-time developers and hobbyists, with a small number of corporate PHP developers. But by 2013, Gartner expects there to be millions of professional PHP developers at software vendors and in IT shops, with the base of hobbyists and part-timers being about the same. And we all know who is going to be spending money on PHP tools, creating real-world, enterprise-class PHP applications, and making a living from PHP

Monday, May 18, 2009

IBM eServer iSeries - The Laughing Boardroom

Came across this....funny

Web 2.0 with AS/400 - How To Use ERP To Create Useful Services For Customers

Building Dynamic Web Applications on i5 with PHP

Integrating PHP With System-i using Web Services

Adapt, Survive and Thrive with as400 - Eight Pillars of an Enterprise Application Architecture

Your iSeries is a jewel...but what about the software?

Linoma Crypto Complete - Encryption Suite for System i

AS400 OS400 API Include Files

The system include or API copybook library QSYSINC, contains all the source includes for APIs shipped with OS/400 (i5/os). This optional library is fully supported, so any errors found in the includes can be reported to IBM.

Decrypt Data on AS400 - QC3DECDT, Qc3DecryptData API

The Decrypt Data (OPM, QC3DECDT; ILE, Qc3DecryptData) API restores encrypted data to a clear (intelligible) form


calling Qc3EncryptData with Pointers

Sample program to demonstrate use of Cryptographic Services APIs.
APIs demonstrated in this program are:
Create Algorithm Context
Create Key Context
Decrypt Data
Destroy Key Context
Destroy Algorithm Context

as400 database connection strings

Connection string examples when connecting to an as400, iseries, system i, os400, i5os

as400 JDBC connection string


IBM DB2 for i .NET data provider

DataSource=myServerAddress;UserID=myUsername;Password=myPassword; DataCompression=True;

IBM Client Access OLE DB provider

Provider=IBMDA400;Data Source=MY_SYSTEM_NAME;User Id=myUsername;Password=myPassword;

.NET Framework Data Provider for OLE DB

Provider=IBMDA400;Data Source=MY_SYSTEM_NAME;User Id=myUsername;Password=myPassword;

Client Access ODBC driver

Driver={Client Access ODBC Driver (32-bit)};System=my_system_name;Uid=myUsername;Pwd=myPassword

iSeries Access ODBC driver

Driver={iSeries Access ODBC Driver};System=my_system_name;Uid=myUsername;Pwd=myPassword;

.NET Framework Data Provider for ODBC

Driver={Client Access ODBC Driver (32-bit)};System=my_system_name;Uid=myUsername;Pwd=myPassword;

More as400 database connection strings to follow

80 Column Punched Cards and the History of RPG on the AS400

An article where Jon Paris discusses the lineage of punched cards that leads to RPG and the as400...

Anyway it got me thinking about how little many of us know of our own history as it relates to the IT industry. Would you believe that there are people out there who actually believe that Bill Gates and Microsoft invented the concept of a windowing GUI! They probably believe they invented DOS too--poor misguided souls.

On the subject of punch cards, let's take a quick look at how they impacted our favorite language--RPG. Since some of you may not have actually seen a punch card before, here's a picture of one so that we all know of which we speak:

rpg punched card as400

As you can see there are 80 vertical columns, which explains the 80-column limit in RPG II and RPG III. You might also have wondered why the first five columns of the spec are designated as the sequence number. Well, suppose you had a 600-line RPG program and it was on punch cards. Now suppose that you dropped the box and 600 cards hit the floor. How long do you think it would take you to put the program back in order? Now you understand the reason for the sequence number.

IBM Redbooks | IBM i5/OS Program Conversion: Getting Ready for i5/OS V6R1

This IBM Redbooks Redpaper publication is intended for i5 system administrators and field technicians to help them understand and prepare for upgrading or migrating to i5/OS V6R1. It explains what the program conversion is and why programs are being created or re-created on V6R1. It then provides detailed steps for using the ANZOBJCVN tool on V5R3 or V5R4 to prepare for V6R1 object conversions. Finally this Redbooks Redpaper discusses the program conversion methods for converting programs to run on i5/os V6R1

Redbook - as400 Security - IBM System i Security: Protecting i5/OS Data with Encryption

Redbook - as400 Security - IBM System i Security: Protecting i5/OS Data with Encryption

Part 1, "Introduction to data encryption" , introduces key concepts, terminology, algorithms, and key management.

Part 2, "Planning for data encryption" , provides critical information for planning a data encryption project on i5/OS.

Part 3, "Implementation of data encryption" , provides various implementation scenarios with a step-by-step guide

Part 1. Introduction to data encryption
Chapter 1. Data encryption: the big picture
Chapter 2. Algorithms, operations, and System i implementations
Chapter 3. Key management concepts

Part 2. Planning for data encryption
Chapter 4. Analyzing needs and defining scope
Chapter 5. Managing keys on System i
Chapter 6. Choosing a data encryption method
Chapter 7. Database considerations
Chapter 8. Application considerations
Chapter 9. Backup considerations

Part 3. Implementation of data encryption
Chapter 10. SQL method
Chapter 11. Cryptographic Services APIs method
Chapter 12. HW-based method

Encrypt Data on as400 (QC3ENCDT, Qc3EncryptData)

Encrypt Data on as400 (QC3ENCDT, Qc3EncryptData)

The Encrypt Data API protects data privacy by scrambling clear data into an unintelligible form, OPM, QC3ENCDT; ILE, Qc3EncryptData

Simplified RC4 or AES Encryption by Bob Cozzi

In the last issue, I reported on a few of the new OS/400 encryption APIs: Qc3CalculateHash, Qc3EncryptData, and Qc3DecryptData.
Calling one of these APIs requires careful interpretation of the API's parameter list. The parameter lists consist of various data structures and formatting codes that can be somewhat vexing to say the least. Unless it's for performance reasons, I can't understand why IBM continues to publish APIs that require such complex parameters. Even I find them confusing, and I've been working with OS/400 APIs since before the first ones were even announced.
To help simplify matters, I've written two subprocedures that accept data as input (along with the encryption key/password) and return the data encrypted or decrypted, depending on which subprocedure you call

APIs by Example: AES Encryption to Actual Field Length

By: Carsten Flensburg
I've discussed and demonstrated the Cryptographic Services APIs in past issues of this newsletter. The encryption examples that I presented have all used the Advanced Encryption Standard (AES) algorithm, which offers a current, strong, and well-performing encryption method that has been adopted as an encryption standard by the U.S. government. If you have followed those examples, you know that AES encryption is a block cipher and that the ciphertext produced by AES therefore always is an exact multiple of the block size applied to the cryptographic process. The block size specified for the AES algorithm is 16 bytes, although the Cryptographic Services APIs' implementation of AES offers 24 and 32 bytes block sizes as well.

For some purposes and situations, the block-size determined length of the ciphertext could be regarded as an inconvenience. In today's APIs by Example, I explain a method for handling data not a multiple of the block length

More Encrypting Data on as400 to follow...

Sunday, May 17, 2009

Using os400s QEZSNDMSG to send messages to users

The os400 QEZSNDMG API allows you to send a message to users and even allows you to throw up the Send a Message screen


Monday, May 11, 2009

Getting a dump of the iseries 5250 Data Stream Commands

Dumping the Iseries 5250 Data Stream

To dump the dynamic screen manager APIS ( DSM ) 5250 data stream commands:

Create a physical file somewhere in your library list called QSNDEBUG with record length 2000.
DSM will dump 5250 data stream commands to QSNDEBUGF found in the library list

Using as400 QRCVDTAQ api to retrieve a message / entry from a dataqueue

Heres an example of using the QRCVDTAQ as400 api to retrieve a message / entry from a as400 dataqueue

C                     CALL 'QRCVDTAQ' 
C                     PARM 'MYQUEUE' DTQ    10 
C                     PARM 'QTEMP'   DTLIB  10 
C                     PARM 100       LENGTH  50 
C                     PARM           DATA 
C                     PARM 0         WAITT   50 
C                     PARM           ORDER   2 
C                     PARM           KLEN    30 
C                     PARM           KEY 
C                     PARM           SNDLEN  30 
C                     PARM           ID 

DTQ as400 Data queue name
DTLIB as400 library name
LENGTH Length of entry received.
zero if no entry received.
DATA Entry received. Must be minimum length indicated by LENGTH at least.
WAITT Time in seconds to wait for an entry.
Zero = no wait.
-ve number = wait until entry received.

(only used if dataqueue keyed, optional)

ORDER Condition operator, EQ, NE, LT, LE, GT or GE.
KEYLEN Key length
KEY Key value. Length indicated by KEYLEN.
SNDLEN Length of SENDER field
SENDER Field to receive sender ID. Usually 44 bytes

Using as400 QRCVDTAQ api to retrieve a message / entry from a dataqueue

Using as400 QSNDDTAQ api to put a message / entry on a dataqueue

Heres an example of using the as400 QSNDDTAQ api to put an entry on a data queue

C                     CALL 'QSNDDTAQ' 
C                     PARM 'MYQUEUE' DTQ     10 
C                     PARM '*LIBL'   DTLIB   10 
C                     PARM 10        LENGTH  50 
C                     PARM 'START'   DATA 
C                     PARM 4         KEYLEN  30 
C                     PARM '*CMD'    KEY

API Parameters

DTQ         as400 Data queue name 
DTLIB       as400 library name (or *LIBL to search library list) 
LENGTH      Entry length 
DATA:       Entry.  Maximum length indicated by LENGTH. 
KEYLEN:     (optional, only required if if dataqueue *KEYED) Key length 
KEY:        (optional, only required if if dataqueue *KEYED)  Key value 
maximum length indicated by KEYLEN. 

as400 jobs

More info on using Using as400 QSNDDTAQ api to put a message / entry on a dataqueue to follow...

AS400 Jobs: Do you have a job at the moment?

AS400 Jobs question

Do you have an as400 job at the moment

The reason for me asking this question is because at the moment I dont have an as400 job. Plus I came across this old as400 related jobs article on IT Knowledge Exchange asking the very similar question. They mention that it may be down the fact that its difficult looking for work on a system that is round about 20 years old, which the as400 is now.

Plus companies are modernising their so-called 'legacy' as400 systems based on RPG to new and shiney windows and linux systems using java or .Net.

as400 jobs

So with that in mind, and the ever present now, credit crunch, it would appear that the job market for technicians with as400 skills maybe getting smaller and smaller. Although to balance that there are still a lot of companies that rely on their as400 for their business processes to run, almost without hiccup Given that, I still think we will see as400 jobs around for some time yet

Saturday, May 09, 2009

as400 LPAR CPU statistics and documentation tool for IBM Power systems servers

This tool produces historical CPU graphs of as400 LPAR's and shared CPU usage, physical and logical config of managed systems/LPAR's and any changes in state and configuration

More as400 LPAR information to follow

Free AS400 & iSeries Software Tools & Utilities Downloads

Lots of free AS400 and Iseries Tools and Utilities

LPAR CPU statistics and documentation tool for IBM Power systems servers

Change Current User

This will allow you to change the current user that you are logged on with without logging off the as400 system first. This command uses the QSYGETPH API to verify the password entered and then uses the QWTSETP API to actually change the user that is currently signed on. This is very useful in making sure that a peticular program is always run as a certain user

Change Current User

Calculate Dates

Calculate dates using RPG IV date fields. This is useful in determining the effect of different calculations on date fields. It will prompt you to enter a date and allow you to try different scenarios and see the results

Calculate Dates

More as400 tools and utilities to follow

The performance difference between a true SQL index on the as400 and a keyed logical index

Apparently there is a huge performance difference on the as400, that has existed since V4R2, between SQL indexes and DDS created logical files. The performance is so much better that it is worth converting all DDS logicals to SQL, even if they are only used by RPG programs

The evolution of the as400 / iSeries / i5 has resulted in a mix of old and new technologies. Most notably
are the methods used to create, populate and manipulate databases. Many iSeries/i5 application
developers have embraced modern tools for creating front end masterpieces to their existing data;
however the underlying foundation, the database itself, has been woefully neglected. Basically
the existing databases were created using a tool known as DDS (Data Description Specification).
All other Relational Database Management Systems (RDMS) use Structured Query Language, or
SQL, to define the database.
For many iSeries/i5 developers initial attempts in the use of SQL have resulted in unacceptable
performance causing system administrators and/or Chief Information Officers to discourage its
use. For others, the ease of use of SQL has made it the preferred tool for data creation and access.
When these two groups come together the result is like a bad beer commercial. Shouts of “It’s
great!” are hurled in response to yells of “Less fulfilling!”
As IBM continues to enhance DB2 UDB for iSeries (e.g. the new and improved SQL Query
Engine, more efficient data access methods, new database primitives, etc) the decision to use
SQL over traditional methods will no longer be if, but when. In fact, many iSeries/i5 shops are
developing all new applications using SQL. In addition, the use of SQL defined databases may
result in improved throughput as a result in changes to the underlying architecture (more on this
So all new SQL development will benefit from new database technology but what about the
existing DDS defined databases that are still serving thousands of applications using Record
Level Access (RLA) methods via High Level Language (HLL) read and write operations? Is there
a way that these applications can take advantage of SQL database enhancements without a total
The answer is a resounding Yes! This is the basic premise of this article. In essence this article
provides a high level overview of the madness behind the methods known as the Stage 1 DDS to
DDL reengineering strategy detailed in the soon to be released Redbook "Modernizing iSeries
Application Data Access - a Roadmap Cornerstone".

Full PDF here -
as400 DDS and SQL Performance

Good luck with your as400 logical file performance

Friday, May 08, 2009

Used as400s

A list of vendors of Used AS400s


ISM - Used Iseries AS400, Custom build AS400 i5 servers parts Big inventory International dealer

XCC - Used IBM iSeries AS400, AS/400, AS 400 Server, Refurbished, New, Lease, IBM AS400 iSeries Dealer Resller

as400dealer - New and Used IBM i5 Servers (AS/400) - Used iSeries Servers · Used AS400 Servers · Refurbished iSeries Servers · Refurbished AS400 Servers

Vibrant - Vibrant stocks a vast inventory of used and refurbished AS/400 servers, configuration, upgrades, peripherals and parts

Abacus - Used AS/400 and Used iSeries Servers

Penn Computer - Used IBM iSeries | Buy, Sell, Lease Rent

Spectra - Used iSeries, used system i5 and used AS400 servers. 520, 550, 570, 595, 800, 700 and 600 Series

Midand Info - New/Used iSeries Hardware, iSeries Systems, Upgrades
Parts, Software & Prof. Service


SupaPrice - Used As 400 Sale, Save big on Used As 400.
Used As 400 up to 62% off!

Weycomms - IT Hardware Traders, Used IBM i-Series, p-Series
& x-Series Hardware

Covenco - Iseries and System i, Power6 to legacy systems. Servers, disk, memory, in stock immed. ship

Bluechip - iSeries & AS400 Systems, IBM iSeries Hardware Upgrades & Sales from IBM Midrange Specialists

Thursday, May 07, 2009

What is QZHQSSRV job?

On the as400, QZHQSSRV is one of the prestart jobs that will be running in the QUSRWRK subsystem.

A prestart job is a batch job and will run on the server before a program on a remote system tries to connect with that server. Usually multiple prestart jobs of a particular type are configured to run. Prestart jobs are run to increase performance of initiations and connections to a server. Host server functions, that use prestart job, use the sockets communications interface support

The host servers are:

Network print server
Remote command and distributed program call server
Central server
Database server
Secure database server
File server
Secure file server
Data queue server
Signon server

These are the programs called when the prestart job is started for host server.

Remote command and program call QSYS/QZRCSRVS

The prestart jobs usually take the name of the program that they call, so QZHQSSRV is a prestart job for a remote system to communicate with a data queue on the server.

About Me


Im Colin Williams, the 'Webmaster' of this blog. Im an as400 IT consultant (currently on a career break, not my choice, blame the credit crunch!) with 20 years experience of many aspects of as400 systems and development. Im based near London, but will work anywhere in the world if an obscene amount of money is offered (seriously)

If you have any comments on this blog, or any suggestions, need an experienced as400 guy, or just need some counselling (apparently im a good listener), drop me an email...

colinwilliams007 at (antispam, you know what to do!)

System i | AS400 | Iseries Business Partners

System i | AS400 | Iseries modernization solutions

IBM System i Developer Road Atlas

The System i Developer Road Atlas illustrates all the possibilities for development activities; including modernization, new development and the inclusion of components which have already been created. The Road Atlas shows key activities required for developers from seemingly diverse backgrounds as RPG, Java and PHP to integrate components together creating on demand applications

Websphere Application Server for Iseries

Version 7.0 is the latest release WebSphere Application Server on iseries and is supported on IBM i.

Wednesday, May 06, 2009

Using the .Net toolset to develop desktop and Web-based applications for IBM i

Richard Schoen discusses using .Net to develop IBM i apps...

With a little education on how to use a technology like .NET to develop applications, a System i programmer can quickly write a graphical application on top of an existing System i solution. This adds a new user interface to important parts of an existing system or simply offers ease of access to existing ERP data from a Windows or Web-based inquiry

IBM is abandoning storage....

or at least they are not taking it seriously, according to this article by storage analyst Barry Burke...

In my book, when you trivialize the importance of ANY technology to the point of having your supplier announce GA and availability rather than doing it yourself, it means something. And when IBM's sales force is to this day telling prospects that flash SSDs are "unproven technology" and "not ready for the enterprise," I can only conclude that IBM is embarrassed to admit some huge limitation or inadequacy of their products when used with Flash

...the aging, decrepit DS8K is no longer a viable storage platform for the enterprise. Later this year, IBM will finally get around to upgrading the aging DS8K processors to the p6, but it won't be enough to catch up with the Symmetrix V-Max

LANSA beefs up as400 application modernistation options with aquisition of aXes

Lansa has purchased aXes as400 modernisation suite of products. The products are

aXes Terminal Server provides Web enablement of 5250 applications with the automatic generation of a highly customizable graphical user interface (GUI).

aXes Data Explorer Server provides an easy way to extract and then publish live DB2/400 data in a browser or to send query output to desktop applications like Microsoft Word and Excel.

aXes Spool File Server provides point-and-click access to output queues and spool files, with print-ready documents available in PDF, XML, HTML, or text formats

Aldon Introduces a new Build and Release Management Product to IBM i

While version control tools give you the ability to manage software versioning through check-outs and check-ins, it can’t help you with the software build and release process. Aldon’s Build Release Management solution gives you total control of the entire build release management process by taking advantage of the benefits that an application lifecycle management offering brings

Get Time to the Millisecond in ILE C on as400

Show examples of manipulating dates and time from ILE C using APIs CEELOCT for current time and CEEDATM for date time or timestamp formatting on as400

5250 Emulators

For easy access to IBM AS/400 (System i, iSeries) sessions, try one of these 5250 terminal emulators

LINUX 5250 Emulators

Mocha Linux TN5250 (Shareware) MochaSoft

8 as400 iSeries Access PC5250 Tips

Other as400 tips sites

Tom Liottas System i Command, CL and API Samples

IT Jungle as400 forum


Midrange Wiki

IBM eServer iSeries (AS400) FAQ


Mid Deranged

Home of FROG for the IBM iSeries


IBM DB2 for i5/OS and Development Center

IBM DB2 Development Center capabilities that can be used in the creation, testing, and deployment of SQL stored procedures and user-defined functions on DB2 for i5/OS

Tuesday, May 05, 2009

Heterogeneous data access for i5/OS applications - IBM WebSphere Federation Server

Discusses the available methods for i5/OS programs to access data that is not stored in DB2 (such as Oracle and SQL Server)

Debugging SQL procedures with the System i graphical debugger and DB2 developers workbench

IBM® DB2® for i5/OS® first simplified the debugging of SQL procedures, functions and triggers in the
IBM OS/400® Version 5 Release 2 operating system with the introduction of the SQL *SOURCE Debug
View. (See the article entitled “Graphical Debugger Makes Procedural SQL Debug Even Easier,”
published in the March 2003 issue of iSeries NEWS:
_Easier.html.) In conjunction with the IBM Toolbox for Java™ System i System Debugger, this debug
view greatly simplified the debugging of SQL procedural objects.
With the DB2 for i5/OS V5R4 enhancements, developers now have another option when they need to
graphically debug SQL procedures. These new debug capabilities are provided by the IBM DB2
Developer’s Workbench (formerly known as IBM DB2 Development Center). The Developer Workbench
is a visual tool that supports the entire DB2 family across all IBM platforms for the rapid development of
DB2 business objects. The DB2 Developer Workbench only supports the debugging of SQL and Java
stored procedures.

DB2 for i5/OS and Web Services

This paper will show the reader how to implement a DB2 Web service

IBM DB2 Development Add-in for Microsoft Visual Studio .NET

Discusses using the DB2 Developer Add-in for Visual Studio.NET and the ADO.NET classes to access .NET applications on IBM i

Creating and using materialized query tables (MQT) in IBM DB2 for i5/OS

MQT offers new methods for enjoying high performance query processing

Building Web services with ibm i db2 and Microsoft Visual Studio .NET

Build and test Web services integrating existing i5/OS code and DB2 .Net in Microsoft Visual Studio integrated development environment

Accessing DB2 for i5/OS data from AIX Applications and optimizing AIX access to your DB2 for i5/OS database

Connectivity options, implementation tips, and a number of coding examples that illustrate how to optimize the access to a DB2 for i5/OS database from an AIX partition from JDBC, ODBC, DB2, CLI, and embedded SQL

Accessing DB2 for i5/OS data from a Linux Partition and Optimizing Linux access to your DB2 for i5/OS database

Discusses choosing the right JDBC driver to access DB2 for i5/OS from a Linux partition and also provides tips and examples on optimizing the JDBC access to your DB2 for i5/OS database

A new approach to enforcing business rules with DB2 for IBM i

By declaring your business rules in the database, you're assured that those requirements are enforced across all transactions and, more importantly, all interfaces

Tech cult No. 6: Monks of the Midrange

Dan Tynan discusses technology cults, including us as400 dinosoars

Gathering of the tribes: Common 2009 Major deity: Dr. Frank Soltis Holy scriptures: The IBM Redbook Sacred relic: Original AS/400
Like their elder brethren devoted to IBM mainframes, the monks of IBM's midrange systems congregate to celebrate the IBM i, iSeries, i5/OS, AS/400 and related solutions, says Randy Dufault, president of the Common Users Group. Although the group traces its history back to the day vacuum tubes vanished from modern computers, it still boasts more than 4,000 members, who meet annually to keep the power systems flame alive

Does make me wonder. How many midrange people have never opened a redbook. How many dont even know what they are! I know many as400 bods pride themselves on never reading the manuals. Wierd

Saturday, May 02, 2009

Can IBM i play with SOA?

Very interesting video from Lansa that discuss the i and SOA

Friday, May 01, 2009

Using QCLRDTAQ to clear data queues in CL and RPG

Heres an example of using QCLRDTAQ to clear an as400 dataqueue in RPG

C                     CALL 'QCLRDTAQ' 
C                     PARM           DQUE   10 
C                     PARM           DLIB   10

Heres an example of using QCLRDTAQ to clear an as400 dataqueue from the command line

CALL QCLRDTAQ MYQUEUE MYLIB,289483,sid3_gci910672,00.html

More as400 dataqueue examples to follow

How do I check a user's authority to files in the Root File System?

Change an objects source file information with QLICOBJD

API QliCObjD (Change Object Description) lets you change certain parts of an object's attributes, one of which is the source file information

Calling the List Object APIs

Proper techniques for using the IBM List Object APIs

sample programs showing how to use the QjoRetrieveJournalEntries API

Carsten Flensburg provides two sample programs showing how to use the
QjoRetrieveJournalEntries API. Each of the two ILE RPG programs, CBX1041 and CBX1042, show how to
use the QjoRetrieveJournalEntries API using format RJNE0100 and RJNE0200,

RPG World RPG Developers Conference

2009 Conference and ShowCase

Some of The Topics Includes:

Web Applications with RPG IV - 101.
Creating an Excel Worksheet with RPG IV.
Sending Email from RPG IV with multiple attachments.
Data Entry using a Web Browser and RPG IV.
Using RPG IV to post and retrieve messages to/from and other online services.
Using RPG IV to connect send an HTTP request to another (e.g., Microsoft .Net/ASP SOA) server.
XML Topics.
SQL Topics.
Traditional RPG, CL and Subfile Topics.
How to Install and use RDi (the new name for WDSc)

as400 sites

Useful sites for all you as400 bods out there

Bobs Cozzi RPG World

as400 / iseries / ibm i api examples

This section contains example programs that use as400 APIs
Using the example programs, you can:

Delete old spooled files using a program in one of the following languages:
Note: The programs and source code used as examples in the spooled file portion of this page exist only in printed form. They are not stored electronically on the iSeries server.

Call the ILE Common Execution Environment (CEE) Date APIs
Change active jobs
Change a job schedule entry
Create your own telephone directory
Create and manipulate a user index
Create a batch machine
Define queries
Use profile handles
Generate and send an alert
Create diagnostic reports using message handling APIs
List directories and subdirectories in spooled files
Saving to multiple devices
Scan for string patterns
Use a data queue
Use environment variables
Save and restore system-level environment variables
Use the generic terminal APIs
Use the network management APIs
Use the COBOL/400 APIs to control run units and error handling
Use the user-defined communications APIs
Use the registration facility
Use semaphores and shared memory
Use the as400 source debugger APIs
Use the spawn process and the wait for child process
Work with stream files
This section also contains examples of exit programs to do the following:

Use the Operational Assistant backup exit program
Create the Program Temporary Fix exit program

More as400 api examples to follow

Where Messages Go When Sending Messages to a User (QEZSNDMG)

QUSRJOBI API (Retrieve Job Information) as400

The Retrieve Job Information (QUSRJOBI) API as400 retrieves specific information about a as400 job

Heres an example from the "Big Dummy's Guide to the As400" that using QUSRJOBI API to determine if the current job is interactive or batch

fSOMEDSP   cf   e             workstn 
* Variable Definition 
d Format          s              8 
d RcvVarLen       s             10i 0 

d dsJobDta        ds 
d  dsJobBytesRtn                10I 0 
d  dsJobBytesAvl                10I 0 
d  dsJobName                    10A 
d  dsJobUser                    10A 
d  dsJobNumber                   6A 
d  dsJobIntern                  16A 
d  dsJobStatus                  10A 
d  dsJobType                     1A 
d  dsJobSubtype                  1A 
d  dsJobReserv1                  2A 
d  dsJobRunPty                  10I 0 
d  dsJobTimeSlc                 10I 0 
d  dsJobDftWait                 10I 0 
d  dsJobPurge                   10A 

//  external as400 calls 

d $jobinfo        pr                  extpgm('QUSRJOBI') 
d   DsJob                             like(DsJobDta) 
d   Length                      10i 0 const 
d   APIFormat                    8    const 
d   ApiJob                      26    const 
d   InternJob                   16    const 



exsr  Hskpg; 

*inlr = *on; 

// Hskpg - one time run subroutine 

begsr Hskpg; 

// determine if this as400 job is interactive or batch 

RcvVarLen = %Size(DsJobDta); 
Format = 'JOBI0100'; 

$jobinfo(dsjobdta : rcvvarlen : Format : '*' : ' '); 

if DSJOBTYPE = 'I'; 
if not%open(SOMEDSP); 
open SOMEDSP; 
// do batch stuff 


v5r1 -

v6r1 -

More as400 api job information to follow

10 Really as400 Helpful APIs

Are you aware of what's out there besides QCMDEXC for as400?