 
 
__attribute__((__transparent_union__))
     attribute.
   -fident/-fno-indent options to control generation
     of .ident strings on platforms that support that.
   -fgcc-version=x.y.z option to specify desired
     GCC compatility (for Linux and z/TPF environments.)
   -fsyntax-only/-fno-syntax-only options to simply
     parse the source and not generate the program.
   __has_builtin in the C preprocessor.
   __builtin_mempcpy() and __mempcpy.
   -D and -U options are now processed in the order
     they appear on the command line.
   __builtin_thread_pointer() builtin for environments
     that support thread-local-storage (z/TPF and z/Linux).
   -fpreinclude=filename options on the
     command line.
   __attribute__((__deprecated__)).
   __attribute__((__unavailable)).
   __attribute__((aligned)) attribute without any
     specification now indicates the maximum possible alignment.
   _Decimal128 changed to match GCC's
     for DCC, z/TPF and Linux environments.  For LE environments
     the alignment will match IBM's.
   -fc23), a type-mismatch error is now 
     generated for a function definition with no prototype
     when a previous prototype is in scope, e.g:
          void f(int); void f() { }
	
now generates a type mismatch error for the declaration.
-Wlabel-unused option and warning.
   -Wunused-function option and warning that diagnoses
     unused defined static functions in a compilation.
   -Wunused-parameter and -Wunused-variable options,
     and warnings.
   -trigraphs/-no-trigraphs option to enable/disable
     C trigraphs.  C23 removes trigraphs from the language,
     -trigraphs specified after -fc23 can be used to 
     re-enable them if needed.
   typeof() and typeof_unqual().
   -fshort-enums option.  -fshort-enums is
     equivalent to -fenum=SMALL and -fno-short-enums is
     equivalent to -fenum=INT.
   .cfi_xxx
     instructions the GNU gas assembler.  -fno-dwarf2-cfi-asm
     selects the old manually-generated tables.
   __builtin_popcount() function takes
     advantage of the Miscellaneous-Instruction-Extentions
     Facility 3 enhancements to the POPCNT instruction to reduce
     the generated code 
   __builtin_abort() and 
     __builtin_trap().  For the z/Arch targets, __builtin_trap()
     generates 2 bytes of 0x0000 because the Principles of
     Operation say:
	Operation code 00 hex will never be assigned to an instruction implemented in the CPU
Thus, when execution reaches those two bytes, the program will receive an INVALID OPERATION exception.
-MM option which is similar to -M
     except that dependencies involving system include
     files are not included in the output.
   __attribute__((__packed__)) attribute is now
     recognized and applied to individual structure field
     members for Linux(z/TPF) and DCC modes as well as
     IBM compatibility mode.  It should have always applied
     in Linux mode mode, but this represents a change in
     the ABI for DCC mode.  For example, this structure:
	
           struct packed_chars {
             char a:4;
             char b:8 __attribute__ ((packed));
             char c:4;
           };
	
only uses 2 bytes where before it would have been 3.
-Wswitch and -Wswitch-enum.   When the
     controlling expression of a switch statement is an
     enumerated type, the compiler will verify that all
     values of the enumeration appear as case labels.
   -Wswitch-outside-range/-Wno-switch-outside-range
     which checks that a case label's value is in the range
     of the controlling switch expression.
   CC
     in the register allocator for improved code.
   _BitInt(x) bit-precise integers and
     decimal constants.
   __stpcpy() and __builtin_stpcpy() compiler builtins.
   -fwrapv indicates the compiler
     should assume signed integer overflow "wraps-around" and
     defeats such optimization.   -fwrapv is the default
     but that may change in the future.
   -fwrapv-pointer and -fno-wrapv-pointer options to 
     control this.
   -fc23 is specified, _Static_assert's string 's' is
     optional.
   -fhosted/-fno-hosted options that controls the
     definition of __STDC_HOSTED__.  Also - define __STDC_HOSTED__
     if c99 or c11 is enabled; but only then.  -ffreestanding is
     a synonym for -fno-hosted.
   ISO C90 forbids mixed declarations and code
     which is enabled by -fc90 and disabled by -fc99 or -fc11.
     This can be helpful if writing code that needs to also be
     compiled with older compilers.
  
   
