fortran 90 language manual

fortran 90 language manual


File Name:fortran 90 language manual.pdf
Size: 2886 KB
Type: PDF, ePub, eBook
Uploaded: 8 May 2019, 22:36
Rating: 4.6/5 from 755 votes.
Last checked: 8 Minutes ago!
eBook includes PDF, ePub and Kindle version
In order to read or download fortran 90 language manual ebook, you need to create a FREE account.

✔ Register a free 1 month Trial Account.
✔ Download as many books as you like (Personal use)
✔ Cancel the membership at any time if not satisfied.
✔ Join Over 80000 Happy Readers
fortran 90 language manual

Please review prior to ordering. That version of the language was later called FORTRAN 66. FORTRAN 66 quickly developed into the most important programming language for the development of engineering and scientific applications. In 1978, the language was redesigned and standardized again and called FORTRAN 77. However, this FORTRAN version was not yet a modern language as far as software engineering and programming methodology were concerned. In 1991, a new version of the language was standardized. Its name is Fortran 90. This version is a powerful tool, in fact it is closer to the state of the art of high level problem oriented programming languages than other famous languages that are used for the same area of application. The next revision of the language is planned for 1995; it will be a minor revision of Fortran 90. The next major language revision is planned for the year 2000.Please review prior to ordering. Fortran 95 language features. It contains information on languageAll Rights Reserved. A.2 Deleted Language Features in Fortran 95. A.3 Obsolescent Language Features in Fortran 95 B.2 The ENCODE and DECODE Statements. B.3 FIND Statement. B.4 Alternative Syntax for the PARAMETER Statement. B.5 VIRTUAL Statement. B.6 Alternative Syntax for Octal and Hexadecimal Constants. B.7 Alternative Syntax for a Record Specifier. B.8 Alternative Syntax for the DELETE Statement. B.9 Alternative Form for Namelist External Records. B.10 The DIGITAL Fortran POINTER Statement. B.11 Record Structures B.11.1.2 Substructure Declarations. B.11.1.3 Union Declarations B.11.3 References to Record Fields. B.11.4 Aggregate Assignment D.2 Model for Real Data. D.3 Model for Bit Data E.2 QuickWin Routines (WNT, W95). E.3 Graphics Routines (WNT, W95). E.4 Dialog Routines (WNT, W95). E.5 National Language Support Routines (WNT, W95). E.6 Miscellaneous Run-Time Routines (WNT, W95). E.7 DFCOM Routines (WNT, W95). E.8 DFAUTO Routines (WNT, W95) G.

fortran 90 language reference manual, fortran 90 language manual, fortran 90 language manual pdf, fortran 90 language manual download, fortran 90 language manual user, fortran 90 language manual software.

2 High Performance Fortran Language Extensions B-1 Memory Map of Structure APPOINTMENT. C-1 Graphic Representation of the ASCII Character Set. C-2 Graphic Representation of the DEC Multinational Extension to the ASCII Character Set E-1 Summary of Portability Routines (WNT, W95). E-2 Summary of Quickwin Routines (WNT, W95). E-3 Summary of Graphics Routines (WNT, W95). E-4 Summary of Dialog Routines (WNT, W95). E-5 Summary of NLS Routines (WNT, W95). E-6 Summary of Miscellaneous Run-Time Routines (WNT, W95). E-7 Summary of DFCOM Routines (WNT, W95). E-8 Summary of DFAUTO Routines (WNT, W95). Sign in here. Please consider upgrading to the latest version of your browser by clicking one of the following links. This manual is not a Fortran or programming tutorial. It also describes the effects of allocation and deallocation. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. There are, however, some very handy advantages which one does not want to miss if one is familiar with the language: By the time, there are Fortran compilers available for small desktop machines as well as for high-performance Cluster systems, producing all nicely running code on the same code basis. Following the Fortran Standard, it is impossible to have a pointer without a type. Converting a pointer from one type to another is not possible. This is, however, nonstandard.

