
What is new in Release 1.80 of Systems/C
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.
What is new in Release 1.76 of Systems/C
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.
What is new in Release 1.75 of Systems/C
-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().
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; }.
What is new in Release 1.70 of Systems/C
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. What is new in Release 1.65 of Systems/C
#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. What is new in Release 1.60 of Systems/C
-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. What is new in Release 1.50 of Systems/C
__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. What is new in Release 1.41 of Systems/C
#pragma export in LE370 mode (requires the
Systems/ASM assembler.) __setsockparm() function which allows the program to
define IBM TCP/IP initialization values. What is new in Release 1.40 of Systems/C
|-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. What's new in Verion 1.31 of Systems/C
#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. What's new in Verion 1.30 of Systems/C
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 GC