This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tutorials:fortran [2014/01/10 17:38] papa [Hello World] |
tutorials:fortran [2022/03/19 09:52] (current) papa [CPU/Elapsed time report on program termination] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== FORTRAN-20 Compiler Tutorial ====== | ||
+ | **FORTRAN-20** is a FORTRAN compiler for TOPS-20. It supports the FORTRAN-77 standard (ANSI X3.9-1978 American National Standard Programming Language FORTRAN) with extensions and additions. | ||
+ | |||
+ | The purpose of this tutorial is to document the peculiarities of using FORTRAN-20 on TOPS-20 as opposed to other FORTRAN implementations on other operating systems; to highlight useful FORTRAN-20 extensions and additions that are not found in standard FORTRAN-77; and to briefly introduce the FORTRAN-77 programming language for those unfamiliar with it. | ||
+ | |||
+ | The order of presentation moves from more to less specialized and technical which runs counter to traditional organization, | ||
+ | |||
+ | ===== Peculiarities ===== | ||
+ | |||
+ | ==== CPU/Elapsed time report on program termination ==== | ||
+ | |||
+ | The FORTRAN compiler adds a report on CPU and elapsed time used by the program that prints at the end of every program run, like: | ||
+ | |||
+ | CPU time 0.08 Elapsed time 0.09 | ||
+ | |||
+ | This message can be suppressed by adding the following line to your program source: | ||
+ | |||
+ | CALL QUIETX | ||
+ | |||
+ | ==== DATE subroutine bug ==== | ||
+ | |||
+ | Although the TOPS-20 operating system as a whole survived the Y2K crisis, the FORTRAN DATE subroutine did not fare as well. | ||
+ | |||
+ | DATE is supposed to return a ten-character string representing the current system date with the format: | ||
+ | |||
+ | '' | ||
+ | |||
+ | Where: | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | However, since the year 2000, the DATE has set the '' | ||
+ | |||
+ | This renders the year portion of DATE's output useless for most purposes. A work-around is to program a date subroutine in another language that correctly processes the TOPS-20 system date (such as MACRO assembly language) and call that subroutine from your FORTRAN program instead of the FORTRAN DATE subroutine. | ||
+ | |||
+ | ==== Input/ | ||
+ | |||
+ | FORTRAN uses logical device numbers for transmitting data to and from various input and output devices. In FORTRAN-20, some of these logical unit numbers were assigned to specific equipment that was common in the computer rooms of the 1970s and '80s but are not available in TWENEX.ORG' | ||
+ | |||
+ | When you are coding input/ | ||
+ | |||
+ | The default logical unit (specified by " | ||
+ | |||
+ | ^ Statement | ||
+ | | ACCEPT | ||
+ | | PRINT |3 (Line printer)|Not available. Do not use.| | ||
+ | | PUNCH |7 (Paper tape punch)|Not available. Do not use.| | ||
+ | | READ |2 (Card reader)|Do not use default. Specify unit 5 for user keyboard input or other unit for file input.| | ||
+ | | TYPE |5 (User teletype)|Recommended for user terminal output.| | ||
+ | | WRITE |3 (Line printer)|Do not use default. Specify unit 5 for user terminal output or other unit for file output.| | ||
+ | |||
+ | Below is a list of FORTRAN-20 logical unit assignments. For file input or output, you may use any of the units assigned to disk (0, 1, 20-24, 30-99). If you do not specify a file name when you open the logical unit, FORTRAN-20 will use the default file name (in your currently connected directory) corresponding to the unit you are opening as shown in the table. | ||
+ | |||
+ | ^ Unit ^Device^Default filename^Usage^ | ||
+ | | 0 |DSK|FOR00.DAT|Disk| | ||
+ | | 1 |DSK|FOR01.DAT|Disk| | ||
+ | | 2 |CDR|FOR02.DAT|Card reader| | ||
+ | | 3 |LPT|FOR03.DAT|Line printer| | ||
+ | | 4 |CTY|FOR04.DAT|Console teletype| | ||
+ | | 5 |TTY|FOR05.DAT|User teletype| | ||
+ | | 6 |PTR|FOR06.DAT|Paper tape reader| | ||
+ | | 7 |PTP|FOR07.DAT|Paper tape punch| | ||
+ | | 8 |DIS|FOR08.DAT|Display| | ||
+ | | 9 |DTA1|FOR09.DAT|DECtape| | ||
+ | | 10-15 |DTA2-7|FOR10 - 15.DAT| | ||
+ | | 16-18 |MTA0-2|FOR16 - 18.DAT|Magnetic tape| NO | | ||
+ | | 19 |FORTR|FOR19.DAT|Assignable device| | ||
+ | | 20-24 |DSK|FOR20 - 24.DAT|Disk| | ||
+ | | 25-29 |DEV1-5|FOR25 - 29.DAT|Assignable devices| | ||
+ | | 30-99 |DSK|FOR30 - 99.DAT|Disk| | ||
+ | |||
+ | ===== Extensions and additions ===== | ||
+ | |||
+ | This section introduces potentially useful features that are unique to FORTRAN-20 and not included in the FORTRAN-77 standard. | ||
+ | |||
+ | //(More to come: structured programming statements, in-line comments, ...)// | ||
+ | |||
+ | ===== FORTRAN overview ===== | ||
+ | |||
+ | This section gives an brief overview of the FORTRAN-77 programming language for programmers with at least some experience with one or more other programming languages. It is not intended to be a comprehensive description or tutorial. Readers desiring a more complete introduction to FORTRAN are recommended to read the //Fortran 77 Tutorial// linked in the References section below. | ||
+ | |||
+ | //(More to come: FORTRAN-77 cheat sheet, idiosyncracies (line layout, ...).)// | ||
+ | |||
+ | ===== Hello World ===== | ||
+ | |||
+ | A sample program for the FORTRAN-20 compiler. | ||
+ | |||
+ | < | ||
+ | program hello | ||
+ | type *, ' Hello, World!' | ||
+ | stop | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | (Text on each line is preceded by six spaces.) | ||
+ | |||
+ | ===== References ===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | [[http:// |