Tentative suggestions on the overall structure
of the guide by William B. Clodius
**********************************************
1 - Overview of Fortran
1-1 Short history of Fortran
1-2 Standard and non-standard Fortran
1-3 Forbidden/esoteric/obsolete Fortran
1-4 Comparison between Fortran and C (any other languages?)
2- Overview of Programming
2-1 General programming rules
2-2 Program layout
2-3 General Programming techniques
2-4 Program input and output
2-5 Recursion
2-6 Debugging ...
2-7 Code optimization
3- Overview of Fortran Programming
3-1 General programming rules?
3-2 Fortran code layout
3-3 (not ready yet) Syntax restrictions
3-4 Fortran Pitfalls & debugging
3-5 Fortran specific optimization
3-4 FORTRAN/C interoperability
4 - Fortran Data Types
4-1 A Fortran specific problem
4-2 Data types
4-3 Constants
4-4 Passing arrays to subprograms
4-5 Variable size arrays
4-6 Array Storage order
4-7 Using strings and character arrays
4-8 Dynamic memory allocation and pointers
4-9 (not ready yet) Memory management
5 - Fortran Program Structure
5-1 Programs
5-2 Procedures
5-3 General argument passing semantics
5-4 Intrinsic functions/Optimized libraries
5-5 Modules
5-6 DO and other loops
5-7 IF and SELECT CASE
5-8 (not ready yet) Parallel Fortran
6 - Fortran I/O
6-1 Logical units and files
6-2 Formatted / List-directed / Unformatted I/O
6-3 Using I/O formats
6-4 Internal files - ASCII/BINARY conversion
6-5 FORTRAN carriage control
6-6 (not ready yet) VMS I/O
7 - The environment ...
General and particular suggestions by Clive G. Page
***************************************************
General remarks:
1) More references to Unix generally, and to the
use of Fortran on PCs.
2) Updating to cope with Fortran90 - or at least
comments added making clear which sections
apply to which version.
General areas where additions are needed:
o Reference to Solaris (since SunOs is now obsolescent)
o Reference to Linux and g77 (available free for PCs and
perhaps soon Alphas as well)
o System access routines (often subject of Usenet questions)
e.g. Posix 1003.9
o libU77 for g77 (written by Dave Love of Daresbury Lab)
Possible extra programming topics:
o Block data units (only f77)
o Treatment of the backslash '\'
o Error and exception handling (e.g. inherited status
convention)
o How to use f90 modules
Possible omissions:
o Perhaps some of the sections on file formats, FTP,
etc which are not very specific to Fortran programmers?
Possible additions:
o How to convert archaic Fortran.
A lot of what is now called "legacy" code is still
useful but it uses things like REAL*4, Q format,
ENCODE/DECODE, %val, READ and TYPE statements, etc.
It would be useful to collect together in one place
hints on what to do about all the features of earlier
proprietary Fortrans which did not make it into the
Fortran90 Standard.
Much of this information is already in the Guide,
but it would be nice to have it collected into
one area, and made more comprehensive.
o The second area where people often have problems is
in calling various "system" routines (get command-line
arguments, rename file, get date/time, put string on
screen in specified row/column, etc.).
I have started a compilation of these routines, which
are unfortunately very system-dependent. But there
are solutions for most Unix systems, including Linux,
for g77, for systems with Posix 1003.9 implemented,
and for many other compilers.
If my compilation reaches a critical mass, it might
make a useful section of the Guide. You already
have some of these things in it, but again a
comprehensive collection would be invaluable to
practicing programmers.
From the book by A. Colin Day
*****************************
Flags
Table translation
Buffers
Sparse vectors and matrices
Hashing, hash tables
Identifying words in text
Stacks
Recursion
Queues (implemented by a circular buffer!),
double-ended queues, chained lists,
doubly chained lists
Basic sorting
Symbol-state tables (finite automata - a matrix indexed
by current state and input data,
gives the next state, can call
"action routines".
*Send your comments*
Return to contents page