[comp.lang.fortran] Fortran 8x:tabs

corbett@beatnix.UUCP (Bob Corbett) (06/27/89)

     When I asked why tabs were not included in the draft standard, Bill
Leonard replied

	 Well, one reason is that we can't get a majority
	 to agree on what a tab would mean.

That is exactly why tabs should be included in the standard.  I have yet
to see a FORTRAN compiler that did not allow tabs in at least some contexts,
and I have yet to see two FORTRAN compilers written by different authors
that treated tabs the same.  Most users do not know or do not care that tabs
are nonstandard, and liberally sprinkle their codes with them.

     Consider the case of tabs in character literals.  I know of no recent
compilers that do not allow tabs in character literals.  However,
the interpretation of those tabs varies considerably.  I have seen compilers
implement all of the following interpretations:

	1.  Tabs are treated as single characters both in the source
	    line and in the character value.  This interpretation is
	    the most common.

	2.  Tabs are treated as single characters in the character value
	    but as an advance to the next tab stop in the source line.

	3.  Tabs are converted into enough blanks before lexical analysis.
	    Therefore, in both the value in the source line, they are
	    treated as some number of blanks.

	4.  Tabs are treated as the start of line-end comments.

The last two interpretations make it difficult to create character literals
containing tabs.  All of these interpretations are permitted under the
current standard because tabs are not part of the FORTRAN character set.

     If X3J3 does not choose to standardize the meaning of tabs, it should
at least standardize the meaning of non-Fortran characters in character
literals.

                                                 Yours truly,
						 Bob Corbett
						 uunet!elxsi!corbett
						 ucbvax!sun!elxsi!corbett

hirchert@uxe.cso.uiuc.edu (07/08/89)

There has been some discussion of whether the tab character should be allowed
in Fortran 8x source.

Although many processors allow tabs, there a many different interpretations
given to them.  The problem with standardizing existing practice in this kind
of situation is that for every program that becomes standard-conforming, there
are probably two or three that are "broken" because the vendors old extensions
no longer works.

Therefore, I believe it would be a mistake to try to standardize the use of
tab in the existing source form.  However, it would probably be possible to
support tab in the new source form, since there is no existing practice to
break and the analogies to the existing fixed form extensions are largely
indistinguishable in the new source form because of the lack of specific
column boundaries.  This could probably be handled in a manner similar to the
way lower case letters are handled; i.e., if a processor has additional "white
space" characters, they are treated as equivalent to blank in essentially the
same circumstances as lower case letters are treated as equivalent to upper
case letters.

Kurt W. Hirchert     hirchert@ncsa.uiuc.edu
National Center for Supercomputing Applications