Input and output. Input streams n there are two ways of handling I/o n list-directed –done using...
-
date post
20-Dec-2015 -
Category
Documents
-
view
213 -
download
0
Transcript of Input and output. Input streams n there are two ways of handling I/o n list-directed –done using...
Input streams
there are two ways of handling I/o list-directed
– done using default settings– PRINT*, num– READ*, num
formatted– controlled by the programmer– you can specify every detail of what is printed
PRINT statements
List directed– PRINT*, num
Formatted– PRINT ‘(1x, i5, f8.2)’, number, temperature
With format labels– PRINT 10, number, temperature– 10 FORMAT (1x, i5, f8.2)
Format descriptors
(1x, i5, f8.2)– 1 space, followed by a 5-digit integer,
followed by a real number taking up 8 spaces total with two after the decimal point.
A format descriptor designated the exact number of characters that will be printed and where they will be printed.
The integer format descriptor
i used for integers, can be repeated (5i) and can have width specified (i5)– INTEGER :: num– num = 123– PRINT ‘(i3)’, num -------------> 123– PRINT ‘(3i)’, num -------------> 123123123– PRINT *, num -------------> 123– PRINT ‘(i2)’, num -------------> **
The real number descriptor
F for ‘floating point’ (real) numbers. – Followed by an integer total field width, ‘.’,
then an integer number of decimal digits.– REAL :: num– num = 123.45– PRINT ‘(f8.2)’, num ---------------> 123.45– PRINT ‘(f6.2)’ , num --------------->123.45– PRINT*, num ---------------> 123.4500– PRINT ‘(f3.2)’, num ---------------> ***
The character data descriptor
a used for ‘alpha-numeric data’– CHARACTER(10) :: name– name = “Washington”– PRINT ‘(a10)’, name ---------------> Washington– PRINT ‘(a15)’, name ---------------> Washington_____– PRINT*, name ---------------> Washington– PRINT ‘(a5)’ ---------------> Washi
The spacing descriptors
X - stands for ‘print a blank space’ T - stands for ‘print a tab’
– INTEGER :: num1, num2– num1 = 123– num2 = 456– PRINT ‘(1x,i5,5x,i3)’, num1, num2 – ___123_____456– PRINT ‘(t5, i3), num1 ---------------> _____123
Difference between x and t
5x gives five spaces t5 tabs out to column 5 (gives only 4
spaces!) When used in tables together they are
easy to confuse.
Repetition and width
nX if first, specifies line spacing
nX n blanks or spaces printed
A number of characters matches list item
Aw w characters are printed
Iw integer is right-justified in w columns
Fw.d real no. is in w columns, d is decimal places
Carriage controls
FIRST EDIT DESCRIPTOR– ‘ ‘ OR 1X PRINTS A SPACE– ‘0’ DOUBLE LINE SPACING– ‘1’ PRINTS ON TOP OF PAGE– ‘+’ PRINTS WITHOUT SPACING
(OVERPRINTS)
SOME COMPILERS DON’T RECOGNIZE ALL OF THE ABOVE
Repeating Edit Descriptors
Place a number in front of descriptor
nI4 repeats I4 n times
3F5.2 repeats F5.2 3 times
4(5X,I2) repeats 5X & I2 4 times
More descriptors
Tw tabs over to column w
/ starts rest of statement on a new line
n(/) starts rest of statement in n lines
Ew.d reads numbers in scientific
notation
Literals
Individual characters may also be inserted in formats.– PRINT ‘(“$”, f6.2)’, price ----------> $123.45– PRINT ‘(10(“-”))’ ---------------> ==========
Printing tables First print the heading Then a loop fills in the body of the table
– PRINT ‘(t10, “Number”, t20, “Square”)’– DO n=1, 5– PRINT ‘(9x, i6, t20, i6)’, n, n**2– ENDDO
– ---------Number----Square– --------- 1---- 1– --------- 2---- 4– --------- 3---- 9– --------- 4---- 16– --------- 5---- 25
READ statements
List directed– READ*, num
Formatted– READ ‘(1x, i5, f8.2)’, number, temperature
With format labels– READ 10, number, temperature– 10 FORMAT (1x, i5, f8.2)
Reading real numbers
Data may come in in one of two ways– Numbers without decimal points
• the decimal digits are always filled
– Numbers with decimal points – REAL :: num– READ ‘(f6.2)’, num
– The data entered may be either with decimal point (123.45) or not ( 12345)
The WRITE statement
is used to write to files Underlies the PRINT statement PRINT*, is really WRITE (*,*) or WRITE (6,*) By default, write will send output to the default
output device.– This device is the monitor– It is identified by a number (UNIT = 6)– Often called ‘standard output’
WRITE default examples
WRITE (*, *) num1, num2 WRITE (*, ‘(i4,1x,i6)’) num1, num2 WRITE (*, 20) num1, num2 20 FORMAT (1x. I4, t12, i5) WRITE (UNIT = 6, FMT = 30) num1, num2
READ default settings
is used to read from files By default, read will read from the default
input device– This device is the keyboard– It is identified by the number (UNIT = 5)– Often called ‘standard input’
Default devices
UNIT 6 is standard output UNIT 5 is standard input It is an error to try to read from standard
output or write to standard input.
File processing
Data commonly comes to us in files. We will learn how to handle
– text files (ASCII characters)– rectangular, “flat files”– sequential access
Later the book will discuss– binary files– direct (random) access
Opening a file
To open a file use the OPEN statement.– First specify the UNIT number of the file– Then the name of the FILE– Other specifiers are
• STATUS (NEW, OLD, REPLACE)• ACTION (READ, WRITE, READWRITE)• POSITION (REWIND, APPEND, ASIS)• IOSTAT (0 = ok, >0 = error)
Examples
OPEN (UNIT=12, FILE=“mydata.dat”, STATUS = “OLD”, ACTION=“READ”, POSITION=“REWIND”, IOSTAT=OpenStatus)
OPEN(12,FILE=“mydat”) Both forms yield the same results due to
default settings
Using IOSTAT
IOSTAT means Input/Output Status If the value is placed in a variable it may be
used later in the program. OPEN (12,FILE=“mydata.dat”,
IOSTAT=OpenStatus) IF (OpenStatus > 0) STOP “**** Cannot open
file ****”
CLOSE
Any file that is OPENed should also be closed after your program is done using it.
CLOSE (12) Only the UNIT number needs to be specified.
READ, IOSTAT and END=
IOSTAT is used with READ to help a program stop reading from a file when it encounters the end of that file (eof).
READ (12, *, IOSTAT = InputStatus) num1, num2 IF (InputStatus < 0) EXIT Another method is READ (12,*, END=20) num1,
num2 20 PRINT*, “The end of the file has been
encountered”