A pointer is a descriptor pointing either to an object or to an array with elements of a specific type.This allows the definition of general classes like lists. Lines are restricted to 132 characters. If necessary, strings are filled with spaces. Fortran strictly differs between functions and subroutines.It is also possible to print multiple pieces of data, e.g., some strings, integers and floating point values: Comments always last until the end of the line.Typical variables are integer variables, floating point variables, boolean variables, character variables and strings. The following instructive example demonstrates the definition. String of length 10Dynamic-length strings are not possible. Strings are always filled with spaces. So in the above example, the variable sstring will actually be assigned the valueThe actual implementation is system-dependent, however, the following definitions hold for most computer systems: So, if fsystem is included, one can use the following declarations: As indicated above, strings in Fortran are realised as character blocks with fixed length. It is impossible with standard methods to realise dynamic strings (although there exist some libraries in the web which imitate such strings using dynamic memory allocation and character arrays). Let us assume, we define a string in the following way: Instructive example: Later on, a type(.) command can be use to declare a variable of this structure.Similar to MatLab, ranges of entries are allowed.Array of 10 integersArray of 10 floating point valuesThe following example defines a 2-dimensional integer and a 3-dimensional floating point array with fixed size.Array of 20x10 integersArray of 30x20x10 floatsAn initialisation like Here an instructive example: The RESHAPE command reshapes a one-dimensional array to a multidimensional array using a row-wise ordering of the elements. Example: They can dynamically be allocated during runtime.

Allocates an array with 10 entriesRelease memoryAllocates an array with 10 entriesSo allocatable arrays are perfect for large temporary data inside of a subroutine. Allocates 20x10 entriesAny variable can be defined to be a pointer to another variable of the same type. This includes pointers single values as well as pointers to arrays. Every variable where the pointer may point to must be declared with a target quantifier. The nullify command or null() target can be used to clear the pointer. Here an instructive example: Can be a target of a pointerPointer top an integerThis is similar to the concept of allocatable arrays, however, memory is NOT automatically deallocated. Here an example for allocating a single integer: Allocates 10 integersThe following instructive example demonstrates the typical syntax.A linebreak would start a new block. So a code like the following is NOT valid: This is very similar to an IF clause. An example reads as follows: Iterations can be skipped using the cycle command and left via the exit command.The label must be releated at the end do. A module is a separate program part that can be seen as a small, closed library.These commands are optional, however, strongly advised. This should be avoided in good programming style! Without this command, all types, subroutines, functions, etc.A simple extension of the above example reads as follows: This reads as follows: So the use of the intent specifier (see below) is strongly advised to prevent mistakes in the code. Functions are parts of the code that must return a value given by a special return variable. There are two possibilities to define a function, either without or with specified return variable. Return variables can be declared, however, they must not contain an INTENT qualifier. If no return variable is declared, the name of the function defines the return variable. Here an example: No INTENT for Im!The key words real before function defines the return value.

The name of the return variable is defined as Im with the result qualifier. Note that the declaration of Im in the parameter list does not contain any IMPLICIT attribute - this is not allowed! These commands return a modifier which can be specified in the declaration of a variable and which leads to a modified data type with at least the specified accuracy. Here an example: For example, the following code casts an integer i into a double and prints it in a loop: The command There are three possible qualifiers: However, there is an additional benefit: Parameters declared as intent(in) are allowed to be defined by a constant in the call. Here an example: So for a subroutine like this one, Assume that a subroutine is declared without the INTENT qualifier as follows: However, Having defined myerrsub like this, one could use the routine in an errorneous way as follows: The length is automatically adjusted to the length of the string used in the call. Example: This is implemented by the interface command. Here an example: On a call, the compiler automatically determins which routine to use. Example: These values are realised in the moment, the structure is created -- either as a variable or as a result of an INTENT(OUT) in a subroutine. Example: As a consequence, the output of the routine will be INTENT(OUT) triggers the initialisation. So a very simple initialisation routine for complex numbers could be written as follows: This will trigger initialisation as prescribed in the structure. So in a main program like the following, Optional parameters are declared using the OPTIONAL attribute in the declaration of a variable. Such variables must always be at the end of the parameter list of a subroutine. Whether or not an argument is present in the call of the subroutine can be checked with the command PRESENT. Here an example: The calculated value is written to dfinal if specified.

The routine can be called in a main program with or without the optional arguments: Optional parameters can be arbitrarily omitted in the parameter list. However, if optional parameters are omitted, one has to specify the actual parameter name for any additional optional parameter.Here an example: Without this attribute, the compiler usually does not guarantee that a recursive call leads to the desired result. Example: However, one needs the special function declaration style with a separate return parameter as the function keyword is only allowed to be preceded by one other keyword: Such embedded subroutines have access to all variables of the outer block.There has been more than one compiler failing in a proper handling of this construct, and the usage quickly leads to confusion to the reader and hard problems in debugging mistakes. Avoid it! A wrong access makes the CPU jump through the memory, leading to a slower program. So the following loop is fast: Here an example: The definition Iarray2D(:,2) forms a pointer to a subarray of Iarray2D and passes it to printsubarray. This call is very fast. Such a call invokes a pass by value: This is costly and may lead to a stack overflow error if the stack is not large enough. Furthermore, if the parameter is not declared as INTENT(IN) but as INTENT(INOUT), Fortran creates a local copy, calls the subroutine and copies the values back to the original array after the subroutine is finished.In the following example: For the main program, it would be enough to include In Fortran, overlapping arrays in parameters are not allowed. This mistake is not detected by the compiler and will usually give strange results, depending on how much the compiler tries to optimise the code. The routine CopyVector should copy the array Iarray1 to the array Iarray2: The two parameters in this call overlap which is not allowed by the Fortran Standard.

