programming in fortran

Upload: himanshu-sharma

Post on 03-Apr-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Programming in FORTRAN

    1/38

    Programming in FORTRAN

    FORTRAN as a Programming Language:

    The FORTRAN programming language was conceived in the early 1950s the name produced from the

    two words FORmula TRANslation. In 1966 the language was standardized and FORTRAN IV was

    born.

    Revision of the language led to FORTRAN 77, the language we use today. The standard for FORTRAN

    90 is now available although not yet in widespread use. F77 is a subset of F90.

    FORTRAN was designed for scientists and engineers, and has dominated this field. For the past 30

    years FORTRAN has been used for such projects as the design of bridges and aeroplane structures, it

    is used for factory automation control, for storm drainage design, analysis of scientific data and so

    on.

    Throughout the life of this language, groups of users have written libraries of useful standard

    FORTRAN programs.

    These programs can be borrowed and used by other people who wish to take advantage of the

    expertise and experience of the authors, in a similar way in which a book is borrowed from a library.

    The individual user may wish to build up their own library of routines they often use.

    Course structure.

    Work your way through the following

    components attempting the exercises as

    you come across them:

    Programs

    Variables

    Arithmetic Operations

    Input and Output

    Looping in Programs

    Arrays in Programs

    Checking variables

    Subprograms and functions

    Formatting and File Handling

  • 7/28/2019 Programming in FORTRAN

    2/38

    Programs and Problem Solving:

    A program is a list of instructions or program statements composed in such a way as to enable a

    computer to solve a problem. The problem to be solved is broken down into successively smaller

    parts. These parts should form a well-defined structure, the large complex problem at the top the

    small easy to handle problems at the bottom. Hence the term top down programming.

    To get a programming language to help you solve a problem, follow the steps below.

    1. State the problem in English2. Examine the problem and break down into several parts.3. Examine the parts and refine into smaller parts.4. Sketch a picture/structure plan5.

    Write the main program with references to the subprograms.

    6. Test the program.It is important to note that the actual writing of the program is almost the last step.

    Program Format

    The positions within a line are called columns and are numbered 1, 2, 3, . . ., 80. All FORTRAN

    statements must be positioned in columns 7 through 72; characters that appear in columns 73 and

    beyond are ignored. If a statement re quires a statement label, this label must appear in columns 1

    through 5. Statement labels must be integers in the range 1 through 99999.

    Occasionally it may not be possible to write a complete FORTRAN statement using only columns 7

    through 72 of a line. In this case, the statement may be continued on another line or lines (up to a

    maximum of 19), provided that a continuation indicator is placed in column 6 of the line(s) on which

    the statement is continued. This continuation indicator may be any alphabetic or numeric character

    other than a zero or a space. A zero or a space in column 6 indicates the first line of a statement.

    Lines that contain only blanks or that have the letter C or an asterisk (*) in column 1 represent

    comment lines. Comments are not executed but, rather, appear only in the listing of the program

    unit. In standard FORTRAN, comments themselves may not be continued from one line to anotherby using a continuation indicator in column 6; instead, all comments must begin with a C or * in

    column 1.

  • 7/28/2019 Programming in FORTRAN

    3/38

    Program Layout:

    The general form of a program in FORTRAN is

    headingThis statement marks the beginning of the program and

    gives it a name.

    commented

    documentation

    This opening documentation contains info about the

    program's input, output and purpose.

    specification part

    This includes the names and types of the constants and

    variables used to store input and output values as well as

    intermediate results are declared.

    execution part

    This contains the statements that carry out steps of the

    algorithm.

  • 7/28/2019 Programming in FORTRAN

    4/38

    Here is an example FORTRAN program:

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,initial velocity, and constant Acceleration. Variables used are:

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: none

    Output: VELOC, HGHT

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    HGHT0 = 100.0

    VELOC0 = 90.0

    TIME = 4.3

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC

    PRINT *, 'AND THE HEIGHT IS ', HGHT

    END

  • 7/28/2019 Programming in FORTRAN

    5/38

    Variables and Constants:

    Variables:

    A variable is something that may change in value. A variable might be the number of words on

    different pages of this booklet, the air temperature each day, or the exam marks given to a class of

    school children.

    A variable could be likened to a storage box whose contents may often change. The box or variable

    must be given a name to distinguish it from others. According to FORTRAN rules, the variable name

    must begin with a letter and may be followed by up to five characters (letters or numbers only).

    Variables in FORTRAN are of different types. You specify the type and name of each variable you

    intend to use at the top of your program, after the PROGRAM statement and before any other

    executable lines. Commented lines are non-executable so they can appear anywhere in the program.

    If the variable declarations are omitted, the compiler will make certain assumptions, for example,

    that any variables beginning with the letters I, J, K, L, M, and N are INTEGER. The lack of specification

    often leads to program errors and it is strongly recommended that variable types are always

    declared. Numerical data may be separated into integer and real numbers.

    Integers:

    Integers are whole numbers, those without a decimal point, (for example 7, 4563, 99) and are stored

    in integer variables.

    The general form of the declaration of integer variables is:

    INTEGER name1, name2

    Example:

    INTEGER WHOLE, AVERAGE, SUMReals:

    Reals are fractional numbers, those including a decimal point, (for example, 0.2, 653.46, 1.0) and are

    stored in real variables. Real numbers cannot be stored accurately. The accuracy of a real variable

    depends on the computer. The general form of the declaration of a real variable is:

    REAL name1, name2

  • 7/28/2019 Programming in FORTRAN

    6/38

    Example:

    REAL FRACT, MEAN, STDDEVCharacters:

    Character variables contain one or more characters, (for example G or OXFORD).

    The general forms are:

    CHARACTER name1, name2 where name1 and name2 are 1character each.

    CHARACTER*n name1, name2 where name1 and name2 are n characters in length each.

    CHARACTER name1*n1, name2*n2 where name1 is of length n1 and name2 is of length n2.

    Constants:

    Constants are quantities whose values do not change during program execution. In FORTRAN they

    may be of numeric or character type.

    Double Precision:

    Real data values are commonly called single precision data because each real constant is stored in a

    single memory location. This usually gives seven significant digits for each real value. In many

    calculations, particularly those involving iteration or long sequences of calculations, single precision

    is not adequate to express the precision required. To overcome this limitation, FORTRAN provides

    the double precision data type. Each double precision is stored in two memory locations, thus

    providing twice as many significant digits.

    The general form of the declaration of a double precision variable is:

    DOUBLE PRECISION name1, name2

    Example: DOUBLE PRECISION ROOT, VELO

  • 7/28/2019 Programming in FORTRAN

    7/38

    Arithmetic Operations and Functions:

    Operations:

    In FORTRAN, addition and subtraction are denoted by the usual plus (+) and minus (-) signs.

    Multiplication is denoted by an asterisk (*). This symbol must be used to denote every

    multiplication; thus to multiply N by 2, we must use2 * N or N * 2 not 2N. Division is denoted by a

    slash (/), and exponentiation is denoted by a pair of asterisks (**).

    Operator Operation

    + addition, unary plus

    - subtraction, unary minus

    * Multiplication

    / Division

    ** Exponentiation

    Real Arithmetic:

    Providing all variables and constants in the expression are real, real arithmetic will be carried out as

    expected, with no decimal places being truncated.

    Integer Arithmetic:

    Providing the expression has all integers, subtraction, addition, multiplication and exponentiation

    will prove no problem. However integer division is somewhat different than normal division with

    real values. Integer division ignores the fractional part. Any decimal places are truncated.

    Example: 5 / 2 give the result 2 instead of 2.53 / 4 gives the result 0 instead of 0.75

    Mixed Mode Arithmetic:

    Mixed mode arithmetic is when an expression contains both reals and integers. If ANY of the

    operands are real then result of the operation will be real. However, mixed mode arithmetic should

    be used with extreme care. You may think you have a real operand when in reality you have two

    integer operands.

    Example:

    5 / 2 * 3.0 is 6.0 Incorrect because the order of operation is left to right. 5/2 = 2 then 2 * 3.0 = 6.0

  • 7/28/2019 Programming in FORTRAN

    8/38

    3.0 * 5 / 2 is 7.5 Correct because of mixed mode arithmetic 3.0 * 5 = 15.0 then 15.0/2 = 7.5

    Mixed Mode Variable Assignments:

    If the variable to which an expression is assigned has been declared as a real variable, any decimalplaces resulting from the evaluation of the expression will be preserved.

    Example:

    Real variable 5 * 2.1 will have a value of 10.5.

    However, if the variable to which an expression is assigned has been declared as an integer variable,

    any decimal places resulting from the evaluation of the expression will be lost.

    Example

    Integer variable 5 * 2.1 will have a value of 10

    Priority Rules:

    Arithmetic expressions are evaluated in accordance with the following priority rules:

    All exponentiations are performed first; consecutive exponentiations are performed fromright to left.

    All multiplication and divisions are performed next, in the order in which they appear fromleft to right.

    The additions and subtractions are performed last, in the order in which they appear fromleft to right.

    Functions:

    FORTRAN provides several intrinsic functions to carry out calculations on am number of values or

    arguments and return as result. Commonly used functions are shown in the table below. To use a

    function we simply give the function name followed by the argument(s) enclosed in parenthesis.

    Funtionname (name1, name2 ...)

  • 7/28/2019 Programming in FORTRAN

    9/38

    Some FORTRAN Functions

    Function Description Type of Argument(s)* Type of Value

    ABS (x) Absolute value of x I, R, DP Same as argument

    COS (x) Cosine of x radians R, DP Same as argument

    DBLE(x) Conversion of x to double precision form I, R DP

    DPROD(x,y) Double precision product of x and y R DP

    EXP(x) Exponential function R, DP Same as argument

    INT(x) Integer part of x R, DP I

    LOG(x) Natural logarithm of x R, DP Same as argument

    MAX(x1, . . ,Xn) Maximum of x1, . . .,xn I, R, DP Same as argument

    MIN(x1, . .. ,xn) Minimum of x1, . . ., xn I, R, DP Same as argument

    MOD(x,y) x (mod y); x - INT(x/y) * y I, R, DP Same as argument

    NINT(x) x rounded to nearest integer R, DP I

    REAL(x) Conversion of x to real type I, DP R

    SIN(x) Sine of x radians R, DP Same as argument

    SQRT(x) Square root of x R, DP Same as argument

    * I = integer, R = real, DP = double precision.

    Assignment Statement

    The assignment statement is used to assign values to variables and has the form:

    variable = expression

    For Example:

    x = 2356.0 y = SQRT (25.0) direction = x * y

  • 7/28/2019 Programming in FORTRAN

    10/38

    Input and Output:

    In the preceding section, we considered the assignment statement, which enables us to calculate the

    values of expressions and store the results of these computations by assigning them to variables. An

    assignment statement does not, however, display these results on an output device, nor does it

    allow the user to enter new values during execution. For example, if a projectile is launched from an

    initial height of HGHT0 with an initial vertical velocity of VELOC0 and a vertical acceleration of ACCEL,

    then the equations

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOCO * TIME + HGHT0

    And

    VELOC = ACCEL * TIME + VELOC0

    Give the height (HGHT) and the vertical velocity (VELOC) at any TIME after launch. The program

    below assigns the value9.807 (m/sec2) to ACCEL, 150.0 (m) to HGHT0, 100.0 (m/sec) to VELOCO,

    and 5.0 (sec) to TIME and then computes the corresponding values of HGHT and VELOC.

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,

    initial velocity, and constant acceleration. Variables used are: *

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: none

    Output: none

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    HGHT0 = 150.0

    VELOC0 = 100.0

    TIME = 5.0

  • 7/28/2019 Programming in FORTRAN

    11/38

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    END

    The values of HGHT and VELOC are calculated as desired, but they are stored internally and are not

    displayed to the user. Moreover, if the same calculation is to be done for the same acceleration but

    with values 100.0 for HGHT0, 90.0 for VELOC0, and 4.3 for TIME, then several statements must be

    modified, as shown in below, and the program executed again.

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,

    initial velocity, and constant acceleration. Variables used are:

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: none

    Output: none

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    HGHT0 = 100.0

    VELOC0 = 90.0

    TIME = 4.3

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    END

  • 7/28/2019 Programming in FORTRAN

    12/38

    The output statement that we consider in this section provides a method for easily displaying

    information. We also consider an input statement that provides a convenient way to assign values

    from an external source during execution of the program.

    FORTRAN provides two types of input/output statements. In the first type, the programmer must

    explicitly specify the format in which the data is presented for input or, in the case of output, the

    precise format in which it is to be displayed. In the second type of input/output, certain

    predetermined standard formats that match the types of items in the input/output list are

    automatically provided by the compiler. It is this second type, known as list-directed input/output

    that we consider in this section.

    List-Directed Output:

    The simplest list-directed output statement has the following form:

    List-Directed Output Statement

    Form:

    PRINT *, output-list

    where:

    Output-list is a single expression or a list of expressions separated by commas. Each of these

    expressions is a constant, a variable, or a formula.

    The statement may also be used in the form

    PRINT *

    Where no output list is used.

    Purpose:

    Displays the values of the items in the output list. Each PRINT statement produces a new line of

    output. If the output list is omitted, a blank line is displayed.

    For example, to display some of the relevant information from the preceding example, we might addtwo PRINT statements, as shown below. Execution of the program produces output similar to that

    shown. The exact format and spacing used to display these values are compiler dependent; for

    example, in some systems, real values might be displayed in scientific notation, and the number of

    spaces in an output line might be different from that shown.

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,initial velocity, and constant acceleration. Variables used are:

  • 7/28/2019 Programming in FORTRAN

    13/38

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: HGHT0, VELOC0, TIME

    Output: VELOC, HGHT

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    READ *, HGHT0, VELOC0, TIME

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC

    PRINT *, 'AND THE HEIGHT IS ', HGHT

    END

    In some situations, one or more blank lines in the output improve readability. A blank line can be

    displayed by a PRINT statement of the form

    PRINT *

    In which the output list is empty. Note that the comma that normally follows the * is also omitted.

    Execution of each statement of this form causes a single blank line to be displayed.

    List-Directed Input

    The simplest form of the list-directed input statement is

  • 7/28/2019 Programming in FORTRAN

    14/38

    List-Directed Input Statement

    READ *, input-list

    where

    Input-list is a single variable or variables separated by commas.

    Purpose:

    Causes the transfer of values from some external source (usually the keyboard or a file) and the

    assignment of these values to the variables in the input list. The following rules apply:

    i. A new line of data is processed each time a READ statement is executed.ii. If there are fewer entries in a line of input data than there are variables in the input list,

    successive lines of input are processed until values for all variables in the list have been

    obtained.

    iii. If there are more entries in a line of input data than there are variables in the input list, thefirst data values are used, and all remaining values are ignored.

    iv. The entries in each line of input data must be constants and of the same type as thevariables to which they are assigned. (However, an integer value may be assigned to a real

    or a double precision variable, and a real value may be assigned to a double precision

    variable, with automatic conversion taking place.)

    v. Consecutive entries in a line of input data must be separated by a comma or by one or morespaces

    For example, the statement

    READ *, HGHTO, VELOCO, TIME

    assigns values to the variables HGHTO, VELOCO, and TIME. Therefore, this single READ statement

    replaces the three assignment statements used to assign values to these variables in the preceding

    examples. The modified program is shown below.

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,

    initial velocity, and constant acceleration. Variables used are:

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

  • 7/28/2019 Programming in FORTRAN

    15/38

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: HGHT0, VELOC0, TIME

    Output: VELOC, HGHT

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    READ *, HGHT0, VELOC0, TIME

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC

    PRINT *, 'AND THE HEIGHT IS ', HGHT

    END

    In an interactive mode of operation, the values assigned to variables in an input list are entered

    during program execution. In this case, when a READ statement is encountered, program execution

    is suspended while the user enters values for all the variables in the input list.

    Program execution then automatically resumes. Because execution is interrupted by a READ

    statement and because the correct number and types of values must be entered before execution

    can resume, it is good practice to provide some message to prompt the user when it is necessary to

    enter data values. This is accomplished by preceding each READ statement with a PRINT statement

    that displays the appropriate prompts. The program below illustrates this by prompting the user

    when values for HGHT0, VELOC0, and TIME are to be entered; it is a modification of the program in

    above.

    PROGRAM PROJEC

    ************************************************************************

    This program calculates the velocity and height of a projectile given its initial height,

    initial velocity, and constant acceleration. Variables used are:

  • 7/28/2019 Programming in FORTRAN

    16/38

    HGHT0 : initial height

    HGHT : height at any time

    VELOC0 : initial vertical velocity

    VELOC : vertical velocity at any time

    ACCEL : vertical acceleration

    TIME : time elapsed since projectile was launched

    Input: HGHT0, VELOC0, TIME

    Output: VELOC, HGHT

    ************************************************************************

    REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME

    ACCEL = -9.807

    PRINT *, 'ENTER THE INITIAL HEIGHT AND VELOCITY:'

    READ *, HGHT0, VELOC0

    PRINT *, 'ENTER TIME AT WHICH TO CALCULATE HEIGHT AND VELOCITY:'

    READ *, TIME

    HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0

    VELOC = ACCEL * TIME + VELOC0

    PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC

    PRINT *, 'AND THE HEIGHT IS ', HGHT

    END

    Now go to the exercises and work your way through the input/output and arithmetic problems.

  • 7/28/2019 Programming in FORTRAN

    17/38

    Iteration (or Looping):

    DO Loops:

    A DO loop allows repetition of a section of program a set number of times. In DO loops the section

    to be repeated is started with the statement DO and ended with a labelled CONTINUE statement.

    The repeated part of the program is called the loop body, and the number of times this is repeated isset by the START, STOP and STEP values.

    DO n X = START, STOP, STEP

    .

    .

    loop body

    .

    .

    .

    n CONTINUE

    Where

    n is a statement line number containing the region for the repetitive loop. It can be a positive integer

    of up to five digits. X will be incremented each time round the loop by the value of STEP. Its initial

    value is START and looping will end when x exceeds the value STOP at which point the program will

    carry on after the CONTINUE statement. X is called the loop index and must be an integer variable.

    The name is not restricted to X. It is also possible to have implied DO loops.

    Example

    DO 12 J = 1, 10

    12 CONTINUE

    When the STEP value is omitted from the expression, its default value is set to 1. The loop body is

    normally indented to support readability of programs.

    Example

    DO 20 I = 10, 0,-1

    Print *, I

    20 CONTINUE

    In the above example the value of I is printed. Initially it is 10 and reduces by one each time round

    the loop until I has a value of -1.

    Now go to the exercises and work your way through the looping problems.

  • 7/28/2019 Programming in FORTRAN

    18/38

    One Dimensional Arrays:

    An array is a set of related variables that have the same name and are of the same type (REAL,

    INTEGER, CHARACTER). For example, a group of 10 students are given marks for a particular essay.

    The marks could be assigned to 10 individual variables each of a different name, MARK1, MARK2 ...

    MARK10.

    Or this set of values could be given a group or array name of MARK and each individual value, called

    an array element, can be referred to by a subscript number from 1 to 10. The first student's mark is

    referred to as MARK (1), the second as MARK (2) and so on. A note on pronunciation: MARK (1)

    would be said as mark sub

    Because accessing the values in the various elements of an array is done by just referring to the

    subscript, working with groups of values becomes relatively easy. For example, finding the total of

    the marks given could be found using a DO loop index to refer to successive addresses as follows:

    SUM = 0

    DO 25 I = 1, 10

    SUM = SUM + MARK (1)

    25 CONTINUE

    To do a similar calculation without an array, you would have to write one huge assignment

    statement:

    SUM = MARKl+MARK2+MARK3+...+MARK9+MARK10

    Imagine how long that assignment statement be if you wanted to sum 100 or even 1000 numbers!

    Array Declarations

    Arrays must be declared at the beginning of the program. The easiest way to do this is to state what

    type of values the array will contain (REAL, INTEGER, CHARACTER) followed by the name of the array

    followed by the number of elements in the array enclosed in brackets.

    INTEGER NAME1(n)

    REAL NAME2(n)

    where:

    NAME1 and NAME2 are array names and n is the number of array elements

    Example:

    INTEGER MARK (10)

    REAL TABLE (25), TIME (50)

    In the above example, MARK will hold 10 integer values with addresses (subscripts) beginning at 1.

    TABLE will hold 25 real values with addresses beginning at l and TIME will hold 50 real values with

  • 7/28/2019 Programming in FORTRAN

    19/38

    addresses beginning at 1. It is important to differentiate between an address of an array element

    and the contents of an array element. The contents of an array element can change, the address

    cannot.

    Sometimes you may want the addresses of an array to begin at a different number than 1. In these

    instances, you can use an extended form of the declaration, stating the minimum and maximum

    values of the subscript.

    INTEGER NAME1(L:U)

    REAL NAME2(L:U)

    where:

    NAME1 and NAME2 are array names of 6 alphanumeric characters. L is the lower subscript value. U is the

    upper subscript value.

    Example

    INTEGER ERROR (-10:10)

    REAL SECNDS (0:50)

    Initial Values for Arrays

    You can use an assignment statement to fill up arrays:

    MARK (1) = 23.5

    MARK (2) = 45

    MARK (10) = 85

    Values for array elements can also be read from the keyboard within a loop:

    DO 10 I = l, N

    READ *, AGE (I)

    10 CONTINUE

    However, for arrays of any significant size, reading from a file is more efficient:

    COUNT = 15

    DO 20 J = 1, COUNT

    READ (1,*) NAME (J), NUMBER (J)

    20 CONTINUE

    The program segment above will repeat the following sequence 15 times: read two values from the

    file opened with unit number 1, put the first value into the Jth address for NAME and the second

    value into the Jth address for NUMBER.

  • 7/28/2019 Programming in FORTRAN

    20/38

    This works fine if you have two columns in the data file, the first column goes into the array NAME

    and the second column goes into the array NUMBER. What if you know the first 15 values in the file

    will go into one array? A statement referring to the array without subscripts like the one below will

    do the trick.

    REAL NUMBER (15)

    READ (1,*) NUMBER

    Printing of Arrays

    All the elements of an array will be printed if the array name is used without a subscript:

    Now go to the exercises and work your way through the array problems.

  • 7/28/2019 Programming in FORTRAN

    21/38

    Decisions:

    The IF ... THEN Statement

    Decisions in FORTRAN are accomplished with an IF-THEN program structure. Usually the block of

    code affected by the decision is indented to make it stand out from the rest of the program. The

    logical expression is something that is true or false. If it is true, the block of FORTRAN statements is

    carried out. If it is false, the program continues from the statement after the END IF.

    IF (logical expression) THEN

    block

    END IF

    The most common form of logical expression takes the form:

    (Arithmetic Expression Relational Operator Arithmetic Expression)

    Example

    (A .GT. 0)

    The relational operators are: (note that the full stops must be on either side)

    .GT. Greater than

    .LT. Less than

    .EQ. Equal to

    .GE. Greater than or equal to

    .LE. Less than or equal to

    .NE. Not equal to

    Logical expressions may be linked with the logical operators:

    .AND. and. OR.Note: When using .AND. or .OR. Each logical expression must be bracketed and the entire logical

    expression must also be bracketed, as in the example below.

    Example

    IF ((A.GT.B).AND. (B.LT.C)) THEN

    END IF

    IF ((C.GT.D).OR. (B.EQ.C)) THEN

    IF ((C.GT.D).OR. (B.EQ.C)) THEN

  • 7/28/2019 Programming in FORTRAN

    22/38

    END IF

    Logical expressions may be preceded by .NOT. This reverses the expressions truth.

    Example

    IF (.NOT. (A.GT.B)) THEN

    END IF

    In English the above expression reads: if A is not greater than B.

    IF ... THEN ... ELSE...

    This decision structure is used if code is to be executed whether the logical expression is true or

    false. In the example below, Block A is executed if the expression is true and Block B is executed if

    the expression is false.

    IF (logical expression) THEN

    Block A

    ELSE

    Block B

    END IF

    IF ... THEN ... ELSE IF ... THEN...

    This structure is used when more than one block of code can be executed if the initial logical

    expression is false or if you need to make additional decisions. Because there are more blocks with

    the potential for execution, there need to be additional decisions to determine if the block can be

    executed or not. If none of the decisions are true, then none of the blocks are executed.

    IF (decision 1) THEN

    Block A

    ELSE IF (decision 2) THEN

    Block B

    ELSE IF (decision 3) THEN

    Block C

    END IF

  • 7/28/2019 Programming in FORTRAN

    23/38

    IF ... THEN ELSE IF ... THEN ELSE

    This is a third possible decision structure which can be used to make multiple decisions. If none of

    those decisions are true then Block D is executed.

    IF (decision1) THEN

    Block A

    ELSE IF (decision2) THEN

    Block B

    ELSE IF (decision 3) THEN

    Block C

    ELSE

    Block D

    END IF

    IF without THEN and END IF

    There is an additional decision structure which may be useful. If the block of code you wish to

    execute is only one line and there are no additional decisions to be made, you can eliminate the

    THEN and the END IF statements. You cannot do something like this with ELSE and ELSE IF decision

    structures.

    Example

    IF (A .GT. B) PRINT*, 'B is greater than A'

    IF (NUMBER .LT. MIN) MIN = NUMBER

    Now go to the exercises and work your way through the checking variables exercise.

  • 7/28/2019 Programming in FORTRAN

    24/38

    Functions and Subroutines:

    Functions and subroutines are FORTRAN's subprograms. Most problems that require a computer

    program to solve them are too complex to sit down and work all the way through them in one go.

    Using subprograms allows you to tackle bite size pieces of a problem individually. Once each piece is

    working correctly you then put the pieces together to create the whole solution. To implement

    functions and subroutines, first write a main program that references all of the subprograms in the

    desired order and then start writing the subprograms. This is similar to composing an outline for an

    essay before writing the essay and will help keep you on track.

    Functions:

    The purpose of a function is to take in a number of values or arguments, do some calculations with

    those arguments and then return a single result. There are some functions which are written into

    FORTRAN and can be used without any special effort by you, the programmer. They are called

    intrinsic functions. There are over 40 intrinsic functions in FORTRAN and they are mainly concerned

    with mathematical functions.

    The general way to activate a function is to use the function name in an expression. The function

    name is followed by a list of inputs, also called arguments, enclosed in parenthesis:

    answer = functionname (argument1, argument2, . . .

    Example:

    PRINT*, ABS (T)The compiler evaluates the absolute value of T and prints it

    out

    Y = SIN (X) + 45The compiler calculates the value of sin x, adds 45 then puts

    the result into the variable Y, where x is in radians.

    M=MAX(a,b,c,d)

    The compiler puts the maximum value of a, b, c and d into

    the variable M. If a=2, b=4, c=1 and d=7, then M would

    have a value of 7.

    C=SQRT ( a* * 2

    +b* * 2 )

    The compiler evaluates the expression, a**2+b**2, sends

    that value to the SQRT function, and places the answer in

    the variable

    As shown by the MAX function example above, a function may have one or more arguments but will

    only give one result. Also, as shown by the SQRT function example above, the argument for a

    function does not have to be a variable. It can be an expression or even a constant if you want to

    reference it again. One last item to remember, you must use result of a function call in an

    assignment statement or a PRINT statement, as shown in the examples above.

  • 7/28/2019 Programming in FORTRAN

    25/38

    External Functions:

    The intrinsic functions in FORTRAN are useful but there will be a time when there is no intrinsic

    function to meet your needs. When this occurs you may write your own function subprogram.

    You have to do one thing in the main program to use an external function. You need to declare the

    function name in the variable declaration section. Function names follow the same rules as forvariable names: less than six letters or numbers and beginning with a letter. Because of this, function

    names should not be used as variable names. Once that is done and the function is written,

    activating it is just like activating an intrinsic function.

    Now you are ready to write your function. There are a few rules for writing external functions:

    Function subprograms and any other subprograms are placed after the END statement ofthe main program.

    They are started with a line that includes the type of value the function will return, thefunction name, and the list of arguments the function takes as inputs.

    Any variables the function uses, including the arguments, must be declared in the functionright after the first line. The function name is not declared within the function.

    You must use the function name in an assignment statement within the function. This is howthe compiler knows which value to pass back to the main program.

    A function must finish with RETURN and END statements.The example program below shows how to write an external function which calculates the average

    of three numbers. Note the argument list in the main program does not use the same variable

    names as the argument list in the function. This is not a problem because a function is a self-

    contained entity whose only tie with the main program is the order of the values in the argument

    list. So in the first reference to the function, the value in A (5.0) gets transferred to x, the value in B

    (2.0) to Y and the value in c (3.0) to z. However, in the third reference to the function, it is the

    squared values (25.0, 4.0, 9.0) that are transferred to x, Y and z respectively in the function. Note

    also that the variable SUM is used only in the function and therefore is declared only in the function.

    Example Program

    PROGRAM FUNDEM

    C Declarations for main program

    REAL A,B,C

    REAL AV, AVSQ1, AVSQ2

    REAL AVRAGE

    C Enter the data

    DATA A,B,C/5.0,2.0,3.0/

  • 7/28/2019 Programming in FORTRAN

    26/38

    C Calculate the average of the numbers

    AV = AVRAGE(A,B,C)

    AVSQ1 = AVRAGE(A,B,C) **2

    AVSQ2 = AVRAGE(A**2,B**2,C**2)

    PRINT *,'Statistical Analysis'

    PRINT *,'The average of the numbers is: ',AV

    PRINT *,'The average squared of the numbers: ',AVSQ1

    PRINT *,'The average of the squares is: ', AVSQ2

    END

    REAL FUNCTION AVRAGE(X,Y,Z)

    REAL X,Y,Z,SUM

    SUM = X + Y + Z

    AVRAGE = SUM /3.0

    RETURN

    END

    Subroutines:

    You will want to use a function if you need to do a complicated calculation that has only one result

    which you may or may not want to subsequently use in an expression. Recall the external function

    example program where the average was called and then squared in one line. Subroutines, on the

    other hand, can return several results. However, calls to subroutines cannot be placed in an

    expression.

    In the main program, a subroutine is activated by using a CALL statement which include the

    subroutine name followed by the list of inputs to and outputs from the subroutine surrounded by

    parenthesis. The inputs and outputs are collectively called the arguments.

    A subroutine name follows the same rules as for function names and variable names: less than six

    letters and numbers and beginning with a letter. Because of this, subroutine names should be

    different than those used for variables or functions.

    As with functions, there are some rules for using subroutines. Keep these in mind when writing your

    subroutines:

  • 7/28/2019 Programming in FORTRAN

    27/38

    You do not need to declare the subroutine name in the main program as you do with afunction name.

    They begin with a line that includes the word SUBROUTINE, the name of the subroutine, andthe arguments for the subroutine.

    One way of indicating which variables are inputs and which are outputs is to put the inputs on thefirst line, use a continuation marker and put the outputs on the second line. See the example

    program for an application of this programming style.

    All variables used by the subroutine, including the arguments, must be declared in the subroutine.

    The subroutine name is not declared anywhere in the program.A subroutine is finished off with a

    RETURN and an END statement.

    Exercise 4: Subroutines

    In larger programs it is good programming style to include after the FUNCTION or SUBROUTINE

    statements comments explaining the meanings of the arguments and what the subprogram does.

    A hint when you are debugging your programs: When extraordinary, incorrect numbers start

    appearing from nowhere as your program runs, you probably have not got your subroutine

    arguments in the right order in either the main program or in the subroutine. The same trick applies

    to functions. Example Program

    PROGRAM SUBDEM

    REAL A,B,C,SUM,SUMSQ

    CALL INPUT( + A,B,C)

    CALL CALC(A,B,C,SUM,SUMSQ)

    CALL OUTPUT(SUM,SUMSQ)

    END

    SUBROUTINE INPUT(X, Y, Z)

    REAL X,Y,Z

    PRINT *,'ENTER THREE NUMBERS => '

    READ *,X,Y,Z

    RETURN

    END

    SUBROUTINE CALC(A,B,C, SUM,SUMSQ)

  • 7/28/2019 Programming in FORTRAN

    28/38

    REAL A,B,C,SUM,SUMSQ

    SUM = A + B + C

    SUMSQ = SUM **2

    RETURN

    END

    SUBROUTINE OUTPUT(SUM,SUMSQ)

    REAL SUM, SUMSQ

    PRINT *,'The sum of the numbers you entered are: ',SUM

    PRINT *,'And the square of the sum is:',SUMSQ

    RETURN

    END

    Now go to the exercises and work your way through the subprograms and functions.

  • 7/28/2019 Programming in FORTRAN

    29/38

    Formatting and File Handling:

    Formatted Input and Output

    Input from the keyboard and output to the screen are possible using the READ and PRINT

    statements. So far only list-directed input and output has been encountered, READ * and PRINT *.

    The programmer has had little control over the way in which data can be input and the layout ofprinted results. Input and output statements can contain information on how input data should be

    interpreted and how output data should be laid out. The information is placed in a FORMAT

    statement.

    Edit Descriptors

    FORMAT statements contain edit descriptors that provide layout information.

    Exponentials are numbers adjusted so they are expressed as: 0.dddd x 10X. In FORTRAN notation

    such a number is written:

    s0.dddd x 10X.

    The italicised letters represent the mantissa and the underlined letters, the exponent.

    Where:

    s is sign of the mantissa and sign of the exponent d is significant figures of mantissa x is number of digits in exponent

    Variable Type Edit Descriptor Specifications

    Integer I w w is width of value

    Reals Fw. d w is width of value

    (including negative

    sign, decimal point

    and decimal places) of

    value, d decimalplaces displayed

    Character Aw w characters in width

    Blanks nX n blanks

    Exponential Ew. d d significant figures in

    the mantissa, w total

    width (d + 7 )

    The table below shows the edit descriptor you would use to display each value.

  • 7/28/2019 Programming in FORTRAN

    30/38

    Value Edit Descriptor

    2099 i4

    -72.81 f6.2

    1.86x105 (+0.186E+06) e10.3

    Cup of Tea a10

    The Format Statement

    The general form of the FORMAT statement is:

    label FORMAT(c, ed1, ed2,'Text message to the screen', ed3...)

    Where

    label is an identifying number for PRINT or READ.

    edl,ed2 are edit descriptors separated by commas

    text messages are surrounded by single quotes

    c is carriage control for OUTPUT only and can be:

    lx moving the output to the next line

    O double spacing the output

    +move to beginning of line, overwriting anything

    already there

    l start a new page

    The single quotes around the carriage control codes must be there. A comma (, ) is usually used to

    separate edit descriptors and text messages but if a slash / is used, instead of a comma, subsequent

    output will be on a new line. You have to put a carriage control code after a slash to indicate what

    kind of spacing you want.

    The label on a FORMAT statement replaces the * in a PRINT or READ statement. Up to this point, anytext messages you wanted printed out were included in the PRINT * statement. With formatted

    output you must put the text message in the format statement. Only variable names may be

    included on a formatted PRINT or READ statement.

  • 7/28/2019 Programming in FORTRAN

    31/38

    Formatted Input

    Getting a formatted READ to work correctly is very tricky to do. Every blank specified in the FORMAT

    statement must be present and the values have to appear exactly as specified in the FORMAT

    statement. The only real advantage of doing a formatted READ iS that character variables do not

    need single quotes around them to be read in properly.

    There are no rules governing the location of FORMAT statements in programs except that they must

    be in the same local or sub program unit that refers to them. So any format statements used by the

    main program must appear in the main program and any format statements used by a subroutine or

    function must appear within that subroutine or function. Format statements can be placed directly

    after PRINT and READ statements but some programmers prefer to keep them together near the

    end of a program.

    File Handling

    So far the programs written have taken input data from the keyboard and the results have been

    displayed on the computer screen. Data is often input from a file, acted on by a FORTRAN program

    and output to a file. This is advantageous when the amount of data is large and may be manipulated

    several times or when the results need to be kept for further calculations.

    The statements for input and output must include details of how and where to input data from and

    output to. READ * may be expanded to include these controls, however WRITE iS used for output

    rather than PRINT. Example Program 5 exemplifies common ways of dealing with files: opening,

    closing, reading from and writing to.

    Input/output Statements

    READ (control list) variable list

    WRITE (control list) variable list

    Where the control list items can be a number of the following and are described later on:

    UNIT = unit identifier

    FMT = format identifier

    END = label ERR = label

    Example:

    READ (UNIT = 1, FMT = 10) A, B, C

    READ (1, 10) A, B, C

    WRITE (UNIT = 2, FMT = 20) X, Y, Z

    WRITE (2, 20) X, Y, Z

  • 7/28/2019 Programming in FORTRAN

    32/38

    Unit identifier

    Every control list must contain a unit identifier. It is this that identifies the location of the file or

    device to be accessed. If the unit identifier is first in the control list the UNIT = may be omitted. For

    example:

    WRITE (2, FMT=20) X, Y, Z

    You may choose any number for a unit identifier except for two reserved values that generally have

    predefined meanings. The number 5 represents keyboard input and 6 represents screen output. So

    READ(5,*) A,B,C is another way of writing READ*, A,B,C. Likewise, WRITE(6,*) A,B,C is another way of

    writing PRINT*, A,B,C.

    Format identifier

    This identifies how the data is organised either by reference to a FORMAT statement or an asterisk

    indicating list-directed format.

    Example:

    READ (UNIT=l, FMT = 10) A, B, C the FORMAT statement it is at label 10

    READ (UNIT=1, FMT = *) A, B, C Asterisk (*) means list-directed formatting. In other words, no

    formatting

    If the format identifier is second in the control list the FMT = may be omitted.

    Example:

    READ (1, 10) A, B, C The more usual concise form.

    End-of-file condition

    Only one end-of-file condition may appear in the control list. When the READ statement reaches the

    end of the data file without an error occurring, no more data is transferred and the control of the

    program jumps to the label specified in the READ statement. In the example below, a GO TO

    statement is used to continue reading from the file until the file is completely read. GO TO

    statements can be dangerous because they tend to create jumps in control which are hard to follow.

    It is wise to keep use of GO TO statements to a minimum.

    Example:

    80 READ(l,*,END=99)A,B,C

    c do something with A, B, and C

    GO TO 80

    99 PRINT *, ALL DATA READ'

  • 7/28/2019 Programming in FORTRAN

    33/38

    Error condition

    If some error occurs on input/output and there is an error specifier, the input/output is stopped and

    the program jumps to the label given in the error specifier.

    Example

    READ(l,*,ERR=100,END=200)A,B,C

    100 PRINT *, ERROR ON READING, STOPPING PROGRAM RUN'

    STOP

    c or else continue with the rest of the program

    200 CONTINUE

    END

    A common cause of error in file reading is running out of numbers in the file before the compiler has

    filled up the requested variables. For example, say that the file accessed by the READ statement

    above, looked like this:

    12, 13, 14

    15

    16

    17

    18 19 20 21

    22 23

    When the file is initially opened, a pointer is placed at the top of the file. As the file is read, the

    pointer moves through the file, keeping track of what line has been read and what line has not. The

    pointer will move for two reasons: l) after a line has been looked at or 2) if the compiler needs more

    values.

    So after the first read statement, the pointer gets positioned on the line with 15 in it because it was

    told to look for three values to fill A, B and c and it found all it needed on the first line. The pointer

    moved on because the line had been examined.

    The second time the READ statement is executed; the pointer is on the line with 18 in it. Again, the

    compiler was told to look for three values, but they were not on the same line so the pointer moved

    on to find enough values. When it found all the values it needed the pointer got positioned on the

    next fresh line, in this case the one beginning with 18.

    The third time the READ statement is executed; the pointer is left on the line beginning with 22. The

    compiler found the three values it needed on a single line, did not need the fourth value, 21, butmoved on anyway.

  • 7/28/2019 Programming in FORTRAN

    34/38

    During the fourth time the READ statement is executed, the program will have an error. The

    compiler was told to look for three values in the file. It only found two before it got to the end of the

    file. So 22 is put into A and 23 is put into B but c does not get a value and the control of the program

    jumps to line 10 o because that is where it was told to go if there were problems. , Implied DO loops

    describe a method of reading all the data.

    If later on in the program you want to move the pointer back to the top of the file, the REWIND

    statement can be used. Example REWIND (UNIT=1)

    Opening and Closing Files

    The OPEN statement

    The OPEN statement connects the file and defines the specifications

    according to the file specifications list.

    OPEN(UNIT = number, filespec list)

    where the file specifications list can be some of the following:

    ERR = label

    FILE = character, therefore enclosed in quotes

    STATUS = character, therefore enclosed in quotes

    There are more file specifications which can be looked up in one of the

    recommended texts.

    ERR - If an error condition occurs while the file is being opened, the program jumps to the label.

    FILE - This specifies the name of the file to be opened. The filename is considered a character entity

    so it must be enclosed in quotes.

    STATUS - This is also a character entity which must be enclosed in quotes

    OLD the file to be opened already exists.

    NEW the named file must not already exist. A file is created and opened.

    UNKNOWN The file may or may not exist.

    The CLOSE statement:

    The CLOSE statement disconnects a file:

    CLOSE([UNIT=] number)

  • 7/28/2019 Programming in FORTRAN

    35/38

    Glossary of FORTRAN 77 Statements

    STATEMENT Description Example of Usage

    Arithmetic IFTransfers control, depending on whether value of an

    arithmetic expression is negative, zero, or positiveIF (X-Y) 30, 40 , 50

    ASSIGN Assigns a statement number to a variable ASSIGN 50 TO N

    Assigned GO TOTransfers control to a statement specified by a variable; in

    conjunction with ASSIGN statementGO TO N

    Assignment Assigns a value to a variable

    PI = 3.1416

    NUMBER = 0

    MAJOR = ' CPSC '

    Z FLAG =. TRUE.

    BACKSPACE Backspace a file BACKSPACE 12

    BLOCK DATA

    Heading of a block data subprogram used to initialize variables

    in named common blocks

    INTEGER MONTH, YEAR

    COMMON / INFO / MONTH, YEAR

    DATA MONTH, YEAR /12, 1995/

    END

    BLOCK IF

    Executes or bypasses a block of statements, depending on

    truth or falsity of a logical expression; must be paired with

    END IF and may have ELSE or ELSE IF blocks

    IF (X.GT. O) THEN

    RESULT = SQRT(X)

    ELSE

    IF (X .EQ. 0) THEN

    PRINT *, 'NUMBER IS 0'

    ELSE

    PRINT *, 'NEGATIVE NUMBER'END IF

    CALL Calls a subroutine CALL CONVER (A, T, X, Y)

    CHARACTER Specifies character typeCHARACTER*10 NAME, INIT*1,

    LIST(20)

    CLOSE Closes a file CLOSE (12)

  • 7/28/2019 Programming in FORTRAN

    36/38

    COMMON Establishes blank or named common areas

    COMMON ALPHA, BETA, MAT

    (5,5)

    COMMON / INFO / MONTH, YEAR

    COMPLEX Specifies complex type COMPLEX Z, W, MAT (5,5)

    Computed GO TOTransfers control to one of several statements, depending on

    the value of an integer expressionGO TO (10, 20, 30, 40) CLASS

    CONTINUE Used to close a DO-loop 5 CONTINUE

    DATA Initializes variables at compile time DATA PI, (X(I),I=1,5) /3.14,5*0/

    DIMENSION Declares dimensions of arrays DIMENSION MAT(5,5), LIST(20)

    DO First statement of a DO-loop DO 5 I=1, N

    DOUBLE PRECISION Specifies double precision typeDOUBLE PRECISION A, B,

    ROOTS(20)

    ELSE Defines ELSE-block in a block IF statement See block IF statement

    ELSE IFDefines ELSE-IF block within a block IF used for multi

    alternative selectionSee block IF statement

    END Last statement of each program unit END

    END IF Last statement of a block IF See block IF statement

    ENDFILE Places end-of-file record in a file ENDFILE 12

    END WHILE, END DO Terminates a WHILE loop; not in standard FORTRAN 77 See WHILE statement

    ENTRY Specifies entry point in a subprogram ENTRY POLY (X)

    EQUIVALENCEEstablishes sharing of memory locations by different variables

    in same program unit

    EQUIVALENCE(X,Y),

    (ALPHA,A,T(3))

    EXTERNALSpecifies externally defined subprograms that may be used as

    argumentsEXTERNAL F, QUAD

  • 7/28/2019 Programming in FORTRAN

    37/38

    FORMAT Defines a list of descriptors20 FORMAT (1X, 'ROOTS ARE',

    2F8.3)

    FUNCTION Heading for a function subprogram FUNCTION AVE(X, N)

    GO TO Unconditionally transfers control to a specified statement GO TO 100

    IMPLICIT Used to establish a naming conventionIMPLICIT REAL (L,N-Z), INTEGER

    (A-K)

    INQUIREDetermines properties of a file or of its connection to a unit

    number

    INQUIRE (EXIST = FLAG, NAME

    =FNAME)

    INTEGER Specifies integer type INTEGER X, CLASS, TABLE(10,20)

    INTRINSIC Specifies intrinsic functions that may be used as arguments INTRINSIC SIN, DSQRT

    LOGICAL Specifies logical type LOGICAL P, Q, TABLE(4,6)

    Logical IFExecutes or bypasses a statement depending on the truth or

    falsity of a logical expressionIF (DISC .GT. 0) DISC = SQRT(DISC)

    OPEN Opens a fileOPEN(UNIT = 12, FILE = FNAME,

    STATUS = 'OLD')

    PARAMETER Defines parametersPARAMETER (LIM = 100, RATE

    =1.5

    PAUSE Interrupts program execution, program may be restartedPAUSE

    PAUSE 'PROGRAM PAUSE'

    PRINT Output statement

    PRINT *, 'X = ', X

    PRINT *

    PRINT '(1X, 317)', M, N, M + N-e

    PROGRAM Program heading PROGRAM WAGES

    READ Input statement

    READ *, ALPHA, BETA

    READ '(15, F7.2)', NUM, Z

    READ (12, *, END = 20) HOURS,

    RATE

  • 7/28/2019 Programming in FORTRAN

    38/38

    REAL Specifies real type REAL NUM, GAMMA, MAT(10,10)

    RETURN Returns control from subprogram to calling program unitRETURN

    RETURN 2

    REWIND Positions file at initial point REWIND 12

    SAVESaves values of local variables in a subprogram for later

    references

    SAVE X, Y, NUM

    SAVE

    Statement function Function defined within a program unit by a single statement F(X,Y) = X**2 + Y**2

    STOP Terminates executionSTOP

    STOP 'PROGRAM HALTS'

    SUBROUTINE Heading for subroutine subprogramSUBROUTINE CONVER (U, V, RHO,

    PHI)

    WRITE Output statementWRITE (*,*) A, B, C

    WRITE (12,'(1X, 316)') N1, N2, N3