The first step in an assessment of the portability of a C application to the iSeries™ server involves the analysis of the interfaces that are used in your application.
This API analysis identifies those interfaces that are used within the application that are not industry standard and not supported on i5/OS™. It also identifies the interfaces that are compliant with industry standard but supported differently because of the different architecture of i5/OS compared to AIX® or Linux® machines.
The API Analysis Tool consists of front-end and back-end processes. The front-end process scans the compiled application to extract the interfaces (external functions and data) that are used by the application, and generates a list of all those interfaces. The back-end process takes this list of interfaces as input and compares the interfaces with a database of typical system APIs and their support.
The front-end process of the API analysis tool is a shell script. It uses the nm or dump command to find symbol information from the external symbol table of the application.
Binaries that have been stripped of symbols can contain enough dynamic binding information for the tool to analyze. Statically bound binaries remove the library interfaces from the analysis but still expose system call dependencies for analysis.
In addition to the information you gather from the API analysis tool, you should also gather the following information:
dump -H binary_name
If you run programs that change credentials or want your programs or scripts to run even when the i5/OS PASE 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, i5/OS PASE searches the /QOpenSys file system for path name /QOpenSys/usr/bin/ksh. QShell utility programs are not byte stream files, so i5/OS PASE 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.