__volatile
     as a synonym for volatile.
   FPR8-FPR15 if used in a function.  There
     is a new -mafp_volatile option also causes any function call
     to indicate the registers are altered and thus saved/restored
     in the calling function.
   strcmp() function was
     improved to 'swap' the comparison addresses for CLC and 
     CLST instructions and take advantage of IPM + shifts to
     produce a -1, 0, +1 result.
   memcmp() function was
     improved to do no branches for constant lengths when
     possible.  Also, the code was dramatically improved
     over the previous byte-by-byte comparison code to do
     the comparison in 256-byte chunks, then a final CLC
     for the remainder.
   __FUNCTION__ and support 
     GCC's __PRETTY_FUNCTION__ pre-defined identifiers.
   -@ processing improved on MVS to support quoted strings.
  -fno-dwarf2-cfi-asm to allow the use of older
     GAS assemblers.
   -fasm-listing, -fno-asm-listing to the 
      tpf-dcc and tpf-dcxx scripts to control inclusion of the GAS assembly
     listings.
  pthread_main_np() function added to the library.
   mempcpy() function.
   void *__initial_parm_block_addr(void) function
     that returns the address of the incoming parm block
     for DCC MVS 32-bit and 64-bit environments.
   aio_cancel(2), aio_error(2), aio_read(2), aio_return(2),
     aio_suspend(2), aio_write(2), lio_listio(2).
   clock_gettime() supports CLOCK_MONOTONIC as well
     as CLOCK_REALTIME.
   sigqueue() added to the runtime library.
   pread() and pwrite() functions for HFS files.
   __ibmfd function that returns the underlying
     IBM HFS or SOCKET file descriptor for a Dignus file descriptor.
   strfmon() function and monetary.h header (POSIX) was added.
   __smf_record() function for writing SMF records
     was added.
   __MAP_64 flag was added to mmap().
   __MAP_MEGA flag was added to mmap().
   write() will 
     assign ENOSPC to errno instead of EIO.
   "abend=abend" and "abend=recover" attributes for BSAM
     file opens.  If "abend=abend" is specified, then an ignorable
     I/O ABEND will become a "real" ABEND and need to be handled
     via normal ABEND methods (e.g. a signal handler for SIGABND.)
     If "abend=recover" is specified, the library will "ignore"
     ignorable I/O ABENDs and report the error to the caller and
     set errno to EIO or other appropriate value.   The default
     is "abend=recover".
   stpcpy() and stpncpy() functions added to the library.
   TRAP(ON)/TRAP(OFF) now take
     precendent over any environment decision about establishing
     an ESTAE, so that the ESTAE can just be completely turned off.
   SI_USER value in
     the siginfo_t passed to the signal handler.
   pathconf() and fpathconf() functions now support
     the newer _PC_ACL and _PC_ACL_ENTRIES_MAX options
     from IBM.
   stdalign.h header.
   max_align_t type in stddef.h.
   strnlen() and wcsnlen().
   round(), roundf() and roundl() functions could
     raise the INEXACT flag.  The ANSI C99 and C11 standards
     allowed for that behavior, while the C14 standard does
     not. This function was changed to no longer raise the 
     INEXACT flag in any situation.
   MODE, ALIAS, and CHANGE command cards.
   -esd/-xsd/-goff options to control
     PLINK output format.
  finish command for running and completing the current function.
__atomic* builtin functions.
__builtin_fabsd32(), __builtin_fabsd64() and  __builtin_fabsd128().
_DecimalN values.
__builtin_unreachable() function.
_Noreturn keyword supported when -fc11 enabled.
-march=z13 flag to enable instructions from the 13th
     edition of the Principles of Operation.
__builtin_swap16(), __builtin_swap32()
     and __builtin_swap64().  These will use hardware instructions
     if the -march level allows it.
-march=z9) to use instructions to convert from IEEE floating-pt
     to unsigned integers.
-mmisc-instructions-extensions-facility-2 is allowed,
     the compiler will now take advantage of the AGH/SGH and MGH
     instructions for operations involving 64-bit signed values and 16-bit
     signed values in memory
-mfp-extensions-facility is enabled (-march=z9 or greater.)
__builtin_frame_address() and 
     __builtin_return_address() builtin functions.
-mtpf-skip-trace option which alters
     z/TPF trace branch targets in the function prologue/expilogue.
__builtin_isdigit() function.
-march option, conversions of 1_DecimalN
     values to floating point will now use hardware instructions.
__SIZE_TYPE__ and __PTRDIFF_TYPE__.
_DecimalN types in __builtin_classify_type() (used by the va_arg()
     expansion.)
_DecimalN/_FloatN values to int
     when applying default promotions.  Also, (_Float32) is not promoted
     to (double) as (float) is as suggested by the standard.
#" directives even inside the arguments to a macro.
__builtin_sqrtf(), __builtin_sqrt() and __builtin_sqrtl()
     builtins from GCC, for both IEEE and HFP data
-bonly links.
   
-except on long names as well as short ones.
EXEC
     CICS ASSIGN, EXTRACT TCPIP, EXTRACT WEB, and WEB PARSE.  And add
     STRINGZONE to EXEC CICS FORMATTIME.
CVDA (DFHVALUE) table to CICS TS V5.5.
EXEC CICS INQUIRE SYSTEM as of CICS TS V5R4.
<float.h> now supports _FP_MODE_VARIABLE for the definitions of the various floating-pt constants/sizes, etc...
alarm(), setitimer() and getitimer() functions.
OBTAIN for the osddinfo() function.
usleep(3) function (based on the recently 
     added nanosleep(2).)
call_once(), cnd_broadcast(), cnd_destroy(),
     cnd_init(), cnd_signal(), cnd_timedwait(), cnd_wait(), mtx_destroy(), 
     mtx_init(), mtx_lock(), mtx_timedlock(), mtx_trylock(), mtx_unlock(), 
     thrd_create(), thrd_current(), thrd_detach(), thrd_equal(), 
     thrd_exit(), thrd_join(), thrd_sleep(), thrd_yield(), tss_create(), 
     tss_delete(), tss_get(),tss_set().
pthread_atfork(), pthread_cleanup_pop(), pthread_cleanup_push(),
     pthread_condattr_destroy(), pthread_condattr_init(),
     pthread_cond_broadcast(), pthread_cond_destroy(),  pthread_cond_init(),
     pthread_cond_signal(), pthread_cond_timedwait(), pthread_cond_wait(),
     pthread_create(), pthread_detach(), pthread_equal(), pthread_exit(),
     pthread_getspecific(), pthread_join(), pthread_key_delete(),
     pthread_kill(), pthread_mutexattr_destroy(),
     pthread_mutexattr_getprioceiling(), pthread_mutexattr_getprotocol(),
     pthread_mutexattr_gettype(), pthread_mutexattr_init(),
     pthread_mutexattr_setprioceiling(), pthread_mutexattr_setprotocol(),
     pthread_mutexattr_settype(), pthread_mutex_destroy(),
     pthread_mutex_init(), pthread_mutex_lock(), pthread_mutex_trylock(),
     pthread_mutex_unlock(), pthread_once(), pthread_rwlockattr_destroy(),
     pthread_rwlockattr_getpshared(), pthread_rwlockattr_init(),
     pthread_rwlockattr_setpshared(), pthread_rwlock_destroy(),
     pthread_rwlock_init(), pthread_rwlock_rdlock(),
     pthread_rwlock_unlock(), pthread_rwlock_wrlock(), pthread_self(),
     pthread_setcancelstate(), pthread_setcanceltype(),
     pthread_setspecific(), pthread_testcancel()
     as well as the pthread barrier functions: pthread_barrier_destroy(),
     pthread_barrier_init() and pthread_barrier_wait().
     and the non-POSIX additions pthread_attr_get_weight_np(),
     pthread_attr_set_weight_np(), pthread_attr_get_synctype_np(),
     pthread_attr_set_synctype_np() and pthread_set_limit_np().
