Please keep in mind that I have not seen the proposed '8x standard.
----------------------------------------------------------------------------
OPEN statement options:
Standardize LRECL: use bytes or bits, not implementation-defined units.
READONLY or the equivalent.
Default OPEN at beginning, else an option for OPEN at end.
Case insensitivity for CHARACTER options (other than file names).
Bitwise intrinsics for any type object:
Logical AND, OR, NOT, LSHIFT, RSHIFT. Cyclic (arithmetic) shifts.
LOGICAL FUNCTION IFBIT(src,bitoffset)
(returns .true. if bit is 1, else .false.)
SUBROUTINE SETBIT(src,bitoffset,<1/0> or <.true./.false.>)
(sets or clears a bit)
Byte-oriented intrinsics:
SUBROUTINE MOVBYT(src,srcoffset,dest,destoffset)
Offsets must be non-negative.
INTEGER FUNCTION IBYTE(src,srcoffset)
Return integer value of a byte.
(If hardware does not support bytes, then a byte is 8 consecutive bits.)
Standard INCLUDE syntax.
Prompt standardization (i.e. suppress CR-LF).
Call by value (for malloc).
CALL EXIT, probably without an argument. It a status value needs to be
returned, how about CALL EXITS(value). Both should be available.
Standardize unprintable characters for CHARACTER strings (To allow insertion
of characters like <escape> in a string at compile-time,
----------------------------------------------------------------
Desirable features:
Longer variable and global names. At least 16 characters.
ADDRESS type (not necessarily an INTEGER).
ADDRESSOF(any object) intrinsic.
SIZEOF(any object) intrinsic. Returns length in some standard unit,
eg. bits, of any object except a subprogram.
Malloc/free (and variants).
BYTE type (8-bit integer).
Call with subprogram address. (So subprogram names can be stored in
common, rather than be passed through an argument list).
CHARACTER*(*) FUNCTION TOASCII(string), and FROMASCII(string), to
convert strings between ASCII and internal representation.
Standardize integer status values for system & library calls.
CHARACTER*(*) with PARAMETER, eg.:
CHARACTER*(*) HELPFILE
PARAMETER (HELPFILE='/usr/myname/help.dat')
Minimum limit spec for length for a CHARACTER string.
Maybe: DO WHILE block construction.
Maybe: Standard DATE, TIMEOFDAY, EXECUTIONTIME.
----------------------------------------------------------------
Desirable compiler features:
Subscript checking compiler options.
Uninitialized variable checking (like old Waterloo WATFOR/WATFIV).
Would only be needed for longer data objects.
FLAG_NONSTANDARD - warn about non-standard construction but keep going.
Intrinsics for machine constants - like those in cmlib/machdep.
Transfers into a loop or block flagged as illegal at compile-time.
This would include the "ambiguous" nested loop code discussed
at length in comp.lang.fortran.
Make '_' or something similar a legal alphabetic character.
Documentation features:
Require that extensions to standard be highlighted in documentation.
Require that deficiencies from standard be documented.
Desirable environmental features:
Interactive debuggers (for interactive systems). The debugger does
not have to be standardized - it only has to exist and be
usable from Fortran.
Fortran binding for all system calls and standard libraries.
--
-----------------------------------------------------------------------------
Larry Weissman Center for Bioengineering WD-12
lar...@nsr.bioeng.washington.edu Univ of Washington, Seattle, WA 98125
Hmm...Seems to me that you have been programming in C and just switched to
Fortran (Or the other way around?). The only things you need to ask for
is for recursion, stdio, printf...(All sorts of C stuff...)
ac...@skat.usc.edu (Alejandro Liu)
(Simple .signature, $CHEAP$)
Kurt W. Hirchert hirc...@ncsa.uiuc.edu
National Center for Supercomputing Applications