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().
NOTE
s.
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