nanosleep() function (depends on BPX.)
sem_destroy(), sem_getvalue(), sem_init(),
 sem_open(), sem_post(), sem_timedwait(), sem_trywait(),
     sem_unlink() and sem_wait().
sched_yield() added to the C library.
strchrnul() added to the C library.
unsetenv() now returns (int) to match the POSIX specification.
clock_gettime(), clock_settime() and
     clock_getres() functions.  Mainframe hardware only supports
     the REALTIME clock.
getdelim() and getline() POSIX functions.
wordexp() and wordfree() POSIX functions.
__abendcode() and __rsncode() functions to
     be able to determine these values in a SIGABND signal handler.
posix_spawn() and the associated functions
     to the C library.
vfork() to the C library.
__getprv(2) (@@GETPRV) function to return the current PRV
     address.
sigsuspend(2), sigwait(2) and pause(3) signal-related
     functions for POSIX signals.
O_CLOEXEC open(2) flag added. 
pipe2() function added.
__runopt variable that disables parsing parameter strings
     for runtime options.  If the variable is defined, and the value
     is 0, then don't do runtime options processing in TSO or BATCH.
lrecl=x open(2) attributes; also for a variable-spanned
     file defined with LRECL=X, the osddinfo() function returns a
     special LRECL_X value (32-bit MAXINT), the lrecl field in
     the return __fldata_t structure from the fldata() function
     also uses that value.
LRECL from the DCB for a Variable Spanned
     file is X (it has the high-order bit set) then we return a
     __maxreclen of 0x7fffffff in the fldata_t structure returned
     by the fldata() function.
LRECL to be the maximum
     limit of the record length.  This doesn't make too much sense since
     there could be many segment descriptors along for a spanned
     record; but it fits with the non-spanned Variable record approach
     and since IBM does it we now do as well.  This does not occur with
     LRECL=X.
RECFM/LRECL
     and BLKSIZE, we now only provide an an inferred setting 
     for RECFM if the DCB doesn't have one, the user 
     didn't give us one, and the file is an output file.   If after
     that, the DCBRECFM is still
     unset, then we end the open exit processing and allow the OPEN
     to proceed (likely getting an ABEND and driving the ABEND EXIT
     because the DCBRECFM is unset.)   This aides in failing the open()
     of a FILEDEF for a non-existing file on CMS.  (If the DCB is
     complete, CMS will allow the open for a non-existing file, which should fail.)
__reglen() and __regcpy() to the C 
library for copying s compiled regular expression.
TRAP(ON) even when it wasn't requested
__cs1()/__cds1()/__csg()/__cdsg() builtins in LE mode.
__float128 type, which is always 128-bits long no matter the setting of long_double_is_distinct.
_Float32/_Float32x/_Float64/_Float64x/_Float128 IEEE interchange and extended floating point types.
__attribute__((used)) on a static function definition to indicate the compiler should not elide it, even if it appears unused.   This is helpful for referencing the function from in-line assembly source.
alloca() is now defined to be __builtin_alloca() (as Linux and, essentially, LE environments do.) This allows the compiler to be aware when alloca() has been used.
LRECL=133,RECFM=FBA on MVS to provide nice defaults if none are provided in JCL or allocated output file.
__builtin_tbegin, __builtin_tbegin_nofloat, __builtin_tbegin_retry, __builtin_tbegin_retry_nofloat, __builtin_tend, __builtin_tabort, __builtin_tx_assist, __builtin_tx_nesting_depth, __builtin_non_tx_store).
__attribute__((gnu_inline)), which force the "inline" keyword to be treated like the pre-C99 gcc extension instead of the standard C99 meaning.  This is compatible with how gcc treats inline since gcc version 4.3.
__attribute__((packed)) on enum types, which uses the smallest container size that fits all of the enum values.
__callback function pointers so that XPLINK code can call non-XPLINK function pointers passed in from other DLLs.
@CODE section.)   This allows for duplicate non-rent definitions to be elided at link time.
*' in column one) in PLINK, the entire card is ignored and can't be continued.
ALTER MASK, ALTER PERMISSION, ALTER TRIGGER, ALTER TRUSTED CONTEXT, CREATE MASK, CREATE PERMISSION, CREATE TRUSTED CONTEXT, CREATE TYPE, EXCHANGE, MERGE INTO.
CATALOG, as that causes the generation of IEF287I for input files.  Only set the normal disposition to CATALOG if we are creating a new file for output, and the open() hasn't otherwise specified a disposition in the attributes.
sigset_t manipulation)
@@PDIV library routine to generate a decimal divide exception if the divisor is 0.
sleep() which will invoke the POSIX sleep function
      in the USS environment.