The loop in CopyVector is applied backwards, so one would expect CopyVector to copy the subarray (1:7) successfully to (4:10). However, this is not always the case. At first, the program is compiled without any optimisation: The routine CopyVector assumes that Iarray1 and Iarray2 are independent. Therefore, there is no real reason why the loop should go backwards. But in this form, the loop fails. A disadvantage is this pitfall, a user has to know to avoid it. This is similar to the declaration of return values for functions which are also not allowed to be modified by an INTENT attribute. For example, the following code is valid Fortran code and returns a pointer to a newly allocated array: Passing an array is not allowed. Example: Will give a compiler error!Provides a complete overview about the language. A must-to-have for skilled programmers. Technische Universitat Dortmund. Vogelpothsweg 87Susanne Drees Phone. Each chapter is devoted to a grammatical concept, starting with the alphabet and the two source forms (fixed and free). The second chapter describes primitive Fortran types, derived types, and structure objects. Chapter 3 covers lexical tokens (keywords, names, operators, and constants). Data objects include character substrings and arrays, whose inner structure is described in chapter 4. Pointers, discussed in chapter 5, are not data types but attributes, so their definition is mainly semantic. This also holds for arrays, the subject of chapter 6. Expressions, covered in chapter 7, may be numeric, relational, logical, or of character type. New operators may be defined. Chapter 8 is about assignments. Chapter 9 covers declaration and attribute specification statements. Control statements (selection, iteration, and the case statement) are given in chapter 10. The last two chapters describe program units, subprograms, and intrinsic subprograms.

In the preface, Gehrke says, “the standard document is a reference book for compiler writers and those experts who already know all about Fortran 90, but is useless for beginners and rather impractical even for experienced programmers. The Fortran 90 language guide is intended to serve as a language reference manual for programmers, as teaching material for introductory courses in Fortran programming, and as a help for experienced Fortran 77 programmers migrating to Fortran 90.” I am not convinced that he has achieved all of these objectives. You first learn to say simple things in the language, and the grammar comes later. I can imagine that good Fortran programmers will be able to use this book to identify the new facilities in Fortran 90, but I am not sure they will easily master them. This book lacks examples showing how to say things in Fortran 90. As a programming teacher of many years, I could use this book to prepare my lectures, but I would not recommend it to my students. They could use it to answer questions about the exact effect of some construction or about the precedence of operators, but not to discover how to write a good and readable program. It contains no stylistic considerations, nothing that could help a beginner to choose the best way to express a given computation. Moreover, there are unacceptable confusions. A subprogram is a statement, and a function is an expression. They are different in nature; they act differently. A function computes a result from its data, while a subprogram may change the value of some argument; it acts like an assignment. I do not like the chapter that considers a function as a special case of a subprogram. For this audience, it is an excellent and readable reference book, with a good index.

