home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
zip
/
language
/
bcf.lzh
/
BCFMAN.TXT
< prev
next >
Wrap
Text File
|
1991-03-05
|
22KB
|
540 lines
*******************************************
* *
* BC-FORTRAN77 Version 1.3C *
* *
* Copyright © 1990 *
* *
* Andre Koestli *
* Martin-Luther-Strasse 63 *
* W-7000 Stuttgart 50 *
* Federal Republic of Germany *
* *
*******************************************
1. PREFACE
===========
About this text
---------------
The following text is a short introduction to the BC-FORTRAN77 Version C
development system, written by Andre Koestli. He holds the copyright of
this product, but does allow everybody to use it for noncommercial and
nonmilitary applications.
Florian Nold (email address MEHA@DFRRUF1.BITNET) translated the original
german documents into english and has provided a supplementary dictionary
explaining the error and warning messages (see appendix). Many thanx to
Mr. Ken McNorton for reading and correcting this text. The original
german introduction (file lies.txt) has also been included.
If you find any mistakes in this english translation please write them to
Florian Nold. Errors and suggestions to the BC-FORTRAN77 system itself
have to be send to the author A. Koestli himself, since Florian Nold has
NO connection whatsoever with him.
Preface by the author of BC-FORTRAN77
-------------------------------------
Version 'C' of BC-FORTRAN77, consisting of the following 7 described
files, was completely developed by Andre Koestli. I, Andre Koestli,
allow the general use of Version 'C' for noncommercial applications.
All rights remain entirely by me. I do not permit the sale of Version 'C'
under any circumstances, not even in connection with other products.
This text may not be changed and it has to be included with every copy
of Version 'C'. For commercial applications Version 'P' must be used
(see below).
It is STRICTLY forbidden to use BC-FORTRAN77 Version 'C' for any military
purpose or research.
March 1990, A. Koestli
BC-FORTRAN77 version 'C' is part of an extensive development system
called version 'P' (see below). The purpose of version 'C' is to make a
FORTRAN77 compiler available for programming courses. Another advantage
is that BC-FORTRAN77 is available for Amiga, Atari ST and MS-DOS
computers.
2. BC-FORTRAN77 version 'P'
============================
BC-FORTRAN77 version 'P' is a large development system, consisting of a
compiler, linker, editor, precompiler and a version managment system,
which are all embedded in a user friendly desktop shell. This shell only
compiles source, which has been changed since the last compiler run.
So even large programs, consisting of hundreds of subroutines, will be
processed in a few seconds. Version 'P' supports the use of a mathema-
tical coprocessor and special 68020 commands.
Version 'P' includes a comfortable debugger for interactively testing
programs. Supplementary libraries (e.g. plot output) are also included.
The price of version 'P' is 350 DM (incl. manual, 150 pages). To order
verison 'P' please write directly to A. Koestli. At the moment Version
'P' is only available for ATARI ST and Amiga, not for MS-DOS machines.
3. BC-FORTRAN77 Version C
==========================
BC-FORTRAN77 version 'C', which is described in the rest of this text,
includes the following files:
LIES.TXT original german version of this text, written by Andre
Koestli, the author of BC-FORTRAN77.
('lies' is the german word for 'read')
BCFMAN.TXT this text
BCFMAN.TEX TeX/LaTeX version of this text
BCF.TTP the compiler
BCL.TTP the linker
BCRTSY.B the runtime library
MATHLIB.B library (incl. FORTRAN77 standard functions)
Be sure to include ALL these files without any changes when copying
BC-FORTRAN77.
Using a command-line-interpreter or a shell (e.g. gulam) would be the
best way to work with BC-FORTRAN77. If you don't have any shell, you can
start BC-FORTRAN77 from the desktop. Filenames and options can be entered
in the dialogbox, which appears after double clicking the program icons.
4. The Installation
====================
The simplest way is to put all the files in the same directory. If you
prefer to store the binaries, sources, etc. in distinct directories, put
BCF.TTP and BCL.TTP in the directory, where the shell would search for
the bin-stuff.
BCRTSY.B and MATHLIB.B should be moved to the directory \BC of the actual
drive.
5. The Compiler BCF.TTP
========================
To invoke the compiler enter
BCF [-options] filename
or
double click on the BCF.TTP-icon on the desktop and enter options
and filename.
If the filename does not contain any point, the extension .F will be
appended. In any case the compiler will write its output to the file
filename.B.
Examples:
BCF -D TEST.F compile the file TEST.F to TEST.B using the
debug-option
BCF TEST SUB compile the file TEST.F to TEST.B and SUB.F to
SUB.B
BCF TEST.X compile the file TEST.X to TEST.B
Compiler Options
----------------
-D Debug, equivalent to -BVL.
-B deBugcode, uses -H implicit, generate code to check
arraybounds and substrings.
-H parcHeck, generate code to check parameter lists and stack
overflow.
-V Varlist, generate list of variables used by the debugger
-L Lineslist, generate list of linenumbers for the debugger
-U Uppercase, convert lowercase characters to uppercase
(except character constants and FORMAT statements).
If this option is not specified the compiler will treat
xy, xY, Xy, XY as 4 different variables !
-F Freeinput, allows Free-Form-Input-Format (not standard !)
-P Protocol, print compiler listing.
-W Wait for RETURN key when compiler has finished.
Language-Extensions and Restrictions
------------------------------------
BC-FORTRAN77 supports the fully FORTRAN77 standard defined by ANSI/ISO.
This standard is often ignored by some special features. I do not
recommend the use of these extensions, because they do not comply with
the ANSI standard and are therefore not precisely defined.
The most important specialities are:
INTEGER*1 8 bit INTEGER
INTEGER*2 16 bit INTEGER
INTEGER*4 same as INTEGER
LOGICAL*1 8 bit LOGICAL
LOGICAL*2 8 bit LOGICAL
LOGICAL*4 same as LOGICAL
IMPLICIT NONE turn off all implicit typedefs
COMMON /adr/ absolute addressed COMMON, adr may be a constant
or a simple variable
EQUIVALENCE() between CHARACTER and other types and mixing in
COMMON blocks
recursive subroutine calls
max. length of names: 8 chars. (standard 6 chars.)
The most important restrictions are:
32kB code per subroutine
32kB SAVE/DATA per subroutine or BLOCK DATA
700 subroutines per file
500 different COMMON blocks per file
There are also some restrictions, which would cause a compile-time-error,
if subroutines are unreasonable large. In most cases the 32kB limit would
be exceeded anyway.
6. The Linker BCL.TTP
======================
To invoke the linker just type
BCL [-options] filename ..
or click the BCL.TTP icon on the desktop and enter options and filenames.
If the filename doesn't contain any point, the extension .B will be
appended. The executable program will be stored using the name of the
first file and the extension .PRG. If the source contains any mathemati-
cal standard function calls the file MATHLIB.B must be specified too.
The runtime system BCRTSY.B will be linked automatically.
Example:
BCL -S16 TEST SUB MATHLIB
or
BCL -S16 TEST.B SUB.B MATHLIB.B
will link the files TEST.B and SUB.B. The name of the resulting execu-
table will be TEST.PRG (stacksize 16kB).
Linker Options
--------------
-Sn Stacksize of the resulting executable is set to n kB.
If this option is not specified, a very large stack will be
assumed. The stack is used to store all local variables/
arrays of nested subroutine calls.
-O Optimize: remove unused functions in order to reduce code
size
-P Protocol: generate listing of COMMON blocks and program
modules
-W Wait for RETURN key when finished
Restrictions
------------
The most important restriction is the RAM size: the generated program
file (without COMMON blocks and stack) may be as large as the largest
remaining free memory block after loading the linker. On the other hand
it's also possible to generate a program with very large COMMON blocks
or stack, that runs out of memory while loading or executing.
The max. number of subroutines is restricted to 3000, the max. number of
COMMON blocks is 1500.
The Runtime System BCRTSY.B
---------------------------
The runtime system BCRTSY.B contains stuff needed by every BC-FORTRAN77
program. Therefore it will be linked automatically by BCL.TTP.
BCRTSY.B consists of:
arithmetic routines
32 bit INTEGER multiplication/divison
REAL arithmetics
DOUBLE PRECISION arithmetics: in order to increase perfor-
mance a special internal floating point number representation
is used. These subroutines are much more tuned to speed than
to accuracy.
REAL: 6 decimal digits, 32 bit, 1 bit sign, 23 bit mantissa,
8 bit exponent
DOUBLE PRECISION: 13 decimal digits, 64 bit, 1 bit sign,
47 bit mantissa, 16 bit exponent
Math. coprocessor is not supported by Version 'C'.
CHARACTER routines
I/O routines
Debugger: a tiny debugger is included too. After every error
message the debugger waits for your reaction.
The debugger may also be activated by pressign the
ALT-key, to stop a running program. The following command
keys are supported:
S print the subroutine call Stack and the line
number (if the compiler option -L has been
specified)
V print the Variables and their contents of the
actual subroutine (only if the compiler option
-V has been specified)
Z terminate program
space continue, in the case that no runtime error has
occured. If you press the ALT-key simultaneously,
only the next program step will be executed
(e.g. next label, subroutine, ELSE, ENDIF, DO, )
The Standard Library MATHLIB.B
------------------------------
MATHLIB.B contains all the mathematical functions described by the ANSI
standard. If the linker issues an error message like 'External nicht
gefunden: f_SQRT' (german text for 'external not found') you have to
specify MATHLIB.B when running the linker BCL.TTP.
Starting your Program
---------------------
Every executable program produced by BCL can be started like any other
program from the desktop or a shell.
7. Error Messgages
===================
The error messages produced by the compiler, the linker and the runtime
system should be self explainatory and are supplemented with the
following short list of messages. A complete list of errors (26 pages of
the version P manual) would exceed this short description.
IO-Errors
---------
Input-Output-Errors. If you specify the IOSTAT parameter, you get the
error number (see below) for the operation attempted in the IOSTAT data
item.
number description
-1 end of file (EOF) reached
-2 EOF reached while processing a record
1 filenumber already used (OPEN)
2 too many files (OPEN), max. 32 files
3 filename too long (OPEN), max. 31 characters
5 filenumber (unit) not opened. Only the units 5 and 6 are
preconnected and can be used without issuing an OPEN
statement
6 formatted / unformatted I/O contradiction
7 REC-parameter specified for a sequential access file
8 BACKSPACE, REWIND, ENDFILE not allowed for this file
(e.g. AUX: or PRN:)
10 internal I/O only formatted
20 integer overflow processing an input
21 data error occured while processing list-directed input,
e.g. missing quote-character for strings
22 unexpected EOF
23 record too long
24 read error processing UNFORMATTED SEQUENTIAL input
30 format code and I/O-listelement do not fit together
INTEGER needs I-format code
REAL, DOUBLE PRECISION (COMPLEX) need one (two) F-, G-, E-
or D-format code(s)
LOGICAL need L-format code
CHARACTER need A-format code
31 format code L: T or F expected (input)
32 format code I: unexpected character found (input), only
blanks, signs and numerals are allowed
33 format code E, F, or D: unexpected character (input), only
blanks, signs, numerals, decimal-point, E, e, D or d are
allowed.
34 format code contains too many (
35 format code contains too many )
36 forbidden position for numeral series in format code
37 unknown format code
38 missing . in F, E, G or D format code
39 4Htext or 'text' in READ format code
FORTRAN66 allows to read a text for the format code, not
allowed in FORTRAN77
40 exponent to high for given format code
42 format code too long, max. length of internal record buffer
80 char.
43 internal I/O, record too long
44 TL, record too long. If the recordlength exceeds the length
of the internal record buffer, left tabbing will not work
45 field length 0 (zero) in I, L, F, E, G or D format code
TOS Errors
----------
in general: 1000 + n --> TOS-Error -n
number description
1002 drive not ready
1004 CRC error (cyclic redundancy code)
1010 write error
1011 read error
1013 disk is write protected
1014 media change detected
1016 bad sector
1017 put disk into drive
1033 file not found
1034 path not found
1035 too many files
1036 access not possible (write protected ?)
1039 out of memory (RAM)
1040 wrong memoryblock address
1046 wrong drive character (e.g. K)
1066 wrong format of program file
8. Problems
============
If you find any bug in BC-FORTRAN77 (compiler, linker or libraries)
please inform the author Author A. Koestli.
As you will appreciate, the author can't offer any update service or
advise support by phone for this product, in contrast to the commercial
version 'P'.
**********************
* *
* APPENDIX *
* *
* Small dictionary *
* *
**********************
German English
anfang beginning
COMMON aus BLOCKDATA verlaengert COMMON extended with BLOCK DATA
COMMON in mehreren BLOCKDATA COMMON in several BLOCK DATA
Character Konstante erwartet expected character constant
Dataliste laenger Wertliste datalist longer than valuelist
Dataliste zu lang datalist too long
Deklaration hier nicht erlaubt declaration not allowed at this point
Dimension fehlt fuer missing dimension for
Doppelt twice
drucke print
ELSE ohne IF oder nach DO oder ELSE ELSE without IF or after DO or ELSE
ENDIF ohne IF oder nach DO ENDIF without IF or after DO
Erst Initialisieren mit first initialize with
erwartet / erwartet nach expected / expected after
Exponent zu gross exponent too large
External Widerspruch contradiction in external
External/Common nicht gefunden external/COMMON not found
falsch wrong, invalid
Falsche Version wrong version
Falscher Name in Function wrong name in function
Falscher Name in Subroutine wrong name in subroutine
Falscher Operator wrong operator
Falscher Parameter wrong parameter
Falscher Typ wrong typ
Falsches Symbol in Dataliste wrong symbol in datalist
Falsches Symbol in Index wrong symbol in index
Falsches Wertelement wrong value
Falsches Zeichen wrong character
Fehler error
Fehler (Nr.) Nach [] in Zeile error (nr.) after [] in line
Fehler beim Eroeffnen von ... error opening file ...
Fehler beim Laden load error
Fehler beim Lesen read error
haupt main
hier nicht erlaubt not allowed here
Illegale Konversion illegal conversion
illegale linke Seite illegal left side
Index ausserhalb index beyond
Index inkorrekt index wrong
Indexanzahl index quantity
Indexliste indexlist
Integer Konstantenausdruck erwartet integer constant expression expected
Integerkonstante erwartet interger constant expected
Integerueberlauf integer overflow
ist is
ja yes
Kein Code no code
Kein Input no input
Kein Objfile no object file
Keine Reloc.Info no relocation info
Konstanten constants
Label doppelt label used twice
Label erwartet label expected
Label fehlt label missing
Laengenfehler in Objfile length error in objfile
Laengenwiderspruch COMMON length mismatch of COMMON blocks
Lesefehler read error
Liste list
mehrfach benutzt used twice
Modul doppelt module found twice
Module geloescht module deleted
Name zu lang name too long
neu new
Nicht definiertes Label label undefined
nicht gefunden not found
Nicht genuegend RAM frei not enough RAM
Nicht genuegend Speicher not enough memory
Nicht implementiert not implemented
Nicht lokal not local
Nummer zu gross number too large
Nur Variable/Array only variable/array
oder or
offener string string not closed
Parameteranzahl number of paramters
Parameterliste parameter list
Parameterliste fehlt parameter missing
Parametername erwartet parameter expected
Parametertyp parameter type
Schreibfehler write error
Speicher memory
Sprung > 32kB branch > 32kB
Statement Nr. erwartet statement nr. expected
Statement nicht erkannt statement not recognized
Statement zu lang statement too long
String zu lang string too long
Substring ausserhalb substring beyond limit
Tabellenueberlauf table overflow
Typen nicht kompatibel types not compatible
Typunkompatibilitaet type incompatibility
Typwiderspruch Dataliste/Wertliste type mismatch datalist/valuelist
Ueberlauf Codetabelle codetable overflow
Ueberlauf Objektspeicher object-memory overflow (?)
Unbekannte Option unknown option
Ungerade Adresse odd memory address
Variable Dimensionierung varible dimensions
Variable erforderlich nach varible needed after
warte wait
Weiter continue
Wertliste laenger Dataliste valuelist longer than datalist
Widerspruch Common/External Common/External mismatch
Widerspruch fuer mismatch in
Wiederholungsfaktor -+ Zahl repetition factor -+ number
wort word
zahl number
Zahl oder String erwartet number or string expected
Zu viele too many
Zu viele Comdecks too many Comdecks
Zu viele Levels too many levels