makecontext()/swapcontext()/getcontext()/setcontext() functions (these functions make use of the EXTRACT PSW and RESUME PROGRAM instructions, and thus require hardware that provides those.  All z/Arch machines do, as well as later ESA/390 machines.)
__pfsctl() function to invoke the BPX BPX1PCT (phsyical file system control) interface.
setjmp()/longjmp() functions where changed to match the sigaction handling that POSIX specifies (to provide some interoperability with the new sigsetjmp()/siglongjmp() functions.)
sigaction(), sigprocmask() and other signal-related functions.
__bpxsig is set) the runtime establishes support for USS signals and can receive POSIX signals sent from other processes by the kill() function (or, other methods, e.g. SIGINT.)
ESTAE exit is used to catch SIGSEGV, SIGILL, SIGFPE and SIGABND events and invoke a signal handler if one is defined.
TRAP(OFF) is specified, no ESTAE exit is established (via #pragma prolkey on the main() function.)  The default is TRAP(ON).
main(), DCALL environments provide no signal catching (for either the POSIX or non-posix signals.)
-march=z11 which
     represents the 11th revision of the z/Architecture
     Priniciples of Operation.
   __func__ is now supported in all runtime environments.
   __builtin_fpclassify() for HFP and BFP data.
     This is the 'generic' version; __builtin_bfp_fpclassify()
     accepts BFP data, and __builtin_hfp_fpclassify() accepts
     HFP data.
   __builtin_frexpf, __builtin_frexp, __builtin_frexpl,
       __builtin_signbitf, __builtin_signbit, __builtin_signbitl,
       __builtin_isnanf, __builtin_isnan, __builtin_isnanl,
       __builtin_isinff, __builtin_isinf, __builtin_isinfl,
       __builtin_isfinitef, __builtin_isfinite, __builtin_isfinitel,
       __builtin_isnormalf, __builtin_isnormal, __builtin_isnormall
     These are 'generic' versions that depend on the 
     current setting of the -fieee option.  There are also
     BFP or HFP specific versions of these (with _bfp or _hfp
     qualifications after the __builtin portion of the name.)
   -fc99), there is
     a new -fc90 option to indicate that C90 mode be used.
   __builtin_return_address() builtin in all
     environments.
   __builtin_clz(), __builtin_clzl(), __builtin_clzll(), 
       __builtin_ctz(), __builtin_ctzl(), __builtin_ctzll(), 
       __builtin_ffs(), __builtin_ffsl(), __builtin_ffsll()
     If extended immediate instructions are allowed, these
     will use the FLOGR instruction; otherwise a binary
     search is generated.
   -fc99 or -fc11 is
     enabled.
   U/u character literal prefixes and u8/U/u
     string literal prefixes if -fc11 is enabled.  If these
     are specified the constant is comprised of UTF (ASCII)
     characters regardless of the -fasciiout option.  
     Compile-time concatenation of string literals does not
     translate the adjacent strings.
   -fc11 option to indicate C11 standard compatibilty.
   __STDC_ISO_10646__ pre-defined macro will be 
     defined by the compiler if wchar_t is larger than 16 bits,
     except in Linux environments where that definition is 
     provided by the runtime library header files.
     
   -febcdic=__LP64__ symbol
     in all environments if -mlp64 is enabled.
   __NO_INLINE__ macro if inlining disabled.
   __OPTIMIZE__
     and __OPTIMIZE_SIZE__ macros.
   __builtin_memchr() is 0, then
     the result is definitionally NULL.
 FD_FREEONCLOSE fcntl() flag for BSAM I/O.  If
     FD_FREEONCLOSE is set, then the FREE option will be 
     added to the BSAM CLOSE step.
   getaddrinfo() and getnameinfo() now invoke the IBM (BPX)
     routines according to the host: line setting in nsswitch().
   (time_t) changed to a 64-bit value for the 32-bit;
     this may affect structure alignment/compatibility with
     existing data.   This is in anticipation of the 2038
     roll-over date for a 32-bit time_t.   Note that (time_t)
     is used in a (struct timeval), which is also used 
     in the select() function.
   dynalloc() and dynfree() functions for z/OS
     dynamic allocation support.
  
