Portability Aspects

Assembler

Usage of the TCP/IP for z/VSE Assembler SOCKET Macro Interface ties the program to z/VSE. Programs written in Assembler, using the SOCKET macro interface are not portable to non z/VSE operating system environments as there is no API standard for this language.

The EZASMI macro interface and EZASOKET call interface are also available within z/OS®, with minor differences. Applications using these interfaces on z/OS can easily be ported to z/VSE and vice versa.

COBOL and PL/I

While COBOL and PL/I are the dominant programming languages in the z/VSE environment, the "native" language for writing TCP/IP based socket applications is C. Interfaces for languages other than C might exist in specific environments or might be provided by product specific programming toolkits, which potentially are available for multiple platforms.

If portability to non z/VSE systems is not essential, you can choose the TCP/IP for z/VSE preprocessor API, described in the TCP/IP for VSE Programmer's Guide . If portability to z/OS or z/VM is essential, read section Language Environment for further details. If portability to z/OS is essential, consider using the EZASOKET call interface.

C Language

As mentioned before, C is the only programming language besides JAVA where very similar programming interfaces are provided in arbitrary operating system environments.

While the C socket interfaces are standardized by the Berkeley Software Distribution (BSD), there are other standards to assure cross-system and cross-platform portability, for example by The Open Group in their CAE specification : "System Interfaces and Headers, Issue 4, Version 2", in the literature also being referred to as XPG4.2. The Open Group can be found on the Internet at: http://www.opengroup.org/.

Language Environment

The Language Environment® (LE) on the IBM Z platform assures portability across z/OS, z/VM and z/VSE. Depending on specific needs and portability issues one of the following languages
  • C
  • COBOL
  • PL/I
  • Assembler
  • REXX
is appropriate for writing TCP/IP socket interface based Client/Server applications.

LE supports the usage of LE services using any LE enabled High Level Language (C, COBOL, PL/I) or from within an LE conforming Assembler program. This includes support for mixed-language applications.

LE based programs, using socket services and written in a programming language other than C are not portable to a IBM Z server. LE on IBM Z provides cross system compatibility.

LE Enabled Applications

An application is considered to be "LE enabled" (or " LE Conforming" or "LE Compliant"), if it conforms to the common execution environment (CEE) model and conforms to this runtime linkage, storage and condition handling model. This is true, if the application is compiled, or assembled, using LE conforming compilers or prologue/epilogue macros. These are basically all C for VSE, COBOL for VSE, and PL/I for VSE compiled programs and Assembler programs using CEEENTRY/CEETERM macros. C for VSE subroutines including assembler programs using the C prologue/epilogue assembler macros also fulfill this requirement.