IBM Z and LinuxONE - Languages - Group home

Compiler Technology (hi)story on z/OS

By FANG LU posted Tue March 24, 2020 07:37 PM

  

For my first blog I want to talk about Compiler Technology (hi)story on z/OS. I know what you are thinking and I don't blame you. z/OS has been around longer than many of us. I'll promise you, I will keep it interesting and above the fold.


Compiler characteristics can change based on the options passed to it. With each release came a different set of new options, or existing ones with new default values. You can use these options to detect and correct errors in your code, CHECKOUT, WARN64, DEBUG, etc., control the optimization process, OPTIMIZE, HOT, UNROLL, etc., migrate to the newer version of the compiler, PORT, UPCONV, etc.


Numbers are a big part of computing and can be represented in different forms. Starting in V1R9 release Decimal Floating Point joined IEEE BFP and HEX formats. When DFP is enabled, _Decimal32, _Decimal64, and _Decimal128 are supported and the decimal calculation results avoid the potential rounding mode problems from using binary or hexadecimal floating point types.


Supporting IBM middleware, CICS and DB2, has been on going and more visible in recent releases. The integrated CICS translator enables users to embed CICS statements in C/C++ source and pass them through the compiler without the need for an explicit preprocessing step. This permits a more seamless operation of C/C++ within the CICS environment.


If all the SQL statements are embedded in your XL C programs, you can use the XL C DB2 coprocessor to prepare the programs to request DB2 services. The DB2 coprocessor enables users to embed EXEC SQL statements in C/C++ source code, and pass them through the compiler without the need for a preprocessing step.


Over the period of many generations of hardware, we have provided users built-in functions that map directly to zSeries hardware instructions. These functions give you access to powerful hardware operations at a source level such as cache prefetching.


Optimization of C and C++ code is an important feature. We have developed more aggressive optimization in each release. They come at a cost, though.


The end of this blog is the beginning of many that my colleagues and I will post. We will delve into these and other relevant topics that have direct impact on Commercial Computing with C/C++.