--" as a comment-to-end-of-line within
     an EXEC SQL statement.
   _') in more DB2 identifiers;
     such as the name of an EXEC SQL CALL function.
   SQL TYPE IS XML and BLOB_FILE / CLOB_FILE / DBCLOB_FILE.
   -fccsid=x to set the default CCSID.
   EXEC SQL TRUNCATE (from DB2 V9).
   -ds0xl option, which causes D2S to treat
     "DS 0XLn" as equivalent to "EQU n", for compatibility with
     some sources that used that idiom.
 __attribute__((visibility("hidden")) for Systems/C
     shared objects.
   __attribute__((always_inline)) on functions to bypass
     compiler heuristics when determining if a function is eligible
     for inlining.
   System Include" specified
     in the license key file.
   -Spath option that is similar to IBM's SEARCH
     option for searching for included files.
   -fsave_dsa_over_call/-fno_save_dsa_over_call option
     to control saving/restoring bytes of the DSA over linkage-OS
     or linkage-ASM function calls.
   __builtin functions that have constant operands.
   __bit_offsetof() and __bit_sizeof() operations similarly
     to offsetof() and sizeof() but returning the values in bits.
   __int8/__int16/__int32/__int64 in all environments.
   __attribute__((noreturn)) and provide warnings
     if a return statement is encountered.
   -nodiginc option that indicates the system include
     directory specified in the license file should be ignored.
   -M=fn option to specify an optional file name for dependency
     information.  New -fdep[=fn] option to generate the dependency
     information during the normal compilation.
   __grande and __regpair type modifiers for (long long)
     data.  __grande indicates the (long long) value should be kept
     in a 64-bit register instead of two 32-bit registers.  Also added
     new -fllgrande option that indicates __grande should be
     the default for (long long) data types. 
   -fpreproc=filename option that writes preprocessor output to
     a file without halding the compilation.
   -MT and -MF options compatibly with GCC.  -MT filename
     provides the target name to use in dependency information.
     -MF names the output (equivalent to '=filename' for -fdep and -M.)
   __asm__ or gcc-style asm("") appears in a function,
     generate an LTORG in the 4K region in which it appears so that the
     in-line ASM can reference ASM literals.
   BASER=int specification in 
     a #pragma prolkey() and use that given integer value
     as the code base register for the specific function.  This allows the
     programmer to change the code-base for individual functions.
   unsigned long long (64-bit) bitfields in 32-bit
     compilations.
   _Ieee and _Hexadec qualifiers for floating-point types
     that indicate the value is either using BFP or HFP format.  Values
     in the "alien" format are converted to the default (as specified
     by the -fieee option) for operations.  E.g. 
           double _Ieee b1; double _Hexadec h1;
           h1 = b1 + 10;
     If the -fieee option is off, the addition is accomplished
     in HFP format, otherwise it is accomplished in BFP format
     and the result converted to HFP for the assignment.
   
-fhfpfloatpromote option indicating if HFP
     (float) values should be promoted.  For LE these are promoted to
     (double) when passed directly in parm blocks.  For Linux and Systems/C
     mode, these are not promoted (to be compatible with IEEE
     values.)  The -fnohfpfloatpromote option will disable the
     promotion, -fhfpfloatpromote enables it.  Previous compiler
     versions did the promotion in Systems/C mode but this was changed.
   _Generic generic-selection.
   -fatid option that allows '@' characters in C identifiers 
     (not the first character.)
   __attribute__((visibility("hidden")) for Systems/C
     shared objects.
 BIGNUM (long long).
 BRAS instead of B)
     that's used in DB2 V10.
   -fdb2ver=v8 and -fdb2ver=v10, which make
     DB2PPC match the IBM preprocessor output at V8 and V10,
     respectively.  The changes are largely aesthetic -- trigraphs and
     white space.
 __bpxso = 0 at global 
     (extern) scope.
   _O_BINARY and O_TEXT read performance
     from FIXED (BLOCKED) files.
   kopen() for processing LDS files without SHAREOPTIONS(1,3)
     on the allocation.
   RECFM=U reading and writing for BINARY and TEXT
     files with and without _O_RECIO.
   S) specification on recfm= option in
     open() for FIXED (F) record-length files and mark the DCB
     accordingly.
   TCPIP.TCPIP.DATA file
     and related files.
   __traceback output, so you can see which
     call point is active.
   poll() function (emulated based on select())
   RLSE and NORLSE attributes in open() processing
     indicating any unused space after a close is to be released
     or not.  RLSE is the new default.
   __svc99 function to provide interface to DYNALLOC.
   _Decimal(n,p) multiply.
 -fsigned_char/-funsigned_char options, indicating
     the default "signedness" of the (char) type.
 -M option output was changed to be consistent with among
     all the Dignus tools. 
 EDCPRLK pre-linker.
 #pragma anontstruct if -xanon is specified.
 -style=nestorg that is similar to -style=next,
     but with a simpler treatment for ORG statements.
 -xcom/-com=single/-com=con/-com=all to control generation
     of comments taken from ASM source.  
 @@SARNTI (stand alone re-entrant initialization) in 64-bit environments.
 -march=z option was extended to become
     -march=zN,
     where N indicates the revision number of the z/Architecture
     Principles of Operation.
 -mhfp-mult-add, -mgeneral-instructions-extension
