Analyzing program compatibility with IBM PASE for i

The first step in an assessment of the portability of a C application to the IBM® i operating system is the analysis of the interfaces that are used in your application.

  • Obtain a list of libraries used by your application.
    Library analysis helps identify some of the middleware APIs that your application uses. You can run the following command against each of your commands and shared objects to get a list of libraries required by your application:
       dump -H binary_name
  • Check your code for hardcoded path names.

    If you run programs that change credentials or want your programs or scripts to run even when the PASE for i environment variable PASE_EXEC_QOPENSYS=N, you might need to change hardcoded path names.

    Because /usr/bin/ksh is an absolute path (starting at the root), if it is not found or if it is not a byte stream file, PASE for i searches the /QOpenSys file system for path name /QOpenSys/usr/bin/ksh. QShell utility programs are not byte stream files, so PASE for i searches the /QOpenSys file system even when the original (absolute) path is a symbolic link to a QShell utility program, such as /usr/bin/sh.

  • Check for unsupported system calls.

    The PASE for i kernel exports some system calls that are implemented by the AIX® kernel but are unsupported by PASE for i. The default behavior for an unsupported system call is to send exception message MCH3204 that contains the name of the unsupported system call. Additionally, the system will deliver PASE for i signal SIGILL to the calling process.

    You may need to modify your application source to avoid use of any unsupported system calls. You can also use the PASE_SYSCALL_NOSIGILL environment variable to alter the system behavior for unsupported system calls.