External subprograms are those which appear in a separate programThis is simiilar toSubroutine subprograms, on the other hand, have no explicit typeAn interface block consists of: REAL:: radiusEND PROGRAM AreaEND PROGRAM of the main program Area, so it is classified as anNote that the only substantive difference here is the ability toThis attribute ofAs such it cannot be modified byThis option allows the line not to advanceThe line will advance onEND PROGRAM AreaREAL, INTENT(OUT):: AreaFortran 77. INTENT(OUT) for the return variable Area. INTEGER:: nINTEGER, INTENT(IN):: nFactorial. Also note the RESULT value in the function. This. Fortran 90 may offer an improved method or feature above FORTRAN 77 forThe following topics outline some of the keyFortran 90 defines a free source form format. A statement can begin inWhen used with theObjects of a derived type can be used inAn array section, a portion of a whole array, can be used as an array. Array constructors offer a concise syntax for specifying the values of anYou can also use pointerIn addition, the CYCLE A generic interface blockWith modules, you can specify that some entitiesMany new inquiry functions enable you. It is a language thatFortran, but are based on experience of other languages (like CFortran 90 is very different fromIf you use free format, the fileModules can also be used to hide. My experience is that most people who need to write computer programs know several languages, and often these are self taught. Once you have a firm concept of what programming is all about you will find it easy to learn other languages. I'm focussing on programming best practice - this is not intended to be an in-depth study of FORTRAN. It’s a good language for beginners as it is easy to learn and widely available. It is particularly useful for scientists and engineers as there are inbuilt functions for handling mathematical constructs such as matrices.

The precision of calculation can be selected according to the need of the calculation. There are libraries of numerical algorithms available that shortcut coding. As this is a beginner's guide I have focussed on the core language. The examples will compile perfectly well with FORTRAN 90 or 95. They are free for personal home use. I recommend it because it is very easy to use and install. It comes with a built in debugger so you can check your code for errors at run time. The supplied library provides a wealth of high level subroutines and functions such as data sorting routines, serial communications, random numbers, and many more. For a good list of compilers I suggest you check. This short course assumes no previous programming knowledge whatsoever, and all the terms will be explained in the worksheets. I have rewritten the course for delivery via web pages, but it can also be downloaded in PDF format if you prefer. Please read the conditions carefully on the downloads page if you wish to redistribute the resources. XVI, 385 p. online resource That version of the language was later called FORTRAN 66. The next major language revision is planned for the year 2000. The standard document is a reference book for compiler writers and those experts who already know all about Fortran 90, but it is use?? less for beginners and rather impractical even for experienced programmers Chulalongkorn University. Phayathai Rd. Pathumwan. Bangkok 10330 Thailand Tel. 0-2218-2929, 0-2218-2927 (Library Service) 0-2218-2903 (Administrative Division) Fax. The 13-digit and 10-digit formats both work. Please try again.Please try again.Please try again. Used: GoodPages may include limited notes and highlighting. May not include supplemental or companion materials if applicable. Access codes may or may not work. Connecting readers since 1972. Customer service is our top priority.That version of the language was later called FORTRAN 66.

The next major language revision is planned for the year 2000.Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required. Register a free business account Fortran is the most widely used programming language in science and engineering. All Fortran users should ensure they keep a copy of this book close to hand.To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzes reviews to verify trustworthiness. It is used for numeric and scientific computing. Fortran ruled this programming area for a long time and became very popular for high performance computing, because. The windows version emulates a unix environment using MingW under windows. The installer takes care of this and automatically adds g95 to the windows PATH variable. This means that you can simply open a new Command Prompt window and type “g95” to bring up the compiler. Find some basic commands below to get you started. If all goes well, object files h1.o, h2.o and h3.o are created Object files can be specified as well and will be linked to form an executable file. You must always use implicit none at the start of every program. Fortran is case-insensitive, except for string literals. A token could be a keyword, an identifier, a constant, a string literal, or a symbol. These reserved words cannot be used as identifiers or names. You can also specify the number of bytes using the kind specifier.A complex number has two parts, the real part and the imaginary part. Two consecutive numeric storage units store these two parts. The length of the string can be specified by len specifier. If no length is specified, it is 1. If a variable is not declared, then the first letter of its name will determine its type. However, you must declare all the variables as it is good programming practice.

Each variable should have a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable. These fixed values are also called literals. There are only two logical constants:.true. and.false. Named constants are declared with the parameter attribute. For example, If both the operands are non-zero, then condition becomes true. If any of the two operands is non-zero, then condition becomes true. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false. Used to check equivalence of two logical values. Used to check non-equivalence of two logical values. This affects how an expression is evaluated. Certain operators have higher precedence than others; for example, the multiplication operator has higher precedence than the addition operator. Within an expression, higher precedence operators will be evaluated first. When the if condition fails, the immediately followed else-if is executed. When the else-if also fails, its successor else-if statement (if any) is executed, and so on. In general, statements are executed sequentially: The first statement in a function is executed first, followed by the second, and so on. Click the following links to check their detail. It tests the condition before executing the loop body. When execution leaves a scope, all automatic objects that were created in that scope are destroyed. Click the following links to check their detail. You can also specify the number of bytes using the kind specifier.A complex number has two parts: the real part and the imaginary part. Two consecutive numeric storage units store these two parts. It produces a result who’s real and imaginary parts are single precision, irrespective of the type of the input arguments. Executing the program. InfinityReal 4. Complex 4Real 4. Complex 4. Character 1.

Logical 4The length of the string can be specified by len specifier. If no length is specified, it is 1. You can refer individual characters within a string referring by position; the left most character is at position 1. A big hello from Mr. BeanA big hello from Mr.BeanB is lexically greater than A. A is lexically less than a. A is lexically less than BIn Fortran, character constants are given between a pair of double or single quotes. The length of the string can be specified by len specifier. If no length is specified, it is 1. You can refer individual characters within a string referring by position; the left most character is at position 1. A big hello from Mr. BeanA big hello from Mr. BeanThis is called extent specifier. We use extent specifiers to extract the year, date, month, hour, minutes and second information separately. Year: 2014. Month: 08. Day: 03. Time String: 075835.466. Hour: 07. Minute: 58. Second: 35.466A big hello from Mr. Bean. Here is Mr. Rowan Atkinson. A big hello from Mr. Bean. Here is Mr.RowanAtkinson. A big hello from Mr. BeanIf the second argument is a substring of the first argument, then it returns an integer which is the starting index of the second string in the first string, else it returns zero. An array is used to store a collection of data, but it is often more useful to think of an array as a collection of variables of the same type. The lowest address corresponds to the first element and the highest address to the last element. The first element of an array has a subscript of one.For example, for the array named matrix, rank is 2, and for the array named numbers, rank is 1. For example, the array numbers has extent 5 and the array named matrix has extent 3 in both dimensions. For example, for the array matrix, shape is (3, 3) and the array numbers it is (5). For the array matrix, it is 9, and for the array numbers, it is 5. This notation is called a subscript triplet: They can be divided into 7 categories.

It allows the execution of the expression, on an element, if the given condition is true. A derived data type is also called a structure, and it can consist of data objects of different types. Nuha Ali. C Programming Tutorial Zara Ali. Telecom Billing Tutorial However, in Fortran, a pointer is a data object that has more functionalities than just storing the memory address. It contains more information about a particular object, like type, rank, extents, and memory address. A target variable must be declared with the target attribute. However, emptying the pointer implies nullification also. It consists of a string, containing a list of edit descriptors in parentheses. Integer values are right justi?ed in their ?elds. If the ?eld width is not large enough to accommodate an integer then the ?eld is ?lled with asterisks. Real values are right justi?ed in their ?elds. If the ?eld width is not large enough to accommodate the real number then the ?eld is ?lled with asterisks. Real values are right justi?ed in their ?elds. If the ?eld width is not large enough to accommodate the real number then the ?eld is ?lled with asterisks. One for the sign of the mantissa, two for the zero, four for the mantissa and two for the exponent itself.Up to 20 characters, please. Zara Name: Id: Weight. Ardupilot 1 0.08In this chapter you will study file input and output functionalities provided by Fortran. The OPEN, WRITE, READ and CLOSE statements allow you to achieve this. The open command is used to open files for reading or writing.A character string and can have one of the three values NEW, OLD or SCRATCH. A scratch file is created and deleted when closed or the program ends. Can have either of the two values, SEQUENTIAL or DIRECT. The default is SEQUENTIAL. Can have either of the two values FORMATTED or UNFORMATTED. The default is UNFORMATTED Once done, it should be closed using the close statement. And then closes the file.

Information (or data) is passed to the calling program, to the procedure as arguments. A function should not modify its arguments. After calling swapIt is called recursive call of the function. You should declare this type of procedures by preceding the word recursive before its declaration. After calling swapWhen you declare some variable or subroutine as private, it is not available outside the module. We have already discussed some of these functions in the Arrays, Characters and String chapters. In the following section we provide brief descriptions of all these functions from other categories. The functions return properties of numbers of the same kind as the variable X, which can be real and in some cases integer. The kind attribute allows you to specify how a number is stored internally. For example, For real numbers, the precision(x) intrinsic function, returns the number of decimal digits of precision, while the range(x) intrinsic function returns the decimal range of the exponent. Some are free and some are paid services. Program executions after the variables are checked at a breakpoint. For X windows system, gdb comes with a graphical interface and the program is named xxgdb. By continuing to use this site you agree to our use of cookies. To find out more, see ourYou will only need to do this once.Fortran 90 is the focus of this chapter, including syntax, program layout, control structures, memory allocation, modular programming, and compilation. This chapter also includes various sample codes which illustrate proper programming and algorithm structure. Please login to gain access using the options above or find out how to purchase this book. By continuing to use this site you agree to our use of cookies. These areas represent not only research in the Department, but also interdisciplinary collaboration in and out of the sciences in other departments.