,
   -mimmediate-extension options to control the use of the
     z/Architecture instructions available with those hardware
     extensions.
 __userid() function that returns the NUL-terminated
     usedr id value (or NULL if it can't be found)
_Decimal32, _Decimal64 and 
    _Decimal128.
  NIHH/NIHL/NILH/NILL and OIHH/
     OIHL/OILH/OILL when z/Architecture instructions are allowed.
  #pragma linkage(OS) implies __local for function pointers.#pragma prolkey/epilkey now imply that the function
     cannot be inlined.#pragma variable(name, RENT) and #pragma variable(name, NORENT)memset() will now use up to 7 XC instructions when
     a constant length is given and the value to store is 0x00.__COUNTER__ predefined macro extension.strlen().strcat()/memchr() will use string instructions if
     they are allowed.memcpy() with a constant length was
     improved to use a simple MVC loop with only one EXecuted MVC
     if needed, or the MVCLE instruction if allowed._Decimal()
     values to (long long).memcpy() is a (non-constant)
     unsigned character, the compiler will generate  a single EXecuted 
     MVC instruction as the length cannot be longer than 256.__local__ syntax for declaring labels local
     to a scope.__attribute__ syntax for decorating types, 
     variables and functions with various attributes. defined()
     test appearing in replacement text on #if lines.0b (binary) constant extension.#define values in -E output.__asm__("string") syntax applied to externally visible
     variables and functions; to basically be the same as #pragma map.#pragma pack() facility for providing IBM LE-style, Systems/C-style
     or GCC-style structure member packing.  #pragma export and _Export now also apply to ELF visibility flags
     (to support #pragma export in z/TPF.)\a (alert) escape sequence in string constants.A', E', A" and E" as valid tokens in the C preprocessor.#pragma options(inline)/#pragma options(noinline).EXEC SQL INCLUDE to provide search command line options.#define name_length output to represent the length 
     attribute of EQU symbols when -equ=def is specified.ORDER card to place specific CSECTs at the
     beginning of the output.ddnfind() now supported in 64-bit environmentsosddinfo() function to return information about a DD name.frexpf(), frexpl(), ldexpf() and ldexpl().<netinet/tcp.h>kopen(), ksearch(),
     kretrv(), kgetpos(), ksetpos() and kclose().__setsockparm() parameter, _SP_SUBTASK, to set the 
     SUBTASK value on the EZASMI INITAPI start.memmem() function.deprecated'
     and 'packed' attributes, __typeof__(), 
__asmval() values.
strpbrk() function
__370__ as the IBM compiler does
-Imyheaders.zip
TML instruction for situations like:
            if(x & val) {
LTRs after
      certain arithmetic and logical operations.
-fenum= option and #pragma enum() 
      pragma in IBM compatibility mode.
- Support -@filenameprocessing discovered when
     reading a -@file file (i.e. recursive -@).
- Support z/OS 1.9 and 1.10 compatibility in IBM compat mode.
- Correct result type of __asmval()expressions to be unsigned.  
     Also, support 8-byte__asmval()expressions in a 32-bit compilation.
     In this situation, the resulting type of the__asmval()is 
     unsigned-long-long instread of unsigned-long.
-  New message #2147 - no function prototype given for `XXX'
     disabled by default.
- #pragma linkagespecifications are not case-specific.
- Add support for #pragma runopts(POSIX(ON/OFF))in IBM compatibility
     mode.
IMPORT and
     RENAME statements when the values are not quoted (per newer
     IBM binder documentation.)
INCLUDE
     files (in a manner analagous for -S used for AUTOCALL
     files.)
old,new option to manage common prefixes on 
     DSECT member names.
CSECTs.
@, $, and # in 
      DSECT names are now translated to a, 
      n, and d
     respectively for the struct name, just like member names.
DS C" members.
*' with '.' in ASM comments so 
     that a C-style comment embedded in the ASM source won't break our output.
CHANNEL/CONTAINER commands.
EXCI mode (-fexci), which
     is used to translate a special version of the EXEC CICS LINK
     command.
EXEC CICS INQUIRE commands.
DSIDERR, END, TASKIDERR
      conditions for use with IGNORE/HANDLE CONDITION.
START/NEXT/END keywords) for 
     several INQUIRE commands
INQUIRE TERMINAL() and 
      INQUIRE NETNAME() commands in some situations.
ctermid(), fmtcheck(), err()- and
      warn()- family, fmtmsg().
mblen(), 
      mbrlen(), mbrtowc(), mbsinit(),
      mbsnrtowcs(), mbsrtowcs(), mbstowcs(),  mbtowc(),
      wcrtomb(), wcsftime(), wcsnrtombs(), wcsrtombs(),
      wcstod(), wcstof(), wcstold(), wctomb()
btowc() and wctob() POSIX functions.
<timeconv.h> include file, and related 
      time_to_...()
      and ..._to_time() functions.
GETMAIN (previous versions did not.)  We used
      an LTGR instruction to check the GETMAIN 
      return code and need to be mindful of this change in z/OS behavior.
strtold() to round to the nearest value instead
      of rounding to zero.
volatile data references, forcing them
    to be in memory and loaded/stored at each reference.
-march=esa390 or later
    is enabled.
__int8/__int16/__int32 and __int64
    builtin types.
@crt0 labels were renamed to be upper-case @CRT0.  Lower-case
aliases are provided for compatibility.
errno values - ENOATTR, EDOOFUS, EBADMSG, EMULTIHOP, ENOLINK
    and EPROTO.
scanf() family of functions now supports more C99-specified 
conversions, including the hh, j, 
ll, t and z modifiers.  Also,
many of the older compatibility conversions were removed. 
%E and %F now follow ANSI rules.
popen()/pclose() functions for POSIX environments. 
-uu option.  
-uu operates exactly as -u, 
except that the return code will be unaffected
by unresolved references. 
XSD or 
ESD-style output files.  For some situations (but not all)
the binder will include those sequence numbers in error messages, which
can help in diagnosing binder (or PLINK) issues.
-bvse option, which causes it to do full
binding of the modules and produce a VSE "unloaded" PHASE file.
-dint option that treats 
'D'-type fields as 8-byte integers instead of 8-byte 
floating point values.
-fpack option to specify per-compilation structure member
alignment.
#include files from PDS members under OpenEdition.
-frsa=NNN to provide the user a mechanism
for defining the per-function register-save-area.
Support for 128-bit (long double) floating point data type.
#pragma linkage values can now also apply to function typedefs,
to support building function pointers that have different linkage
conventions.
-march=esa390 option; causes the compiler to use 
halfword immediate instructions, use string instructions and to 
assume 16 floating-pt registers.  Enabled by default with 
-flinux is specified.
non-constant member-designator in offsetof
-showctl option that causes PLINK to display any control cards encountered during linking.
O_CREAT and O_EXCL flags in open(2) now 
supported for dynamically allocating MVS file-system files.  Also - several 
new attribute values pertinent to specifying sizes and file attributes when
creating files.
-march=zarch is specified, the compiler will predefine
the macro _LP64 to 1; otherwise, it defines the _ILP32 macro to 1.
-fcodepage500 option on EBCDIC platforms to support
    source in IBM-500 codepage.  New #pragma filetag supported
    on EBCDIC platforms to indicate the source code code-page.
-fc370 is not specified, the compiler recognizes
    #pragma pack(pop) as a equivalent to #pragma pack(reset).
__FUNCTION__ predefined
    identifier.  This is replaced with a string constant that is the
    name of the current function.
LNAMEADDR=
    parameter was added to DCCPRLG which provides the label for
    this string.  This allows the string to be as long as necessary,
    and contain any required bytes, and also be properly demangled
    in the C++ case.  This significantly enhances the __traceback
 function.
-fc370=z1r2 option, to indicate compatibility with the
    IBM V1R2 z/OS compiler.
getprogname() and setprogname() functions were added.
__jobname(), __stepname(), __procname(), __get_cpuid(), __isPosixOn() functions.
_exit(), getpid(), getppid(), pipe(),
    getcwd(), getlogin(), uname(), fork(), exec*(), execve(),
    wait(), waitpid(), wait3(), getgid(), setgid(), getegid(), setegid(),
    getuid(), setuid(), geteuid(), seteuid(), setreuid(), setregid(),
    getpwent(), setpassent(), setpwent(), endpwent(), getpwnam(), getpwuid(),
    getgrent(), setgroupent(), setgrent(), endgrent(), getgrnam(), getgruid(),
    getpid(), getppidd(), getcwd(), getwd(), getgroups(), setgroups(),
    getpriority(), setpriority(), nice(), getpgrp(), setpgrp(),
    getpgid(), setpgid(), getsid(), setsid(), getrusage(), kill(),
    times(), __passwd(), realpath(), mmap(), mprotect(), msync(), munmap(),
    ftok(), shmat(), shmdt(), shmget(), shmctl(), msgget(), msgctl(),
    msgrcv(), msgsnd(), system(), semctl(), semop(), semget(),
    ptsname(), grantpt(), unlockpt(), tcsendbreak(), tcdrain(),
    tcflow(), tcflush(), tcgetattr(), tcsetattr(), tcgetpgrp(),
    tcsetpgrp(), cfgetispeed(), cfsetispeed(), cfgetospeed(), cfsetospeed(),
    cfsetspeed(), and cfmakeraw().
open(), read(), write(),
    close(), lseek(), unlink(), rename(), isatty(), fcntl(), rmdir(),
    mkdir(), access(), fsync(), umask(), fstat(), stat(), lstat(),
    link(), symlink(), readlink(), mknod(), mkfifo(),
    opendir(), readdir(), rewinddir(), closedir(), chown(), fchown(),
    lchown(), chmod(), fchmod(), chdir(), fchdir(), chroot(),
    truncate(), ftruncate(), pathconf(), fpathconf() utime(),
    utimes() and futimes().
-  Support for executing 31-bit and 64-bit Systems/C programs under OpenEdition (via execve().)
- New C99 <inttypes.h>file, and theimaxabs(),imaxdiv(),stroimax(),stroumax(),wcstoimax()andwcstoumax()functions
    from section 7.8.2 of the ANSI C99 standard.
- New C99 <wctype.h>and<wchar.h>and the associated
    functions from there (section 7.25 of the C99 standard), includingiswalnum(),iswalpha(),iswascii(),iswblank(),iswcntrl(),iswdigit(),iswgraph(),iswhexnumber(),iswideogram(),iswlower(),iswnumber(),iswphonogram(),iswprint(),iswpunct(),iswrune(),iswspace(),iswspecial(),iswupper(),iswxdigit(),towlower(),towupper(),wctrans(),towctrans(),wcwidth(),wctype(),iswctype(),wcstoul(),wcstol(),wcstoll()andwcstoull().
- 
The default buffer size for STDIO files was increased from
    1024 bytes to 8192 bytes, to improve I/O performance.
    //HFS:-style files use thefstat()function to determine
    optimimum buffer sizes, particularly in network situations.
- 
optimizations for multiple SEEK_ENDs on the same read-only
    non-
//HFS: files. Also, further optimizations to avoid redundant NOTEs.
sys_signame[], sys_siglist[] and sys_nsig;
DOMAIN statement as well
    as DOMAINORIGIN in the TCPIP.DATA file.
sysconf() function to provide partial POSIX compatibility
    in non-POSIX environments.
getipnodebyname(), getipnodebyaddr(), and freehostent().
strtoll(), strtoull()
are provided (the previous non-standard strtoq() and strtouq() are still provided for backwards compatibility.)
strcasestr(), wcscat(),    wcslcpy(),      wcsrchr(),  wmemcpy(),
        strlcat(),    wcschr(),    wcslen(),       wcsspn(),   wmemmove(),
        strlcpy(),    wcscmp(),    wcsncat(),      wcsstr(),   wmemset(),
        strmode(),    wcscpy(),    wcsncmp(),      wcswidth(),
        strnstr(),    wcscspn(),   wcsncpy(),      wmemchr(),
        strsignal(),  wcslcat(),   wcspbrk() and     wmemcmp().
digittoint(),  ishexnumber(), isideogram(), isnumber(),
        isphonogram(), isrune() and isspecial().
ddnfind()/ddnnext() functions which determine the DSN
    associated with a DD.
-DD=name=template which specifies a search
    pattern template to use processing an INCLUDE card with a
    DDNAME(MEM)-style name.
-elc/-xelc options in D2S to enable lower-casing of EQU/SECTION
    names.
-bfstruct/-xbfstruct option in D2S to control the generation of
    bitfield-populated structures for odd-sized data (e.g.
    XL3 will be translated to   struct { unsigned BF : 24; }.
rename() function has been added which can rename
    DSN-style files.
Also - by default, PLINK will process all defined "dummy" sections creating a PRV table. This allows reentrant programs to be generated for systems the use older versions of the IBM linker that don't support a Psuedo Register Vector larger than 4K (e.g. VSE and older CMS.)
PLINK will also eliminate duplicately defined weak functions in Systems/C programs (mostly used for C++ templates.) PLINK will remove the bytes from the generated TXT sections, signifcantly reducing the resulting load-module size.
Furthermore, PLINK (and DAR/DRANLIB) can now handle IBM C objects. When an IBM compatible object is discovered, PLINK mimics the IBM Pre-Linker. Thus, all IBM pre-linking functions can be accomplished on a cross-platform host.
#pragma weak functions in Systems/C mode.
    (The new version of PLINK will automatically remove duplicate
    weak definitions and eliminate the duplicate code from the resulting
    load module.)  This is also employed for proper handling
    of C++ automatic template instantiation.
-finstrument_functions option.  For Linux 
(-flinux), this
    decorates function entry/exit points compatibly with the normal Linux
    utilities.  In Systems/C mode, this causes macros to be generated
    a function entry/exit points.
-fstructmap/-fno_structmap option to 
enable/disable the
    "structure map" portion of the listing.
-fasmcomm option in the C compiler, which describes
    how the original C lines should appear in the generated
    assembler output.
-fasmlnno option in the C compiler.  This causes
    the codegenerator to generate comments detailing the line number
    in the generated assembler source.
-fflex, -fmin_lm_reg=X and 
-fmin_stm_reg=X options in the
    C compiler.  These control peepholing of consecutive
    Load/STore instructions.  On the FLEX/ES(tm) system, LM and STM
    instructions can perform slower than the sequence of L/ST instructions.
-fsascdigraphs in the C compiler.  
-fat enables
    support for the SAS/C(tm) @-operator; and -fsascdigraphs enables
    support for SAS/C(tm)-style digraphs.  
-fopts[=macro] and -fendmacro[=text] in the C compilers.
-fdll and -fexportall in C compiler (in IBM mode)
-fdollar option in the C compiler - allows '$' in
    identifiers.
SAR/SAC/CPYA instructions for __far/__based pointers.
#pragma ident and #ident which 
    places text characters into the generated object.
 -O option to engage optimizations.
 #pragma statements, to allow comments
    within the pragmas.
 inline" keyword, or based
    on command-line heuristics.
 <bitstring.h> header file that 
  defines bitstring manipulation macros.
 -fquiet option, which suppresses the banner messages
 -fignore_case, causes the compiler to no treat upper-case
        letters "special" in generated HLASM compatible source
 -march=zarch option:
    #pragma linkage(identifier,ALIGN4) to allow
         for older 4-byte aligned (ESA) parameter lists.
    extern "align4" linkage for C++
    -famode=any to support using Grande 
	  instructions and 64-bit integers/pointers when the 
	  execution AMODE may not 
	  be 64-bits.
 __ptr31/__ptr64 pointer type qualifiers, 
    for specifically declaring 32 (31) bit or 64 bit pointers,
    no matter what type of code is being compiled.
 -fc99 option to optionally enabled ANSI C99 features:
    _Bool data type and recognition of C99 keywords.
	declarations anywhere - including declarations in 
        for-statements
    #pragma STDC FENV_ACCESS which suppresses floating
        pointer optimizations
    -fc99 not enabled
 -fc370 now supports the following IBM builtin functions: 
	alloca, tsched, cs, 
	cds.   Thus, all of the documented IBM C builtin
	functions are now supported.
 #pragma csect ({CODE,STATIC,TEST), "name") for setting sname.
 _Pragma, guarded headers not re-read, etc...
 #pragma export supported in IBM compatiblity mode
 -flinux mode.  C and C++ code compiled with 
    -flinux is now
    directly debuggable by the Linux debugger gdb.
 -fpic and -fPIC for Linux/390 and z/Linux.
 -r (re-plink) option, allows for PLINK produced objects to be
    passed through PLINK again.
 -allow_ref option, allows for PLINK to ignore particular
    unresolved references, which will be resolved later.
   < stdbool.h>, 
  < stdint.h >, < iso646.h >.
 __malloc31/__free31 and 
	__malloc24/__free24 functions
    	providing memory allocation management within a known
	addressing range.
 < stdarg.h > now defines va_copy as specified
     in the ANSI C99 standard.  Furthemore, stdarg related macros
     now support passing integral types smaller than `int'-sized
     values, which is a common extension on other platforms.
 CVTTZ) from the
    operating system, and assumes the clock is set to UTC.
    The TZ environment variable will be appropriately set
    at program startup for non-DCALL programs.
 
__attribute__((__constructor__)) and 
__attribute__((__destructor__))
in function declarations.  The __attribute__((__constructor__)) 
specification causes the declared C function to be marked as a "constructor" function - i.e.
one that is executed by the C library before main() is invoked.
__attribute__((__destructor__)) causes the
function to be executed after main() returns, or by the exit()
function.
#pragma weak for indicating weak function and non-rent data
references.
_exit() (which is invoked by exit())  no longer does a direct
SVC 3 to end the program.  Instead, Systems/C programs now
properly release resources and simply return to the caller.
timezone() function has been added to the C library.
cabs() and hypot() functions have been added to the C math library.
#pragma export in LE370 mode (requires the Systems/ASM
assembler.)
__setsockparm() function which allows the program to define
IBM TCP/IP initialization values.
|-bar,
allow compilation of source which contain that character (e.g. codepage
037.)
__far pointer support.
__builtin_alloca().
fcntl() now supports the F_GETFL (get flags) command.
fdopen() now supported.
#pragma eject, #pragma page(n) 
and #pragma page(),  #pragma pagesize(n)
and the new -fpagesize=n option which allow the user to
tailor the compiler listing.
#pragma options()
is now implemented in the Systems/C compile, and supports some of the
options available on the command line.
__far pointer flexibility, including options to change 
the alignment of __far pointers and to specify the order 
of ALET and OFFSET.
#pragma linkage-OS function now saves and 
restores the first three words of the local save area.
O_APPEND flag in 
open()
for sequential files.
getcliendid(), selectex(), givesocket() 
and takesocket() are now
provided in the library - for implementing multi-tasking socket
programs.
lseek() to any offset within a 
text or binary read-only file.  lseek() to offset 0 is also supported
for both input and output files.
memcmp() builtin function to use a CLC when the
operand length is constant and less than 256.
ARLIBRARY and INSERT control cards.
#include_next, #warning, several GCC builtins, 
compound statements, as style generated assembly, Linux/390 entry/exit, etc...)
-@filename option on command lines for
long command lines on Windows and OS/390
__STDC__ is now defined.
__register variables are now supported at file scope; which globally reserves 
a register.
__far pointer support.
Learn more about Systems/C here.
Learn more about Dignus, LLC here.
| Contact us $Date: 2024/11/11 00:28:26 $ | Copyright © 2019 Dignus, LLC All rights reserved. |